mirror of https://github.com/milvus-io/milvus.git
Support Role-Based Access Control II (#18528)
Signed-off-by: SimFG <bang.fu@zilliz.com>pull/18562/head
parent
b427450593
commit
c267ad612d
|
@ -308,6 +308,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_common_2eproto::offsets[] PROT
|
||||||
PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, object_type_),
|
PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, object_type_),
|
||||||
PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, object_privilege_),
|
PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, object_privilege_),
|
||||||
PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, object_name_index_),
|
PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, object_name_index_),
|
||||||
|
PROTOBUF_FIELD_OFFSET(::milvus::proto::common::PrivilegeExt, object_name_indexs_),
|
||||||
};
|
};
|
||||||
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
|
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
|
||||||
{ 0, -1, sizeof(::milvus::proto::common::Status)},
|
{ 0, -1, sizeof(::milvus::proto::common::Status)},
|
||||||
|
@ -356,107 +357,118 @@ const char descriptor_table_protodef_common_2eproto[] PROTOBUF_SECTION_VARIABLE(
|
||||||
"*\n\004base\030\001 \001(\0132\034.milvus.proto.common.MsgB"
|
"*\n\004base\030\001 \001(\0132\034.milvus.proto.common.MsgB"
|
||||||
"ase\"M\n\014DMLMsgHeader\022*\n\004base\030\001 \001(\0132\034.milv"
|
"ase\"M\n\014DMLMsgHeader\022*\n\004base\030\001 \001(\0132\034.milv"
|
||||||
"us.proto.common.MsgBase\022\021\n\tshardName\030\002 \001"
|
"us.proto.common.MsgBase\022\021\n\tshardName\030\002 \001"
|
||||||
"(\t\"\237\001\n\014PrivilegeExt\0224\n\013object_type\030\001 \001(\016"
|
"(\t\"\273\001\n\014PrivilegeExt\0224\n\013object_type\030\001 \001(\016"
|
||||||
"2\037.milvus.proto.common.ObjectType\022>\n\020obj"
|
"2\037.milvus.proto.common.ObjectType\022>\n\020obj"
|
||||||
"ect_privilege\030\002 \001(\0162$.milvus.proto.commo"
|
"ect_privilege\030\002 \001(\0162$.milvus.proto.commo"
|
||||||
"n.ObjectPrivilege\022\031\n\021object_name_index\030\003"
|
"n.ObjectPrivilege\022\031\n\021object_name_index\030\003"
|
||||||
" \001(\005*\323\010\n\tErrorCode\022\013\n\007Success\020\000\022\023\n\017Unexp"
|
" \001(\005\022\032\n\022object_name_indexs\030\004 \001(\005*\323\010\n\tErr"
|
||||||
"ectedError\020\001\022\021\n\rConnectFailed\020\002\022\024\n\020Permi"
|
"orCode\022\013\n\007Success\020\000\022\023\n\017UnexpectedError\020\001"
|
||||||
"ssionDenied\020\003\022\027\n\023CollectionNotExists\020\004\022\023"
|
"\022\021\n\rConnectFailed\020\002\022\024\n\020PermissionDenied\020"
|
||||||
"\n\017IllegalArgument\020\005\022\024\n\020IllegalDimension\020"
|
"\003\022\027\n\023CollectionNotExists\020\004\022\023\n\017IllegalArg"
|
||||||
"\007\022\024\n\020IllegalIndexType\020\010\022\031\n\025IllegalCollec"
|
"ument\020\005\022\024\n\020IllegalDimension\020\007\022\024\n\020Illegal"
|
||||||
"tionName\020\t\022\017\n\013IllegalTOPK\020\n\022\024\n\020IllegalRo"
|
"IndexType\020\010\022\031\n\025IllegalCollectionName\020\t\022\017"
|
||||||
"wRecord\020\013\022\023\n\017IllegalVectorID\020\014\022\027\n\023Illega"
|
"\n\013IllegalTOPK\020\n\022\024\n\020IllegalRowRecord\020\013\022\023\n"
|
||||||
"lSearchResult\020\r\022\020\n\014FileNotFound\020\016\022\016\n\nMet"
|
"\017IllegalVectorID\020\014\022\027\n\023IllegalSearchResul"
|
||||||
"aFailed\020\017\022\017\n\013CacheFailed\020\020\022\026\n\022CannotCrea"
|
"t\020\r\022\020\n\014FileNotFound\020\016\022\016\n\nMetaFailed\020\017\022\017\n"
|
||||||
"teFolder\020\021\022\024\n\020CannotCreateFile\020\022\022\026\n\022Cann"
|
"\013CacheFailed\020\020\022\026\n\022CannotCreateFolder\020\021\022\024"
|
||||||
"otDeleteFolder\020\023\022\024\n\020CannotDeleteFile\020\024\022\023"
|
"\n\020CannotCreateFile\020\022\022\026\n\022CannotDeleteFold"
|
||||||
"\n\017BuildIndexError\020\025\022\020\n\014IllegalNLIST\020\026\022\025\n"
|
"er\020\023\022\024\n\020CannotDeleteFile\020\024\022\023\n\017BuildIndex"
|
||||||
"\021IllegalMetricType\020\027\022\017\n\013OutOfMemory\020\030\022\021\n"
|
"Error\020\025\022\020\n\014IllegalNLIST\020\026\022\025\n\021IllegalMetr"
|
||||||
"\rIndexNotExist\020\031\022\023\n\017EmptyCollection\020\032\022\033\n"
|
"icType\020\027\022\017\n\013OutOfMemory\020\030\022\021\n\rIndexNotExi"
|
||||||
"\027UpdateImportTaskFailure\020\033\022\032\n\026Collection"
|
"st\020\031\022\023\n\017EmptyCollection\020\032\022\033\n\027UpdateImpor"
|
||||||
"NameNotFound\020\034\022\033\n\027CreateCredentialFailur"
|
"tTaskFailure\020\033\022\032\n\026CollectionNameNotFound"
|
||||||
"e\020\035\022\033\n\027UpdateCredentialFailure\020\036\022\033\n\027Dele"
|
"\020\034\022\033\n\027CreateCredentialFailure\020\035\022\033\n\027Updat"
|
||||||
"teCredentialFailure\020\037\022\030\n\024GetCredentialFa"
|
"eCredentialFailure\020\036\022\033\n\027DeleteCredential"
|
||||||
"ilure\020 \022\030\n\024ListCredUsersFailure\020!\022\022\n\016Get"
|
"Failure\020\037\022\030\n\024GetCredentialFailure\020 \022\030\n\024L"
|
||||||
"UserFailure\020\"\022\025\n\021CreateRoleFailure\020#\022\023\n\017"
|
"istCredUsersFailure\020!\022\022\n\016GetUserFailure\020"
|
||||||
"DropRoleFailure\020$\022\032\n\026OperateUserRoleFail"
|
"\"\022\025\n\021CreateRoleFailure\020#\022\023\n\017DropRoleFail"
|
||||||
"ure\020%\022\025\n\021SelectRoleFailure\020&\022\025\n\021SelectUs"
|
"ure\020$\022\032\n\026OperateUserRoleFailure\020%\022\025\n\021Sel"
|
||||||
"erFailure\020\'\022\031\n\025SelectResourceFailure\020(\022\033"
|
"ectRoleFailure\020&\022\025\n\021SelectUserFailure\020\'\022"
|
||||||
"\n\027OperatePrivilegeFailure\020)\022\026\n\022SelectGra"
|
"\031\n\025SelectResourceFailure\020(\022\033\n\027OperatePri"
|
||||||
"ntFailure\020*\022!\n\035RefreshPolicyInfoCacheFai"
|
"vilegeFailure\020)\022\026\n\022SelectGrantFailure\020*\022"
|
||||||
"lure\020+\022\025\n\021ListPolicyFailure\020,\022\022\n\016NotShar"
|
"!\n\035RefreshPolicyInfoCacheFailure\020+\022\025\n\021Li"
|
||||||
"dLeader\020-\022\026\n\022NoReplicaAvailable\020.\022\023\n\017Seg"
|
"stPolicyFailure\020,\022\022\n\016NotShardLeader\020-\022\026\n"
|
||||||
"mentNotFound\020/\022\022\n\rDDRequestRace\020\350\007*X\n\nIn"
|
"\022NoReplicaAvailable\020.\022\023\n\017SegmentNotFound"
|
||||||
"dexState\022\022\n\016IndexStateNone\020\000\022\014\n\010Unissued"
|
"\020/\022\022\n\rDDRequestRace\020\350\007*X\n\nIndexState\022\022\n\016"
|
||||||
"\020\001\022\016\n\nInProgress\020\002\022\014\n\010Finished\020\003\022\n\n\006Fail"
|
"IndexStateNone\020\000\022\014\n\010Unissued\020\001\022\016\n\nInProg"
|
||||||
"ed\020\004*\202\001\n\014SegmentState\022\024\n\020SegmentStateNon"
|
"ress\020\002\022\014\n\010Finished\020\003\022\n\n\006Failed\020\004*\202\001\n\014Seg"
|
||||||
"e\020\000\022\014\n\010NotExist\020\001\022\013\n\007Growing\020\002\022\n\n\006Sealed"
|
"mentState\022\024\n\020SegmentStateNone\020\000\022\014\n\010NotEx"
|
||||||
"\020\003\022\013\n\007Flushed\020\004\022\014\n\010Flushing\020\005\022\013\n\007Dropped"
|
"ist\020\001\022\013\n\007Growing\020\002\022\n\n\006Sealed\020\003\022\013\n\007Flushe"
|
||||||
"\020\006\022\r\n\tImporting\020\007*>\n\017PlaceholderType\022\010\n\004"
|
"d\020\004\022\014\n\010Flushing\020\005\022\013\n\007Dropped\020\006\022\r\n\tImport"
|
||||||
"None\020\000\022\020\n\014BinaryVector\020d\022\017\n\013FloatVector\020"
|
"ing\020\007*>\n\017PlaceholderType\022\010\n\004None\020\000\022\020\n\014Bi"
|
||||||
"e*\266\014\n\007MsgType\022\r\n\tUndefined\020\000\022\024\n\020CreateCo"
|
"naryVector\020d\022\017\n\013FloatVector\020e*\266\014\n\007MsgTyp"
|
||||||
"llection\020d\022\022\n\016DropCollection\020e\022\021\n\rHasCol"
|
"e\022\r\n\tUndefined\020\000\022\024\n\020CreateCollection\020d\022\022"
|
||||||
"lection\020f\022\026\n\022DescribeCollection\020g\022\023\n\017Sho"
|
"\n\016DropCollection\020e\022\021\n\rHasCollection\020f\022\026\n"
|
||||||
"wCollections\020h\022\024\n\020GetSystemConfigs\020i\022\022\n\016"
|
"\022DescribeCollection\020g\022\023\n\017ShowCollections"
|
||||||
"LoadCollection\020j\022\025\n\021ReleaseCollection\020k\022"
|
"\020h\022\024\n\020GetSystemConfigs\020i\022\022\n\016LoadCollecti"
|
||||||
"\017\n\013CreateAlias\020l\022\r\n\tDropAlias\020m\022\016\n\nAlter"
|
"on\020j\022\025\n\021ReleaseCollection\020k\022\017\n\013CreateAli"
|
||||||
"Alias\020n\022\024\n\017CreatePartition\020\310\001\022\022\n\rDropPar"
|
"as\020l\022\r\n\tDropAlias\020m\022\016\n\nAlterAlias\020n\022\024\n\017C"
|
||||||
"tition\020\311\001\022\021\n\014HasPartition\020\312\001\022\026\n\021Describe"
|
"reatePartition\020\310\001\022\022\n\rDropPartition\020\311\001\022\021\n"
|
||||||
"Partition\020\313\001\022\023\n\016ShowPartitions\020\314\001\022\023\n\016Loa"
|
"\014HasPartition\020\312\001\022\026\n\021DescribePartition\020\313\001"
|
||||||
"dPartitions\020\315\001\022\026\n\021ReleasePartitions\020\316\001\022\021"
|
"\022\023\n\016ShowPartitions\020\314\001\022\023\n\016LoadPartitions\020"
|
||||||
"\n\014ShowSegments\020\372\001\022\024\n\017DescribeSegment\020\373\001\022"
|
"\315\001\022\026\n\021ReleasePartitions\020\316\001\022\021\n\014ShowSegmen"
|
||||||
"\021\n\014LoadSegments\020\374\001\022\024\n\017ReleaseSegments\020\375\001"
|
"ts\020\372\001\022\024\n\017DescribeSegment\020\373\001\022\021\n\014LoadSegme"
|
||||||
"\022\024\n\017HandoffSegments\020\376\001\022\030\n\023LoadBalanceSeg"
|
"nts\020\374\001\022\024\n\017ReleaseSegments\020\375\001\022\024\n\017HandoffS"
|
||||||
"ments\020\377\001\022\025\n\020DescribeSegments\020\200\002\022\020\n\013Creat"
|
"egments\020\376\001\022\030\n\023LoadBalanceSegments\020\377\001\022\025\n\020"
|
||||||
"eIndex\020\254\002\022\022\n\rDescribeIndex\020\255\002\022\016\n\tDropInd"
|
"DescribeSegments\020\200\002\022\020\n\013CreateIndex\020\254\002\022\022\n"
|
||||||
"ex\020\256\002\022\013\n\006Insert\020\220\003\022\013\n\006Delete\020\221\003\022\n\n\005Flush"
|
"\rDescribeIndex\020\255\002\022\016\n\tDropIndex\020\256\002\022\013\n\006Ins"
|
||||||
"\020\222\003\022\027\n\022ResendSegmentStats\020\223\003\022\013\n\006Search\020\364"
|
"ert\020\220\003\022\013\n\006Delete\020\221\003\022\n\n\005Flush\020\222\003\022\027\n\022Resen"
|
||||||
"\003\022\021\n\014SearchResult\020\365\003\022\022\n\rGetIndexState\020\366\003"
|
"dSegmentStats\020\223\003\022\013\n\006Search\020\364\003\022\021\n\014SearchR"
|
||||||
"\022\032\n\025GetIndexBuildProgress\020\367\003\022\034\n\027GetColle"
|
"esult\020\365\003\022\022\n\rGetIndexState\020\366\003\022\032\n\025GetIndex"
|
||||||
"ctionStatistics\020\370\003\022\033\n\026GetPartitionStatis"
|
"BuildProgress\020\367\003\022\034\n\027GetCollectionStatist"
|
||||||
"tics\020\371\003\022\r\n\010Retrieve\020\372\003\022\023\n\016RetrieveResult"
|
"ics\020\370\003\022\033\n\026GetPartitionStatistics\020\371\003\022\r\n\010R"
|
||||||
"\020\373\003\022\024\n\017WatchDmChannels\020\374\003\022\025\n\020RemoveDmCha"
|
"etrieve\020\372\003\022\023\n\016RetrieveResult\020\373\003\022\024\n\017Watch"
|
||||||
"nnels\020\375\003\022\027\n\022WatchQueryChannels\020\376\003\022\030\n\023Rem"
|
"DmChannels\020\374\003\022\025\n\020RemoveDmChannels\020\375\003\022\027\n\022"
|
||||||
"oveQueryChannels\020\377\003\022\035\n\030SealedSegmentsCha"
|
"WatchQueryChannels\020\376\003\022\030\n\023RemoveQueryChan"
|
||||||
"ngeInfo\020\200\004\022\027\n\022WatchDeltaChannels\020\201\004\022\024\n\017G"
|
"nels\020\377\003\022\035\n\030SealedSegmentsChangeInfo\020\200\004\022\027"
|
||||||
"etShardLeaders\020\202\004\022\020\n\013GetReplicas\020\203\004\022\020\n\013S"
|
"\n\022WatchDeltaChannels\020\201\004\022\024\n\017GetShardLeade"
|
||||||
"egmentInfo\020\330\004\022\017\n\nSystemInfo\020\331\004\022\024\n\017GetRec"
|
"rs\020\202\004\022\020\n\013GetReplicas\020\203\004\022\020\n\013SegmentInfo\020\330"
|
||||||
"overyInfo\020\332\004\022\024\n\017GetSegmentState\020\333\004\022\r\n\010Ti"
|
"\004\022\017\n\nSystemInfo\020\331\004\022\024\n\017GetRecoveryInfo\020\332\004"
|
||||||
"meTick\020\260\t\022\023\n\016QueryNodeStats\020\261\t\022\016\n\tLoadIn"
|
"\022\024\n\017GetSegmentState\020\333\004\022\r\n\010TimeTick\020\260\t\022\023\n"
|
||||||
"dex\020\262\t\022\016\n\tRequestID\020\263\t\022\017\n\nRequestTSO\020\264\t\022"
|
"\016QueryNodeStats\020\261\t\022\016\n\tLoadIndex\020\262\t\022\016\n\tRe"
|
||||||
"\024\n\017AllocateSegment\020\265\t\022\026\n\021SegmentStatisti"
|
"questID\020\263\t\022\017\n\nRequestTSO\020\264\t\022\024\n\017AllocateS"
|
||||||
"cs\020\266\t\022\025\n\020SegmentFlushDone\020\267\t\022\017\n\nDataNode"
|
"egment\020\265\t\022\026\n\021SegmentStatistics\020\266\t\022\025\n\020Seg"
|
||||||
"Tt\020\270\t\022\025\n\020CreateCredential\020\334\013\022\022\n\rGetCrede"
|
"mentFlushDone\020\267\t\022\017\n\nDataNodeTt\020\270\t\022\025\n\020Cre"
|
||||||
"ntial\020\335\013\022\025\n\020DeleteCredential\020\336\013\022\025\n\020Updat"
|
"ateCredential\020\334\013\022\022\n\rGetCredential\020\335\013\022\025\n\020"
|
||||||
"eCredential\020\337\013\022\026\n\021ListCredUsernames\020\340\013\022\017"
|
"DeleteCredential\020\336\013\022\025\n\020UpdateCredential\020"
|
||||||
"\n\nCreateRole\020\300\014\022\r\n\010DropRole\020\301\014\022\024\n\017Operat"
|
"\337\013\022\026\n\021ListCredUsernames\020\340\013\022\017\n\nCreateRole"
|
||||||
"eUserRole\020\302\014\022\017\n\nSelectRole\020\303\014\022\017\n\nSelectU"
|
"\020\300\014\022\r\n\010DropRole\020\301\014\022\024\n\017OperateUserRole\020\302\014"
|
||||||
"ser\020\304\014\022\023\n\016SelectResource\020\305\014\022\025\n\020OperatePr"
|
"\022\017\n\nSelectRole\020\303\014\022\017\n\nSelectUser\020\304\014\022\023\n\016Se"
|
||||||
"ivilege\020\306\014\022\020\n\013SelectGrant\020\307\014\022\033\n\026RefreshP"
|
"lectResource\020\305\014\022\025\n\020OperatePrivilege\020\306\014\022\020"
|
||||||
"olicyInfoCache\020\310\014\022\017\n\nListPolicy\020\311\014*\"\n\007Ds"
|
"\n\013SelectGrant\020\307\014\022\033\n\026RefreshPolicyInfoCac"
|
||||||
"lType\022\007\n\003Dsl\020\000\022\016\n\nBoolExprV1\020\001*B\n\017Compac"
|
"he\020\310\014\022\017\n\nListPolicy\020\311\014*\"\n\007DslType\022\007\n\003Dsl"
|
||||||
"tionState\022\021\n\rUndefiedState\020\000\022\r\n\tExecutin"
|
"\020\000\022\016\n\nBoolExprV1\020\001*B\n\017CompactionState\022\021\n"
|
||||||
"g\020\001\022\r\n\tCompleted\020\002*X\n\020ConsistencyLevel\022\n"
|
"\rUndefiedState\020\000\022\r\n\tExecuting\020\001\022\r\n\tCompl"
|
||||||
"\n\006Strong\020\000\022\013\n\007Session\020\001\022\013\n\007Bounded\020\002\022\016\n\n"
|
"eted\020\002*X\n\020ConsistencyLevel\022\n\n\006Strong\020\000\022\013"
|
||||||
"Eventually\020\003\022\016\n\nCustomized\020\004*\257\001\n\013ImportS"
|
"\n\007Session\020\001\022\013\n\007Bounded\020\002\022\016\n\nEventually\020\003"
|
||||||
"tate\022\021\n\rImportPending\020\000\022\020\n\014ImportFailed\020"
|
"\022\016\n\nCustomized\020\004*\257\001\n\013ImportState\022\021\n\rImpo"
|
||||||
"\001\022\021\n\rImportStarted\020\002\022\024\n\020ImportDownloaded"
|
"rtPending\020\000\022\020\n\014ImportFailed\020\001\022\021\n\rImportS"
|
||||||
"\020\003\022\020\n\014ImportParsed\020\004\022\023\n\017ImportPersisted\020"
|
"tarted\020\002\022\024\n\020ImportDownloaded\020\003\022\020\n\014Import"
|
||||||
"\005\022\023\n\017ImportCompleted\020\006\022\026\n\022ImportAllocSeg"
|
"Parsed\020\004\022\023\n\017ImportPersisted\020\005\022\023\n\017ImportC"
|
||||||
"ment\020\n*(\n\nObjectType\022\016\n\nCollection\020\000\022\n\n\006"
|
"ompleted\020\006\022\026\n\022ImportAllocSegment\020\n*2\n\nOb"
|
||||||
"Global\020\001*\212\002\n\017ObjectPrivilege\022\020\n\014Privileg"
|
"jectType\022\016\n\nCollection\020\000\022\n\n\006Global\020\001\022\010\n\004"
|
||||||
"eAll\020\000\022\035\n\031PrivilegeCreateCollection\020\001\022\033\n"
|
"User\020\002*\206\005\n\017ObjectPrivilege\022\020\n\014PrivilegeA"
|
||||||
"\027PrivilegeDropCollection\020\002\022\037\n\033PrivilegeD"
|
"ll\020\000\022\035\n\031PrivilegeCreateCollection\020\001\022\033\n\027P"
|
||||||
"escribeCollection\020\003\022\034\n\030PrivilegeShowColl"
|
"rivilegeDropCollection\020\002\022\037\n\033PrivilegeDes"
|
||||||
"ections\020\004\022\021\n\rPrivilegeLoad\020\005\022\024\n\020Privileg"
|
"cribeCollection\020\003\022\034\n\030PrivilegeShowCollec"
|
||||||
"eRelease\020\006\022\027\n\023PrivilegeCompaction\020\007\022\023\n\017P"
|
"tions\020\004\022\021\n\rPrivilegeLoad\020\005\022\024\n\020PrivilegeR"
|
||||||
"rivilegeInsert\020\010\022\023\n\017PrivilegeDelete\020\t:^\n"
|
"elease\020\006\022\027\n\023PrivilegeCompaction\020\007\022\023\n\017Pri"
|
||||||
"\021privilege_ext_obj\022\037.google.protobuf.Mes"
|
"vilegeInsert\020\010\022\023\n\017PrivilegeDelete\020\t\022\032\n\026P"
|
||||||
"sageOptions\030\351\007 \001(\0132!.milvus.proto.common"
|
"rivilegeGetStatistics\020\n\022\030\n\024PrivilegeCrea"
|
||||||
".PrivilegeExtBW\n\016io.milvus.grpcB\013CommonP"
|
"teIndex\020\013\022\030\n\024PrivilegeIndexDetail\020\014\022\026\n\022P"
|
||||||
"rotoP\001Z3github.com/milvus-io/milvus/inte"
|
"rivilegeDropIndex\020\r\022\023\n\017PrivilegeSearch\020\016"
|
||||||
"rnal/proto/commonpb\240\001\001b\006proto3"
|
"\022\022\n\016PrivilegeFlush\020\017\022\022\n\016PrivilegeQuery\020\020"
|
||||||
|
"\022\030\n\024PrivilegeLoadBalance\020\021\022\023\n\017PrivilegeI"
|
||||||
|
"mport\020\022\022\034\n\030PrivilegeCreateOwnership\020\023\022\027\n"
|
||||||
|
"\023PrivilegeUpdateUser\020\024\022\032\n\026PrivilegeDropO"
|
||||||
|
"wnership\020\025\022\034\n\030PrivilegeSelectOwnership\020\026"
|
||||||
|
"\022\034\n\030PrivilegeManageOwnership\020\027\022\027\n\023Privil"
|
||||||
|
"egeSelectUser\020\030:^\n\021privilege_ext_obj\022\037.g"
|
||||||
|
"oogle.protobuf.MessageOptions\030\351\007 \001(\0132!.m"
|
||||||
|
"ilvus.proto.common.PrivilegeExtBW\n\016io.mi"
|
||||||
|
"lvus.grpcB\013CommonProtoP\001Z3github.com/mil"
|
||||||
|
"vus-io/milvus/internal/proto/commonpb\240\001\001"
|
||||||
|
"b\006proto3"
|
||||||
;
|
;
|
||||||
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_common_2eproto_deps[1] = {
|
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_common_2eproto_deps[1] = {
|
||||||
&::descriptor_table_google_2fprotobuf_2fdescriptor_2eproto,
|
&::descriptor_table_google_2fprotobuf_2fdescriptor_2eproto,
|
||||||
|
@ -477,7 +489,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_com
|
||||||
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_common_2eproto_once;
|
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_common_2eproto_once;
|
||||||
static bool descriptor_table_common_2eproto_initialized = false;
|
static bool descriptor_table_common_2eproto_initialized = false;
|
||||||
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_common_2eproto = {
|
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_common_2eproto = {
|
||||||
&descriptor_table_common_2eproto_initialized, descriptor_table_protodef_common_2eproto, "common.proto", 4750,
|
&descriptor_table_common_2eproto_initialized, descriptor_table_protodef_common_2eproto, "common.proto", 5168,
|
||||||
&descriptor_table_common_2eproto_once, descriptor_table_common_2eproto_sccs, descriptor_table_common_2eproto_deps, 11, 1,
|
&descriptor_table_common_2eproto_once, descriptor_table_common_2eproto_sccs, descriptor_table_common_2eproto_deps, 11, 1,
|
||||||
schemas, file_default_instances, TableStruct_common_2eproto::offsets,
|
schemas, file_default_instances, TableStruct_common_2eproto::offsets,
|
||||||
file_level_metadata_common_2eproto, 11, file_level_enum_descriptors_common_2eproto, file_level_service_descriptors_common_2eproto,
|
file_level_metadata_common_2eproto, 11, file_level_enum_descriptors_common_2eproto, file_level_service_descriptors_common_2eproto,
|
||||||
|
@ -763,6 +775,7 @@ bool ObjectType_IsValid(int value) {
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
|
case 2:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
@ -785,6 +798,21 @@ bool ObjectPrivilege_IsValid(int value) {
|
||||||
case 7:
|
case 7:
|
||||||
case 8:
|
case 8:
|
||||||
case 9:
|
case 9:
|
||||||
|
case 10:
|
||||||
|
case 11:
|
||||||
|
case 12:
|
||||||
|
case 13:
|
||||||
|
case 14:
|
||||||
|
case 15:
|
||||||
|
case 16:
|
||||||
|
case 17:
|
||||||
|
case 18:
|
||||||
|
case 19:
|
||||||
|
case 20:
|
||||||
|
case 21:
|
||||||
|
case 22:
|
||||||
|
case 23:
|
||||||
|
case 24:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
@ -3948,15 +3976,15 @@ PrivilegeExt::PrivilegeExt(const PrivilegeExt& from)
|
||||||
_internal_metadata_(nullptr) {
|
_internal_metadata_(nullptr) {
|
||||||
_internal_metadata_.MergeFrom(from._internal_metadata_);
|
_internal_metadata_.MergeFrom(from._internal_metadata_);
|
||||||
::memcpy(&object_type_, &from.object_type_,
|
::memcpy(&object_type_, &from.object_type_,
|
||||||
static_cast<size_t>(reinterpret_cast<char*>(&object_name_index_) -
|
static_cast<size_t>(reinterpret_cast<char*>(&object_name_indexs_) -
|
||||||
reinterpret_cast<char*>(&object_type_)) + sizeof(object_name_index_));
|
reinterpret_cast<char*>(&object_type_)) + sizeof(object_name_indexs_));
|
||||||
// @@protoc_insertion_point(copy_constructor:milvus.proto.common.PrivilegeExt)
|
// @@protoc_insertion_point(copy_constructor:milvus.proto.common.PrivilegeExt)
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrivilegeExt::SharedCtor() {
|
void PrivilegeExt::SharedCtor() {
|
||||||
::memset(&object_type_, 0, static_cast<size_t>(
|
::memset(&object_type_, 0, static_cast<size_t>(
|
||||||
reinterpret_cast<char*>(&object_name_index_) -
|
reinterpret_cast<char*>(&object_name_indexs_) -
|
||||||
reinterpret_cast<char*>(&object_type_)) + sizeof(object_name_index_));
|
reinterpret_cast<char*>(&object_type_)) + sizeof(object_name_indexs_));
|
||||||
}
|
}
|
||||||
|
|
||||||
PrivilegeExt::~PrivilegeExt() {
|
PrivilegeExt::~PrivilegeExt() {
|
||||||
|
@ -3983,8 +4011,8 @@ void PrivilegeExt::Clear() {
|
||||||
(void) cached_has_bits;
|
(void) cached_has_bits;
|
||||||
|
|
||||||
::memset(&object_type_, 0, static_cast<size_t>(
|
::memset(&object_type_, 0, static_cast<size_t>(
|
||||||
reinterpret_cast<char*>(&object_name_index_) -
|
reinterpret_cast<char*>(&object_name_indexs_) -
|
||||||
reinterpret_cast<char*>(&object_type_)) + sizeof(object_name_index_));
|
reinterpret_cast<char*>(&object_type_)) + sizeof(object_name_indexs_));
|
||||||
_internal_metadata_.Clear();
|
_internal_metadata_.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4019,6 +4047,13 @@ const char* PrivilegeExt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_I
|
||||||
CHK_(ptr);
|
CHK_(ptr);
|
||||||
} else goto handle_unusual;
|
} else goto handle_unusual;
|
||||||
continue;
|
continue;
|
||||||
|
// int32 object_name_indexs = 4;
|
||||||
|
case 4:
|
||||||
|
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
|
||||||
|
object_name_indexs_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
|
||||||
|
CHK_(ptr);
|
||||||
|
} else goto handle_unusual;
|
||||||
|
continue;
|
||||||
default: {
|
default: {
|
||||||
handle_unusual:
|
handle_unusual:
|
||||||
if ((tag & 7) == 4 || tag == 0) {
|
if ((tag & 7) == 4 || tag == 0) {
|
||||||
|
@ -4090,6 +4125,19 @@ bool PrivilegeExt::MergePartialFromCodedStream(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// int32 object_name_indexs = 4;
|
||||||
|
case 4: {
|
||||||
|
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
|
||||||
|
|
||||||
|
DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
|
||||||
|
::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
|
||||||
|
input, &object_name_indexs_)));
|
||||||
|
} else {
|
||||||
|
goto handle_unusual;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
handle_unusual:
|
handle_unusual:
|
||||||
if (tag == 0) {
|
if (tag == 0) {
|
||||||
|
@ -4134,6 +4182,11 @@ void PrivilegeExt::SerializeWithCachedSizes(
|
||||||
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(3, this->object_name_index(), output);
|
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(3, this->object_name_index(), output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// int32 object_name_indexs = 4;
|
||||||
|
if (this->object_name_indexs() != 0) {
|
||||||
|
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(4, this->object_name_indexs(), output);
|
||||||
|
}
|
||||||
|
|
||||||
if (_internal_metadata_.have_unknown_fields()) {
|
if (_internal_metadata_.have_unknown_fields()) {
|
||||||
::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields(
|
::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields(
|
||||||
_internal_metadata_.unknown_fields(), output);
|
_internal_metadata_.unknown_fields(), output);
|
||||||
|
@ -4164,6 +4217,11 @@ void PrivilegeExt::SerializeWithCachedSizes(
|
||||||
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->object_name_index(), target);
|
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->object_name_index(), target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// int32 object_name_indexs = 4;
|
||||||
|
if (this->object_name_indexs() != 0) {
|
||||||
|
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->object_name_indexs(), target);
|
||||||
|
}
|
||||||
|
|
||||||
if (_internal_metadata_.have_unknown_fields()) {
|
if (_internal_metadata_.have_unknown_fields()) {
|
||||||
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray(
|
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray(
|
||||||
_internal_metadata_.unknown_fields(), target);
|
_internal_metadata_.unknown_fields(), target);
|
||||||
|
@ -4204,6 +4262,13 @@ size_t PrivilegeExt::ByteSizeLong() const {
|
||||||
this->object_name_index());
|
this->object_name_index());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// int32 object_name_indexs = 4;
|
||||||
|
if (this->object_name_indexs() != 0) {
|
||||||
|
total_size += 1 +
|
||||||
|
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
|
||||||
|
this->object_name_indexs());
|
||||||
|
}
|
||||||
|
|
||||||
int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
|
int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
|
||||||
SetCachedSize(cached_size);
|
SetCachedSize(cached_size);
|
||||||
return total_size;
|
return total_size;
|
||||||
|
@ -4240,6 +4305,9 @@ void PrivilegeExt::MergeFrom(const PrivilegeExt& from) {
|
||||||
if (from.object_name_index() != 0) {
|
if (from.object_name_index() != 0) {
|
||||||
set_object_name_index(from.object_name_index());
|
set_object_name_index(from.object_name_index());
|
||||||
}
|
}
|
||||||
|
if (from.object_name_indexs() != 0) {
|
||||||
|
set_object_name_indexs(from.object_name_indexs());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrivilegeExt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
|
void PrivilegeExt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
|
||||||
|
@ -4266,6 +4334,7 @@ void PrivilegeExt::InternalSwap(PrivilegeExt* other) {
|
||||||
swap(object_type_, other->object_type_);
|
swap(object_type_, other->object_type_);
|
||||||
swap(object_privilege_, other->object_privilege_);
|
swap(object_privilege_, other->object_privilege_);
|
||||||
swap(object_name_index_, other->object_name_index_);
|
swap(object_name_index_, other->object_name_index_);
|
||||||
|
swap(object_name_indexs_, other->object_name_indexs_);
|
||||||
}
|
}
|
||||||
|
|
||||||
::PROTOBUF_NAMESPACE_ID::Metadata PrivilegeExt::GetMetadata() const {
|
::PROTOBUF_NAMESPACE_ID::Metadata PrivilegeExt::GetMetadata() const {
|
||||||
|
|
|
@ -481,12 +481,13 @@ inline bool ImportState_Parse(
|
||||||
enum ObjectType : int {
|
enum ObjectType : int {
|
||||||
Collection = 0,
|
Collection = 0,
|
||||||
Global = 1,
|
Global = 1,
|
||||||
|
User = 2,
|
||||||
ObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
|
ObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
|
||||||
ObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
|
ObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
|
||||||
};
|
};
|
||||||
bool ObjectType_IsValid(int value);
|
bool ObjectType_IsValid(int value);
|
||||||
constexpr ObjectType ObjectType_MIN = Collection;
|
constexpr ObjectType ObjectType_MIN = Collection;
|
||||||
constexpr ObjectType ObjectType_MAX = Global;
|
constexpr ObjectType ObjectType_MAX = User;
|
||||||
constexpr int ObjectType_ARRAYSIZE = ObjectType_MAX + 1;
|
constexpr int ObjectType_ARRAYSIZE = ObjectType_MAX + 1;
|
||||||
|
|
||||||
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectType_descriptor();
|
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectType_descriptor();
|
||||||
|
@ -514,12 +515,27 @@ enum ObjectPrivilege : int {
|
||||||
PrivilegeCompaction = 7,
|
PrivilegeCompaction = 7,
|
||||||
PrivilegeInsert = 8,
|
PrivilegeInsert = 8,
|
||||||
PrivilegeDelete = 9,
|
PrivilegeDelete = 9,
|
||||||
|
PrivilegeGetStatistics = 10,
|
||||||
|
PrivilegeCreateIndex = 11,
|
||||||
|
PrivilegeIndexDetail = 12,
|
||||||
|
PrivilegeDropIndex = 13,
|
||||||
|
PrivilegeSearch = 14,
|
||||||
|
PrivilegeFlush = 15,
|
||||||
|
PrivilegeQuery = 16,
|
||||||
|
PrivilegeLoadBalance = 17,
|
||||||
|
PrivilegeImport = 18,
|
||||||
|
PrivilegeCreateOwnership = 19,
|
||||||
|
PrivilegeUpdateUser = 20,
|
||||||
|
PrivilegeDropOwnership = 21,
|
||||||
|
PrivilegeSelectOwnership = 22,
|
||||||
|
PrivilegeManageOwnership = 23,
|
||||||
|
PrivilegeSelectUser = 24,
|
||||||
ObjectPrivilege_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
|
ObjectPrivilege_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
|
||||||
ObjectPrivilege_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
|
ObjectPrivilege_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
|
||||||
};
|
};
|
||||||
bool ObjectPrivilege_IsValid(int value);
|
bool ObjectPrivilege_IsValid(int value);
|
||||||
constexpr ObjectPrivilege ObjectPrivilege_MIN = PrivilegeAll;
|
constexpr ObjectPrivilege ObjectPrivilege_MIN = PrivilegeAll;
|
||||||
constexpr ObjectPrivilege ObjectPrivilege_MAX = PrivilegeDelete;
|
constexpr ObjectPrivilege ObjectPrivilege_MAX = PrivilegeSelectUser;
|
||||||
constexpr int ObjectPrivilege_ARRAYSIZE = ObjectPrivilege_MAX + 1;
|
constexpr int ObjectPrivilege_ARRAYSIZE = ObjectPrivilege_MAX + 1;
|
||||||
|
|
||||||
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectPrivilege_descriptor();
|
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectPrivilege_descriptor();
|
||||||
|
@ -2112,6 +2128,7 @@ class PrivilegeExt :
|
||||||
kObjectTypeFieldNumber = 1,
|
kObjectTypeFieldNumber = 1,
|
||||||
kObjectPrivilegeFieldNumber = 2,
|
kObjectPrivilegeFieldNumber = 2,
|
||||||
kObjectNameIndexFieldNumber = 3,
|
kObjectNameIndexFieldNumber = 3,
|
||||||
|
kObjectNameIndexsFieldNumber = 4,
|
||||||
};
|
};
|
||||||
// .milvus.proto.common.ObjectType object_type = 1;
|
// .milvus.proto.common.ObjectType object_type = 1;
|
||||||
void clear_object_type();
|
void clear_object_type();
|
||||||
|
@ -2128,6 +2145,11 @@ class PrivilegeExt :
|
||||||
::PROTOBUF_NAMESPACE_ID::int32 object_name_index() const;
|
::PROTOBUF_NAMESPACE_ID::int32 object_name_index() const;
|
||||||
void set_object_name_index(::PROTOBUF_NAMESPACE_ID::int32 value);
|
void set_object_name_index(::PROTOBUF_NAMESPACE_ID::int32 value);
|
||||||
|
|
||||||
|
// int32 object_name_indexs = 4;
|
||||||
|
void clear_object_name_indexs();
|
||||||
|
::PROTOBUF_NAMESPACE_ID::int32 object_name_indexs() const;
|
||||||
|
void set_object_name_indexs(::PROTOBUF_NAMESPACE_ID::int32 value);
|
||||||
|
|
||||||
// @@protoc_insertion_point(class_scope:milvus.proto.common.PrivilegeExt)
|
// @@protoc_insertion_point(class_scope:milvus.proto.common.PrivilegeExt)
|
||||||
private:
|
private:
|
||||||
class _Internal;
|
class _Internal;
|
||||||
|
@ -2136,6 +2158,7 @@ class PrivilegeExt :
|
||||||
int object_type_;
|
int object_type_;
|
||||||
int object_privilege_;
|
int object_privilege_;
|
||||||
::PROTOBUF_NAMESPACE_ID::int32 object_name_index_;
|
::PROTOBUF_NAMESPACE_ID::int32 object_name_index_;
|
||||||
|
::PROTOBUF_NAMESPACE_ID::int32 object_name_indexs_;
|
||||||
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
|
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
|
||||||
friend struct ::TableStruct_common_2eproto;
|
friend struct ::TableStruct_common_2eproto;
|
||||||
};
|
};
|
||||||
|
@ -2990,6 +3013,20 @@ inline void PrivilegeExt::set_object_name_index(::PROTOBUF_NAMESPACE_ID::int32 v
|
||||||
// @@protoc_insertion_point(field_set:milvus.proto.common.PrivilegeExt.object_name_index)
|
// @@protoc_insertion_point(field_set:milvus.proto.common.PrivilegeExt.object_name_index)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// int32 object_name_indexs = 4;
|
||||||
|
inline void PrivilegeExt::clear_object_name_indexs() {
|
||||||
|
object_name_indexs_ = 0;
|
||||||
|
}
|
||||||
|
inline ::PROTOBUF_NAMESPACE_ID::int32 PrivilegeExt::object_name_indexs() const {
|
||||||
|
// @@protoc_insertion_point(field_get:milvus.proto.common.PrivilegeExt.object_name_indexs)
|
||||||
|
return object_name_indexs_;
|
||||||
|
}
|
||||||
|
inline void PrivilegeExt::set_object_name_indexs(::PROTOBUF_NAMESPACE_ID::int32 value) {
|
||||||
|
|
||||||
|
object_name_indexs_ = value;
|
||||||
|
// @@protoc_insertion_point(field_set:milvus.proto.common.PrivilegeExt.object_name_indexs)
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif // __GNUC__
|
#endif // __GNUC__
|
||||||
|
|
|
@ -276,6 +276,7 @@ enum ImportState {
|
||||||
enum ObjectType {
|
enum ObjectType {
|
||||||
Collection = 0;
|
Collection = 0;
|
||||||
Global = 1;
|
Global = 1;
|
||||||
|
User = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ObjectPrivilege {
|
enum ObjectPrivilege {
|
||||||
|
@ -289,12 +290,29 @@ enum ObjectPrivilege {
|
||||||
PrivilegeCompaction = 7;
|
PrivilegeCompaction = 7;
|
||||||
PrivilegeInsert = 8;
|
PrivilegeInsert = 8;
|
||||||
PrivilegeDelete = 9;
|
PrivilegeDelete = 9;
|
||||||
|
|
||||||
|
PrivilegeGetStatistics = 10;
|
||||||
|
PrivilegeCreateIndex = 11;
|
||||||
|
PrivilegeIndexDetail = 12;
|
||||||
|
PrivilegeDropIndex = 13;
|
||||||
|
PrivilegeSearch = 14;
|
||||||
|
PrivilegeFlush = 15;
|
||||||
|
PrivilegeQuery = 16;
|
||||||
|
PrivilegeLoadBalance = 17;
|
||||||
|
PrivilegeImport = 18;
|
||||||
|
PrivilegeCreateOwnership = 19;
|
||||||
|
PrivilegeUpdateUser = 20;
|
||||||
|
PrivilegeDropOwnership = 21;
|
||||||
|
PrivilegeSelectOwnership = 22;
|
||||||
|
PrivilegeManageOwnership = 23;
|
||||||
|
PrivilegeSelectUser = 24;
|
||||||
}
|
}
|
||||||
|
|
||||||
message PrivilegeExt {
|
message PrivilegeExt {
|
||||||
ObjectType object_type = 1;
|
ObjectType object_type = 1;
|
||||||
ObjectPrivilege object_privilege = 2;
|
ObjectPrivilege object_privilege = 2;
|
||||||
int32 object_name_index = 3;
|
int32 object_name_index = 3;
|
||||||
|
int32 object_name_indexs = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
extend google.protobuf.MessageOptions {
|
extend google.protobuf.MessageOptions {
|
||||||
|
|
|
@ -685,16 +685,19 @@ type ObjectType int32
|
||||||
const (
|
const (
|
||||||
ObjectType_Collection ObjectType = 0
|
ObjectType_Collection ObjectType = 0
|
||||||
ObjectType_Global ObjectType = 1
|
ObjectType_Global ObjectType = 1
|
||||||
|
ObjectType_User ObjectType = 2
|
||||||
)
|
)
|
||||||
|
|
||||||
var ObjectType_name = map[int32]string{
|
var ObjectType_name = map[int32]string{
|
||||||
0: "Collection",
|
0: "Collection",
|
||||||
1: "Global",
|
1: "Global",
|
||||||
|
2: "User",
|
||||||
}
|
}
|
||||||
|
|
||||||
var ObjectType_value = map[string]int32{
|
var ObjectType_value = map[string]int32{
|
||||||
"Collection": 0,
|
"Collection": 0,
|
||||||
"Global": 1,
|
"Global": 1,
|
||||||
|
"User": 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x ObjectType) String() string {
|
func (x ObjectType) String() string {
|
||||||
|
@ -718,6 +721,21 @@ const (
|
||||||
ObjectPrivilege_PrivilegeCompaction ObjectPrivilege = 7
|
ObjectPrivilege_PrivilegeCompaction ObjectPrivilege = 7
|
||||||
ObjectPrivilege_PrivilegeInsert ObjectPrivilege = 8
|
ObjectPrivilege_PrivilegeInsert ObjectPrivilege = 8
|
||||||
ObjectPrivilege_PrivilegeDelete ObjectPrivilege = 9
|
ObjectPrivilege_PrivilegeDelete ObjectPrivilege = 9
|
||||||
|
ObjectPrivilege_PrivilegeGetStatistics ObjectPrivilege = 10
|
||||||
|
ObjectPrivilege_PrivilegeCreateIndex ObjectPrivilege = 11
|
||||||
|
ObjectPrivilege_PrivilegeIndexDetail ObjectPrivilege = 12
|
||||||
|
ObjectPrivilege_PrivilegeDropIndex ObjectPrivilege = 13
|
||||||
|
ObjectPrivilege_PrivilegeSearch ObjectPrivilege = 14
|
||||||
|
ObjectPrivilege_PrivilegeFlush ObjectPrivilege = 15
|
||||||
|
ObjectPrivilege_PrivilegeQuery ObjectPrivilege = 16
|
||||||
|
ObjectPrivilege_PrivilegeLoadBalance ObjectPrivilege = 17
|
||||||
|
ObjectPrivilege_PrivilegeImport ObjectPrivilege = 18
|
||||||
|
ObjectPrivilege_PrivilegeCreateOwnership ObjectPrivilege = 19
|
||||||
|
ObjectPrivilege_PrivilegeUpdateUser ObjectPrivilege = 20
|
||||||
|
ObjectPrivilege_PrivilegeDropOwnership ObjectPrivilege = 21
|
||||||
|
ObjectPrivilege_PrivilegeSelectOwnership ObjectPrivilege = 22
|
||||||
|
ObjectPrivilege_PrivilegeManageOwnership ObjectPrivilege = 23
|
||||||
|
ObjectPrivilege_PrivilegeSelectUser ObjectPrivilege = 24
|
||||||
)
|
)
|
||||||
|
|
||||||
var ObjectPrivilege_name = map[int32]string{
|
var ObjectPrivilege_name = map[int32]string{
|
||||||
|
@ -731,6 +749,21 @@ var ObjectPrivilege_name = map[int32]string{
|
||||||
7: "PrivilegeCompaction",
|
7: "PrivilegeCompaction",
|
||||||
8: "PrivilegeInsert",
|
8: "PrivilegeInsert",
|
||||||
9: "PrivilegeDelete",
|
9: "PrivilegeDelete",
|
||||||
|
10: "PrivilegeGetStatistics",
|
||||||
|
11: "PrivilegeCreateIndex",
|
||||||
|
12: "PrivilegeIndexDetail",
|
||||||
|
13: "PrivilegeDropIndex",
|
||||||
|
14: "PrivilegeSearch",
|
||||||
|
15: "PrivilegeFlush",
|
||||||
|
16: "PrivilegeQuery",
|
||||||
|
17: "PrivilegeLoadBalance",
|
||||||
|
18: "PrivilegeImport",
|
||||||
|
19: "PrivilegeCreateOwnership",
|
||||||
|
20: "PrivilegeUpdateUser",
|
||||||
|
21: "PrivilegeDropOwnership",
|
||||||
|
22: "PrivilegeSelectOwnership",
|
||||||
|
23: "PrivilegeManageOwnership",
|
||||||
|
24: "PrivilegeSelectUser",
|
||||||
}
|
}
|
||||||
|
|
||||||
var ObjectPrivilege_value = map[string]int32{
|
var ObjectPrivilege_value = map[string]int32{
|
||||||
|
@ -744,6 +777,21 @@ var ObjectPrivilege_value = map[string]int32{
|
||||||
"PrivilegeCompaction": 7,
|
"PrivilegeCompaction": 7,
|
||||||
"PrivilegeInsert": 8,
|
"PrivilegeInsert": 8,
|
||||||
"PrivilegeDelete": 9,
|
"PrivilegeDelete": 9,
|
||||||
|
"PrivilegeGetStatistics": 10,
|
||||||
|
"PrivilegeCreateIndex": 11,
|
||||||
|
"PrivilegeIndexDetail": 12,
|
||||||
|
"PrivilegeDropIndex": 13,
|
||||||
|
"PrivilegeSearch": 14,
|
||||||
|
"PrivilegeFlush": 15,
|
||||||
|
"PrivilegeQuery": 16,
|
||||||
|
"PrivilegeLoadBalance": 17,
|
||||||
|
"PrivilegeImport": 18,
|
||||||
|
"PrivilegeCreateOwnership": 19,
|
||||||
|
"PrivilegeUpdateUser": 20,
|
||||||
|
"PrivilegeDropOwnership": 21,
|
||||||
|
"PrivilegeSelectOwnership": 22,
|
||||||
|
"PrivilegeManageOwnership": 23,
|
||||||
|
"PrivilegeSelectUser": 24,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x ObjectPrivilege) String() string {
|
func (x ObjectPrivilege) String() string {
|
||||||
|
@ -1231,6 +1279,7 @@ type PrivilegeExt struct {
|
||||||
ObjectType ObjectType `protobuf:"varint,1,opt,name=object_type,json=objectType,proto3,enum=milvus.proto.common.ObjectType" json:"object_type,omitempty"`
|
ObjectType ObjectType `protobuf:"varint,1,opt,name=object_type,json=objectType,proto3,enum=milvus.proto.common.ObjectType" json:"object_type,omitempty"`
|
||||||
ObjectPrivilege ObjectPrivilege `protobuf:"varint,2,opt,name=object_privilege,json=objectPrivilege,proto3,enum=milvus.proto.common.ObjectPrivilege" json:"object_privilege,omitempty"`
|
ObjectPrivilege ObjectPrivilege `protobuf:"varint,2,opt,name=object_privilege,json=objectPrivilege,proto3,enum=milvus.proto.common.ObjectPrivilege" json:"object_privilege,omitempty"`
|
||||||
ObjectNameIndex int32 `protobuf:"varint,3,opt,name=object_name_index,json=objectNameIndex,proto3" json:"object_name_index,omitempty"`
|
ObjectNameIndex int32 `protobuf:"varint,3,opt,name=object_name_index,json=objectNameIndex,proto3" json:"object_name_index,omitempty"`
|
||||||
|
ObjectNameIndexs int32 `protobuf:"varint,4,opt,name=object_name_indexs,json=objectNameIndexs,proto3" json:"object_name_indexs,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
@ -1282,6 +1331,13 @@ func (m *PrivilegeExt) GetObjectNameIndex() int32 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *PrivilegeExt) GetObjectNameIndexs() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.ObjectNameIndexs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
var E_PrivilegeExtObj = &proto.ExtensionDesc{
|
var E_PrivilegeExtObj = &proto.ExtensionDesc{
|
||||||
ExtendedType: (*descriptor.MessageOptions)(nil),
|
ExtendedType: (*descriptor.MessageOptions)(nil),
|
||||||
ExtensionType: (*PrivilegeExt)(nil),
|
ExtensionType: (*PrivilegeExt)(nil),
|
||||||
|
@ -1320,152 +1376,160 @@ func init() {
|
||||||
func init() { proto.RegisterFile("common.proto", fileDescriptor_555bd8c177793206) }
|
func init() { proto.RegisterFile("common.proto", fileDescriptor_555bd8c177793206) }
|
||||||
|
|
||||||
var fileDescriptor_555bd8c177793206 = []byte{
|
var fileDescriptor_555bd8c177793206 = []byte{
|
||||||
// 2342 bytes of a gzipped FileDescriptorProto
|
// 2473 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0x49, 0x73, 0x24, 0x47,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0x49, 0x73, 0x24, 0x47,
|
||||||
0xf5, 0x57, 0x75, 0xf7, 0xa8, 0xd5, 0xd9, 0x2d, 0x29, 0x95, 0xd2, 0x68, 0xda, 0xb3, 0x78, 0xe4,
|
0xf5, 0x57, 0x75, 0xb7, 0x96, 0xce, 0x6e, 0x49, 0x4f, 0x29, 0x8d, 0xa6, 0x3d, 0x8b, 0x47, 0xd6,
|
||||||
0xfe, 0xdb, 0x7f, 0x44, 0x83, 0x25, 0xb0, 0x23, 0x80, 0x20, 0xc2, 0x04, 0x52, 0xb7, 0xa4, 0xe9,
|
0xdf, 0xfe, 0x33, 0x08, 0x5b, 0x03, 0xe3, 0x08, 0x20, 0x88, 0x30, 0x81, 0xd4, 0x2d, 0x69, 0x14,
|
||||||
0xb0, 0x96, 0xa6, 0xa4, 0x19, 0x3b, 0x88, 0x00, 0x45, 0x76, 0xd5, 0x53, 0xab, 0x66, 0xaa, 0x2a,
|
0x1e, 0x2d, 0x94, 0x34, 0xb6, 0x83, 0x08, 0x98, 0x48, 0x55, 0x3d, 0x75, 0xd7, 0x4c, 0x75, 0x65,
|
||||||
0x8b, 0xca, 0x6c, 0x8d, 0x9a, 0x93, 0x31, 0x37, 0x4e, 0x60, 0xbe, 0x00, 0x1f, 0x80, 0x7d, 0x31,
|
0x51, 0x99, 0xad, 0x51, 0x73, 0x32, 0x26, 0x82, 0x33, 0x98, 0x2f, 0xc0, 0x07, 0x60, 0x5f, 0x0c,
|
||||||
0x1c, 0xd9, 0xb1, 0x01, 0x73, 0xe1, 0xc2, 0x0e, 0x47, 0xb8, 0xb3, 0x7a, 0x25, 0x5e, 0x66, 0x6d,
|
0x47, 0x76, 0x6c, 0xb6, 0x0b, 0x17, 0x76, 0x38, 0xc2, 0x9d, 0xd5, 0x2b, 0xf1, 0x32, 0x6b, 0x6b,
|
||||||
0xd2, 0xc8, 0x70, 0xe0, 0x56, 0xf9, 0x7b, 0x2f, 0xdf, 0x96, 0x6f, 0xc9, 0x2c, 0xd2, 0x70, 0x44,
|
0xcd, 0x18, 0x0e, 0xdc, 0x3a, 0x7f, 0xef, 0xe5, 0xdb, 0x97, 0xac, 0x66, 0x4d, 0x4f, 0xf6, 0xfb,
|
||||||
0x10, 0x88, 0x70, 0x25, 0x8a, 0x85, 0x12, 0x6c, 0x3e, 0xf0, 0xfc, 0x93, 0x91, 0x34, 0xab, 0x15,
|
0x32, 0x5a, 0x8d, 0x13, 0xa9, 0x25, 0x9f, 0xef, 0x07, 0xe1, 0xc9, 0x40, 0xd9, 0xd3, 0xaa, 0x25,
|
||||||
0x43, 0xba, 0xba, 0x34, 0x14, 0x62, 0xe8, 0xc3, 0xaa, 0x06, 0x07, 0xa3, 0xa3, 0x55, 0x17, 0xa4,
|
0x5d, 0x58, 0xea, 0x4a, 0xd9, 0x0d, 0xf1, 0x9a, 0x01, 0x8f, 0x06, 0xc7, 0xd7, 0x7c, 0x54, 0x5e,
|
||||||
0x13, 0x7b, 0x91, 0x12, 0xb1, 0x61, 0x6c, 0x1d, 0x92, 0xc9, 0x7d, 0xc5, 0xd5, 0x48, 0xb2, 0xa7,
|
0x12, 0xc4, 0x5a, 0x26, 0x96, 0x71, 0xf9, 0x36, 0x9b, 0x38, 0xd0, 0x42, 0x0f, 0x14, 0x7f, 0x8a,
|
||||||
0x08, 0x81, 0x38, 0x16, 0xf1, 0xa1, 0x23, 0x5c, 0x68, 0x5a, 0x4b, 0xd6, 0xf2, 0xcc, 0x13, 0x0f,
|
0x31, 0x4c, 0x12, 0x99, 0xdc, 0xf6, 0xa4, 0x8f, 0x2d, 0x67, 0xc9, 0xb9, 0x3a, 0x73, 0xfd, 0xe1,
|
||||||
0xaf, 0x5c, 0x20, 0x75, 0x65, 0x03, 0xd9, 0x3a, 0xc2, 0x05, 0xbb, 0x06, 0xe9, 0x27, 0x5b, 0x24,
|
0xd5, 0x07, 0x48, 0x5d, 0xdd, 0x20, 0xb6, 0xb6, 0xf4, 0xd1, 0xad, 0x63, 0xf6, 0x93, 0x2f, 0xb2,
|
||||||
0x93, 0x31, 0x70, 0x29, 0xc2, 0x66, 0x69, 0xc9, 0x5a, 0xae, 0xd9, 0xc9, 0xaa, 0xf5, 0x3e, 0xd2,
|
0x89, 0x04, 0x85, 0x92, 0x51, 0xab, 0xb2, 0xe4, 0x5c, 0xad, 0xbb, 0xe9, 0x69, 0xf9, 0xbd, 0xac,
|
||||||
0x78, 0x1a, 0xc6, 0x77, 0xb8, 0x3f, 0x82, 0x3e, 0xf7, 0x62, 0x46, 0x49, 0xf9, 0x1e, 0x8c, 0xb5,
|
0xf9, 0x34, 0x0e, 0x9f, 0x11, 0xe1, 0x00, 0xf7, 0x45, 0x90, 0x70, 0x60, 0xd5, 0xbb, 0x38, 0x34,
|
||||||
0xfc, 0x9a, 0x8d, 0x9f, 0x6c, 0x81, 0x5c, 0x3a, 0x41, 0x72, 0xb2, 0xd1, 0x2c, 0x5a, 0x4f, 0x92,
|
0xf2, 0xeb, 0x2e, 0xfd, 0xe4, 0x0b, 0x6c, 0xfc, 0x84, 0xc8, 0xe9, 0x45, 0x7b, 0x58, 0x7e, 0x92,
|
||||||
0xfa, 0xd3, 0x30, 0xee, 0x72, 0xc5, 0xdf, 0x66, 0x1b, 0x23, 0x15, 0x97, 0x2b, 0xae, 0x77, 0x35,
|
0x35, 0x9e, 0xc6, 0x61, 0x47, 0x68, 0xf1, 0x36, 0xd7, 0x38, 0xab, 0xf9, 0x42, 0x0b, 0x73, 0xab,
|
||||||
0x6c, 0xfd, 0xdd, 0xba, 0x4e, 0x2a, 0xeb, 0xbe, 0x18, 0xe4, 0x22, 0x2d, 0x4d, 0x4c, 0x44, 0x9e,
|
0xe9, 0x9a, 0xdf, 0xcb, 0x97, 0x58, 0x6d, 0x3d, 0x94, 0x47, 0x85, 0x48, 0xc7, 0x10, 0x53, 0x91,
|
||||||
0x10, 0xda, 0xf7, 0xb9, 0x03, 0xc7, 0xc2, 0x77, 0x21, 0xd6, 0x26, 0xa1, 0x5c, 0xc5, 0x87, 0xa9,
|
0x27, 0x0c, 0xf6, 0x43, 0xe1, 0x61, 0x4f, 0x86, 0x3e, 0x26, 0xc6, 0x24, 0x92, 0xab, 0x45, 0x37,
|
||||||
0x5c, 0xc5, 0x87, 0xec, 0x03, 0xa4, 0xa2, 0xc6, 0x91, 0xb1, 0x66, 0xe6, 0x89, 0x47, 0x2f, 0x8c,
|
0x93, 0xab, 0x45, 0x97, 0xbf, 0x9f, 0xd5, 0xf4, 0x30, 0xb6, 0xd6, 0xcc, 0x5c, 0x7f, 0xf4, 0x81,
|
||||||
0x40, 0x41, 0xcc, 0xc1, 0x38, 0x02, 0x5b, 0xef, 0xc0, 0x10, 0x68, 0x45, 0xb2, 0x59, 0x5e, 0x2a,
|
0x11, 0x28, 0x89, 0x39, 0x1c, 0xc6, 0xe8, 0x9a, 0x1b, 0x14, 0x02, 0xa3, 0x48, 0xb5, 0xaa, 0x4b,
|
||||||
0x2f, 0x37, 0xec, 0x64, 0xd5, 0xfa, 0xd8, 0x19, 0xbd, 0x5b, 0xb1, 0x18, 0x45, 0xac, 0x47, 0x1a,
|
0xd5, 0xab, 0x4d, 0x37, 0x3d, 0x2d, 0x7f, 0x74, 0x44, 0xef, 0x56, 0x22, 0x07, 0x31, 0xdf, 0x66,
|
||||||
0x51, 0x8e, 0xc9, 0xa6, 0xb5, 0x54, 0x5e, 0xae, 0x3f, 0xf1, 0xd8, 0x7f, 0xd3, 0xa6, 0x8d, 0xb6,
|
0xcd, 0xb8, 0xc0, 0x54, 0xcb, 0x59, 0xaa, 0x5e, 0x6d, 0x5c, 0x7f, 0xec, 0xbf, 0x69, 0x33, 0x46,
|
||||||
0xcf, 0x6c, 0x6d, 0x3d, 0x4e, 0xaa, 0x6b, 0xae, 0x1b, 0x83, 0x94, 0x6c, 0x86, 0x94, 0xbc, 0x28,
|
0xbb, 0x23, 0x57, 0x97, 0x9f, 0x60, 0x93, 0x6b, 0xbe, 0x9f, 0xa0, 0x52, 0x7c, 0x86, 0x55, 0x82,
|
||||||
0x71, 0xa6, 0xe4, 0x45, 0x18, 0xa3, 0x48, 0xc4, 0x4a, 0xfb, 0x52, 0xb6, 0xf5, 0x77, 0xeb, 0x05,
|
0x38, 0x75, 0xa6, 0x12, 0xc4, 0x14, 0xa3, 0x58, 0x26, 0xda, 0xf8, 0x52, 0x75, 0xcd, 0xef, 0xe5,
|
||||||
0x8b, 0x54, 0x77, 0xe4, 0x70, 0x9d, 0x4b, 0x60, 0xef, 0x27, 0x53, 0x81, 0x1c, 0x1e, 0x6a, 0x7f,
|
0x17, 0x1d, 0x36, 0xb9, 0xa3, 0xba, 0xeb, 0x42, 0x21, 0x7f, 0x1f, 0x9b, 0xea, 0xab, 0xee, 0x6d,
|
||||||
0xcd, 0x89, 0x5f, 0xbf, 0xd0, 0x82, 0x1d, 0x39, 0xd4, 0x7e, 0x56, 0x03, 0xf3, 0x81, 0x01, 0x0e,
|
0xe3, 0xaf, 0xcd, 0xf8, 0xa5, 0x07, 0x5a, 0xb0, 0xa3, 0xba, 0xc6, 0xcf, 0xc9, 0xbe, 0xfd, 0x41,
|
||||||
0xe4, 0xb0, 0xd7, 0x4d, 0x24, 0x9b, 0x05, 0xbb, 0x4e, 0x6a, 0xca, 0x0b, 0x40, 0x2a, 0x1e, 0x44,
|
0x01, 0xee, 0xab, 0xee, 0x76, 0x27, 0x95, 0x6c, 0x0f, 0xfc, 0x12, 0xab, 0xeb, 0xa0, 0x8f, 0x4a,
|
||||||
0xcd, 0xf2, 0x92, 0xb5, 0x5c, 0xb1, 0x73, 0x80, 0x5d, 0x25, 0x53, 0x52, 0x8c, 0x62, 0x07, 0x7a,
|
0x8b, 0x7e, 0xdc, 0xaa, 0x2e, 0x39, 0x57, 0x6b, 0x6e, 0x01, 0xf0, 0x0b, 0x6c, 0x4a, 0xc9, 0x41,
|
||||||
0xdd, 0x66, 0x45, 0x6f, 0xcb, 0xd6, 0xad, 0xa7, 0x48, 0x6d, 0x47, 0x0e, 0x6f, 0x01, 0x77, 0x21,
|
0xe2, 0xe1, 0x76, 0xa7, 0x55, 0x33, 0xd7, 0xf2, 0xf3, 0xf2, 0x53, 0xac, 0xbe, 0xa3, 0xba, 0x37,
|
||||||
0x66, 0xef, 0x21, 0x95, 0x01, 0x97, 0xc6, 0xa2, 0xfa, 0xdb, 0x5b, 0x84, 0x1e, 0xd8, 0x9a, 0xb3,
|
0x50, 0xf8, 0x98, 0xf0, 0x77, 0xb3, 0xda, 0x91, 0x50, 0xd6, 0xa2, 0xc6, 0xdb, 0x5b, 0x44, 0x1e,
|
||||||
0xf5, 0x71, 0xd2, 0xe8, 0xee, 0x6c, 0xff, 0x0f, 0x12, 0xd0, 0x74, 0x79, 0xcc, 0x63, 0x77, 0x97,
|
0xb8, 0x86, 0x73, 0xf9, 0x63, 0xac, 0xd9, 0xd9, 0xb9, 0xf9, 0x3f, 0x48, 0x20, 0xd3, 0x55, 0x4f,
|
||||||
0x07, 0x69, 0x22, 0xe6, 0x40, 0xeb, 0x15, 0x8b, 0x34, 0xfa, 0xb1, 0x77, 0xe2, 0xf9, 0x30, 0x84,
|
0x24, 0xfe, 0xae, 0xe8, 0x67, 0x85, 0x58, 0x00, 0xcb, 0xaf, 0x39, 0xac, 0xb9, 0x9f, 0x04, 0x27,
|
||||||
0x8d, 0x53, 0xc5, 0x3e, 0x4c, 0xea, 0x62, 0x70, 0x17, 0x1c, 0x55, 0x8c, 0xdd, 0xcd, 0x0b, 0xf5,
|
0x41, 0x88, 0x5d, 0xdc, 0x38, 0xd5, 0xfc, 0x43, 0xac, 0x21, 0x8f, 0xee, 0xa0, 0xa7, 0xcb, 0xb1,
|
||||||
0xec, 0x69, 0x3e, 0x1d, 0x3e, 0x22, 0xb2, 0x6f, 0xb6, 0x47, 0x68, 0x22, 0x21, 0x4a, 0x05, 0xff,
|
0xbb, 0xf2, 0x40, 0x3d, 0x7b, 0x86, 0xcf, 0x84, 0x8f, 0xc9, 0xfc, 0x37, 0xdf, 0x63, 0x90, 0x4a,
|
||||||
0xc7, 0x94, 0x33, 0x62, 0x32, 0x23, 0xec, 0x59, 0x71, 0x16, 0x60, 0x6d, 0x32, 0x97, 0x08, 0x0c,
|
0x88, 0x33, 0xc1, 0xff, 0xb1, 0xe4, 0xac, 0x98, 0xdc, 0x08, 0x77, 0x56, 0x8e, 0x02, 0x7c, 0x85,
|
||||||
0x79, 0x00, 0x87, 0x5e, 0xe8, 0xc2, 0xa9, 0x3e, 0x84, 0x4b, 0x29, 0x2f, 0xba, 0xd2, 0x43, 0xb8,
|
0xcd, 0xa5, 0x02, 0x23, 0xd1, 0xc7, 0xdb, 0x41, 0xe4, 0xe3, 0xa9, 0x49, 0xc2, 0x78, 0xc6, 0x4b,
|
||||||
0xfd, 0xcb, 0x29, 0x52, 0xcb, 0xaa, 0x98, 0xd5, 0x49, 0x75, 0x7f, 0xe4, 0x38, 0x20, 0x25, 0x9d,
|
0xae, 0x6c, 0x13, 0xcc, 0x1f, 0x67, 0xfc, 0x3e, 0x5e, 0x65, 0x92, 0x32, 0xee, 0xc2, 0x19, 0x66,
|
||||||
0x60, 0xf3, 0x64, 0xf6, 0x76, 0x08, 0xa7, 0x11, 0x38, 0x0a, 0x5c, 0xcd, 0x43, 0x2d, 0x36, 0x47,
|
0xb5, 0xf2, 0xcb, 0x29, 0x56, 0xcf, 0x7b, 0x9e, 0x37, 0xd8, 0xe4, 0xc1, 0xc0, 0xf3, 0x50, 0x29,
|
||||||
0xa6, 0x3b, 0x22, 0x0c, 0xc1, 0x51, 0x9b, 0xdc, 0xf3, 0xc1, 0xa5, 0x25, 0xb6, 0x40, 0x68, 0x1f,
|
0x18, 0xe3, 0xf3, 0x6c, 0xf6, 0x56, 0x84, 0xa7, 0x31, 0x7a, 0x1a, 0x7d, 0xc3, 0x03, 0x0e, 0x9f,
|
||||||
0xe2, 0xc0, 0x93, 0xd2, 0x13, 0x61, 0x17, 0x42, 0x0f, 0x5c, 0x5a, 0x66, 0x57, 0xc8, 0x7c, 0x47,
|
0x63, 0xd3, 0x6d, 0x19, 0x45, 0xe8, 0xe9, 0x4d, 0x11, 0x84, 0xe8, 0x43, 0x85, 0x2f, 0x30, 0xd8,
|
||||||
0xf8, 0x3e, 0x38, 0xca, 0x13, 0xe1, 0xae, 0x50, 0x1b, 0xa7, 0x9e, 0x54, 0x92, 0x56, 0x50, 0x6c,
|
0xc7, 0xa4, 0x1f, 0x28, 0x15, 0xc8, 0xa8, 0x83, 0x51, 0x80, 0x3e, 0x54, 0xf9, 0x79, 0x36, 0xdf,
|
||||||
0xcf, 0xf7, 0x61, 0xc8, 0xfd, 0xb5, 0x78, 0x38, 0x0a, 0x20, 0x54, 0xf4, 0x12, 0xca, 0x48, 0xc0,
|
0x96, 0x61, 0x88, 0x9e, 0x0e, 0x64, 0xb4, 0x2b, 0xf5, 0xc6, 0x69, 0xa0, 0xb4, 0x82, 0x1a, 0x89,
|
||||||
0xae, 0x17, 0x40, 0x88, 0x92, 0x68, 0xb5, 0x80, 0x6a, 0x63, 0x31, 0x5a, 0x74, 0x8a, 0x3d, 0x44,
|
0xdd, 0x0e, 0x43, 0xec, 0x8a, 0x70, 0x2d, 0xe9, 0x0e, 0xfa, 0x18, 0x69, 0x18, 0x27, 0x19, 0x29,
|
||||||
0x2e, 0x27, 0x68, 0x41, 0x01, 0x0f, 0x80, 0xd6, 0xd8, 0x2c, 0xa9, 0x27, 0xa4, 0x83, 0xbd, 0xfe,
|
0xd8, 0x09, 0xfa, 0x18, 0x91, 0x24, 0x98, 0x2c, 0xa1, 0xc6, 0x5a, 0x8a, 0x2d, 0x4c, 0xf1, 0x87,
|
||||||
0xd3, 0x94, 0x14, 0x24, 0xd8, 0xe2, 0xbe, 0x0d, 0x8e, 0x88, 0x5d, 0x5a, 0x2f, 0x98, 0x70, 0x07,
|
0xd8, 0xb9, 0x14, 0x2d, 0x29, 0x10, 0x7d, 0x84, 0x3a, 0x9f, 0x65, 0x8d, 0x94, 0x74, 0xb8, 0xb7,
|
||||||
0x1c, 0x25, 0xe2, 0x5e, 0x97, 0x36, 0xd0, 0xe0, 0x04, 0xdc, 0x07, 0x1e, 0x3b, 0xc7, 0x36, 0xc8,
|
0xff, 0x34, 0xb0, 0x92, 0x04, 0x57, 0xde, 0x73, 0xd1, 0x93, 0x89, 0x0f, 0x8d, 0x92, 0x09, 0xcf,
|
||||||
0x91, 0xaf, 0xe8, 0x34, 0xa3, 0xa4, 0xb1, 0xe9, 0xf9, 0xb0, 0x2b, 0xd4, 0xa6, 0x18, 0x85, 0x2e,
|
0xa0, 0xa7, 0x65, 0xb2, 0xdd, 0x81, 0x26, 0x19, 0x9c, 0x82, 0x07, 0x28, 0x12, 0xaf, 0xe7, 0xa2,
|
||||||
0x9d, 0x61, 0x33, 0x84, 0xec, 0x80, 0xe2, 0x49, 0x04, 0x66, 0x51, 0x6d, 0x87, 0x3b, 0xc7, 0x90,
|
0x1a, 0x84, 0x1a, 0xa6, 0x39, 0xb0, 0xe6, 0x66, 0x10, 0xe2, 0xae, 0xd4, 0x9b, 0x72, 0x10, 0xf9,
|
||||||
0x00, 0x94, 0x2d, 0x12, 0xd6, 0xe1, 0x61, 0x28, 0x54, 0x27, 0x06, 0xae, 0x60, 0x53, 0xd7, 0x27,
|
0x30, 0xc3, 0x67, 0x18, 0xdb, 0x41, 0x2d, 0xd2, 0x08, 0xcc, 0x92, 0xda, 0xb6, 0xf0, 0x7a, 0x98,
|
||||||
0x9d, 0x43, 0x73, 0xce, 0xe0, 0x9e, 0x0f, 0x94, 0xe5, 0xdc, 0x5d, 0xf0, 0x21, 0xe3, 0x9e, 0xcf,
|
0x02, 0xc0, 0x17, 0x19, 0x6f, 0x8b, 0x28, 0x92, 0xba, 0x9d, 0xa0, 0xd0, 0xb8, 0x69, 0xba, 0x19,
|
||||||
0xb9, 0x13, 0x1c, 0xb9, 0x17, 0xd0, 0xf8, 0xf5, 0x91, 0xe7, 0xbb, 0x3a, 0x24, 0xe6, 0x58, 0x2e,
|
0xe6, 0xc8, 0x9c, 0x11, 0x3c, 0x08, 0x11, 0x78, 0xc1, 0xdd, 0xc1, 0x10, 0x73, 0xee, 0xf9, 0x82,
|
||||||
0xa3, 0x8d, 0x89, 0xf1, 0xbb, 0xdb, 0xbd, 0xfd, 0x03, 0xba, 0xc8, 0x2e, 0x93, 0xb9, 0x04, 0xd9,
|
0x3b, 0xc5, 0x89, 0x7b, 0x81, 0x8c, 0x5f, 0x1f, 0x04, 0xa1, 0x6f, 0x42, 0x62, 0xd3, 0x72, 0x8e,
|
||||||
0x01, 0x15, 0x7b, 0x8e, 0x0e, 0xde, 0x15, 0x34, 0x75, 0x6f, 0xa4, 0xf6, 0x8e, 0x76, 0x20, 0x10,
|
0x6c, 0x4c, 0x8d, 0xdf, 0xbd, 0xb9, 0x7d, 0x70, 0x08, 0x8b, 0xfc, 0x1c, 0x9b, 0x4b, 0x91, 0x1d,
|
||||||
0xf1, 0x98, 0x36, 0xf1, 0x40, 0xb5, 0xa4, 0xf4, 0x88, 0xe8, 0x43, 0xa8, 0x61, 0x23, 0x88, 0xd4,
|
0xd4, 0x49, 0xe0, 0x99, 0xe0, 0x9d, 0x27, 0x53, 0xf7, 0x06, 0x7a, 0xef, 0x78, 0x07, 0xfb, 0x32,
|
||||||
0x38, 0x0f, 0x2f, 0xbd, 0xca, 0xae, 0x91, 0x2b, 0xb7, 0x23, 0x97, 0x2b, 0xe8, 0x05, 0xd8, 0x3c,
|
0x19, 0x42, 0x8b, 0x12, 0x6a, 0x24, 0x65, 0x29, 0x82, 0x87, 0x48, 0xc3, 0x46, 0x3f, 0xd6, 0xc3,
|
||||||
0x0e, 0xb8, 0xbc, 0x87, 0xee, 0x8e, 0x62, 0xa0, 0xd7, 0xd8, 0x55, 0xb2, 0x78, 0xf6, 0x2c, 0xb2,
|
0x22, 0xbc, 0x70, 0x81, 0x5f, 0x64, 0xe7, 0x6f, 0xc5, 0xbe, 0xd0, 0xb8, 0xdd, 0xa7, 0x51, 0x73,
|
||||||
0x60, 0x5d, 0xc7, 0x8d, 0xc6, 0xdb, 0x4e, 0x0c, 0x2e, 0x84, 0xca, 0xe3, 0x7e, 0xba, 0xf1, 0x46,
|
0x28, 0xd4, 0x5d, 0x72, 0x77, 0x90, 0x20, 0x5c, 0xe4, 0x17, 0xd8, 0xe2, 0x68, 0x2e, 0xf2, 0x60,
|
||||||
0x2e, 0xf5, 0x41, 0xe2, 0xc3, 0x48, 0x34, 0x9e, 0x3f, 0x48, 0xbc, 0xc9, 0x9a, 0x64, 0x61, 0x0b,
|
0x5d, 0xa2, 0x8b, 0xd6, 0xdb, 0x76, 0x82, 0x3e, 0x46, 0x3a, 0x10, 0x61, 0x76, 0xf1, 0x72, 0x21,
|
||||||
0xd4, 0x83, 0x94, 0x25, 0xa4, 0x6c, 0x7b, 0x52, 0x93, 0x6e, 0x4b, 0x88, 0x65, 0x4a, 0x79, 0x84,
|
0xf5, 0x7e, 0xe2, 0xc3, 0x44, 0xb4, 0x9e, 0xdf, 0x4f, 0xbc, 0xc2, 0x5b, 0x6c, 0x61, 0x0b, 0xf5,
|
||||||
0x31, 0x32, 0xb3, 0x05, 0x0a, 0xc1, 0x14, 0x6b, 0x61, 0x9c, 0x8c, 0x79, 0xb6, 0xf0, 0x21, 0x85,
|
0xfd, 0x94, 0x25, 0xa2, 0xdc, 0x0c, 0x94, 0x21, 0xdd, 0x52, 0x98, 0xa8, 0x8c, 0xf2, 0x08, 0xe7,
|
||||||
0xff, 0x0f, 0x63, 0xd0, 0x8d, 0x45, 0x54, 0x04, 0x1f, 0x45, 0x37, 0xf7, 0x22, 0x88, 0xb9, 0x02,
|
0x6c, 0x66, 0x0b, 0x35, 0x81, 0x19, 0xb6, 0x4c, 0x71, 0xb2, 0xe6, 0xb9, 0x32, 0xc4, 0x0c, 0xfe,
|
||||||
0x94, 0x51, 0xa4, 0x3d, 0x86, 0x72, 0xf6, 0x01, 0x23, 0x50, 0x84, 0xff, 0x3f, 0x87, 0x8b, 0x5a,
|
0x3f, 0x8a, 0x41, 0x27, 0x91, 0x71, 0x19, 0x7c, 0x94, 0xdc, 0xdc, 0x8b, 0x31, 0x11, 0x1a, 0x49,
|
||||||
0xdf, 0x81, 0x39, 0x9c, 0x70, 0x83, 0xe9, 0x7c, 0x29, 0x69, 0x19, 0xbd, 0x4e, 0x94, 0x64, 0x15,
|
0x46, 0x99, 0xf6, 0x18, 0xc9, 0x39, 0x40, 0x8a, 0x40, 0x19, 0xfe, 0xff, 0x02, 0x2e, 0x6b, 0x7d,
|
||||||
0x9d, 0x12, 0xdf, 0x89, 0xa9, 0x62, 0xf6, 0x6d, 0xc5, 0x3c, 0x54, 0x29, 0xde, 0x66, 0x8f, 0x90,
|
0x07, 0xd5, 0x70, 0xca, 0x8d, 0x76, 0x4e, 0x66, 0xa4, 0xab, 0xe4, 0x75, 0xaa, 0x24, 0xef, 0xff,
|
||||||
0x1b, 0x36, 0x1c, 0xc5, 0x20, 0x8f, 0xfb, 0xc2, 0xf7, 0x9c, 0x71, 0x2f, 0x3c, 0x12, 0x59, 0x4a,
|
0x8c, 0xf8, 0x4e, 0x2a, 0x15, 0x7b, 0x6f, 0x2b, 0x11, 0x91, 0xce, 0xf0, 0x15, 0xfe, 0x08, 0xbb,
|
||||||
0x22, 0xcb, 0xbb, 0xd0, 0x12, 0x0c, 0x8b, 0xa1, 0xa7, 0xf0, 0xbb, 0x31, 0x26, 0xbb, 0x42, 0xed,
|
0xec, 0xe2, 0x71, 0x82, 0xaa, 0xb7, 0x2f, 0xc3, 0xc0, 0x1b, 0x6e, 0x47, 0xc7, 0x32, 0x2f, 0x49,
|
||||||
0x63, 0x83, 0xdb, 0xd6, 0x2d, 0x93, 0x3e, 0x8e, 0x5a, 0x76, 0x85, 0x0d, 0x91, 0xef, 0x39, 0x7c,
|
0x62, 0x79, 0x17, 0x59, 0x42, 0x61, 0xb1, 0xf4, 0x0c, 0x7e, 0x9c, 0x62, 0xb2, 0x2b, 0xf5, 0x01,
|
||||||
0xed, 0x84, 0x7b, 0x3e, 0x1f, 0xf8, 0x40, 0x57, 0x30, 0x28, 0xfb, 0x30, 0xc4, 0x92, 0xcd, 0xce,
|
0x8d, 0xc3, 0x9b, 0x66, 0xc0, 0xc2, 0x13, 0xa4, 0x65, 0x57, 0xba, 0x18, 0x87, 0x81, 0x27, 0xd6,
|
||||||
0x77, 0x95, 0x31, 0x32, 0xdd, 0xed, 0xda, 0xf0, 0x89, 0x11, 0x48, 0x65, 0x73, 0x07, 0xe8, 0x9f,
|
0x4e, 0x44, 0x10, 0x8a, 0xa3, 0x10, 0x61, 0x95, 0x82, 0x72, 0x80, 0x5d, 0x6a, 0xd9, 0x3c, 0xbf,
|
||||||
0xab, 0xed, 0x67, 0x09, 0xd1, 0x49, 0x85, 0x17, 0x0a, 0x40, 0x15, 0xf9, 0x6a, 0x57, 0x84, 0x40,
|
0xd7, 0x38, 0x67, 0xd3, 0x9d, 0x8e, 0x8b, 0x1f, 0x1f, 0xa0, 0xd2, 0xae, 0xf0, 0x10, 0xfe, 0x3c,
|
||||||
0x27, 0x58, 0x83, 0x4c, 0xdd, 0x0e, 0x3d, 0x29, 0x47, 0xe0, 0x52, 0x0b, 0x0b, 0xaa, 0x17, 0xf6,
|
0xb9, 0xf2, 0x1c, 0x63, 0xa6, 0xa8, 0xe8, 0xf9, 0x81, 0xa4, 0xa2, 0x38, 0xed, 0xca, 0x08, 0x61,
|
||||||
0x63, 0x31, 0xc4, 0xd9, 0x45, 0x4b, 0x48, 0xdd, 0xf4, 0x42, 0x4f, 0x1e, 0xeb, 0x56, 0x42, 0xc8,
|
0x8c, 0x37, 0xd9, 0xd4, 0xad, 0x28, 0x50, 0x6a, 0x80, 0x3e, 0x38, 0xd4, 0x50, 0xdb, 0xd1, 0x7e,
|
||||||
0x64, 0x52, 0x59, 0x95, 0xf6, 0xf3, 0x16, 0x69, 0x24, 0x36, 0x18, 0xe1, 0x0b, 0x84, 0x16, 0xd7,
|
0x22, 0xbb, 0xb4, 0xe9, 0xa0, 0x42, 0xd4, 0xcd, 0x20, 0x0a, 0x54, 0xcf, 0x8c, 0x12, 0xc6, 0x26,
|
||||||
0xb9, 0xf8, 0x2c, 0xa1, 0x2d, 0x6c, 0x6b, 0x5b, 0xb1, 0xb8, 0xef, 0x85, 0x43, 0x5a, 0x42, 0x69,
|
0xd2, 0xce, 0xaa, 0xad, 0xbc, 0xe0, 0xb0, 0x66, 0x6a, 0x83, 0x15, 0xbe, 0xc0, 0xa0, 0x7c, 0x2e,
|
||||||
0xfb, 0xc0, 0x7d, 0x2d, 0xb9, 0x4e, 0xaa, 0x9b, 0xfe, 0x48, 0xab, 0xa9, 0x68, 0xa5, 0xb8, 0x40,
|
0xc4, 0xe7, 0x05, 0xed, 0xd0, 0x58, 0xdb, 0x4a, 0xe4, 0xbd, 0x20, 0xea, 0x42, 0x85, 0xa4, 0x1d,
|
||||||
0xb6, 0x4b, 0x48, 0xc2, 0x04, 0x88, 0xc0, 0xa5, 0x93, 0x6c, 0x9a, 0xd4, 0x4c, 0xda, 0x23, 0xad,
|
0xa0, 0x08, 0x8d, 0xe4, 0x06, 0x9b, 0xdc, 0x0c, 0x07, 0x46, 0x4d, 0xcd, 0x28, 0xa5, 0x03, 0xb1,
|
||||||
0xda, 0xfe, 0x10, 0x99, 0x3d, 0x37, 0xf7, 0xd9, 0x14, 0xa9, 0x24, 0xaa, 0x29, 0x69, 0xac, 0x7b,
|
0x8d, 0x13, 0x89, 0x0a, 0x20, 0x46, 0x1f, 0x26, 0xf8, 0x34, 0xab, 0xdb, 0xb2, 0x27, 0xda, 0xe4,
|
||||||
0x21, 0x8f, 0xc7, 0xa6, 0xb7, 0x50, 0x17, 0x6b, 0x6e, 0xd3, 0x17, 0x5c, 0x25, 0x00, 0xb4, 0x5f,
|
0xca, 0x07, 0xd9, 0xec, 0x99, 0x57, 0x02, 0x9f, 0x62, 0xb5, 0x54, 0x35, 0xb0, 0xe6, 0x7a, 0x10,
|
||||||
0x6c, 0xe8, 0xc1, 0xab, 0x37, 0x4e, 0x93, 0xda, 0xed, 0xd0, 0x85, 0x23, 0x2f, 0x04, 0x97, 0x4e,
|
0x89, 0x64, 0x68, 0x67, 0x0b, 0xf8, 0xd4, 0x73, 0x9b, 0xa1, 0x14, 0x3a, 0x05, 0x70, 0xe5, 0xa5,
|
||||||
0xe8, 0x9a, 0x37, 0xd5, 0x92, 0x17, 0x9f, 0x8b, 0x11, 0x44, 0x63, 0x0a, 0x18, 0x60, 0xe1, 0xde,
|
0xa6, 0x59, 0xd3, 0xe6, 0xe2, 0x34, 0xab, 0xdf, 0x8a, 0x7c, 0x3c, 0x0e, 0x22, 0xf4, 0x61, 0xcc,
|
||||||
0xe2, 0xb2, 0x00, 0x1d, 0xe1, 0xb9, 0x75, 0xf5, 0xb5, 0x6e, 0x50, 0xdc, 0x3e, 0xd4, 0xe7, 0x76,
|
0xf4, 0xbc, 0xed, 0x96, 0xa2, 0xf9, 0x7c, 0x8a, 0x20, 0x19, 0x53, 0xc2, 0x90, 0x1a, 0xf7, 0x86,
|
||||||
0x2c, 0xee, 0xe7, 0x98, 0xa4, 0xc7, 0xa8, 0x69, 0x0b, 0xd4, 0xfe, 0x58, 0x2a, 0x08, 0x3a, 0x22,
|
0x50, 0x25, 0xe8, 0x98, 0xf2, 0xd6, 0x31, 0x8f, 0xc0, 0xa3, 0xf2, 0xf5, 0xae, 0xc9, 0x5b, 0x4f,
|
||||||
0x3c, 0xf2, 0x86, 0x92, 0x7a, 0xa8, 0x69, 0x5b, 0x70, 0xb7, 0xb0, 0xfd, 0x2e, 0x66, 0x8e, 0x0d,
|
0xde, 0x2b, 0x30, 0x05, 0x3d, 0xd2, 0xb4, 0x85, 0xfa, 0x60, 0xa8, 0x34, 0xf6, 0xdb, 0x32, 0x3a,
|
||||||
0x3e, 0x70, 0x59, 0x94, 0x7a, 0x4f, 0x77, 0x3d, 0x6d, 0xea, 0x9a, 0xef, 0x71, 0x49, 0x7d, 0x74,
|
0x0e, 0xba, 0x0a, 0x02, 0xd2, 0x74, 0x53, 0x0a, 0xbf, 0x74, 0xfd, 0x0e, 0x55, 0x8e, 0x8b, 0x21,
|
||||||
0x05, 0xad, 0x34, 0xcb, 0x00, 0x0f, 0x75, 0xcd, 0x57, 0x10, 0x9b, 0x75, 0xc8, 0x16, 0xc8, 0xac,
|
0x0a, 0x55, 0x96, 0x7a, 0xd7, 0x4c, 0x3d, 0x63, 0xea, 0x5a, 0x18, 0x08, 0x05, 0x21, 0xb9, 0x42,
|
||||||
0xe1, 0xef, 0xf3, 0x58, 0x79, 0x5a, 0xc8, 0x4b, 0x96, 0x4e, 0x9f, 0x58, 0x44, 0x39, 0xf6, 0x32,
|
0x56, 0xda, 0x63, 0x9f, 0x92, 0xba, 0x16, 0x6a, 0x4c, 0xec, 0x39, 0xe2, 0x0b, 0x6c, 0xd6, 0xf2,
|
||||||
0x0e, 0x99, 0xc6, 0x2d, 0x2e, 0x73, 0xe8, 0xa7, 0x16, 0x5b, 0x24, 0x73, 0xa9, 0x6b, 0x39, 0xfe,
|
0xef, 0x8b, 0x44, 0x07, 0x46, 0xc8, 0xcb, 0x8e, 0x29, 0x9f, 0x44, 0xc6, 0x05, 0xf6, 0x0a, 0x2d,
|
||||||
0x33, 0x8b, 0xcd, 0x93, 0x19, 0x74, 0x2d, 0xc3, 0x24, 0xfd, 0xb9, 0x06, 0xd1, 0x89, 0x02, 0xf8,
|
0x99, 0xe6, 0x0d, 0xa1, 0x0a, 0xe8, 0x27, 0x0e, 0x5f, 0x64, 0x73, 0x99, 0x6b, 0x05, 0xfe, 0x53,
|
||||||
0x8a, 0x96, 0x90, 0x78, 0x51, 0xc0, 0x7f, 0xa1, 0x95, 0xa1, 0x84, 0x24, 0x89, 0x24, 0x7d, 0xd5,
|
0x87, 0xcf, 0xb3, 0x19, 0x72, 0x2d, 0xc7, 0x14, 0xfc, 0xcc, 0x80, 0xe4, 0x44, 0x09, 0xfc, 0xb9,
|
||||||
0x42, 0x4b, 0x53, 0x65, 0x09, 0x4c, 0x5f, 0xd3, 0x8c, 0x28, 0x35, 0x63, 0x7c, 0x5d, 0x33, 0x26,
|
0x91, 0x90, 0x7a, 0x51, 0xc2, 0x7f, 0x61, 0x94, 0x91, 0x84, 0xb4, 0x88, 0x14, 0xbc, 0xea, 0x90,
|
||||||
0x32, 0x33, 0xf4, 0x0d, 0x8d, 0xde, 0xe2, 0xa1, 0x2b, 0x8e, 0x8e, 0x32, 0xf4, 0x4d, 0x8b, 0x35,
|
0xa5, 0x99, 0xb2, 0x14, 0x86, 0xd7, 0x0c, 0x23, 0x49, 0xcd, 0x19, 0x5f, 0x37, 0x8c, 0xa9, 0xcc,
|
||||||
0xc9, 0x3c, 0x6e, 0x5f, 0xe7, 0x3e, 0x0f, 0x9d, 0x9c, 0xff, 0x2d, 0x8b, 0x5d, 0x26, 0xf4, 0x9c,
|
0x1c, 0x7d, 0xc3, 0xa0, 0x37, 0x44, 0xe4, 0xcb, 0xe3, 0xe3, 0x1c, 0x7d, 0xd3, 0xe1, 0x2d, 0x36,
|
||||||
0x3a, 0x49, 0x9f, 0x2b, 0x31, 0x9a, 0xc6, 0x57, 0x17, 0x0f, 0xfd, 0x62, 0x49, 0xc7, 0x2a, 0x61,
|
0x4f, 0xd7, 0xd7, 0x45, 0x28, 0x22, 0xaf, 0xe0, 0x7f, 0xcb, 0xe1, 0xe7, 0x18, 0x9c, 0x51, 0xa7,
|
||||||
0x34, 0xd8, 0x97, 0x4a, 0x6c, 0xc6, 0x04, 0xdd, 0xac, 0xbf, 0x5c, 0x62, 0x75, 0x32, 0xd9, 0x0b,
|
0xe0, 0xf9, 0x0a, 0x87, 0x2c, 0xbe, 0xa6, 0x79, 0xe0, 0x0b, 0x15, 0x13, 0xab, 0x94, 0xd1, 0x62,
|
||||||
0x25, 0xc4, 0x8a, 0x7e, 0x16, 0xf3, 0x7b, 0xd2, 0x74, 0x50, 0xfa, 0x39, 0x2c, 0xa3, 0x4b, 0x3a,
|
0x5f, 0xac, 0xf0, 0x19, 0x1b, 0x74, 0x7b, 0xfe, 0x52, 0x85, 0x37, 0xd8, 0xc4, 0x76, 0xa4, 0x30,
|
||||||
0xbf, 0xe9, 0x0b, 0x38, 0x9d, 0x99, 0x0d, 0x12, 0x42, 0xb7, 0x50, 0x3b, 0x92, 0x7e, 0x5e, 0xef,
|
0xd1, 0xf0, 0x19, 0xaa, 0xef, 0x09, 0x3b, 0x41, 0xe1, 0xb3, 0xd4, 0x46, 0xe3, 0xa6, 0xbe, 0xe1,
|
||||||
0x30, 0xe3, 0x8f, 0xfe, 0xb5, 0xac, 0x43, 0x53, 0x9c, 0x85, 0x7f, 0x2b, 0xa3, 0x09, 0x5b, 0xa0,
|
0x45, 0xda, 0xce, 0xdc, 0x45, 0x85, 0x91, 0x5f, 0xea, 0x1d, 0x05, 0x9f, 0x33, 0x37, 0xec, 0xfa,
|
||||||
0xf2, 0x72, 0xa6, 0x7f, 0x2f, 0xb3, 0xab, 0xe4, 0x72, 0x8a, 0xe9, 0xc9, 0x94, 0x15, 0xf2, 0x3f,
|
0x83, 0xbf, 0x56, 0x4d, 0x68, 0xca, 0xbb, 0xf0, 0x6f, 0x55, 0x32, 0x61, 0x0b, 0x75, 0xd1, 0xce,
|
||||||
0xca, 0xec, 0x3a, 0xb9, 0x82, 0x6d, 0x3a, 0xcb, 0x1b, 0xdc, 0xe4, 0x49, 0xe5, 0x39, 0x92, 0xfe,
|
0xf0, 0xf7, 0x2a, 0xbf, 0xc0, 0xce, 0x65, 0x98, 0xd9, 0x4c, 0x79, 0x23, 0xff, 0xa3, 0xca, 0x2f,
|
||||||
0xb3, 0xcc, 0xae, 0x91, 0xc5, 0x2d, 0x50, 0xd9, 0x79, 0x14, 0x88, 0xff, 0x2a, 0xb3, 0x69, 0x32,
|
0xb1, 0xf3, 0x34, 0xa6, 0xf3, 0xba, 0xa1, 0x4b, 0x81, 0xd2, 0x81, 0xa7, 0xe0, 0x9f, 0x55, 0x7e,
|
||||||
0x65, 0xe3, 0xe8, 0x82, 0x13, 0xa0, 0xaf, 0x96, 0xf1, 0x50, 0xd3, 0x65, 0x62, 0xce, 0x6b, 0x65,
|
0x91, 0x2d, 0x6e, 0xa1, 0xce, 0xf3, 0x51, 0x22, 0xfe, 0xab, 0xca, 0xa7, 0xd9, 0x94, 0x4b, 0xab,
|
||||||
0x0c, 0xf5, 0x33, 0x5c, 0x39, 0xc7, 0xdd, 0xa0, 0x73, 0xcc, 0xc3, 0x10, 0x7c, 0x49, 0x5f, 0x2f,
|
0x0b, 0x4f, 0x10, 0x5e, 0xad, 0x52, 0x52, 0xb3, 0x63, 0x6a, 0xce, 0x6b, 0x55, 0x0a, 0xf5, 0xb3,
|
||||||
0x63, 0x40, 0x6d, 0x08, 0xc4, 0x09, 0x14, 0xe0, 0x37, 0xb4, 0xd3, 0x9a, 0xf9, 0x23, 0x23, 0x88,
|
0x42, 0x7b, 0xbd, 0x4e, 0xbf, 0xdd, 0x13, 0x51, 0x84, 0xa1, 0x82, 0xd7, 0xab, 0x14, 0x50, 0x17,
|
||||||
0xc7, 0x19, 0xe1, 0xcd, 0x32, 0x1e, 0x8d, 0xe1, 0x3f, 0x4b, 0x79, 0xab, 0xcc, 0x6e, 0x90, 0xa6,
|
0xfb, 0xf2, 0x04, 0x4b, 0xf0, 0x1b, 0xc6, 0x69, 0xc3, 0xfc, 0xe1, 0x01, 0x26, 0xc3, 0x9c, 0xf0,
|
||||||
0x69, 0x16, 0xe9, 0xc1, 0x20, 0x71, 0x08, 0xd8, 0x5e, 0xe9, 0x73, 0x95, 0x4c, 0x62, 0x17, 0x7c,
|
0x66, 0x95, 0x52, 0x63, 0xf9, 0x47, 0x29, 0x6f, 0x55, 0xf9, 0x65, 0xd6, 0xb2, 0xc3, 0x22, 0x4b,
|
||||||
0xc5, 0xb3, 0x7d, 0x9f, 0xaa, 0xa0, 0x5d, 0x58, 0x5c, 0x79, 0x57, 0x95, 0xf4, 0xf9, 0x0a, 0x9e,
|
0x0c, 0x11, 0xbb, 0x48, 0xe3, 0x15, 0x9e, 0xaf, 0xe5, 0x12, 0x3b, 0x18, 0x6a, 0x91, 0xdf, 0xfb,
|
||||||
0xe8, 0x16, 0xa8, 0xa4, 0xb1, 0x4a, 0xfa, 0x69, 0x8d, 0x24, 0x92, 0xb5, 0xc8, 0x5f, 0x55, 0xd8,
|
0x64, 0x8d, 0xec, 0xa2, 0xe6, 0x2a, 0xa6, 0xaa, 0x82, 0x17, 0x6a, 0x94, 0xd1, 0x2d, 0xd4, 0xe9,
|
||||||
0x2c, 0x21, 0xa6, 0x26, 0x35, 0xf0, 0xeb, 0x54, 0x14, 0xde, 0x5d, 0x4e, 0x20, 0xd6, 0x8d, 0x9d,
|
0x60, 0x55, 0xf0, 0x29, 0x83, 0xa4, 0x92, 0x8d, 0xc8, 0x5f, 0xd5, 0xf8, 0x2c, 0x63, 0xb6, 0x27,
|
||||||
0xfe, 0x26, 0x53, 0x50, 0xe8, 0x7c, 0xf4, 0xb7, 0x15, 0x0c, 0xd9, 0x81, 0x17, 0xc0, 0x81, 0xe7,
|
0x0d, 0xf0, 0xeb, 0x4c, 0x14, 0xbd, 0x5d, 0x4e, 0x30, 0x31, 0x83, 0x1d, 0x7e, 0x93, 0x2b, 0x28,
|
||||||
0xdc, 0xa3, 0x5f, 0xad, 0x61, 0xc8, 0xb4, 0x47, 0xbb, 0xc2, 0x05, 0x73, 0xc2, 0x5f, 0xab, 0x61,
|
0x4d, 0x3e, 0xf8, 0x6d, 0x8d, 0x42, 0x76, 0x18, 0xf4, 0xf1, 0x30, 0xf0, 0xee, 0xc2, 0x57, 0xea,
|
||||||
0xc2, 0x60, 0x1e, 0x9a, 0x84, 0xf9, 0xba, 0x5e, 0x27, 0xdd, 0xbb, 0xd7, 0xa5, 0xdf, 0xc0, 0x3b,
|
0x14, 0x32, 0xe3, 0xd1, 0xae, 0xf4, 0xd1, 0x66, 0xf8, 0xab, 0x75, 0x2a, 0x18, 0xaa, 0x43, 0x5b,
|
||||||
0x14, 0x49, 0xd6, 0x07, 0xfb, 0x7b, 0xf4, 0x9b, 0x35, 0x54, 0xb5, 0xe6, 0xfb, 0xc2, 0xe1, 0x2a,
|
0x30, 0x5f, 0x33, 0xe7, 0x74, 0x7a, 0x6f, 0x77, 0xe0, 0xeb, 0xf4, 0x86, 0x62, 0xe9, 0xf9, 0xf0,
|
||||||
0xab, 0x86, 0x6f, 0xd5, 0xb0, 0x9c, 0x0a, 0xda, 0x93, 0x53, 0x7b, 0xb1, 0x86, 0xb1, 0x4f, 0x70,
|
0x60, 0x0f, 0xbe, 0x51, 0x27, 0x55, 0x6b, 0x61, 0x28, 0x3d, 0xa1, 0xf3, 0x6e, 0xf8, 0x66, 0x9d,
|
||||||
0x9d, 0x6c, 0x5d, 0x6c, 0x8a, 0xdf, 0xd6, 0x52, 0xf1, 0x05, 0x87, 0x96, 0x1c, 0x28, 0xfa, 0x1d,
|
0xda, 0xa9, 0xa4, 0x3d, 0xcd, 0xda, 0x4b, 0x75, 0x8a, 0x7d, 0x8a, 0x9b, 0x62, 0xeb, 0xd0, 0x50,
|
||||||
0xcd, 0x77, 0xfe, 0x5a, 0x40, 0x7f, 0x57, 0x4f, 0xf2, 0xab, 0x80, 0xfd, 0xbe, 0x6e, 0xea, 0xe3,
|
0xfc, 0x96, 0x91, 0x4a, 0xdf, 0x7b, 0x64, 0xc9, 0xa1, 0x86, 0x6f, 0x1b, 0xbe, 0xb3, 0xcf, 0x02,
|
||||||
0xec, 0x3d, 0x80, 0xfe, 0x41, 0xc3, 0xe7, 0xef, 0x0e, 0xf4, 0x8f, 0x75, 0x34, 0xac, 0x38, 0xfe,
|
0xf8, 0x5d, 0x23, 0xad, 0xaf, 0x12, 0xf6, 0xfb, 0x86, 0xed, 0x8f, 0xd1, 0x77, 0x00, 0xfc, 0xc1,
|
||||||
0xf1, 0x0a, 0x2c, 0xe9, 0x9f, 0xea, 0x68, 0x41, 0x3e, 0xe8, 0xe9, 0x77, 0x1b, 0x18, 0xac, 0x74,
|
0xc0, 0x67, 0xdf, 0x0e, 0xf0, 0xc7, 0x06, 0x19, 0x56, 0x5e, 0xff, 0xf4, 0x08, 0x56, 0xf0, 0xa7,
|
||||||
0xc4, 0xd3, 0xef, 0x35, 0xd0, 0xcd, 0x73, 0xc3, 0x9d, 0x7e, 0xbf, 0xa1, 0x8f, 0x23, 0x1b, 0xeb,
|
0x06, 0x59, 0x50, 0x2c, 0x7a, 0xf8, 0x4e, 0x93, 0x82, 0x95, 0xad, 0x78, 0xf8, 0x6e, 0x93, 0xdc,
|
||||||
0xf4, 0x07, 0x05, 0x00, 0xb9, 0xe8, 0x0f, 0x1b, 0xba, 0x03, 0x9d, 0x19, 0xe5, 0xf4, 0x47, 0x0d,
|
0x3c, 0xb3, 0xdc, 0xe1, 0x7b, 0x4d, 0x93, 0x8e, 0x7c, 0xad, 0xc3, 0xf7, 0x4b, 0x00, 0x71, 0xc1,
|
||||||
0xb4, 0xed, 0xfc, 0x10, 0xa7, 0x3f, 0x6e, 0x98, 0xe3, 0xce, 0xc6, 0x37, 0xfd, 0x49, 0x03, 0x2b,
|
0x0f, 0x9a, 0x66, 0x02, 0x8d, 0xac, 0x72, 0xf8, 0x61, 0x93, 0x6c, 0x3b, 0xbb, 0xc4, 0xe1, 0x47,
|
||||||
0xe0, 0xe2, 0xc1, 0x4d, 0x5f, 0xd2, 0xba, 0xf2, 0x91, 0x4d, 0x5f, 0x6e, 0xb4, 0x5b, 0xa4, 0xda,
|
0x4d, 0x9b, 0xee, 0x7c, 0x7d, 0xc3, 0x8f, 0x9b, 0xd4, 0x01, 0x0f, 0x5e, 0xdc, 0xf0, 0xb2, 0xd1,
|
||||||
0x95, 0xbe, 0x9e, 0x1b, 0x55, 0x52, 0xee, 0x4a, 0x9f, 0x4e, 0x60, 0x9b, 0x5d, 0x17, 0xc2, 0xdf,
|
0x55, 0xac, 0x6c, 0x78, 0xa5, 0xb9, 0xb2, 0xcc, 0x26, 0x3b, 0x2a, 0x34, 0x7b, 0x63, 0x92, 0x55,
|
||||||
0x38, 0x8d, 0xe2, 0x3b, 0xef, 0xa5, 0x56, 0x7b, 0x9d, 0xcc, 0x76, 0x44, 0x10, 0xf1, 0xac, 0xdc,
|
0x3b, 0x2a, 0x84, 0x31, 0x1a, 0xb3, 0xeb, 0x52, 0x86, 0x1b, 0xa7, 0x71, 0xf2, 0xcc, 0x7b, 0xc0,
|
||||||
0xf4, 0xa8, 0x30, 0x33, 0x06, 0x5c, 0x93, 0x2a, 0x13, 0xd8, 0xab, 0x37, 0x4e, 0xc1, 0x19, 0xe9,
|
0x59, 0x59, 0x67, 0xb3, 0x6d, 0xd9, 0x8f, 0x45, 0xde, 0x6e, 0x66, 0x55, 0xd8, 0x1d, 0x83, 0xbe,
|
||||||
0x89, 0x66, 0xe1, 0x12, 0x37, 0x61, 0x90, 0x5d, 0x5a, 0x6a, 0x3f, 0x4b, 0x68, 0x47, 0x84, 0xd2,
|
0x2d, 0x95, 0x31, 0x9a, 0xd5, 0x1b, 0xa7, 0xe8, 0x0d, 0xcc, 0x46, 0x73, 0xe8, 0x48, 0x97, 0x28,
|
||||||
0x93, 0x0a, 0x42, 0x67, 0xbc, 0x0d, 0x27, 0xe0, 0xeb, 0xb9, 0xa9, 0x62, 0x11, 0x0e, 0xe9, 0x84,
|
0xc8, 0x3e, 0x54, 0x56, 0x9e, 0x63, 0xd0, 0x96, 0x91, 0x0a, 0x94, 0xc6, 0xc8, 0x1b, 0xde, 0xc4,
|
||||||
0x7e, 0x27, 0x80, 0xbe, 0xef, 0x9b, 0xe9, 0xba, 0x8e, 0x77, 0x01, 0xfd, 0x18, 0x98, 0x21, 0x64,
|
0x13, 0x0c, 0xcd, 0xde, 0xd4, 0x89, 0x8c, 0xba, 0x30, 0x66, 0xbe, 0x13, 0xd0, 0xbc, 0xf7, 0xed,
|
||||||
0xe3, 0x04, 0x42, 0x35, 0xe2, 0xbe, 0x3f, 0xa6, 0x65, 0x5c, 0x77, 0x46, 0x52, 0x89, 0xc0, 0xfb,
|
0x76, 0x5d, 0xa7, 0xb7, 0x80, 0xf9, 0x18, 0x98, 0x61, 0x6c, 0xe3, 0x04, 0x23, 0x3d, 0x10, 0x61,
|
||||||
0xa4, 0x9e, 0xdf, 0x5f, 0xb1, 0x48, 0xdd, 0x8c, 0xd2, 0xcc, 0x34, 0xb3, 0xec, 0x43, 0xe8, 0x7a,
|
0x38, 0x84, 0x2a, 0x9d, 0xdb, 0x03, 0xa5, 0x65, 0x3f, 0xf8, 0x84, 0xd9, 0xdf, 0x5f, 0x76, 0x58,
|
||||||
0x5a, 0x38, 0xde, 0x65, 0x35, 0x94, 0x0c, 0x7d, 0x2b, 0x67, 0xda, 0x57, 0x3c, 0x56, 0xe9, 0xa3,
|
0xc3, 0xae, 0xd2, 0xdc, 0x34, 0x7b, 0xdc, 0xc7, 0xc8, 0x0f, 0x8c, 0x70, 0x7a, 0xcb, 0x1a, 0x28,
|
||||||
0xc3, 0x40, 0x5d, 0x71, 0x3f, 0xf4, 0x05, 0x77, 0xf5, 0x3c, 0xcf, 0xb6, 0xf6, 0x79, 0x2c, 0xf5,
|
0x5d, 0xfa, 0x4e, 0xc1, 0x74, 0xa0, 0x45, 0xa2, 0xb3, 0x8f, 0x0e, 0x0b, 0x75, 0xe4, 0xbd, 0x28,
|
||||||
0x50, 0xc7, 0xab, 0x7e, 0x22, 0x3f, 0xd6, 0xfe, 0xb8, 0xf4, 0x52, 0x0e, 0xe6, 0x3e, 0x4f, 0xe2,
|
0x94, 0xc2, 0x37, 0xfb, 0x3c, 0xbf, 0xba, 0x2f, 0x12, 0x65, 0x96, 0x3a, 0x3d, 0xf5, 0x53, 0xf9,
|
||||||
0xf0, 0x34, 0xa0, 0x4e, 0xf6, 0x34, 0xd3, 0x49, 0x7b, 0x99, 0x90, 0xfc, 0xe1, 0xa6, 0xfd, 0xc9,
|
0x89, 0xf1, 0xc7, 0x87, 0xf1, 0x02, 0x2c, 0x7c, 0x9e, 0xa0, 0xe5, 0x69, 0x41, 0x53, 0xec, 0x59,
|
||||||
0x87, 0xe0, 0x04, 0x46, 0x65, 0xcb, 0x17, 0x03, 0xee, 0x53, 0xab, 0xfd, 0x99, 0x12, 0x99, 0x3d,
|
0xa5, 0xb3, 0x95, 0xeb, 0x8c, 0x15, 0x9f, 0x79, 0xc6, 0x9f, 0x62, 0x09, 0x8e, 0x51, 0x54, 0xb6,
|
||||||
0xf7, 0x38, 0x43, 0x8b, 0xb2, 0xc5, 0x9a, 0x8f, 0xe7, 0x75, 0x83, 0x3c, 0x94, 0x21, 0x0f, 0x8c,
|
0x42, 0x79, 0x24, 0x42, 0x70, 0xe8, 0x0d, 0x60, 0x8a, 0xa2, 0xb2, 0xf2, 0xe9, 0x71, 0x36, 0x7b,
|
||||||
0x7a, 0x0b, 0xaf, 0x7f, 0x19, 0xf9, 0xdc, 0xcc, 0x2f, 0xb1, 0x9b, 0xe4, 0x5a, 0x4e, 0x7c, 0x70,
|
0xe6, 0xa3, 0x8e, 0x6c, 0xcb, 0x0f, 0x6b, 0x21, 0x65, 0xee, 0x32, 0x7b, 0x28, 0x47, 0xee, 0x5b,
|
||||||
0xd2, 0x63, 0xbb, 0x6d, 0x66, 0x0c, 0xe7, 0x47, 0x7e, 0x05, 0xe3, 0x98, 0x51, 0xb1, 0x07, 0x98,
|
0xfa, 0x0e, 0x3d, 0x04, 0x73, 0xf2, 0x99, 0xed, 0x5f, 0xe1, 0x57, 0xd8, 0xc5, 0x82, 0x78, 0xff,
|
||||||
0x87, 0x57, 0xfe, 0x92, 0x34, 0xa3, 0x8c, 0x4e, 0xe2, 0x5b, 0x28, 0xb7, 0x31, 0x4b, 0x26, 0x5a,
|
0xce, 0xa7, 0xc1, 0xdb, 0xca, 0x19, 0xce, 0x2e, 0xff, 0x1a, 0x45, 0x34, 0xa7, 0xd2, 0x34, 0xb0,
|
||||||
0xc5, 0xc8, 0x65, 0x84, 0x64, 0xcc, 0x4c, 0x9d, 0x01, 0x93, 0x71, 0x53, 0xfb, 0xa0, 0x20, 0x73,
|
0x9f, 0x60, 0xc5, 0x17, 0xa8, 0x5d, 0x6a, 0x30, 0x41, 0x5f, 0x45, 0x85, 0x8d, 0x79, 0x59, 0xc1,
|
||||||
0xd9, 0x73, 0xf6, 0x10, 0x4e, 0xd5, 0xa1, 0x18, 0xdc, 0x65, 0x37, 0x57, 0xcc, 0x6f, 0xa8, 0x95,
|
0x24, 0xc5, 0x30, 0x27, 0xa4, 0x0b, 0x67, 0x6a, 0x04, 0x4c, 0x17, 0x4f, 0x9d, 0x5e, 0xcd, 0x39,
|
||||||
0xf4, 0x37, 0xd4, 0xca, 0x0e, 0x48, 0xc9, 0x87, 0xb0, 0x17, 0x69, 0x1b, 0x9b, 0x7f, 0xa9, 0xea,
|
0x48, 0x33, 0xab, 0x18, 0x17, 0x8c, 0xde, 0xea, 0x67, 0x42, 0x60, 0xe7, 0x52, 0x63, 0x84, 0x62,
|
||||||
0x77, 0xfa, 0x23, 0x17, 0xff, 0xfd, 0x28, 0xbc, 0xbb, 0xed, 0xd9, 0xa8, 0xb0, 0xda, 0x1b, 0xdc,
|
0xb0, 0x0e, 0x6a, 0x11, 0x84, 0xd0, 0xa4, 0x44, 0x8d, 0xc4, 0xc5, 0xde, 0x98, 0x1e, 0x51, 0x9e,
|
||||||
0x5d, 0x7f, 0x86, 0xcc, 0x78, 0x22, 0xdd, 0x37, 0x8c, 0x23, 0x67, 0xbd, 0xde, 0xd1, 0xfb, 0xfa,
|
0xee, 0xb0, 0x19, 0x7a, 0xcf, 0x14, 0xcf, 0x68, 0xb3, 0xfd, 0x66, 0x47, 0x30, 0x33, 0x1f, 0x01,
|
||||||
0x28, 0xa3, 0x6f, 0x7d, 0xf4, 0xc9, 0xa1, 0xa7, 0x8e, 0x47, 0x03, 0x94, 0xb6, 0x6a, 0xd8, 0x1e,
|
0x46, 0xd4, 0x95, 0xd6, 0x34, 0xcc, 0x8d, 0x3a, 0x6a, 0x0a, 0x04, 0xf8, 0x48, 0x74, 0xad, 0xdd,
|
||||||
0xf7, 0x44, 0xf2, 0xb5, 0xea, 0x85, 0x0a, 0x7b, 0x85, 0x6f, 0x7e, 0x90, 0xad, 0x1a, 0x8d, 0xd1,
|
0x7b, 0xf7, 0x22, 0x4c, 0x54, 0x2f, 0x88, 0x61, 0x7e, 0x24, 0x68, 0x76, 0x44, 0x99, 0xba, 0x58,
|
||||||
0xe0, 0x0b, 0x96, 0x35, 0x98, 0xd4, 0xd0, 0x93, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x59,
|
0x18, 0x09, 0x05, 0x99, 0x5e, 0x5c, 0x3a, 0x37, 0x9a, 0x30, 0x33, 0x24, 0x0a, 0xea, 0xe2, 0x08,
|
||||||
0x0b, 0xcb, 0x66, 0x13, 0x00, 0x00,
|
0x75, 0x47, 0x44, 0xa2, 0x5b, 0x52, 0x78, 0x7e, 0x44, 0x61, 0x69, 0x3a, 0xb5, 0x3e, 0x20, 0xd9,
|
||||||
|
0x5c, 0xfe, 0x17, 0xc4, 0x6d, 0x3c, 0xd5, 0xb7, 0xe5, 0xd1, 0x1d, 0x7e, 0x65, 0xd5, 0xfe, 0x75,
|
||||||
|
0xb8, 0x9a, 0xfd, 0x75, 0xb8, 0xba, 0x83, 0x4a, 0x91, 0xc8, 0xd8, 0xd4, 0x47, 0xeb, 0x2f, 0x93,
|
||||||
|
0xe6, 0xbf, 0x95, 0x47, 0x1e, 0xfc, 0x8f, 0x55, 0xe9, 0xbf, 0x12, 0x77, 0x36, 0x2e, 0x9d, 0xf6,
|
||||||
|
0x8e, 0xee, 0xac, 0x3f, 0xcb, 0x66, 0x02, 0x99, 0xdd, 0xeb, 0x26, 0xb1, 0xb7, 0xde, 0x68, 0x9b,
|
||||||
|
0x7b, 0xfb, 0x24, 0x63, 0xdf, 0xf9, 0xc8, 0x93, 0xdd, 0x40, 0xf7, 0x06, 0x47, 0x24, 0xed, 0x9a,
|
||||||
|
0x65, 0x7b, 0x22, 0x90, 0xe9, 0xaf, 0x6b, 0x41, 0xa4, 0x69, 0x62, 0x87, 0xf6, 0x4f, 0xcd, 0x6b,
|
||||||
|
0x56, 0x63, 0x7c, 0xf4, 0x79, 0xc7, 0x39, 0x9a, 0x30, 0xd0, 0x93, 0xff, 0x0e, 0x00, 0x00, 0xff,
|
||||||
|
0xff, 0xa4, 0x96, 0x88, 0xfc, 0x1a, 0x15, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -263,6 +263,11 @@ message ReleaseCollectionRequest {
|
||||||
* WARNING: This API is experimental and not useful for now.
|
* WARNING: This API is experimental and not useful for now.
|
||||||
*/
|
*/
|
||||||
message GetStatisticsRequest {
|
message GetStatisticsRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeGetStatistics
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
|
@ -290,6 +295,11 @@ message GetStatisticsResponse {
|
||||||
* Get collection statistics like row_count.
|
* Get collection statistics like row_count.
|
||||||
*/
|
*/
|
||||||
message GetCollectionStatisticsRequest {
|
message GetCollectionStatisticsRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeGetStatistics
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
|
@ -518,6 +528,11 @@ message ShowSegmentsResponse {
|
||||||
* Create index for vector datas
|
* Create index for vector datas
|
||||||
*/
|
*/
|
||||||
message CreateIndexRequest {
|
message CreateIndexRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeCreateIndex
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
|
@ -537,6 +552,11 @@ message CreateIndexRequest {
|
||||||
* Current release of Milvus only supports showing latest built index.
|
* Current release of Milvus only supports showing latest built index.
|
||||||
*/
|
*/
|
||||||
message DescribeIndexRequest {
|
message DescribeIndexRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeIndexDetail
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
|
@ -577,6 +597,11 @@ message DescribeIndexResponse {
|
||||||
* Get index building progress
|
* Get index building progress
|
||||||
*/
|
*/
|
||||||
message GetIndexBuildProgressRequest {
|
message GetIndexBuildProgressRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeIndexDetail
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
|
@ -596,6 +621,11 @@ message GetIndexBuildProgressResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetIndexStateRequest {
|
message GetIndexStateRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeIndexDetail
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
common.MsgBase base = 1; // must
|
common.MsgBase base = 1; // must
|
||||||
string db_name = 2 ;
|
string db_name = 2 ;
|
||||||
string collection_name = 3; // must
|
string collection_name = 3; // must
|
||||||
|
@ -610,6 +640,11 @@ message GetIndexStateResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
message DropIndexRequest {
|
message DropIndexRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeDropIndex
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
common.MsgBase base = 1; // must
|
common.MsgBase base = 1; // must
|
||||||
string db_name = 2;
|
string db_name = 2;
|
||||||
string collection_name = 3; // must
|
string collection_name = 3; // must
|
||||||
|
@ -660,6 +695,11 @@ message DeleteRequest {
|
||||||
|
|
||||||
|
|
||||||
message SearchRequest {
|
message SearchRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeSearch
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
common.MsgBase base = 1; // must
|
common.MsgBase base = 1; // must
|
||||||
string db_name = 2;
|
string db_name = 2;
|
||||||
string collection_name = 3; // must
|
string collection_name = 3; // must
|
||||||
|
@ -688,6 +728,11 @@ message SearchResults {
|
||||||
}
|
}
|
||||||
|
|
||||||
message FlushRequest {
|
message FlushRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeFlush
|
||||||
|
object_name_indexs: 3
|
||||||
|
};
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
string db_name = 2;
|
string db_name = 2;
|
||||||
repeated string collection_names = 3;
|
repeated string collection_names = 3;
|
||||||
|
@ -700,6 +745,11 @@ message FlushResponse{
|
||||||
}
|
}
|
||||||
|
|
||||||
message QueryRequest {
|
message QueryRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeQuery
|
||||||
|
object_name_index: 3
|
||||||
|
};
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
string db_name = 2;
|
string db_name = 2;
|
||||||
string collection_name = 3;
|
string collection_name = 3;
|
||||||
|
@ -821,6 +871,11 @@ message GetMetricsResponse {
|
||||||
* Do load balancing operation from src_nodeID to dst_nodeID.
|
* Do load balancing operation from src_nodeID to dst_nodeID.
|
||||||
*/
|
*/
|
||||||
message LoadBalanceRequest {
|
message LoadBalanceRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeLoadBalance
|
||||||
|
object_name_index: 5
|
||||||
|
};
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
int64 src_nodeID = 2;
|
int64 src_nodeID = 2;
|
||||||
repeated int64 dst_nodeIDs = 3;
|
repeated int64 dst_nodeIDs = 3;
|
||||||
|
@ -880,6 +935,11 @@ message GetFlushStateResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
message ImportRequest {
|
message ImportRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Collection
|
||||||
|
object_privilege: PrivilegeImport
|
||||||
|
object_name_index: 1
|
||||||
|
};
|
||||||
string collection_name = 1; // target collection
|
string collection_name = 1; // target collection
|
||||||
string partition_name = 2; // target partition
|
string partition_name = 2; // target partition
|
||||||
repeated string channel_names = 3; // channel names for the collection
|
repeated string channel_names = 3; // channel names for the collection
|
||||||
|
@ -951,6 +1011,11 @@ service ProxyService {
|
||||||
// https://wiki.lfaidata.foundation/display/MIL/MEP+27+--+Support+Basic+Authentication
|
// https://wiki.lfaidata.foundation/display/MIL/MEP+27+--+Support+Basic+Authentication
|
||||||
|
|
||||||
message CreateCredentialRequest {
|
message CreateCredentialRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeCreateOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// username
|
// username
|
||||||
|
@ -964,6 +1029,11 @@ message CreateCredentialRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
message UpdateCredentialRequest {
|
message UpdateCredentialRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: User
|
||||||
|
object_privilege: PrivilegeUpdateUser
|
||||||
|
object_name_index: 2
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// username
|
// username
|
||||||
|
@ -979,6 +1049,11 @@ message UpdateCredentialRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
message DeleteCredentialRequest {
|
message DeleteCredentialRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeDropOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
|
@ -993,6 +1068,11 @@ message ListCredUsersResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListCredUsersRequest {
|
message ListCredUsersRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeSelectOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
}
|
}
|
||||||
|
@ -1007,6 +1087,11 @@ message UserEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
message CreateRoleRequest {
|
message CreateRoleRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeCreateOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// role
|
// role
|
||||||
|
@ -1014,6 +1099,11 @@ message CreateRoleRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
message DropRoleRequest {
|
message DropRoleRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeDropOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// role name
|
// role name
|
||||||
|
@ -1026,6 +1116,11 @@ enum OperateUserRoleType {
|
||||||
}
|
}
|
||||||
|
|
||||||
message OperateUserRoleRequest {
|
message OperateUserRoleRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeManageOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// username
|
// username
|
||||||
|
@ -1037,6 +1132,11 @@ message OperateUserRoleRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
message SelectRoleRequest {
|
message SelectRoleRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeSelectOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// role
|
// role
|
||||||
|
@ -1058,6 +1158,11 @@ message SelectRoleResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
message SelectUserRequest {
|
message SelectUserRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: User
|
||||||
|
object_privilege: PrivilegeSelectUser
|
||||||
|
object_name_index: 2
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// user
|
// user
|
||||||
|
@ -1107,6 +1212,11 @@ message GrantEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
message SelectGrantRequest {
|
message SelectGrantRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeSelectOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// grant
|
// grant
|
||||||
|
@ -1126,6 +1236,11 @@ enum OperatePrivilegeType {
|
||||||
}
|
}
|
||||||
|
|
||||||
message OperatePrivilegeRequest {
|
message OperatePrivilegeRequest {
|
||||||
|
option (common.privilege_ext_obj) = {
|
||||||
|
object_type: Global
|
||||||
|
object_privilege: PrivilegeManageOwnership
|
||||||
|
object_name_index: -1
|
||||||
|
};
|
||||||
// Not useful for now
|
// Not useful for now
|
||||||
common.MsgBase base = 1;
|
common.MsgBase base = 1;
|
||||||
// grant
|
// grant
|
||||||
|
|
|
@ -7049,326 +7049,332 @@ func init() {
|
||||||
func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) }
|
func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) }
|
||||||
|
|
||||||
var fileDescriptor_02345ba45cc0e303 = []byte{
|
var fileDescriptor_02345ba45cc0e303 = []byte{
|
||||||
// 5101 bytes of a gzipped FileDescriptorProto
|
// 5188 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3d, 0x5b, 0x6c, 0x1c, 0x47,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3d, 0x4b, 0x6c, 0x1c, 0x47,
|
||||||
0x72, 0x9c, 0x5d, 0xee, 0xab, 0xf6, 0xc1, 0x65, 0xf3, 0xb5, 0x5e, 0x49, 0x16, 0x35, 0xb6, 0xce,
|
0x76, 0xec, 0x19, 0xce, 0xef, 0xcd, 0x87, 0xc3, 0xe2, 0x6f, 0x3c, 0x92, 0x2c, 0xaa, 0x6d, 0xd9,
|
||||||
0xb4, 0x74, 0xa2, 0x2c, 0xca, 0x96, 0xcf, 0xb2, 0xcf, 0xb6, 0x24, 0x5a, 0x12, 0x61, 0x3d, 0xe8,
|
0xb4, 0xb4, 0xa6, 0x6c, 0xca, 0x96, 0xd7, 0xb2, 0x57, 0xb6, 0x24, 0x5a, 0x12, 0x61, 0x7d, 0xe8,
|
||||||
0xa1, 0xec, 0xe0, 0x62, 0x18, 0x93, 0xe1, 0x4e, 0x73, 0x39, 0xd6, 0xec, 0xcc, 0x6a, 0x66, 0x96,
|
0xa6, 0xec, 0x60, 0xe3, 0x18, 0x8d, 0xe6, 0x74, 0x71, 0xd8, 0x56, 0x4f, 0xf7, 0xa8, 0xbb, 0x87,
|
||||||
0x14, 0xfd, 0x11, 0x18, 0xb8, 0x4b, 0x72, 0x41, 0x9c, 0x3b, 0x1c, 0x72, 0xc8, 0xe1, 0x3e, 0xf2,
|
0x14, 0x9d, 0xcb, 0x02, 0x9b, 0xdd, 0x6c, 0x90, 0xcd, 0x2e, 0x36, 0xbf, 0x45, 0x0e, 0xf9, 0x20,
|
||||||
0x40, 0x90, 0x04, 0x08, 0x70, 0x09, 0x72, 0x49, 0x80, 0x00, 0xc9, 0x47, 0x12, 0xe0, 0x3e, 0x02,
|
0xd8, 0x1c, 0x02, 0x6c, 0x82, 0x38, 0x09, 0x10, 0x60, 0x73, 0xc8, 0x39, 0x46, 0xbe, 0x87, 0x20,
|
||||||
0x23, 0x48, 0x2e, 0x5f, 0x41, 0x90, 0x7c, 0x1e, 0x02, 0xe4, 0x2f, 0x01, 0xee, 0x33, 0x41, 0x82,
|
0x59, 0x24, 0xc7, 0x45, 0x80, 0x1c, 0x02, 0xe4, 0x90, 0x63, 0x82, 0x04, 0xf5, 0xe9, 0x9e, 0xea,
|
||||||
0x7e, 0xcc, 0x6c, 0xcf, 0x6c, 0xcf, 0x72, 0xc9, 0x3d, 0x99, 0x14, 0xbf, 0xb6, 0xab, 0xab, 0xbb,
|
0x9e, 0xea, 0xe1, 0x90, 0xb3, 0x32, 0x29, 0xf3, 0x34, 0xf5, 0xea, 0x55, 0xd5, 0xab, 0x57, 0xef,
|
||||||
0xab, 0xab, 0xab, 0xab, 0xaa, 0xbb, 0xaa, 0x87, 0x50, 0xe9, 0x58, 0xf6, 0x4e, 0xcf, 0x5f, 0xee,
|
0xbd, 0x7a, 0x55, 0xef, 0x55, 0x13, 0x2a, 0x1d, 0xcb, 0xde, 0xe9, 0xf9, 0xcb, 0x5d, 0xcf, 0x0d,
|
||||||
0x7a, 0x6e, 0xe0, 0xa2, 0x19, 0xb1, 0xb4, 0xcc, 0x0a, 0xcd, 0x4a, 0xcb, 0xed, 0x74, 0x5c, 0x87,
|
0x5c, 0x34, 0x23, 0x96, 0x96, 0x59, 0xa1, 0x59, 0x69, 0xb9, 0x9d, 0x8e, 0xeb, 0x30, 0x60, 0xb3,
|
||||||
0x01, 0x9b, 0x15, 0xbf, 0xb5, 0x8d, 0x3b, 0x06, 0x2f, 0x2d, 0xb6, 0x5d, 0xb7, 0x6d, 0xe3, 0x8b,
|
0xe2, 0xb7, 0xb6, 0x71, 0xc7, 0xe0, 0xa5, 0xc5, 0xb6, 0xeb, 0xb6, 0x6d, 0x7c, 0x81, 0x96, 0x36,
|
||||||
0xb4, 0xb4, 0xd9, 0xdb, 0xba, 0x68, 0x62, 0xbf, 0xe5, 0x59, 0xdd, 0xc0, 0xf5, 0x18, 0x86, 0xfa,
|
0x7b, 0x5b, 0x17, 0x4c, 0xec, 0xb7, 0x3c, 0xab, 0x1b, 0xb8, 0x1e, 0xc3, 0x50, 0x7f, 0x47, 0x01,
|
||||||
0xdb, 0x0a, 0xa0, 0x1b, 0x1e, 0x36, 0x02, 0x7c, 0xcd, 0xb6, 0x0c, 0x5f, 0xc3, 0x8f, 0x7a, 0xd8,
|
0x74, 0xdd, 0xc3, 0x46, 0x80, 0xaf, 0xda, 0x96, 0xe1, 0x6b, 0xf8, 0x61, 0x0f, 0xfb, 0x01, 0x7a,
|
||||||
0x0f, 0xd0, 0x4b, 0x30, 0xb9, 0x69, 0xf8, 0xb8, 0xa1, 0x2c, 0x2a, 0x4b, 0xe5, 0x95, 0x93, 0xcb,
|
0x09, 0x26, 0x37, 0x0d, 0x1f, 0x37, 0x94, 0x45, 0x65, 0xa9, 0xbc, 0x72, 0x72, 0x39, 0x36, 0x30,
|
||||||
0xb1, 0x81, 0xf9, 0x80, 0x77, 0xfd, 0xf6, 0x75, 0xc3, 0xc7, 0x1a, 0xc5, 0x44, 0x0b, 0x50, 0x30,
|
0x1f, 0xf0, 0x8e, 0xdf, 0xbe, 0x66, 0xf8, 0x58, 0xa3, 0x98, 0x68, 0x01, 0x0a, 0xe6, 0xa6, 0xee,
|
||||||
0x37, 0x75, 0xc7, 0xe8, 0xe0, 0x46, 0x66, 0x51, 0x59, 0x2a, 0x69, 0x79, 0x73, 0xf3, 0x9e, 0xd1,
|
0x18, 0x1d, 0xdc, 0xc8, 0x2c, 0x2a, 0x4b, 0x25, 0x2d, 0x6f, 0x6e, 0xde, 0x35, 0x3a, 0x18, 0x3d,
|
||||||
0xc1, 0xe8, 0x05, 0x98, 0x6a, 0xb9, 0xb6, 0x8d, 0x5b, 0x81, 0xe5, 0x3a, 0x0c, 0x21, 0x4b, 0x11,
|
0x0f, 0x53, 0x2d, 0xd7, 0xb6, 0x71, 0x2b, 0xb0, 0x5c, 0x87, 0x21, 0x64, 0x29, 0x42, 0xad, 0x0f,
|
||||||
0x6a, 0x7d, 0x30, 0x45, 0x9c, 0x85, 0x9c, 0x41, 0x68, 0x68, 0x4c, 0xd2, 0x6a, 0x56, 0x50, 0x7d,
|
0xa6, 0x88, 0xb3, 0x90, 0x33, 0x08, 0x0d, 0x8d, 0x49, 0x5a, 0xcd, 0x0a, 0xaa, 0x0f, 0xf5, 0x55,
|
||||||
0xa8, 0xaf, 0x7a, 0x6e, 0xf7, 0x49, 0x51, 0x17, 0x0d, 0x9a, 0x15, 0x07, 0xfd, 0x2d, 0x05, 0xa6,
|
0xcf, 0xed, 0x3e, 0x2e, 0xea, 0xa2, 0x41, 0xb3, 0xe2, 0xa0, 0xbf, 0xad, 0xc0, 0xf4, 0x55, 0x3b,
|
||||||
0xaf, 0xd9, 0x01, 0xf6, 0x8e, 0x29, 0x53, 0x7e, 0x90, 0x81, 0x05, 0xb6, 0x6a, 0x37, 0x22, 0xf4,
|
0xc0, 0xde, 0x31, 0x65, 0xca, 0x0f, 0x33, 0xb0, 0xc0, 0x56, 0xed, 0x7a, 0x84, 0x7e, 0x94, 0x54,
|
||||||
0xa3, 0xa4, 0x72, 0x1e, 0xf2, 0x4c, 0xee, 0x28, 0x99, 0x15, 0x8d, 0x97, 0xd0, 0x29, 0x00, 0x7f,
|
0xce, 0x43, 0x9e, 0xc9, 0x1d, 0x25, 0xb3, 0xa2, 0xf1, 0x12, 0x3a, 0x05, 0xe0, 0x6f, 0x1b, 0x9e,
|
||||||
0xdb, 0xf0, 0x4c, 0x5f, 0x77, 0x7a, 0x9d, 0x46, 0x6e, 0x51, 0x59, 0xca, 0x69, 0x25, 0x06, 0xb9,
|
0xe9, 0xeb, 0x4e, 0xaf, 0xd3, 0xc8, 0x2d, 0x2a, 0x4b, 0x39, 0xad, 0xc4, 0x20, 0x77, 0x7b, 0x1d,
|
||||||
0xd7, 0xeb, 0x20, 0x0d, 0xa6, 0x5b, 0xae, 0xe3, 0x5b, 0x7e, 0x80, 0x9d, 0xd6, 0x9e, 0x6e, 0xe3,
|
0xa4, 0xc1, 0x74, 0xcb, 0x75, 0x7c, 0xcb, 0x0f, 0xb0, 0xd3, 0xda, 0xd3, 0x6d, 0xbc, 0x83, 0xed,
|
||||||
0x1d, 0x6c, 0x37, 0xf2, 0x8b, 0xca, 0x52, 0x6d, 0xe5, 0xac, 0x94, 0xee, 0x1b, 0x7d, 0xec, 0x3b,
|
0x46, 0x7e, 0x51, 0x59, 0xaa, 0xad, 0x9c, 0x95, 0xd2, 0x7d, 0xbd, 0x8f, 0x7d, 0x9b, 0x20, 0x6b,
|
||||||
0x04, 0x59, 0xab, 0xb7, 0x12, 0x90, 0xab, 0xe8, 0xf3, 0x37, 0xa7, 0x8a, 0x4a, 0x5d, 0x69, 0xfc,
|
0xf5, 0x56, 0x02, 0x72, 0x19, 0x7d, 0x76, 0x65, 0xaa, 0xa8, 0xd4, 0x95, 0xc6, 0xff, 0x85, 0x7f,
|
||||||
0x5f, 0xf8, 0xa7, 0xa8, 0xbf, 0xa3, 0xc0, 0x1c, 0x11, 0xa2, 0x63, 0xc1, 0xac, 0x90, 0xc2, 0x8c,
|
0x8a, 0xfa, 0xbb, 0x0a, 0xcc, 0x11, 0x21, 0x3a, 0x16, 0xcc, 0x0a, 0x29, 0xcc, 0x88, 0x14, 0xfe,
|
||||||
0x48, 0xe1, 0x1f, 0x29, 0x30, 0x7b, 0xdb, 0xf0, 0x8f, 0xc7, 0x6a, 0x9e, 0x02, 0x08, 0xac, 0x0e,
|
0xa1, 0x02, 0xb3, 0xb7, 0x0c, 0xff, 0x78, 0xac, 0xe6, 0x29, 0x80, 0xc0, 0xea, 0x60, 0xdd, 0x0f,
|
||||||
0xd6, 0xfd, 0xc0, 0xe8, 0x74, 0xe9, 0x8a, 0x4e, 0x6a, 0x25, 0x02, 0xd9, 0x20, 0x00, 0xf5, 0x6b,
|
0x8c, 0x4e, 0x97, 0xae, 0xe8, 0xa4, 0x56, 0x22, 0x90, 0x0d, 0x02, 0x50, 0xbf, 0x0a, 0x95, 0x6b,
|
||||||
0x50, 0xb9, 0xee, 0xba, 0xb6, 0x86, 0xfd, 0xae, 0xeb, 0xf8, 0x18, 0x5d, 0x86, 0xbc, 0x1f, 0x18,
|
0xae, 0x6b, 0x6b, 0xd8, 0xef, 0xba, 0x8e, 0x8f, 0xd1, 0x45, 0xc8, 0xfb, 0x81, 0x11, 0xf4, 0x7c,
|
||||||
0x41, 0xcf, 0xe7, 0x44, 0x9e, 0x90, 0x12, 0xb9, 0x41, 0x51, 0x34, 0x8e, 0x4a, 0xe4, 0x7a, 0xc7,
|
0x4e, 0xe4, 0x09, 0x29, 0x91, 0x1b, 0x14, 0x45, 0xe3, 0xa8, 0x44, 0xae, 0x77, 0x0c, 0xbb, 0xc7,
|
||||||
0xb0, 0x7b, 0x8c, 0xc6, 0xa2, 0xc6, 0x0a, 0xea, 0x87, 0x50, 0xdb, 0x08, 0x3c, 0xcb, 0x69, 0xff,
|
0x68, 0x2c, 0x6a, 0xac, 0xa0, 0x7e, 0x08, 0xb5, 0x8d, 0xc0, 0xb3, 0x9c, 0xf6, 0x4f, 0xb1, 0xf3,
|
||||||
0x0c, 0x3b, 0x2f, 0x85, 0x9d, 0xff, 0x87, 0x02, 0xcf, 0xac, 0x52, 0xfd, 0xb7, 0x79, 0x4c, 0xb6,
|
0x52, 0xd8, 0xf9, 0xbf, 0x2b, 0xf0, 0xd4, 0x2a, 0xb5, 0x7f, 0x9b, 0xc7, 0x44, 0x6d, 0x54, 0xa8,
|
||||||
0x8d, 0x0a, 0x95, 0x3e, 0x64, 0x6d, 0x95, 0xb2, 0x3a, 0xab, 0xc5, 0x60, 0x89, 0xc5, 0xc8, 0x25,
|
0xf4, 0x21, 0x6b, 0xab, 0x94, 0xd5, 0x59, 0x2d, 0x06, 0x4b, 0x2c, 0x46, 0x2e, 0xb1, 0x18, 0xa1,
|
||||||
0x16, 0x23, 0x14, 0xa6, 0xac, 0x28, 0x4c, 0x9f, 0xe6, 0xa0, 0x29, 0x9b, 0xe8, 0x38, 0x2c, 0xfd,
|
0x30, 0x65, 0x45, 0x61, 0xfa, 0x5a, 0x0e, 0x9a, 0xb2, 0x89, 0x8e, 0xc3, 0xd2, 0xaf, 0x44, 0x1a,
|
||||||
0x6a, 0xb4, 0xc3, 0x33, 0xb4, 0x51, 0x62, 0x7f, 0x72, 0xab, 0xd3, 0x1f, 0x6d, 0x83, 0x02, 0x22,
|
0x9e, 0xa1, 0x8d, 0x12, 0xfa, 0xc9, 0x77, 0x9d, 0xfe, 0x68, 0x1b, 0x14, 0x10, 0x19, 0x82, 0xe4,
|
||||||
0x45, 0x90, 0x9c, 0x69, 0x56, 0x32, 0xd3, 0x15, 0x98, 0xdb, 0xb1, 0xbc, 0xa0, 0x67, 0xd8, 0x7a,
|
0x4c, 0xb3, 0x92, 0x99, 0xae, 0xc0, 0xdc, 0x8e, 0xe5, 0x05, 0x3d, 0xc3, 0xd6, 0x5b, 0xdb, 0x86,
|
||||||
0x6b, 0xdb, 0x70, 0x1c, 0x6c, 0x53, 0xde, 0x11, 0xd5, 0x97, 0x5d, 0x2a, 0x69, 0x33, 0xbc, 0xf2,
|
0xe3, 0x60, 0x9b, 0xf2, 0x8e, 0x98, 0xbe, 0xec, 0x52, 0x49, 0x9b, 0xe1, 0x95, 0xd7, 0x59, 0x1d,
|
||||||
0x06, 0xab, 0x23, 0x0c, 0xf4, 0xd1, 0xcb, 0x30, 0xdf, 0xdd, 0xde, 0xf3, 0xad, 0xd6, 0x40, 0xa3,
|
0x61, 0xa0, 0x8f, 0x5e, 0x81, 0xf9, 0xee, 0xf6, 0x9e, 0x6f, 0xb5, 0x06, 0x1a, 0xe5, 0x68, 0xa3,
|
||||||
0x1c, 0x6d, 0x34, 0x1b, 0xd6, 0xc6, 0x5a, 0x9d, 0x87, 0xe9, 0x16, 0xd5, 0x9e, 0xa6, 0x4e, 0x38,
|
0xd9, 0xb0, 0x36, 0xd6, 0xea, 0x3c, 0x4c, 0xb7, 0xa8, 0xf5, 0x34, 0x75, 0xc2, 0x49, 0xc6, 0xda,
|
||||||
0xc9, 0x58, 0x9b, 0xa7, 0xac, 0xad, 0xf3, 0x8a, 0x07, 0x21, 0x9c, 0x90, 0x15, 0x22, 0xf7, 0x82,
|
0x3c, 0x65, 0x6d, 0x9d, 0x57, 0xdc, 0x0f, 0xe1, 0x84, 0xac, 0x10, 0xb9, 0x17, 0xb4, 0x84, 0x06,
|
||||||
0x96, 0xd0, 0xa0, 0x40, 0x1b, 0xcc, 0xf0, 0xca, 0xf7, 0x83, 0x56, 0xbf, 0x4d, 0x5c, 0xef, 0x15,
|
0x05, 0xda, 0x60, 0x86, 0x57, 0xbe, 0x1f, 0xb4, 0xfa, 0x6d, 0xe2, 0x76, 0xaf, 0x98, 0xb4, 0x7b,
|
||||||
0x93, 0x7a, 0xaf, 0x01, 0x05, 0xaa, 0xc7, 0xb1, 0xdf, 0x28, 0x51, 0x32, 0xc3, 0x22, 0x5a, 0x83,
|
0x0d, 0x28, 0x50, 0x3b, 0x8e, 0xfd, 0x46, 0x89, 0x92, 0x19, 0x16, 0xd1, 0x1a, 0x4c, 0xf9, 0x81,
|
||||||
0x29, 0x3f, 0x30, 0xbc, 0x40, 0xef, 0xba, 0xbe, 0x45, 0xf8, 0xe2, 0x37, 0x60, 0x31, 0xbb, 0x54,
|
0xe1, 0x05, 0x7a, 0xd7, 0xf5, 0x2d, 0xc2, 0x17, 0xbf, 0x01, 0x8b, 0xd9, 0xa5, 0xf2, 0xca, 0xa2,
|
||||||
0x5e, 0x59, 0x94, 0x2e, 0xd2, 0xbb, 0x78, 0x6f, 0xd5, 0x08, 0x8c, 0x75, 0xc3, 0xf2, 0xb4, 0x1a,
|
0x74, 0x91, 0xde, 0xc5, 0x7b, 0xab, 0x46, 0x60, 0xac, 0x1b, 0x96, 0xa7, 0xd5, 0x68, 0xc3, 0xf5,
|
||||||
0x6d, 0xb8, 0x1e, 0xb6, 0x93, 0x2b, 0xd7, 0xf2, 0x58, 0xca, 0x55, 0x26, 0xd9, 0x15, 0x99, 0x64,
|
0xb0, 0x9d, 0xdc, 0xb8, 0x96, 0xc7, 0x32, 0xae, 0x32, 0xc9, 0xae, 0xc8, 0x24, 0x5b, 0xfd, 0x4b,
|
||||||
0xab, 0x7f, 0xad, 0xc0, 0xdc, 0x1d, 0xd7, 0x30, 0x8f, 0xc7, 0x3e, 0x3b, 0x0b, 0x35, 0x0f, 0x77,
|
0x05, 0xe6, 0x6e, 0xbb, 0x86, 0x79, 0x3c, 0xf4, 0xec, 0x2c, 0xd4, 0x3c, 0xdc, 0xb5, 0xad, 0x96,
|
||||||
0x6d, 0xab, 0x65, 0x90, 0xf5, 0xd8, 0xc4, 0x1e, 0xdd, 0x69, 0x39, 0xad, 0xca, 0xa1, 0xf7, 0x28,
|
0x41, 0xd6, 0x63, 0x13, 0x7b, 0x54, 0xd3, 0x72, 0x5a, 0x95, 0x43, 0xef, 0x52, 0xe0, 0xe5, 0xc2,
|
||||||
0xf0, 0x6a, 0xe1, 0xf3, 0x37, 0x27, 0xeb, 0xb9, 0x46, 0x56, 0xfd, 0x9e, 0x02, 0x0d, 0x0d, 0xdb,
|
0x67, 0x57, 0x26, 0xeb, 0xb9, 0x46, 0x56, 0xfd, 0xbe, 0x02, 0x0d, 0x0d, 0xdb, 0xd8, 0xf0, 0x8f,
|
||||||
0xd8, 0xf0, 0x8f, 0x87, 0xa2, 0x60, 0x94, 0xe5, 0x1b, 0x59, 0xf5, 0x27, 0x0a, 0xcc, 0xde, 0xc2,
|
0x87, 0xa1, 0x60, 0x94, 0xe5, 0x1b, 0x59, 0xf5, 0x3f, 0x15, 0x98, 0xbd, 0x89, 0x03, 0xa2, 0x9c,
|
||||||
0x01, 0xd9, 0x9c, 0x96, 0x1f, 0x58, 0xad, 0x23, 0xf5, 0x4d, 0x5e, 0x80, 0xa9, 0xae, 0xe1, 0x05,
|
0x96, 0x1f, 0x58, 0xad, 0x23, 0xf5, 0x4d, 0x9e, 0x87, 0xa9, 0xae, 0xe1, 0x05, 0x56, 0x84, 0x17,
|
||||||
0x56, 0x84, 0x17, 0x6e, 0xd5, 0x5a, 0x04, 0x66, 0xfb, 0xed, 0x22, 0xcc, 0xb4, 0x7b, 0x86, 0x67,
|
0xaa, 0x6a, 0x2d, 0x02, 0x33, 0x7d, 0xbb, 0x00, 0x33, 0xed, 0x9e, 0xe1, 0x19, 0x4e, 0x80, 0xb1,
|
||||||
0x38, 0x01, 0xc6, 0xc2, 0x06, 0x62, 0xca, 0x0c, 0x45, 0x55, 0xd1, 0xfe, 0x51, 0x7f, 0x49, 0x81,
|
0xa0, 0x40, 0xcc, 0x98, 0xa1, 0xa8, 0x2a, 0xd2, 0x1f, 0x36, 0x5f, 0x68, 0x64, 0xd5, 0x6f, 0x28,
|
||||||
0xb9, 0xc4, 0x34, 0xc7, 0x51, 0x5e, 0xaf, 0x42, 0x8e, 0xfc, 0xf2, 0x1b, 0x19, 0xba, 0x97, 0xce,
|
0x30, 0x97, 0x98, 0xef, 0x38, 0x56, 0xec, 0x35, 0xc8, 0x91, 0x5f, 0x7e, 0x23, 0x43, 0x95, 0xea,
|
||||||
0xa4, 0xed, 0xa5, 0x0f, 0x88, 0x9d, 0xa0, 0x9b, 0x89, 0xe1, 0xab, 0xdf, 0x55, 0xe0, 0xd9, 0x5b,
|
0x4c, 0x9a, 0x52, 0x7d, 0x40, 0x36, 0x0c, 0xaa, 0x55, 0x0c, 0x9f, 0x38, 0x84, 0x4f, 0xdf, 0xc4,
|
||||||
0x38, 0x10, 0xd4, 0xda, 0x71, 0x60, 0xbc, 0xfa, 0x6d, 0x05, 0x4e, 0xa7, 0x92, 0x75, 0x24, 0x8c,
|
0x81, 0x60, 0xdf, 0x8e, 0xc3, 0x0a, 0xf4, 0xf9, 0xf4, 0x5d, 0x05, 0x4e, 0xa7, 0xd2, 0x77, 0x24,
|
||||||
0xfa, 0xa9, 0x02, 0xf3, 0x1b, 0xdb, 0xee, 0x6e, 0x9f, 0xa4, 0x27, 0xc1, 0xa0, 0xb8, 0x2d, 0xcc,
|
0x1c, 0xfb, 0x6f, 0x05, 0xe6, 0x37, 0xb6, 0xdd, 0xdd, 0x3e, 0x49, 0x8f, 0x83, 0x53, 0xf1, 0xdd,
|
||||||
0x26, 0x6c, 0x21, 0xba, 0x04, 0x93, 0xc1, 0x5e, 0x17, 0xd3, 0xcd, 0x5d, 0x5b, 0x39, 0xb5, 0x2c,
|
0x31, 0x9b, 0xd8, 0x1d, 0xd1, 0xcb, 0x30, 0x19, 0xec, 0x75, 0x31, 0x55, 0xf7, 0xda, 0xca, 0xa9,
|
||||||
0x39, 0x2d, 0x2d, 0x13, 0x22, 0x1f, 0xec, 0x75, 0xb1, 0x46, 0x51, 0xd1, 0x8b, 0x50, 0x4f, 0xb0,
|
0x65, 0xc9, 0xf9, 0x69, 0x99, 0x10, 0x79, 0x7f, 0xaf, 0x8b, 0x35, 0x8a, 0x8a, 0x5e, 0x80, 0x7a,
|
||||||
0x3c, 0xb4, 0x1c, 0x53, 0x71, 0x9e, 0xfb, 0xa1, 0xa5, 0x9d, 0x14, 0x2d, 0xed, 0x7f, 0x65, 0x60,
|
0x82, 0xf7, 0xe1, 0x5e, 0x32, 0x15, 0x67, 0xbe, 0x1f, 0xee, 0xbd, 0x93, 0xe2, 0xde, 0xfb, 0x5f,
|
||||||
0x61, 0x60, 0xda, 0xe3, 0x2c, 0x80, 0x8c, 0x9e, 0x8c, 0x94, 0x1e, 0xa2, 0xd4, 0x04, 0x54, 0xcb,
|
0x19, 0x58, 0x18, 0x98, 0xf6, 0x38, 0x0b, 0x20, 0xa3, 0x27, 0x23, 0xa5, 0x87, 0x98, 0x39, 0x01,
|
||||||
0x24, 0x47, 0x98, 0xec, 0x52, 0x56, 0xab, 0x0a, 0x46, 0xd5, 0xf4, 0xd1, 0x05, 0x40, 0x03, 0xb6,
|
0xd5, 0x32, 0xc9, 0xa1, 0x26, 0xbb, 0x94, 0xd5, 0xaa, 0xc2, 0x36, 0x6b, 0xfa, 0xe8, 0x45, 0x40,
|
||||||
0x8e, 0xed, 0xd3, 0x49, 0x6d, 0x3a, 0x69, 0xec, 0xa8, 0x41, 0x95, 0x5a, 0x3b, 0xc6, 0x96, 0x49,
|
0x03, 0xbb, 0x1f, 0xd3, 0xdc, 0x49, 0x6d, 0x3a, 0xb9, 0xfd, 0xd1, 0x2d, 0x56, 0xba, 0xff, 0x31,
|
||||||
0x6d, 0x56, 0x62, 0xee, 0x7c, 0x74, 0x09, 0x66, 0x2d, 0xe7, 0x2e, 0xee, 0xb8, 0xde, 0x9e, 0xde,
|
0xb6, 0x4c, 0x6a, 0xb3, 0x92, 0x0d, 0xd0, 0x47, 0x2f, 0xc3, 0xac, 0xe5, 0xdc, 0xc1, 0x1d, 0xd7,
|
||||||
0xc5, 0x5e, 0x0b, 0x3b, 0x81, 0xd1, 0xc6, 0x7e, 0x23, 0x4f, 0x29, 0x9a, 0x09, 0xeb, 0xd6, 0xfb,
|
0xdb, 0xd3, 0xbb, 0xd8, 0x6b, 0x61, 0x27, 0x30, 0xda, 0xd8, 0x6f, 0xe4, 0x29, 0x45, 0x33, 0x61,
|
||||||
0x55, 0xe8, 0x0a, 0x2c, 0x3c, 0xea, 0x61, 0x6f, 0x4f, 0xf7, 0xb1, 0xb7, 0x63, 0xb5, 0xb0, 0x6e,
|
0xdd, 0x7a, 0xbf, 0x0a, 0x5d, 0x82, 0x85, 0x87, 0x3d, 0xec, 0xed, 0xe9, 0x3e, 0xf6, 0x76, 0xac,
|
||||||
0xec, 0x18, 0x96, 0x6d, 0x6c, 0xda, 0xb8, 0x51, 0x58, 0xcc, 0x2e, 0x15, 0xb5, 0x39, 0x5a, 0xbd,
|
0x16, 0xd6, 0x8d, 0x1d, 0xc3, 0xb2, 0x8d, 0x4d, 0x1b, 0x37, 0x0a, 0x8b, 0xd9, 0xa5, 0xa2, 0x36,
|
||||||
0xc1, 0x6a, 0xaf, 0x85, 0x95, 0xea, 0x9f, 0x2b, 0x30, 0xcf, 0x8e, 0x3e, 0xeb, 0xa1, 0x92, 0x39,
|
0x47, 0xab, 0x37, 0x58, 0xed, 0xd5, 0xb0, 0x52, 0xfd, 0x33, 0x05, 0xe6, 0xd9, 0x61, 0x68, 0x3d,
|
||||||
0x62, 0xd3, 0x12, 0xd7, 0x81, 0xfc, 0xa0, 0x56, 0x8d, 0xa9, 0x40, 0xf5, 0x87, 0x0a, 0xcc, 0x92,
|
0x34, 0x3b, 0x47, 0xbc, 0xd9, 0xc4, 0xad, 0x22, 0x3f, 0xba, 0x55, 0x63, 0x46, 0x51, 0xfd, 0x54,
|
||||||
0x13, 0xc8, 0xd3, 0x44, 0xf3, 0x9f, 0x2a, 0x30, 0x73, 0xdb, 0xf0, 0x9f, 0x26, 0x92, 0xff, 0x8d,
|
0x81, 0x59, 0x72, 0x26, 0x79, 0x92, 0x68, 0xfe, 0x13, 0x05, 0x66, 0x6e, 0x19, 0xfe, 0x93, 0x44,
|
||||||
0xbb, 0x1d, 0x11, 0xcd, 0x4f, 0x87, 0x7d, 0x1c, 0xf4, 0x4f, 0x72, 0x12, 0xff, 0x44, 0xfd, 0xcb,
|
0xf2, 0xbf, 0x72, 0x47, 0x24, 0xa2, 0xf9, 0xc9, 0xd8, 0x31, 0x07, 0x3d, 0x96, 0x9c, 0xc4, 0x63,
|
||||||
0xbe, 0x5b, 0xf2, 0x74, 0x4d, 0x50, 0xfd, 0x2b, 0x05, 0x4e, 0xdd, 0xc2, 0x41, 0x44, 0xf5, 0xf1,
|
0x51, 0xff, 0xa2, 0xef, 0xa8, 0x3c, 0x59, 0x13, 0x54, 0x7f, 0xa4, 0xc0, 0xa9, 0x9b, 0x38, 0x88,
|
||||||
0xf0, 0x5f, 0x46, 0x14, 0xaa, 0x6f, 0x31, 0x27, 0x40, 0x4a, 0xfc, 0x91, 0x18, 0xdb, 0x5f, 0xcb,
|
0xa8, 0x3e, 0x1e, 0x1e, 0xcd, 0x88, 0x42, 0xf5, 0x1d, 0xe6, 0x0d, 0x48, 0x89, 0x3f, 0x92, 0xcd,
|
||||||
0xc0, 0x1c, 0xb1, 0x3a, 0xc7, 0x43, 0x08, 0x46, 0x39, 0xc4, 0x4a, 0x04, 0x25, 0x27, 0xdd, 0x09,
|
0xf6, 0x97, 0x33, 0x30, 0x47, 0x76, 0x9d, 0xe3, 0x21, 0x04, 0xa3, 0x1c, 0x6b, 0x25, 0x82, 0x92,
|
||||||
0xa1, 0x09, 0xcf, 0x8f, 0x6c, 0xc2, 0xd5, 0x3f, 0xcb, 0x30, 0xd7, 0x43, 0xe4, 0xc6, 0x38, 0xcb,
|
0x93, 0x6a, 0x42, 0xb8, 0x85, 0xe7, 0x47, 0xde, 0xc2, 0xd5, 0x3f, 0xcd, 0x30, 0xd7, 0x43, 0xe4,
|
||||||
0x22, 0xa1, 0x35, 0x23, 0xa5, 0x55, 0x85, 0x4a, 0x04, 0x59, 0x5b, 0x0d, 0xcd, 0x6f, 0x0c, 0x76,
|
0xc6, 0x38, 0xcb, 0x22, 0xa1, 0x35, 0x23, 0xa5, 0x55, 0x85, 0x4a, 0x04, 0x59, 0x5b, 0x0d, 0xb7,
|
||||||
0x5c, 0xad, 0xaf, 0xfa, 0x99, 0x02, 0xf3, 0xe1, 0x15, 0xc1, 0x06, 0x6e, 0x77, 0xb0, 0x13, 0x1c,
|
0xdf, 0x18, 0xec, 0xb8, 0xee, 0xbe, 0xea, 0xb7, 0x15, 0x98, 0x0f, 0x2f, 0x0d, 0x36, 0x70, 0xbb,
|
||||||
0x5e, 0x86, 0x92, 0x12, 0x90, 0x91, 0x48, 0xc0, 0x49, 0x28, 0xf9, 0x6c, 0x9c, 0xe8, 0xf4, 0xdf,
|
0x83, 0x9d, 0xe0, 0xf0, 0x32, 0x94, 0x94, 0x80, 0x8c, 0x44, 0x02, 0x4e, 0x42, 0xc9, 0x67, 0xe3,
|
||||||
0x07, 0xa8, 0x7f, 0xa3, 0xc0, 0xc2, 0x00, 0x39, 0xe3, 0x2c, 0x62, 0x03, 0x0a, 0x96, 0x63, 0xe2,
|
0x44, 0xf7, 0x01, 0x7d, 0x80, 0xfa, 0x57, 0x0a, 0x2c, 0x0c, 0x90, 0x33, 0xce, 0x22, 0x36, 0xa0,
|
||||||
0xc7, 0x11, 0x35, 0x61, 0x91, 0xd4, 0x6c, 0xf6, 0x2c, 0xdb, 0x8c, 0xc8, 0x08, 0x8b, 0xe8, 0x0c,
|
0x60, 0x39, 0x26, 0x7e, 0x14, 0x51, 0x13, 0x16, 0x49, 0xcd, 0x66, 0xcf, 0xb2, 0xcd, 0x88, 0x8c,
|
||||||
0x54, 0xb0, 0x43, 0x7c, 0x0c, 0x9d, 0xe2, 0x52, 0x41, 0x2e, 0x6a, 0x65, 0x06, 0x5b, 0x23, 0x20,
|
0xb0, 0x88, 0xce, 0x40, 0x05, 0x3b, 0xc4, 0xc7, 0xd0, 0x29, 0x2e, 0x15, 0xe4, 0xa2, 0x56, 0x66,
|
||||||
0xd2, 0x78, 0xcb, 0xc2, 0xb4, 0x71, 0x8e, 0x35, 0xe6, 0x45, 0xf5, 0xd7, 0x15, 0x98, 0x21, 0x52,
|
0xb0, 0x35, 0x02, 0x22, 0x8d, 0xb7, 0x2c, 0x4c, 0x1b, 0xe7, 0x58, 0x63, 0x5e, 0x54, 0x7f, 0x45,
|
||||||
0xc8, 0xa9, 0xf7, 0x9f, 0x2c, 0x37, 0x17, 0xa1, 0x2c, 0x88, 0x19, 0x9f, 0x88, 0x08, 0x52, 0x1f,
|
0x81, 0x19, 0x22, 0x85, 0x9c, 0x7a, 0xff, 0xf1, 0x72, 0x73, 0x11, 0xca, 0x82, 0x98, 0xf1, 0x89,
|
||||||
0xc2, 0x6c, 0x9c, 0x9c, 0x71, 0xb8, 0xf9, 0x2c, 0x40, 0xb4, 0x56, 0x6c, 0x37, 0x64, 0x35, 0x01,
|
0x88, 0x20, 0xf5, 0x01, 0xcc, 0xc6, 0xc9, 0x19, 0x87, 0x9b, 0x4f, 0x03, 0x44, 0x6b, 0xc5, 0xb4,
|
||||||
0xa2, 0x7e, 0x96, 0x09, 0x83, 0x08, 0x94, 0x4d, 0x47, 0x7c, 0x77, 0x49, 0x97, 0x44, 0xd4, 0xe7,
|
0x21, 0xab, 0x09, 0x10, 0xf5, 0x37, 0x32, 0x61, 0x58, 0x81, 0xb2, 0xe9, 0x88, 0x6f, 0x33, 0xe9,
|
||||||
0x25, 0x0a, 0xa1, 0xd5, 0xab, 0x50, 0xc1, 0x8f, 0x03, 0xcf, 0xd0, 0xbb, 0x86, 0x67, 0x74, 0xd8,
|
0x92, 0x88, 0xf6, 0xbc, 0x44, 0x21, 0xb4, 0x7a, 0x15, 0x2a, 0xf8, 0x51, 0xe0, 0x19, 0x7a, 0xd7,
|
||||||
0xb6, 0x1a, 0x49, 0xf5, 0x96, 0x69, 0xb3, 0x75, 0xda, 0x8a, 0x0c, 0x42, 0x45, 0x84, 0x0d, 0x92,
|
0xf0, 0x8c, 0x0e, 0x53, 0xab, 0x91, 0x4c, 0x6f, 0x99, 0x36, 0x5b, 0xa7, 0xad, 0xc8, 0x20, 0x54,
|
||||||
0x67, 0x83, 0x50, 0x08, 0x35, 0x18, 0x7f, 0x4f, 0x9c, 0x3d, 0x2e, 0xcd, 0xc7, 0x9d, 0x21, 0xf1,
|
0x44, 0xd8, 0x20, 0x79, 0x36, 0x08, 0x85, 0xf4, 0xcf, 0x69, 0xe5, 0x46, 0x56, 0xfd, 0x47, 0xe2,
|
||||||
0xa9, 0xe4, 0x92, 0x53, 0xf9, 0x03, 0x05, 0xea, 0x74, 0x0a, 0xab, 0x3c, 0x70, 0x64, 0xb9, 0x4e,
|
0xf5, 0x71, 0xb1, 0x3e, 0xee, 0x9c, 0x89, 0xcf, 0x29, 0x27, 0x9d, 0x53, 0xa5, 0x91, 0x55, 0xff,
|
||||||
0xa2, 0x8d, 0x92, 0x68, 0x33, 0x64, 0xef, 0xbd, 0x06, 0x79, 0xce, 0xf7, 0xec, 0xa8, 0x7c, 0xe7,
|
0x40, 0x81, 0x3a, 0x9d, 0xcb, 0x2a, 0x0f, 0x2e, 0x59, 0xae, 0x93, 0x68, 0xac, 0x24, 0x1a, 0x0f,
|
||||||
0x0d, 0xf6, 0x99, 0x86, 0xfa, 0x7b, 0x0a, 0xcc, 0x25, 0x58, 0x3e, 0x8e, 0xc0, 0x3f, 0x00, 0xc4,
|
0xd1, 0xc6, 0xd7, 0x21, 0xcf, 0x57, 0x22, 0x3b, 0xea, 0x4a, 0xf0, 0x06, 0xfb, 0xcc, 0x47, 0xfd,
|
||||||
0x66, 0x68, 0xf6, 0xa7, 0x1d, 0xda, 0xe9, 0xb3, 0x52, 0xa3, 0x94, 0x64, 0x92, 0x36, 0x6d, 0x25,
|
0x7d, 0x05, 0xe6, 0x12, 0xbc, 0x1f, 0x47, 0x05, 0xee, 0x03, 0x62, 0x33, 0x34, 0xfb, 0xd3, 0x0e,
|
||||||
0x20, 0xbe, 0xfa, 0x63, 0x05, 0x4e, 0xde, 0xc2, 0x01, 0x45, 0xbd, 0x4e, 0x94, 0xce, 0xba, 0xe7,
|
0x77, 0xee, 0xb3, 0xd2, 0x6d, 0x2a, 0xc9, 0x24, 0x6d, 0xda, 0x4a, 0x40, 0x7c, 0xf5, 0xc7, 0x0a,
|
||||||
0xb6, 0x3d, 0xec, 0xfb, 0x4f, 0xaf, 0x7c, 0xfc, 0x26, 0x73, 0xec, 0x64, 0x53, 0x1a, 0x87, 0xff,
|
0x9c, 0xbc, 0x89, 0x03, 0x8a, 0x7a, 0x8d, 0x98, 0xa1, 0x75, 0xcf, 0x6d, 0x7b, 0xd8, 0xf7, 0xbf,
|
||||||
0x67, 0xa0, 0x42, 0xc7, 0xc0, 0xa6, 0xee, 0xb9, 0xbb, 0x3e, 0x97, 0xa3, 0x32, 0x87, 0x69, 0xee,
|
0x00, 0x82, 0xf2, 0x9b, 0xcc, 0xe7, 0x93, 0xcd, 0x6d, 0x9c, 0x85, 0x38, 0x03, 0x15, 0x3a, 0x18,
|
||||||
0x2e, 0x15, 0x88, 0xc0, 0x0d, 0x0c, 0x9b, 0x21, 0x70, 0x8b, 0x42, 0x21, 0xa4, 0x9a, 0xee, 0xc1,
|
0x36, 0x75, 0xcf, 0xdd, 0xf5, 0xb9, 0x40, 0x95, 0x39, 0x4c, 0x73, 0x77, 0xa9, 0x64, 0x04, 0x6e,
|
||||||
0x90, 0x30, 0xd2, 0x39, 0x7e, 0x7a, 0x79, 0xfc, 0xfb, 0xec, 0x32, 0x4c, 0x9c, 0xca, 0x38, 0xbc,
|
0x60, 0xd8, 0x0c, 0x81, 0x6f, 0x36, 0x14, 0x42, 0xaa, 0xa9, 0x56, 0x86, 0x84, 0x91, 0xce, 0xf1,
|
||||||
0x7d, 0x85, 0xb9, 0x9d, 0x6c, 0x32, 0xb5, 0x95, 0xd3, 0xd2, 0x36, 0xc2, 0x60, 0x0c, 0x1b, 0x9d,
|
0x17, 0x80, 0xd9, 0x3f, 0x60, 0x37, 0x67, 0xe2, 0x9c, 0xc6, 0x61, 0xf2, 0xab, 0xcc, 0x35, 0x65,
|
||||||
0x86, 0xf2, 0x96, 0x61, 0xd9, 0xba, 0x87, 0x0d, 0xdf, 0x75, 0xf8, 0x44, 0x81, 0x80, 0x34, 0x0a,
|
0xb3, 0xaa, 0xad, 0x9c, 0x96, 0xb6, 0x11, 0x06, 0x63, 0xd8, 0xe8, 0x34, 0x94, 0xb7, 0x0c, 0xcb,
|
||||||
0x51, 0x7f, 0xa4, 0xb0, 0x48, 0xed, 0x53, 0xae, 0xf1, 0x7e, 0x90, 0x81, 0xea, 0x9a, 0xe3, 0x63,
|
0xd6, 0x3d, 0x6c, 0xf8, 0xae, 0xc3, 0x67, 0x0c, 0x04, 0xa4, 0x51, 0x88, 0xfa, 0xb7, 0x0a, 0x8b,
|
||||||
0x2f, 0x38, 0xfe, 0x47, 0x13, 0xf4, 0x16, 0x94, 0xe9, 0xc4, 0x7c, 0xdd, 0x34, 0x02, 0x83, 0x5b,
|
0xef, 0x7e, 0x11, 0x8c, 0x61, 0xb5, 0x91, 0x55, 0x7f, 0x98, 0x81, 0xea, 0x9a, 0xe3, 0x63, 0x2f,
|
||||||
0xb3, 0x67, 0xa5, 0xa1, 0x99, 0x9b, 0x04, 0x6f, 0xd5, 0x08, 0x0c, 0x8d, 0x71, 0xc7, 0x27, 0xbf,
|
0x38, 0xfe, 0xe7, 0x18, 0xf4, 0x16, 0x94, 0xe9, 0x0c, 0x7d, 0xdd, 0x34, 0x02, 0x83, 0x6f, 0x7d,
|
||||||
0xd1, 0x09, 0x28, 0x6d, 0x1b, 0xfe, 0xb6, 0xfe, 0x10, 0xef, 0x31, 0x7f, 0xb1, 0xaa, 0x15, 0x09,
|
0x4f, 0x4b, 0x23, 0x3b, 0x37, 0x08, 0xde, 0xaa, 0x11, 0x18, 0x1a, 0x63, 0x93, 0x4f, 0x7e, 0xa3,
|
||||||
0xe0, 0x5d, 0xbc, 0xe7, 0xa3, 0x67, 0xa0, 0xe8, 0xf4, 0x3a, 0x6c, 0x83, 0x15, 0x16, 0x95, 0xa5,
|
0x13, 0x50, 0xda, 0x36, 0xfc, 0x6d, 0xfd, 0x01, 0xde, 0x63, 0xce, 0x65, 0x55, 0x2b, 0x12, 0xc0,
|
||||||
0xaa, 0x56, 0x70, 0x7a, 0x1d, 0xb2, 0xbd, 0xd8, 0x85, 0x74, 0xb1, 0x91, 0x55, 0xff, 0x21, 0x03,
|
0xbb, 0x78, 0xcf, 0x47, 0x4f, 0x41, 0xd1, 0xe9, 0x75, 0x98, 0xca, 0x15, 0x16, 0x95, 0xa5, 0xaa,
|
||||||
0xb5, 0xbb, 0x3d, 0x72, 0x22, 0xa2, 0x11, 0xa6, 0x9e, 0x1d, 0x1c, 0x4e, 0x2a, 0xcf, 0x41, 0x96,
|
0x56, 0x70, 0x7a, 0x1d, 0xa2, 0x70, 0x8c, 0x5d, 0xc5, 0x46, 0x56, 0xfd, 0x9b, 0x0c, 0xd4, 0xee,
|
||||||
0xf9, 0x16, 0xa4, 0x45, 0x43, 0x3a, 0x83, 0xb5, 0x55, 0x5f, 0x23, 0x48, 0x34, 0xba, 0xd2, 0x6b,
|
0xf4, 0xc8, 0xf1, 0x89, 0x06, 0xa8, 0x7a, 0x76, 0x70, 0x38, 0xf1, 0x3c, 0x07, 0x59, 0xe6, 0x88,
|
||||||
0xb5, 0xb8, 0x9b, 0x96, 0xa5, 0x54, 0x97, 0x08, 0x84, 0x39, 0x69, 0x27, 0xa0, 0x84, 0x3d, 0x2f,
|
0x90, 0x16, 0x0d, 0xe9, 0x0c, 0xd6, 0x56, 0x7d, 0x8d, 0x20, 0xd1, 0xe0, 0x4c, 0xaf, 0xd5, 0xe2,
|
||||||
0x72, 0xe2, 0xe8, 0x9c, 0xb0, 0xe7, 0xb1, 0x4a, 0x15, 0x2a, 0x46, 0xeb, 0xa1, 0xe3, 0xee, 0xda,
|
0x3e, 0x5d, 0x96, 0x52, 0x5d, 0x22, 0x10, 0xe6, 0xd1, 0x9d, 0x80, 0x12, 0xf6, 0xbc, 0xc8, 0xe3,
|
||||||
0xd8, 0x6c, 0x63, 0x93, 0xae, 0x7f, 0x51, 0x8b, 0xc1, 0x98, 0x84, 0x10, 0x09, 0xd0, 0x5b, 0x4e,
|
0xa3, 0x73, 0xc2, 0x9e, 0xc7, 0x2a, 0x55, 0xa8, 0x18, 0xad, 0x07, 0x8e, 0xbb, 0x6b, 0x63, 0xb3,
|
||||||
0x40, 0xcd, 0x7b, 0x96, 0x48, 0x08, 0x81, 0xdc, 0x70, 0x02, 0x52, 0x6d, 0x62, 0x1b, 0x07, 0x98,
|
0x8d, 0x4d, 0x2a, 0x08, 0x45, 0x2d, 0x06, 0x63, 0xa2, 0x42, 0x24, 0x40, 0x6f, 0x39, 0x01, 0xf5,
|
||||||
0x56, 0x17, 0x58, 0x35, 0x83, 0xf0, 0xea, 0x5e, 0x37, 0x6a, 0x5d, 0x64, 0xd5, 0x0c, 0x42, 0xaa,
|
0x05, 0xb2, 0x44, 0x54, 0x08, 0xe4, 0xba, 0x13, 0x90, 0x6a, 0x13, 0xdb, 0x38, 0xc0, 0xb4, 0xba,
|
||||||
0x4f, 0x42, 0xa9, 0x7f, 0x03, 0x5e, 0xea, 0x5f, 0x61, 0xb2, 0x8b, 0xef, 0x9f, 0x28, 0x50, 0x5d,
|
0xc0, 0xaa, 0x19, 0x84, 0x57, 0xf7, 0xba, 0x51, 0xeb, 0x22, 0xab, 0x66, 0x10, 0x52, 0x7d, 0x12,
|
||||||
0xa5, 0x5d, 0x3d, 0x05, 0xd2, 0x87, 0x60, 0x12, 0x3f, 0xee, 0x7a, 0x7c, 0x0f, 0xd1, 0xdf, 0x43,
|
0x4a, 0xfd, 0x0b, 0xf4, 0x52, 0xff, 0xbe, 0x93, 0x02, 0xd4, 0x9f, 0x28, 0x50, 0x5d, 0xa5, 0x5d,
|
||||||
0x05, 0x8a, 0x49, 0x4d, 0xa9, 0x91, 0x55, 0xff, 0x37, 0x0b, 0xd5, 0x0d, 0x6c, 0x78, 0xad, 0xed,
|
0x3d, 0x01, 0xd2, 0x87, 0x60, 0x12, 0x3f, 0xea, 0x7a, 0x5c, 0x99, 0xe8, 0xef, 0xa1, 0x02, 0xc5,
|
||||||
0xa7, 0xe2, 0x7e, 0xa6, 0x0e, 0x59, 0xd3, 0xb7, 0xf9, 0x3c, 0xc9, 0x4f, 0x74, 0x1e, 0xa6, 0xbb,
|
0xa4, 0xa6, 0xd4, 0xc8, 0xaa, 0xdf, 0x9c, 0x84, 0xea, 0x06, 0x36, 0xbc, 0xd6, 0xf6, 0x13, 0x71,
|
||||||
0xb6, 0xd1, 0xc2, 0xdb, 0xae, 0x6d, 0x62, 0x4f, 0x6f, 0x7b, 0x6e, 0x8f, 0x45, 0x10, 0x2b, 0x5a,
|
0x99, 0x53, 0x87, 0xac, 0xe9, 0xdb, 0x7c, 0x9e, 0xe4, 0x27, 0x3a, 0x0f, 0xd3, 0x5d, 0xdb, 0x68,
|
||||||
0x5d, 0xa8, 0xb8, 0x45, 0xe0, 0xe8, 0x55, 0x28, 0x9a, 0xbe, 0xad, 0xd3, 0x83, 0x6d, 0x81, 0x2a,
|
0xe1, 0x6d, 0xd7, 0x36, 0xb1, 0xa7, 0xb7, 0x3d, 0xb7, 0xc7, 0x02, 0x90, 0x15, 0xad, 0x2e, 0x54,
|
||||||
0x5d, 0xf9, 0xfc, 0x56, 0x7d, 0x9b, 0x9e, 0x6b, 0x0b, 0x26, 0xfb, 0x81, 0x9e, 0x83, 0xaa, 0xdb,
|
0xdc, 0x24, 0x70, 0xf4, 0x1a, 0x14, 0x4d, 0xdf, 0xd6, 0xe9, 0x29, 0xb8, 0x40, 0xad, 0xaf, 0x7c,
|
||||||
0x0b, 0xba, 0xbd, 0x40, 0x67, 0x5b, 0xb6, 0x51, 0xa4, 0xe4, 0x55, 0x18, 0x90, 0xee, 0x68, 0x1f,
|
0x7e, 0xab, 0xbe, 0x4d, 0x0f, 0xc1, 0x05, 0x93, 0xfd, 0x40, 0xcf, 0x40, 0xd5, 0xed, 0x05, 0xdd,
|
||||||
0xdd, 0x84, 0xaa, 0x4f, 0x59, 0x19, 0xfa, 0xb4, 0xa5, 0x51, 0x7d, 0xab, 0x0a, 0x6b, 0xc7, 0x9d,
|
0x5e, 0xa0, 0x33, 0x95, 0x6d, 0x14, 0x29, 0x79, 0x15, 0x06, 0xa4, 0x1a, 0xed, 0xa3, 0x1b, 0x50,
|
||||||
0xda, 0x17, 0xa1, 0x1e, 0x78, 0xc6, 0x0e, 0xb6, 0x85, 0x08, 0x0d, 0x50, 0xf9, 0x9c, 0x62, 0xf0,
|
0xf5, 0x29, 0x2b, 0x43, 0x07, 0xb8, 0x34, 0xaa, 0xdb, 0x55, 0x61, 0xed, 0xb8, 0x07, 0xfc, 0x02,
|
||||||
0x7e, 0x78, 0x33, 0x25, 0x9e, 0x53, 0x4e, 0x8b, 0xe7, 0xa0, 0x1a, 0x64, 0x9c, 0x47, 0x34, 0x54,
|
0xd4, 0x03, 0xcf, 0xd8, 0xc1, 0xb6, 0x10, 0xe0, 0x01, 0x2a, 0x9f, 0x53, 0x0c, 0xde, 0x8f, 0x8e,
|
||||||
0x98, 0xd5, 0x32, 0xce, 0x23, 0xf5, 0x5d, 0x98, 0xbc, 0x6d, 0x05, 0x94, 0xb1, 0x64, 0xd7, 0x2b,
|
0xa6, 0x84, 0x83, 0xca, 0x69, 0xe1, 0x20, 0x54, 0x83, 0x8c, 0xf3, 0x90, 0x46, 0x1a, 0xb3, 0x5a,
|
||||||
0xf4, 0x44, 0x41, 0xf7, 0xf6, 0x33, 0x50, 0xf4, 0xdc, 0x5d, 0xa6, 0xce, 0x88, 0xbf, 0x55, 0xd1,
|
0xc6, 0x79, 0xc8, 0x04, 0xa1, 0xd6, 0xc8, 0xaa, 0xef, 0xc2, 0xe4, 0x2d, 0x2b, 0xa0, 0x1c, 0x26,
|
||||||
0x0a, 0x9e, 0xbb, 0x4b, 0x75, 0x15, 0x4d, 0x32, 0x71, 0x3d, 0xcc, 0xbc, 0xc7, 0x8c, 0xc6, 0x4b,
|
0xea, 0xaf, 0xd0, 0x73, 0x08, 0x55, 0xf2, 0xa7, 0xa0, 0xe8, 0xb9, 0xbb, 0xcc, 0xae, 0x11, 0x9f,
|
||||||
0xea, 0x9f, 0x28, 0x7d, 0x61, 0x22, 0x0a, 0xc8, 0x3f, 0x9c, 0x06, 0x7a, 0x0b, 0x0a, 0x1e, 0x6b,
|
0xac, 0xa2, 0x15, 0x3c, 0x77, 0x97, 0x1a, 0x2d, 0x9a, 0xac, 0xe2, 0x7a, 0x98, 0x79, 0x98, 0x19,
|
||||||
0x3f, 0x34, 0xc4, 0x2d, 0x8e, 0x44, 0xd5, 0x69, 0xd8, 0x6a, 0xf4, 0xf0, 0xcd, 0x37, 0x14, 0xa8,
|
0x8d, 0x97, 0xd4, 0x3f, 0x56, 0xfa, 0x52, 0x45, 0x2c, 0x91, 0x7f, 0x38, 0x53, 0xf4, 0x16, 0x14,
|
||||||
0xdc, 0xb4, 0x7b, 0xfe, 0x93, 0x10, 0x7e, 0x59, 0x00, 0x21, 0x2b, 0x0d, 0x20, 0xa8, 0xdf, 0xc9,
|
0x3c, 0xd6, 0x7e, 0x68, 0xa8, 0x5c, 0x1c, 0x89, 0xda, 0xd5, 0xb0, 0xd5, 0xc8, 0x02, 0x48, 0x4e,
|
||||||
0x40, 0x95, 0x93, 0x31, 0x8e, 0x3f, 0x91, 0x4a, 0xca, 0x06, 0x94, 0xc9, 0x90, 0xba, 0x8f, 0xdb,
|
0x98, 0x95, 0x1b, 0x76, 0xcf, 0x7f, 0x1c, 0x5a, 0x20, 0x0b, 0x3b, 0x64, 0xe5, 0x61, 0x10, 0xba,
|
||||||
0xe1, 0xf5, 0x48, 0x79, 0x65, 0x45, 0xea, 0x3d, 0xc7, 0xc8, 0xa0, 0x59, 0x04, 0x1b, 0xb4, 0xd1,
|
0x1a, 0x53, 0x8b, 0x59, 0xf5, 0x7b, 0x19, 0xa8, 0x72, 0x7a, 0xc6, 0x71, 0x35, 0x52, 0x69, 0xda,
|
||||||
0x3b, 0x4e, 0xe0, 0xed, 0x69, 0xd0, 0x8a, 0x00, 0xcd, 0x8f, 0x60, 0x2a, 0x51, 0x4d, 0x84, 0xe8,
|
0x80, 0x32, 0x19, 0x5b, 0xf7, 0x71, 0x3b, 0xbc, 0x5d, 0x29, 0xaf, 0xac, 0x48, 0x5d, 0xed, 0x18,
|
||||||
0x21, 0xde, 0xe3, 0xe7, 0x10, 0xf2, 0x13, 0xbd, 0x2c, 0xe6, 0x7f, 0xa4, 0x19, 0xc4, 0x3b, 0xae,
|
0x19, 0x34, 0x2d, 0x61, 0x83, 0x36, 0x7a, 0xc7, 0x09, 0xbc, 0x3d, 0x0d, 0x5a, 0x11, 0xa0, 0xf9,
|
||||||
0xd3, 0xbe, 0xe6, 0x79, 0xc6, 0x1e, 0xcf, 0x0f, 0xb9, 0x9a, 0xf9, 0x8a, 0xa2, 0xfe, 0x6d, 0x06,
|
0x11, 0x4c, 0x25, 0xaa, 0x89, 0x34, 0x3d, 0xc0, 0x7b, 0xfc, 0xd0, 0x42, 0x7e, 0xa2, 0x57, 0xc4,
|
||||||
0x2a, 0xef, 0xf5, 0xb0, 0xb7, 0x77, 0x94, 0x7a, 0x29, 0xd4, 0xab, 0x93, 0x82, 0x5e, 0x1d, 0x50,
|
0x84, 0x92, 0xb4, 0x2d, 0xf2, 0xb6, 0xeb, 0xb4, 0xaf, 0x7a, 0x9e, 0xb1, 0xc7, 0x13, 0x4e, 0x2e,
|
||||||
0x05, 0x39, 0x89, 0x2a, 0x90, 0x28, 0xb4, 0xbc, 0x54, 0xa1, 0xc9, 0xf6, 0x7a, 0xe1, 0x40, 0x7b,
|
0x67, 0xbe, 0xac, 0xa8, 0x7f, 0x9d, 0x81, 0xca, 0x7b, 0x3d, 0xec, 0xed, 0x1d, 0xa5, 0xa5, 0x0a,
|
||||||
0xbd, 0x98, 0x1a, 0xbb, 0xfd, 0x63, 0x25, 0x62, 0xe1, 0x58, 0xbb, 0x31, 0xe6, 0xd9, 0x64, 0x0e,
|
0x2d, 0xed, 0xa4, 0x60, 0x69, 0x07, 0x8c, 0x43, 0x4e, 0x62, 0x1c, 0x24, 0x26, 0x2e, 0x2f, 0x35,
|
||||||
0xec, 0xd9, 0x8c, 0xbc, 0x1b, 0x7f, 0xa8, 0x40, 0xe9, 0x03, 0xdc, 0x0a, 0x5c, 0x8f, 0xe8, 0x1f,
|
0x71, 0x32, 0xed, 0x2f, 0x1c, 0x48, 0xfb, 0x8b, 0xc3, 0x83, 0xc1, 0xf5, 0x46, 0x56, 0xfd, 0x23,
|
||||||
0x49, 0x33, 0x65, 0x04, 0x2f, 0x33, 0x93, 0xf4, 0x32, 0x2f, 0x43, 0xd1, 0x32, 0x75, 0x83, 0xc8,
|
0x25, 0xe2, 0xe5, 0x58, 0xfa, 0x19, 0x73, 0x7a, 0x32, 0x07, 0x76, 0x7a, 0x46, 0xd6, 0xcf, 0x4f,
|
||||||
0x17, 0x1d, 0x77, 0x98, 0x53, 0x53, 0xb0, 0x4c, 0x2a, 0x88, 0xa3, 0xdf, 0xa7, 0x7f, 0x4f, 0x81,
|
0x15, 0x28, 0x7d, 0x80, 0x5b, 0x81, 0xeb, 0x11, 0x8b, 0x24, 0x69, 0xa6, 0x8c, 0xe0, 0x89, 0x66,
|
||||||
0x0a, 0xa3, 0xd9, 0x67, 0x2d, 0x5f, 0x17, 0x86, 0x53, 0x64, 0x42, 0xcf, 0x0b, 0xd1, 0x44, 0x6f,
|
0x92, 0x9e, 0xe8, 0x45, 0x28, 0x5a, 0xa6, 0x6e, 0x10, 0x41, 0xa3, 0xe3, 0x0e, 0xf3, 0x77, 0x0a,
|
||||||
0x4f, 0xf4, 0x87, 0xbd, 0x06, 0x40, 0x98, 0xcc, 0x9b, 0xb3, 0x3d, 0xb3, 0x28, 0xa5, 0x96, 0x35,
|
0x96, 0x49, 0x25, 0x72, 0xf4, 0x7b, 0xf9, 0xef, 0x2b, 0x50, 0x61, 0x34, 0xfb, 0xac, 0xe5, 0x1b,
|
||||||
0xa7, 0x0c, 0xbf, 0x3d, 0xa1, 0x95, 0x48, 0x2b, 0xda, 0xc5, 0xf5, 0x02, 0xe4, 0x68, 0x6b, 0xf5,
|
0xc2, 0x70, 0x8a, 0x4c, 0xfa, 0x79, 0x21, 0x9a, 0xe8, 0xad, 0x89, 0xfe, 0xb0, 0x57, 0x01, 0x08,
|
||||||
0x7f, 0x14, 0x98, 0xb9, 0x61, 0xd8, 0xad, 0x55, 0xcb, 0x0f, 0x0c, 0xa7, 0x35, 0x86, 0x1b, 0x73,
|
0x93, 0x79, 0x73, 0xa6, 0x3c, 0x8b, 0x52, 0x6a, 0x59, 0x73, 0xca, 0xf0, 0x5b, 0x13, 0x5a, 0x89,
|
||||||
0x15, 0x0a, 0x6e, 0x57, 0xb7, 0xf1, 0x56, 0xc0, 0x49, 0x3a, 0x33, 0x64, 0x46, 0x8c, 0x0d, 0x5a,
|
0xb4, 0xa2, 0x5d, 0x5c, 0x2b, 0x40, 0x8e, 0xb6, 0x56, 0xff, 0x47, 0x81, 0x99, 0xeb, 0x86, 0xdd,
|
||||||
0xde, 0xed, 0xde, 0xc1, 0x5b, 0x01, 0x7a, 0x03, 0x8a, 0x6e, 0x57, 0xf7, 0xac, 0xf6, 0x76, 0xc0,
|
0x5a, 0xb5, 0xfc, 0xc0, 0x70, 0x5a, 0x63, 0x78, 0x38, 0x97, 0xa1, 0xe0, 0x76, 0x75, 0x1b, 0x6f,
|
||||||
0xb9, 0x3f, 0x42, 0xe3, 0x82, 0xdb, 0xd5, 0x48, 0x0b, 0xe1, 0x9a, 0x62, 0xf2, 0x80, 0xd7, 0x14,
|
0x05, 0x9c, 0xa4, 0x33, 0x43, 0x66, 0xc4, 0xd8, 0xa0, 0xe5, 0xdd, 0xee, 0x6d, 0xbc, 0x15, 0xa0,
|
||||||
0xea, 0x3f, 0x0f, 0x4c, 0x7f, 0x8c, 0x3d, 0x70, 0x15, 0x8a, 0x96, 0x13, 0xe8, 0xa6, 0xe5, 0x87,
|
0x37, 0xa1, 0xe8, 0x76, 0x75, 0xcf, 0x6a, 0x6f, 0x07, 0x9c, 0xfb, 0x23, 0x34, 0x2e, 0xb8, 0x5d,
|
||||||
0x2c, 0x38, 0x25, 0x97, 0x21, 0x27, 0xa0, 0x33, 0xa0, 0x6b, 0xea, 0x04, 0x64, 0x6c, 0xf4, 0x36,
|
0x8d, 0xb4, 0x10, 0x2e, 0x37, 0x26, 0x0f, 0x78, 0xb9, 0x41, 0xce, 0xa8, 0x89, 0xe9, 0x8f, 0xa1,
|
||||||
0xc0, 0x96, 0xed, 0x1a, 0xbc, 0x35, 0xe3, 0xc1, 0x69, 0xf9, 0xf6, 0x21, 0x68, 0x61, 0xfb, 0x12,
|
0x03, 0x97, 0xa1, 0x68, 0x39, 0x81, 0x6e, 0x5a, 0x7e, 0xc8, 0x82, 0x53, 0x72, 0x19, 0x72, 0x02,
|
||||||
0x6d, 0x44, 0x7a, 0xe8, 0x2f, 0xe9, 0x3f, 0x29, 0x30, 0xb7, 0x8e, 0x3d, 0x96, 0x09, 0x14, 0xf0,
|
0x3a, 0x03, 0xba, 0xa6, 0x4e, 0x40, 0xc6, 0x46, 0x6f, 0x03, 0x6c, 0xd9, 0xae, 0xc1, 0x5b, 0x33,
|
||||||
0x1b, 0xc5, 0x35, 0x67, 0xcb, 0x8d, 0x5f, 0xea, 0x2a, 0x89, 0x4b, 0xdd, 0x9f, 0xcd, 0x45, 0x66,
|
0x1e, 0x9c, 0x96, 0xab, 0x0f, 0x41, 0x0b, 0xdb, 0x97, 0x68, 0x23, 0xd2, 0x43, 0x7f, 0x49, 0xff,
|
||||||
0xec, 0x10, 0xc2, 0x42, 0x0b, 0xe1, 0x21, 0x24, 0x0c, 0xa0, 0xb0, 0x43, 0x5c, 0x2d, 0x65, 0x99,
|
0x5e, 0x81, 0xb9, 0x75, 0xec, 0xb1, 0x1c, 0xa3, 0x80, 0xdf, 0x4c, 0xae, 0x39, 0x5b, 0x6e, 0xfc,
|
||||||
0x38, 0xbd, 0xe2, 0x59, 0x56, 0xfd, 0x0d, 0x96, 0x3f, 0x21, 0x9d, 0xd4, 0xe1, 0x05, 0x76, 0x1e,
|
0x72, 0x58, 0x49, 0x5c, 0x0e, 0xff, 0x74, 0x2e, 0x44, 0x63, 0xe7, 0x13, 0x16, 0xa2, 0x08, 0xcf,
|
||||||
0xb8, 0xa6, 0x4f, 0xe8, 0xfd, 0x2f, 0x41, 0x42, 0x77, 0xa4, 0x28, 0xa2, 0xef, 0x2b, 0xb0, 0x98,
|
0x27, 0x61, 0x20, 0x86, 0x1d, 0xf4, 0x6a, 0x29, 0xcb, 0xc4, 0xe9, 0x15, 0xcf, 0xbb, 0xea, 0xaf,
|
||||||
0x4e, 0xd5, 0x38, 0x26, 0xfa, 0x6d, 0xc8, 0x59, 0xce, 0x96, 0x1b, 0xde, 0x60, 0x9d, 0x93, 0xee,
|
0xb1, 0x3c, 0x0c, 0xe9, 0xa4, 0x0e, 0x2f, 0xb0, 0xf3, 0xc0, 0x4d, 0x7e, 0x62, 0x03, 0x78, 0x0e,
|
||||||
0x05, 0xf9, 0xb8, 0xac, 0xa1, 0xfa, 0xe3, 0x0c, 0xd4, 0xdf, 0x63, 0xf1, 0xf8, 0x2f, 0x7c, 0xf9,
|
0x12, 0xb6, 0x23, 0xc5, 0x10, 0xfd, 0x96, 0x02, 0x8b, 0xe9, 0x54, 0x8d, 0xb3, 0x57, 0xbf, 0x0d,
|
||||||
0x3b, 0xb8, 0xa3, 0xfb, 0xd6, 0x27, 0x38, 0x5c, 0xfe, 0x0e, 0xee, 0x6c, 0x58, 0x9f, 0xe0, 0x98,
|
0x39, 0xcb, 0xd9, 0x72, 0xc3, 0x7b, 0xaf, 0x73, 0x52, 0x5d, 0x90, 0x8f, 0xcb, 0x1a, 0xaa, 0xff,
|
||||||
0x64, 0xe4, 0xe2, 0x92, 0x31, 0xfc, 0x82, 0x56, 0xbc, 0xa1, 0x2c, 0xc4, 0x6f, 0x28, 0xe7, 0x21,
|
0x90, 0x81, 0xfa, 0x7b, 0x2c, 0xae, 0xff, 0xb9, 0x2f, 0x7f, 0x07, 0x77, 0x74, 0xdf, 0xfa, 0x04,
|
||||||
0xef, 0xb8, 0x26, 0x5e, 0x5b, 0xe5, 0x07, 0x37, 0x5e, 0xea, 0x8b, 0x5a, 0xe9, 0x60, 0xa2, 0x46,
|
0x87, 0xcb, 0xdf, 0xc1, 0x9d, 0x0d, 0xeb, 0x13, 0x1c, 0x93, 0x8c, 0x5c, 0x5c, 0x32, 0x86, 0x5f,
|
||||||
0x86, 0xa2, 0x5d, 0x98, 0x2c, 0x91, 0x8f, 0xd0, 0xc8, 0x8a, 0xea, 0xb7, 0x14, 0x68, 0xde, 0xc2,
|
0xf4, 0x8a, 0xf7, 0x9a, 0x85, 0xf8, 0xbd, 0xe6, 0x3c, 0xe4, 0x1d, 0xd7, 0xc4, 0x6b, 0xab, 0xfc,
|
||||||
0x41, 0x92, 0xab, 0x47, 0x27, 0x7f, 0xdf, 0x56, 0xe0, 0x84, 0x94, 0xa0, 0x71, 0x44, 0xef, 0xf5,
|
0x4c, 0xc7, 0x4b, 0x7d, 0x51, 0x2b, 0x1d, 0x4c, 0xd4, 0xc8, 0x50, 0xb4, 0x0b, 0x93, 0xa5, 0x08,
|
||||||
0xb8, 0xe8, 0xc9, 0x2f, 0x4f, 0x07, 0x86, 0xe4, 0x52, 0x77, 0x09, 0x2a, 0xab, 0xbd, 0x4e, 0x27,
|
0x12, 0x1a, 0x59, 0x51, 0xfd, 0x8e, 0x02, 0xcd, 0x9b, 0x38, 0x48, 0x72, 0xf5, 0xe8, 0xe4, 0xef,
|
||||||
0x72, 0xc6, 0xce, 0x40, 0xc5, 0x63, 0x3f, 0xd9, 0x61, 0x8a, 0x59, 0xe6, 0x32, 0x87, 0x91, 0x23,
|
0xbb, 0x0a, 0x9c, 0x90, 0x12, 0x34, 0x8e, 0xe8, 0xbd, 0x11, 0x17, 0x3d, 0xf9, 0x95, 0xeb, 0xc0,
|
||||||
0x93, 0x7a, 0x1e, 0xaa, 0xbc, 0x09, 0xa7, 0xba, 0x09, 0x45, 0x8f, 0xff, 0xe6, 0xf8, 0x51, 0x59,
|
0x90, 0x5c, 0xea, 0x5e, 0x86, 0xca, 0x6a, 0xaf, 0xd3, 0x89, 0xbc, 0xb2, 0x33, 0x50, 0xf1, 0xd8,
|
||||||
0x9d, 0x83, 0x19, 0x0d, 0xb7, 0x89, 0xd0, 0x7b, 0x77, 0x2c, 0xe7, 0x21, 0x1f, 0x46, 0xfd, 0xba,
|
0x4f, 0x76, 0xce, 0x62, 0x3b, 0x73, 0x99, 0xc3, 0xc8, 0x69, 0x4a, 0x3d, 0x0f, 0x55, 0xde, 0x84,
|
||||||
0x02, 0xb3, 0x71, 0x38, 0xef, 0xeb, 0x0a, 0x14, 0x0c, 0xd3, 0xf4, 0xb0, 0xef, 0x0f, 0x5d, 0x96,
|
0x53, 0xdd, 0x84, 0xa2, 0xc7, 0x7f, 0x73, 0xfc, 0xa8, 0xac, 0xce, 0xc1, 0x8c, 0x86, 0xdb, 0x44,
|
||||||
0x6b, 0x0c, 0x47, 0x0b, 0x91, 0x05, 0xce, 0x65, 0x46, 0xe6, 0x9c, 0xaa, 0xc3, 0xf4, 0x2d, 0x1c,
|
0xe8, 0xbd, 0xdb, 0x96, 0xf3, 0x80, 0x0f, 0xa3, 0x7e, 0x5d, 0x81, 0xd9, 0x38, 0x9c, 0xf7, 0x75,
|
||||||
0xdc, 0xc5, 0x81, 0x37, 0x56, 0x98, 0xbc, 0x41, 0x8e, 0x35, 0xb4, 0x31, 0x17, 0x8b, 0xb0, 0xa8,
|
0x09, 0x0a, 0x86, 0x69, 0x7a, 0xd8, 0xf7, 0x87, 0x2e, 0xcb, 0x55, 0x86, 0xa3, 0x85, 0xc8, 0x02,
|
||||||
0x7e, 0xa6, 0x00, 0x12, 0x47, 0x18, 0x67, 0x99, 0x45, 0x2e, 0x67, 0xe2, 0x5c, 0x66, 0x89, 0x4a,
|
0xe7, 0x32, 0x23, 0x73, 0x4e, 0xd5, 0x61, 0xfa, 0x26, 0x0e, 0xee, 0xe0, 0xc0, 0x1b, 0x2b, 0xdc,
|
||||||
0x9d, 0xae, 0xeb, 0x60, 0x27, 0x10, 0x1d, 0xb1, 0x6a, 0x04, 0x0d, 0x73, 0x37, 0xd0, 0x1d, 0xd7,
|
0xde, 0x20, 0x07, 0x1d, 0xda, 0x98, 0x8b, 0x45, 0x58, 0x54, 0xbf, 0xad, 0x00, 0x12, 0x47, 0x18,
|
||||||
0x30, 0xaf, 0x1b, 0xf6, 0x78, 0x8e, 0xc3, 0x29, 0x00, 0xdf, 0x6b, 0xe9, 0x7c, 0x1f, 0x67, 0xb8,
|
0x67, 0x99, 0x45, 0x2e, 0x67, 0xe2, 0x5c, 0x66, 0x09, 0x4f, 0x9d, 0xae, 0xeb, 0x60, 0x27, 0x10,
|
||||||
0x5e, 0xf2, 0x5a, 0xf7, 0xd8, 0x56, 0x3e, 0x0d, 0x65, 0xd3, 0x0f, 0x78, 0x75, 0x18, 0xb5, 0x05,
|
0x1d, 0xb1, 0x6a, 0x04, 0xa5, 0xe2, 0xf7, 0x13, 0x05, 0xd0, 0x6d, 0xd7, 0x30, 0xaf, 0x19, 0xf6,
|
||||||
0xd3, 0x0f, 0x58, 0x3d, 0xcd, 0x0e, 0xf6, 0xb1, 0x61, 0x63, 0x53, 0x17, 0x82, 0x5e, 0x93, 0x14,
|
0x78, 0x8e, 0xc3, 0x29, 0x00, 0xdf, 0x6b, 0xe9, 0x5c, 0x8f, 0x33, 0xdc, 0x2e, 0x79, 0xad, 0xbb,
|
||||||
0xad, 0xce, 0x2a, 0x36, 0x22, 0xb8, 0x64, 0x73, 0xe5, 0xa4, 0x9b, 0x6b, 0x0b, 0x16, 0xee, 0x1a,
|
0x4c, 0x95, 0x4f, 0x43, 0xd9, 0xf4, 0x03, 0x5e, 0x1d, 0x46, 0x7f, 0xc1, 0xf4, 0x03, 0x56, 0x4f,
|
||||||
0x4e, 0xcf, 0xb0, 0x6f, 0xb8, 0x9d, 0xae, 0x11, 0x4b, 0x28, 0x4d, 0x2a, 0x4a, 0x45, 0xa2, 0x28,
|
0xf3, 0x8e, 0x7d, 0x6c, 0xd8, 0xd8, 0xd4, 0x85, 0xe0, 0xd9, 0x24, 0x45, 0xab, 0xb3, 0x8a, 0x8d,
|
||||||
0x9f, 0x65, 0x99, 0x6f, 0xcc, 0x39, 0xa7, 0x73, 0x9a, 0xd4, 0x04, 0x08, 0xbb, 0x59, 0x29, 0x34,
|
0x08, 0x2e, 0x51, 0xae, 0x5c, 0x7a, 0x0e, 0xe0, 0x74, 0x23, 0xa7, 0x6e, 0xc1, 0xc2, 0x1d, 0xc3,
|
||||||
0x14, 0xd5, 0x87, 0xc6, 0xe0, 0x38, 0xe3, 0xac, 0x2c, 0xa5, 0x2e, 0xec, 0x4a, 0x54, 0xe3, 0x7d,
|
0xe9, 0x19, 0xf6, 0x75, 0xb7, 0xd3, 0x35, 0x62, 0x39, 0xab, 0x49, 0x8b, 0xa9, 0x48, 0x2c, 0xe6,
|
||||||
0x98, 0xfa, 0x16, 0x3c, 0x43, 0xd3, 0x11, 0x43, 0x50, 0xec, 0xc2, 0x3d, 0xd9, 0x81, 0x22, 0xe9,
|
0xd3, 0x2c, 0x95, 0x8e, 0xb9, 0xeb, 0x74, 0x72, 0x93, 0x9a, 0x00, 0x61, 0xe3, 0x14, 0x1a, 0x8a,
|
||||||
0xe0, 0x57, 0x32, 0x54, 0x17, 0x0e, 0xf4, 0x30, 0x0e, 0xe1, 0x57, 0xe3, 0xf7, 0xdc, 0xcf, 0xa7,
|
0xea, 0x43, 0x63, 0x70, 0x9c, 0x71, 0x96, 0x98, 0x52, 0x17, 0x76, 0x25, 0xda, 0xf3, 0x3e, 0x4c,
|
||||||
0xe4, 0x3c, 0xc7, 0x47, 0xe4, 0x5a, 0x7b, 0x09, 0xa6, 0xf0, 0x63, 0xdc, 0xea, 0x05, 0x96, 0xd3,
|
0x7d, 0x0b, 0x9e, 0xa2, 0xf9, 0x8d, 0x21, 0x28, 0x76, 0x4d, 0x9f, 0xec, 0x40, 0x91, 0x74, 0xf0,
|
||||||
0x5e, 0xb7, 0x0d, 0xe7, 0x9e, 0xcb, 0x6d, 0x53, 0x12, 0x8c, 0x9e, 0x87, 0x2a, 0x59, 0x06, 0xb7,
|
0x8b, 0x19, 0x6a, 0x14, 0x07, 0x7a, 0x18, 0x87, 0xf0, 0xcb, 0xf1, 0x4b, 0xf1, 0x67, 0x53, 0xd2,
|
||||||
0x17, 0x70, 0x3c, 0x66, 0xa4, 0xe2, 0x40, 0xd2, 0x1f, 0x99, 0xaf, 0x8d, 0x03, 0x6c, 0x72, 0x3c,
|
0xaa, 0xe3, 0x23, 0x72, 0xf3, 0xbd, 0x04, 0x53, 0xf8, 0x11, 0x6e, 0xf5, 0x02, 0xcb, 0x69, 0xaf,
|
||||||
0x66, 0xb1, 0x92, 0xe0, 0x01, 0x56, 0x12, 0xb0, 0x7f, 0x10, 0x56, 0xfe, 0x8b, 0x92, 0x60, 0x25,
|
0xdb, 0x86, 0x73, 0xd7, 0xe5, 0x9b, 0x54, 0x12, 0x8c, 0x9e, 0x85, 0x2a, 0x59, 0x06, 0xb7, 0x17,
|
||||||
0xef, 0xe1, 0xa8, 0x58, 0x79, 0x1b, 0xa0, 0x83, 0xbd, 0x36, 0x5e, 0xa3, 0x56, 0x80, 0x5d, 0x02,
|
0x70, 0x3c, 0xb6, 0x5b, 0xc5, 0x81, 0xa4, 0x3f, 0x32, 0x5f, 0x1b, 0x07, 0xd8, 0xe4, 0x78, 0x6c,
|
||||||
0x2c, 0x49, 0xad, 0x40, 0xbf, 0x83, 0xbb, 0x61, 0x03, 0x4d, 0x68, 0xab, 0xde, 0x82, 0x19, 0x09,
|
0xeb, 0x4a, 0x82, 0x07, 0x58, 0x49, 0xc0, 0xfe, 0x41, 0x58, 0xf9, 0xcf, 0x4a, 0x82, 0x95, 0xbc,
|
||||||
0x0a, 0x51, 0x70, 0xbe, 0xdb, 0xf3, 0x5a, 0x38, 0xbc, 0x47, 0x0a, 0x8b, 0xc4, 0x20, 0x06, 0x86,
|
0x87, 0xa3, 0x62, 0xe5, 0x2d, 0x80, 0x0e, 0xf6, 0xda, 0x78, 0x8d, 0x6e, 0x07, 0xec, 0x5a, 0x60,
|
||||||
0xd7, 0xc6, 0x01, 0x17, 0x5a, 0x5e, 0x52, 0xaf, 0xd0, 0xd0, 0x10, 0xbd, 0x73, 0x88, 0x49, 0x6a,
|
0x49, 0xba, 0x1d, 0xf4, 0x3b, 0xb8, 0x13, 0x36, 0xd0, 0x84, 0xb6, 0xea, 0x4d, 0x98, 0x91, 0xa0,
|
||||||
0x3c, 0xcc, 0xad, 0x0c, 0x84, 0xb9, 0xb7, 0x68, 0x1c, 0x46, 0x6c, 0x37, 0x66, 0x8a, 0xc2, 0x16,
|
0x10, 0x4b, 0xe7, 0xbb, 0x3d, 0xaf, 0x85, 0xc3, 0x2b, 0xa6, 0xb0, 0x48, 0x76, 0xc6, 0xc0, 0xf0,
|
||||||
0xe9, 0x0a, 0x9b, 0xfc, 0x0d, 0x4c, 0x58, 0x54, 0x7f, 0xaa, 0x40, 0x75, 0xad, 0xd3, 0x75, 0xfb,
|
0xda, 0x38, 0xe0, 0x42, 0xcb, 0x4b, 0xea, 0x25, 0x1a, 0x50, 0xa2, 0xb7, 0x10, 0x31, 0x49, 0x8d,
|
||||||
0x21, 0x88, 0x91, 0x4f, 0xa5, 0x83, 0x37, 0xb7, 0x19, 0xd9, 0xcd, 0xed, 0x73, 0x50, 0x8d, 0xbf,
|
0xc7, 0xcd, 0x95, 0x81, 0xb8, 0xf9, 0x16, 0x0d, 0xda, 0x88, 0xed, 0xc6, 0xcc, 0x79, 0xd8, 0x22,
|
||||||
0x96, 0x60, 0x57, 0x44, 0x95, 0x96, 0xf8, 0x4a, 0xe2, 0x04, 0x94, 0x3c, 0x77, 0x57, 0x27, 0x3a,
|
0x5d, 0x61, 0x93, 0x3f, 0xb3, 0x09, 0x8b, 0xea, 0xff, 0x2a, 0x50, 0x5d, 0xeb, 0x74, 0xdd, 0x7e,
|
||||||
0xd5, 0xe4, 0xc9, 0x10, 0x45, 0xcf, 0xdd, 0x25, 0x9a, 0xd6, 0x44, 0xb3, 0x90, 0xdb, 0xb2, 0xec,
|
0x98, 0x62, 0xe4, 0xe3, 0xe9, 0xe0, 0xed, 0x6e, 0x46, 0x76, 0xbb, 0xfb, 0x0c, 0x54, 0xe3, 0x0f,
|
||||||
0x28, 0x8f, 0x87, 0x15, 0xd0, 0xeb, 0xe4, 0xcc, 0xc6, 0x82, 0xa5, 0xf9, 0x51, 0x8f, 0x4e, 0x61,
|
0x32, 0xd8, 0xed, 0x51, 0xa5, 0x25, 0x3e, 0xc4, 0x38, 0x01, 0x25, 0xcf, 0xdd, 0xd5, 0x89, 0x71,
|
||||||
0x0b, 0xf5, 0x43, 0xa8, 0x85, 0xb3, 0x1e, 0xf3, 0xf1, 0x4f, 0x60, 0xf8, 0x0f, 0xc3, 0x3c, 0x05,
|
0x35, 0x79, 0x76, 0x45, 0xd1, 0x73, 0x77, 0x89, 0xc9, 0x35, 0xd1, 0x2c, 0xe4, 0xb6, 0x2c, 0x3b,
|
||||||
0x56, 0x50, 0xcf, 0xb3, 0x18, 0x1a, 0xed, 0x3f, 0xb6, 0xe8, 0x08, 0x26, 0x09, 0x06, 0xdf, 0x4b,
|
0x4a, 0x0c, 0x62, 0x05, 0xf4, 0x06, 0x39, 0xbc, 0xb1, 0x58, 0x6b, 0x7e, 0xd4, 0x33, 0x54, 0xd8,
|
||||||
0xf4, 0xb7, 0xfa, 0x8f, 0x19, 0x98, 0x4f, 0x62, 0x8f, 0x43, 0xd2, 0x95, 0xf8, 0xfe, 0x91, 0xbf,
|
0x82, 0xd9, 0x30, 0xd4, 0x50, 0xd4, 0x0f, 0xa1, 0x16, 0x4e, 0x7f, 0xcc, 0x87, 0x46, 0x81, 0xe1,
|
||||||
0xe5, 0x10, 0x47, 0xe3, 0x7b, 0x87, 0xaf, 0x40, 0xcb, 0xed, 0x39, 0x01, 0x57, 0x40, 0x64, 0x05,
|
0x3f, 0x08, 0x33, 0x20, 0x58, 0x41, 0x3d, 0xcf, 0x22, 0x6f, 0xb4, 0xff, 0xd8, 0xea, 0x23, 0x98,
|
||||||
0x6e, 0x90, 0x32, 0x5a, 0x80, 0x82, 0x65, 0xea, 0x36, 0x39, 0xde, 0x31, 0xe3, 0x94, 0xb7, 0xcc,
|
0x24, 0x18, 0x5c, 0xa9, 0xe8, 0x6f, 0xf5, 0xef, 0x32, 0x30, 0x9f, 0xc4, 0x1e, 0x87, 0xa4, 0x4b,
|
||||||
0x3b, 0xe4, 0xe8, 0xf7, 0x6a, 0xe8, 0x72, 0x8d, 0x9c, 0xdc, 0xc0, 0xf0, 0x51, 0x0d, 0x32, 0x96,
|
0x71, 0x45, 0x92, 0xbf, 0x1b, 0x11, 0x47, 0xe3, 0x4a, 0xc4, 0x97, 0xa2, 0xe5, 0xf6, 0x9c, 0x80,
|
||||||
0xc9, 0xe3, 0x1d, 0x19, 0xcb, 0x24, 0xc2, 0x44, 0xef, 0x05, 0x68, 0x22, 0x2e, 0xcf, 0xcc, 0x25,
|
0x5b, 0x22, 0xb2, 0x14, 0xd7, 0x49, 0x19, 0x2d, 0x40, 0xc1, 0x32, 0x75, 0x9b, 0x1c, 0xf8, 0xd8,
|
||||||
0x52, 0x50, 0x25, 0xd0, 0xf7, 0x42, 0x20, 0xf1, 0xca, 0x28, 0x1a, 0x8f, 0xce, 0x52, 0xcf, 0xb9,
|
0x76, 0x95, 0xb7, 0xcc, 0xdb, 0xe4, 0x30, 0xf8, 0x5a, 0xe8, 0x84, 0x8d, 0x9c, 0x36, 0xc1, 0xf0,
|
||||||
0xa8, 0x95, 0x09, 0x6c, 0x8d, 0x81, 0xd4, 0x06, 0xcc, 0x13, 0xd2, 0xd8, 0x14, 0x1f, 0x90, 0x05,
|
0x51, 0x0d, 0x32, 0x96, 0xc9, 0x83, 0x23, 0x19, 0xcb, 0x24, 0x52, 0x45, 0x6f, 0x0a, 0x68, 0x8a,
|
||||||
0x09, 0x7d, 0xad, 0xef, 0x28, 0xb0, 0x30, 0x50, 0x35, 0x0e, 0xaf, 0xaf, 0x89, 0xcb, 0x5f, 0x5e,
|
0x2f, 0xcf, 0xf9, 0x25, 0xe2, 0x50, 0x25, 0xd0, 0xf7, 0x42, 0x20, 0xf1, 0xd3, 0x28, 0x1a, 0x0f,
|
||||||
0x39, 0x2f, 0x55, 0x35, 0xf2, 0xc5, 0x0d, 0x65, 0xe5, 0xbb, 0xcc, 0x31, 0xd2, 0x58, 0xf2, 0xe5,
|
0xee, 0x52, 0x5f, 0xba, 0xa8, 0x95, 0x09, 0x6c, 0x8d, 0x81, 0xd4, 0x06, 0xcc, 0x13, 0xd2, 0xd8,
|
||||||
0x13, 0x4e, 0xe5, 0x59, 0x82, 0xfa, 0xae, 0x15, 0x6c, 0xeb, 0xf4, 0x75, 0x10, 0xf5, 0x4a, 0x58,
|
0x14, 0xef, 0x93, 0x05, 0x09, 0xbd, 0xaf, 0xef, 0x29, 0xb0, 0x30, 0x50, 0x35, 0x0e, 0xaf, 0xaf,
|
||||||
0x34, 0xbb, 0xa8, 0xd5, 0x08, 0x7c, 0x83, 0x80, 0x89, 0x67, 0xe2, 0xab, 0xdf, 0x54, 0x60, 0x26,
|
0x8a, 0xcb, 0x5f, 0x5e, 0x39, 0x2f, 0xb5, 0x39, 0xf2, 0xc5, 0x0d, 0x65, 0xe5, 0xd7, 0x99, 0xab,
|
||||||
0x46, 0xd6, 0x38, 0x6c, 0x7a, 0x83, 0x38, 0x6c, 0xac, 0x23, 0xce, 0xa9, 0x45, 0x29, 0xa7, 0xf8,
|
0xa4, 0xb1, 0xb4, 0xce, 0xc7, 0x9c, 0x24, 0xb4, 0x04, 0xf5, 0x5d, 0x2b, 0xd8, 0xd6, 0xe9, 0x4b,
|
||||||
0x68, 0x54, 0x19, 0x47, 0x2d, 0xd4, 0x7f, 0x55, 0xa0, 0x2c, 0xd4, 0x90, 0x93, 0x20, 0xaf, 0xeb,
|
0x24, 0xea, 0xa7, 0xb0, 0x60, 0x78, 0x51, 0xab, 0x11, 0xf8, 0x06, 0x01, 0x13, 0x5f, 0xc5, 0x57,
|
||||||
0x9f, 0x04, 0x23, 0xc0, 0x48, 0x6c, 0x78, 0x0e, 0xfa, 0x2a, 0x4a, 0x48, 0x66, 0x17, 0xb2, 0xe9,
|
0xbf, 0xa5, 0xc0, 0x4c, 0x8c, 0xac, 0x71, 0xd8, 0xf4, 0x26, 0x71, 0xe1, 0x58, 0x47, 0x9c, 0x53,
|
||||||
0x4c, 0x1f, 0xdd, 0x86, 0x1a, 0x63, 0x53, 0x44, 0xba, 0xf4, 0x82, 0x26, 0xca, 0x13, 0x34, 0x3c,
|
0x8b, 0x52, 0x4e, 0xf1, 0xd1, 0xa8, 0x55, 0x8e, 0x5a, 0xa8, 0x3f, 0x56, 0xa0, 0x2c, 0xd4, 0x90,
|
||||||
0x93, 0x53, 0xa9, 0x55, 0x7d, 0xa1, 0xc4, 0x42, 0x9b, 0xae, 0x89, 0xe9, 0x48, 0xb9, 0x81, 0x73,
|
0xb3, 0x21, 0xaf, 0xeb, 0x9f, 0x0d, 0x23, 0xc0, 0x48, 0x6c, 0x78, 0x06, 0xfa, 0xb6, 0x4a, 0x48,
|
||||||
0x59, 0x45, 0x6c, 0x4a, 0x7c, 0x5b, 0x1b, 0x1b, 0x26, 0xf6, 0xa2, 0xb9, 0x45, 0x65, 0xe2, 0x4c,
|
0x93, 0x17, 0xf2, 0xf4, 0x4c, 0x1f, 0xdd, 0x82, 0x1a, 0x63, 0x53, 0x44, 0xba, 0xf4, 0xca, 0x26,
|
||||||
0xb2, 0xdf, 0x3a, 0xf1, 0xf5, 0xb9, 0xb2, 0x05, 0x06, 0x22, 0xc7, 0x00, 0xf4, 0x25, 0x98, 0x32,
|
0xca, 0x40, 0x34, 0x3c, 0x93, 0x53, 0xa9, 0x55, 0x7d, 0xa1, 0xc4, 0xe2, 0xa0, 0xae, 0x89, 0xe9,
|
||||||
0x3b, 0xb1, 0xa7, 0x69, 0xa1, 0xf7, 0x6b, 0x76, 0x84, 0x37, 0x69, 0x31, 0x82, 0x26, 0xe3, 0x04,
|
0x48, 0xb9, 0x81, 0x93, 0x5a, 0x45, 0x6c, 0x4a, 0xbc, 0x5d, 0x1b, 0x1b, 0x26, 0xf6, 0xa2, 0xb9,
|
||||||
0xfd, 0xb7, 0x12, 0x3d, 0xf6, 0xf5, 0xb0, 0x89, 0x9d, 0xc0, 0x32, 0xec, 0xc3, 0xcb, 0x64, 0x13,
|
0x45, 0x65, 0xe2, 0x5e, 0xb2, 0xdf, 0x3a, 0xf1, 0xfe, 0xb9, 0xd5, 0x05, 0x06, 0x22, 0x07, 0x03,
|
||||||
0x8a, 0x3d, 0x1f, 0x7b, 0x82, 0x6d, 0x88, 0xca, 0xa4, 0xae, 0x6b, 0xf8, 0xfe, 0xae, 0xeb, 0x99,
|
0xf4, 0x1c, 0x4c, 0x99, 0x9d, 0xd8, 0x33, 0xb8, 0xd0, 0x1f, 0x36, 0x3b, 0xc2, 0xfb, 0xb7, 0x18,
|
||||||
0x9c, 0xca, 0xa8, 0x3c, 0x24, 0x35, 0x91, 0x3d, 0x10, 0x95, 0xa7, 0x26, 0x5e, 0x81, 0x85, 0x8e,
|
0x41, 0x93, 0x71, 0x82, 0xbe, 0xd1, 0x7f, 0x58, 0xec, 0x61, 0x13, 0x3b, 0x81, 0x65, 0xd8, 0x87,
|
||||||
0x6b, 0x5a, 0x5b, 0x96, 0x2c, 0xa3, 0x91, 0x34, 0x9b, 0x0b, 0xab, 0x63, 0xed, 0xd4, 0xef, 0x67,
|
0x97, 0xc9, 0x26, 0x14, 0x7b, 0x3e, 0xf6, 0x84, 0x4d, 0x22, 0x2a, 0x93, 0xba, 0xae, 0xe1, 0xfb,
|
||||||
0x60, 0xe1, 0xfd, 0xae, 0xf9, 0x05, 0xcc, 0x79, 0x11, 0xca, 0xae, 0x6d, 0xae, 0xc7, 0xa7, 0x2d,
|
0xbb, 0xae, 0x67, 0x72, 0x2a, 0xa3, 0xf2, 0x90, 0xa4, 0x47, 0xf6, 0x18, 0x55, 0x9e, 0xf4, 0x78,
|
||||||
0x82, 0x08, 0x86, 0x83, 0x77, 0x23, 0x0c, 0x76, 0x2b, 0x2f, 0x82, 0x86, 0xa6, 0x6d, 0x1e, 0x8a,
|
0x09, 0x16, 0x3a, 0xae, 0x69, 0x6d, 0x59, 0xb2, 0x5c, 0x49, 0xd2, 0x6c, 0x2e, 0xac, 0x8e, 0xb5,
|
||||||
0x37, 0xf9, 0x61, 0xbc, 0x69, 0xc3, 0x02, 0x0b, 0x11, 0x3f, 0x61, 0xd6, 0xa8, 0x1f, 0xc3, 0x1c,
|
0x0b, 0x9f, 0x71, 0xcc, 0x88, 0xcf, 0x38, 0x7e, 0x90, 0x81, 0x85, 0xf7, 0xbb, 0xe6, 0xe7, 0xc0,
|
||||||
0x51, 0xcd, 0x64, 0x98, 0xf7, 0x7d, 0xec, 0x8d, 0xa9, 0x71, 0x4e, 0x42, 0x29, 0xec, 0x39, 0xcc,
|
0x87, 0x45, 0x28, 0xbb, 0xb6, 0xb9, 0x1e, 0x67, 0x85, 0x08, 0x22, 0x18, 0x0e, 0xde, 0x8d, 0x30,
|
||||||
0xa8, 0xed, 0x03, 0xd4, 0xdb, 0x30, 0x9b, 0x18, 0xeb, 0x90, 0x33, 0x52, 0x17, 0x01, 0x34, 0xd7,
|
0xd8, 0x25, 0xbe, 0x08, 0x1a, 0x9a, 0x24, 0x7a, 0x28, 0x7e, 0xe5, 0x87, 0xf1, 0xab, 0xf4, 0xd9,
|
||||||
0xc6, 0xef, 0x38, 0x81, 0x15, 0xec, 0x11, 0xf3, 0x2e, 0xb8, 0x4b, 0xf4, 0x37, 0xc1, 0x20, 0x63,
|
0x95, 0x7c, 0x31, 0x53, 0x9f, 0x6d, 0x64, 0xd4, 0x9f, 0x87, 0x05, 0x16, 0x6e, 0x7e, 0xcc, 0x5c,
|
||||||
0x0c, 0xc1, 0xf8, 0x45, 0x98, 0x66, 0x3b, 0x8e, 0xf4, 0x74, 0x78, 0xe6, 0xbe, 0x0a, 0x79, 0x4c,
|
0x0a, 0xd7, 0x68, 0x4e, 0x5c, 0xa3, 0x8f, 0x61, 0x8e, 0x58, 0x73, 0x32, 0xf4, 0xfb, 0x3e, 0xf6,
|
||||||
0x07, 0xe1, 0xe7, 0xfe, 0xd3, 0x72, 0x15, 0x1b, 0x51, 0xab, 0x71, 0x74, 0xf5, 0x17, 0x60, 0x6a,
|
0xc6, 0x34, 0x52, 0x27, 0xa1, 0x14, 0x8e, 0x16, 0xa6, 0xf7, 0xf6, 0x01, 0xea, 0xcf, 0xc1, 0x6c,
|
||||||
0xd5, 0x73, 0xbb, 0xe3, 0x8d, 0x4e, 0xbd, 0x07, 0x1b, 0x8b, 0x6e, 0x60, 0x91, 0x00, 0xe8, 0x79,
|
0x62, 0xac, 0x43, 0xce, 0x32, 0x9c, 0xc9, 0xbc, 0x38, 0x93, 0x45, 0x00, 0xcd, 0xb5, 0xf1, 0x3b,
|
||||||
0xf4, 0xef, 0x14, 0x98, 0xbf, 0xdf, 0xc5, 0x9e, 0x11, 0x60, 0xc2, 0x8b, 0xf1, 0x46, 0x1a, 0xb6,
|
0x4e, 0x60, 0x05, 0x7b, 0xc4, 0x4b, 0x10, 0xdc, 0x2f, 0xfa, 0x9b, 0x60, 0x90, 0x71, 0x87, 0x60,
|
||||||
0xbf, 0x62, 0x54, 0x64, 0xe3, 0x54, 0xa0, 0x37, 0x62, 0x2f, 0xb6, 0xe4, 0xc7, 0x82, 0x04, 0x95,
|
0xfc, 0xaa, 0x02, 0xd3, 0x4c, 0x73, 0x49, 0x57, 0x87, 0x5f, 0x85, 0xd7, 0x20, 0x8f, 0xe9, 0x28,
|
||||||
0x42, 0xe6, 0xf7, 0x1f, 0x2a, 0x30, 0xbd, 0x81, 0x89, 0x0d, 0x19, 0x8f, 0xfc, 0xcb, 0x30, 0x49,
|
0xfc, 0x46, 0xe1, 0xb4, 0xdc, 0x54, 0x47, 0xe4, 0x6a, 0x1c, 0x5d, 0xaa, 0x46, 0x01, 0x4c, 0xad,
|
||||||
0x28, 0x1a, 0x75, 0x91, 0x28, 0x32, 0x3a, 0x07, 0xd3, 0x96, 0xd3, 0xb2, 0x7b, 0x26, 0xd6, 0xc9,
|
0x7a, 0x6e, 0x77, 0x3c, 0x8a, 0xa8, 0x67, 0x62, 0x63, 0xd1, 0xd7, 0x2c, 0x12, 0xc0, 0xdd, 0x34,
|
||||||
0x5c, 0x75, 0xe2, 0x42, 0x71, 0xc3, 0x3d, 0xc5, 0x2b, 0x08, 0xc9, 0xc4, 0x3c, 0xaa, 0x8f, 0x99,
|
0xc1, 0xf8, 0x27, 0x05, 0xe6, 0xef, 0x75, 0xb1, 0x67, 0x04, 0x98, 0x30, 0x6d, 0xbc, 0xd1, 0x87,
|
||||||
0x48, 0x46, 0xf9, 0x31, 0x6c, 0x38, 0xe5, 0x20, 0xc3, 0xbd, 0x02, 0x39, 0x32, 0x4c, 0x68, 0xac,
|
0xe9, 0x6e, 0x8c, 0xb2, 0x6c, 0x9c, 0x32, 0xf4, 0x66, 0xec, 0xed, 0x99, 0xfc, 0x3c, 0x92, 0xa0,
|
||||||
0xe5, 0xad, 0xfa, 0x52, 0xad, 0x31, 0x6c, 0xf5, 0x1b, 0x0a, 0x20, 0x91, 0x45, 0xe3, 0x6c, 0xe0,
|
0xb2, 0x9f, 0xc3, 0x1e, 0xce, 0x6b, 0x41, 0x9c, 0xd7, 0x8f, 0x14, 0x98, 0xde, 0xc0, 0x64, 0x1f,
|
||||||
0xd7, 0xc4, 0x00, 0x79, 0x76, 0x28, 0xe9, 0x6c, 0xa6, 0x51, 0x68, 0x5c, 0x58, 0x29, 0xba, 0x8c,
|
0x1b, 0x6f, 0x4a, 0x17, 0x61, 0x92, 0x50, 0x39, 0xea, 0x02, 0x53, 0x64, 0x74, 0x0e, 0xa6, 0x2d,
|
||||||
0xe3, 0xac, 0x14, 0x99, 0xd7, 0xd0, 0x95, 0x12, 0x98, 0x40, 0x91, 0xc5, 0x95, 0xa2, 0x92, 0x28,
|
0xa7, 0x65, 0xf7, 0x4c, 0xac, 0x93, 0xf9, 0xeb, 0xc4, 0x8d, 0xe3, 0xce, 0xc3, 0x14, 0xaf, 0x20,
|
||||||
0x59, 0x29, 0x42, 0x73, 0xb8, 0x52, 0x8c, 0xc2, 0x70, 0xa5, 0xe8, 0x70, 0xca, 0x41, 0x86, 0x7b,
|
0xd3, 0x20, 0x5b, 0xb4, 0x54, 0xc6, 0x1f, 0x31, 0x19, 0x8f, 0x92, 0x7c, 0x18, 0x09, 0xca, 0x41,
|
||||||
0x05, 0x72, 0x64, 0x98, 0xfd, 0x99, 0x14, 0xae, 0x14, 0xc5, 0x16, 0x56, 0x8a, 0x13, 0xf0, 0xe4,
|
0x48, 0x78, 0x15, 0x72, 0x64, 0xe8, 0xd0, 0x89, 0x90, 0xb7, 0xea, 0xab, 0x89, 0xc6, 0xb0, 0xd5,
|
||||||
0x57, 0xaa, 0x3f, 0xd3, 0xfe, 0x4a, 0xa9, 0x50, 0xb9, 0xbf, 0xf9, 0x31, 0x6e, 0x05, 0x43, 0xb4,
|
0x5f, 0x50, 0x00, 0x89, 0x6c, 0x1b, 0xc7, 0x4a, 0xbc, 0x2e, 0x06, 0xf7, 0xb3, 0x43, 0x49, 0x67,
|
||||||
0xe3, 0x59, 0x98, 0x5a, 0xf7, 0xac, 0x1d, 0xcb, 0xc6, 0xed, 0x61, 0x6a, 0xf6, 0x9b, 0x0a, 0x54,
|
0x33, 0x8d, 0xc2, 0xfa, 0xea, 0xa7, 0xd1, 0xea, 0xd1, 0xe5, 0x1e, 0x67, 0xf5, 0xc8, 0xbc, 0x86,
|
||||||
0x6f, 0x79, 0x86, 0x13, 0xb8, 0xa1, 0xaa, 0x3d, 0x14, 0x3f, 0xaf, 0x43, 0xa9, 0x1b, 0x8e, 0xc6,
|
0xae, 0x9e, 0xc0, 0x04, 0x8a, 0x2c, 0xae, 0x1e, 0x95, 0x58, 0xc9, 0xea, 0x11, 0x9a, 0xe9, 0xea,
|
||||||
0x17, 0xfe, 0x79, 0x79, 0x00, 0x23, 0x4e, 0x93, 0xd6, 0x6f, 0xa6, 0x7e, 0x00, 0xb3, 0x94, 0x92,
|
0x71, 0xfb, 0xde, 0x68, 0x64, 0xc8, 0xa2, 0x31, 0x62, 0xc3, 0x45, 0xa3, 0x23, 0x2b, 0x07, 0x19,
|
||||||
0x24, 0xd9, 0x6f, 0x42, 0x91, 0x6a, 0x5c, 0x8b, 0x5f, 0x1e, 0x94, 0x57, 0x54, 0xf9, 0x79, 0x41,
|
0xf9, 0x55, 0xc8, 0x91, 0x11, 0xf7, 0xe7, 0x57, 0xb8, 0x68, 0x14, 0x5b, 0x58, 0x34, 0x4e, 0xc0,
|
||||||
0x9c, 0x86, 0x16, 0xb5, 0x51, 0xff, 0x5d, 0x81, 0x32, 0xad, 0xeb, 0x4f, 0xf0, 0xe0, 0x5b, 0xfb,
|
0xe3, 0x5f, 0xb4, 0xfe, 0x4c, 0xfb, 0x8b, 0xa6, 0x42, 0xe5, 0xde, 0xe6, 0xc7, 0xb8, 0x15, 0x0c,
|
||||||
0x35, 0xc8, 0xbb, 0x94, 0xe5, 0x43, 0xe3, 0x9c, 0xe2, 0xaa, 0x68, 0xbc, 0x01, 0x71, 0x3f, 0xd9,
|
0xb1, 0xbc, 0x67, 0x61, 0x6a, 0xdd, 0xb3, 0x76, 0x2c, 0x1b, 0xb7, 0x87, 0x99, 0xf0, 0x6f, 0x29,
|
||||||
0x2f, 0x51, 0xbd, 0x02, 0x03, 0x71, 0x05, 0x5b, 0x68, 0x33, 0xda, 0xa9, 0x8e, 0x1d, 0x6d, 0x7e,
|
0x50, 0xbd, 0xe9, 0x19, 0x4e, 0xe0, 0x86, 0x66, 0xfc, 0x50, 0xfc, 0xbc, 0x06, 0xa5, 0x6e, 0x38,
|
||||||
0x61, 0x13, 0xf5, 0xd3, 0x48, 0x26, 0x29, 0xc2, 0xe1, 0xf7, 0xed, 0x57, 0x12, 0x86, 0x70, 0x31,
|
0x1a, 0x97, 0x81, 0x67, 0xe5, 0x51, 0x97, 0x38, 0x4d, 0x5a, 0xbf, 0x99, 0xfa, 0x01, 0xcc, 0x52,
|
||||||
0x9d, 0x8a, 0x84, 0x25, 0x24, 0x87, 0x9e, 0x18, 0x09, 0x63, 0x1e, 0x7a, 0xa2, 0xe5, 0x1e, 0x76,
|
0x4a, 0x92, 0x64, 0x5f, 0x81, 0x22, 0x35, 0xe6, 0x16, 0xbf, 0xe8, 0x28, 0xaf, 0xa8, 0xf2, 0x23,
|
||||||
0xe8, 0x11, 0x09, 0xe9, 0x2f, 0xf6, 0x8f, 0x14, 0x58, 0xe0, 0xc6, 0x28, 0x92, 0xa3, 0x23, 0x60,
|
0x8d, 0x38, 0x0d, 0x2d, 0x6a, 0xa3, 0xfe, 0x9b, 0x02, 0x65, 0x5a, 0xd7, 0x9f, 0xe0, 0xc1, 0xb5,
|
||||||
0x09, 0xfa, 0x2a, 0x37, 0x9a, 0x59, 0x6a, 0x34, 0x5f, 0x1c, 0x66, 0x34, 0x23, 0x3a, 0x05, 0xab,
|
0xfc, 0x75, 0xc8, 0xbb, 0x94, 0xe5, 0x43, 0x83, 0xb3, 0xe2, 0xaa, 0x68, 0xbc, 0x01, 0xf1, 0x90,
|
||||||
0x79, 0x16, 0x4a, 0x77, 0x29, 0xd2, 0x3b, 0x8f, 0x03, 0xd4, 0x80, 0xc2, 0x0e, 0xf6, 0x7c, 0xcb,
|
0xd9, 0x2f, 0xd1, 0x22, 0x03, 0x03, 0x71, 0x9b, 0x5c, 0x68, 0x33, 0xda, 0xa9, 0x59, 0x1e, 0x6d,
|
||||||
0x75, 0xf8, 0xd6, 0x0d, 0x8b, 0xe7, 0xce, 0x40, 0x31, 0x7c, 0x68, 0x85, 0x0a, 0x90, 0xbd, 0x66,
|
0x7e, 0x61, 0x13, 0x7a, 0x56, 0x63, 0x32, 0x49, 0x11, 0x0e, 0xaf, 0xc2, 0x5f, 0x4e, 0xec, 0xb1,
|
||||||
0xdb, 0xf5, 0x09, 0x54, 0x81, 0xe2, 0x1a, 0x7f, 0x4d, 0x54, 0x57, 0xce, 0xbd, 0x0d, 0x33, 0x12,
|
0x8b, 0xe9, 0x54, 0xc8, 0x37, 0xd9, 0x98, 0x65, 0x25, 0x67, 0xb5, 0x18, 0x59, 0x63, 0x9e, 0xd5,
|
||||||
0xe3, 0x8c, 0xa6, 0xa1, 0x7a, 0xcd, 0xa4, 0x5e, 0xdc, 0x03, 0x97, 0x00, 0xeb, 0x13, 0x68, 0x1e,
|
0x22, 0x11, 0x18, 0x76, 0x56, 0x13, 0x89, 0xeb, 0x0b, 0xc0, 0xbf, 0x28, 0xb0, 0xc0, 0xf7, 0xb4,
|
||||||
0x90, 0x86, 0x3b, 0xee, 0x0e, 0x45, 0xbc, 0xe9, 0xb9, 0x1d, 0x0a, 0x57, 0xce, 0x5d, 0x80, 0x59,
|
0x48, 0xb6, 0x8e, 0x80, 0x4d, 0xe8, 0x2b, 0x7c, 0xef, 0xcd, 0xd2, 0xbd, 0xf7, 0x85, 0x61, 0x7b,
|
||||||
0x19, 0xa5, 0xa8, 0x04, 0x39, 0x3a, 0xf3, 0xfa, 0x04, 0x02, 0xc8, 0x6b, 0x78, 0xc7, 0x7d, 0x88,
|
0x6f, 0x44, 0xe7, 0x3e, 0x9b, 0xef, 0x59, 0x28, 0xdd, 0xa1, 0x0d, 0xdf, 0x79, 0x14, 0xa0, 0x06,
|
||||||
0xeb, 0xca, 0xca, 0x5f, 0x9c, 0x83, 0x2a, 0xa3, 0x9d, 0x3f, 0x0b, 0x46, 0x3a, 0xd4, 0x93, 0xdf,
|
0x14, 0x76, 0xb0, 0xe7, 0x5b, 0xae, 0xc3, 0x55, 0x3c, 0x2c, 0x9e, 0x3b, 0x03, 0xc5, 0xf0, 0x35,
|
||||||
0x41, 0x42, 0x5f, 0x96, 0xdf, 0x2e, 0xca, 0x3f, 0x97, 0xd4, 0x1c, 0x26, 0x38, 0xea, 0x04, 0xfa,
|
0x1a, 0x2a, 0x40, 0xf6, 0xaa, 0x6d, 0xd7, 0x27, 0x50, 0x05, 0x8a, 0x6b, 0xfc, 0xc9, 0x55, 0x5d,
|
||||||
0x10, 0x6a, 0xf1, 0x2f, 0x07, 0x21, 0x79, 0xf4, 0x54, 0xfa, 0x79, 0xa1, 0xfd, 0x3a, 0xd7, 0xa1,
|
0x39, 0xf7, 0x36, 0xcc, 0x48, 0xf6, 0x7d, 0x34, 0x0d, 0xd5, 0xab, 0x26, 0xf5, 0x2e, 0xef, 0xbb,
|
||||||
0x1a, 0xfb, 0xe8, 0x0f, 0x92, 0x2f, 0xa6, 0xec, 0xc3, 0x40, 0x4d, 0xb9, 0x96, 0x10, 0x3f, 0xcc,
|
0x04, 0x58, 0x9f, 0x40, 0xf3, 0x80, 0x34, 0xdc, 0x71, 0x77, 0x28, 0xe2, 0x0d, 0xcf, 0xed, 0x50,
|
||||||
0xc3, 0xa8, 0x8f, 0x7f, 0x85, 0x23, 0x85, 0x7a, 0xe9, 0xa7, 0x3a, 0xf6, 0xa3, 0xde, 0x80, 0xe9,
|
0xb8, 0x72, 0xee, 0x45, 0x98, 0x95, 0x51, 0x8f, 0x4a, 0x90, 0xa3, 0xdc, 0xa8, 0x4f, 0x20, 0x80,
|
||||||
0x81, 0x8f, 0x64, 0xa0, 0x0b, 0x29, 0xb7, 0x08, 0xf2, 0x8f, 0x69, 0xec, 0x37, 0xc4, 0x2e, 0xa0,
|
0xbc, 0x86, 0x77, 0xdc, 0x07, 0xb8, 0xae, 0xac, 0xfc, 0xf9, 0x39, 0xa8, 0x32, 0xda, 0xf9, 0xdb,
|
||||||
0xc1, 0x0f, 0xd9, 0xa0, 0x65, 0xf9, 0x0a, 0xa4, 0x7d, 0xda, 0xa7, 0x79, 0x71, 0x64, 0xfc, 0x88,
|
0x69, 0xa4, 0x43, 0x3d, 0xf9, 0xf9, 0x28, 0xf4, 0x25, 0xf9, 0x8d, 0xa9, 0xfc, 0x2b, 0x53, 0xcd,
|
||||||
0x71, 0xbf, 0xac, 0xc0, 0x42, 0xca, 0x17, 0x16, 0xd0, 0xe5, 0xb4, 0x2b, 0xa5, 0x21, 0x9f, 0x89,
|
0x61, 0xc2, 0xa4, 0x4e, 0xa0, 0x0f, 0xa1, 0x16, 0xff, 0xe0, 0x12, 0x92, 0x87, 0x86, 0xa5, 0x5f,
|
||||||
0x68, 0xbe, 0x7c, 0xb0, 0x46, 0x11, 0x21, 0x0e, 0x4c, 0x25, 0x3e, 0x30, 0x80, 0xce, 0xa7, 0xbe,
|
0x65, 0xda, 0xaf, 0x73, 0x1d, 0xaa, 0xb1, 0x6f, 0x25, 0x21, 0xf9, 0x02, 0xcb, 0xbe, 0xa7, 0xd4,
|
||||||
0x8a, 0x1c, 0xfc, 0xfa, 0x42, 0xf3, 0xcb, 0xa3, 0x21, 0x47, 0xe3, 0x7d, 0x04, 0x53, 0x89, 0xd7,
|
0x94, 0x5b, 0x13, 0xf1, 0x7b, 0x46, 0x8c, 0xfa, 0xf8, 0xc7, 0x4b, 0x52, 0xa8, 0x97, 0x7e, 0xe1,
|
||||||
0xf5, 0x29, 0xe3, 0xc9, 0xdf, 0xe0, 0xef, 0xb7, 0xa0, 0x5f, 0x83, 0x6a, 0xec, 0x19, 0x7c, 0x8a,
|
0x64, 0x3f, 0xea, 0x0d, 0x98, 0x1e, 0xf8, 0xb6, 0x08, 0x7a, 0x31, 0xe5, 0x42, 0x44, 0xfe, 0x0d,
|
||||||
0xc4, 0xcb, 0x9e, 0xca, 0xef, 0xd7, 0xf5, 0x47, 0x50, 0x11, 0x5f, 0xab, 0xa3, 0xa5, 0xb4, 0xbd,
|
0x92, 0xfd, 0x86, 0xd8, 0x05, 0x34, 0xf8, 0xfd, 0x1f, 0xb4, 0x2c, 0x5f, 0x81, 0xb4, 0x2f, 0x22,
|
||||||
0x34, 0xd0, 0xf1, 0x41, 0xb6, 0x52, 0xff, 0x95, 0xe9, 0x90, 0xad, 0x34, 0xf0, 0x30, 0x77, 0xf4,
|
0x35, 0x2f, 0x8c, 0x8c, 0x1f, 0x31, 0xee, 0x9b, 0x0a, 0x2c, 0xa4, 0x7c, 0x86, 0x02, 0x5d, 0x4c,
|
||||||
0xad, 0x24, 0xf4, 0x3f, 0x74, 0x2b, 0x1d, 0x78, 0x88, 0xaf, 0x2b, 0xf4, 0x4e, 0x5b, 0xf2, 0x8a,
|
0xbb, 0x1d, 0x1b, 0xf2, 0x51, 0x8d, 0xe6, 0x2b, 0x07, 0x6b, 0x14, 0x11, 0xe2, 0xc0, 0x54, 0xe2,
|
||||||
0x19, 0xad, 0xa4, 0xc9, 0x66, 0xfa, 0x7b, 0xed, 0xe6, 0xe5, 0x03, 0xb5, 0x89, 0xb8, 0xf8, 0x10,
|
0x2b, 0x0c, 0xe8, 0x7c, 0xea, 0xd3, 0xd1, 0xc1, 0x4f, 0x54, 0x34, 0xbf, 0x34, 0x1a, 0x72, 0x34,
|
||||||
0x6a, 0xf1, 0xb7, 0xba, 0x29, 0x5c, 0x94, 0x3e, 0x6f, 0x6e, 0x9e, 0x1f, 0x09, 0x37, 0x1a, 0xec,
|
0xde, 0x47, 0x30, 0x95, 0xf8, 0x04, 0x41, 0xca, 0x78, 0xf2, 0x0f, 0x15, 0xec, 0xb7, 0xa0, 0x5f,
|
||||||
0x7d, 0x28, 0x0b, 0x9f, 0x36, 0x44, 0x2f, 0x0c, 0x91, 0x63, 0xf1, 0x3b, 0x7f, 0xfb, 0x71, 0xf2,
|
0x85, 0x6a, 0xec, 0x5b, 0x01, 0x29, 0x12, 0x2f, 0xfb, 0x9e, 0xc0, 0x7e, 0x5d, 0x7f, 0x04, 0x15,
|
||||||
0x3d, 0x28, 0x45, 0x5f, 0x24, 0x44, 0x67, 0x53, 0xe5, 0xf7, 0x20, 0x5d, 0x6e, 0x00, 0xf4, 0x3f,
|
0xf1, 0x49, 0x3f, 0x5a, 0x4a, 0xd3, 0xa5, 0x81, 0x8e, 0x0f, 0xa2, 0x4a, 0xfd, 0xa7, 0xb8, 0x43,
|
||||||
0x37, 0x88, 0xbe, 0x24, 0xed, 0x73, 0xe0, 0x7b, 0x84, 0xfb, 0x75, 0x1a, 0x4d, 0x9f, 0xbd, 0x7c,
|
0x54, 0x69, 0xe0, 0xf5, 0xf2, 0xe8, 0xaa, 0x24, 0xf4, 0x3f, 0x54, 0x95, 0x0e, 0x3c, 0xc4, 0xd7,
|
||||||
0x18, 0x36, 0x7d, 0xf1, 0xcd, 0xce, 0x7e, 0xdd, 0x6e, 0x43, 0x35, 0xf6, 0xd2, 0x2e, 0x6d, 0x0b,
|
0x15, 0x7a, 0x3d, 0x2f, 0x79, 0xea, 0x8d, 0x56, 0xd2, 0x64, 0x33, 0xfd, 0x51, 0x7b, 0xf3, 0xe2,
|
||||||
0x4b, 0x1e, 0x40, 0x36, 0xcf, 0x8d, 0x82, 0x1a, 0xad, 0xdf, 0x36, 0x54, 0x63, 0xef, 0x9e, 0x52,
|
0x81, 0xda, 0x44, 0x5c, 0x7c, 0x00, 0xb5, 0xf8, 0x83, 0xe6, 0x14, 0x2e, 0x4a, 0xdf, 0x80, 0x37,
|
||||||
0x46, 0x92, 0x3d, 0xf3, 0x4a, 0x19, 0x49, 0xfa, 0x8c, 0x4a, 0x9d, 0x40, 0x9f, 0x0a, 0x4f, 0xac,
|
0xcf, 0x8f, 0x84, 0x1b, 0x0d, 0xf6, 0x3e, 0x94, 0x85, 0x2f, 0x42, 0xa2, 0xe7, 0x87, 0xc8, 0xb1,
|
||||||
0x62, 0xcf, 0xd8, 0xd0, 0xa5, 0xa1, 0xfd, 0xc8, 0x5e, 0xf1, 0x35, 0x57, 0x0e, 0xd2, 0x24, 0x22,
|
0xf8, 0x79, 0xc4, 0xfd, 0x38, 0xf9, 0x1e, 0x94, 0xa2, 0x0f, 0x39, 0xa2, 0xb3, 0xa9, 0xf2, 0x7b,
|
||||||
0x81, 0x4b, 0x15, 0x63, 0x69, 0xba, 0x54, 0x1d, 0x64, 0xa5, 0x36, 0x20, 0xcf, 0x5e, 0x32, 0x21,
|
0x90, 0x2e, 0x37, 0x00, 0xfa, 0x5f, 0x69, 0x44, 0xcf, 0x49, 0xfb, 0x1c, 0xf8, 0x8c, 0xe3, 0x7e,
|
||||||
0x35, 0xe5, 0xcd, 0xa2, 0xf0, 0xcc, 0xa9, 0xf9, 0x9c, 0x14, 0x27, 0xfe, 0xb6, 0x87, 0x75, 0xca,
|
0x9d, 0x46, 0xd3, 0x67, 0x2f, 0x3e, 0x86, 0x4d, 0x5f, 0x7c, 0xb4, 0xb4, 0x5f, 0xb7, 0xdb, 0x50,
|
||||||
0x6e, 0x1f, 0x53, 0x3a, 0x8d, 0xbd, 0x5e, 0x19, 0xb5, 0x53, 0x0d, 0xf2, 0x2c, 0xaf, 0x3e, 0xa5,
|
0x8d, 0x3d, 0x3e, 0x4c, 0x53, 0x61, 0xc9, 0xe3, 0xd0, 0xe6, 0xb9, 0x51, 0x50, 0xa3, 0xf5, 0xdb,
|
||||||
0xd3, 0xd8, 0x5b, 0x91, 0xe6, 0x70, 0x1c, 0x76, 0x8e, 0x9d, 0x40, 0xeb, 0x90, 0xa3, 0xa1, 0x5a,
|
0x86, 0x6a, 0xec, 0xe1, 0x57, 0xca, 0x48, 0xb2, 0x07, 0x6f, 0x29, 0x23, 0x49, 0xdf, 0x91, 0xa9,
|
||||||
0x74, 0x66, 0x58, 0xca, 0xf9, 0xb0, 0x1e, 0x63, 0x59, 0xe9, 0xea, 0x04, 0xba, 0x0f, 0x39, 0x1a,
|
0x13, 0xe8, 0x6b, 0xc2, 0x1b, 0xb3, 0xd8, 0x83, 0x3e, 0xf4, 0xf2, 0xd0, 0x7e, 0x64, 0x0f, 0x1b,
|
||||||
0xf5, 0x4a, 0xe9, 0x51, 0xcc, 0x1b, 0x6f, 0x0e, 0x45, 0x09, 0x49, 0x34, 0xa1, 0x22, 0x26, 0x8b,
|
0x9b, 0x2b, 0x07, 0x69, 0x12, 0x91, 0xc0, 0xa5, 0x8a, 0xb1, 0x34, 0x5d, 0xaa, 0x0e, 0xb2, 0x52,
|
||||||
0xa6, 0x98, 0x2c, 0x49, 0x3a, 0x6d, 0x73, 0x14, 0xcc, 0x70, 0x14, 0xb6, 0x8d, 0xfa, 0x61, 0xeb,
|
0x1b, 0x90, 0x67, 0x2f, 0xb8, 0x90, 0x9a, 0xf2, 0x8c, 0x53, 0x78, 0xde, 0xd5, 0x7c, 0x46, 0x8a,
|
||||||
0xf4, 0x6d, 0x34, 0x10, 0x12, 0x4f, 0xdf, 0x46, 0x83, 0x51, 0x70, 0x75, 0x02, 0xfd, 0xaa, 0x02,
|
0x13, 0x7f, 0xd3, 0xc4, 0x3a, 0x65, 0x37, 0xa5, 0x29, 0x9d, 0xc6, 0x5e, 0xed, 0x8c, 0xda, 0xa9,
|
||||||
0x8d, 0xb4, 0x0c, 0x46, 0x94, 0xea, 0x01, 0x0d, 0x4b, 0xc3, 0x6c, 0xbe, 0x72, 0xc0, 0x56, 0x11,
|
0x06, 0x79, 0xf6, 0x8c, 0x20, 0xa5, 0xd3, 0xd8, 0x1b, 0x99, 0xe6, 0x70, 0x1c, 0x76, 0xde, 0x9d,
|
||||||
0x2d, 0x9f, 0xd0, 0x60, 0xd9, 0x40, 0xce, 0xe2, 0xc5, 0xb4, 0xfe, 0x52, 0xf2, 0xf0, 0x9a, 0x2f,
|
0x40, 0xeb, 0x90, 0xa3, 0xe1, 0x67, 0x74, 0x66, 0x58, 0x62, 0xfd, 0xb0, 0x1e, 0x63, 0xb9, 0xf7,
|
||||||
0x8d, 0xde, 0x20, 0x1a, 0x7b, 0x13, 0xca, 0x42, 0xa0, 0x2e, 0x45, 0xf3, 0x0e, 0x46, 0x18, 0x53,
|
0xea, 0x04, 0xba, 0x07, 0x39, 0x1a, 0xc0, 0x4b, 0xe9, 0x51, 0xcc, 0x8e, 0x6f, 0x0e, 0x45, 0x09,
|
||||||
0x56, 0x55, 0x12, 0xf3, 0x63, 0xe2, 0x4d, 0x13, 0xdd, 0x52, 0x84, 0x51, 0xcc, 0x9b, 0x4b, 0x11,
|
0x49, 0x34, 0xa1, 0x22, 0x66, 0xc2, 0xa6, 0x6c, 0x59, 0x92, 0x5c, 0xe1, 0xe6, 0x28, 0x98, 0xe1,
|
||||||
0xef, 0x58, 0x9e, 0x9c, 0x3a, 0x81, 0x30, 0x54, 0xc4, 0xac, 0xb7, 0x14, 0x69, 0x94, 0x24, 0xcc,
|
0x28, 0x4c, 0x8d, 0xfa, 0xa1, 0xf8, 0x74, 0x35, 0x1a, 0x08, 0xf3, 0xa7, 0xab, 0xd1, 0x60, 0x64,
|
||||||
0x35, 0x5f, 0x1c, 0x01, 0x33, 0x1a, 0x46, 0x07, 0xe8, 0x67, 0x9d, 0xa5, 0xd8, 0xba, 0x81, 0xc4,
|
0x5f, 0x9d, 0x40, 0xbf, 0xa4, 0x40, 0x23, 0x2d, 0x3d, 0x13, 0xa5, 0x7a, 0x40, 0xc3, 0x72, 0x4c,
|
||||||
0xb7, 0xe6, 0x0b, 0xfb, 0xe2, 0x89, 0x66, 0x5f, 0xc8, 0x23, 0x4b, 0xe1, 0xfe, 0x60, 0xa6, 0xd9,
|
0x9b, 0xaf, 0x1e, 0xb0, 0x55, 0x44, 0xcb, 0x27, 0x34, 0xee, 0x37, 0x90, 0x90, 0x79, 0x21, 0xad,
|
||||||
0x08, 0x67, 0x91, 0xc1, 0x14, 0xa5, 0x94, 0xb3, 0x48, 0x6a, 0x36, 0x54, 0xf3, 0xe2, 0xc8, 0xf8,
|
0xbf, 0x94, 0x24, 0xc3, 0xe6, 0x4b, 0xa3, 0x37, 0x88, 0xc6, 0xde, 0x84, 0xb2, 0x10, 0x73, 0x4c,
|
||||||
0xd1, 0x7c, 0x1e, 0x41, 0x3d, 0x99, 0xd2, 0x95, 0x72, 0xc6, 0x4d, 0xc9, 0x30, 0x6b, 0x5e, 0x18,
|
0xb1, 0xbc, 0x83, 0xc1, 0xd2, 0x94, 0x55, 0x95, 0x84, 0x2f, 0x99, 0x78, 0xd3, 0x2c, 0xbe, 0x14,
|
||||||
0x11, 0x5b, 0xb4, 0x87, 0x27, 0x06, 0x69, 0xfa, 0x39, 0x2b, 0xd8, 0xa6, 0xd9, 0x44, 0xa3, 0xcc,
|
0x61, 0x14, 0x93, 0x02, 0x53, 0xc4, 0x3b, 0x96, 0x04, 0xa8, 0x4e, 0x20, 0x0c, 0x15, 0x31, 0xa5,
|
||||||
0x5a, 0x4c, 0x5c, 0x1a, 0x65, 0xd6, 0xb1, 0x34, 0x25, 0x6e, 0xbc, 0x68, 0x88, 0x3e, 0xcd, 0x78,
|
0x2f, 0x45, 0x1a, 0x25, 0xd9, 0x80, 0xcd, 0x17, 0x46, 0xc0, 0x8c, 0x86, 0xd1, 0x01, 0xfa, 0x29,
|
||||||
0x89, 0x09, 0x32, 0x29, 0x76, 0x26, 0x9e, 0x4e, 0xc2, 0xdc, 0xcf, 0x78, 0xe8, 0x1f, 0x9d, 0x1b,
|
0x75, 0x29, 0x7b, 0xdd, 0x40, 0x56, 0x5f, 0xf3, 0xf9, 0x7d, 0xf1, 0xc4, 0x6d, 0x5f, 0x48, 0x92,
|
||||||
0x29, 0x3f, 0x60, 0x98, 0xfb, 0x29, 0xcf, 0x25, 0x60, 0x47, 0xb7, 0x44, 0x66, 0x43, 0xca, 0x51,
|
0x4b, 0xe1, 0xfe, 0x60, 0x1a, 0xdd, 0x08, 0x67, 0x91, 0xc1, 0xb4, 0xab, 0x94, 0xb3, 0x48, 0x6a,
|
||||||
0x4a, 0x9e, 0x1a, 0x91, 0x72, 0x74, 0x4b, 0x49, 0x96, 0xa0, 0x1b, 0xab, 0x9e, 0x0c, 0x13, 0x0f,
|
0x86, 0x57, 0xf3, 0xc2, 0xc8, 0xf8, 0xd1, 0x7c, 0x1e, 0x42, 0x3d, 0x99, 0xa6, 0x96, 0x72, 0xc6,
|
||||||
0xbf, 0x0b, 0x49, 0x86, 0x0f, 0xf7, 0xbf, 0xae, 0xa8, 0x27, 0x63, 0xb2, 0x29, 0x03, 0xa4, 0x84,
|
0x4d, 0xc9, 0x9a, 0x6b, 0xbe, 0x38, 0x22, 0xb6, 0xb8, 0x1f, 0x9e, 0x18, 0xa4, 0xe9, 0x67, 0xac,
|
||||||
0x6e, 0x47, 0x18, 0x20, 0x19, 0xd9, 0x4c, 0x19, 0x20, 0x25, 0x00, 0x3a, 0x82, 0xef, 0x1a, 0x8b,
|
0x60, 0x9b, 0x66, 0x48, 0x8d, 0x32, 0x6b, 0x31, 0x19, 0x6b, 0x94, 0x59, 0xc7, 0x52, 0xaf, 0xf8,
|
||||||
0x32, 0xa6, 0x98, 0x42, 0x59, 0x24, 0x32, 0xc5, 0x14, 0x4a, 0x03, 0xa4, 0xcc, 0xa3, 0xef, 0x47,
|
0xe6, 0x45, 0xb3, 0x0d, 0xd2, 0x36, 0x2f, 0x31, 0xe9, 0x27, 0x65, 0x9f, 0x89, 0x67, 0xc6, 0x30,
|
||||||
0x10, 0x53, 0xb4, 0xdc, 0x40, 0x88, 0x71, 0x3f, 0xf2, 0xef, 0x43, 0x31, 0x0c, 0x0b, 0xa2, 0xe7,
|
0xf7, 0x33, 0x9e, 0xc5, 0x80, 0xce, 0x8d, 0x94, 0xea, 0x30, 0xcc, 0xfd, 0x94, 0xa7, 0x45, 0xb0,
|
||||||
0x53, 0x5d, 0xc4, 0x03, 0x74, 0xf8, 0x11, 0x4c, 0x25, 0x6e, 0xf0, 0x52, 0x44, 0x54, 0x1e, 0x2a,
|
0xa3, 0x5b, 0x22, 0x49, 0x23, 0xe5, 0x28, 0x25, 0xcf, 0xf2, 0x48, 0x39, 0xba, 0xa5, 0xe4, 0x7d,
|
||||||
0xdc, 0x7f, 0x3d, 0xa1, 0x1f, 0x7c, 0x4a, 0x61, 0xc2, 0x40, 0x00, 0x2f, 0x45, 0xd5, 0x0f, 0x46,
|
0x50, 0xc5, 0xaa, 0x27, 0x23, 0xde, 0xc3, 0xef, 0x42, 0x92, 0xa1, 0xce, 0xfd, 0xaf, 0x2b, 0xea,
|
||||||
0xb1, 0xc4, 0x01, 0x08, 0x61, 0x43, 0x07, 0x10, 0xe2, 0x4e, 0x43, 0x07, 0x10, 0x83, 0x2f, 0x4c,
|
0xc9, 0x50, 0x72, 0xca, 0x00, 0x29, 0x11, 0xe7, 0x11, 0x06, 0x48, 0x46, 0x61, 0x53, 0x06, 0x48,
|
||||||
0x22, 0x93, 0x17, 0x94, 0x29, 0x12, 0x99, 0x72, 0x33, 0xbc, 0x1f, 0x8b, 0x36, 0xa1, 0x2c, 0x5c,
|
0x09, 0xd6, 0x8e, 0xe0, 0xbb, 0xc6, 0xa2, 0x9f, 0x29, 0x5b, 0xa1, 0x2c, 0x42, 0x9a, 0xb2, 0x15,
|
||||||
0x6f, 0xa3, 0x61, 0xa4, 0x89, 0x77, 0xf0, 0x29, 0xae, 0x82, 0xe4, 0xa6, 0x5c, 0x9d, 0x58, 0xe9,
|
0x4a, 0x03, 0xb7, 0xcc, 0xa3, 0xef, 0x07, 0x31, 0x53, 0xac, 0xdc, 0x40, 0x94, 0x73, 0x3f, 0xf2,
|
||||||
0x41, 0x65, 0xdd, 0x73, 0x1f, 0x87, 0xdf, 0x52, 0xfc, 0x82, 0x0c, 0xfd, 0xd5, 0x16, 0xd4, 0x18,
|
0xef, 0x41, 0x31, 0x8c, 0x42, 0xa2, 0x67, 0x53, 0x5d, 0xc4, 0x03, 0x74, 0xf8, 0x11, 0x4c, 0x25,
|
||||||
0x82, 0x8e, 0x1f, 0x07, 0xba, 0xbb, 0xf9, 0x31, 0x3a, 0xb9, 0xcc, 0xfe, 0x1f, 0xc1, 0x72, 0xf8,
|
0x6e, 0xf0, 0x52, 0x44, 0x54, 0x1e, 0x85, 0xdc, 0x7f, 0x3d, 0xa1, 0x1f, 0xaf, 0x4a, 0x61, 0xc2,
|
||||||
0xff, 0x08, 0x96, 0x6f, 0x5a, 0x36, 0xbe, 0xcf, 0x33, 0x06, 0xff, 0xb3, 0x30, 0xe4, 0xe1, 0x5a,
|
0x40, 0x1c, 0x30, 0xc5, 0xd4, 0x0f, 0x06, 0xbe, 0xc4, 0x01, 0x08, 0x61, 0x43, 0x07, 0x10, 0x42,
|
||||||
0x74, 0x65, 0xad, 0xf1, 0x7f, 0x89, 0xf0, 0xce, 0xe3, 0xe0, 0xfe, 0xe6, 0xc7, 0xd7, 0x8d, 0xcf,
|
0x55, 0x43, 0x07, 0x10, 0x83, 0x34, 0x4c, 0x22, 0x93, 0x17, 0x94, 0x29, 0x12, 0x99, 0x72, 0x5b,
|
||||||
0xdf, 0x2c, 0x40, 0x6e, 0x65, 0xf9, 0xd2, 0xf2, 0x4b, 0x50, 0xb3, 0x22, 0xf4, 0xb6, 0xd7, 0x6d,
|
0xbc, 0x1f, 0x8b, 0x36, 0xa1, 0x2c, 0x5c, 0x79, 0xa3, 0x61, 0xa4, 0x89, 0x77, 0xf5, 0x29, 0xae,
|
||||||
0x5d, 0x2f, 0xb3, 0x46, 0xeb, 0xa4, 0x9f, 0x75, 0xe5, 0xe7, 0x2f, 0xb7, 0xad, 0x60, 0xbb, 0xb7,
|
0x82, 0xe4, 0xf6, 0x5c, 0x9d, 0x58, 0xe9, 0x41, 0x65, 0xdd, 0x73, 0x1f, 0x85, 0x1f, 0x9c, 0xfc,
|
||||||
0x49, 0x96, 0xe0, 0x22, 0x43, 0xbb, 0x60, 0xb9, 0xfc, 0xd7, 0x45, 0xcb, 0x09, 0xb0, 0xe7, 0x18,
|
0x9c, 0x36, 0xfa, 0xcb, 0x2d, 0xa8, 0x31, 0x04, 0x1d, 0x3f, 0x0a, 0x74, 0x77, 0xf3, 0x63, 0x74,
|
||||||
0x36, 0xfb, 0x57, 0x09, 0x1c, 0xda, 0xdd, 0xfc, 0x5d, 0x45, 0xd9, 0xcc, 0x53, 0xd0, 0xe5, 0xff,
|
0x72, 0x99, 0xfd, 0x1b, 0x87, 0xe5, 0xf0, 0xdf, 0x38, 0x2c, 0xdf, 0xb0, 0x6c, 0x7c, 0x8f, 0x67,
|
||||||
0x0f, 0x00, 0x00, 0xff, 0xff, 0xbe, 0xa2, 0xfe, 0xb7, 0x8c, 0x61, 0x00, 0x00,
|
0x41, 0xfe, 0x47, 0x61, 0xc8, 0xab, 0xbc, 0xe8, 0xca, 0x5a, 0xe3, 0xff, 0x49, 0xe2, 0x9d, 0x47,
|
||||||
|
0xc1, 0xbd, 0xcd, 0x8f, 0xaf, 0x19, 0x9f, 0x5d, 0x29, 0x40, 0x6e, 0x65, 0xf9, 0xe5, 0xe5, 0x97,
|
||||||
|
0xa0, 0x66, 0x45, 0xe8, 0x6d, 0xaf, 0xdb, 0xba, 0x56, 0x66, 0x8d, 0xd6, 0x49, 0x3f, 0xeb, 0xca,
|
||||||
|
0xcf, 0x5e, 0x6c, 0x5b, 0xc1, 0x76, 0x6f, 0x93, 0x2c, 0xc1, 0x05, 0x86, 0xf6, 0xa2, 0xe5, 0xf2,
|
||||||
|
0x5f, 0x17, 0x2c, 0x27, 0xc0, 0x9e, 0x63, 0xd8, 0xec, 0x3f, 0x4c, 0x70, 0x68, 0x77, 0xf3, 0xf7,
|
||||||
|
0x14, 0x65, 0x33, 0x4f, 0x41, 0x17, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xb6, 0x47, 0x70,
|
||||||
|
0xc3, 0x62, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
|
|
@ -3873,10 +3873,6 @@ func (node *Proxy) CreateCredential(ctx context.Context, req *milvuspb.CreateCre
|
||||||
if !node.checkHealthy() {
|
if !node.checkHealthy() {
|
||||||
return unhealthyStatus(), errorutil.UnhealthyError()
|
return unhealthyStatus(), errorutil.UnhealthyError()
|
||||||
}
|
}
|
||||||
// validate root permission
|
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid {
|
|
||||||
return status, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
// validate params
|
// validate params
|
||||||
username := req.Username
|
username := req.Username
|
||||||
if err := ValidateUsername(username); err != nil {
|
if err := ValidateUsername(username); err != nil {
|
||||||
|
@ -3999,10 +3995,6 @@ func (node *Proxy) DeleteCredential(ctx context.Context, req *milvuspb.DeleteCre
|
||||||
if !node.checkHealthy() {
|
if !node.checkHealthy() {
|
||||||
return unhealthyStatus(), errorutil.UnhealthyError()
|
return unhealthyStatus(), errorutil.UnhealthyError()
|
||||||
}
|
}
|
||||||
// validate root permission
|
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid {
|
|
||||||
return status, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
|
|
||||||
if req.Username == util.UserRoot {
|
if req.Username == util.UserRoot {
|
||||||
return &commonpb.Status{
|
return &commonpb.Status{
|
||||||
|
@ -4064,18 +4056,6 @@ func (node *Proxy) SendRetrieveResult(ctx context.Context, req *internalpb.Retri
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (node *Proxy) validateAdminPermission(ctx context.Context) (bool, *commonpb.Status) {
|
|
||||||
err := ValidateAdminPermission(ctx)
|
|
||||||
if err != nil {
|
|
||||||
logger.Error("fail to validate admin permission", zap.Error(err))
|
|
||||||
return false, &commonpb.Status{
|
|
||||||
ErrorCode: commonpb.ErrorCode_PermissionDenied,
|
|
||||||
Reason: err.Error(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (node *Proxy) CreateRole(ctx context.Context, req *milvuspb.CreateRoleRequest) (*commonpb.Status, error) {
|
func (node *Proxy) CreateRole(ctx context.Context, req *milvuspb.CreateRoleRequest) (*commonpb.Status, error) {
|
||||||
logger.Debug("CreateRole", zap.Any("req", req))
|
logger.Debug("CreateRole", zap.Any("req", req))
|
||||||
if code, ok := node.checkHealthyAndReturnCode(); !ok {
|
if code, ok := node.checkHealthyAndReturnCode(); !ok {
|
||||||
|
@ -4093,10 +4073,6 @@ func (node *Proxy) CreateRole(ctx context.Context, req *milvuspb.CreateRoleReque
|
||||||
}, err
|
}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid {
|
|
||||||
return status, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err := node.rootCoord.CreateRole(ctx, req)
|
result, err := node.rootCoord.CreateRole(ctx, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("fail to create role", zap.Error(err))
|
logger.Error("fail to create role", zap.Error(err))
|
||||||
|
@ -4119,9 +4095,6 @@ func (node *Proxy) DropRole(ctx context.Context, req *milvuspb.DropRoleRequest)
|
||||||
Reason: err.Error(),
|
Reason: err.Error(),
|
||||||
}, err
|
}, err
|
||||||
}
|
}
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid {
|
|
||||||
return status, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
result, err := node.rootCoord.DropRole(ctx, req)
|
result, err := node.rootCoord.DropRole(ctx, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("fail to drop role", zap.String("role_name", req.RoleName), zap.Error(err))
|
logger.Error("fail to drop role", zap.String("role_name", req.RoleName), zap.Error(err))
|
||||||
|
@ -4150,9 +4123,6 @@ func (node *Proxy) OperateUserRole(ctx context.Context, req *milvuspb.OperateUse
|
||||||
Reason: err.Error(),
|
Reason: err.Error(),
|
||||||
}, err
|
}, err
|
||||||
}
|
}
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid {
|
|
||||||
return status, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err := node.rootCoord.OperateUserRole(ctx, req)
|
result, err := node.rootCoord.OperateUserRole(ctx, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -4181,11 +4151,6 @@ func (node *Proxy) SelectRole(ctx context.Context, req *milvuspb.SelectRoleReque
|
||||||
}, err
|
}, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid {
|
|
||||||
return &milvuspb.SelectRoleResponse{
|
|
||||||
Status: status,
|
|
||||||
}, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err := node.rootCoord.SelectRole(ctx, req)
|
result, err := node.rootCoord.SelectRole(ctx, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -4216,21 +4181,6 @@ func (node *Proxy) SelectUser(ctx context.Context, req *milvuspb.SelectUserReque
|
||||||
}, err
|
}, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
curUser, err := GetCurUserFromContext(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return &milvuspb.SelectUserResponse{
|
|
||||||
Status: &commonpb.Status{
|
|
||||||
ErrorCode: commonpb.ErrorCode_UnexpectedError,
|
|
||||||
Reason: err.Error(),
|
|
||||||
},
|
|
||||||
}, err
|
|
||||||
}
|
|
||||||
isSelf := req.User != nil && req.User.Name == curUser
|
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid && !isSelf {
|
|
||||||
return &milvuspb.SelectUserResponse{
|
|
||||||
Status: status,
|
|
||||||
}, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err := node.rootCoord.SelectUser(ctx, req)
|
result, err := node.rootCoord.SelectUser(ctx, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -4282,9 +4232,6 @@ func (node *Proxy) OperatePrivilege(ctx context.Context, req *milvuspb.OperatePr
|
||||||
if code, ok := node.checkHealthyAndReturnCode(); !ok {
|
if code, ok := node.checkHealthyAndReturnCode(); !ok {
|
||||||
return errorutil.UnhealthyStatus(code), errorutil.UnhealthyError()
|
return errorutil.UnhealthyStatus(code), errorutil.UnhealthyError()
|
||||||
}
|
}
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid {
|
|
||||||
return status, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
if err := node.validPrivilegeParams(req); err != nil {
|
if err := node.validPrivilegeParams(req); err != nil {
|
||||||
return &commonpb.Status{
|
return &commonpb.Status{
|
||||||
ErrorCode: commonpb.ErrorCode_IllegalArgument,
|
ErrorCode: commonpb.ErrorCode_IllegalArgument,
|
||||||
|
@ -4342,12 +4289,6 @@ func (node *Proxy) SelectGrant(ctx context.Context, req *milvuspb.SelectGrantReq
|
||||||
return &milvuspb.SelectGrantResponse{Status: errorutil.UnhealthyStatus(code)}, errorutil.UnhealthyError()
|
return &milvuspb.SelectGrantResponse{Status: errorutil.UnhealthyStatus(code)}, errorutil.UnhealthyError()
|
||||||
}
|
}
|
||||||
|
|
||||||
if isValid, status := node.validateAdminPermission(ctx); !isValid {
|
|
||||||
return &milvuspb.SelectGrantResponse{
|
|
||||||
Status: status,
|
|
||||||
}, errorutil.PermissionDenyError()
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := node.validGrantParams(req); err != nil {
|
if err := node.validGrantParams(req); err != nil {
|
||||||
return &milvuspb.SelectGrantResponse{
|
return &milvuspb.SelectGrantResponse{
|
||||||
Status: &commonpb.Status{
|
Status: &commonpb.Status{
|
||||||
|
|
|
@ -670,7 +670,11 @@ func (m *MetaCache) InitPolicyInfo(info []string, userRoles []string) {
|
||||||
|
|
||||||
m.privilegeInfos = util.StringSet(info)
|
m.privilegeInfos = util.StringSet(info)
|
||||||
for _, userRole := range userRoles {
|
for _, userRole := range userRoles {
|
||||||
user, role := funcutil.DecodeUserRoleCache(userRole)
|
user, role, err := funcutil.DecodeUserRoleCache(userRole)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("invalid user-role key", zap.String("user-role", userRole), zap.Error(err))
|
||||||
|
continue
|
||||||
|
}
|
||||||
if m.userToRoles[user] == nil {
|
if m.userToRoles[user] == nil {
|
||||||
m.userToRoles[user] = make(map[string]struct{})
|
m.userToRoles[user] = make(map[string]struct{})
|
||||||
}
|
}
|
||||||
|
@ -705,13 +709,19 @@ func (m *MetaCache) RefreshPolicyInfo(op typeutil.CacheOp) error {
|
||||||
case typeutil.CacheRevokePrivilege:
|
case typeutil.CacheRevokePrivilege:
|
||||||
delete(m.privilegeInfos, op.OpKey)
|
delete(m.privilegeInfos, op.OpKey)
|
||||||
case typeutil.CacheAddUserToRole:
|
case typeutil.CacheAddUserToRole:
|
||||||
user, role := funcutil.DecodeUserRoleCache(op.OpKey)
|
user, role, err := funcutil.DecodeUserRoleCache(op.OpKey)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("invalid opKey, fail to decode, op_type: %d, op_key: %s", int(op.OpType), op.OpKey)
|
||||||
|
}
|
||||||
if m.userToRoles[user] == nil {
|
if m.userToRoles[user] == nil {
|
||||||
m.userToRoles[user] = make(map[string]struct{})
|
m.userToRoles[user] = make(map[string]struct{})
|
||||||
}
|
}
|
||||||
m.userToRoles[user][role] = struct{}{}
|
m.userToRoles[user][role] = struct{}{}
|
||||||
case typeutil.CacheRemoveUserFromRole:
|
case typeutil.CacheRemoveUserFromRole:
|
||||||
user, role := funcutil.DecodeUserRoleCache(op.OpKey)
|
user, role, err := funcutil.DecodeUserRoleCache(op.OpKey)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("invalid opKey, fail to decode, op_type: %d, op_key: %s", int(op.OpType), op.OpKey)
|
||||||
|
}
|
||||||
if m.userToRoles[user] != nil {
|
if m.userToRoles[user] != nil {
|
||||||
delete(m.userToRoles[user], role)
|
delete(m.userToRoles[user], role)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,8 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/milvus-io/milvus/internal/proto/commonpb"
|
||||||
|
|
||||||
"github.com/milvus-io/milvus/internal/util"
|
"github.com/milvus-io/milvus/internal/util"
|
||||||
|
|
||||||
"github.com/casbin/casbin/v2"
|
"github.com/casbin/casbin/v2"
|
||||||
|
@ -87,17 +89,24 @@ func PrivilegeInterceptor(ctx context.Context, req interface{}) (context.Context
|
||||||
return ctx, err
|
return ctx, err
|
||||||
}
|
}
|
||||||
roleNames = append(roleNames, util.RolePublic)
|
roleNames = append(roleNames, util.RolePublic)
|
||||||
resourceType := privilegeExt.ObjectType.String()
|
objectType := privilegeExt.ObjectType.String()
|
||||||
resourceNameIndex := privilegeExt.ObjectNameIndex
|
objectNameIndex := privilegeExt.ObjectNameIndex
|
||||||
resourceName := funcutil.GetResourceName(req, privilegeExt.ObjectNameIndex)
|
objectName := funcutil.GetObjectName(req, objectNameIndex)
|
||||||
resourcePrivilege := privilegeExt.ObjectPrivilege.String()
|
if isCurUserObject(objectType, username, objectName) {
|
||||||
|
return ctx, nil
|
||||||
|
}
|
||||||
|
objectNameIndexs := privilegeExt.ObjectNameIndexs
|
||||||
|
objectNames := funcutil.GetObjectNames(req, objectNameIndexs)
|
||||||
|
objectPrivilege := privilegeExt.ObjectPrivilege.String()
|
||||||
policyInfo := strings.Join(globalMetaCache.GetPrivilegeInfo(ctx), ",")
|
policyInfo := strings.Join(globalMetaCache.GetPrivilegeInfo(ctx), ",")
|
||||||
|
|
||||||
log.Debug("current request info", zap.String("username", username), zap.Strings("role_names", roleNames),
|
log.Debug("current request info", zap.String("username", username), zap.Strings("role_names", roleNames),
|
||||||
zap.String("resource_type", resourceType), zap.String("resource_privilege", resourcePrivilege), zap.Int32("resource_index", resourceNameIndex), zap.String("resource_name", resourceName),
|
zap.String("object_type", objectType), zap.String("object_privilege", objectPrivilege),
|
||||||
|
zap.Int32("object_index", objectNameIndex), zap.String("object_name", objectName),
|
||||||
|
zap.Strings("object_names", objectNames),
|
||||||
zap.String("policy_info", policyInfo))
|
zap.String("policy_info", policyInfo))
|
||||||
|
|
||||||
policy := fmt.Sprintf("[%s]", strings.Join(globalMetaCache.GetPrivilegeInfo(ctx), ","))
|
policy := fmt.Sprintf("[%s]", policyInfo)
|
||||||
b := []byte(policy)
|
b := []byte(policy)
|
||||||
a := jsonadapter.NewAdapter(&b)
|
a := jsonadapter.NewAdapter(&b)
|
||||||
policyModel, err := initPolicyModel()
|
policyModel, err := initPolicyModel()
|
||||||
|
@ -112,12 +121,38 @@ func PrivilegeInterceptor(ctx context.Context, req interface{}) (context.Context
|
||||||
return ctx, err
|
return ctx, err
|
||||||
}
|
}
|
||||||
for _, roleName := range roleNames {
|
for _, roleName := range roleNames {
|
||||||
isPermit, err := e.Enforce(roleName, funcutil.PolicyForResource(resourceType, resourceName), privilegeExt.ObjectPrivilege.String())
|
permitFunc := func(resName string) (bool, error) {
|
||||||
|
object := funcutil.PolicyForResource(objectType, objectName)
|
||||||
|
isPermit, err := e.Enforce(roleName, object, objectPrivilege)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Enforce fail", zap.String("role", roleName), zap.String("object", object), zap.String("privilege", objectPrivilege), zap.Error(err))
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return isPermit, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// handle the api which refers one resource
|
||||||
|
permitObject, err := permitFunc(objectName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Enforce fail", zap.String("policy", policy), zap.String("role", roleName), zap.Error(err))
|
|
||||||
return ctx, err
|
return ctx, err
|
||||||
}
|
}
|
||||||
if isPermit {
|
if permitObject {
|
||||||
|
return ctx, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// handle the api which refers many resources
|
||||||
|
permitObjects := true
|
||||||
|
for _, name := range objectNames {
|
||||||
|
p, err := permitFunc(name)
|
||||||
|
if err != nil {
|
||||||
|
return ctx, err
|
||||||
|
}
|
||||||
|
if !p {
|
||||||
|
permitObjects = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if permitObjects && len(objectNames) != 0 {
|
||||||
return ctx, nil
|
return ctx, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,6 +163,16 @@ func PrivilegeInterceptor(ctx context.Context, req interface{}) (context.Context
|
||||||
|
|
||||||
type ErrPermissionDenied struct{}
|
type ErrPermissionDenied struct{}
|
||||||
|
|
||||||
func (e ErrPermissionDenied) Error() string {
|
func (e *ErrPermissionDenied) Error() string {
|
||||||
return "permission deny"
|
return "permission deny"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isCurUserObject Determine whether it is an Object of type User that operates on its own user information,
|
||||||
|
// like updating password or viewing your own role information.
|
||||||
|
// make users operate their own user information when the related privileges are not granted.
|
||||||
|
func isCurUserObject(objectType string, curUser string, object string) bool {
|
||||||
|
if objectType != commonpb.ObjectType_User.String() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return curUser == object
|
||||||
|
}
|
||||||
|
|
|
@ -2169,10 +2169,6 @@ func TestProxy(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
createCredentialReq := constructCreateCredentialRequest()
|
createCredentialReq := constructCreateCredentialRequest()
|
||||||
// permission deny
|
|
||||||
invalidCtx := GetContext(context.Background(), "foo:12345")
|
|
||||||
_, err := proxy.CreateCredential(invalidCtx, createCredentialReq)
|
|
||||||
assert.Error(t, err)
|
|
||||||
// success
|
// success
|
||||||
resp, err := proxy.CreateCredential(ctx, createCredentialReq)
|
resp, err := proxy.CreateCredential(ctx, createCredentialReq)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
@ -2311,10 +2307,6 @@ func TestProxy(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delCredReq := constructDelCredRequest()
|
delCredReq := constructDelCredRequest()
|
||||||
// permission deny
|
|
||||||
invalidCtx := GetContext(context.Background(), "foo:12345")
|
|
||||||
_, err := proxy.DeleteCredential(invalidCtx, delCredReq)
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
deleteResp, err := proxy.DeleteCredential(ctx, delCredReq)
|
deleteResp, err := proxy.DeleteCredential(ctx, delCredReq)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
@ -3177,10 +3169,6 @@ func TestProxy(t *testing.T) {
|
||||||
cancel()
|
cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNotRootCtx() context.Context {
|
|
||||||
return GetContext(context.Background(), "foo:12345")
|
|
||||||
}
|
|
||||||
|
|
||||||
func testProxyRole(ctx context.Context, t *testing.T, proxy *Proxy) {
|
func testProxyRole(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
|
@ -3192,9 +3180,6 @@ func testProxyRole(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
||||||
|
|
||||||
entity.Name = "unit_test"
|
entity.Name = "unit_test"
|
||||||
_, err := proxy.CreateRole(getNotRootCtx(), &milvuspb.CreateRoleRequest{Entity: entity})
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
resp, _ = proxy.CreateRole(ctx, &milvuspb.CreateRoleRequest{Entity: entity})
|
resp, _ = proxy.CreateRole(ctx, &milvuspb.CreateRoleRequest{Entity: entity})
|
||||||
assert.Equal(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
assert.Equal(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
||||||
|
|
||||||
|
@ -3225,28 +3210,16 @@ func testProxyRole(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
ObjectName: "col1",
|
ObjectName: "col1",
|
||||||
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Collection.String()},
|
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Collection.String()},
|
||||||
Role: &milvuspb.RoleEntity{Name: roleName},
|
Role: &milvuspb.RoleEntity{Name: roleName},
|
||||||
Grantor: &milvuspb.GrantorEntity{Privilege: &milvuspb.PrivilegeEntity{Name: util.Load.String()}},
|
Grantor: &milvuspb.GrantorEntity{Privilege: &milvuspb.PrivilegeEntity{Name: util.MetaStore2API(commonpb.ObjectPrivilege_PrivilegeLoad.String())}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
privilegeResp, _ := proxy.OperatePrivilege(ctx, privilegeRequest)
|
privilegeResp, _ := proxy.OperatePrivilege(ctx, privilegeRequest)
|
||||||
assert.Equal(t, commonpb.ErrorCode_Success, privilegeResp.ErrorCode)
|
assert.Equal(t, commonpb.ErrorCode_Success, privilegeResp.ErrorCode)
|
||||||
|
|
||||||
_, err := proxy.SelectUser(context.Background(), &milvuspb.SelectUserRequest{User: &milvuspb.UserEntity{Name: username}, IncludeRoleInfo: true})
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
_, err = proxy.SelectUser(getNotRootCtx(), &milvuspb.SelectUserRequest{User: &milvuspb.UserEntity{Name: username}, IncludeRoleInfo: true})
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
userResp, _ := proxy.SelectUser(ctx, &milvuspb.SelectUserRequest{User: &milvuspb.UserEntity{Name: username}, IncludeRoleInfo: true})
|
userResp, _ := proxy.SelectUser(ctx, &milvuspb.SelectUserRequest{User: &milvuspb.UserEntity{Name: username}, IncludeRoleInfo: true})
|
||||||
assert.Equal(t, commonpb.ErrorCode_Success, userResp.Status.ErrorCode)
|
assert.Equal(t, commonpb.ErrorCode_Success, userResp.Status.ErrorCode)
|
||||||
roleNumOfUser := len(userResp.Results[0].Roles)
|
roleNumOfUser := len(userResp.Results[0].Roles)
|
||||||
|
|
||||||
_, err = proxy.OperateUserRole(getNotRootCtx(), &milvuspb.OperateUserRoleRequest{
|
|
||||||
Username: username,
|
|
||||||
RoleName: roleName,
|
|
||||||
Type: milvuspb.OperateUserRoleType_AddUserToRole,
|
|
||||||
})
|
|
||||||
assert.Error(t, err)
|
|
||||||
roleResp, _ = proxy.OperateUserRole(ctx, &milvuspb.OperateUserRoleRequest{
|
roleResp, _ = proxy.OperateUserRole(ctx, &milvuspb.OperateUserRoleRequest{
|
||||||
Username: username,
|
Username: username,
|
||||||
RoleName: roleName,
|
RoleName: roleName,
|
||||||
|
@ -3261,9 +3234,6 @@ func testProxyRole(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
privilegeResp, _ = proxy.OperatePrivilege(ctx, privilegeRequest)
|
privilegeResp, _ = proxy.OperatePrivilege(ctx, privilegeRequest)
|
||||||
assert.Equal(t, commonpb.ErrorCode_Success, privilegeResp.ErrorCode)
|
assert.Equal(t, commonpb.ErrorCode_Success, privilegeResp.ErrorCode)
|
||||||
|
|
||||||
_, err = proxy.DropRole(getNotRootCtx(), &milvuspb.DropRoleRequest{RoleName: roleName})
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
roleResp, _ = proxy.DropRole(ctx, &milvuspb.DropRoleRequest{RoleName: roleName})
|
roleResp, _ = proxy.DropRole(ctx, &milvuspb.DropRoleRequest{RoleName: roleName})
|
||||||
assert.Equal(t, commonpb.ErrorCode_Success, roleResp.ErrorCode)
|
assert.Equal(t, commonpb.ErrorCode_Success, roleResp.ErrorCode)
|
||||||
|
|
||||||
|
@ -3305,9 +3275,6 @@ func testProxyRole(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
_, err := proxy.SelectRole(ctx, &milvuspb.SelectRoleRequest{Role: &milvuspb.RoleEntity{Name: " "}})
|
_, err := proxy.SelectRole(ctx, &milvuspb.SelectRoleRequest{Role: &milvuspb.RoleEntity{Name: " "}})
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
||||||
_, err = proxy.SelectRole(getNotRootCtx(), &milvuspb.SelectRoleRequest{Role: &milvuspb.RoleEntity{Name: " "}})
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
resp, _ := proxy.SelectRole(ctx, &milvuspb.SelectRoleRequest{})
|
resp, _ := proxy.SelectRole(ctx, &milvuspb.SelectRoleRequest{})
|
||||||
assert.Equal(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
|
assert.Equal(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
|
||||||
roleNum := len(resp.Results)
|
roleNum := len(resp.Results)
|
||||||
|
@ -3428,7 +3395,8 @@ func testProxyPrivilege(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
resp, _ = proxy.OperatePrivilege(ctx, req)
|
resp, _ = proxy.OperatePrivilege(ctx, req)
|
||||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
||||||
|
|
||||||
req.Entity.Grantor.Privilege.Name = util.All.String()
|
req.Entity.Grantor.Privilege.Name = util.MetaStore2API(commonpb.ObjectPrivilege_PrivilegeAll.String())
|
||||||
|
|
||||||
resp, _ = proxy.OperatePrivilege(ctx, req)
|
resp, _ = proxy.OperatePrivilege(ctx, req)
|
||||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
||||||
|
|
||||||
|
@ -3449,9 +3417,7 @@ func testProxyPrivilege(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
||||||
|
|
||||||
req.Entity.Role = &milvuspb.RoleEntity{Name: "admin"}
|
req.Entity.Role = &milvuspb.RoleEntity{Name: "admin"}
|
||||||
_, err := proxy.OperatePrivilege(getNotRootCtx(), req)
|
_, err := proxy.OperatePrivilege(context.Background(), req)
|
||||||
assert.Error(t, err)
|
|
||||||
_, err = proxy.OperatePrivilege(context.Background(), req)
|
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
||||||
resp, _ = proxy.OperatePrivilege(ctx, req)
|
resp, _ = proxy.OperatePrivilege(ctx, req)
|
||||||
|
@ -3460,8 +3426,7 @@ func testProxyPrivilege(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
req.Entity.Grantor.Privilege.Name = "not existed"
|
req.Entity.Grantor.Privilege.Name = "not existed"
|
||||||
resp, _ = proxy.OperatePrivilege(ctx, req)
|
resp, _ = proxy.OperatePrivilege(ctx, req)
|
||||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
||||||
req.Entity.Grantor.Privilege.Name = util.All.String()
|
req.Entity.Grantor.Privilege.Name = util.MetaStore2API(commonpb.ObjectPrivilege_PrivilegeAll.String())
|
||||||
|
|
||||||
req.Entity.Object.Name = "not existed"
|
req.Entity.Object.Name = "not existed"
|
||||||
resp, _ = proxy.OperatePrivilege(ctx, req)
|
resp, _ = proxy.OperatePrivilege(ctx, req)
|
||||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
||||||
|
@ -3477,7 +3442,7 @@ func testProxyPrivilege(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
Role: &milvuspb.RoleEntity{Name: "public"},
|
Role: &milvuspb.RoleEntity{Name: "public"},
|
||||||
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Collection.String()},
|
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Collection.String()},
|
||||||
ObjectName: "col1",
|
ObjectName: "col1",
|
||||||
Grantor: &milvuspb.GrantorEntity{Privilege: &milvuspb.PrivilegeEntity{Name: util.Load.String()}},
|
Grantor: &milvuspb.GrantorEntity{Privilege: &milvuspb.PrivilegeEntity{Name: util.MetaStore2API(commonpb.ObjectPrivilege_PrivilegeLoad.String())}},
|
||||||
},
|
},
|
||||||
Type: milvuspb.OperatePrivilegeType_Grant,
|
Type: milvuspb.OperatePrivilegeType_Grant,
|
||||||
}
|
}
|
||||||
|
@ -3510,8 +3475,6 @@ func testProxyPrivilege(ctx context.Context, t *testing.T, proxy *Proxy) {
|
||||||
assert.NotEqual(t, commonpb.ErrorCode_Success, results.Status.ErrorCode)
|
assert.NotEqual(t, commonpb.ErrorCode_Success, results.Status.ErrorCode)
|
||||||
|
|
||||||
selectReq.Entity.Role = &milvuspb.RoleEntity{Name: "public"}
|
selectReq.Entity.Role = &milvuspb.RoleEntity{Name: "public"}
|
||||||
_, err = proxy.SelectGrant(getNotRootCtx(), selectReq)
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
results, _ = proxy.SelectGrant(ctx, selectReq)
|
results, _ = proxy.SelectGrant(ctx, selectReq)
|
||||||
assert.Equal(t, commonpb.ErrorCode_Success, results.Status.ErrorCode)
|
assert.Equal(t, commonpb.ErrorCode_Success, results.Status.ErrorCode)
|
||||||
|
@ -3564,7 +3527,7 @@ func testProxyPrivilegeFail(ctx context.Context, t *testing.T, proxy *Proxy, rea
|
||||||
Role: &milvuspb.RoleEntity{Name: "admin"},
|
Role: &milvuspb.RoleEntity{Name: "admin"},
|
||||||
ObjectName: "col1",
|
ObjectName: "col1",
|
||||||
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Collection.String()},
|
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Collection.String()},
|
||||||
Grantor: &milvuspb.GrantorEntity{Privilege: &milvuspb.PrivilegeEntity{Name: util.All.String()}},
|
Grantor: &milvuspb.GrantorEntity{Privilege: &milvuspb.PrivilegeEntity{Name: util.MetaStore2API(commonpb.ObjectPrivilege_PrivilegeAll.String())}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.ErrorCode)
|
||||||
|
|
|
@ -696,21 +696,3 @@ func GetRole(username string) ([]string, error) {
|
||||||
}
|
}
|
||||||
return globalMetaCache.GetUserRole(username), nil
|
return globalMetaCache.GetUserRole(username), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ValidateAdminPermission(ctx context.Context) error {
|
|
||||||
curUser, err := GetCurUserFromContext(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("fail to get current user info from the context, err: %w", err)
|
|
||||||
}
|
|
||||||
roles, err := GetRole(curUser)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("fail to get role for the current user info, currtent user:%s, err: %w", curUser, err)
|
|
||||||
}
|
|
||||||
for _, role := range roles {
|
|
||||||
if role == util.RoleAdmin {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return fmt.Errorf("the current user doesn't have privileges of the admin role, can't execute this api")
|
|
||||||
}
|
|
||||||
|
|
|
@ -714,29 +714,3 @@ func TestGetRole(t *testing.T) {
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, 1, len(roles))
|
assert.Equal(t, 1, len(roles))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestValidateAdminPermission(t *testing.T) {
|
|
||||||
root := "root"
|
|
||||||
password := "123456"
|
|
||||||
|
|
||||||
err := ValidateAdminPermission(context.Background())
|
|
||||||
assert.NotNil(t, err)
|
|
||||||
|
|
||||||
globalMetaCache = nil
|
|
||||||
err = ValidateAdminPermission(GetContext(context.Background(), fmt.Sprintf("%s%s%s", root, util.CredentialSeperator, password)))
|
|
||||||
assert.NotNil(t, err)
|
|
||||||
|
|
||||||
globalMetaCache = &mockCache{
|
|
||||||
getUserRoleFunc: func(username string) []string {
|
|
||||||
if username == "root" {
|
|
||||||
return []string{"role1", "admin", "role2"}
|
|
||||||
}
|
|
||||||
return []string{"role1"}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
err = ValidateAdminPermission(GetContext(context.Background(), fmt.Sprintf("%s%s%s", root, util.CredentialSeperator, password)))
|
|
||||||
assert.Nil(t, err)
|
|
||||||
|
|
||||||
err = ValidateAdminPermission(GetContext(context.Background(), fmt.Sprintf("%s%s%s", "test", util.CredentialSeperator, password)))
|
|
||||||
assert.NotNil(t, err)
|
|
||||||
}
|
|
||||||
|
|
|
@ -1294,12 +1294,15 @@ func (c *Core) initRbac() (initError error) {
|
||||||
commonpb.ObjectPrivilege_PrivilegeDescribeCollection.String(),
|
commonpb.ObjectPrivilege_PrivilegeDescribeCollection.String(),
|
||||||
commonpb.ObjectPrivilege_PrivilegeShowCollections.String(),
|
commonpb.ObjectPrivilege_PrivilegeShowCollections.String(),
|
||||||
}
|
}
|
||||||
|
collectionPrivileges := []string{
|
||||||
|
commonpb.ObjectPrivilege_PrivilegeIndexDetail.String(),
|
||||||
|
}
|
||||||
|
|
||||||
for _, globalPrivilege := range globalPrivileges {
|
for _, globalPrivilege := range globalPrivileges {
|
||||||
if initError = c.MetaTable.OperatePrivilege(util.DefaultTenant, &milvuspb.GrantEntity{
|
if initError = c.MetaTable.OperatePrivilege(util.DefaultTenant, &milvuspb.GrantEntity{
|
||||||
Role: &milvuspb.RoleEntity{Name: util.RolePublic},
|
Role: &milvuspb.RoleEntity{Name: util.RolePublic},
|
||||||
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Global.String()},
|
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Global.String()},
|
||||||
ObjectName: funcutil.GlobalResourceName,
|
ObjectName: funcutil.AnyObjectName,
|
||||||
Grantor: &milvuspb.GrantorEntity{
|
Grantor: &milvuspb.GrantorEntity{
|
||||||
User: &milvuspb.UserEntity{Name: util.RoleAdmin},
|
User: &milvuspb.UserEntity{Name: util.RoleAdmin},
|
||||||
Privilege: &milvuspb.PrivilegeEntity{Name: globalPrivilege},
|
Privilege: &milvuspb.PrivilegeEntity{Name: globalPrivilege},
|
||||||
|
@ -1308,6 +1311,19 @@ func (c *Core) initRbac() (initError error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for _, collectionPrivilege := range collectionPrivileges {
|
||||||
|
if initError = c.MetaTable.OperatePrivilege(util.DefaultTenant, &milvuspb.GrantEntity{
|
||||||
|
Role: &milvuspb.RoleEntity{Name: util.RolePublic},
|
||||||
|
Object: &milvuspb.ObjectEntity{Name: commonpb.ObjectType_Collection.String()},
|
||||||
|
ObjectName: funcutil.AnyObjectName,
|
||||||
|
Grantor: &milvuspb.GrantorEntity{
|
||||||
|
User: &milvuspb.UserEntity{Name: util.RoleAdmin},
|
||||||
|
Privilege: &milvuspb.PrivilegeEntity{Name: collectionPrivilege},
|
||||||
|
},
|
||||||
|
}, milvuspb.OperatePrivilegeType_Grant); initError != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3328,7 +3344,7 @@ func (c *Core) isValidGrantor(entity *milvuspb.GrantorEntity, object string) err
|
||||||
if entity.Privilege == nil {
|
if entity.Privilege == nil {
|
||||||
return fmt.Errorf("the privilege entity in the grantor entity is nil")
|
return fmt.Errorf("the privilege entity in the grantor entity is nil")
|
||||||
}
|
}
|
||||||
if privilegeName := util.PrivilegeNameForDb(entity.Privilege.Name); privilegeName == "" {
|
if privilegeName := util.PrivilegeNameForMetastore(entity.Privilege.Name); privilegeName == "" {
|
||||||
return fmt.Errorf("the privilege name in the privilege entity is invalid, current value: %s", entity.Privilege.Name)
|
return fmt.Errorf("the privilege name in the privilege entity is invalid, current value: %s", entity.Privilege.Name)
|
||||||
}
|
}
|
||||||
privileges, ok := util.GetObjectPrivileges()[object]
|
privileges, ok := util.GetObjectPrivileges()[object]
|
||||||
|
@ -3377,11 +3393,11 @@ func (c *Core) OperatePrivilege(ctx context.Context, in *milvuspb.OperatePrivile
|
||||||
return failStatus(commonpb.ErrorCode_OperatePrivilegeFailure, err.Error()), err
|
return failStatus(commonpb.ErrorCode_OperatePrivilegeFailure, err.Error()), err
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Debug("before PrivilegeNameForDb", zap.String("privilege", in.Entity.Grantor.Privilege.Name))
|
logger.Debug("before PrivilegeNameForMetastore", zap.String("privilege", in.Entity.Grantor.Privilege.Name))
|
||||||
in.Entity.Grantor.Privilege.Name = util.PrivilegeNameForDb(in.Entity.Grantor.Privilege.Name)
|
in.Entity.Grantor.Privilege.Name = util.PrivilegeNameForMetastore(in.Entity.Grantor.Privilege.Name)
|
||||||
logger.Debug("after PrivilegeNameForDb", zap.String("privilege", in.Entity.Grantor.Privilege.Name))
|
logger.Debug("after PrivilegeNameForMetastore", zap.String("privilege", in.Entity.Grantor.Privilege.Name))
|
||||||
if in.Entity.Object.Name == commonpb.ObjectType_Global.String() {
|
if in.Entity.Object.Name == commonpb.ObjectType_Global.String() {
|
||||||
in.Entity.ObjectName = funcutil.GlobalResourceName
|
in.Entity.ObjectName = funcutil.AnyObjectName
|
||||||
}
|
}
|
||||||
if err := c.MetaTable.OperatePrivilege(util.DefaultTenant, in.Entity, in.Type); err != nil {
|
if err := c.MetaTable.OperatePrivilege(util.DefaultTenant, in.Entity, in.Type); err != nil {
|
||||||
errMsg := "fail to operate the privilege"
|
errMsg := "fail to operate the privilege"
|
||||||
|
|
|
@ -16,7 +16,11 @@
|
||||||
|
|
||||||
package util
|
package util
|
||||||
|
|
||||||
import "github.com/milvus-io/milvus/internal/proto/commonpb"
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/milvus-io/milvus/internal/proto/commonpb"
|
||||||
|
)
|
||||||
|
|
||||||
// Meta Prefix consts
|
// Meta Prefix consts
|
||||||
const (
|
const (
|
||||||
|
@ -34,80 +38,10 @@ const (
|
||||||
DefaultTenant = ""
|
DefaultTenant = ""
|
||||||
RoleAdmin = "admin"
|
RoleAdmin = "admin"
|
||||||
RolePublic = "public"
|
RolePublic = "public"
|
||||||
|
|
||||||
|
PrivilegeWord = "Privilege"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ObjectPrivilegeAPI privilege name for using api
|
|
||||||
type ObjectPrivilegeAPI int32
|
|
||||||
|
|
||||||
func (o ObjectPrivilegeAPI) String() string {
|
|
||||||
switch o {
|
|
||||||
case All:
|
|
||||||
return "All"
|
|
||||||
case CreateCollection:
|
|
||||||
return "CreateCollection"
|
|
||||||
case DropCollection:
|
|
||||||
return "DropCollection"
|
|
||||||
case DescribeCollection:
|
|
||||||
return "DescribeCollection"
|
|
||||||
case ShowCollections:
|
|
||||||
return "ShowCollections"
|
|
||||||
case Load:
|
|
||||||
return "Load"
|
|
||||||
case Release:
|
|
||||||
return "Release"
|
|
||||||
case Compact:
|
|
||||||
return "Compact"
|
|
||||||
case Insert:
|
|
||||||
return "Insert"
|
|
||||||
case Delete:
|
|
||||||
return "Delete"
|
|
||||||
default:
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const (
|
|
||||||
All ObjectPrivilegeAPI = iota
|
|
||||||
CreateCollection
|
|
||||||
DropCollection
|
|
||||||
DescribeCollection
|
|
||||||
ShowCollections
|
|
||||||
Load
|
|
||||||
Release
|
|
||||||
Compact
|
|
||||||
Insert
|
|
||||||
Delete
|
|
||||||
|
|
||||||
None = 999
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetObjectPrivilegeFromName(name string) ObjectPrivilegeAPI {
|
|
||||||
switch name {
|
|
||||||
case All.String():
|
|
||||||
return All
|
|
||||||
case CreateCollection.String():
|
|
||||||
return CreateCollection
|
|
||||||
case DropCollection.String():
|
|
||||||
return DropCollection
|
|
||||||
case DescribeCollection.String():
|
|
||||||
return DescribeCollection
|
|
||||||
case ShowCollections.String():
|
|
||||||
return ShowCollections
|
|
||||||
case Load.String():
|
|
||||||
return Load
|
|
||||||
case Release.String():
|
|
||||||
return Release
|
|
||||||
case Compact.String():
|
|
||||||
return Compact
|
|
||||||
case Insert.String():
|
|
||||||
return Insert
|
|
||||||
case Delete.String():
|
|
||||||
return Delete
|
|
||||||
default:
|
|
||||||
return None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// StringSet convert array to map for conveniently check if the array contains an element
|
// StringSet convert array to map for conveniently check if the array contains an element
|
||||||
func StringSet(strings []string) map[string]struct{} {
|
func StringSet(strings []string) map[string]struct{} {
|
||||||
stringsMap := make(map[string]struct{})
|
stringsMap := make(map[string]struct{})
|
||||||
|
@ -129,34 +63,60 @@ func StringList(stringMap map[string]struct{}) []string {
|
||||||
func GetObjectPrivileges() map[string][]string {
|
func GetObjectPrivileges() map[string][]string {
|
||||||
return map[string][]string{
|
return map[string][]string{
|
||||||
commonpb.ObjectType_Collection.String(): {
|
commonpb.ObjectType_Collection.String(): {
|
||||||
Load.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeLoad.String()),
|
||||||
Release.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeRelease.String()),
|
||||||
Compact.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeCompaction.String()),
|
||||||
Insert.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeInsert.String()),
|
||||||
Delete.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeDelete.String()),
|
||||||
|
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeGetStatistics.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeCreateIndex.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeIndexDetail.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeDropIndex.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeSearch.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeFlush.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeQuery.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeLoadBalance.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeImport.String()),
|
||||||
},
|
},
|
||||||
commonpb.ObjectType_Global.String(): {
|
commonpb.ObjectType_Global.String(): {
|
||||||
All.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeAll.String()),
|
||||||
CreateCollection.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeCreateCollection.String()),
|
||||||
DropCollection.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeDropCollection.String()),
|
||||||
DescribeCollection.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeDescribeCollection.String()),
|
||||||
ShowCollections.String(),
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeShowCollections.String()),
|
||||||
|
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeCreateOwnership.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeDropOwnership.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeSelectOwnership.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeManageOwnership.String()),
|
||||||
|
},
|
||||||
|
commonpb.ObjectType_User.String(): {
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeUpdateUser.String()),
|
||||||
|
MetaStore2API(commonpb.ObjectPrivilege_PrivilegeSelectUser.String()),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MetaStore2API convert meta-store's privilege name to api's
|
||||||
|
// example: PrivilegeAll -> All
|
||||||
|
func MetaStore2API(name string) string {
|
||||||
|
return name[strings.Index(name, PrivilegeWord)+len(PrivilegeWord):]
|
||||||
|
}
|
||||||
|
|
||||||
func PrivilegeNameForAPI(name string) string {
|
func PrivilegeNameForAPI(name string) string {
|
||||||
index, ok := commonpb.ObjectPrivilege_value[name]
|
_, ok := commonpb.ObjectPrivilege_value[name]
|
||||||
if !ok {
|
if !ok {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return ObjectPrivilegeAPI(index).String()
|
return MetaStore2API(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func PrivilegeNameForDb(name string) string {
|
func PrivilegeNameForMetastore(name string) string {
|
||||||
o := GetObjectPrivilegeFromName(name)
|
dbPrivilege := PrivilegeWord + name
|
||||||
if o == None {
|
_, ok := commonpb.ObjectPrivilege_value[dbPrivilege]
|
||||||
|
if !ok {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return commonpb.ObjectPrivilege_name[int32(o)]
|
return dbPrivilege
|
||||||
}
|
}
|
||||||
|
|
|
@ -394,9 +394,12 @@ func EncodeUserRoleCache(user string, role string) string {
|
||||||
return fmt.Sprintf("%s/%s", user, role)
|
return fmt.Sprintf("%s/%s", user, role)
|
||||||
}
|
}
|
||||||
|
|
||||||
func DecodeUserRoleCache(cache string) (string, string) {
|
func DecodeUserRoleCache(cache string) (string, string, error) {
|
||||||
index := strings.LastIndex(cache, "/")
|
index := strings.LastIndex(cache, "/")
|
||||||
|
if index == -1 {
|
||||||
|
return "", "", fmt.Errorf("invalid param, cache: [%s]", cache)
|
||||||
|
}
|
||||||
user := cache[:index]
|
user := cache[:index]
|
||||||
role := cache[index+1:]
|
role := cache[index+1:]
|
||||||
return user, role
|
return user, role, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -539,7 +539,11 @@ func TestUserRoleCache(t *testing.T) {
|
||||||
user, role := "foo", "root"
|
user, role := "foo", "root"
|
||||||
cache := EncodeUserRoleCache(user, role)
|
cache := EncodeUserRoleCache(user, role)
|
||||||
assert.Equal(t, fmt.Sprintf("%s/%s", user, role), cache)
|
assert.Equal(t, fmt.Sprintf("%s/%s", user, role), cache)
|
||||||
u, r := DecodeUserRoleCache(cache)
|
u, r, err := DecodeUserRoleCache(cache)
|
||||||
assert.Equal(t, user, u)
|
assert.Equal(t, user, u)
|
||||||
assert.Equal(t, role, r)
|
assert.Equal(t, role, r)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
_, _, err = DecodeUserRoleCache("foo")
|
||||||
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
GlobalResourceName = "*"
|
AnyObjectName = "*"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetVersion(m proto.GeneratedMessage) (string, error) {
|
func GetVersion(m proto.GeneratedMessage) (string, error) {
|
||||||
|
@ -53,13 +53,42 @@ func GetPrivilegeExtObj(m proto.GeneratedMessage) (commonpb.PrivilegeExt, error)
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetResourceName(m proto.GeneratedMessage, index int32) string {
|
// GetObjectName get object name from the grpc message according to the filed index. The filed is a string.
|
||||||
|
func GetObjectName(m proto.GeneratedMessage, index int32) string {
|
||||||
if index <= 0 {
|
if index <= 0 {
|
||||||
return GlobalResourceName
|
return AnyObjectName
|
||||||
}
|
}
|
||||||
msg := proto.MessageReflect(proto.MessageV1(m))
|
msg := proto.MessageReflect(proto.MessageV1(m))
|
||||||
msgDesc := msg.Descriptor()
|
msgDesc := msg.Descriptor()
|
||||||
return msg.Get(msgDesc.Fields().ByNumber(protoreflect.FieldNumber(index))).String()
|
value := msg.Get(msgDesc.Fields().ByNumber(protoreflect.FieldNumber(index)))
|
||||||
|
user, ok := value.Interface().(protoreflect.Message)
|
||||||
|
if ok {
|
||||||
|
userDesc := user.Descriptor()
|
||||||
|
value = user.Get(userDesc.Fields().ByNumber(protoreflect.FieldNumber(1)))
|
||||||
|
if value.String() == "" {
|
||||||
|
return AnyObjectName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetObjectNames get object names from the grpc message according to the filed index. The filed is an array.
|
||||||
|
func GetObjectNames(m proto.GeneratedMessage, index int32) []string {
|
||||||
|
if index <= 0 {
|
||||||
|
return []string{}
|
||||||
|
}
|
||||||
|
msg := proto.MessageReflect(proto.MessageV1(m))
|
||||||
|
msgDesc := msg.Descriptor()
|
||||||
|
value := msg.Get(msgDesc.Fields().ByNumber(protoreflect.FieldNumber(index)))
|
||||||
|
names, ok := value.Interface().(protoreflect.List)
|
||||||
|
if !ok {
|
||||||
|
return []string{}
|
||||||
|
}
|
||||||
|
res := make([]string, names.Len())
|
||||||
|
for i := 0; i < names.Len(); i++ {
|
||||||
|
res[i] = names.Get(i).String()
|
||||||
|
}
|
||||||
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func PolicyForPrivilege(roleName string, objectType string, objectName string, privilege string) string {
|
func PolicyForPrivilege(roleName string, objectType string, objectName string, privilege string) string {
|
||||||
|
|
|
@ -44,12 +44,36 @@ func Test_GetPrivilegeExtObj(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_GetResourceName(t *testing.T) {
|
func Test_GetResourceName(t *testing.T) {
|
||||||
|
{
|
||||||
request := &milvuspb.HasCollectionRequest{
|
request := &milvuspb.HasCollectionRequest{
|
||||||
DbName: "test",
|
DbName: "test",
|
||||||
CollectionName: "col1",
|
CollectionName: "col1",
|
||||||
}
|
}
|
||||||
assert.Equal(t, "*", GetResourceName(request, 0))
|
assert.Equal(t, "*", GetObjectName(request, 0))
|
||||||
assert.Equal(t, "col1", GetResourceName(request, 3))
|
assert.Equal(t, "col1", GetObjectName(request, 3))
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
request := &milvuspb.SelectUserRequest{
|
||||||
|
User: &milvuspb.UserEntity{Name: "test"},
|
||||||
|
}
|
||||||
|
assert.Equal(t, "test", GetObjectName(request, 2))
|
||||||
|
|
||||||
|
request = &milvuspb.SelectUserRequest{}
|
||||||
|
assert.Equal(t, "*", GetObjectName(request, 2))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_GetResourceNames(t *testing.T) {
|
||||||
|
request := &milvuspb.FlushRequest{
|
||||||
|
DbName: "test",
|
||||||
|
CollectionNames: []string{"col1", "col2"},
|
||||||
|
}
|
||||||
|
assert.Equal(t, 0, len(GetObjectNames(request, 0)))
|
||||||
|
assert.Equal(t, 0, len(GetObjectNames(request, 2)))
|
||||||
|
names := GetObjectNames(request, 3)
|
||||||
|
assert.Equal(t, 2, len(names))
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_PolicyForPrivilege(t *testing.T) {
|
func Test_PolicyForPrivilege(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue