diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ec01da --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# local env files +.env.local +.env.*.local + +# Log files +*.log + +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.iml +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +/cmd/runtime +/cmd/logs/*.log +/cmd/runtime/log/*.log +/build/* diff --git a/api/account/account.pb.go b/api/account/account.pb.go index 51fe8f9..c96be33 100644 --- a/api/account/account.pb.go +++ b/api/account/account.pb.go @@ -42,9 +42,9 @@ type CheckBeforeRegisterRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` - JobNum string `protobuf:"bytes,2,opt,name=jobNum,proto3" json:"jobNum,omitempty"` - TelNum string `protobuf:"bytes,3,opt,name=telNum,proto3" json:"telNum,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` + JobNum string `protobuf:"bytes,2,opt,name=jobNum,proto3" json:"jobNum"` + TelNum string `protobuf:"bytes,3,opt,name=telNum,proto3" json:"telNum"` } func (x *CheckBeforeRegisterRequest) Reset() { @@ -105,11 +105,11 @@ type SampleAccountRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` - Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` - From string `protobuf:"bytes,4,opt,name=from,proto3" json:"from,omitempty"` - TelNum string `protobuf:"bytes,5,opt,name=telNum,proto3" json:"telNum,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` + Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code"` + From string `protobuf:"bytes,4,opt,name=from,proto3" json:"from"` + TelNum string `protobuf:"bytes,5,opt,name=telNum,proto3" json:"telNum"` } func (x *SampleAccountRequest) Reset() { @@ -184,8 +184,8 @@ type SampleAccountResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IsNowAlreadyLogin bool `protobuf:"varint,1,opt,name=isNowAlreadyLogin,proto3" json:"isNowAlreadyLogin,omitempty"` - Num uint32 `protobuf:"varint,2,opt,name=num,proto3" json:"num,omitempty"` // 同时在线的数量 + IsNowAlreadyLogin bool `protobuf:"varint,1,opt,name=isNowAlreadyLogin,proto3" json:"isNowAlreadyLogin"` + Num uint32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` // 同时在线的数量 } func (x *SampleAccountResponse) Reset() { @@ -239,8 +239,8 @@ type LoginAndSqueezeOtherResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NeedDetectImageUrl string `protobuf:"bytes,1,opt,name=needDetectImageUrl,proto3" json:"needDetectImageUrl,omitempty"` - RecentImageUrl string `protobuf:"bytes,2,opt,name=recentImageUrl,proto3" json:"recentImageUrl,omitempty"` + NeedDetectImageUrl string `protobuf:"bytes,1,opt,name=needDetectImageUrl,proto3" json:"needDetectImageUrl"` + RecentImageUrl string `protobuf:"bytes,2,opt,name=recentImageUrl,proto3" json:"recentImageUrl"` } func (x *LoginAndSqueezeOtherResponse) Reset() { @@ -294,9 +294,9 @@ type IsSamePersonResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IsPass bool `protobuf:"varint,1,opt,name=isPass,proto3" json:"isPass,omitempty"` - Rate uint32 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"` //相似度 - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` //相似度 + IsPass bool `protobuf:"varint,1,opt,name=isPass,proto3" json:"isPass"` + Rate uint32 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate"` //相似度 + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message"` //相似度 } func (x *IsSamePersonResponse) Reset() { @@ -357,8 +357,8 @@ type IsSamePersonRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NeedDetectImageUrl string `protobuf:"bytes,1,opt,name=needDetectImageUrl,proto3" json:"needDetectImageUrl,omitempty"` - RecentImageUrl string `protobuf:"bytes,2,opt,name=recentImageUrl,proto3" json:"recentImageUrl,omitempty"` + NeedDetectImageUrl string `protobuf:"bytes,1,opt,name=needDetectImageUrl,proto3" json:"needDetectImageUrl"` + RecentImageUrl string `protobuf:"bytes,2,opt,name=recentImageUrl,proto3" json:"recentImageUrl"` } func (x *IsSamePersonRequest) Reset() { @@ -412,8 +412,8 @@ type UpdatePassportStatusRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` } func (x *UpdatePassportStatusRequest) Reset() { @@ -467,9 +467,9 @@ type CreateChainAccountResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` - Men string `protobuf:"bytes,2,opt,name=men,proto3" json:"men,omitempty"` - PublicKey string `protobuf:"bytes,3,opt,name=publicKey,proto3" json:"publicKey,omitempty"` + Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` + Men string `protobuf:"bytes,2,opt,name=men,proto3" json:"men"` + PublicKey string `protobuf:"bytes,3,opt,name=publicKey,proto3" json:"publicKey"` } func (x *CreateChainAccountResponse) Reset() { @@ -530,8 +530,8 @@ type UsersByJobNumRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` - JobNum []string `protobuf:"bytes,2,rep,name=jobNum,proto3" json:"jobNum,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` + JobNum []string `protobuf:"bytes,2,rep,name=jobNum,proto3" json:"jobNum"` } func (x *UsersByJobNumRequest) Reset() { @@ -585,9 +585,9 @@ type QueryPersonnelWithTheSameNameRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` - Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status"` } func (x *QueryPersonnelWithTheSameNameRequest) Reset() { @@ -648,8 +648,8 @@ type QueryPersonnelWithTheSameNameResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` - Count uint64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names"` + Count uint64 `protobuf:"varint,2,opt,name=count,proto3" json:"count"` } func (x *QueryPersonnelWithTheSameNameResponse) Reset() { @@ -703,25 +703,25 @@ type ListV2Request struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` - Page uint64 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` - Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` - NickName string `protobuf:"bytes,5,opt,name=nickName,proto3" json:"nickName,omitempty"` - TelNum string `protobuf:"bytes,6,opt,name=telNum,proto3" json:"telNum,omitempty"` - Status string `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"` - PositionName string `protobuf:"bytes,8,opt,name=positionName,proto3" json:"positionName,omitempty"` - JobNum string `protobuf:"bytes,9,opt,name=jobNum,proto3" json:"jobNum,omitempty"` - MailAccount string `protobuf:"bytes,10,opt,name=mailAccount,proto3" json:"mailAccount,omitempty"` - StartEnterDate string `protobuf:"bytes,11,opt,name=startEnterDate,proto3" json:"startEnterDate,omitempty"` - EndEnterDate string `protobuf:"bytes,12,opt,name=endEnterDate,proto3" json:"endEnterDate,omitempty"` - PositionId uint32 `protobuf:"varint,13,opt,name=positionId,proto3" json:"positionId,omitempty"` - DepartmentId uint32 `protobuf:"varint,14,opt,name=departmentId,proto3" json:"departmentId,omitempty"` - DepartmentName string `protobuf:"bytes,15,opt,name=departmentName,proto3" json:"departmentName,omitempty"` - DepartmentNames []string `protobuf:"bytes,16,rep,name=departmentNames,proto3" json:"departmentNames,omitempty"` - PositionIds []uint32 `protobuf:"varint,17,rep,packed,name=positionIds,proto3" json:"positionIds,omitempty"` - DepartmentIds []uint32 `protobuf:"varint,18,rep,packed,name=departmentIds,proto3" json:"departmentIds,omitempty"` - FatherDepartmentId uint32 `protobuf:"varint,19,opt,name=fatherDepartmentId,proto3" json:"fatherDepartmentId,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` + PageSize uint64 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"` + Page uint64 `protobuf:"varint,3,opt,name=page,proto3" json:"page"` + Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key"` + NickName string `protobuf:"bytes,5,opt,name=nickName,proto3" json:"nickName"` + TelNum string `protobuf:"bytes,6,opt,name=telNum,proto3" json:"telNum"` + Status string `protobuf:"bytes,7,opt,name=status,proto3" json:"status"` + PositionName string `protobuf:"bytes,8,opt,name=positionName,proto3" json:"positionName"` + JobNum string `protobuf:"bytes,9,opt,name=jobNum,proto3" json:"jobNum"` + MailAccount string `protobuf:"bytes,10,opt,name=mailAccount,proto3" json:"mailAccount"` + StartEnterDate string `protobuf:"bytes,11,opt,name=startEnterDate,proto3" json:"startEnterDate"` + EndEnterDate string `protobuf:"bytes,12,opt,name=endEnterDate,proto3" json:"endEnterDate"` + PositionId uint32 `protobuf:"varint,13,opt,name=positionId,proto3" json:"positionId"` + DepartmentId uint32 `protobuf:"varint,14,opt,name=departmentId,proto3" json:"departmentId"` + DepartmentName string `protobuf:"bytes,15,opt,name=departmentName,proto3" json:"departmentName"` + DepartmentNames []string `protobuf:"bytes,16,rep,name=departmentNames,proto3" json:"departmentNames"` + PositionIds []uint32 `protobuf:"varint,17,rep,packed,name=positionIds,proto3" json:"positionIds"` + DepartmentIds []uint32 `protobuf:"varint,18,rep,packed,name=departmentIds,proto3" json:"departmentIds"` + FatherDepartmentId uint32 `protobuf:"varint,19,opt,name=fatherDepartmentId,proto3" json:"fatherDepartmentId"` } func (x *ListV2Request) Reset() { @@ -894,14 +894,14 @@ type SendClockInWechatRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` - TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum,omitempty"` - OperatedAt string `protobuf:"bytes,3,opt,name=operatedAt,proto3" json:"operatedAt,omitempty"` - ClockType string `protobuf:"bytes,4,opt,name=clockType,proto3" json:"clockType,omitempty"` - UserId uint32 `protobuf:"varint,5,opt,name=userId,proto3" json:"userId,omitempty"` - GhId string `protobuf:"bytes,6,opt,name=ghId,proto3" json:"ghId,omitempty"` - Address string `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"` - LogId uint64 `protobuf:"varint,8,opt,name=logId,proto3" json:"logId,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` + TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum"` + OperatedAt string `protobuf:"bytes,3,opt,name=operatedAt,proto3" json:"operatedAt"` + ClockType string `protobuf:"bytes,4,opt,name=clockType,proto3" json:"clockType"` + UserId uint32 `protobuf:"varint,5,opt,name=userId,proto3" json:"userId"` + GhId string `protobuf:"bytes,6,opt,name=ghId,proto3" json:"ghId"` + Address string `protobuf:"bytes,7,opt,name=address,proto3" json:"address"` + LogId uint64 `protobuf:"varint,8,opt,name=logId,proto3" json:"logId"` } func (x *SendClockInWechatRequest) Reset() { @@ -997,9 +997,9 @@ type MailAccountByNickNameRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - NickName string `protobuf:"bytes,2,opt,name=NickName,json=nickName,proto3" json:"NickName,omitempty"` - ID uint32 `protobuf:"varint,3,opt,name=ID,proto3" json:"ID,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + NickName string `protobuf:"bytes,2,opt,name=NickName,json=nickName,proto3" json:"NickName"` + ID uint32 `protobuf:"varint,3,opt,name=ID,proto3" json:"ID"` } func (x *MailAccountByNickNameRequest) Reset() { @@ -1060,9 +1060,9 @@ type CreateMaiAccountRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - NickName string `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName,omitempty"` - Domain string `protobuf:"bytes,3,opt,name=domain,proto3" json:"domain,omitempty"` + ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + NickName string `protobuf:"bytes,2,opt,name=nickName,proto3" json:"nickName"` + Domain string `protobuf:"bytes,3,opt,name=domain,proto3" json:"domain"` } func (x *CreateMaiAccountRequest) Reset() { @@ -1123,8 +1123,8 @@ type MaiAccountResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EnglishName string `protobuf:"bytes,1,opt,name=englishName,proto3" json:"englishName,omitempty"` - MailAccount string `protobuf:"bytes,2,opt,name=mailAccount,proto3" json:"mailAccount,omitempty"` + EnglishName string `protobuf:"bytes,1,opt,name=englishName,proto3" json:"englishName"` + MailAccount string `protobuf:"bytes,2,opt,name=mailAccount,proto3" json:"mailAccount"` } func (x *MaiAccountResponse) Reset() { @@ -1178,7 +1178,7 @@ type FddRemoveUserRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WxUserId uint32 `protobuf:"varint,2,opt,name=wxUserId,proto3" json:"wxUserId,omitempty"` + WxUserId uint32 `protobuf:"varint,2,opt,name=wxUserId,proto3" json:"wxUserId"` } func (x *FddRemoveUserRequest) Reset() { @@ -1225,14 +1225,14 @@ type FddCreateUserRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Openid string `protobuf:"bytes,1,opt,name=openid,proto3" json:"openid,omitempty"` - WxUserId uint32 `protobuf:"varint,2,opt,name=wxUserId,proto3" json:"wxUserId,omitempty"` - UserId uint64 `protobuf:"varint,3,opt,name=UserId,proto3" json:"UserId,omitempty"` - CustomerId string `protobuf:"bytes,4,opt,name=customerId,proto3" json:"customerId,omitempty"` - IsVerify bool `protobuf:"varint,5,opt,name=isVerify,proto3" json:"isVerify,omitempty"` - TransactionNo string `protobuf:"bytes,6,opt,name=transactionNo,proto3" json:"transactionNo,omitempty"` - Status uint32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` - IdType string `protobuf:"bytes,8,opt,name=idType,proto3" json:"idType,omitempty"` + Openid string `protobuf:"bytes,1,opt,name=openid,proto3" json:"openid"` + WxUserId uint32 `protobuf:"varint,2,opt,name=wxUserId,proto3" json:"wxUserId"` + UserId uint64 `protobuf:"varint,3,opt,name=UserId,proto3" json:"UserId"` + CustomerId string `protobuf:"bytes,4,opt,name=customerId,proto3" json:"customerId"` + IsVerify bool `protobuf:"varint,5,opt,name=isVerify,proto3" json:"isVerify"` + TransactionNo string `protobuf:"bytes,6,opt,name=transactionNo,proto3" json:"transactionNo"` + Status uint32 `protobuf:"varint,7,opt,name=status,proto3" json:"status"` + IdType string `protobuf:"bytes,8,opt,name=idType,proto3" json:"idType"` } func (x *FddCreateUserRequest) Reset() { @@ -1328,8 +1328,8 @@ type WxBoxUserInfoRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Openid string `protobuf:"bytes,2,opt,name=openid,proto3" json:"openid,omitempty"` - GhId string `protobuf:"bytes,3,opt,name=ghId,proto3" json:"ghId,omitempty"` + Openid string `protobuf:"bytes,2,opt,name=openid,proto3" json:"openid"` + GhId string `protobuf:"bytes,3,opt,name=ghId,proto3" json:"ghId"` } func (x *WxBoxUserInfoRequest) Reset() { @@ -1383,9 +1383,9 @@ type WxGetOpenIdByCodeRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` - State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` - GhId string `protobuf:"bytes,3,opt,name=ghId,proto3" json:"ghId,omitempty"` + Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code"` + State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state"` + GhId string `protobuf:"bytes,3,opt,name=ghId,proto3" json:"ghId"` } func (x *WxGetOpenIdByCodeRequest) Reset() { @@ -1446,7 +1446,7 @@ type WxGetOpenIdByCodeResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpenId string `protobuf:"bytes,1,opt,name=openId,proto3" json:"openId,omitempty"` + OpenId string `protobuf:"bytes,1,opt,name=openId,proto3" json:"openId"` } func (x *WxGetOpenIdByCodeResponse) Reset() { @@ -1493,7 +1493,7 @@ type WxBoxTelNumByCodeResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TelNum string `protobuf:"bytes,1,opt,name=telNum,proto3" json:"telNum,omitempty"` + TelNum string `protobuf:"bytes,1,opt,name=telNum,proto3" json:"telNum"` } func (x *WxBoxTelNumByCodeResponse) Reset() { @@ -1540,12 +1540,12 @@ type WxBoxUserInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpenId string `protobuf:"bytes,1,opt,name=openId,proto3" json:"openId,omitempty"` - GhId string `protobuf:"bytes,2,opt,name=ghId,proto3" json:"ghId,omitempty"` - IsNew bool `protobuf:"varint,3,opt,name=isNew,proto3" json:"isNew,omitempty"` - User *UserInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"` - WxUserId uint32 `protobuf:"varint,5,opt,name=wxUserId,proto3" json:"wxUserId,omitempty"` - Fdd *FddInfo `protobuf:"bytes,6,opt,name=fdd,proto3" json:"fdd,omitempty"` + OpenId string `protobuf:"bytes,1,opt,name=openId,proto3" json:"openId"` + GhId string `protobuf:"bytes,2,opt,name=ghId,proto3" json:"ghId"` + IsNew bool `protobuf:"varint,3,opt,name=isNew,proto3" json:"isNew"` + User *UserInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user"` + WxUserId uint32 `protobuf:"varint,5,opt,name=wxUserId,proto3" json:"wxUserId"` + Fdd *FddInfo `protobuf:"bytes,6,opt,name=fdd,proto3" json:"fdd"` } func (x *WxBoxUserInfo) Reset() { @@ -1627,12 +1627,12 @@ type FddInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - CustomerId string `protobuf:"bytes,2,opt,name=customerId,proto3" json:"customerId,omitempty"` - IsVerify bool `protobuf:"varint,3,opt,name=isVerify,proto3" json:"isVerify,omitempty"` - TransactionNo string `protobuf:"bytes,4,opt,name=transactionNo,proto3" json:"transactionNo,omitempty"` - Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` - IdType string `protobuf:"bytes,6,opt,name=idType,proto3" json:"idType,omitempty"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + CustomerId string `protobuf:"bytes,2,opt,name=customerId,proto3" json:"customerId"` + IsVerify bool `protobuf:"varint,3,opt,name=isVerify,proto3" json:"isVerify"` + TransactionNo string `protobuf:"bytes,4,opt,name=transactionNo,proto3" json:"transactionNo"` + Status uint32 `protobuf:"varint,5,opt,name=status,proto3" json:"status"` + IdType string `protobuf:"bytes,6,opt,name=idType,proto3" json:"idType"` } func (x *FddInfo) Reset() { @@ -1714,21 +1714,21 @@ type UserInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - NickName string `protobuf:"bytes,3,opt,name=nickName,proto3" json:"nickName,omitempty"` - TelNum string `protobuf:"bytes,5,opt,name=telNum,proto3" json:"telNum,omitempty"` - Avatar string `protobuf:"bytes,7,opt,name=avatar,proto3" json:"avatar,omitempty"` - CreateAt string `protobuf:"bytes,8,opt,name=createAt,proto3" json:"createAt,omitempty"` - RealNameID uint64 `protobuf:"varint,9,opt,name=realNameID,proto3" json:"realNameID,omitempty"` - RealName string `protobuf:"bytes,10,opt,name=realName,proto3" json:"realName,omitempty"` - IDNum string `protobuf:"bytes,11,opt,name=iDNum,proto3" json:"iDNum,omitempty"` - Domain string `protobuf:"bytes,12,opt,name=domain,proto3" json:"domain,omitempty"` - RealIDImgA string `protobuf:"bytes,17,opt,name=realIDImgA,proto3" json:"realIDImgA,omitempty"` - RealIDImgB string `protobuf:"bytes,18,opt,name=realIDImgB,proto3" json:"realIDImgB,omitempty"` - RealNameIDName string `protobuf:"bytes,19,opt,name=realNameIDName,proto3" json:"realNameIDName,omitempty"` - Video string `protobuf:"bytes,20,opt,name=video,proto3" json:"video,omitempty"` - IdType string `protobuf:"bytes,21,opt,name=idType,proto3" json:"idType,omitempty"` //0 护照 港澳台 护照 通信证等 - Passport *Passport `protobuf:"bytes,22,opt,name=passport,proto3" json:"passport,omitempty"` //护照 港澳台 护照 通信证等 + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + NickName string `protobuf:"bytes,3,opt,name=nickName,proto3" json:"nickName"` + TelNum string `protobuf:"bytes,5,opt,name=telNum,proto3" json:"telNum"` + Avatar string `protobuf:"bytes,7,opt,name=avatar,proto3" json:"avatar"` + CreateAt string `protobuf:"bytes,8,opt,name=createAt,proto3" json:"createAt"` + RealNameID uint64 `protobuf:"varint,9,opt,name=realNameID,proto3" json:"realNameID"` + RealName string `protobuf:"bytes,10,opt,name=realName,proto3" json:"realName"` + IDNum string `protobuf:"bytes,11,opt,name=iDNum,proto3" json:"iDNum"` + Domain string `protobuf:"bytes,12,opt,name=domain,proto3" json:"domain"` + RealIDImgA string `protobuf:"bytes,17,opt,name=realIDImgA,proto3" json:"realIDImgA"` + RealIDImgB string `protobuf:"bytes,18,opt,name=realIDImgB,proto3" json:"realIDImgB"` + RealNameIDName string `protobuf:"bytes,19,opt,name=realNameIDName,proto3" json:"realNameIDName"` + Video string `protobuf:"bytes,20,opt,name=video,proto3" json:"video"` + IdType string `protobuf:"bytes,21,opt,name=idType,proto3" json:"idType"` //0 护照 港澳台 护照 通信证等 + Passport *Passport `protobuf:"bytes,22,opt,name=passport,proto3" json:"passport"` //护照 港澳台 护照 通信证等 } func (x *UserInfo) Reset() { @@ -1873,8 +1873,8 @@ type CommonRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from"` } func (x *CommonRequest) Reset() { @@ -1928,7 +1928,7 @@ type WxAppRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GhId string `protobuf:"bytes,1,opt,name=GhId,json=ID,proto3" json:"GhId,omitempty"` + GhId string `protobuf:"bytes,1,opt,name=GhId,json=ID,proto3" json:"GhId"` } func (x *WxAppRequest) Reset() { @@ -1975,8 +1975,8 @@ type WxAppResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AppID string `protobuf:"bytes,1,opt,name=AppID,json=appID,proto3" json:"AppID,omitempty"` - AppSecret string `protobuf:"bytes,2,opt,name=AppSecret,json=appSecret,proto3" json:"AppSecret,omitempty"` + AppID string `protobuf:"bytes,1,opt,name=AppID,json=appID,proto3" json:"AppID"` + AppSecret string `protobuf:"bytes,2,opt,name=AppSecret,json=appSecret,proto3" json:"AppSecret"` } func (x *WxAppResponse) Reset() { @@ -2030,8 +2030,8 @@ type WxUserUpdateRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WxID uint32 `protobuf:"varint,1,opt,name=wxID,json=wxId,proto3" json:"wxID,omitempty"` - UserID uint32 `protobuf:"varint,2,opt,name=userID,proto3" json:"userID,omitempty"` + WxID uint32 `protobuf:"varint,1,opt,name=wxID,json=wxId,proto3" json:"wxID"` + UserID uint32 `protobuf:"varint,2,opt,name=userID,proto3" json:"userID"` } func (x *WxUserUpdateRequest) Reset() { @@ -2085,8 +2085,8 @@ type WxUserOrCreateRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpenID string `protobuf:"bytes,1,opt,name=OpenID,json=openID,proto3" json:"OpenID,omitempty"` - GhID string `protobuf:"bytes,2,opt,name=GhID,json=ghID,proto3" json:"GhID,omitempty"` + OpenID string `protobuf:"bytes,1,opt,name=OpenID,json=openID,proto3" json:"OpenID"` + GhID string `protobuf:"bytes,2,opt,name=GhID,json=ghID,proto3" json:"GhID"` } func (x *WxUserOrCreateRequest) Reset() { @@ -2140,11 +2140,11 @@ type WxUserResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpenID string `protobuf:"bytes,1,opt,name=OpenID,json=openID,proto3" json:"OpenID,omitempty"` - UserID uint32 `protobuf:"varint,2,opt,name=UserID,json=userID,proto3" json:"UserID,omitempty"` - GhID string `protobuf:"bytes,3,opt,name=GhID,json=ghID,proto3" json:"GhID,omitempty"` - RoleAuth string `protobuf:"bytes,4,opt,name=RoleAuth,json=roleAuth,proto3" json:"RoleAuth,omitempty"` - ID uint32 `protobuf:"varint,5,opt,name=ID,proto3" json:"ID,omitempty"` + OpenID string `protobuf:"bytes,1,opt,name=OpenID,json=openID,proto3" json:"OpenID"` + UserID uint32 `protobuf:"varint,2,opt,name=UserID,json=userID,proto3" json:"UserID"` + GhID string `protobuf:"bytes,3,opt,name=GhID,json=ghID,proto3" json:"GhID"` + RoleAuth string `protobuf:"bytes,4,opt,name=RoleAuth,json=roleAuth,proto3" json:"RoleAuth"` + ID uint32 `protobuf:"varint,5,opt,name=ID,proto3" json:"ID"` } func (x *WxUserResponse) Reset() { @@ -2219,7 +2219,7 @@ type LoginLogsResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []*LoginLog `protobuf:"bytes,1,rep,name=Data,json=data,proto3" json:"Data,omitempty"` + Data []*LoginLog `protobuf:"bytes,1,rep,name=Data,json=data,proto3" json:"Data"` } func (x *LoginLogsResponse) Reset() { @@ -2266,17 +2266,17 @@ type LoginLog struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` - UserId uint64 `protobuf:"varint,3,opt,name=UserId,json=userId,proto3" json:"UserId,omitempty"` - Ip string `protobuf:"bytes,4,opt,name=Ip,json=ip,proto3" json:"Ip,omitempty"` - Token string `protobuf:"bytes,5,opt,name=Token,json=token,proto3" json:"Token,omitempty"` - Status uint64 `protobuf:"varint,6,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - ExpireDate string `protobuf:"bytes,7,opt,name=ExpireDate,json=expireDate,proto3" json:"ExpireDate,omitempty"` - LastDate string `protobuf:"bytes,8,opt,name=LastDate,json=lastDate,proto3" json:"LastDate,omitempty"` - LogoutDate string `protobuf:"bytes,9,opt,name=LogoutDate,json=logoutDate,proto3" json:"LogoutDate,omitempty"` - CreatedAt string `protobuf:"bytes,10,opt,name=CreatedAt,json=createdAt,proto3" json:"CreatedAt,omitempty"` - Address string `protobuf:"bytes,11,opt,name=Address,json=address,proto3" json:"Address,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID"` + UserId uint64 `protobuf:"varint,3,opt,name=UserId,json=userId,proto3" json:"UserId"` + Ip string `protobuf:"bytes,4,opt,name=Ip,json=ip,proto3" json:"Ip"` + Token string `protobuf:"bytes,5,opt,name=Token,json=token,proto3" json:"Token"` + Status uint64 `protobuf:"varint,6,opt,name=Status,json=status,proto3" json:"Status"` + ExpireDate string `protobuf:"bytes,7,opt,name=ExpireDate,json=expireDate,proto3" json:"ExpireDate"` + LastDate string `protobuf:"bytes,8,opt,name=LastDate,json=lastDate,proto3" json:"LastDate"` + LogoutDate string `protobuf:"bytes,9,opt,name=LogoutDate,json=logoutDate,proto3" json:"LogoutDate"` + CreatedAt string `protobuf:"bytes,10,opt,name=CreatedAt,json=createdAt,proto3" json:"CreatedAt"` + Address string `protobuf:"bytes,11,opt,name=Address,json=address,proto3" json:"Address"` } func (x *LoginLog) Reset() { @@ -2393,8 +2393,8 @@ type OnlineLogByIdRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID"` } func (x *OnlineLogByIdRequest) Reset() { @@ -2448,8 +2448,8 @@ type LoginInfosByUserIdRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - UserId uint64 `protobuf:"varint,2,opt,name=UserId,json=userId,proto3" json:"UserId,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + UserId uint64 `protobuf:"varint,2,opt,name=UserId,json=userId,proto3" json:"UserId"` } func (x *LoginInfosByUserIdRequest) Reset() { @@ -2503,12 +2503,12 @@ type SendNewTelNumMsgRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` - NewTelNum string `protobuf:"bytes,3,opt,name=NewTelNum,json=newTelNum,proto3" json:"NewTelNum,omitempty"` - Code string `protobuf:"bytes,4,opt,name=Code,json=code,proto3" json:"Code,omitempty"` - Project string `protobuf:"bytes,5,opt,name=Project,json=project,proto3" json:"Project,omitempty"` - SignNo uint32 `protobuf:"varint,6,opt,name=signNo,proto3" json:"signNo,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID"` + NewTelNum string `protobuf:"bytes,3,opt,name=NewTelNum,json=newTelNum,proto3" json:"NewTelNum"` + Code string `protobuf:"bytes,4,opt,name=Code,json=code,proto3" json:"Code"` + Project string `protobuf:"bytes,5,opt,name=Project,json=project,proto3" json:"Project"` + SignNo uint32 `protobuf:"varint,6,opt,name=signNo,proto3" json:"signNo"` } func (x *SendNewTelNumMsgRequest) Reset() { @@ -2590,8 +2590,8 @@ type UserByTelRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - Tel string `protobuf:"bytes,2,opt,name=Tel,json=tel,proto3" json:"Tel,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + Tel string `protobuf:"bytes,2,opt,name=Tel,json=tel,proto3" json:"Tel"` } func (x *UserByTelRequest) Reset() { @@ -2683,8 +2683,8 @@ type UsersByTelRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - Tels []string `protobuf:"bytes,2,rep,name=Tels,json=tels,proto3" json:"Tels,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + Tels []string `protobuf:"bytes,2,rep,name=Tels,json=tels,proto3" json:"Tels"` } func (x *UsersByTelRequest) Reset() { @@ -2738,13 +2738,13 @@ type ListByIDsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - IDs []uint64 `protobuf:"varint,2,rep,packed,name=IDs,proto3" json:"IDs,omitempty"` - OrderType uint64 `protobuf:"varint,3,opt,name=OrderType,proto3" json:"OrderType,omitempty"` - Page uint64 `protobuf:"varint,4,opt,name=Page,json=page,proto3" json:"Page,omitempty"` - PageSize uint64 `protobuf:"varint,5,opt,name=PageSize,json=pageSize,proto3" json:"PageSize,omitempty"` - NickName string `protobuf:"bytes,6,opt,name=NickName,json=nickName,proto3" json:"NickName,omitempty"` - InvitationCode []string `protobuf:"bytes,7,rep,name=InvitationCode,json=invitationCode,proto3" json:"InvitationCode,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + IDs []uint64 `protobuf:"varint,2,rep,packed,name=IDs,proto3" json:"IDs"` + OrderType uint64 `protobuf:"varint,3,opt,name=OrderType,proto3" json:"OrderType"` + Page uint64 `protobuf:"varint,4,opt,name=Page,json=page,proto3" json:"Page"` + PageSize uint64 `protobuf:"varint,5,opt,name=PageSize,json=pageSize,proto3" json:"PageSize"` + NickName string `protobuf:"bytes,6,opt,name=NickName,json=nickName,proto3" json:"NickName"` + InvitationCode []string `protobuf:"bytes,7,rep,name=InvitationCode,json=invitationCode,proto3" json:"InvitationCode"` } func (x *ListByIDsRequest) Reset() { @@ -2833,14 +2833,14 @@ type SendMsgRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum"` //string TelNum = 2 [json_name = "telNum",(validator.field) = {regex: "^1\\d{10}$",human_error: "70002"}]; - Project string `protobuf:"bytes,3,opt,name=Project,json=project,proto3" json:"Project,omitempty"` - SignNo uint32 `protobuf:"varint,4,opt,name=signNo,proto3" json:"signNo,omitempty"` - MId uint32 `protobuf:"varint,5,opt,name=mId,proto3" json:"mId,omitempty"` - Scope string `protobuf:"bytes,6,opt,name=scope,proto3" json:"scope,omitempty"` //标记模块 - Zone string `protobuf:"bytes,7,opt,name=zone,proto3" json:"zone,omitempty"` //地区 不同地区切换不同发送帐号 + Project string `protobuf:"bytes,3,opt,name=Project,json=project,proto3" json:"Project"` + SignNo uint32 `protobuf:"varint,4,opt,name=signNo,proto3" json:"signNo"` + MId uint32 `protobuf:"varint,5,opt,name=mId,proto3" json:"mId"` + Scope string `protobuf:"bytes,6,opt,name=scope,proto3" json:"scope"` //标记模块 + Zone string `protobuf:"bytes,7,opt,name=zone,proto3" json:"zone"` //地区 不同地区切换不同发送帐号 } func (x *SendMsgRequest) Reset() { @@ -2929,14 +2929,14 @@ type SendCustomMsgRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - Project string `protobuf:"bytes,3,opt,name=Project,json=project,proto3" json:"Project,omitempty"` - Url string `protobuf:"bytes,4,opt,name=Url,proto3" json:"Url,omitempty"` - ID uint64 `protobuf:"varint,5,opt,name=ID,proto3" json:"ID,omitempty"` - MId uint64 `protobuf:"varint,6,opt,name=MId,json=mId,proto3" json:"MId,omitempty"` - Location uint64 `protobuf:"varint,7,opt,name=Location,json=location,proto3" json:"Location,omitempty"` - SigNo uint32 `protobuf:"varint,8,opt,name=SigNo,json=sigNo,proto3" json:"SigNo,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum"` + Project string `protobuf:"bytes,3,opt,name=Project,json=project,proto3" json:"Project"` + Url string `protobuf:"bytes,4,opt,name=Url,proto3" json:"Url"` + ID uint64 `protobuf:"varint,5,opt,name=ID,proto3" json:"ID"` + MId uint64 `protobuf:"varint,6,opt,name=MId,json=mId,proto3" json:"MId"` + Location uint64 `protobuf:"varint,7,opt,name=Location,json=location,proto3" json:"Location"` + SigNo uint32 `protobuf:"varint,8,opt,name=SigNo,json=sigNo,proto3" json:"SigNo"` } func (x *SendCustomMsgRequest) Reset() { @@ -3032,10 +3032,10 @@ type CheckMsgRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - Code string `protobuf:"bytes,3,opt,name=Code,json=code,proto3" json:"Code,omitempty"` - Scope string `protobuf:"bytes,4,opt,name=scope,proto3" json:"scope,omitempty"` //标记模块 + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum"` + Code string `protobuf:"bytes,3,opt,name=Code,json=code,proto3" json:"Code"` + Scope string `protobuf:"bytes,4,opt,name=scope,proto3" json:"scope"` //标记模块 } func (x *CheckMsgRequest) Reset() { @@ -3141,9 +3141,9 @@ type RemoveRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` - Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID"` + Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code"` } func (x *RemoveRequest) Reset() { @@ -3204,21 +3204,21 @@ type WriteOffRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` - UserId uint64 `protobuf:"varint,3,opt,name=userId,proto3" json:"userId,omitempty"` - Tel string `protobuf:"bytes,4,opt,name=tel,proto3" json:"tel,omitempty"` - JonNum string `protobuf:"bytes,5,opt,name=jonNum,proto3" json:"jonNum,omitempty"` - UserName string `protobuf:"bytes,6,opt,name=userName,proto3" json:"userName,omitempty"` - EnterDate string `protobuf:"bytes,7,opt,name=enterDate,proto3" json:"enterDate,omitempty"` - PositionName string `protobuf:"bytes,8,opt,name=positionName,proto3" json:"positionName,omitempty"` - PositionId uint64 `protobuf:"varint,9,opt,name=positionId,proto3" json:"positionId,omitempty"` - SiteName string `protobuf:"bytes,10,opt,name=siteName,proto3" json:"siteName,omitempty"` - SiteId uint64 `protobuf:"varint,11,opt,name=siteId,proto3" json:"siteId,omitempty"` - AuthUrl string `protobuf:"bytes,12,opt,name=authUrl,proto3" json:"authUrl,omitempty"` - Type string `protobuf:"bytes,13,opt,name=type,proto3" json:"type,omitempty"` - Status uint32 `protobuf:"varint,14,opt,name=status,proto3" json:"status,omitempty"` - SubmitDate string `protobuf:"bytes,15,opt,name=submitDate,proto3" json:"submitDate,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain"` + UserId uint64 `protobuf:"varint,3,opt,name=userId,proto3" json:"userId"` + Tel string `protobuf:"bytes,4,opt,name=tel,proto3" json:"tel"` + JonNum string `protobuf:"bytes,5,opt,name=jonNum,proto3" json:"jonNum"` + UserName string `protobuf:"bytes,6,opt,name=userName,proto3" json:"userName"` + EnterDate string `protobuf:"bytes,7,opt,name=enterDate,proto3" json:"enterDate"` + PositionName string `protobuf:"bytes,8,opt,name=positionName,proto3" json:"positionName"` + PositionId uint64 `protobuf:"varint,9,opt,name=positionId,proto3" json:"positionId"` + SiteName string `protobuf:"bytes,10,opt,name=siteName,proto3" json:"siteName"` + SiteId uint64 `protobuf:"varint,11,opt,name=siteId,proto3" json:"siteId"` + AuthUrl string `protobuf:"bytes,12,opt,name=authUrl,proto3" json:"authUrl"` + Type string `protobuf:"bytes,13,opt,name=type,proto3" json:"type"` + Status uint32 `protobuf:"varint,14,opt,name=status,proto3" json:"status"` + SubmitDate string `protobuf:"bytes,15,opt,name=submitDate,proto3" json:"submitDate"` } func (x *WriteOffRequest) Reset() { @@ -3363,14 +3363,14 @@ type WriteOffListRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` - Domain string `protobuf:"bytes,3,opt,name=domain,proto3" json:"domain,omitempty"` - UserName string `protobuf:"bytes,4,opt,name=userName,proto3" json:"userName,omitempty"` - UserId uint64 `protobuf:"varint,5,opt,name=userId,proto3" json:"userId,omitempty"` - SiteId uint64 `protobuf:"varint,6,opt,name=siteId,proto3" json:"siteId,omitempty"` - Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"` - Status uint32 `protobuf:"varint,8,opt,name=status,proto3" json:"status,omitempty"` + Page uint64 `protobuf:"varint,1,opt,name=page,proto3" json:"page"` + PageSize uint64 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize"` + Domain string `protobuf:"bytes,3,opt,name=domain,proto3" json:"domain"` + UserName string `protobuf:"bytes,4,opt,name=userName,proto3" json:"userName"` + UserId uint64 `protobuf:"varint,5,opt,name=userId,proto3" json:"userId"` + SiteId uint64 `protobuf:"varint,6,opt,name=siteId,proto3" json:"siteId"` + Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type"` + Status uint32 `protobuf:"varint,8,opt,name=status,proto3" json:"status"` } func (x *WriteOffListRequest) Reset() { @@ -3466,8 +3466,8 @@ type WriteOffApproveRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + Status uint32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` } func (x *WriteOffApproveRequest) Reset() { @@ -3521,8 +3521,8 @@ type WriteOffListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` - WriteOffList []*WriteOffRequest `protobuf:"bytes,2,rep,name=writeOffList,proto3" json:"writeOffList,omitempty"` + Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` + WriteOffList []*WriteOffRequest `protobuf:"bytes,2,rep,name=writeOffList,proto3" json:"writeOffList"` } func (x *WriteOffListResponse) Reset() { @@ -3614,32 +3614,32 @@ type UpdateRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` //ID - Domain string `protobuf:"bytes,2,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - NickName string `protobuf:"bytes,3,opt,name=NickName,json=nickName,proto3" json:"NickName,omitempty"` - Password string `protobuf:"bytes,4,opt,name=Password,json=password,proto3" json:"Password,omitempty"` //密码 - Avatar string `protobuf:"bytes,5,opt,name=Avatar,json=avatar,proto3" json:"Avatar,omitempty"` //头像 - Status string `protobuf:"bytes,7,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - TelNum string `protobuf:"bytes,8,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - EnterDate string `protobuf:"bytes,14,opt,name=EnterDate,json=enterDate,proto3" json:"EnterDate,omitempty"` - Extend *Extend `protobuf:"bytes,17,opt,name=Extend,json=extend,proto3" json:"Extend,omitempty"` - Title string `protobuf:"bytes,18,opt,name=Title,json=title,proto3" json:"Title,omitempty"` - JobNum string `protobuf:"bytes,19,opt,name=JobNum,json=jobNum,proto3" json:"JobNum,omitempty"` - BirthDate string `protobuf:"bytes,20,opt,name=BirthDate,json=birthDate,proto3" json:"BirthDate,omitempty"` - Sex uint64 `protobuf:"varint,21,opt,name=Sex,json=sex,proto3" json:"Sex,omitempty"` - IdNum string `protobuf:"bytes,22,opt,name=IdNum,json=idNum,proto3" json:"IdNum,omitempty"` - RealName string `protobuf:"bytes,23,opt,name=RealName,json=realName,proto3" json:"RealName,omitempty"` - InvitationCode string `protobuf:"bytes,24,opt,name=InvitationCode,json=invitationCode,proto3" json:"InvitationCode,omitempty"` - LeftDate string `protobuf:"bytes,25,opt,name=LeftDate,json=leftDate,proto3" json:"LeftDate,omitempty"` - Remark string `protobuf:"bytes,26,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` - RecentImg string `protobuf:"bytes,27,opt,name=RecentImg,json=recentImg,proto3" json:"RecentImg,omitempty"` - ICNum string `protobuf:"bytes,28,opt,name=ICNum,json=icNum,proto3" json:"ICNum,omitempty"` - Train string `protobuf:"bytes,29,opt,name=Train,json=train,proto3" json:"Train,omitempty"` - Certificate string `protobuf:"bytes,30,opt,name=Certificate,json=certificate,proto3" json:"Certificate,omitempty"` - TrainVideos []*TrainVideo `protobuf:"bytes,31,rep,name=TrainVideos,json=trainVideos,proto3" json:"TrainVideos,omitempty"` - Operator *Operator `protobuf:"bytes,32,opt,name=operator,proto3" json:"operator,omitempty"` - SecurityCode string `protobuf:"bytes,33,opt,name=SecurityCode,json=securityCode,proto3" json:"SecurityCode,omitempty"` - UserExtend *UserExtend `protobuf:"bytes,34,opt,name=userExtend,proto3" json:"userExtend,omitempty"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` //ID + Domain string `protobuf:"bytes,2,opt,name=Domain,json=domain,proto3" json:"Domain"` + NickName string `protobuf:"bytes,3,opt,name=NickName,json=nickName,proto3" json:"NickName"` + Password string `protobuf:"bytes,4,opt,name=Password,json=password,proto3" json:"Password"` //密码 + Avatar string `protobuf:"bytes,5,opt,name=Avatar,json=avatar,proto3" json:"Avatar"` //头像 + Status string `protobuf:"bytes,7,opt,name=Status,json=status,proto3" json:"Status"` + TelNum string `protobuf:"bytes,8,opt,name=TelNum,json=telNum,proto3" json:"TelNum"` + EnterDate string `protobuf:"bytes,14,opt,name=EnterDate,json=enterDate,proto3" json:"EnterDate"` + Extend *Extend `protobuf:"bytes,17,opt,name=Extend,json=extend,proto3" json:"Extend"` + Title string `protobuf:"bytes,18,opt,name=Title,json=title,proto3" json:"Title"` + JobNum string `protobuf:"bytes,19,opt,name=JobNum,json=jobNum,proto3" json:"JobNum"` + BirthDate string `protobuf:"bytes,20,opt,name=BirthDate,json=birthDate,proto3" json:"BirthDate"` + Sex uint64 `protobuf:"varint,21,opt,name=Sex,json=sex,proto3" json:"Sex"` + IdNum string `protobuf:"bytes,22,opt,name=IdNum,json=idNum,proto3" json:"IdNum"` + RealName string `protobuf:"bytes,23,opt,name=RealName,json=realName,proto3" json:"RealName"` + InvitationCode string `protobuf:"bytes,24,opt,name=InvitationCode,json=invitationCode,proto3" json:"InvitationCode"` + LeftDate string `protobuf:"bytes,25,opt,name=LeftDate,json=leftDate,proto3" json:"LeftDate"` + Remark string `protobuf:"bytes,26,opt,name=Remark,json=remark,proto3" json:"Remark"` + RecentImg string `protobuf:"bytes,27,opt,name=RecentImg,json=recentImg,proto3" json:"RecentImg"` + ICNum string `protobuf:"bytes,28,opt,name=ICNum,json=icNum,proto3" json:"ICNum"` + Train string `protobuf:"bytes,29,opt,name=Train,json=train,proto3" json:"Train"` + Certificate string `protobuf:"bytes,30,opt,name=Certificate,json=certificate,proto3" json:"Certificate"` + TrainVideos []*TrainVideo `protobuf:"bytes,31,rep,name=TrainVideos,json=trainVideos,proto3" json:"TrainVideos"` + Operator *Operator `protobuf:"bytes,32,opt,name=operator,proto3" json:"operator"` + SecurityCode string `protobuf:"bytes,33,opt,name=SecurityCode,json=securityCode,proto3" json:"SecurityCode"` + UserExtend *UserExtend `protobuf:"bytes,34,opt,name=userExtend,proto3" json:"userExtend"` } func (x *UpdateRequest) Reset() { @@ -3861,8 +3861,8 @@ type Operator struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` + ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name"` } func (x *Operator) Reset() { @@ -3916,10 +3916,10 @@ type TrainVideo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TrainUUID string `protobuf:"bytes,1,opt,name=trainUUID,proto3" json:"trainUUID,omitempty"` - TrainDesc string `protobuf:"bytes,2,opt,name=trainDesc,proto3" json:"trainDesc,omitempty"` - Video string `protobuf:"bytes,3,opt,name=video,proto3" json:"video,omitempty"` - SecurityCode string `protobuf:"bytes,31,opt,name=SecurityCode,json=securityCode,proto3" json:"SecurityCode,omitempty"` + TrainUUID string `protobuf:"bytes,1,opt,name=trainUUID,proto3" json:"trainUUID"` + TrainDesc string `protobuf:"bytes,2,opt,name=trainDesc,proto3" json:"trainDesc"` + Video string `protobuf:"bytes,3,opt,name=video,proto3" json:"video"` + SecurityCode string `protobuf:"bytes,31,opt,name=SecurityCode,json=securityCode,proto3" json:"SecurityCode"` } func (x *TrainVideo) Reset() { @@ -4025,9 +4025,9 @@ type PrivacyInfoRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` //ID - Domain string `protobuf:"bytes,2,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - SecurityCode string `protobuf:"bytes,3,opt,name=SecurityCode,json=securityCode,proto3" json:"SecurityCode,omitempty"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` //ID + Domain string `protobuf:"bytes,2,opt,name=Domain,json=domain,proto3" json:"Domain"` + SecurityCode string `protobuf:"bytes,3,opt,name=SecurityCode,json=securityCode,proto3" json:"SecurityCode"` } func (x *PrivacyInfoRequest) Reset() { @@ -4088,26 +4088,26 @@ type ListRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - PageSize uint64 `protobuf:"varint,2,opt,name=PageSize,json=pageSize,proto3" json:"PageSize,omitempty"` - Page uint64 `protobuf:"varint,3,opt,name=Page,json=page,proto3" json:"Page,omitempty"` - Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` - Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` - TelNum string `protobuf:"bytes,6,opt,name=telNum,proto3" json:"telNum,omitempty"` - StartEnterDate string `protobuf:"bytes,7,opt,name=startEnterDate,proto3" json:"startEnterDate,omitempty"` - EndEnterDate string `protobuf:"bytes,8,opt,name=endEnterDate,proto3" json:"endEnterDate,omitempty"` - NickName string `protobuf:"bytes,9,opt,name=nickName,proto3" json:"nickName,omitempty"` - IsReal uint32 `protobuf:"varint,10,opt,name=isReal,proto3" json:"isReal,omitempty"` - IsMainLand uint32 `protobuf:"varint,11,opt,name=isMainLand,proto3" json:"isMainLand,omitempty"` - FromCode string `protobuf:"bytes,12,opt,name=fromCode,proto3" json:"fromCode,omitempty"` - BankName string `protobuf:"bytes,13,opt,name=bankName,proto3" json:"bankName,omitempty"` - BankNo string `protobuf:"bytes,14,opt,name=bankNo,proto3" json:"bankNo,omitempty"` - Sex uint32 `protobuf:"varint,15,opt,name=sex,proto3" json:"sex,omitempty"` - StartRealTime string `protobuf:"bytes,16,opt,name=startRealTime,proto3" json:"startRealTime,omitempty"` - EndRealTime string `protobuf:"bytes,17,opt,name=endRealTime,proto3" json:"endRealTime,omitempty"` - EndCreatedAt string `protobuf:"bytes,18,opt,name=endCreatedAt,proto3" json:"endCreatedAt,omitempty"` - StartCreatedAt string `protobuf:"bytes,19,opt,name=startCreatedAt,proto3" json:"startCreatedAt,omitempty"` - RealName string `protobuf:"bytes,20,opt,name=realName,proto3" json:"realName,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + PageSize uint64 `protobuf:"varint,2,opt,name=PageSize,json=pageSize,proto3" json:"PageSize"` + Page uint64 `protobuf:"varint,3,opt,name=Page,json=page,proto3" json:"Page"` + Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key"` + Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status"` + TelNum string `protobuf:"bytes,6,opt,name=telNum,proto3" json:"telNum"` + StartEnterDate string `protobuf:"bytes,7,opt,name=startEnterDate,proto3" json:"startEnterDate"` + EndEnterDate string `protobuf:"bytes,8,opt,name=endEnterDate,proto3" json:"endEnterDate"` + NickName string `protobuf:"bytes,9,opt,name=nickName,proto3" json:"nickName"` + IsReal uint32 `protobuf:"varint,10,opt,name=isReal,proto3" json:"isReal"` + IsMainLand uint32 `protobuf:"varint,11,opt,name=isMainLand,proto3" json:"isMainLand"` + FromCode string `protobuf:"bytes,12,opt,name=fromCode,proto3" json:"fromCode"` + BankName string `protobuf:"bytes,13,opt,name=bankName,proto3" json:"bankName"` + BankNo string `protobuf:"bytes,14,opt,name=bankNo,proto3" json:"bankNo"` + Sex uint32 `protobuf:"varint,15,opt,name=sex,proto3" json:"sex"` + StartRealTime string `protobuf:"bytes,16,opt,name=startRealTime,proto3" json:"startRealTime"` + EndRealTime string `protobuf:"bytes,17,opt,name=endRealTime,proto3" json:"endRealTime"` + EndCreatedAt string `protobuf:"bytes,18,opt,name=endCreatedAt,proto3" json:"endCreatedAt"` + StartCreatedAt string `protobuf:"bytes,19,opt,name=startCreatedAt,proto3" json:"startCreatedAt"` + RealName string `protobuf:"bytes,20,opt,name=realName,proto3" json:"realName"` } func (x *ListRequest) Reset() { @@ -4287,10 +4287,10 @@ type ListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status string `protobuf:"bytes,1,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - Count uint64 `protobuf:"varint,2,opt,name=Count,json=count,proto3" json:"Count,omitempty"` - Data []*AccountInfo `protobuf:"bytes,3,rep,name=Data,json=data,proto3" json:"Data,omitempty"` - AllCount uint64 `protobuf:"varint,4,opt,name=AllCount,json=allCount,proto3" json:"AllCount,omitempty"` + Status string `protobuf:"bytes,1,opt,name=Status,json=status,proto3" json:"Status"` + Count uint64 `protobuf:"varint,2,opt,name=Count,json=count,proto3" json:"Count"` + Data []*AccountInfo `protobuf:"bytes,3,rep,name=Data,json=data,proto3" json:"Data"` + AllCount uint64 `protobuf:"varint,4,opt,name=AllCount,json=allCount,proto3" json:"AllCount"` } func (x *ListResponse) Reset() { @@ -4358,9 +4358,9 @@ type InfoRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,json=id,proto3" json:"ID,omitempty"` - Scene string `protobuf:"bytes,3,opt,name=scene,proto3" json:"scene,omitempty"` //场景值 base-默认仅仅user数据 + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + ID uint64 `protobuf:"varint,2,opt,name=ID,json=id,proto3" json:"ID"` + Scene string `protobuf:"bytes,3,opt,name=scene,proto3" json:"scene"` //场景值 base-默认仅仅user数据 } func (x *InfoRequest) Reset() { @@ -4421,9 +4421,9 @@ type InfoResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status string `protobuf:"bytes,1,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - Info *AccountInfo `protobuf:"bytes,2,opt,name=Info,json=accountInfo,proto3" json:"Info,omitempty"` - IsExist bool `protobuf:"varint,3,opt,name=IsExist,json=isExist,proto3" json:"IsExist,omitempty"` + Status string `protobuf:"bytes,1,opt,name=Status,json=status,proto3" json:"Status"` + Info *AccountInfo `protobuf:"bytes,2,opt,name=Info,json=accountInfo,proto3" json:"Info"` + IsExist bool `protobuf:"varint,3,opt,name=IsExist,json=isExist,proto3" json:"IsExist"` } func (x *InfoResponse) Reset() { @@ -4484,12 +4484,12 @@ type DecryptJwtResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=status,proto3" json:"Domain,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,json=id,proto3" json:"ID,omitempty"` - Account string `protobuf:"bytes,3,opt,name=Account,json=account,proto3" json:"Account,omitempty"` - NickName string `protobuf:"bytes,4,opt,name=NickName,json=nickName,proto3" json:"NickName,omitempty"` - IsOffline bool `protobuf:"varint,5,opt,name=IsOffline,json=isOffline,proto3" json:"IsOffline,omitempty"` - OfflineCode string `protobuf:"bytes,6,opt,name=offlineCode,proto3" json:"offlineCode,omitempty"` //下线的原因 + Domain string `protobuf:"bytes,1,opt,name=Domain,json=status,proto3" json:"Domain"` + ID uint64 `protobuf:"varint,2,opt,name=ID,json=id,proto3" json:"ID"` + Account string `protobuf:"bytes,3,opt,name=Account,json=account,proto3" json:"Account"` + NickName string `protobuf:"bytes,4,opt,name=NickName,json=nickName,proto3" json:"NickName"` + IsOffline bool `protobuf:"varint,5,opt,name=IsOffline,json=isOffline,proto3" json:"IsOffline"` + OfflineCode string `protobuf:"bytes,6,opt,name=offlineCode,proto3" json:"offlineCode"` //下线的原因 } func (x *DecryptJwtResponse) Reset() { @@ -4571,8 +4571,8 @@ type DecryptJwtRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=Domain,proto3" json:"Domain,omitempty"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token"` + Domain string `protobuf:"bytes,2,opt,name=Domain,proto3" json:"Domain"` } func (x *DecryptJwtRequest) Reset() { @@ -4626,8 +4626,8 @@ type CheckPwdRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Token string `protobuf:"bytes,1,opt,name=Token,json=token,proto3" json:"Token,omitempty"` - Password string `protobuf:"bytes,2,opt,name=Password,json=password,proto3" json:"Password,omitempty"` + Token string `protobuf:"bytes,1,opt,name=Token,json=token,proto3" json:"Token"` + Password string `protobuf:"bytes,2,opt,name=Password,json=password,proto3" json:"Password"` } func (x *CheckPwdRequest) Reset() { @@ -4681,9 +4681,9 @@ type AuthenticationRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=Name,json=name,proto3" json:"Name,omitempty"` - IDNum string `protobuf:"bytes,2,opt,name=IDNum,json=idNum,proto3" json:"IDNum,omitempty"` - Token string `protobuf:"bytes,3,opt,name=Token,json=token,proto3" json:"Token,omitempty"` + Name string `protobuf:"bytes,1,opt,name=Name,json=name,proto3" json:"Name"` + IDNum string `protobuf:"bytes,2,opt,name=IDNum,json=idNum,proto3" json:"IDNum"` + Token string `protobuf:"bytes,3,opt,name=Token,json=token,proto3" json:"Token"` } func (x *AuthenticationRequest) Reset() { @@ -4744,9 +4744,9 @@ type RequestStatus struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status string `protobuf:"bytes,1,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` - IsExist bool `protobuf:"varint,3,opt,name=isExist,proto3" json:"isExist,omitempty"` + Status string `protobuf:"bytes,1,opt,name=Status,json=status,proto3" json:"Status"` + ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID"` + IsExist bool `protobuf:"varint,3,opt,name=isExist,proto3" json:"isExist"` } func (x *RequestStatus) Reset() { @@ -4807,31 +4807,31 @@ type RegistRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - NickName string `protobuf:"bytes,2,opt,name=NickName,json=nickName,proto3" json:"NickName,omitempty"` - TelNum string `protobuf:"bytes,3,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - Password string `protobuf:"bytes,4,opt,name=Password,json=password,proto3" json:"Password,omitempty"` //密码 - Avatar string `protobuf:"bytes,5,opt,name=Avatar,json=avatar,proto3" json:"Avatar,omitempty"` //头像 - EnterDate string `protobuf:"bytes,14,opt,name=EnterDate,json=enterDate,proto3" json:"EnterDate,omitempty"` - Extend *Extend `protobuf:"bytes,15,opt,name=Extend,json=extend,proto3" json:"Extend,omitempty"` - JobNum string `protobuf:"bytes,16,opt,name=JobNum,proto3" json:"JobNum,omitempty"` //工号 - Code string `protobuf:"bytes,17,opt,name=Code,json=code,proto3" json:"Code,omitempty"` //工号 - IdNum string `protobuf:"bytes,18,opt,name=IdNum,json=idNum,proto3" json:"IdNum,omitempty"` //年龄 - RealName string `protobuf:"bytes,19,opt,name=RealName,json=realName,proto3" json:"RealName,omitempty"` // - RecentImg string `protobuf:"bytes,20,opt,name=RecentImg,proto3" json:"RecentImg,omitempty"` - RealIDImgA string `protobuf:"bytes,21,opt,name=RealIDImgA,proto3" json:"RealIDImgA,omitempty"` - RealIDImgB string `protobuf:"bytes,22,opt,name=RealIDImgB,proto3" json:"RealIDImgB,omitempty"` - Video string `protobuf:"bytes,23,opt,name=Video,proto3" json:"Video,omitempty"` - ICNum string `protobuf:"bytes,24,opt,name=ICNum,proto3" json:"ICNum,omitempty"` - Train string `protobuf:"bytes,25,opt,name=Train,proto3" json:"Train,omitempty"` - Certificate string `protobuf:"bytes,26,opt,name=Certificate,proto3" json:"Certificate,omitempty"` - Source string `protobuf:"bytes,27,opt,name=Source,proto3" json:"Source,omitempty"` - Operator *Operator `protobuf:"bytes,28,opt,name=operator,proto3" json:"operator,omitempty"` - Status string `protobuf:"bytes,29,opt,name=Status,proto3" json:"Status,omitempty"` - BlockAddr string `protobuf:"bytes,30,opt,name=BlockAddr,proto3" json:"BlockAddr,omitempty"` - Passport *Passport `protobuf:"bytes,31,opt,name=passport,proto3" json:"passport,omitempty"` //护照 港澳台 护照 通信证等 - LeftDate string `protobuf:"bytes,32,opt,name=leftDate,proto3" json:"leftDate,omitempty"` //离职时间 - UserExtend *UserExtend `protobuf:"bytes,33,opt,name=UserExtend,proto3" json:"UserExtend,omitempty"` //离职时间 + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + NickName string `protobuf:"bytes,2,opt,name=NickName,json=nickName,proto3" json:"NickName"` + TelNum string `protobuf:"bytes,3,opt,name=TelNum,json=telNum,proto3" json:"TelNum"` + Password string `protobuf:"bytes,4,opt,name=Password,json=password,proto3" json:"Password"` //密码 + Avatar string `protobuf:"bytes,5,opt,name=Avatar,json=avatar,proto3" json:"Avatar"` //头像 + EnterDate string `protobuf:"bytes,14,opt,name=EnterDate,json=enterDate,proto3" json:"EnterDate"` + Extend *Extend `protobuf:"bytes,15,opt,name=Extend,json=extend,proto3" json:"Extend"` + JobNum string `protobuf:"bytes,16,opt,name=JobNum,proto3" json:"JobNum"` //工号 + Code string `protobuf:"bytes,17,opt,name=Code,json=code,proto3" json:"Code"` //工号 + IdNum string `protobuf:"bytes,18,opt,name=IdNum,json=idNum,proto3" json:"IdNum"` //年龄 + RealName string `protobuf:"bytes,19,opt,name=RealName,json=realName,proto3" json:"RealName"` // + RecentImg string `protobuf:"bytes,20,opt,name=RecentImg,proto3" json:"RecentImg"` + RealIDImgA string `protobuf:"bytes,21,opt,name=RealIDImgA,proto3" json:"RealIDImgA"` + RealIDImgB string `protobuf:"bytes,22,opt,name=RealIDImgB,proto3" json:"RealIDImgB"` + Video string `protobuf:"bytes,23,opt,name=Video,proto3" json:"Video"` + ICNum string `protobuf:"bytes,24,opt,name=ICNum,proto3" json:"ICNum"` + Train string `protobuf:"bytes,25,opt,name=Train,proto3" json:"Train"` + Certificate string `protobuf:"bytes,26,opt,name=Certificate,proto3" json:"Certificate"` + Source string `protobuf:"bytes,27,opt,name=Source,proto3" json:"Source"` + Operator *Operator `protobuf:"bytes,28,opt,name=operator,proto3" json:"operator"` + Status string `protobuf:"bytes,29,opt,name=Status,proto3" json:"Status"` + BlockAddr string `protobuf:"bytes,30,opt,name=BlockAddr,proto3" json:"BlockAddr"` + Passport *Passport `protobuf:"bytes,31,opt,name=passport,proto3" json:"passport"` //护照 港澳台 护照 通信证等 + LeftDate string `protobuf:"bytes,32,opt,name=leftDate,proto3" json:"leftDate"` //离职时间 + UserExtend *UserExtend `protobuf:"bytes,33,opt,name=UserExtend,proto3" json:"UserExtend"` //离职时间 } func (x *RegistRequest) Reset() { @@ -5046,20 +5046,20 @@ type UserExtend struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` - UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID,omitempty"` - Address string `protobuf:"bytes,4,opt,name=address,proto3" json:"address,omitempty"` - BankName string `protobuf:"bytes,5,opt,name=bankName,proto3" json:"bankName,omitempty"` - BankNo string `protobuf:"bytes,6,opt,name=bankNo,proto3" json:"bankNo,omitempty"` - Zone string `protobuf:"bytes,7,opt,name=zone,proto3" json:"zone,omitempty"` - IsMainland uint32 `protobuf:"varint,8,opt,name=isMainland,proto3" json:"isMainland,omitempty"` - IsReal uint32 `protobuf:"varint,9,opt,name=isReal,proto3" json:"isReal,omitempty"` //是否实名 - FromCode string `protobuf:"bytes,10,opt,name=fromCode,proto3" json:"fromCode,omitempty"` // 99999 - RealTime string `protobuf:"bytes,11,opt,name=realTime,proto3" json:"realTime,omitempty"` // 实名信息时间 - RealName string `protobuf:"bytes,12,opt,name=realName,proto3" json:"realName,omitempty"` // 实名信息时间 - IdType string `protobuf:"bytes,13,opt,name=idType,proto3" json:"idType,omitempty"` //证件类型 - IdNo string `protobuf:"bytes,14,opt,name=idNo,proto3" json:"idNo,omitempty"` //证件号码 + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid"` + UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID"` + Address string `protobuf:"bytes,4,opt,name=address,proto3" json:"address"` + BankName string `protobuf:"bytes,5,opt,name=bankName,proto3" json:"bankName"` + BankNo string `protobuf:"bytes,6,opt,name=bankNo,proto3" json:"bankNo"` + Zone string `protobuf:"bytes,7,opt,name=zone,proto3" json:"zone"` + IsMainland uint32 `protobuf:"varint,8,opt,name=isMainland,proto3" json:"isMainland"` + IsReal uint32 `protobuf:"varint,9,opt,name=isReal,proto3" json:"isReal"` //是否实名 + FromCode string `protobuf:"bytes,10,opt,name=fromCode,proto3" json:"fromCode"` // 99999 + RealTime string `protobuf:"bytes,11,opt,name=realTime,proto3" json:"realTime"` // 实名信息时间 + RealName string `protobuf:"bytes,12,opt,name=realName,proto3" json:"realName"` // 实名信息时间 + IdType string `protobuf:"bytes,13,opt,name=idType,proto3" json:"idType"` //证件类型 + IdNo string `protobuf:"bytes,14,opt,name=idNo,proto3" json:"idNo"` //证件号码 } func (x *UserExtend) Reset() { @@ -5197,11 +5197,11 @@ type Passport struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - IdNum string `protobuf:"bytes,1,opt,name=idNum,proto3" json:"idNum,omitempty"` //编号 - RealIDImgA string `protobuf:"bytes,2,opt,name=realIDImgA,proto3" json:"realIDImgA,omitempty"` //正反面 - RealIDImgB string `protobuf:"bytes,3,opt,name=realIDImgB,proto3" json:"realIDImgB,omitempty"` //正反面 - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` //名字 - IdType string `protobuf:"bytes,5,opt,name=idType,proto3" json:"idType,omitempty"` //法大大 保持一致 "0"身份证号 "1" 护照号 "B" 港澳居民来往内地通行证号 "C" 台湾居民来往大陆通行证号 + IdNum string `protobuf:"bytes,1,opt,name=idNum,proto3" json:"idNum"` //编号 + RealIDImgA string `protobuf:"bytes,2,opt,name=realIDImgA,proto3" json:"realIDImgA"` //正反面 + RealIDImgB string `protobuf:"bytes,3,opt,name=realIDImgB,proto3" json:"realIDImgB"` //正反面 + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name"` //名字 + IdType string `protobuf:"bytes,5,opt,name=idType,proto3" json:"idType"` //法大大 保持一致 "0"身份证号 "1" 护照号 "B" 港澳居民来往内地通行证号 "C" 台湾居民来往大陆通行证号 } func (x *Passport) Reset() { @@ -5276,15 +5276,15 @@ type LoginRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` //string TelNum = 2 [json_name = "telNum",(validator.field) = {regex: "^1\\d{10}$",human_error: "70002"}]; - TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - Code string `protobuf:"bytes,3,opt,name=Code,json=code,proto3" json:"Code,omitempty"` - Password string `protobuf:"bytes,4,opt,name=Password,json=password,proto3" json:"Password,omitempty"` - Ip string `protobuf:"bytes,5,opt,name=Ip,json=ip,proto3" json:"Ip,omitempty"` - PassCheckIp bool `protobuf:"varint,6,opt,name=passCheckIp,proto3" json:"passCheckIp,omitempty"` - From string `protobuf:"bytes,7,opt,name=from,proto3" json:"from,omitempty"` //登陆来源 PC 还是 h5 之类的 - Zone string `protobuf:"bytes,8,opt,name=zone,proto3" json:"zone,omitempty"` + TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum"` + Code string `protobuf:"bytes,3,opt,name=Code,json=code,proto3" json:"Code"` + Password string `protobuf:"bytes,4,opt,name=Password,json=password,proto3" json:"Password"` + Ip string `protobuf:"bytes,5,opt,name=Ip,json=ip,proto3" json:"Ip"` + PassCheckIp bool `protobuf:"varint,6,opt,name=passCheckIp,proto3" json:"passCheckIp"` + From string `protobuf:"bytes,7,opt,name=from,proto3" json:"from"` //登陆来源 PC 还是 h5 之类的 + Zone string `protobuf:"bytes,8,opt,name=zone,proto3" json:"zone"` } func (x *LoginRequest) Reset() { @@ -5380,11 +5380,11 @@ type TokenInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AccountInfo *AccountInfo `protobuf:"bytes,1,opt,name=AccountInfo,json=accountInfo,proto3" json:"AccountInfo,omitempty"` - Token string `protobuf:"bytes,2,opt,name=Token,json=token,proto3" json:"Token,omitempty"` - RefreshToken string `protobuf:"bytes,4,opt,name=RefreshToken,json=refresh,proto3" json:"RefreshToken,omitempty"` - IsSampleAddress bool `protobuf:"varint,3,opt,name=IsSampleAddress,json=isSampleAddress,proto3" json:"IsSampleAddress,omitempty"` - NowAddress string `protobuf:"bytes,5,opt,name=nowAddress,proto3" json:"nowAddress,omitempty"` + AccountInfo *AccountInfo `protobuf:"bytes,1,opt,name=AccountInfo,json=accountInfo,proto3" json:"AccountInfo"` + Token string `protobuf:"bytes,2,opt,name=Token,json=token,proto3" json:"Token"` + RefreshToken string `protobuf:"bytes,4,opt,name=RefreshToken,json=refresh,proto3" json:"RefreshToken"` + IsSampleAddress bool `protobuf:"varint,3,opt,name=IsSampleAddress,json=isSampleAddress,proto3" json:"IsSampleAddress"` + NowAddress string `protobuf:"bytes,5,opt,name=nowAddress,proto3" json:"nowAddress"` } func (x *TokenInfo) Reset() { @@ -5459,10 +5459,10 @@ type Extend struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - JumpTo string `protobuf:"bytes,1,opt,name=JumpTo,json=jumpTo,proto3" json:"JumpTo,omitempty"` - Lang string `protobuf:"bytes,2,opt,name=Lang,json=lang,proto3" json:"Lang,omitempty"` - CanScan bool `protobuf:"varint,3,opt,name=CanScan,json=canScan,proto3" json:"CanScan,omitempty"` - ResolutionRatio bool `protobuf:"varint,4,opt,name=ResolutionRatio,json=resolutionRatio,proto3" json:"ResolutionRatio,omitempty"` + JumpTo string `protobuf:"bytes,1,opt,name=JumpTo,json=jumpTo,proto3" json:"JumpTo"` + Lang string `protobuf:"bytes,2,opt,name=Lang,json=lang,proto3" json:"Lang"` + CanScan bool `protobuf:"varint,3,opt,name=CanScan,json=canScan,proto3" json:"CanScan"` + ResolutionRatio bool `protobuf:"varint,4,opt,name=ResolutionRatio,json=resolutionRatio,proto3" json:"ResolutionRatio"` } func (x *Extend) Reset() { @@ -5530,8 +5530,8 @@ type Department struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - Name string `protobuf:"bytes,2,opt,name=Name,json=name,proto3" json:"Name,omitempty"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + Name string `protobuf:"bytes,2,opt,name=Name,json=name,proto3" json:"Name"` } func (x *Department) Reset() { @@ -5586,51 +5586,51 @@ type AccountInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,json=id,proto3" json:"ID,omitempty"` - Account string `protobuf:"bytes,2,opt,name=Account,json=account,proto3" json:"Account,omitempty"` - NickName string `protobuf:"bytes,3,opt,name=NickName,json=nickName,proto3" json:"NickName,omitempty"` - Type int64 `protobuf:"varint,4,opt,name=Type,json=type,proto3" json:"Type,omitempty"` - TelNum string `protobuf:"bytes,5,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - Status string `protobuf:"bytes,6,opt,name=Status,json=status,proto3" json:"Status,omitempty"` - Avatar string `protobuf:"bytes,7,opt,name=Avatar,json=avatar,proto3" json:"Avatar,omitempty"` - CreateAt string `protobuf:"bytes,8,opt,name=CreateAt,json=createAt,proto3" json:"CreateAt,omitempty"` - RealNameID uint64 `protobuf:"varint,9,opt,name=RealNameID,json=realNameID,proto3" json:"RealNameID,omitempty"` - RealName string `protobuf:"bytes,10,opt,name=RealName,json=realName,proto3" json:"RealName,omitempty"` - IDNum string `protobuf:"bytes,11,opt,name=IDNum,json=iDNum,proto3" json:"IDNum,omitempty"` - MnemonicWords string `protobuf:"bytes,12,opt,name=MnemonicWords,json=mnemonicWords,proto3" json:"MnemonicWords,omitempty"` - IsNeedChange uint64 `protobuf:"varint,13,opt,name=IsNeedChange,json=isNeedChange,proto3" json:"IsNeedChange,omitempty"` - EnterDate string `protobuf:"bytes,14,opt,name=EnterDate,json=enterDate,proto3" json:"EnterDate,omitempty"` - WorkYear float32 `protobuf:"fixed32,15,opt,name=WorkYear,json=workYear,proto3" json:"WorkYear,omitempty"` - Domain string `protobuf:"bytes,16,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - Extend *Extend `protobuf:"bytes,17,opt,name=Extend,json=extend,proto3" json:"Extend,omitempty"` - JobNum string `protobuf:"bytes,18,opt,name=JobNum,json=jobNum,proto3" json:"JobNum,omitempty"` - BirthDate string `protobuf:"bytes,19,opt,name=BirthDate,json=birth_date,proto3" json:"BirthDate,omitempty"` - Age uint64 `protobuf:"varint,20,opt,name=Age,json=age,proto3" json:"Age,omitempty"` - Sex uint64 `protobuf:"varint,21,opt,name=Sex,json=sex,proto3" json:"Sex,omitempty"` - Title string `protobuf:"bytes,22,opt,name=Title,json=title,proto3" json:"Title,omitempty"` - Departments []*Department `protobuf:"bytes,23,rep,name=Departments,json=departments,proto3" json:"Departments,omitempty"` - Ip string `protobuf:"bytes,24,opt,name=Ip,json=ip,proto3" json:"Ip,omitempty"` - LoginDate string `protobuf:"bytes,25,opt,name=LoginDate,json=loginDate,proto3" json:"LoginDate,omitempty"` - InvitationCode string `protobuf:"bytes,26,opt,name=InvitationCode,json=invitationCode,proto3" json:"InvitationCode,omitempty"` - NowLogId uint64 `protobuf:"varint,27,opt,name=NowLogId,json=nowLogId,proto3" json:"NowLogId,omitempty"` - CanScan bool `protobuf:"varint,28,opt,name=CanScan,json=canScan,proto3" json:"CanScan,omitempty"` - LeftDate string `protobuf:"bytes,29,opt,name=LeftDate,json=leftDate,proto3" json:"LeftDate,omitempty"` - Positions []*PositionUser `protobuf:"bytes,30,rep,name=Positions,json=positions,proto3" json:"Positions,omitempty"` - Remark string `protobuf:"bytes,31,opt,name=Remark,json=remark,proto3" json:"Remark,omitempty"` - RecentImg string `protobuf:"bytes,32,opt,name=recentImg,proto3" json:"recentImg,omitempty"` - Clocks []*ClockUser `protobuf:"bytes,33,rep,name=clocks,proto3" json:"clocks,omitempty"` - MailAccount string `protobuf:"bytes,34,opt,name=mailAccount,proto3" json:"mailAccount,omitempty"` - ICNum string `protobuf:"bytes,35,opt,name=ICNum,json=icNum,proto3" json:"ICNum,omitempty"` - EnglishName string `protobuf:"bytes,36,opt,name=englishName,proto3" json:"englishName,omitempty"` - Train string `protobuf:"bytes,37,opt,name=Train,json=train,proto3" json:"Train,omitempty"` - Certificate string `protobuf:"bytes,38,opt,name=Certificate,json=certificate,proto3" json:"Certificate,omitempty"` - TrainVideos []*TrainVideo `protobuf:"bytes,39,rep,name=TrainVideos,json=trainVideos,proto3" json:"TrainVideos,omitempty"` - Operator *Operator `protobuf:"bytes,40,opt,name=operator,proto3" json:"operator,omitempty"` - UpdatedAt string `protobuf:"bytes,41,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` - SecurityCode string `protobuf:"bytes,42,opt,name=SecurityCode,json=securityCode,proto3" json:"SecurityCode,omitempty"` - BlockAddr string `protobuf:"bytes,43,opt,name=BlockAddr,json=blockAddr,proto3" json:"BlockAddr,omitempty"` - Language string `protobuf:"bytes,44,opt,name=Language,json=language,proto3" json:"Language,omitempty"` - UserExtend *UserExtend `protobuf:"bytes,45,opt,name=userExtend,proto3" json:"userExtend,omitempty"` + ID uint64 `protobuf:"varint,1,opt,name=ID,json=id,proto3" json:"ID"` + Account string `protobuf:"bytes,2,opt,name=Account,json=account,proto3" json:"Account"` + NickName string `protobuf:"bytes,3,opt,name=NickName,json=nickName,proto3" json:"NickName"` + Type int64 `protobuf:"varint,4,opt,name=Type,json=type,proto3" json:"Type"` + TelNum string `protobuf:"bytes,5,opt,name=TelNum,json=telNum,proto3" json:"TelNum"` + Status string `protobuf:"bytes,6,opt,name=Status,json=status,proto3" json:"Status"` + Avatar string `protobuf:"bytes,7,opt,name=Avatar,json=avatar,proto3" json:"Avatar"` + CreateAt string `protobuf:"bytes,8,opt,name=CreateAt,json=createAt,proto3" json:"CreateAt"` + RealNameID uint64 `protobuf:"varint,9,opt,name=RealNameID,json=realNameID,proto3" json:"RealNameID"` + RealName string `protobuf:"bytes,10,opt,name=RealName,json=realName,proto3" json:"RealName"` + IDNum string `protobuf:"bytes,11,opt,name=IDNum,json=iDNum,proto3" json:"IDNum"` + MnemonicWords string `protobuf:"bytes,12,opt,name=MnemonicWords,json=mnemonicWords,proto3" json:"MnemonicWords"` + IsNeedChange uint64 `protobuf:"varint,13,opt,name=IsNeedChange,json=isNeedChange,proto3" json:"IsNeedChange"` + EnterDate string `protobuf:"bytes,14,opt,name=EnterDate,json=enterDate,proto3" json:"EnterDate"` + WorkYear float32 `protobuf:"fixed32,15,opt,name=WorkYear,json=workYear,proto3" json:"WorkYear"` + Domain string `protobuf:"bytes,16,opt,name=Domain,json=domain,proto3" json:"Domain"` + Extend *Extend `protobuf:"bytes,17,opt,name=Extend,json=extend,proto3" json:"Extend"` + JobNum string `protobuf:"bytes,18,opt,name=JobNum,json=jobNum,proto3" json:"JobNum"` + BirthDate string `protobuf:"bytes,19,opt,name=BirthDate,json=birth_date,proto3" json:"BirthDate"` + Age uint64 `protobuf:"varint,20,opt,name=Age,json=age,proto3" json:"Age"` + Sex uint64 `protobuf:"varint,21,opt,name=Sex,json=sex,proto3" json:"Sex"` + Title string `protobuf:"bytes,22,opt,name=Title,json=title,proto3" json:"Title"` + Departments []*Department `protobuf:"bytes,23,rep,name=Departments,json=departments,proto3" json:"Departments"` + Ip string `protobuf:"bytes,24,opt,name=Ip,json=ip,proto3" json:"Ip"` + LoginDate string `protobuf:"bytes,25,opt,name=LoginDate,json=loginDate,proto3" json:"LoginDate"` + InvitationCode string `protobuf:"bytes,26,opt,name=InvitationCode,json=invitationCode,proto3" json:"InvitationCode"` + NowLogId uint64 `protobuf:"varint,27,opt,name=NowLogId,json=nowLogId,proto3" json:"NowLogId"` + CanScan bool `protobuf:"varint,28,opt,name=CanScan,json=canScan,proto3" json:"CanScan"` + LeftDate string `protobuf:"bytes,29,opt,name=LeftDate,json=leftDate,proto3" json:"LeftDate"` + Positions []*PositionUser `protobuf:"bytes,30,rep,name=Positions,json=positions,proto3" json:"Positions"` + Remark string `protobuf:"bytes,31,opt,name=Remark,json=remark,proto3" json:"Remark"` + RecentImg string `protobuf:"bytes,32,opt,name=recentImg,proto3" json:"recentImg"` + Clocks []*ClockUser `protobuf:"bytes,33,rep,name=clocks,proto3" json:"clocks"` + MailAccount string `protobuf:"bytes,34,opt,name=mailAccount,proto3" json:"mailAccount"` + ICNum string `protobuf:"bytes,35,opt,name=ICNum,json=icNum,proto3" json:"ICNum"` + EnglishName string `protobuf:"bytes,36,opt,name=englishName,proto3" json:"englishName"` + Train string `protobuf:"bytes,37,opt,name=Train,json=train,proto3" json:"Train"` + Certificate string `protobuf:"bytes,38,opt,name=Certificate,json=certificate,proto3" json:"Certificate"` + TrainVideos []*TrainVideo `protobuf:"bytes,39,rep,name=TrainVideos,json=trainVideos,proto3" json:"TrainVideos"` + Operator *Operator `protobuf:"bytes,40,opt,name=operator,proto3" json:"operator"` + UpdatedAt string `protobuf:"bytes,41,opt,name=updatedAt,proto3" json:"updatedAt"` + SecurityCode string `protobuf:"bytes,42,opt,name=SecurityCode,json=securityCode,proto3" json:"SecurityCode"` + BlockAddr string `protobuf:"bytes,43,opt,name=BlockAddr,json=blockAddr,proto3" json:"BlockAddr"` + Language string `protobuf:"bytes,44,opt,name=Language,json=language,proto3" json:"Language"` + UserExtend *UserExtend `protobuf:"bytes,45,opt,name=userExtend,proto3" json:"userExtend"` } func (x *AccountInfo) Reset() { @@ -5985,22 +5985,22 @@ type UserInfoV2 struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - Account string `protobuf:"bytes,2,opt,name=Account,proto3" json:"Account,omitempty"` - NickName string `protobuf:"bytes,3,opt,name=NickName,proto3" json:"NickName,omitempty"` - TelNum string `protobuf:"bytes,4,opt,name=TelNum,proto3" json:"TelNum,omitempty"` - Status string `protobuf:"bytes,5,opt,name=Status,proto3" json:"Status,omitempty"` - Avatar string `protobuf:"bytes,6,opt,name=Avatar,proto3" json:"Avatar,omitempty"` - CreateAt string `protobuf:"bytes,7,opt,name=CreateAt,proto3" json:"CreateAt,omitempty"` - RealName string `protobuf:"bytes,8,opt,name=RealName,proto3" json:"RealName,omitempty"` - IDNum string `protobuf:"bytes,9,opt,name=IDNum,proto3" json:"IDNum,omitempty"` - EnterDate string `protobuf:"bytes,10,opt,name=EnterDate,proto3" json:"EnterDate,omitempty"` - Extend *Extend `protobuf:"bytes,11,opt,name=Extend,proto3" json:"Extend,omitempty"` - JobNum string `protobuf:"bytes,12,opt,name=JobNum,proto3" json:"JobNum,omitempty"` - RecentImg string `protobuf:"bytes,13,opt,name=recentImg,proto3" json:"recentImg,omitempty"` - MailAccount string `protobuf:"bytes,14,opt,name=mailAccount,proto3" json:"mailAccount,omitempty"` - Operator *Operator `protobuf:"bytes,15,opt,name=operator,proto3" json:"operator,omitempty"` - UpdatedAt string `protobuf:"bytes,16,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + Account string `protobuf:"bytes,2,opt,name=Account,proto3" json:"Account"` + NickName string `protobuf:"bytes,3,opt,name=NickName,proto3" json:"NickName"` + TelNum string `protobuf:"bytes,4,opt,name=TelNum,proto3" json:"TelNum"` + Status string `protobuf:"bytes,5,opt,name=Status,proto3" json:"Status"` + Avatar string `protobuf:"bytes,6,opt,name=Avatar,proto3" json:"Avatar"` + CreateAt string `protobuf:"bytes,7,opt,name=CreateAt,proto3" json:"CreateAt"` + RealName string `protobuf:"bytes,8,opt,name=RealName,proto3" json:"RealName"` + IDNum string `protobuf:"bytes,9,opt,name=IDNum,proto3" json:"IDNum"` + EnterDate string `protobuf:"bytes,10,opt,name=EnterDate,proto3" json:"EnterDate"` + Extend *Extend `protobuf:"bytes,11,opt,name=Extend,proto3" json:"Extend"` + JobNum string `protobuf:"bytes,12,opt,name=JobNum,proto3" json:"JobNum"` + RecentImg string `protobuf:"bytes,13,opt,name=recentImg,proto3" json:"recentImg"` + MailAccount string `protobuf:"bytes,14,opt,name=mailAccount,proto3" json:"mailAccount"` + Operator *Operator `protobuf:"bytes,15,opt,name=operator,proto3" json:"operator"` + UpdatedAt string `protobuf:"bytes,16,opt,name=updatedAt,proto3" json:"updatedAt"` } func (x *UserInfoV2) Reset() { @@ -6152,9 +6152,9 @@ type RefreshTokenRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RefreshToken string `protobuf:"bytes,1,opt,name=refreshToken,proto3" json:"refreshToken,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` - Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"` + RefreshToken string `protobuf:"bytes,1,opt,name=refreshToken,proto3" json:"refreshToken"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain"` + Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip"` } func (x *RefreshTokenRequest) Reset() { @@ -6215,13 +6215,13 @@ type PositionUser struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PositionID uint64 `protobuf:"varint,1,opt,name=PositionID,json=positionID,proto3" json:"PositionID,omitempty"` - PositionName string `protobuf:"bytes,2,opt,name=PositionName,json=positionName,proto3" json:"PositionName,omitempty"` - DepartmentId uint64 `protobuf:"varint,3,opt,name=DepartmentId,json=departmentId,proto3" json:"DepartmentId,omitempty"` - DepartmentCode string `protobuf:"bytes,4,opt,name=DepartmentCode,json=departmentCode,proto3" json:"DepartmentCode,omitempty"` - DepartmentName string `protobuf:"bytes,5,opt,name=DepartmentName,json=departmentName,proto3" json:"DepartmentName,omitempty"` - UserId uint64 `protobuf:"varint,6,opt,name=UserId,json=userId,proto3" json:"UserId,omitempty"` - UserName string `protobuf:"bytes,7,opt,name=UserName,json=userName,proto3" json:"UserName,omitempty"` + PositionID uint64 `protobuf:"varint,1,opt,name=PositionID,json=positionID,proto3" json:"PositionID"` + PositionName string `protobuf:"bytes,2,opt,name=PositionName,json=positionName,proto3" json:"PositionName"` + DepartmentId uint64 `protobuf:"varint,3,opt,name=DepartmentId,json=departmentId,proto3" json:"DepartmentId"` + DepartmentCode string `protobuf:"bytes,4,opt,name=DepartmentCode,json=departmentCode,proto3" json:"DepartmentCode"` + DepartmentName string `protobuf:"bytes,5,opt,name=DepartmentName,json=departmentName,proto3" json:"DepartmentName"` + UserId uint64 `protobuf:"varint,6,opt,name=UserId,json=userId,proto3" json:"UserId"` + UserName string `protobuf:"bytes,7,opt,name=UserName,json=userName,proto3" json:"UserName"` } func (x *PositionUser) Reset() { @@ -6310,8 +6310,8 @@ type JobNumGetInfoRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - JobNum string `protobuf:"bytes,1,opt,name=jobNum,proto3" json:"jobNum,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` + JobNum string `protobuf:"bytes,1,opt,name=jobNum,proto3" json:"jobNum"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain"` } func (x *JobNumGetInfoRequest) Reset() { @@ -6365,9 +6365,9 @@ type CreateClockDeviceRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DeviceNum string `protobuf:"bytes,1,opt,name=deviceNum,proto3" json:"deviceNum,omitempty"` - DeviceName string `protobuf:"bytes,2,opt,name=deviceName,proto3" json:"deviceName,omitempty"` - DeviceSite string `protobuf:"bytes,3,opt,name=deviceSite,proto3" json:"deviceSite,omitempty"` + DeviceNum string `protobuf:"bytes,1,opt,name=deviceNum,proto3" json:"deviceNum"` + DeviceName string `protobuf:"bytes,2,opt,name=deviceName,proto3" json:"deviceName"` + DeviceSite string `protobuf:"bytes,3,opt,name=deviceSite,proto3" json:"deviceSite"` } func (x *CreateClockDeviceRequest) Reset() { @@ -6428,10 +6428,10 @@ type UpdateClockDeviceRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - DeviceNum string `protobuf:"bytes,2,opt,name=deviceNum,proto3" json:"deviceNum,omitempty"` - DeviceName string `protobuf:"bytes,3,opt,name=deviceName,proto3" json:"deviceName,omitempty"` - DeviceSite string `protobuf:"bytes,4,opt,name=deviceSite,proto3" json:"deviceSite,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + DeviceNum string `protobuf:"bytes,2,opt,name=deviceNum,proto3" json:"deviceNum"` + DeviceName string `protobuf:"bytes,3,opt,name=deviceName,proto3" json:"deviceName"` + DeviceSite string `protobuf:"bytes,4,opt,name=deviceSite,proto3" json:"deviceSite"` } func (x *UpdateClockDeviceRequest) Reset() { @@ -6499,7 +6499,7 @@ type ClockDeviceResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` } func (x *ClockDeviceResponse) Reset() { @@ -6546,7 +6546,7 @@ type RemoveClockDeviceRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` } func (x *RemoveClockDeviceRequest) Reset() { @@ -6593,13 +6593,13 @@ type ClockDeviceListRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - DeviceSite string `protobuf:"bytes,2,opt,name=deviceSite,proto3" json:"deviceSite,omitempty"` - DeviceNum string `protobuf:"bytes,3,opt,name=deviceNum,proto3" json:"deviceNum,omitempty"` - DeviceName string `protobuf:"bytes,4,opt,name=deviceName,proto3" json:"deviceName,omitempty"` - Page uint64 `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,6,opt,name=pageSize,proto3" json:"pageSize,omitempty"` - Ids []uint64 `protobuf:"varint,7,rep,packed,name=ids,proto3" json:"ids,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + DeviceSite string `protobuf:"bytes,2,opt,name=deviceSite,proto3" json:"deviceSite"` + DeviceNum string `protobuf:"bytes,3,opt,name=deviceNum,proto3" json:"deviceNum"` + DeviceName string `protobuf:"bytes,4,opt,name=deviceName,proto3" json:"deviceName"` + Page uint64 `protobuf:"varint,5,opt,name=page,proto3" json:"page"` + PageSize uint64 `protobuf:"varint,6,opt,name=pageSize,proto3" json:"pageSize"` + Ids []uint64 `protobuf:"varint,7,rep,packed,name=ids,proto3" json:"ids"` } func (x *ClockDeviceListRequest) Reset() { @@ -6688,8 +6688,8 @@ type ClockDeviceListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` - Data []*ClockDeviceInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count"` + Data []*ClockDeviceInfo `protobuf:"bytes,2,rep,name=data,proto3" json:"data"` } func (x *ClockDeviceListResponse) Reset() { @@ -6743,14 +6743,14 @@ type ClockUser struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedAt string `protobuf:"bytes,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` - UpdatedAt string `protobuf:"bytes,3,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` - DeletedAt string `protobuf:"bytes,4,opt,name=deletedAt,proto3" json:"deletedAt,omitempty"` - DeviceID uint64 `protobuf:"varint,5,opt,name=deviceID,proto3" json:"deviceID,omitempty"` - UserId uint64 `protobuf:"varint,6,opt,name=userId,proto3" json:"userId,omitempty"` - Status uint64 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` - Device *ClockDeviceInfo `protobuf:"bytes,8,opt,name=device,proto3" json:"device,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + CreatedAt string `protobuf:"bytes,2,opt,name=createdAt,proto3" json:"createdAt"` + UpdatedAt string `protobuf:"bytes,3,opt,name=updatedAt,proto3" json:"updatedAt"` + DeletedAt string `protobuf:"bytes,4,opt,name=deletedAt,proto3" json:"deletedAt"` + DeviceID uint64 `protobuf:"varint,5,opt,name=deviceID,proto3" json:"deviceID"` + UserId uint64 `protobuf:"varint,6,opt,name=userId,proto3" json:"userId"` + Status uint64 `protobuf:"varint,7,opt,name=status,proto3" json:"status"` + Device *ClockDeviceInfo `protobuf:"bytes,8,opt,name=device,proto3" json:"device"` } func (x *ClockUser) Reset() { @@ -6846,14 +6846,14 @@ type ClockDeviceInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreateAt string `protobuf:"bytes,2,opt,name=createAt,proto3" json:"createAt,omitempty"` - UpdateAt string `protobuf:"bytes,3,opt,name=updateAt,proto3" json:"updateAt,omitempty"` - DeviceSite string `protobuf:"bytes,4,opt,name=deviceSite,proto3" json:"deviceSite,omitempty"` - DeviceNum string `protobuf:"bytes,5,opt,name=deviceNum,proto3" json:"deviceNum,omitempty"` - DeviceName string `protobuf:"bytes,6,opt,name=deviceName,proto3" json:"deviceName,omitempty"` - UserNum uint64 `protobuf:"varint,7,opt,name=userNum,proto3" json:"userNum,omitempty"` - Data []*ClockUserRel `protobuf:"bytes,8,rep,name=data,proto3" json:"data,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + CreateAt string `protobuf:"bytes,2,opt,name=createAt,proto3" json:"createAt"` + UpdateAt string `protobuf:"bytes,3,opt,name=updateAt,proto3" json:"updateAt"` + DeviceSite string `protobuf:"bytes,4,opt,name=deviceSite,proto3" json:"deviceSite"` + DeviceNum string `protobuf:"bytes,5,opt,name=deviceNum,proto3" json:"deviceNum"` + DeviceName string `protobuf:"bytes,6,opt,name=deviceName,proto3" json:"deviceName"` + UserNum uint64 `protobuf:"varint,7,opt,name=userNum,proto3" json:"userNum"` + Data []*ClockUserRel `protobuf:"bytes,8,rep,name=data,proto3" json:"data"` } func (x *ClockDeviceInfo) Reset() { @@ -6949,8 +6949,8 @@ type ClockDeviceInfoResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` - Data []*ClockUserRel `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` + Count uint64 `protobuf:"varint,1,opt,name=count,proto3" json:"count"` + Data []*ClockUserRel `protobuf:"bytes,2,rep,name=data,proto3" json:"data"` } func (x *ClockDeviceInfoResponse) Reset() { @@ -7004,12 +7004,12 @@ type ClockUserRel struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreateAt string `protobuf:"bytes,2,opt,name=createAt,proto3" json:"createAt,omitempty"` - UpdateAt string `protobuf:"bytes,3,opt,name=updateAt,proto3" json:"updateAt,omitempty"` - NickName string `protobuf:"bytes,4,opt,name=nickName,proto3" json:"nickName,omitempty"` - JobNum string `protobuf:"bytes,5,opt,name=jobNum,proto3" json:"jobNum,omitempty"` - IcNum string `protobuf:"bytes,6,opt,name=icNum,proto3" json:"icNum,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + CreateAt string `protobuf:"bytes,2,opt,name=createAt,proto3" json:"createAt"` + UpdateAt string `protobuf:"bytes,3,opt,name=updateAt,proto3" json:"updateAt"` + NickName string `protobuf:"bytes,4,opt,name=nickName,proto3" json:"nickName"` + JobNum string `protobuf:"bytes,5,opt,name=jobNum,proto3" json:"jobNum"` + IcNum string `protobuf:"bytes,6,opt,name=icNum,proto3" json:"icNum"` } func (x *ClockUserRel) Reset() { @@ -7091,9 +7091,9 @@ type ClockDeviceInfoRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Page uint64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + Page uint64 `protobuf:"varint,2,opt,name=page,proto3" json:"page"` + PageSize uint64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize"` } func (x *ClockDeviceInfoRequest) Reset() { @@ -7154,9 +7154,9 @@ type ClockBatchBindRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - UserId []uint64 `protobuf:"varint,2,rep,packed,name=userId,proto3" json:"userId,omitempty"` - DeviceId []uint64 `protobuf:"varint,3,rep,packed,name=deviceId,proto3" json:"deviceId,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + UserId []uint64 `protobuf:"varint,2,rep,packed,name=userId,proto3" json:"userId"` + DeviceId []uint64 `protobuf:"varint,3,rep,packed,name=deviceId,proto3" json:"deviceId"` } func (x *ClockBatchBindRequest) Reset() { @@ -7217,7 +7217,7 @@ type ClockBatchListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []*ClockUserDeviceBatch `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` + Data []*ClockUserDeviceBatch `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` } func (x *ClockBatchListResponse) Reset() { @@ -7264,12 +7264,12 @@ type ClockUserDeviceBatch struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId uint64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` - DeviceId uint64 `protobuf:"varint,2,opt,name=deviceId,proto3" json:"deviceId,omitempty"` - JobNum string `protobuf:"bytes,3,opt,name=JobNum,proto3" json:"JobNum,omitempty"` - DeviceNum string `protobuf:"bytes,4,opt,name=deviceNum,proto3" json:"deviceNum,omitempty"` - DeviceName string `protobuf:"bytes,5,opt,name=deviceName,proto3" json:"deviceName,omitempty"` - WorkStatus string `protobuf:"bytes,6,opt,name=workStatus,proto3" json:"workStatus,omitempty"` + UserId uint64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId"` + DeviceId uint64 `protobuf:"varint,2,opt,name=deviceId,proto3" json:"deviceId"` + JobNum string `protobuf:"bytes,3,opt,name=JobNum,proto3" json:"JobNum"` + DeviceNum string `protobuf:"bytes,4,opt,name=deviceNum,proto3" json:"deviceNum"` + DeviceName string `protobuf:"bytes,5,opt,name=deviceName,proto3" json:"deviceName"` + WorkStatus string `protobuf:"bytes,6,opt,name=workStatus,proto3" json:"workStatus"` } func (x *ClockUserDeviceBatch) Reset() { @@ -7351,25 +7351,25 @@ type ClockLogInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Sn string `protobuf:"bytes,2,opt,name=sn,proto3" json:"sn,omitempty"` - UserId string `protobuf:"bytes,3,opt,name=userId,proto3" json:"userId,omitempty"` - RecogType string `protobuf:"bytes,4,opt,name=recogType,proto3" json:"recogType,omitempty"` - RecogTime string `protobuf:"bytes,5,opt,name=recogTime,proto3" json:"recogTime,omitempty"` - Gender float32 `protobuf:"fixed32,6,opt,name=gender,proto3" json:"gender,omitempty"` - Photo string `protobuf:"bytes,7,opt,name=photo,proto3" json:"photo,omitempty"` - PassStatus float32 `protobuf:"fixed32,8,opt,name=passStatus,proto3" json:"passStatus,omitempty"` - UserName string `protobuf:"bytes,9,opt,name=userName,proto3" json:"userName,omitempty"` - UserType float32 `protobuf:"fixed32,10,opt,name=userType,proto3" json:"userType,omitempty"` - Confidence string `protobuf:"bytes,11,opt,name=confidence,proto3" json:"confidence,omitempty"` - Reflectivity float32 `protobuf:"fixed32,12,opt,name=reflectivity,proto3" json:"reflectivity,omitempty"` - CardNumber string `protobuf:"bytes,13,opt,name=cardNumber,proto3" json:"cardNumber,omitempty"` - PassWord string `protobuf:"bytes,14,opt,name=passWord,proto3" json:"passWord,omitempty"` - QrCode string `protobuf:"bytes,15,opt,name=qrCode,proto3" json:"qrCode,omitempty"` - Tel string `protobuf:"bytes,16,opt,name=tel,proto3" json:"tel,omitempty"` - ReasonVisit string `protobuf:"bytes,17,opt,name=reasonVisit,proto3" json:"reasonVisit,omitempty"` - ReceiverTel string `protobuf:"bytes,18,opt,name=receiverTel,proto3" json:"receiverTel,omitempty"` - NumOfPeople uint64 `protobuf:"varint,19,opt,name=numOfPeople,proto3" json:"numOfPeople,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + Sn string `protobuf:"bytes,2,opt,name=sn,proto3" json:"sn"` + UserId string `protobuf:"bytes,3,opt,name=userId,proto3" json:"userId"` + RecogType string `protobuf:"bytes,4,opt,name=recogType,proto3" json:"recogType"` + RecogTime string `protobuf:"bytes,5,opt,name=recogTime,proto3" json:"recogTime"` + Gender float32 `protobuf:"fixed32,6,opt,name=gender,proto3" json:"gender"` + Photo string `protobuf:"bytes,7,opt,name=photo,proto3" json:"photo"` + PassStatus float32 `protobuf:"fixed32,8,opt,name=passStatus,proto3" json:"passStatus"` + UserName string `protobuf:"bytes,9,opt,name=userName,proto3" json:"userName"` + UserType float32 `protobuf:"fixed32,10,opt,name=userType,proto3" json:"userType"` + Confidence string `protobuf:"bytes,11,opt,name=confidence,proto3" json:"confidence"` + Reflectivity float32 `protobuf:"fixed32,12,opt,name=reflectivity,proto3" json:"reflectivity"` + CardNumber string `protobuf:"bytes,13,opt,name=cardNumber,proto3" json:"cardNumber"` + PassWord string `protobuf:"bytes,14,opt,name=passWord,proto3" json:"passWord"` + QrCode string `protobuf:"bytes,15,opt,name=qrCode,proto3" json:"qrCode"` + Tel string `protobuf:"bytes,16,opt,name=tel,proto3" json:"tel"` + ReasonVisit string `protobuf:"bytes,17,opt,name=reasonVisit,proto3" json:"reasonVisit"` + ReceiverTel string `protobuf:"bytes,18,opt,name=receiverTel,proto3" json:"receiverTel"` + NumOfPeople uint64 `protobuf:"varint,19,opt,name=numOfPeople,proto3" json:"numOfPeople"` } func (x *ClockLogInfo) Reset() { @@ -7542,14 +7542,14 @@ type ClockLogReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Page uint64 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` - PageSize uint64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` - UserName string `protobuf:"bytes,4,opt,name=userName,proto3" json:"userName,omitempty"` - RecogType string `protobuf:"bytes,5,opt,name=recogType,proto3" json:"recogType,omitempty"` - DeviceNum string `protobuf:"bytes,6,opt,name=deviceNum,proto3" json:"deviceNum,omitempty"` - RecogDate string `protobuf:"bytes,7,opt,name=recogDate,proto3" json:"recogDate,omitempty"` - UserId uint64 `protobuf:"varint,8,opt,name=userId,proto3" json:"userId,omitempty"` + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id"` + Page uint64 `protobuf:"varint,2,opt,name=page,proto3" json:"page"` + PageSize uint64 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize"` + UserName string `protobuf:"bytes,4,opt,name=userName,proto3" json:"userName"` + RecogType string `protobuf:"bytes,5,opt,name=recogType,proto3" json:"recogType"` + DeviceNum string `protobuf:"bytes,6,opt,name=deviceNum,proto3" json:"deviceNum"` + RecogDate string `protobuf:"bytes,7,opt,name=recogDate,proto3" json:"recogDate"` + UserId uint64 `protobuf:"varint,8,opt,name=userId,proto3" json:"userId"` } func (x *ClockLogReq) Reset() { @@ -7645,8 +7645,8 @@ type ClockLogListResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data []*ClockLogInfo `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` - Count uint64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` + Data []*ClockLogInfo `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` + Count uint64 `protobuf:"varint,2,opt,name=count,proto3" json:"count"` } func (x *ClockLogListResponse) Reset() { @@ -7700,12 +7700,12 @@ type SendNationMsgRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` - TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - Project string `protobuf:"bytes,3,opt,name=Project,json=project,proto3" json:"Project,omitempty"` - SignNo uint32 `protobuf:"varint,4,opt,name=signNo,proto3" json:"signNo,omitempty"` - MId uint32 `protobuf:"varint,5,opt,name=mId,proto3" json:"mId,omitempty"` - Scope string `protobuf:"bytes,6,opt,name=scope,proto3" json:"scope,omitempty"` //标记模块 + Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain"` + TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum"` + Project string `protobuf:"bytes,3,opt,name=Project,json=project,proto3" json:"Project"` + SignNo uint32 `protobuf:"varint,4,opt,name=signNo,proto3" json:"signNo"` + MId uint32 `protobuf:"varint,5,opt,name=mId,proto3" json:"mId"` + Scope string `protobuf:"bytes,6,opt,name=scope,proto3" json:"scope"` //标记模块 } func (x *SendNationMsgRequest) Reset() { @@ -7787,9 +7787,9 @@ type UpdateLanguageRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` - ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID,omitempty"` - Language string `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` + ID uint64 `protobuf:"varint,2,opt,name=ID,proto3" json:"ID"` + Language string `protobuf:"bytes,3,opt,name=language,proto3" json:"language"` } func (x *UpdateLanguageRequest) Reset() { @@ -7850,9 +7850,9 @@ type UpdateLanguageResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum,omitempty"` - Language string `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` + ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + TelNum string `protobuf:"bytes,2,opt,name=telNum,proto3" json:"telNum"` + Language string `protobuf:"bytes,3,opt,name=language,proto3" json:"language"` } func (x *UpdateLanguageResponse) Reset() { @@ -7913,12 +7913,12 @@ type GenerateSliderCaptchaRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CanvasWidth uint64 `protobuf:"varint,1,opt,name=canvasWidth,proto3" json:"canvasWidth,omitempty"` - CanvasHeight uint64 `protobuf:"varint,2,opt,name=canvasHeight,proto3" json:"canvasHeight,omitempty"` - BlockWidth uint64 `protobuf:"varint,3,opt,name=blockWidth,proto3" json:"blockWidth,omitempty"` - BlockHeight uint64 `protobuf:"varint,4,opt,name=blockHeight,proto3" json:"blockHeight,omitempty"` - BlockRadius uint64 `protobuf:"varint,5,opt,name=blockRadius,proto3" json:"blockRadius,omitempty"` - Place uint64 `protobuf:"varint,6,opt,name=place,proto3" json:"place,omitempty"` + CanvasWidth uint64 `protobuf:"varint,1,opt,name=canvasWidth,proto3" json:"canvasWidth"` + CanvasHeight uint64 `protobuf:"varint,2,opt,name=canvasHeight,proto3" json:"canvasHeight"` + BlockWidth uint64 `protobuf:"varint,3,opt,name=blockWidth,proto3" json:"blockWidth"` + BlockHeight uint64 `protobuf:"varint,4,opt,name=blockHeight,proto3" json:"blockHeight"` + BlockRadius uint64 `protobuf:"varint,5,opt,name=blockRadius,proto3" json:"blockRadius"` + Place uint64 `protobuf:"varint,6,opt,name=place,proto3" json:"place"` } func (x *GenerateSliderCaptchaRequest) Reset() { @@ -8000,12 +8000,12 @@ type GenerateSliderCaptchaResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr,omitempty"` - CanvasSrc string `protobuf:"bytes,2,opt,name=canvasSrc,proto3" json:"canvasSrc,omitempty"` - BlockSrc string `protobuf:"bytes,3,opt,name=blockSrc,proto3" json:"blockSrc,omitempty"` - BlockY uint64 `protobuf:"varint,4,opt,name=blockY,proto3" json:"blockY,omitempty"` - FaceY uint64 `protobuf:"varint,5,opt,name=faceY,proto3" json:"faceY,omitempty"` - BlockX uint64 `protobuf:"varint,6,opt,name=blockX,proto3" json:"blockX,omitempty"` + NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr"` + CanvasSrc string `protobuf:"bytes,2,opt,name=canvasSrc,proto3" json:"canvasSrc"` + BlockSrc string `protobuf:"bytes,3,opt,name=blockSrc,proto3" json:"blockSrc"` + BlockY uint64 `protobuf:"varint,4,opt,name=blockY,proto3" json:"blockY"` + FaceY uint64 `protobuf:"varint,5,opt,name=faceY,proto3" json:"faceY"` + BlockX uint64 `protobuf:"varint,6,opt,name=blockX,proto3" json:"blockX"` } func (x *GenerateSliderCaptchaResponse) Reset() { @@ -8087,8 +8087,8 @@ type VerifySliderCaptchaRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr,omitempty"` - BlockX float32 `protobuf:"fixed32,2,opt,name=blockX,proto3" json:"blockX,omitempty"` + NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr"` + BlockX float32 `protobuf:"fixed32,2,opt,name=blockX,proto3" json:"blockX"` } func (x *VerifySliderCaptchaRequest) Reset() { @@ -8142,7 +8142,7 @@ type VerifySliderCaptchaResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr,omitempty"` + NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr"` } func (x *VerifySliderCaptchaResponse) Reset() { @@ -8189,7 +8189,7 @@ type VerifySliderStatusRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr,omitempty"` + NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr"` } func (x *VerifySliderStatusRequest) Reset() { @@ -8236,8 +8236,8 @@ type VerifySliderStatusResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr,omitempty"` - Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + NonceStr string `protobuf:"bytes,1,opt,name=nonceStr,proto3" json:"nonceStr"` + Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` } func (x *VerifySliderStatusResponse) Reset() { diff --git a/api/accountFiee/accountFiee.pb.go b/api/accountFiee/accountFiee.pb.go index 6244565..65e809f 100644 --- a/api/accountFiee/accountFiee.pb.go +++ b/api/accountFiee/accountFiee.pb.go @@ -16,8 +16,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.0--rc1 +// protoc-gen-go v1.28.1 +// protoc v5.26.1 // source: api/accountFiee/accountFiee.proto package accountFiee @@ -2158,7 +2158,7 @@ type FddCreateUserRequest struct { Openid string `protobuf:"bytes,1,opt,name=openid,proto3" json:"openid,omitempty"` WxUserId uint32 `protobuf:"varint,2,opt,name=wxUserId,proto3" json:"wxUserId,omitempty"` - //string UserId = 3; + // string UserId = 3; CustomerId string `protobuf:"bytes,4,opt,name=customerId,proto3" json:"customerId,omitempty"` IsVerify bool `protobuf:"varint,5,opt,name=isVerify,proto3" json:"isVerify,omitempty"` TransactionNo string `protobuf:"bytes,6,opt,name=transactionNo,proto3" json:"transactionNo,omitempty"` @@ -3703,7 +3703,7 @@ type SendMsgRequest struct { Domain string `protobuf:"bytes,1,opt,name=Domain,json=domain,proto3" json:"Domain,omitempty"` TelNum string `protobuf:"bytes,2,opt,name=TelNum,json=telNum,proto3" json:"TelNum,omitempty"` - //string TelNum = 2 [json_name = "telNum",(validator.field) = {regex: "^1\\d{10}$",human_error: "70002"}]; + // string TelNum = 2 [json_name = "telNum",(validator.field) = {regex: "^1\\d{10}$",human_error: "70002"}]; Project string `protobuf:"bytes,3,opt,name=Project,json=project,proto3" json:"Project,omitempty"` SignNo uint32 `protobuf:"varint,4,opt,name=signNo,proto3" json:"signNo,omitempty"` MId uint32 `protobuf:"varint,5,opt,name=mId,proto3" json:"mId,omitempty"` @@ -10149,6 +10149,204 @@ func (x *GetChatUserListResp) GetTotal() int64 { return 0 } +type CreateUserAndRealNameRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserNum string `protobuf:"bytes,1,opt,name=userNum,proto3" json:"userNum,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName,proto3" json:"userName,omitempty"` + UserTelArea string `protobuf:"bytes,3,opt,name=userTelArea,proto3" json:"userTelArea,omitempty"` + UserTel string `protobuf:"bytes,4,opt,name=userTel,proto3" json:"userTel,omitempty"` + UserSex string `protobuf:"bytes,5,opt,name=userSex,proto3" json:"userSex,omitempty"` + Nationality string `protobuf:"bytes,6,opt,name=nationality,proto3" json:"nationality,omitempty"` + PlaceOfResidence string `protobuf:"bytes,7,opt,name=placeOfResidence,proto3" json:"placeOfResidence,omitempty"` + DocumentType int32 `protobuf:"varint,8,opt,name=documentType,proto3" json:"documentType,omitempty"` + UserIdCardFrontUrl string `protobuf:"bytes,9,opt,name=userIdCardFrontUrl,proto3" json:"userIdCardFrontUrl,omitempty"` + UserIdCardReverseUrl string `protobuf:"bytes,10,opt,name=userIdCardReverseUrl,proto3" json:"userIdCardReverseUrl,omitempty"` + UserIdCardValidity string `protobuf:"bytes,11,opt,name=userIdCardValidity,proto3" json:"userIdCardValidity,omitempty"` + AuditTime string `protobuf:"bytes,12,opt,name=auditTime,proto3" json:"auditTime,omitempty"` +} + +func (x *CreateUserAndRealNameRequest) Reset() { + *x = CreateUserAndRealNameRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_accountFiee_accountFiee_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateUserAndRealNameRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateUserAndRealNameRequest) ProtoMessage() {} + +func (x *CreateUserAndRealNameRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_accountFiee_accountFiee_proto_msgTypes[129] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateUserAndRealNameRequest.ProtoReflect.Descriptor instead. +func (*CreateUserAndRealNameRequest) Descriptor() ([]byte, []int) { + return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{129} +} + +func (x *CreateUserAndRealNameRequest) GetUserNum() string { + if x != nil { + return x.UserNum + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetUserTelArea() string { + if x != nil { + return x.UserTelArea + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetUserTel() string { + if x != nil { + return x.UserTel + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetUserSex() string { + if x != nil { + return x.UserSex + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetNationality() string { + if x != nil { + return x.Nationality + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetPlaceOfResidence() string { + if x != nil { + return x.PlaceOfResidence + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetDocumentType() int32 { + if x != nil { + return x.DocumentType + } + return 0 +} + +func (x *CreateUserAndRealNameRequest) GetUserIdCardFrontUrl() string { + if x != nil { + return x.UserIdCardFrontUrl + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetUserIdCardReverseUrl() string { + if x != nil { + return x.UserIdCardReverseUrl + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetUserIdCardValidity() string { + if x != nil { + return x.UserIdCardValidity + } + return "" +} + +func (x *CreateUserAndRealNameRequest) GetAuditTime() string { + if x != nil { + return x.AuditTime + } + return "" +} + +type CreateUserAndRealNameResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` + UserNum string `protobuf:"bytes,2,opt,name=userNum,proto3" json:"userNum,omitempty"` + UserName string `protobuf:"bytes,3,opt,name=userName,proto3" json:"userName,omitempty"` +} + +func (x *CreateUserAndRealNameResponse) Reset() { + *x = CreateUserAndRealNameResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_accountFiee_accountFiee_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateUserAndRealNameResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateUserAndRealNameResponse) ProtoMessage() {} + +func (x *CreateUserAndRealNameResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_accountFiee_accountFiee_proto_msgTypes[130] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateUserAndRealNameResponse.ProtoReflect.Descriptor instead. +func (*CreateUserAndRealNameResponse) Descriptor() ([]byte, []int) { + return file_api_accountFiee_accountFiee_proto_rawDescGZIP(), []int{130} +} + +func (x *CreateUserAndRealNameResponse) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *CreateUserAndRealNameResponse) GetUserNum() string { + if x != nil { + return x.UserNum + } + return "" +} + +func (x *CreateUserAndRealNameResponse) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + var File_api_accountFiee_accountFiee_proto protoreflect.FileDescriptor var file_api_accountFiee_accountFiee_proto_rawDesc = []byte{ @@ -11435,14 +11633,50 @@ var file_api_accountFiee_accountFiee_proto_rawDesc = []byte{ 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x2a, 0x72, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, + 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xce, 0x03, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, + 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x53, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, + 0x72, 0x53, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, + 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x43, 0x61, 0x72, 0x64, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x43, 0x61, 0x72, 0x64, 0x46, 0x72, + 0x6f, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x43, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x12, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x43, 0x61, + 0x72, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, + 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x75, 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x6d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x2a, 0x72, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x10, 0x04, 0x12, 0x0c, 0x0a, - 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x10, 0x05, 0x32, 0xcd, 0x2c, 0x0a, 0x0b, + 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x10, 0x05, 0x32, 0xbf, 0x2d, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, @@ -11651,157 +11885,164 @@ var file_api_accountFiee_accountFiee_proto_rawDesc = []byte{ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x73, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0e, 0x53, 0x61, 0x76, 0x65, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0c, 0x53, - 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, - 0x12, 0x4e, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, - 0x12, 0x55, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, - 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x68, - 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0e, 0x53, 0x61, 0x76, 0x65, 0x53, + 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x43, 0x0a, + 0x0c, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, + 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, + 0x22, 0x00, 0x12, 0x55, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x32, 0x1a, 0x21, 0x2e, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x32, - 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, - 0x69, 0x74, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, - 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, - 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x10, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, - 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, - 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x21, 0x2e, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x49, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, - 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0e, - 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, - 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, 0x49, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, + 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x32, 0x1a, + 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x68, 0x61, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x32, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x69, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x57, 0x61, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, + 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x21, + 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, - 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, - 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, + 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x47, + 0x0a, 0x0e, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x12, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x12, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x79, + 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, + 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, + 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x47, 0x0a, + 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0d, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, + 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, + 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x50, 0x0a, + 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, + 0x58, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, + 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, - 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, - 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, - 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, - 0x73, 0x67, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0d, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, - 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, - 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0f, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x23, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, - 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x58, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, - 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x79, - 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, - 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, - 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x69, 0x61, 0x44, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, + 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, + 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, + 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, - 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, - 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, - 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, - 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, - 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, - 0x57, 0x0a, 0x16, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, - 0x75, 0x6c, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, - 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x1b, - 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2d, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, - 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x42, - 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, - 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, - 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, - 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, + 0x00, 0x12, 0x57, 0x0a, 0x16, 0x53, 0x61, 0x76, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, + 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, + 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x18, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x69, 0x65, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x74, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x65, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x73, + 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0e, 0x2e, - 0x2f, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x41, + 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x44, 0x61, 0x74, + 0x61, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, + 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, + 0x75, 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x68, 0x61, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x75, + 0x6c, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x10, 0x5a, + 0x0e, 0x2e, 0x2f, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x65, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -11817,7 +12058,7 @@ func file_api_accountFiee_accountFiee_proto_rawDescGZIP() []byte { } var file_api_accountFiee_accountFiee_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_api_accountFiee_accountFiee_proto_msgTypes = make([]protoimpl.MessageInfo, 129) +var file_api_accountFiee_accountFiee_proto_msgTypes = make([]protoimpl.MessageInfo, 131) var file_api_accountFiee_accountFiee_proto_goTypes = []interface{}{ (MsgType)(0), // 0: accountFiee.MsgType (*VerifySliderStatusRequest)(nil), // 1: accountFiee.VerifySliderStatusRequest @@ -11949,6 +12190,8 @@ var file_api_accountFiee_accountFiee_proto_goTypes = []interface{}{ (*GetChatUserByIdRequest)(nil), // 127: accountFiee.GetChatUserByIdRequest (*GetChatUserListRequest)(nil), // 128: accountFiee.GetChatUserListRequest (*GetChatUserListResp)(nil), // 129: accountFiee.GetChatUserListResp + (*CreateUserAndRealNameRequest)(nil), // 130: accountFiee.CreateUserAndRealNameRequest + (*CreateUserAndRealNameResponse)(nil), // 131: accountFiee.CreateUserAndRealNameResponse } var file_api_accountFiee_accountFiee_proto_depIdxs = []int32{ 11, // 0: accountFiee.UserListResponse.userList:type_name -> accountFiee.UserListInfo @@ -12028,102 +12271,104 @@ var file_api_accountFiee_accountFiee_proto_depIdxs = []int32{ 3, // 74: accountFiee.AccountFiee.SendNationMsg:input_type -> accountFiee.SendNationMsgRequest 1, // 75: accountFiee.AccountFiee.VerifySliderStatus:input_type -> accountFiee.VerifySliderStatusRequest 3, // 76: accountFiee.AccountFiee.SendNationTemplateMsg:input_type -> accountFiee.SendNationMsgRequest - 99, // 77: accountFiee.AccountFiee.SaveSubmitInfo:input_type -> accountFiee.SubmitInfoRequest - 124, // 78: accountFiee.AccountFiee.CreateChatUser:input_type -> accountFiee.ChatUserData - 124, // 79: accountFiee.AccountFiee.UpdateChatUser:input_type -> accountFiee.ChatUserData - 124, // 80: accountFiee.AccountFiee.SaveChatUser:input_type -> accountFiee.ChatUserData - 126, // 81: accountFiee.AccountFiee.DeleteChatUser:input_type -> accountFiee.DeleteChatUserRequest - 127, // 82: accountFiee.AccountFiee.GetChatUserDetail:input_type -> accountFiee.GetChatUserByIdRequest - 128, // 83: accountFiee.AccountFiee.GetChatUserList:input_type -> accountFiee.GetChatUserListRequest - 115, // 84: accountFiee.AccountFiee.GetChatUserList2:input_type -> accountFiee.GetChatUserListRequest2 - 107, // 85: accountFiee.AccountFiee.RegisterWaiter:input_type -> accountFiee.RegisterWaiterRequest - 101, // 86: accountFiee.AccountFiee.CreateChatRecord:input_type -> accountFiee.ChatRecordData - 101, // 87: accountFiee.AccountFiee.UpdateChatRecord:input_type -> accountFiee.ChatRecordData - 101, // 88: accountFiee.AccountFiee.SaveChatRecord:input_type -> accountFiee.ChatRecordData - 103, // 89: accountFiee.AccountFiee.DeleteChatRecord:input_type -> accountFiee.DeleteChatRecordRequest - 104, // 90: accountFiee.AccountFiee.GetChatRecordDetail:input_type -> accountFiee.GetChatRecordByIdRequest - 105, // 91: accountFiee.AccountFiee.GetChatRecordList:input_type -> accountFiee.GetChatRecordListRequest - 109, // 92: accountFiee.AccountFiee.CreateChatMedia:input_type -> accountFiee.ChatMediaData - 109, // 93: accountFiee.AccountFiee.UpdateChatMedia:input_type -> accountFiee.ChatMediaData - 109, // 94: accountFiee.AccountFiee.SaveChatMedia:input_type -> accountFiee.ChatMediaData - 111, // 95: accountFiee.AccountFiee.DeleteChatMedia:input_type -> accountFiee.DeleteChatMediaRequest - 112, // 96: accountFiee.AccountFiee.GetChatMediaDetail:input_type -> accountFiee.GetChatMediaByIdRequest - 113, // 97: accountFiee.AccountFiee.GetChatMediaList:input_type -> accountFiee.GetChatMediaListRequest - 118, // 98: accountFiee.AccountFiee.CreateChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData - 118, // 99: accountFiee.AccountFiee.UpdateChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData - 118, // 100: accountFiee.AccountFiee.SaveChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData - 120, // 101: accountFiee.AccountFiee.DeleteChatAutoReplyRuler:input_type -> accountFiee.DeleteChatAutoReplyRulerRequest - 121, // 102: accountFiee.AccountFiee.GetChatAutoReplyRulerDetail:input_type -> accountFiee.GetChatAutoReplyRulerByIdRequest - 122, // 103: accountFiee.AccountFiee.GetChatAutoReplyRulerList:input_type -> accountFiee.GetChatAutoReplyRulerListRequest - 74, // 104: accountFiee.AccountFiee.Login:output_type -> accountFiee.TokenInfo - 74, // 105: accountFiee.AccountFiee.RefreshToken:output_type -> accountFiee.TokenInfo - 45, // 106: accountFiee.AccountFiee.Logout:output_type -> accountFiee.CommonResponse - 45, // 107: accountFiee.AccountFiee.OffLine:output_type -> accountFiee.CommonResponse - 39, // 108: accountFiee.AccountFiee.OnlineLog:output_type -> accountFiee.LoginLogsResponse - 40, // 109: accountFiee.AccountFiee.OnlineLogById:output_type -> accountFiee.LoginLog - 61, // 110: accountFiee.AccountFiee.CheckPwd:output_type -> accountFiee.UpdateResponse - 51, // 111: accountFiee.AccountFiee.SendMsg:output_type -> accountFiee.SendMsgStatusResponse - 51, // 112: accountFiee.AccountFiee.SendCustomMsg:output_type -> accountFiee.SendMsgStatusResponse - 51, // 113: accountFiee.AccountFiee.SendExCustomMsg:output_type -> accountFiee.SendMsgStatusResponse - 51, // 114: accountFiee.AccountFiee.SendMsgRegister:output_type -> accountFiee.SendMsgStatusResponse - 51, // 115: accountFiee.AccountFiee.CheckMsg:output_type -> accountFiee.SendMsgStatusResponse - 51, // 116: accountFiee.AccountFiee.SendNewTelNumMsg:output_type -> accountFiee.SendMsgStatusResponse - 51, // 117: accountFiee.AccountFiee.UpdateTelNum:output_type -> accountFiee.SendMsgStatusResponse - 71, // 118: accountFiee.AccountFiee.Authentication:output_type -> accountFiee.RequestStatus - 67, // 119: accountFiee.AccountFiee.DecryptJwt:output_type -> accountFiee.DecryptJwtResponse - 13, // 120: accountFiee.AccountFiee.Info:output_type -> accountFiee.UserInfoResponse - 66, // 121: accountFiee.AccountFiee.JobNumGetInfo:output_type -> accountFiee.InfoResponse - 64, // 122: accountFiee.AccountFiee.List:output_type -> accountFiee.ListResponse - 64, // 123: accountFiee.AccountFiee.RandList:output_type -> accountFiee.ListResponse - 64, // 124: accountFiee.AccountFiee.ListByIDs:output_type -> accountFiee.ListResponse - 57, // 125: accountFiee.AccountFiee.Remove:output_type -> accountFiee.RemoveResponse - 61, // 126: accountFiee.AccountFiee.Update:output_type -> accountFiee.UpdateResponse - 64, // 127: accountFiee.AccountFiee.UsersByTel:output_type -> accountFiee.ListResponse - 13, // 128: accountFiee.AccountFiee.UserByTel:output_type -> accountFiee.UserInfoResponse - 51, // 129: accountFiee.AccountFiee.OnlySendMsg:output_type -> accountFiee.SendMsgStatusResponse - 51, // 130: accountFiee.AccountFiee.OnlyCheckMsg:output_type -> accountFiee.SendMsgStatusResponse - 24, // 131: accountFiee.AccountFiee.MailAccountByNickName:output_type -> accountFiee.MaiAccountResponse - 64, // 132: accountFiee.AccountFiee.ListV2:output_type -> accountFiee.ListResponse - 19, // 133: accountFiee.AccountFiee.QueryPersonnelWithTheSameName:output_type -> accountFiee.QueryPersonnelWithTheSameNameResponse - 64, // 134: accountFiee.AccountFiee.UsersByJobNum:output_type -> accountFiee.ListResponse - 14, // 135: accountFiee.AccountFiee.RealName:output_type -> accountFiee.RealNameResponse - 16, // 136: accountFiee.AccountFiee.Register:output_type -> accountFiee.RegisterResponse - 10, // 137: accountFiee.AccountFiee.UserList:output_type -> accountFiee.UserListResponse - 8, // 138: accountFiee.AccountFiee.CheckRealName:output_type -> accountFiee.CheckRealNameResponse - 6, // 139: accountFiee.AccountFiee.GenerateSliderCaptcha:output_type -> accountFiee.GenerateSliderCaptchaResponse - 4, // 140: accountFiee.AccountFiee.VerifySliderCaptcha:output_type -> accountFiee.VerifySliderCaptchaResponse - 51, // 141: accountFiee.AccountFiee.SendNationMsg:output_type -> accountFiee.SendMsgStatusResponse - 2, // 142: accountFiee.AccountFiee.VerifySliderStatus:output_type -> accountFiee.VerifySliderStatusResponse - 51, // 143: accountFiee.AccountFiee.SendNationTemplateMsg:output_type -> accountFiee.SendMsgStatusResponse - 45, // 144: accountFiee.AccountFiee.SaveSubmitInfo:output_type -> accountFiee.CommonResponse - 125, // 145: accountFiee.AccountFiee.CreateChatUser:output_type -> accountFiee.CreateChatUserResp - 100, // 146: accountFiee.AccountFiee.UpdateChatUser:output_type -> accountFiee.CommonMsg - 100, // 147: accountFiee.AccountFiee.SaveChatUser:output_type -> accountFiee.CommonMsg - 100, // 148: accountFiee.AccountFiee.DeleteChatUser:output_type -> accountFiee.CommonMsg - 124, // 149: accountFiee.AccountFiee.GetChatUserDetail:output_type -> accountFiee.ChatUserData - 129, // 150: accountFiee.AccountFiee.GetChatUserList:output_type -> accountFiee.GetChatUserListResp - 117, // 151: accountFiee.AccountFiee.GetChatUserList2:output_type -> accountFiee.GetChatUserListResp2 - 108, // 152: accountFiee.AccountFiee.RegisterWaiter:output_type -> accountFiee.RegisterWaiterResp - 102, // 153: accountFiee.AccountFiee.CreateChatRecord:output_type -> accountFiee.CreateChatRecordResp - 100, // 154: accountFiee.AccountFiee.UpdateChatRecord:output_type -> accountFiee.CommonMsg - 100, // 155: accountFiee.AccountFiee.SaveChatRecord:output_type -> accountFiee.CommonMsg - 100, // 156: accountFiee.AccountFiee.DeleteChatRecord:output_type -> accountFiee.CommonMsg - 101, // 157: accountFiee.AccountFiee.GetChatRecordDetail:output_type -> accountFiee.ChatRecordData - 106, // 158: accountFiee.AccountFiee.GetChatRecordList:output_type -> accountFiee.GetChatRecordListResp - 110, // 159: accountFiee.AccountFiee.CreateChatMedia:output_type -> accountFiee.CreateChatMediaResp - 100, // 160: accountFiee.AccountFiee.UpdateChatMedia:output_type -> accountFiee.CommonMsg - 100, // 161: accountFiee.AccountFiee.SaveChatMedia:output_type -> accountFiee.CommonMsg - 100, // 162: accountFiee.AccountFiee.DeleteChatMedia:output_type -> accountFiee.CommonMsg - 109, // 163: accountFiee.AccountFiee.GetChatMediaDetail:output_type -> accountFiee.ChatMediaData - 114, // 164: accountFiee.AccountFiee.GetChatMediaList:output_type -> accountFiee.GetChatMediaListResp - 119, // 165: accountFiee.AccountFiee.CreateChatAutoReplyRuler:output_type -> accountFiee.CreateChatAutoReplyRulerResp - 100, // 166: accountFiee.AccountFiee.UpdateChatAutoReplyRuler:output_type -> accountFiee.CommonMsg - 100, // 167: accountFiee.AccountFiee.SaveChatAutoReplyRuler:output_type -> accountFiee.CommonMsg - 100, // 168: accountFiee.AccountFiee.DeleteChatAutoReplyRuler:output_type -> accountFiee.CommonMsg - 118, // 169: accountFiee.AccountFiee.GetChatAutoReplyRulerDetail:output_type -> accountFiee.ChatAutoReplyRulerData - 123, // 170: accountFiee.AccountFiee.GetChatAutoReplyRulerList:output_type -> accountFiee.GetChatAutoReplyRulerListResp - 104, // [104:171] is the sub-list for method output_type - 37, // [37:104] is the sub-list for method input_type + 130, // 77: accountFiee.AccountFiee.CreateUserAndRealName:input_type -> accountFiee.CreateUserAndRealNameRequest + 99, // 78: accountFiee.AccountFiee.SaveSubmitInfo:input_type -> accountFiee.SubmitInfoRequest + 124, // 79: accountFiee.AccountFiee.CreateChatUser:input_type -> accountFiee.ChatUserData + 124, // 80: accountFiee.AccountFiee.UpdateChatUser:input_type -> accountFiee.ChatUserData + 124, // 81: accountFiee.AccountFiee.SaveChatUser:input_type -> accountFiee.ChatUserData + 126, // 82: accountFiee.AccountFiee.DeleteChatUser:input_type -> accountFiee.DeleteChatUserRequest + 127, // 83: accountFiee.AccountFiee.GetChatUserDetail:input_type -> accountFiee.GetChatUserByIdRequest + 128, // 84: accountFiee.AccountFiee.GetChatUserList:input_type -> accountFiee.GetChatUserListRequest + 115, // 85: accountFiee.AccountFiee.GetChatUserList2:input_type -> accountFiee.GetChatUserListRequest2 + 107, // 86: accountFiee.AccountFiee.RegisterWaiter:input_type -> accountFiee.RegisterWaiterRequest + 101, // 87: accountFiee.AccountFiee.CreateChatRecord:input_type -> accountFiee.ChatRecordData + 101, // 88: accountFiee.AccountFiee.UpdateChatRecord:input_type -> accountFiee.ChatRecordData + 101, // 89: accountFiee.AccountFiee.SaveChatRecord:input_type -> accountFiee.ChatRecordData + 103, // 90: accountFiee.AccountFiee.DeleteChatRecord:input_type -> accountFiee.DeleteChatRecordRequest + 104, // 91: accountFiee.AccountFiee.GetChatRecordDetail:input_type -> accountFiee.GetChatRecordByIdRequest + 105, // 92: accountFiee.AccountFiee.GetChatRecordList:input_type -> accountFiee.GetChatRecordListRequest + 109, // 93: accountFiee.AccountFiee.CreateChatMedia:input_type -> accountFiee.ChatMediaData + 109, // 94: accountFiee.AccountFiee.UpdateChatMedia:input_type -> accountFiee.ChatMediaData + 109, // 95: accountFiee.AccountFiee.SaveChatMedia:input_type -> accountFiee.ChatMediaData + 111, // 96: accountFiee.AccountFiee.DeleteChatMedia:input_type -> accountFiee.DeleteChatMediaRequest + 112, // 97: accountFiee.AccountFiee.GetChatMediaDetail:input_type -> accountFiee.GetChatMediaByIdRequest + 113, // 98: accountFiee.AccountFiee.GetChatMediaList:input_type -> accountFiee.GetChatMediaListRequest + 118, // 99: accountFiee.AccountFiee.CreateChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData + 118, // 100: accountFiee.AccountFiee.UpdateChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData + 118, // 101: accountFiee.AccountFiee.SaveChatAutoReplyRuler:input_type -> accountFiee.ChatAutoReplyRulerData + 120, // 102: accountFiee.AccountFiee.DeleteChatAutoReplyRuler:input_type -> accountFiee.DeleteChatAutoReplyRulerRequest + 121, // 103: accountFiee.AccountFiee.GetChatAutoReplyRulerDetail:input_type -> accountFiee.GetChatAutoReplyRulerByIdRequest + 122, // 104: accountFiee.AccountFiee.GetChatAutoReplyRulerList:input_type -> accountFiee.GetChatAutoReplyRulerListRequest + 74, // 105: accountFiee.AccountFiee.Login:output_type -> accountFiee.TokenInfo + 74, // 106: accountFiee.AccountFiee.RefreshToken:output_type -> accountFiee.TokenInfo + 45, // 107: accountFiee.AccountFiee.Logout:output_type -> accountFiee.CommonResponse + 45, // 108: accountFiee.AccountFiee.OffLine:output_type -> accountFiee.CommonResponse + 39, // 109: accountFiee.AccountFiee.OnlineLog:output_type -> accountFiee.LoginLogsResponse + 40, // 110: accountFiee.AccountFiee.OnlineLogById:output_type -> accountFiee.LoginLog + 61, // 111: accountFiee.AccountFiee.CheckPwd:output_type -> accountFiee.UpdateResponse + 51, // 112: accountFiee.AccountFiee.SendMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 113: accountFiee.AccountFiee.SendCustomMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 114: accountFiee.AccountFiee.SendExCustomMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 115: accountFiee.AccountFiee.SendMsgRegister:output_type -> accountFiee.SendMsgStatusResponse + 51, // 116: accountFiee.AccountFiee.CheckMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 117: accountFiee.AccountFiee.SendNewTelNumMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 118: accountFiee.AccountFiee.UpdateTelNum:output_type -> accountFiee.SendMsgStatusResponse + 71, // 119: accountFiee.AccountFiee.Authentication:output_type -> accountFiee.RequestStatus + 67, // 120: accountFiee.AccountFiee.DecryptJwt:output_type -> accountFiee.DecryptJwtResponse + 13, // 121: accountFiee.AccountFiee.Info:output_type -> accountFiee.UserInfoResponse + 66, // 122: accountFiee.AccountFiee.JobNumGetInfo:output_type -> accountFiee.InfoResponse + 64, // 123: accountFiee.AccountFiee.List:output_type -> accountFiee.ListResponse + 64, // 124: accountFiee.AccountFiee.RandList:output_type -> accountFiee.ListResponse + 64, // 125: accountFiee.AccountFiee.ListByIDs:output_type -> accountFiee.ListResponse + 57, // 126: accountFiee.AccountFiee.Remove:output_type -> accountFiee.RemoveResponse + 61, // 127: accountFiee.AccountFiee.Update:output_type -> accountFiee.UpdateResponse + 64, // 128: accountFiee.AccountFiee.UsersByTel:output_type -> accountFiee.ListResponse + 13, // 129: accountFiee.AccountFiee.UserByTel:output_type -> accountFiee.UserInfoResponse + 51, // 130: accountFiee.AccountFiee.OnlySendMsg:output_type -> accountFiee.SendMsgStatusResponse + 51, // 131: accountFiee.AccountFiee.OnlyCheckMsg:output_type -> accountFiee.SendMsgStatusResponse + 24, // 132: accountFiee.AccountFiee.MailAccountByNickName:output_type -> accountFiee.MaiAccountResponse + 64, // 133: accountFiee.AccountFiee.ListV2:output_type -> accountFiee.ListResponse + 19, // 134: accountFiee.AccountFiee.QueryPersonnelWithTheSameName:output_type -> accountFiee.QueryPersonnelWithTheSameNameResponse + 64, // 135: accountFiee.AccountFiee.UsersByJobNum:output_type -> accountFiee.ListResponse + 14, // 136: accountFiee.AccountFiee.RealName:output_type -> accountFiee.RealNameResponse + 16, // 137: accountFiee.AccountFiee.Register:output_type -> accountFiee.RegisterResponse + 10, // 138: accountFiee.AccountFiee.UserList:output_type -> accountFiee.UserListResponse + 8, // 139: accountFiee.AccountFiee.CheckRealName:output_type -> accountFiee.CheckRealNameResponse + 6, // 140: accountFiee.AccountFiee.GenerateSliderCaptcha:output_type -> accountFiee.GenerateSliderCaptchaResponse + 4, // 141: accountFiee.AccountFiee.VerifySliderCaptcha:output_type -> accountFiee.VerifySliderCaptchaResponse + 51, // 142: accountFiee.AccountFiee.SendNationMsg:output_type -> accountFiee.SendMsgStatusResponse + 2, // 143: accountFiee.AccountFiee.VerifySliderStatus:output_type -> accountFiee.VerifySliderStatusResponse + 51, // 144: accountFiee.AccountFiee.SendNationTemplateMsg:output_type -> accountFiee.SendMsgStatusResponse + 131, // 145: accountFiee.AccountFiee.CreateUserAndRealName:output_type -> accountFiee.CreateUserAndRealNameResponse + 45, // 146: accountFiee.AccountFiee.SaveSubmitInfo:output_type -> accountFiee.CommonResponse + 125, // 147: accountFiee.AccountFiee.CreateChatUser:output_type -> accountFiee.CreateChatUserResp + 100, // 148: accountFiee.AccountFiee.UpdateChatUser:output_type -> accountFiee.CommonMsg + 100, // 149: accountFiee.AccountFiee.SaveChatUser:output_type -> accountFiee.CommonMsg + 100, // 150: accountFiee.AccountFiee.DeleteChatUser:output_type -> accountFiee.CommonMsg + 124, // 151: accountFiee.AccountFiee.GetChatUserDetail:output_type -> accountFiee.ChatUserData + 129, // 152: accountFiee.AccountFiee.GetChatUserList:output_type -> accountFiee.GetChatUserListResp + 117, // 153: accountFiee.AccountFiee.GetChatUserList2:output_type -> accountFiee.GetChatUserListResp2 + 108, // 154: accountFiee.AccountFiee.RegisterWaiter:output_type -> accountFiee.RegisterWaiterResp + 102, // 155: accountFiee.AccountFiee.CreateChatRecord:output_type -> accountFiee.CreateChatRecordResp + 100, // 156: accountFiee.AccountFiee.UpdateChatRecord:output_type -> accountFiee.CommonMsg + 100, // 157: accountFiee.AccountFiee.SaveChatRecord:output_type -> accountFiee.CommonMsg + 100, // 158: accountFiee.AccountFiee.DeleteChatRecord:output_type -> accountFiee.CommonMsg + 101, // 159: accountFiee.AccountFiee.GetChatRecordDetail:output_type -> accountFiee.ChatRecordData + 106, // 160: accountFiee.AccountFiee.GetChatRecordList:output_type -> accountFiee.GetChatRecordListResp + 110, // 161: accountFiee.AccountFiee.CreateChatMedia:output_type -> accountFiee.CreateChatMediaResp + 100, // 162: accountFiee.AccountFiee.UpdateChatMedia:output_type -> accountFiee.CommonMsg + 100, // 163: accountFiee.AccountFiee.SaveChatMedia:output_type -> accountFiee.CommonMsg + 100, // 164: accountFiee.AccountFiee.DeleteChatMedia:output_type -> accountFiee.CommonMsg + 109, // 165: accountFiee.AccountFiee.GetChatMediaDetail:output_type -> accountFiee.ChatMediaData + 114, // 166: accountFiee.AccountFiee.GetChatMediaList:output_type -> accountFiee.GetChatMediaListResp + 119, // 167: accountFiee.AccountFiee.CreateChatAutoReplyRuler:output_type -> accountFiee.CreateChatAutoReplyRulerResp + 100, // 168: accountFiee.AccountFiee.UpdateChatAutoReplyRuler:output_type -> accountFiee.CommonMsg + 100, // 169: accountFiee.AccountFiee.SaveChatAutoReplyRuler:output_type -> accountFiee.CommonMsg + 100, // 170: accountFiee.AccountFiee.DeleteChatAutoReplyRuler:output_type -> accountFiee.CommonMsg + 118, // 171: accountFiee.AccountFiee.GetChatAutoReplyRulerDetail:output_type -> accountFiee.ChatAutoReplyRulerData + 123, // 172: accountFiee.AccountFiee.GetChatAutoReplyRulerList:output_type -> accountFiee.GetChatAutoReplyRulerListResp + 105, // [105:173] is the sub-list for method output_type + 37, // [37:105] is the sub-list for method input_type 37, // [37:37] is the sub-list for extension type_name 37, // [37:37] is the sub-list for extension extendee 0, // [0:37] is the sub-list for field type_name @@ -13683,6 +13928,30 @@ func file_api_accountFiee_accountFiee_proto_init() { return nil } } + file_api_accountFiee_accountFiee_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateUserAndRealNameRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_accountFiee_accountFiee_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateUserAndRealNameResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -13690,7 +13959,7 @@ func file_api_accountFiee_accountFiee_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_accountFiee_accountFiee_proto_rawDesc, NumEnums: 1, - NumMessages: 129, + NumMessages: 131, NumExtensions: 0, NumServices: 1, }, diff --git a/api/accountFiee/accountFiee.proto b/api/accountFiee/accountFiee.proto index f99e921..b9e5aad 100644 --- a/api/accountFiee/accountFiee.proto +++ b/api/accountFiee/accountFiee.proto @@ -1,3 +1,5 @@ + + /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -29,7 +31,7 @@ service AccountFiee { rpc OnlineLog (LoginInfosByUserIdRequest) returns (LoginLogsResponse) {}//根据用户id获取登录的信息 rpc OnlineLogById (OnlineLogByIdRequest) returns (LoginLog) {}//根据用户id获取登录的信息 rpc CheckPwd (CheckPwdRequest) returns (UpdateResponse) {}//检测密码是否正确 -// rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} + // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} rpc SendMsg (SendMsgRequest) returns (SendMsgStatusResponse) {} //登陆发送验证码 rpc SendCustomMsg (SendCustomMsgRequest) returns (SendMsgStatusResponse) {}//定制化发送内容 rpc SendExCustomMsg (SendCustomMsgRequest) returns (SendMsgStatusResponse) {}//定制化发送内容 @@ -64,6 +66,9 @@ service AccountFiee { rpc VerifySliderStatus(VerifySliderStatusRequest) returns (VerifySliderStatusResponse) {}// 验证滑块验证码状态 rpc SendNationTemplateMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} //发送境外国际短信验证码 --艺术商城 + + rpc CreateUserAndRealName (CreateUserAndRealNameRequest) returns (CreateUserAndRealNameResponse) {}// 创建用户并实名, 自动导入 + // submit info rpc SaveSubmitInfo(SubmitInfoRequest) returns (CommonResponse); @@ -809,7 +814,7 @@ message ClockBatchBindRequest{ repeated uint64 deviceId =3; } message ClockBatchListResponse{ - repeated ClockUserDeviceBatch data = 1; + repeated ClockUserDeviceBatch data = 1; } message ClockUserDeviceBatch{ uint64 userId = 1; @@ -1059,4 +1064,25 @@ message GetChatUserListResp{ int64 page=2; int64 pageSize=3; int64 Total=4; +} + +message CreateUserAndRealNameRequest{ + string userNum = 1; + string userName = 2; + string userTelArea = 3; + string userTel = 4; + string userSex = 5; + string nationality = 6; + string placeOfResidence = 7; + int32 documentType = 8; + string userIdCardFrontUrl = 9; + string userIdCardReverseUrl = 10; + string userIdCardValidity = 11; + string auditTime = 12; +} + +message CreateUserAndRealNameResponse { + int64 userId = 1; + string userNum = 2; + string userName = 3; } \ No newline at end of file diff --git a/api/accountFiee/accountFiee.validator.pb.go b/api/accountFiee/accountFiee.validator.pb.go index 5a339f6..b5b29bf 100644 --- a/api/accountFiee/accountFiee.validator.pb.go +++ b/api/accountFiee/accountFiee.validator.pb.go @@ -5,11 +5,11 @@ package accountFiee import ( fmt "fmt" - math "math" proto "github.com/golang/protobuf/proto" _ "github.com/mwitkow/go-proto-validators" - regexp "regexp" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" + math "math" + regexp "regexp" ) // Reference imports to suppress errors if they are not otherwise used. @@ -697,3 +697,9 @@ func (this *GetChatUserListResp) Validate() error { } return nil } +func (this *CreateUserAndRealNameRequest) Validate() error { + return nil +} +func (this *CreateUserAndRealNameResponse) Validate() error { + return nil +} diff --git a/api/accountFiee/accountFiee_triple.pb.go b/api/accountFiee/accountFiee_triple.pb.go index bd18759..7356a3c 100644 --- a/api/accountFiee/accountFiee_triple.pb.go +++ b/api/accountFiee/accountFiee_triple.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-triple. DO NOT EDIT. // versions: // - protoc-gen-go-triple v1.0.8 -// - protoc v4.24.0--rc1 +// - protoc v5.26.1 // source: api/accountFiee/accountFiee.proto package accountFiee @@ -35,7 +35,7 @@ type AccountFieeClient interface { OnlineLog(ctx context.Context, in *LoginInfosByUserIdRequest, opts ...grpc_go.CallOption) (*LoginLogsResponse, common.ErrorWithAttachment) OnlineLogById(ctx context.Context, in *OnlineLogByIdRequest, opts ...grpc_go.CallOption) (*LoginLog, common.ErrorWithAttachment) CheckPwd(ctx context.Context, in *CheckPwdRequest, opts ...grpc_go.CallOption) (*UpdateResponse, common.ErrorWithAttachment) - // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} + // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} SendMsg(ctx context.Context, in *SendMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) SendCustomMsg(ctx context.Context, in *SendCustomMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) SendExCustomMsg(ctx context.Context, in *SendCustomMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) @@ -69,9 +69,10 @@ type AccountFieeClient interface { SendNationMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) VerifySliderStatus(ctx context.Context, in *VerifySliderStatusRequest, opts ...grpc_go.CallOption) (*VerifySliderStatusResponse, common.ErrorWithAttachment) SendNationTemplateMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) + CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) // submit info SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) - //-----------------------------客服聊天系统-------------------------------- + // -----------------------------客服聊天系统-------------------------------- CreateChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CreateChatUserResp, common.ErrorWithAttachment) UpdateChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) SaveChatUser(ctx context.Context, in *ChatUserData, opts ...grpc_go.CallOption) (*CommonMsg, common.ErrorWithAttachment) @@ -145,6 +146,7 @@ type AccountFieeClientImpl struct { SendNationMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error) VerifySliderStatus func(ctx context.Context, in *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) SendNationTemplateMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error) + CreateUserAndRealName func(ctx context.Context, in *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) SaveSubmitInfo func(ctx context.Context, in *SubmitInfoRequest) (*CommonResponse, error) CreateChatUser func(ctx context.Context, in *ChatUserData) (*CreateChatUserResp, error) UpdateChatUser func(ctx context.Context, in *ChatUserData) (*CommonMsg, error) @@ -426,6 +428,12 @@ func (c *accountFieeClient) SendNationTemplateMsg(ctx context.Context, in *SendN return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SendNationTemplateMsg", in, out) } +func (c *accountFieeClient) CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) { + out := new(CreateUserAndRealNameResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateUserAndRealName", in, out) +} + func (c *accountFieeClient) SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { out := new(CommonResponse) interfaceKey := ctx.Value(constant.InterfaceKey).(string) @@ -599,7 +607,7 @@ type AccountFieeServer interface { OnlineLog(context.Context, *LoginInfosByUserIdRequest) (*LoginLogsResponse, error) OnlineLogById(context.Context, *OnlineLogByIdRequest) (*LoginLog, error) CheckPwd(context.Context, *CheckPwdRequest) (*UpdateResponse, error) - // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} + // rpc RegisterOrExist (RegistRequest) returns (RequestStatus) {} SendMsg(context.Context, *SendMsgRequest) (*SendMsgStatusResponse, error) SendCustomMsg(context.Context, *SendCustomMsgRequest) (*SendMsgStatusResponse, error) SendExCustomMsg(context.Context, *SendCustomMsgRequest) (*SendMsgStatusResponse, error) @@ -633,9 +641,10 @@ type AccountFieeServer interface { SendNationMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) VerifySliderStatus(context.Context, *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) + CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) // submit info SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error) - //-----------------------------客服聊天系统-------------------------------- + // -----------------------------客服聊天系统-------------------------------- CreateChatUser(context.Context, *ChatUserData) (*CreateChatUserResp, error) UpdateChatUser(context.Context, *ChatUserData) (*CommonMsg, error) SaveChatUser(context.Context, *ChatUserData) (*CommonMsg, error) @@ -790,6 +799,9 @@ func (UnimplementedAccountFieeServer) VerifySliderStatus(context.Context, *Verif func (UnimplementedAccountFieeServer) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SendNationTemplateMsg not implemented") } +func (UnimplementedAccountFieeServer) CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateUserAndRealName not implemented") +} func (UnimplementedAccountFieeServer) SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SaveSubmitInfo not implemented") } @@ -2059,6 +2071,35 @@ func _AccountFiee_SendNationTemplateMsg_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } +func _AccountFiee_CreateUserAndRealName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateUserAndRealNameRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateUserAndRealName", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + func _AccountFiee_SaveSubmitInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { in := new(SubmitInfoRequest) if err := dec(in); err != nil { @@ -3009,6 +3050,10 @@ var AccountFiee_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "SendNationTemplateMsg", Handler: _AccountFiee_SendNationTemplateMsg_Handler, }, + { + MethodName: "CreateUserAndRealName", + Handler: _AccountFiee_CreateUserAndRealName_Handler, + }, { MethodName: "SaveSubmitInfo", Handler: _AccountFiee_SaveSubmitInfo_Handler, diff --git a/api/bundle/bundle.pb.go b/api/bundle/bundle.pb.go index b0efad2..7380cc7 100644 --- a/api/bundle/bundle.pb.go +++ b/api/bundle/bundle.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.0--rc1 +// protoc-gen-go v1.28.1 +// protoc v5.26.1 // source: pb/bundle.proto package bundle @@ -318,7 +318,6 @@ type ReconciliationInfo struct { PayStatus int32 `protobuf:"varint,12,opt,name=payStatus,proto3" json:"payStatus"` SerialNumber string `protobuf:"bytes,13,opt,name=serialNumber,proto3" json:"serialNumber"` UserID uint64 `protobuf:"varint,14,opt,name=userID,proto3" json:"userID"` - HandlingFee string `protobuf:"bytes,15,opt,name=handlingFee,proto3" json:"handlingFee"` } func (x *ReconciliationInfo) Reset() { @@ -451,13 +450,6 @@ func (x *ReconciliationInfo) GetUserID() uint64 { return 0 } -func (x *ReconciliationInfo) GetHandlingFee() string { - if x != nil { - return x.HandlingFee - } - return "" -} - type OrderInfoByOrderNoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -649,6 +641,7 @@ type OrderCreateRecord struct { Snapshot string `protobuf:"bytes,18,opt,name=snapshot,proto3" json:"snapshot"` PayType int32 `protobuf:"varint,19,opt,name=payType,proto3" json:"payType"` AddRecords []*OrderCreateAddRecord `protobuf:"bytes,20,rep,name=addRecords,proto3" json:"addRecords"` //增值服务 + OrderNo string `protobuf:"bytes,21,opt,name=orderNo,proto3" json:"orderNo"` } func (x *OrderCreateRecord) Reset() { @@ -823,6 +816,13 @@ func (x *OrderCreateRecord) GetAddRecords() []*OrderCreateAddRecord { return nil } +func (x *OrderCreateRecord) GetOrderNo() string { + if x != nil { + return x.OrderNo + } + return "" +} + type OrderCreateAddRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -836,6 +836,7 @@ type OrderCreateAddRecord struct { Unit string `protobuf:"bytes,6,opt,name=unit,proto3" json:"unit"` Source int32 `protobuf:"varint,7,opt,name=source,proto3" json:"source"` PaymentStatus int32 `protobuf:"varint,8,opt,name=paymentStatus,proto3" json:"paymentStatus"` + HandlingFee string `protobuf:"bytes,9,opt,name=handlingFee,proto3" json:"handlingFee"` } func (x *OrderCreateAddRecord) Reset() { @@ -926,6 +927,13 @@ func (x *OrderCreateAddRecord) GetPaymentStatus() int32 { return 0 } +func (x *OrderCreateAddRecord) GetHandlingFee() string { + if x != nil { + return x.HandlingFee + } + return "" +} + type OrderRecordsRequestV2 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2870,7 +2878,7 @@ type OrderAddRecord struct { CustomerID string `protobuf:"bytes,4,opt,name=customerID,proto3" json:"customerID"` CustomerNum string `protobuf:"bytes,5,opt,name=customerNum,proto3" json:"customerNum"` CustomerName string `protobuf:"bytes,6,opt,name=customerName,proto3" json:"customerName"` - // string valueAddUUID = 12 [json_name = "valueAddUUID"]; + // string valueAddUUID = 12 [json_name = "valueAddUUID"]; Source int32 `protobuf:"varint,7,opt,name=source,proto3" json:"source"` SignContract string `protobuf:"bytes,8,opt,name=signContract,proto3" json:"signContract"` Signature string `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature"` @@ -4080,7 +4088,7 @@ func (x *FinancialConfirmationRequest) GetOrderNo() string { } // ****************************************************新增值服务*********************** -//增值服务 +// 增值服务 type ValueAddService struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4279,7 +4287,7 @@ func (x *ValueAddServiceLang) GetOptions() []*ValueAddPriceOptions { return nil } -//增值服务价格选项 +// 增值服务价格选项 type ValueAddPriceOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4359,7 +4367,7 @@ func (x *ValueAddPriceOptions) GetSaveAmount() string { return "" } -//增值服务列表 +// 增值服务列表 type ValueAddServiceListRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4494,7 +4502,7 @@ func (x *ValueAddServiceListResponse) GetValueAddServiceList() []*ValueAddServic return nil } -//增值服务详情 +// 增值服务详情 type ValueAddServiceDetailRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5188,8 +5196,9 @@ type BundleExtendRecordItem struct { CreatedAt uint64 `protobuf:"varint,9,opt,name=createdAt,proto3" json:"createdAt"` Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` AssociatedOrderNumber string `protobuf:"bytes,11,opt,name=associatedOrderNumber,proto3" json:"associatedOrderNumber"` - OperatorName string `protobuf:"bytes,12,opt,name=operatorName,proto3" json:"operatorName"` - OperatorPhoneNumber string `protobuf:"bytes,13,opt,name=operatorPhoneNumber,proto3" json:"operatorPhoneNumber"` + TimeUnit uint32 `protobuf:"varint,12,opt,name=timeUnit,proto3" json:"timeUnit"` + OperatorName string `protobuf:"bytes,13,opt,name=operatorName,proto3" json:"operatorName"` + OperatorPhoneNumber string `protobuf:"bytes,14,opt,name=operatorPhoneNumber,proto3" json:"operatorPhoneNumber"` } func (x *BundleExtendRecordItem) Reset() { @@ -5301,6 +5310,13 @@ func (x *BundleExtendRecordItem) GetAssociatedOrderNumber() string { return "" } +func (x *BundleExtendRecordItem) GetTimeUnit() uint32 { + if x != nil { + return x.TimeUnit + } + return 0 +} + func (x *BundleExtendRecordItem) GetOperatorName() string { if x != nil { return x.OperatorName @@ -7478,6 +7494,338 @@ func (*ConfirmWorkResp) Descriptor() ([]byte, []int) { return file_pb_bundle_proto_rawDescGZIP(), []int{83} } +type AutoCreateUserAndOrderRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int32 `protobuf:"varint,1,opt,name=num,proto3" json:"num"` // 处理数量 +} + +func (x *AutoCreateUserAndOrderRequest) Reset() { + *x = AutoCreateUserAndOrderRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AutoCreateUserAndOrderRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoCreateUserAndOrderRequest) ProtoMessage() {} + +func (x *AutoCreateUserAndOrderRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[84] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AutoCreateUserAndOrderRequest.ProtoReflect.Descriptor instead. +func (*AutoCreateUserAndOrderRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{84} +} + +func (x *AutoCreateUserAndOrderRequest) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +type UnfinishedInfos struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UnfinishedInfos []*UnfinishedInfo `protobuf:"bytes,1,rep,name=unfinishedInfos,proto3" json:"unfinishedInfos"` +} + +func (x *UnfinishedInfos) Reset() { + *x = UnfinishedInfos{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfinishedInfos) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfinishedInfos) ProtoMessage() {} + +func (x *UnfinishedInfos) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[85] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfinishedInfos.ProtoReflect.Descriptor instead. +func (*UnfinishedInfos) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{85} +} + +func (x *UnfinishedInfos) GetUnfinishedInfos() []*UnfinishedInfo { + if x != nil { + return x.UnfinishedInfos + } + return nil +} + +type UnfinishedInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` + UserNum string `protobuf:"bytes,2,opt,name=userNum,proto3" json:"userNum"` + UserName string `protobuf:"bytes,3,opt,name=userName,proto3" json:"userName"` + UserTelArea string `protobuf:"bytes,4,opt,name=userTelArea,proto3" json:"userTelArea"` + UserTel string `protobuf:"bytes,5,opt,name=userTel,proto3" json:"userTel"` + UserSex string `protobuf:"bytes,6,opt,name=userSex,proto3" json:"userSex"` + Nationality string `protobuf:"bytes,7,opt,name=nationality,proto3" json:"nationality"` + PlaceOfResidence string `protobuf:"bytes,8,opt,name=placeOfResidence,proto3" json:"placeOfResidence"` + DocumentType int32 `protobuf:"varint,9,opt,name=documentType,proto3" json:"documentType"` + UserIdCardFrontUrl string `protobuf:"bytes,10,opt,name=userIdCardFrontUrl,proto3" json:"userIdCardFrontUrl"` + UserIdCardReverseUrl string `protobuf:"bytes,11,opt,name=userIdCardReverseUrl,proto3" json:"userIdCardReverseUrl"` + UserIdCardValidity string `protobuf:"bytes,12,opt,name=userIdCardValidity,proto3" json:"userIdCardValidity"` + OrderNo string `protobuf:"bytes,13,opt,name=orderNo,proto3" json:"orderNo"` + OrderPayAmount string `protobuf:"bytes,14,opt,name=orderPayAmount,proto3" json:"orderPayAmount"` + OrderSettlementAmount string `protobuf:"bytes,15,opt,name=orderSettlementAmount,proto3" json:"orderSettlementAmount"` + OrderFeeAmount string `protobuf:"bytes,16,opt,name=orderFeeAmount,proto3" json:"orderFeeAmount"` + OrderPayCurrency string `protobuf:"bytes,17,opt,name=orderPayCurrency,proto3" json:"orderPayCurrency"` + OrderAccountCurrency string `protobuf:"bytes,18,opt,name=orderAccountCurrency,proto3" json:"orderAccountCurrency"` + PayTime string `protobuf:"bytes,19,opt,name=payTime,proto3" json:"payTime"` +} + +func (x *UnfinishedInfo) Reset() { + *x = UnfinishedInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfinishedInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfinishedInfo) ProtoMessage() {} + +func (x *UnfinishedInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[86] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfinishedInfo.ProtoReflect.Descriptor instead. +func (*UnfinishedInfo) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{86} +} + +func (x *UnfinishedInfo) GetID() uint32 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *UnfinishedInfo) GetUserNum() string { + if x != nil { + return x.UserNum + } + return "" +} + +func (x *UnfinishedInfo) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *UnfinishedInfo) GetUserTelArea() string { + if x != nil { + return x.UserTelArea + } + return "" +} + +func (x *UnfinishedInfo) GetUserTel() string { + if x != nil { + return x.UserTel + } + return "" +} + +func (x *UnfinishedInfo) GetUserSex() string { + if x != nil { + return x.UserSex + } + return "" +} + +func (x *UnfinishedInfo) GetNationality() string { + if x != nil { + return x.Nationality + } + return "" +} + +func (x *UnfinishedInfo) GetPlaceOfResidence() string { + if x != nil { + return x.PlaceOfResidence + } + return "" +} + +func (x *UnfinishedInfo) GetDocumentType() int32 { + if x != nil { + return x.DocumentType + } + return 0 +} + +func (x *UnfinishedInfo) GetUserIdCardFrontUrl() string { + if x != nil { + return x.UserIdCardFrontUrl + } + return "" +} + +func (x *UnfinishedInfo) GetUserIdCardReverseUrl() string { + if x != nil { + return x.UserIdCardReverseUrl + } + return "" +} + +func (x *UnfinishedInfo) GetUserIdCardValidity() string { + if x != nil { + return x.UserIdCardValidity + } + return "" +} + +func (x *UnfinishedInfo) GetOrderNo() string { + if x != nil { + return x.OrderNo + } + return "" +} + +func (x *UnfinishedInfo) GetOrderPayAmount() string { + if x != nil { + return x.OrderPayAmount + } + return "" +} + +func (x *UnfinishedInfo) GetOrderSettlementAmount() string { + if x != nil { + return x.OrderSettlementAmount + } + return "" +} + +func (x *UnfinishedInfo) GetOrderFeeAmount() string { + if x != nil { + return x.OrderFeeAmount + } + return "" +} + +func (x *UnfinishedInfo) GetOrderPayCurrency() string { + if x != nil { + return x.OrderPayCurrency + } + return "" +} + +func (x *UnfinishedInfo) GetOrderAccountCurrency() string { + if x != nil { + return x.OrderAccountCurrency + } + return "" +} + +func (x *UnfinishedInfo) GetPayTime() string { + if x != nil { + return x.PayTime + } + return "" +} + +type SoftDeleteUnfinishedInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ID uint32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID"` +} + +func (x *SoftDeleteUnfinishedInfoRequest) Reset() { + *x = SoftDeleteUnfinishedInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pb_bundle_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SoftDeleteUnfinishedInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SoftDeleteUnfinishedInfoRequest) ProtoMessage() {} + +func (x *SoftDeleteUnfinishedInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_pb_bundle_proto_msgTypes[87] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SoftDeleteUnfinishedInfoRequest.ProtoReflect.Descriptor instead. +func (*SoftDeleteUnfinishedInfoRequest) Descriptor() ([]byte, []int) { + return file_pb_bundle_proto_rawDescGZIP(), []int{87} +} + +func (x *SoftDeleteUnfinishedInfoRequest) GetID() uint32 { + if x != nil { + return x.ID + } + return 0 +} + var File_pb_bundle_proto protoreflect.FileDescriptor var file_pb_bundle_proto_rawDesc = []byte{ @@ -7529,7 +7877,7 @@ var file_pb_bundle_proto_rawDesc = []byte{ 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xe8, 0x03, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x6f, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xc6, 0x03, 0x0a, 0x12, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4f, 0x6e, 0x18, @@ -7558,1152 +7906,1212 @@ var file_pb_bundle_proto_rawDesc = []byte{ 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, - 0x65, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, - 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0xb8, 0x02, 0x0a, 0x16, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x24, - 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x61, - 0x74, 0x61, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa9, 0x05, 0x0a, 0x11, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, - 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, - 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x22, 0xf4, 0x01, 0x0a, 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xcd, 0x04, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, - 0x32, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, - 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, - 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x30, 0x0a, 0x13, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, - 0x45, 0x6e, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x50, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x56, 0x32, 0x12, 0x3d, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xed, 0x02, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, - 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, - 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, - 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, - 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xbe, 0x03, 0x0a, 0x18, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, - 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, - 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x22, - 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x22, 0x47, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x22, 0x50, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x4e, 0x6f, 0x22, 0xb1, 0x05, 0x0a, 0x0d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x67, - 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, - 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, - 0x67, 0x49, 0x6d, 0x67, 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x67, 0x49, - 0x6d, 0x67, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x32, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x73, - 0x68, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x73, 0x68, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x53, 0x0a, - 0x15, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x15, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x47, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x6d, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x69, 0x6d, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x6e, - 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, - 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xed, 0x03, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6c, - 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, - 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x31, 0x12, - 0x16, 0x0a, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x65, 0x6c, 0x66, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, - 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x67, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6d, - 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x22, 0x9d, 0x01, 0x0a, 0x15, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, - 0x64, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x41, 0x64, 0x64, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x73, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x69, 0x73, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x26, 0x0a, 0x10, 0x44, - 0x65, 0x6c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x22, 0x5b, 0x0a, 0x12, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x22, 0x45, 0x0a, 0x13, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x48, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x53, - 0x68, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x57, 0x0a, 0x14, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x59, 0x0a, 0x16, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x56, 0x32, 0x12, 0x2d, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xa6, 0x0b, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, + 0x22, 0x35, 0x0a, 0x19, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0xb8, 0x02, 0x0a, 0x16, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0xc3, 0x05, 0x0a, 0x11, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, + 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, + 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x12, 0x20, + 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x55, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x14, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0x96, 0x02, 0x0a, 0x14, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x12, + 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, + 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, + 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, + 0x65, 0x22, 0xcd, 0x04, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x32, 0x12, 0x22, 0x0a, 0x0c, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x64, 0x64, + 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, + 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x4e, 0x6f, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, + 0x45, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, + 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x45, 0x6e, 0x64, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x61, 0x79, 0x45, 0x6e, + 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x3d, 0x0a, 0x0a, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x22, 0xed, 0x02, 0x0a, 0x15, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, - 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, - 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x72, - 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, - 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, - 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x12, 0x2e, 0x0a, - 0x12, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x32, 0x0a, - 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x34, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x41, 0x64, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, - 0x13, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x41, 0x64, 0x64, 0x53, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, - 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x19, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x69, 0x74, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x1c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, - 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, - 0x6f, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, - 0x6f, 0x74, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x2e, 0x0a, - 0x12, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x55, 0x69, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x64, 0x64, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x34, 0x0a, - 0x15, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x66, 0x69, - 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x22, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x24, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, - 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x12, 0x2b, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x27, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x61, 0x64, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x59, - 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x4e, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, - 0x64, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x41, 0x64, 0x64, 0x55, 0x55, 0x49, 0x44, 0x22, 0xdd, 0x03, 0x0a, 0x0e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x13, - 0x61, 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x13, 0x61, 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, - 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x41, 0x64, - 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, - 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, - 0x74, 0x22, 0x50, 0x0a, 0x10, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x6e, 0x75, 0x6d, 0x22, 0xa7, 0x04, 0x0a, 0x13, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, - 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, 0x44, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, - 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, - 0x0d, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x79, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x50, 0x61, - 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x64, - 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x48, 0x61, 0x76, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0e, 0x69, 0x73, 0x48, 0x61, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x12, - 0x34, 0x0a, 0x15, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, - 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x22, 0x65, 0x0a, - 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xa1, 0x01, 0x0a, 0x19, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, - 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, - 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, 0x44, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, 0x44, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x65, 0x0a, 0x1a, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, - 0xdd, 0x02, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, - 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, - 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x0b, 0x73, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, - 0x13, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x2e, 0x0a, 0x12, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x64, 0x64, - 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x22, - 0x59, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, - 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, - 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x28, 0xe2, 0xdf, 0x1f, - 0x24, 0x10, 0x1d, 0x18, 0x65, 0x2a, 0x1e, 0xe8, 0x87, 0xb3, 0xe5, 0xb0, 0x91, 0xe6, 0x95, 0xb0, - 0xe4, 0xb8, 0xba, 0x33, 0x30, 0x2c, 0xe6, 0x9c, 0x80, 0xe5, 0xa4, 0x9a, 0xe6, 0x95, 0xb0, 0xe4, - 0xb8, 0xba, 0x31, 0x30, 0x30, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x86, 0x01, 0x0a, 0x1c, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x73, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x73, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6d, 0x73, 0x67, 0x22, 0x71, 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xf7, 0x01, 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, - 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, - 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, - 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, - 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x10, - 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, - 0x22, 0x31, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x22, 0x7d, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, - 0x73, 0x67, 0x22, 0x38, 0x0a, 0x1c, 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0xa8, 0x01, 0x0a, - 0x0f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x22, 0xf3, 0x02, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, + 0x26, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x46, 0x0a, 0x0d, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, + 0x65, 0x22, 0xbe, 0x03, 0x0a, 0x18, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, + 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x10, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, + 0x6e, 0x67, 0x46, 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x61, 0x6e, + 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x50, + 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x61, 0x64, 0x64, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, + 0x49, 0x44, 0x22, 0x47, 0x0a, 0x1b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x41, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x0e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0xb1, 0x05, + 0x0a, 0x0d, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x31, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x31, 0x12, 0x16, 0x0a, + 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, + 0x67, 0x49, 0x6d, 0x67, 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x65, 0x6c, 0x66, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x65, 0x6c, + 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x53, 0x0a, 0x15, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x15, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x11, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x61, 0x6e, + 0x67, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x61, + 0x6e, 0x67, 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x67, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6d, 0x67, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x22, 0xed, 0x03, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x67, 0x6e, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, + 0x69, 0x67, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x6f, 0x72, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x67, 0x49, + 0x6d, 0x67, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x67, 0x49, 0x6d, 0x67, + 0x32, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6d, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x52, 0x0a, 0x0c, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, - 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x86, 0x01, - 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, - 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x61, 0x76, 0x65, 0x41, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x61, 0x76, 0x65, - 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7c, 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, - 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, - 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, - 0x75, 0x61, 0x67, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, - 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x49, 0x0a, 0x13, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x74, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x41, 0x0a, 0x0f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x59, 0x0a, - 0x15, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x40, 0x0a, 0x16, 0x43, 0x61, 0x6c, 0x63, - 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x44, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x26, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x8d, 0x01, + 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x5b, 0x0a, + 0x12, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x45, 0x0a, 0x13, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x22, 0x48, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x53, 0x68, 0x65, 0x6c, 0x66, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x68, 0x65, + 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x73, 0x68, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x57, 0x0a, 0x14, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6d, 0x73, 0x67, 0x22, 0x59, 0x0a, 0x16, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x32, 0x12, 0x2d, + 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, + 0xa6, 0x0b, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, + 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, + 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x4e, 0x6f, 0x12, 0x2e, 0x0a, 0x12, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x34, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x41, 0x64, 0x64, 0x53, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x61, + 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x65, 0x78, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, + 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x1b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, + 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x1e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x12, 0x28, 0x0a, + 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x64, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, 0x20, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x66, 0x69, 0x6e, 0x61, 0x6e, + 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, + 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x12, 0x44, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x24, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2b, 0x0a, 0x08, 0x61, + 0x64, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, + 0x61, 0x64, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x59, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x10, 0x0a, + 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, + 0x22, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x55, 0x55, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x55, + 0x55, 0x49, 0x44, 0x22, 0xdd, 0x03, 0x0a, 0x0e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x13, 0x61, 0x64, 0x64, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x13, 0x61, 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, + 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, + 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, + 0x49, 0x44, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x50, 0x0a, 0x10, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, + 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, 0xa7, 0x04, + 0x0a, 0x13, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, + 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x65, 0x6e, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, + 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x73, 0x48, 0x61, 0x76, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x41, 0x64, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x69, 0x73, 0x48, 0x61, 0x76, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x66, 0x69, 0x6e, + 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x66, 0x69, 0x6e, 0x61, 0x6e, 0x63, + 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x22, 0x65, 0x0a, 0x14, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x37, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0c, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0xa1, + 0x01, 0x0a, 0x19, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x55, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x65, 0x0a, 0x1a, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x35, 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xdd, 0x02, 0x0a, 0x15, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, + 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x73, 0x61, 0x76, 0x65, + 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x6f, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x6f, 0x73, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x64, 0x64, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x55, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x1b, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x28, 0xe2, 0xdf, 0x1f, 0x24, 0x10, 0x1d, 0x18, 0x65, 0x2a, + 0x1e, 0xe8, 0x87, 0xb3, 0xe5, 0xb0, 0x91, 0xe6, 0x95, 0xb0, 0xe4, 0xb8, 0xba, 0x33, 0x30, 0x2c, + 0xe6, 0x9c, 0x80, 0xe5, 0xa4, 0x9a, 0xe6, 0x95, 0xb0, 0xe4, 0xb8, 0xba, 0x31, 0x30, 0x30, 0x52, + 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x86, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x61, 0x76, + 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, + 0x73, 0x61, 0x76, 0x65, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, + 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x71, 0x0a, + 0x19, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, + 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x22, 0xf7, 0x01, 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x31, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x31, 0x0a, 0x1b, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x7d, 0x0a, + 0x1c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x38, 0x0a, 0x1c, + 0x46, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0xa8, 0x01, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, + 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, + 0x67, 0x22, 0xf3, 0x02, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, + 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x41, 0x64, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, + 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x61, 0x76, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x61, 0x76, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x7c, 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x90, + 0x01, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x49, 0x0a, 0x13, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, + 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x13, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x22, 0x4e, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x22, 0x74, 0x0a, 0x1d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x22, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x75, 0x75, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x05, 0x75, 0x75, 0x69, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x23, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, - 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x55, 0x0a, 0x17, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, - 0x61, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x03, 0x6d, 0x73, 0x67, 0x12, 0x41, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x17, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x8f, 0x04, 0x0a, 0x13, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x73, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x41, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x41, - 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0e, 0x64, 0x61, 0x74, 0x61, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, - 0x40, 0x0a, 0x1b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x65, 0x64, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x30, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, - 0x0a, 0x1e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x15, - 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x73, 0x73, - 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x22, 0x6b, 0x0a, 0x1f, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0xa2, 0x04, 0x0a, 0x16, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x28, - 0x0a, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x73, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x41, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x64, 0x61, - 0x74, 0x61, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x1b, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x59, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x22, 0x40, 0x0a, 0x16, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x14, + 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x22, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, + 0x61, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x75, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x75, 0x75, 0x69, 0x64, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x22, 0x8e, 0x01, 0x0a, + 0x23, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x55, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, + 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x4c, 0x61, 0x6e, 0x67, 0x52, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x64, 0x64, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x8f, 0x04, + 0x0a, 0x13, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2c, 0x0a, + 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x1b, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x1b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x61, 0x73, 0x73, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, - 0x74, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, - 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x89, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x12, 0x2a, 0x0a, 0x10, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x22, 0xed, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x22, 0xa3, 0x05, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x73, - 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, + 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x74, + 0x69, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, + 0x69, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, + 0x34, 0x0a, 0x15, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, + 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x16, 0x0a, 0x14, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x1e, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, + 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x6b, 0x0a, 0x1f, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xbe, 0x04, 0x0a, 0x16, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x26, + 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x1b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, + 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, + 0x72, 0x6b, 0x12, 0x34, 0x0a, 0x15, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x15, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, + 0x55, 0x6e, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, + 0x55, 0x6e, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x89, 0x02, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6f, + 0x75, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x6f, 0x75, 0x67, + 0x68, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, + 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xed, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, + 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xa3, 0x05, 0x0a, 0x11, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x18, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x61, + 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1d, 0x64, 0x61, + 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x32, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, + 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, + 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x22, 0x5f, 0x0a, 0x18, + 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2d, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8e, 0x04, + 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, - 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, + 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x69, 0x6d, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x64, 0x61, 0x74, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x22, 0x5f, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x19, + 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9b, 0x04, 0x0a, 0x13, 0x41, 0x64, + 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, + 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x0a, + 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, + 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, + 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, + 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, + 0xa6, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x45, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x57, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x57, + 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0xf4, 0x03, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x73, 0x74, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, + 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, + 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x49, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x49, 0x44, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x49, 0x44, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, + 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x6f, 0x72, + 0x6b, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, + 0x71, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x64, 0x69, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x22, 0x6d, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, + 0x0a, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, + 0x72, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x72, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x22, 0x67, 0x0a, 0x15, 0x54, 0x6f, 0x42, 0x65, 0x43, 0x6f, 0x6d, 0x66, 0x69, 0x72, + 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x9a, 0x03, 0x0a, 0x08, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, + 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, + 0x0a, 0x0f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x76, 0x0a, 0x16, 0x54, 0x6f, 0x42, 0x65, + 0x43, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, - 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8e, 0x04, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, - 0x0a, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x76, 0x69, + 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x35, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x12, + 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x9e, 0x07, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, + 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x79, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, + 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, + 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, + 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x16, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, - 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x36, + 0x0a, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x44, 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, + 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, - 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x9b, 0x04, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, - 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, - 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x36, 0x0a, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, - 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x32, 0x0a, - 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x65, 0x78, 0x70, - 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa6, 0x02, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x45, - 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x22, 0x57, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf4, 0x03, 0x0a, 0x0c, - 0x57, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, - 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, - 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x49, 0x44, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x49, - 0x44, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x2f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x77, - 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x6f, 0x72, - 0x6b, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x57, - 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, - 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x6f, - 0x72, 0x6b, 0x49, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x16, 0x0a, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x6d, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x56, 0x65, 0x64, 0x69, 0x6f, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x6f, 0x72, 0x6b, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x67, 0x0a, 0x15, - 0x54, 0x6f, 0x42, 0x65, 0x43, 0x6f, 0x6d, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, - 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x9a, 0x03, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x74, - 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, - 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x49, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, - 0x64, 0x69, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, - 0x69, 0x64, 0x22, 0x76, 0x0a, 0x16, 0x54, 0x6f, 0x42, 0x65, 0x43, 0x6f, 0x6d, 0x66, 0x69, 0x72, - 0x6d, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x35, 0x0a, 0x1b, 0x47, 0x65, - 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x22, 0x9e, 0x07, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, - 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x70, 0x61, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, - 0x0a, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x18, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x16, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x73, 0x75, - 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x28, - 0x0a, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x61, - 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x36, 0x0a, 0x16, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x16, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x41, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x44, 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x1d, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x32, - 0x0a, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x65, 0x78, - 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x22, 0x3c, 0x0a, 0x20, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, - 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, - 0x22, 0x5e, 0x0a, 0x1d, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x3d, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x0e, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, - 0x22, 0xb5, 0x01, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x24, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, - 0x69, 0x6d, 0x65, 0x42, 0x79, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2c, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, - 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, - 0x75, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x57, 0x6f, - 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x32, 0xce, 0x1f, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x6b, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x3c, 0x0a, 0x20, 0x4f, 0x6e, 0x6c, 0x79, + 0x41, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x22, 0x5e, 0x0a, 0x1d, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x64, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x41, 0x64, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8a, + 0x01, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, + 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x79, 0x53, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, + 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x61, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2c, 0x0a, 0x0e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, + 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x72, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x31, 0x0a, 0x1d, + 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x6e, + 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, + 0x53, 0x0a, 0x0f, 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x75, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x75, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xcc, 0x05, 0x0a, 0x0e, 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x75, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x41, 0x72, 0x65, 0x61, 0x12, + 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, + 0x72, 0x53, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x53, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, + 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x43, + 0x61, 0x72, 0x64, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x43, 0x61, 0x72, 0x64, 0x46, 0x72, 0x6f, + 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x43, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x14, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x12, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x43, 0x61, 0x72, + 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x4e, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x4e, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x61, 0x79, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x50, 0x61, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x65, 0x65, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x46, 0x65, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x50, 0x61, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x61, 0x79, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x32, 0x0a, 0x14, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x14, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x1f, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x32, 0x86, 0x21, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, @@ -8956,8 +9364,20 @@ var file_pb_bundle_proto_rawDesc = []byte{ 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x79, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x25, + 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x55, + 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x00, + 0x12, 0x5d, 0x0a, 0x18, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x6e, + 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x2e, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x55, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, + 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -8972,7 +9392,7 @@ func file_pb_bundle_proto_rawDescGZIP() []byte { return file_pb_bundle_proto_rawDescData } -var file_pb_bundle_proto_msgTypes = make([]protoimpl.MessageInfo, 84) +var file_pb_bundle_proto_msgTypes = make([]protoimpl.MessageInfo, 88) var file_pb_bundle_proto_goTypes = []interface{}{ (*DeleteValueAddServiceRequest)(nil), // 0: bundle.DeleteValueAddServiceRequest (*GetReconciliationListReq)(nil), // 1: bundle.GetReconciliationListReq @@ -9058,6 +9478,10 @@ var file_pb_bundle_proto_goTypes = []interface{}{ (*UpdateStatusAndPayTimeBySerialNumber)(nil), // 81: bundle.UpdateStatusAndPayTimeBySerialNumber (*ConfirmWorkReq)(nil), // 82: bundle.ConfirmWorkReq (*ConfirmWorkResp)(nil), // 83: bundle.ConfirmWorkResp + (*AutoCreateUserAndOrderRequest)(nil), // 84: bundle.AutoCreateUserAndOrderRequest + (*UnfinishedInfos)(nil), // 85: bundle.UnfinishedInfos + (*UnfinishedInfo)(nil), // 86: bundle.UnfinishedInfo + (*SoftDeleteUnfinishedInfoRequest)(nil), // 87: bundle.SoftDeleteUnfinishedInfoRequest } var file_pb_bundle_proto_depIdxs = []int32{ 3, // 0: bundle.GetReconciliationListResp.list:type_name -> bundle.ReconciliationInfo @@ -9086,105 +9510,110 @@ var file_pb_bundle_proto_depIdxs = []int32{ 68, // 23: bundle.GetUsedRecordListResp.data:type_name -> bundle.WorkCastItem 74, // 24: bundle.ToBeComfirmedWorksResp.data:type_name -> bundle.workItem 80, // 25: bundle.OnlyAddValueListByOrderNoResp.AddBundleInfos:type_name -> bundle.AddBundleInfo - 14, // 26: bundle.Bundle.CreateBundle:input_type -> bundle.BundleProfile - 14, // 27: bundle.Bundle.UpdateBundle:input_type -> bundle.BundleProfile - 18, // 28: bundle.Bundle.DeleteBundle:input_type -> bundle.DelBundleRequest - 22, // 29: bundle.Bundle.HandShelf:input_type -> bundle.HandShelfRequest - 14, // 30: bundle.Bundle.SaveBundle:input_type -> bundle.BundleProfile - 19, // 31: bundle.Bundle.BundleListV2:input_type -> bundle.BundleListRequest - 21, // 32: bundle.Bundle.BundleDetailV2:input_type -> bundle.BundleDetailRequest - 19, // 33: bundle.Bundle.BundleListH5V2:input_type -> bundle.BundleListRequest - 21, // 34: bundle.Bundle.BundleLangDetailV2:input_type -> bundle.BundleDetailRequest - 19, // 35: bundle.Bundle.BundleList:input_type -> bundle.BundleListRequest - 21, // 36: bundle.Bundle.BundleDetail:input_type -> bundle.BundleDetailRequest - 6, // 37: bundle.Bundle.CreateOrderRecord:input_type -> bundle.OrderCreateRecord - 25, // 38: bundle.Bundle.UpdateOrderRecord:input_type -> bundle.OrderRecord - 25, // 39: bundle.Bundle.UpdateOrderRecordByOrderNo:input_type -> bundle.OrderRecord - 30, // 40: bundle.Bundle.OrderRecordsList:input_type -> bundle.OrderRecordsRequest - 32, // 41: bundle.Bundle.OrderRecordsDetail:input_type -> bundle.OrderRecordsDetailRequest - 41, // 42: bundle.Bundle.UpdateFinancialConfirmationStatus:input_type -> bundle.FinancialConfirmationRequest - 27, // 43: bundle.Bundle.CreateOrderAddRecord:input_type -> bundle.OrderAddRecord - 25, // 44: bundle.Bundle.PackagePriceAndTime:input_type -> bundle.OrderRecord - 8, // 45: bundle.Bundle.OrderRecordsListV2:input_type -> bundle.OrderRecordsRequestV2 - 4, // 46: bundle.Bundle.OrderListByOrderNo:input_type -> bundle.OrderInfoByOrderNoRequest - 78, // 47: bundle.Bundle.OnlyAddValueListByOrderNo:input_type -> bundle.OnlyAddValueListByOrderNoRequest - 35, // 48: bundle.Bundle.CreateValueAddBundle:input_type -> bundle.CreateValueAddBundleRequest - 37, // 49: bundle.Bundle.ValueAddBundleList:input_type -> bundle.ValueAddBundleListRequest - 39, // 50: bundle.Bundle.ValueAddBundleDetail:input_type -> bundle.ValueAddBundleDetailRequest - 43, // 51: bundle.Bundle.SaveValueAddService:input_type -> bundle.ValueAddServiceLang - 45, // 52: bundle.Bundle.ValueAddServiceList:input_type -> bundle.ValueAddServiceListRequest - 47, // 53: bundle.Bundle.ValueAddServiceDetail:input_type -> bundle.ValueAddServiceDetailRequest - 47, // 54: bundle.Bundle.ValueAddServiceLangByUuidAndLanguage:input_type -> bundle.ValueAddServiceDetailRequest - 49, // 55: bundle.Bundle.CalculatePrice:input_type -> bundle.CalculatePriceRequest - 51, // 56: bundle.Bundle.BatchGetValueAddServiceLang:input_type -> bundle.BatchGetValueAddServiceLangRequest - 0, // 57: bundle.Bundle.DeleteValueAddService:input_type -> bundle.DeleteValueAddServiceRequest - 53, // 58: bundle.Bundle.BundleExtend:input_type -> bundle.BundleExtendRequest - 55, // 59: bundle.Bundle.BundleExtendRecordsList:input_type -> bundle.BundleExtendRecordsListRequest - 58, // 60: bundle.Bundle.GetBundleBalanceList:input_type -> bundle.GetBundleBalanceListReq - 76, // 61: bundle.Bundle.GetBundleBalanceByUserId:input_type -> bundle.GetBundleBalanceByUserIdReq - 62, // 62: bundle.Bundle.CreateBundleBalance:input_type -> bundle.CreateBundleBalanceReq - 64, // 63: bundle.Bundle.AddBundleBalance:input_type -> bundle.AddBundleBalanceReq - 66, // 64: bundle.Bundle.GetUsedRecordList:input_type -> bundle.GetUsedRecordListReq - 69, // 65: bundle.Bundle.GetImageWorkDetail:input_type -> bundle.GetImageWorkDetailReq - 70, // 66: bundle.Bundle.GetVedioWorkDetail:input_type -> bundle.GetVedioWorkDetailReq - 73, // 67: bundle.Bundle.ToBeComfirmedWorks:input_type -> bundle.ToBeComfirmedWorksReq - 82, // 68: bundle.Bundle.ConfirmWork:input_type -> bundle.ConfirmWorkReq - 1, // 69: bundle.Bundle.GetReconciliationList:input_type -> bundle.GetReconciliationListReq - 3, // 70: bundle.Bundle.CreateReconciliation:input_type -> bundle.ReconciliationInfo - 3, // 71: bundle.Bundle.UpdateReconciliation:input_type -> bundle.ReconciliationInfo - 81, // 72: bundle.Bundle.UpdateReconciliationStatusBySerialNumber:input_type -> bundle.UpdateStatusAndPayTimeBySerialNumber - 13, // 73: bundle.Bundle.CreateBundle:output_type -> bundle.CommonResponse - 13, // 74: bundle.Bundle.UpdateBundle:output_type -> bundle.CommonResponse - 13, // 75: bundle.Bundle.DeleteBundle:output_type -> bundle.CommonResponse - 13, // 76: bundle.Bundle.HandShelf:output_type -> bundle.CommonResponse - 16, // 77: bundle.Bundle.SaveBundle:output_type -> bundle.SaveResponse - 20, // 78: bundle.Bundle.BundleListV2:output_type -> bundle.BundleListResponse - 24, // 79: bundle.Bundle.BundleDetailV2:output_type -> bundle.BundleDetailResponseV2 - 20, // 80: bundle.Bundle.BundleListH5V2:output_type -> bundle.BundleListResponse - 15, // 81: bundle.Bundle.BundleLangDetailV2:output_type -> bundle.BundleProfileLang - 20, // 82: bundle.Bundle.BundleList:output_type -> bundle.BundleListResponse - 23, // 83: bundle.Bundle.BundleDetail:output_type -> bundle.BundleDetailResponse - 13, // 84: bundle.Bundle.CreateOrderRecord:output_type -> bundle.CommonResponse - 13, // 85: bundle.Bundle.UpdateOrderRecord:output_type -> bundle.CommonResponse - 13, // 86: bundle.Bundle.UpdateOrderRecordByOrderNo:output_type -> bundle.CommonResponse - 31, // 87: bundle.Bundle.OrderRecordsList:output_type -> bundle.OrderRecordsResponse - 33, // 88: bundle.Bundle.OrderRecordsDetail:output_type -> bundle.OrderRecordsDetailResponse - 13, // 89: bundle.Bundle.UpdateFinancialConfirmationStatus:output_type -> bundle.CommonResponse - 13, // 90: bundle.Bundle.CreateOrderAddRecord:output_type -> bundle.CommonResponse - 12, // 91: bundle.Bundle.PackagePriceAndTime:output_type -> bundle.PackagePriceAndTimeResponse - 9, // 92: bundle.Bundle.OrderRecordsListV2:output_type -> bundle.OrderRecordsResponseV2 - 5, // 93: bundle.Bundle.OrderListByOrderNo:output_type -> bundle.OrderInfoByOrderNoResp - 79, // 94: bundle.Bundle.OnlyAddValueListByOrderNo:output_type -> bundle.OnlyAddValueListByOrderNoResp - 36, // 95: bundle.Bundle.CreateValueAddBundle:output_type -> bundle.CreateValueAddBundleResponse - 38, // 96: bundle.Bundle.ValueAddBundleList:output_type -> bundle.ValueAddBundleListResponse - 40, // 97: bundle.Bundle.ValueAddBundleDetail:output_type -> bundle.ValueAddBundleDetailResponse - 16, // 98: bundle.Bundle.SaveValueAddService:output_type -> bundle.SaveResponse - 46, // 99: bundle.Bundle.ValueAddServiceList:output_type -> bundle.ValueAddServiceListResponse - 48, // 100: bundle.Bundle.ValueAddServiceDetail:output_type -> bundle.ValueAddServiceDetailResponse - 43, // 101: bundle.Bundle.ValueAddServiceLangByUuidAndLanguage:output_type -> bundle.ValueAddServiceLang - 50, // 102: bundle.Bundle.CalculatePrice:output_type -> bundle.CalculatePriceResponse - 52, // 103: bundle.Bundle.BatchGetValueAddServiceLang:output_type -> bundle.BatchGetValueAddServiceLangResponse - 13, // 104: bundle.Bundle.DeleteValueAddService:output_type -> bundle.CommonResponse - 54, // 105: bundle.Bundle.BundleExtend:output_type -> bundle.BundleExtendResponse - 56, // 106: bundle.Bundle.BundleExtendRecordsList:output_type -> bundle.BundleExtendRecordsListResponse - 61, // 107: bundle.Bundle.GetBundleBalanceList:output_type -> bundle.GetBundleBalanceListResp - 77, // 108: bundle.Bundle.GetBundleBalanceByUserId:output_type -> bundle.GetBundleBalanceByUserIdResp - 63, // 109: bundle.Bundle.CreateBundleBalance:output_type -> bundle.CreateBundleBalanceResp - 65, // 110: bundle.Bundle.AddBundleBalance:output_type -> bundle.AddBundleBalanceResp - 67, // 111: bundle.Bundle.GetUsedRecordList:output_type -> bundle.GetUsedRecordListResp - 71, // 112: bundle.Bundle.GetImageWorkDetail:output_type -> bundle.GetImageWorkDetailResp - 72, // 113: bundle.Bundle.GetVedioWorkDetail:output_type -> bundle.GetVedioeWorkDetailResp - 75, // 114: bundle.Bundle.ToBeComfirmedWorks:output_type -> bundle.ToBeComfirmedWorksResp - 83, // 115: bundle.Bundle.ConfirmWork:output_type -> bundle.ConfirmWorkResp - 2, // 116: bundle.Bundle.GetReconciliationList:output_type -> bundle.GetReconciliationListResp - 13, // 117: bundle.Bundle.CreateReconciliation:output_type -> bundle.CommonResponse - 13, // 118: bundle.Bundle.UpdateReconciliation:output_type -> bundle.CommonResponse - 13, // 119: bundle.Bundle.UpdateReconciliationStatusBySerialNumber:output_type -> bundle.CommonResponse - 73, // [73:120] is the sub-list for method output_type - 26, // [26:73] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name + 86, // 26: bundle.UnfinishedInfos.unfinishedInfos:type_name -> bundle.UnfinishedInfo + 14, // 27: bundle.Bundle.CreateBundle:input_type -> bundle.BundleProfile + 14, // 28: bundle.Bundle.UpdateBundle:input_type -> bundle.BundleProfile + 18, // 29: bundle.Bundle.DeleteBundle:input_type -> bundle.DelBundleRequest + 22, // 30: bundle.Bundle.HandShelf:input_type -> bundle.HandShelfRequest + 14, // 31: bundle.Bundle.SaveBundle:input_type -> bundle.BundleProfile + 19, // 32: bundle.Bundle.BundleListV2:input_type -> bundle.BundleListRequest + 21, // 33: bundle.Bundle.BundleDetailV2:input_type -> bundle.BundleDetailRequest + 19, // 34: bundle.Bundle.BundleListH5V2:input_type -> bundle.BundleListRequest + 21, // 35: bundle.Bundle.BundleLangDetailV2:input_type -> bundle.BundleDetailRequest + 19, // 36: bundle.Bundle.BundleList:input_type -> bundle.BundleListRequest + 21, // 37: bundle.Bundle.BundleDetail:input_type -> bundle.BundleDetailRequest + 6, // 38: bundle.Bundle.CreateOrderRecord:input_type -> bundle.OrderCreateRecord + 25, // 39: bundle.Bundle.UpdateOrderRecord:input_type -> bundle.OrderRecord + 25, // 40: bundle.Bundle.UpdateOrderRecordByOrderNo:input_type -> bundle.OrderRecord + 30, // 41: bundle.Bundle.OrderRecordsList:input_type -> bundle.OrderRecordsRequest + 32, // 42: bundle.Bundle.OrderRecordsDetail:input_type -> bundle.OrderRecordsDetailRequest + 41, // 43: bundle.Bundle.UpdateFinancialConfirmationStatus:input_type -> bundle.FinancialConfirmationRequest + 27, // 44: bundle.Bundle.CreateOrderAddRecord:input_type -> bundle.OrderAddRecord + 25, // 45: bundle.Bundle.PackagePriceAndTime:input_type -> bundle.OrderRecord + 8, // 46: bundle.Bundle.OrderRecordsListV2:input_type -> bundle.OrderRecordsRequestV2 + 4, // 47: bundle.Bundle.OrderListByOrderNo:input_type -> bundle.OrderInfoByOrderNoRequest + 78, // 48: bundle.Bundle.OnlyAddValueListByOrderNo:input_type -> bundle.OnlyAddValueListByOrderNoRequest + 35, // 49: bundle.Bundle.CreateValueAddBundle:input_type -> bundle.CreateValueAddBundleRequest + 37, // 50: bundle.Bundle.ValueAddBundleList:input_type -> bundle.ValueAddBundleListRequest + 39, // 51: bundle.Bundle.ValueAddBundleDetail:input_type -> bundle.ValueAddBundleDetailRequest + 43, // 52: bundle.Bundle.SaveValueAddService:input_type -> bundle.ValueAddServiceLang + 45, // 53: bundle.Bundle.ValueAddServiceList:input_type -> bundle.ValueAddServiceListRequest + 47, // 54: bundle.Bundle.ValueAddServiceDetail:input_type -> bundle.ValueAddServiceDetailRequest + 47, // 55: bundle.Bundle.ValueAddServiceLangByUuidAndLanguage:input_type -> bundle.ValueAddServiceDetailRequest + 49, // 56: bundle.Bundle.CalculatePrice:input_type -> bundle.CalculatePriceRequest + 51, // 57: bundle.Bundle.BatchGetValueAddServiceLang:input_type -> bundle.BatchGetValueAddServiceLangRequest + 0, // 58: bundle.Bundle.DeleteValueAddService:input_type -> bundle.DeleteValueAddServiceRequest + 53, // 59: bundle.Bundle.BundleExtend:input_type -> bundle.BundleExtendRequest + 55, // 60: bundle.Bundle.BundleExtendRecordsList:input_type -> bundle.BundleExtendRecordsListRequest + 58, // 61: bundle.Bundle.GetBundleBalanceList:input_type -> bundle.GetBundleBalanceListReq + 76, // 62: bundle.Bundle.GetBundleBalanceByUserId:input_type -> bundle.GetBundleBalanceByUserIdReq + 62, // 63: bundle.Bundle.CreateBundleBalance:input_type -> bundle.CreateBundleBalanceReq + 64, // 64: bundle.Bundle.AddBundleBalance:input_type -> bundle.AddBundleBalanceReq + 66, // 65: bundle.Bundle.GetUsedRecordList:input_type -> bundle.GetUsedRecordListReq + 69, // 66: bundle.Bundle.GetImageWorkDetail:input_type -> bundle.GetImageWorkDetailReq + 70, // 67: bundle.Bundle.GetVedioWorkDetail:input_type -> bundle.GetVedioWorkDetailReq + 73, // 68: bundle.Bundle.ToBeComfirmedWorks:input_type -> bundle.ToBeComfirmedWorksReq + 82, // 69: bundle.Bundle.ConfirmWork:input_type -> bundle.ConfirmWorkReq + 1, // 70: bundle.Bundle.GetReconciliationList:input_type -> bundle.GetReconciliationListReq + 3, // 71: bundle.Bundle.CreateReconciliation:input_type -> bundle.ReconciliationInfo + 3, // 72: bundle.Bundle.UpdateReconciliation:input_type -> bundle.ReconciliationInfo + 81, // 73: bundle.Bundle.UpdateReconciliationStatusBySerialNumber:input_type -> bundle.UpdateStatusAndPayTimeBySerialNumber + 84, // 74: bundle.Bundle.ListUnfinishedInfos:input_type -> bundle.AutoCreateUserAndOrderRequest + 87, // 75: bundle.Bundle.SoftDeleteUnfinishedInfo:input_type -> bundle.SoftDeleteUnfinishedInfoRequest + 13, // 76: bundle.Bundle.CreateBundle:output_type -> bundle.CommonResponse + 13, // 77: bundle.Bundle.UpdateBundle:output_type -> bundle.CommonResponse + 13, // 78: bundle.Bundle.DeleteBundle:output_type -> bundle.CommonResponse + 13, // 79: bundle.Bundle.HandShelf:output_type -> bundle.CommonResponse + 16, // 80: bundle.Bundle.SaveBundle:output_type -> bundle.SaveResponse + 20, // 81: bundle.Bundle.BundleListV2:output_type -> bundle.BundleListResponse + 24, // 82: bundle.Bundle.BundleDetailV2:output_type -> bundle.BundleDetailResponseV2 + 20, // 83: bundle.Bundle.BundleListH5V2:output_type -> bundle.BundleListResponse + 15, // 84: bundle.Bundle.BundleLangDetailV2:output_type -> bundle.BundleProfileLang + 20, // 85: bundle.Bundle.BundleList:output_type -> bundle.BundleListResponse + 23, // 86: bundle.Bundle.BundleDetail:output_type -> bundle.BundleDetailResponse + 13, // 87: bundle.Bundle.CreateOrderRecord:output_type -> bundle.CommonResponse + 13, // 88: bundle.Bundle.UpdateOrderRecord:output_type -> bundle.CommonResponse + 13, // 89: bundle.Bundle.UpdateOrderRecordByOrderNo:output_type -> bundle.CommonResponse + 31, // 90: bundle.Bundle.OrderRecordsList:output_type -> bundle.OrderRecordsResponse + 33, // 91: bundle.Bundle.OrderRecordsDetail:output_type -> bundle.OrderRecordsDetailResponse + 13, // 92: bundle.Bundle.UpdateFinancialConfirmationStatus:output_type -> bundle.CommonResponse + 13, // 93: bundle.Bundle.CreateOrderAddRecord:output_type -> bundle.CommonResponse + 12, // 94: bundle.Bundle.PackagePriceAndTime:output_type -> bundle.PackagePriceAndTimeResponse + 9, // 95: bundle.Bundle.OrderRecordsListV2:output_type -> bundle.OrderRecordsResponseV2 + 5, // 96: bundle.Bundle.OrderListByOrderNo:output_type -> bundle.OrderInfoByOrderNoResp + 79, // 97: bundle.Bundle.OnlyAddValueListByOrderNo:output_type -> bundle.OnlyAddValueListByOrderNoResp + 36, // 98: bundle.Bundle.CreateValueAddBundle:output_type -> bundle.CreateValueAddBundleResponse + 38, // 99: bundle.Bundle.ValueAddBundleList:output_type -> bundle.ValueAddBundleListResponse + 40, // 100: bundle.Bundle.ValueAddBundleDetail:output_type -> bundle.ValueAddBundleDetailResponse + 16, // 101: bundle.Bundle.SaveValueAddService:output_type -> bundle.SaveResponse + 46, // 102: bundle.Bundle.ValueAddServiceList:output_type -> bundle.ValueAddServiceListResponse + 48, // 103: bundle.Bundle.ValueAddServiceDetail:output_type -> bundle.ValueAddServiceDetailResponse + 43, // 104: bundle.Bundle.ValueAddServiceLangByUuidAndLanguage:output_type -> bundle.ValueAddServiceLang + 50, // 105: bundle.Bundle.CalculatePrice:output_type -> bundle.CalculatePriceResponse + 52, // 106: bundle.Bundle.BatchGetValueAddServiceLang:output_type -> bundle.BatchGetValueAddServiceLangResponse + 13, // 107: bundle.Bundle.DeleteValueAddService:output_type -> bundle.CommonResponse + 54, // 108: bundle.Bundle.BundleExtend:output_type -> bundle.BundleExtendResponse + 56, // 109: bundle.Bundle.BundleExtendRecordsList:output_type -> bundle.BundleExtendRecordsListResponse + 61, // 110: bundle.Bundle.GetBundleBalanceList:output_type -> bundle.GetBundleBalanceListResp + 77, // 111: bundle.Bundle.GetBundleBalanceByUserId:output_type -> bundle.GetBundleBalanceByUserIdResp + 63, // 112: bundle.Bundle.CreateBundleBalance:output_type -> bundle.CreateBundleBalanceResp + 65, // 113: bundle.Bundle.AddBundleBalance:output_type -> bundle.AddBundleBalanceResp + 67, // 114: bundle.Bundle.GetUsedRecordList:output_type -> bundle.GetUsedRecordListResp + 71, // 115: bundle.Bundle.GetImageWorkDetail:output_type -> bundle.GetImageWorkDetailResp + 72, // 116: bundle.Bundle.GetVedioWorkDetail:output_type -> bundle.GetVedioeWorkDetailResp + 75, // 117: bundle.Bundle.ToBeComfirmedWorks:output_type -> bundle.ToBeComfirmedWorksResp + 83, // 118: bundle.Bundle.ConfirmWork:output_type -> bundle.ConfirmWorkResp + 2, // 119: bundle.Bundle.GetReconciliationList:output_type -> bundle.GetReconciliationListResp + 13, // 120: bundle.Bundle.CreateReconciliation:output_type -> bundle.CommonResponse + 13, // 121: bundle.Bundle.UpdateReconciliation:output_type -> bundle.CommonResponse + 13, // 122: bundle.Bundle.UpdateReconciliationStatusBySerialNumber:output_type -> bundle.CommonResponse + 85, // 123: bundle.Bundle.ListUnfinishedInfos:output_type -> bundle.UnfinishedInfos + 13, // 124: bundle.Bundle.SoftDeleteUnfinishedInfo:output_type -> bundle.CommonResponse + 76, // [76:125] is the sub-list for method output_type + 27, // [27:76] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_pb_bundle_proto_init() } @@ -10201,6 +10630,54 @@ func file_pb_bundle_proto_init() { return nil } } + file_pb_bundle_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AutoCreateUserAndOrderRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfinishedInfos); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfinishedInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pb_bundle_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SoftDeleteUnfinishedInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -10208,7 +10685,7 @@ func file_pb_bundle_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pb_bundle_proto_rawDesc, NumEnums: 0, - NumMessages: 84, + NumMessages: 88, NumExtensions: 0, NumServices: 1, }, diff --git a/api/bundle/bundle.validator.pb.go b/api/bundle/bundle.validator.pb.go index a98aba0..3a0dec6 100644 --- a/api/bundle/bundle.validator.pb.go +++ b/api/bundle/bundle.validator.pb.go @@ -5,11 +5,11 @@ package bundle import ( fmt "fmt" - math "math" proto "github.com/golang/protobuf/proto" - _ "google.golang.org/protobuf/types/descriptorpb" _ "github.com/mwitkow/go-proto-validators" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" + _ "google.golang.org/protobuf/types/descriptorpb" + math "math" ) // Reference imports to suppress errors if they are not otherwise used. @@ -447,3 +447,22 @@ func (this *ConfirmWorkReq) Validate() error { func (this *ConfirmWorkResp) Validate() error { return nil } +func (this *AutoCreateUserAndOrderRequest) Validate() error { + return nil +} +func (this *UnfinishedInfos) Validate() error { + for _, item := range this.UnfinishedInfos { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("UnfinishedInfos", err) + } + } + } + return nil +} +func (this *UnfinishedInfo) Validate() error { + return nil +} +func (this *SoftDeleteUnfinishedInfoRequest) Validate() error { + return nil +} diff --git a/api/bundle/bundle_triple.pb.go b/api/bundle/bundle_triple.pb.go index fc057a5..8098424 100644 --- a/api/bundle/bundle_triple.pb.go +++ b/api/bundle/bundle_triple.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-triple. DO NOT EDIT. // versions: // - protoc-gen-go-triple v1.0.8 -// - protoc v4.24.0--rc1 +// - protoc v5.26.1 // source: pb/bundle.proto package bundle @@ -50,11 +50,11 @@ type BundleClient interface { OrderRecordsListV2(ctx context.Context, in *OrderRecordsRequestV2, opts ...grpc_go.CallOption) (*OrderRecordsResponseV2, common.ErrorWithAttachment) OrderListByOrderNo(ctx context.Context, in *OrderInfoByOrderNoRequest, opts ...grpc_go.CallOption) (*OrderInfoByOrderNoResp, common.ErrorWithAttachment) OnlyAddValueListByOrderNo(ctx context.Context, in *OnlyAddValueListByOrderNoRequest, opts ...grpc_go.CallOption) (*OnlyAddValueListByOrderNoResp, common.ErrorWithAttachment) - //增值套餐 + // 增值套餐 CreateValueAddBundle(ctx context.Context, in *CreateValueAddBundleRequest, opts ...grpc_go.CallOption) (*CreateValueAddBundleResponse, common.ErrorWithAttachment) ValueAddBundleList(ctx context.Context, in *ValueAddBundleListRequest, opts ...grpc_go.CallOption) (*ValueAddBundleListResponse, common.ErrorWithAttachment) ValueAddBundleDetail(ctx context.Context, in *ValueAddBundleDetailRequest, opts ...grpc_go.CallOption) (*ValueAddBundleDetailResponse, common.ErrorWithAttachment) - //新增值服务 + // 新增值服务 SaveValueAddService(ctx context.Context, in *ValueAddServiceLang, opts ...grpc_go.CallOption) (*SaveResponse, common.ErrorWithAttachment) ValueAddServiceList(ctx context.Context, in *ValueAddServiceListRequest, opts ...grpc_go.CallOption) (*ValueAddServiceListResponse, common.ErrorWithAttachment) ValueAddServiceDetail(ctx context.Context, in *ValueAddServiceDetailRequest, opts ...grpc_go.CallOption) (*ValueAddServiceDetailResponse, common.ErrorWithAttachment) @@ -75,11 +75,14 @@ type BundleClient interface { GetVedioWorkDetail(ctx context.Context, in *GetVedioWorkDetailReq, opts ...grpc_go.CallOption) (*GetVedioeWorkDetailResp, common.ErrorWithAttachment) ToBeComfirmedWorks(ctx context.Context, in *ToBeComfirmedWorksReq, opts ...grpc_go.CallOption) (*ToBeComfirmedWorksResp, common.ErrorWithAttachment) ConfirmWork(ctx context.Context, in *ConfirmWorkReq, opts ...grpc_go.CallOption) (*ConfirmWorkResp, common.ErrorWithAttachment) - //对账单 + // 对账单 GetReconciliationList(ctx context.Context, in *GetReconciliationListReq, opts ...grpc_go.CallOption) (*GetReconciliationListResp, common.ErrorWithAttachment) CreateReconciliation(ctx context.Context, in *ReconciliationInfo, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) UpdateReconciliation(ctx context.Context, in *ReconciliationInfo, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) UpdateReconciliationStatusBySerialNumber(ctx context.Context, in *UpdateStatusAndPayTimeBySerialNumber, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) + // 查出没处理的数据 + ListUnfinishedInfos(ctx context.Context, in *AutoCreateUserAndOrderRequest, opts ...grpc_go.CallOption) (*UnfinishedInfos, common.ErrorWithAttachment) + SoftDeleteUnfinishedInfo(ctx context.Context, in *SoftDeleteUnfinishedInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) } type bundleClient struct { @@ -134,6 +137,8 @@ type BundleClientImpl struct { CreateReconciliation func(ctx context.Context, in *ReconciliationInfo) (*CommonResponse, error) UpdateReconciliation func(ctx context.Context, in *ReconciliationInfo) (*CommonResponse, error) UpdateReconciliationStatusBySerialNumber func(ctx context.Context, in *UpdateStatusAndPayTimeBySerialNumber) (*CommonResponse, error) + ListUnfinishedInfos func(ctx context.Context, in *AutoCreateUserAndOrderRequest) (*UnfinishedInfos, error) + SoftDeleteUnfinishedInfo func(ctx context.Context, in *SoftDeleteUnfinishedInfoRequest) (*CommonResponse, error) } func (c *BundleClientImpl) GetDubboStub(cc *triple.TripleConn) BundleClient { @@ -430,6 +435,18 @@ func (c *bundleClient) UpdateReconciliationStatusBySerialNumber(ctx context.Cont return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateReconciliationStatusBySerialNumber", in, out) } +func (c *bundleClient) ListUnfinishedInfos(ctx context.Context, in *AutoCreateUserAndOrderRequest, opts ...grpc_go.CallOption) (*UnfinishedInfos, common.ErrorWithAttachment) { + out := new(UnfinishedInfos) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ListUnfinishedInfos", in, out) +} + +func (c *bundleClient) SoftDeleteUnfinishedInfo(ctx context.Context, in *SoftDeleteUnfinishedInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) { + out := new(CommonResponse) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SoftDeleteUnfinishedInfo", in, out) +} + // BundleServer is the server API for Bundle service. // All implementations must embed UnimplementedBundleServer // for forward compatibility @@ -456,11 +473,11 @@ type BundleServer interface { OrderRecordsListV2(context.Context, *OrderRecordsRequestV2) (*OrderRecordsResponseV2, error) OrderListByOrderNo(context.Context, *OrderInfoByOrderNoRequest) (*OrderInfoByOrderNoResp, error) OnlyAddValueListByOrderNo(context.Context, *OnlyAddValueListByOrderNoRequest) (*OnlyAddValueListByOrderNoResp, error) - //增值套餐 + // 增值套餐 CreateValueAddBundle(context.Context, *CreateValueAddBundleRequest) (*CreateValueAddBundleResponse, error) ValueAddBundleList(context.Context, *ValueAddBundleListRequest) (*ValueAddBundleListResponse, error) ValueAddBundleDetail(context.Context, *ValueAddBundleDetailRequest) (*ValueAddBundleDetailResponse, error) - //新增值服务 + // 新增值服务 SaveValueAddService(context.Context, *ValueAddServiceLang) (*SaveResponse, error) ValueAddServiceList(context.Context, *ValueAddServiceListRequest) (*ValueAddServiceListResponse, error) ValueAddServiceDetail(context.Context, *ValueAddServiceDetailRequest) (*ValueAddServiceDetailResponse, error) @@ -481,11 +498,14 @@ type BundleServer interface { GetVedioWorkDetail(context.Context, *GetVedioWorkDetailReq) (*GetVedioeWorkDetailResp, error) ToBeComfirmedWorks(context.Context, *ToBeComfirmedWorksReq) (*ToBeComfirmedWorksResp, error) ConfirmWork(context.Context, *ConfirmWorkReq) (*ConfirmWorkResp, error) - //对账单 + // 对账单 GetReconciliationList(context.Context, *GetReconciliationListReq) (*GetReconciliationListResp, error) CreateReconciliation(context.Context, *ReconciliationInfo) (*CommonResponse, error) UpdateReconciliation(context.Context, *ReconciliationInfo) (*CommonResponse, error) UpdateReconciliationStatusBySerialNumber(context.Context, *UpdateStatusAndPayTimeBySerialNumber) (*CommonResponse, error) + // 查出没处理的数据 + ListUnfinishedInfos(context.Context, *AutoCreateUserAndOrderRequest) (*UnfinishedInfos, error) + SoftDeleteUnfinishedInfo(context.Context, *SoftDeleteUnfinishedInfoRequest) (*CommonResponse, error) mustEmbedUnimplementedBundleServer() } @@ -635,6 +655,12 @@ func (UnimplementedBundleServer) UpdateReconciliation(context.Context, *Reconcil func (UnimplementedBundleServer) UpdateReconciliationStatusBySerialNumber(context.Context, *UpdateStatusAndPayTimeBySerialNumber) (*CommonResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateReconciliationStatusBySerialNumber not implemented") } +func (UnimplementedBundleServer) ListUnfinishedInfos(context.Context, *AutoCreateUserAndOrderRequest) (*UnfinishedInfos, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListUnfinishedInfos not implemented") +} +func (UnimplementedBundleServer) SoftDeleteUnfinishedInfo(context.Context, *SoftDeleteUnfinishedInfoRequest) (*CommonResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SoftDeleteUnfinishedInfo not implemented") +} func (s *UnimplementedBundleServer) XXX_SetProxyImpl(impl protocol.Invoker) { s.proxyImpl = impl } @@ -2026,6 +2052,64 @@ func _Bundle_UpdateReconciliationStatusBySerialNumber_Handler(srv interface{}, c return interceptor(ctx, in, info, handler) } +func _Bundle_ListUnfinishedInfos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(AutoCreateUserAndOrderRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("ListUnfinishedInfos", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Bundle_SoftDeleteUnfinishedInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(SoftDeleteUnfinishedInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("SoftDeleteUnfinishedInfo", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + // Bundle_ServiceDesc is the grpc_go.ServiceDesc for Bundle service. // It's only intended for direct use with grpc_go.RegisterService, // and not to be introspected or modified (even as a copy) @@ -2221,6 +2305,14 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "UpdateReconciliationStatusBySerialNumber", Handler: _Bundle_UpdateReconciliationStatusBySerialNumber_Handler, }, + { + MethodName: "ListUnfinishedInfos", + Handler: _Bundle_ListUnfinishedInfos_Handler, + }, + { + MethodName: "SoftDeleteUnfinishedInfo", + Handler: _Bundle_SoftDeleteUnfinishedInfo_Handler, + }, }, Streams: []grpc_go.StreamDesc{}, Metadata: "pb/bundle.proto", diff --git a/api/cast/cast.pb.go b/api/cast/cast.pb.go new file mode 100644 index 0000000..1e99b80 --- /dev/null +++ b/api/cast/cast.pb.go @@ -0,0 +1,3525 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v3.21.1 +// source: pb/fiee/cast.proto + +package cast + +import ( + _ "github.com/envoyproxy/protoc-gen-validate/validate" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + emptypb "google.golang.org/protobuf/types/known/emptypb" + _ "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type PlatformIDENUM int32 + +const ( + PlatformIDENUM_UNKNOWN PlatformIDENUM = 0 + PlatformIDENUM_TIKTOK PlatformIDENUM = 1 + PlatformIDENUM_YOUTUBE PlatformIDENUM = 2 + PlatformIDENUM_INS PlatformIDENUM = 3 +) + +// Enum value maps for PlatformIDENUM. +var ( + PlatformIDENUM_name = map[int32]string{ + 0: "UNKNOWN", + 1: "TIKTOK", + 2: "YOUTUBE", + 3: "INS", + } + PlatformIDENUM_value = map[string]int32{ + "UNKNOWN": 0, + "TIKTOK": 1, + "YOUTUBE": 2, + "INS": 3, + } +) + +func (x PlatformIDENUM) Enum() *PlatformIDENUM { + p := new(PlatformIDENUM) + *p = x + return p +} + +func (x PlatformIDENUM) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PlatformIDENUM) Descriptor() protoreflect.EnumDescriptor { + return file_pb_fiee_cast_proto_enumTypes[0].Descriptor() +} + +func (PlatformIDENUM) Type() protoreflect.EnumType { + return &file_pb_fiee_cast_proto_enumTypes[0] +} + +func (x PlatformIDENUM) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PlatformIDENUM.Descriptor instead. +func (PlatformIDENUM) EnumDescriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{0} +} + +type WorkActionENUM int32 + +const ( + WorkActionENUM_NO_ACTION WorkActionENUM = 0 + WorkActionENUM_CONFIRM WorkActionENUM = 1 // 确认 + WorkActionENUM_APPROVAL WorkActionENUM = 2 // 审批 + WorkActionENUM_APPROVAL_PASS WorkActionENUM = 3 // 审批通过 + WorkActionENUM_APPROVAL_REJECT WorkActionENUM = 4 // 审批驳回 + WorkActionENUM_APPROVAL_DELETE WorkActionENUM = 5 // 审批删除 +) + +// Enum value maps for WorkActionENUM. +var ( + WorkActionENUM_name = map[int32]string{ + 0: "NO_ACTION", + 1: "CONFIRM", + 2: "APPROVAL", + 3: "APPROVAL_PASS", + 4: "APPROVAL_REJECT", + 5: "APPROVAL_DELETE", + } + WorkActionENUM_value = map[string]int32{ + "NO_ACTION": 0, + "CONFIRM": 1, + "APPROVAL": 2, + "APPROVAL_PASS": 3, + "APPROVAL_REJECT": 4, + "APPROVAL_DELETE": 5, + } +) + +func (x WorkActionENUM) Enum() *WorkActionENUM { + p := new(WorkActionENUM) + *p = x + return p +} + +func (x WorkActionENUM) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WorkActionENUM) Descriptor() protoreflect.EnumDescriptor { + return file_pb_fiee_cast_proto_enumTypes[1].Descriptor() +} + +func (WorkActionENUM) Type() protoreflect.EnumType { + return &file_pb_fiee_cast_proto_enumTypes[1] +} + +func (x WorkActionENUM) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WorkActionENUM.Descriptor instead. +func (WorkActionENUM) EnumDescriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{1} +} + +type MediaUserListReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistVal string `protobuf:"bytes,1,opt,name=artistVal,proto3" json:"artistVal"` + ManagerVal string `protobuf:"bytes,2,opt,name=managerVal,proto3" json:"managerVal"` + PlatformUserName string `protobuf:"bytes,3,opt,name=platformUserName,proto3" json:"platformUserName"` + PlatformID PlatformIDENUM `protobuf:"varint,4,opt,name=platformID,proto3,enum=Cast.PlatformIDENUM" json:"platformID"` + Page int32 `protobuf:"varint,5,opt,name=page,proto3" json:"page"` + PageSize int32 `protobuf:"varint,6,opt,name=pageSize,proto3" json:"pageSize"` + ArtistUuid string `protobuf:"bytes,7,opt,name=artistUuid,proto3" json:"artistUuid"` +} + +func (x *MediaUserListReq) Reset() { + *x = MediaUserListReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaUserListReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaUserListReq) ProtoMessage() {} + +func (x *MediaUserListReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaUserListReq.ProtoReflect.Descriptor instead. +func (*MediaUserListReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{0} +} + +func (x *MediaUserListReq) GetArtistVal() string { + if x != nil { + return x.ArtistVal + } + return "" +} + +func (x *MediaUserListReq) GetManagerVal() string { + if x != nil { + return x.ManagerVal + } + return "" +} + +func (x *MediaUserListReq) GetPlatformUserName() string { + if x != nil { + return x.PlatformUserName + } + return "" +} + +func (x *MediaUserListReq) GetPlatformID() PlatformIDENUM { + if x != nil { + return x.PlatformID + } + return PlatformIDENUM_UNKNOWN +} + +func (x *MediaUserListReq) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *MediaUserListReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *MediaUserListReq) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +type MediaUserInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PlatformUserName string `protobuf:"bytes,1,opt,name=platformUserName,proto3" json:"platformUserName"` + PlatformID uint32 `protobuf:"varint,2,opt,name=platformID,proto3" json:"platformID"` + ArtistName string `protobuf:"bytes,3,opt,name=artistName,proto3" json:"artistName"` + ArtistPhone string `protobuf:"bytes,4,opt,name=artistPhone,proto3" json:"artistPhone"` + ArtistUuid string `protobuf:"bytes,5,opt,name=artistUuid,proto3" json:"artistUuid"` + ManagerUserName string `protobuf:"bytes,6,opt,name=managerUserName,proto3" json:"managerUserName"` + ManagerUuid string `protobuf:"bytes,7,opt,name=managerUuid,proto3" json:"managerUuid"` + MediaAccountUuid string `protobuf:"bytes,8,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` +} + +func (x *MediaUserInfo) Reset() { + *x = MediaUserInfo{} + mi := &file_pb_fiee_cast_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaUserInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaUserInfo) ProtoMessage() {} + +func (x *MediaUserInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaUserInfo.ProtoReflect.Descriptor instead. +func (*MediaUserInfo) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{1} +} + +func (x *MediaUserInfo) GetPlatformUserName() string { + if x != nil { + return x.PlatformUserName + } + return "" +} + +func (x *MediaUserInfo) GetPlatformID() uint32 { + if x != nil { + return x.PlatformID + } + return 0 +} + +func (x *MediaUserInfo) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *MediaUserInfo) GetArtistPhone() string { + if x != nil { + return x.ArtistPhone + } + return "" +} + +func (x *MediaUserInfo) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +func (x *MediaUserInfo) GetManagerUserName() string { + if x != nil { + return x.ManagerUserName + } + return "" +} + +func (x *MediaUserInfo) GetManagerUuid() string { + if x != nil { + return x.ManagerUuid + } + return "" +} + +func (x *MediaUserInfo) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +type MediaUserListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*MediaUserInfo `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count"` +} + +func (x *MediaUserListResp) Reset() { + *x = MediaUserListResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaUserListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaUserListResp) ProtoMessage() {} + +func (x *MediaUserListResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaUserListResp.ProtoReflect.Descriptor instead. +func (*MediaUserListResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{2} +} + +func (x *MediaUserListResp) GetData() []*MediaUserInfo { + if x != nil { + return x.Data + } + return nil +} + +func (x *MediaUserListResp) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +type UpdateMediaAccountReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PlatformID PlatformIDENUM `protobuf:"varint,1,opt,name=platformID,proto3,enum=Cast.PlatformIDENUM" json:"platformID"` + PlatformUserName string `protobuf:"bytes,2,opt,name=platformUserName,proto3" json:"platformUserName"` + PlatformUserID string `protobuf:"bytes,3,opt,name=platformUserID,proto3" json:"platformUserID"` + ArtistUuid string `protobuf:"bytes,4,opt,name=artistUuid,proto3" json:"artistUuid"` + ArtistName string `protobuf:"bytes,5,opt,name=artistName,proto3" json:"artistName"` + ArtistPhone string `protobuf:"bytes,6,opt,name=artistPhone,proto3" json:"artistPhone"` + MediaAccountUuid string `protobuf:"bytes,7,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` + ManagerUuid string `protobuf:"bytes,8,opt,name=managerUuid,proto3" json:"managerUuid"` + ManagerUserName string `protobuf:"bytes,9,opt,name=managerUserName,proto3" json:"managerUserName"` + ArtistPhoneAreaCode string `protobuf:"bytes,10,opt,name=artistPhoneAreaCode,proto3" json:"artistPhoneAreaCode"` +} + +func (x *UpdateMediaAccountReq) Reset() { + *x = UpdateMediaAccountReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateMediaAccountReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateMediaAccountReq) ProtoMessage() {} + +func (x *UpdateMediaAccountReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateMediaAccountReq.ProtoReflect.Descriptor instead. +func (*UpdateMediaAccountReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{3} +} + +func (x *UpdateMediaAccountReq) GetPlatformID() PlatformIDENUM { + if x != nil { + return x.PlatformID + } + return PlatformIDENUM_UNKNOWN +} + +func (x *UpdateMediaAccountReq) GetPlatformUserName() string { + if x != nil { + return x.PlatformUserName + } + return "" +} + +func (x *UpdateMediaAccountReq) GetPlatformUserID() string { + if x != nil { + return x.PlatformUserID + } + return "" +} + +func (x *UpdateMediaAccountReq) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +func (x *UpdateMediaAccountReq) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *UpdateMediaAccountReq) GetArtistPhone() string { + if x != nil { + return x.ArtistPhone + } + return "" +} + +func (x *UpdateMediaAccountReq) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +func (x *UpdateMediaAccountReq) GetManagerUuid() string { + if x != nil { + return x.ManagerUuid + } + return "" +} + +func (x *UpdateMediaAccountReq) GetManagerUserName() string { + if x != nil { + return x.ManagerUserName + } + return "" +} + +func (x *UpdateMediaAccountReq) GetArtistPhoneAreaCode() string { + if x != nil { + return x.ArtistPhoneAreaCode + } + return "" +} + +type UpdateMediaAccountResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MediaAccountUuid string `protobuf:"bytes,1,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` +} + +func (x *UpdateMediaAccountResp) Reset() { + *x = UpdateMediaAccountResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateMediaAccountResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateMediaAccountResp) ProtoMessage() {} + +func (x *UpdateMediaAccountResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateMediaAccountResp.ProtoReflect.Descriptor instead. +func (*UpdateMediaAccountResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{4} +} + +func (x *UpdateMediaAccountResp) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +// UnbindManager +type UnbindManagerReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MediaAccountUuid string `protobuf:"bytes,1,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` +} + +func (x *UnbindManagerReq) Reset() { + *x = UnbindManagerReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UnbindManagerReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnbindManagerReq) ProtoMessage() {} + +func (x *UnbindManagerReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnbindManagerReq.ProtoReflect.Descriptor instead. +func (*UnbindManagerReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{5} +} + +func (x *UnbindManagerReq) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +type UnbindManagerResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OldBindArtistUuid string `protobuf:"bytes,1,opt,name=oldBindArtistUuid,proto3" json:"oldBindArtistUuid"` +} + +func (x *UnbindManagerResp) Reset() { + *x = UnbindManagerResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UnbindManagerResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnbindManagerResp) ProtoMessage() {} + +func (x *UnbindManagerResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnbindManagerResp.ProtoReflect.Descriptor instead. +func (*UnbindManagerResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{6} +} + +func (x *UnbindManagerResp) GetOldBindArtistUuid() string { + if x != nil { + return x.OldBindArtistUuid + } + return "" +} + +type BindManagerReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MediaAccountUuid string `protobuf:"bytes,1,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` + ManagerUuid string `protobuf:"bytes,2,opt,name=managerUuid,proto3" json:"managerUuid"` + ManagerUserName string `protobuf:"bytes,3,opt,name=managerUserName,proto3" json:"managerUserName"` +} + +func (x *BindManagerReq) Reset() { + *x = BindManagerReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BindManagerReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BindManagerReq) ProtoMessage() {} + +func (x *BindManagerReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BindManagerReq.ProtoReflect.Descriptor instead. +func (*BindManagerReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{7} +} + +func (x *BindManagerReq) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +func (x *BindManagerReq) GetManagerUuid() string { + if x != nil { + return x.ManagerUuid + } + return "" +} + +func (x *BindManagerReq) GetManagerUserName() string { + if x != nil { + return x.ManagerUserName + } + return "" +} + +// UpdateWorkImage +type UpdateWorkImageReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title"` + Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content"` + Images []string `protobuf:"bytes,3,rep,name=images,proto3" json:"images"` + MediaAccountUuids []string `protobuf:"bytes,4,rep,name=mediaAccountUuids,proto3" json:"mediaAccountUuids"` + MediaAccountNames []string `protobuf:"bytes,5,rep,name=mediaAccountNames,proto3" json:"mediaAccountNames"` + PlatformIDs []PlatformIDENUM `protobuf:"varint,6,rep,packed,name=platformIDs,proto3,enum=Cast.PlatformIDENUM" json:"platformIDs"` + PublishConfig1 *PublishConfig `protobuf:"bytes,7,opt,name=publishConfig1,proto3" json:"publishConfig1"` + PublishConfig2 *PublishConfig `protobuf:"bytes,8,opt,name=publishConfig2,proto3" json:"publishConfig2"` + PublishConfig3 *PublishConfig `protobuf:"bytes,9,opt,name=publishConfig3,proto3" json:"publishConfig3"` + Action string `protobuf:"bytes,10,opt,name=action,proto3" json:"action"` + WorkUuid string `protobuf:"bytes,11,opt,name=workUuid,proto3" json:"workUuid"` + ArtistUuid string `protobuf:"bytes,12,opt,name=artistUuid,proto3" json:"artistUuid"` + ArtistPhone string `protobuf:"bytes,13,opt,name=artistPhone,proto3" json:"artistPhone"` + ArtistName string `protobuf:"bytes,14,opt,name=artistName,proto3" json:"artistName"` + ArtistPhoneAreaCode string `protobuf:"bytes,15,opt,name=artistPhoneAreaCode,proto3" json:"artistPhoneAreaCode"` +} + +func (x *UpdateWorkImageReq) Reset() { + *x = UpdateWorkImageReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateWorkImageReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateWorkImageReq) ProtoMessage() {} + +func (x *UpdateWorkImageReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateWorkImageReq.ProtoReflect.Descriptor instead. +func (*UpdateWorkImageReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{8} +} + +func (x *UpdateWorkImageReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *UpdateWorkImageReq) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *UpdateWorkImageReq) GetImages() []string { + if x != nil { + return x.Images + } + return nil +} + +func (x *UpdateWorkImageReq) GetMediaAccountUuids() []string { + if x != nil { + return x.MediaAccountUuids + } + return nil +} + +func (x *UpdateWorkImageReq) GetMediaAccountNames() []string { + if x != nil { + return x.MediaAccountNames + } + return nil +} + +func (x *UpdateWorkImageReq) GetPlatformIDs() []PlatformIDENUM { + if x != nil { + return x.PlatformIDs + } + return nil +} + +func (x *UpdateWorkImageReq) GetPublishConfig1() *PublishConfig { + if x != nil { + return x.PublishConfig1 + } + return nil +} + +func (x *UpdateWorkImageReq) GetPublishConfig2() *PublishConfig { + if x != nil { + return x.PublishConfig2 + } + return nil +} + +func (x *UpdateWorkImageReq) GetPublishConfig3() *PublishConfig { + if x != nil { + return x.PublishConfig3 + } + return nil +} + +func (x *UpdateWorkImageReq) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *UpdateWorkImageReq) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *UpdateWorkImageReq) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +func (x *UpdateWorkImageReq) GetArtistPhone() string { + if x != nil { + return x.ArtistPhone + } + return "" +} + +func (x *UpdateWorkImageReq) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *UpdateWorkImageReq) GetArtistPhoneAreaCode() string { + if x != nil { + return x.ArtistPhoneAreaCode + } + return "" +} + +type UpdateWorkImageResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` +} + +func (x *UpdateWorkImageResp) Reset() { + *x = UpdateWorkImageResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateWorkImageResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateWorkImageResp) ProtoMessage() {} + +func (x *UpdateWorkImageResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateWorkImageResp.ProtoReflect.Descriptor instead. +func (*UpdateWorkImageResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{9} +} + +func (x *UpdateWorkImageResp) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +type PublishConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ForbidComment uint32 `protobuf:"varint,1,opt,name=forbidComment,proto3" json:"forbidComment"` + PublicType uint32 `protobuf:"varint,2,opt,name=publicType,proto3" json:"publicType"` + CanJoin uint32 `protobuf:"varint,3,opt,name=canJoin,proto3" json:"canJoin"` + CanQuote uint32 `protobuf:"varint,4,opt,name=canQuote,proto3" json:"canQuote"` + CanComment uint32 `protobuf:"varint,5,opt,name=canComment,proto3" json:"canComment"` + IsAI uint32 `protobuf:"varint,6,opt,name=isAI,proto3" json:"isAI"` +} + +func (x *PublishConfig) Reset() { + *x = PublishConfig{} + mi := &file_pb_fiee_cast_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PublishConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublishConfig) ProtoMessage() {} + +func (x *PublishConfig) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PublishConfig.ProtoReflect.Descriptor instead. +func (*PublishConfig) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{10} +} + +func (x *PublishConfig) GetForbidComment() uint32 { + if x != nil { + return x.ForbidComment + } + return 0 +} + +func (x *PublishConfig) GetPublicType() uint32 { + if x != nil { + return x.PublicType + } + return 0 +} + +func (x *PublishConfig) GetCanJoin() uint32 { + if x != nil { + return x.CanJoin + } + return 0 +} + +func (x *PublishConfig) GetCanQuote() uint32 { + if x != nil { + return x.CanQuote + } + return 0 +} + +func (x *PublishConfig) GetCanComment() uint32 { + if x != nil { + return x.CanComment + } + return 0 +} + +func (x *PublishConfig) GetIsAI() uint32 { + if x != nil { + return x.IsAI + } + return 0 +} + +// UpdateWorkVideo +type UpdateWorkVideoReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title"` + Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content"` + VideoUrl string `protobuf:"bytes,3,opt,name=videoUrl,proto3" json:"videoUrl"` + CoverUrl string `protobuf:"bytes,4,opt,name=coverUrl,proto3" json:"coverUrl"` + MediaAccountUuids []string `protobuf:"bytes,5,rep,name=mediaAccountUuids,proto3" json:"mediaAccountUuids"` + MediaAccountNames []string `protobuf:"bytes,6,rep,name=mediaAccountNames,proto3" json:"mediaAccountNames"` + PlatformIDs []PlatformIDENUM `protobuf:"varint,7,rep,packed,name=platformIDs,proto3,enum=Cast.PlatformIDENUM" json:"platformIDs"` + PublishConfig1 *PublishConfig `protobuf:"bytes,8,opt,name=publishConfig1,proto3" json:"publishConfig1"` + PublishConfig2 *PublishConfig `protobuf:"bytes,9,opt,name=publishConfig2,proto3" json:"publishConfig2"` + PublishConfig3 *PublishConfig `protobuf:"bytes,10,opt,name=publishConfig3,proto3" json:"publishConfig3"` + Action string `protobuf:"bytes,11,opt,name=action,proto3" json:"action"` + WorkUuid string `protobuf:"bytes,12,opt,name=workUuid,proto3" json:"workUuid"` + ArtistUuid string `protobuf:"bytes,13,opt,name=artistUuid,proto3" json:"artistUuid"` + ArtistPhone string `protobuf:"bytes,14,opt,name=artistPhone,proto3" json:"artistPhone"` + ArtistName string `protobuf:"bytes,15,opt,name=artistName,proto3" json:"artistName"` + ArtistPhoneAreaCode string `protobuf:"bytes,16,opt,name=artistPhoneAreaCode,proto3" json:"artistPhoneAreaCode"` +} + +func (x *UpdateWorkVideoReq) Reset() { + *x = UpdateWorkVideoReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateWorkVideoReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateWorkVideoReq) ProtoMessage() {} + +func (x *UpdateWorkVideoReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateWorkVideoReq.ProtoReflect.Descriptor instead. +func (*UpdateWorkVideoReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{11} +} + +func (x *UpdateWorkVideoReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *UpdateWorkVideoReq) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *UpdateWorkVideoReq) GetVideoUrl() string { + if x != nil { + return x.VideoUrl + } + return "" +} + +func (x *UpdateWorkVideoReq) GetCoverUrl() string { + if x != nil { + return x.CoverUrl + } + return "" +} + +func (x *UpdateWorkVideoReq) GetMediaAccountUuids() []string { + if x != nil { + return x.MediaAccountUuids + } + return nil +} + +func (x *UpdateWorkVideoReq) GetMediaAccountNames() []string { + if x != nil { + return x.MediaAccountNames + } + return nil +} + +func (x *UpdateWorkVideoReq) GetPlatformIDs() []PlatformIDENUM { + if x != nil { + return x.PlatformIDs + } + return nil +} + +func (x *UpdateWorkVideoReq) GetPublishConfig1() *PublishConfig { + if x != nil { + return x.PublishConfig1 + } + return nil +} + +func (x *UpdateWorkVideoReq) GetPublishConfig2() *PublishConfig { + if x != nil { + return x.PublishConfig2 + } + return nil +} + +func (x *UpdateWorkVideoReq) GetPublishConfig3() *PublishConfig { + if x != nil { + return x.PublishConfig3 + } + return nil +} + +func (x *UpdateWorkVideoReq) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *UpdateWorkVideoReq) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *UpdateWorkVideoReq) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +func (x *UpdateWorkVideoReq) GetArtistPhone() string { + if x != nil { + return x.ArtistPhone + } + return "" +} + +func (x *UpdateWorkVideoReq) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *UpdateWorkVideoReq) GetArtistPhoneAreaCode() string { + if x != nil { + return x.ArtistPhoneAreaCode + } + return "" +} + +type UpdateWorkVideoResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` +} + +func (x *UpdateWorkVideoResp) Reset() { + *x = UpdateWorkVideoResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateWorkVideoResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateWorkVideoResp) ProtoMessage() {} + +func (x *UpdateWorkVideoResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateWorkVideoResp.ProtoReflect.Descriptor instead. +func (*UpdateWorkVideoResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{12} +} + +func (x *UpdateWorkVideoResp) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +type WorkListReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistVal string `protobuf:"bytes,1,opt,name=artistVal,proto3" json:"artistVal"` + PlatformID uint32 `protobuf:"varint,2,opt,name=platformID,proto3" json:"platformID"` + WorkCategory uint32 `protobuf:"varint,3,opt,name=workCategory,proto3" json:"workCategory"` + SubmitStartTime string `protobuf:"bytes,4,opt,name=submitStartTime,proto3" json:"submitStartTime"` + SubmitEndTime string `protobuf:"bytes,5,opt,name=submitEndTime,proto3" json:"submitEndTime"` + StatusUpdateTimeStart string `protobuf:"bytes,6,opt,name=statusUpdateTimeStart,proto3" json:"statusUpdateTimeStart"` + StatusUpdateTimeEnd string `protobuf:"bytes,7,opt,name=statusUpdateTimeEnd,proto3" json:"statusUpdateTimeEnd"` + Title string `protobuf:"bytes,8,opt,name=title,proto3" json:"title"` + WorkStatus uint32 `protobuf:"varint,9,opt,name=workStatus,proto3" json:"workStatus"` + MediaAccountUuid string `protobuf:"bytes,10,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` + ManagerUserVal string `protobuf:"bytes,11,opt,name=managerUserVal,proto3" json:"managerUserVal"` + Page int32 `protobuf:"varint,12,opt,name=page,proto3" json:"page"` + PageSize int32 `protobuf:"varint,13,opt,name=pageSize,proto3" json:"pageSize"` + MediaAccountUuids []string `protobuf:"bytes,14,rep,name=mediaAccountUuids,proto3" json:"mediaAccountUuids"` +} + +func (x *WorkListReq) Reset() { + *x = WorkListReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkListReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkListReq) ProtoMessage() {} + +func (x *WorkListReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkListReq.ProtoReflect.Descriptor instead. +func (*WorkListReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{13} +} + +func (x *WorkListReq) GetArtistVal() string { + if x != nil { + return x.ArtistVal + } + return "" +} + +func (x *WorkListReq) GetPlatformID() uint32 { + if x != nil { + return x.PlatformID + } + return 0 +} + +func (x *WorkListReq) GetWorkCategory() uint32 { + if x != nil { + return x.WorkCategory + } + return 0 +} + +func (x *WorkListReq) GetSubmitStartTime() string { + if x != nil { + return x.SubmitStartTime + } + return "" +} + +func (x *WorkListReq) GetSubmitEndTime() string { + if x != nil { + return x.SubmitEndTime + } + return "" +} + +func (x *WorkListReq) GetStatusUpdateTimeStart() string { + if x != nil { + return x.StatusUpdateTimeStart + } + return "" +} + +func (x *WorkListReq) GetStatusUpdateTimeEnd() string { + if x != nil { + return x.StatusUpdateTimeEnd + } + return "" +} + +func (x *WorkListReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *WorkListReq) GetWorkStatus() uint32 { + if x != nil { + return x.WorkStatus + } + return 0 +} + +func (x *WorkListReq) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +func (x *WorkListReq) GetManagerUserVal() string { + if x != nil { + return x.ManagerUserVal + } + return "" +} + +func (x *WorkListReq) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *WorkListReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *WorkListReq) GetMediaAccountUuids() []string { + if x != nil { + return x.MediaAccountUuids + } + return nil +} + +type WorkListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*WorkListResp_Info `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count"` +} + +func (x *WorkListResp) Reset() { + *x = WorkListResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkListResp) ProtoMessage() {} + +func (x *WorkListResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkListResp.ProtoReflect.Descriptor instead. +func (*WorkListResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{14} +} + +func (x *WorkListResp) GetData() []*WorkListResp_Info { + if x != nil { + return x.Data + } + return nil +} + +func (x *WorkListResp) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +type WorkDetailReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` +} + +func (x *WorkDetailReq) Reset() { + *x = WorkDetailReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkDetailReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkDetailReq) ProtoMessage() {} + +func (x *WorkDetailReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkDetailReq.ProtoReflect.Descriptor instead. +func (*WorkDetailReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{15} +} + +func (x *WorkDetailReq) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +type WorkLogInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content"` + OperatorName string `protobuf:"bytes,4,opt,name=operatorName,proto3" json:"operatorName"` + OperatorID string `protobuf:"bytes,5,opt,name=operatorID,proto3" json:"operatorID"` + UpdateTime string `protobuf:"bytes,6,opt,name=updateTime,proto3" json:"updateTime"` + ExtraData string `protobuf:"bytes,7,opt,name=extraData,proto3" json:"extraData"` + WorkStatus uint32 `protobuf:"varint,8,opt,name=workStatus,proto3" json:"workStatus"` +} + +func (x *WorkLogInfo) Reset() { + *x = WorkLogInfo{} + mi := &file_pb_fiee_cast_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkLogInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkLogInfo) ProtoMessage() {} + +func (x *WorkLogInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkLogInfo.ProtoReflect.Descriptor instead. +func (*WorkLogInfo) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{16} +} + +func (x *WorkLogInfo) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *WorkLogInfo) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *WorkLogInfo) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *WorkLogInfo) GetOperatorName() string { + if x != nil { + return x.OperatorName + } + return "" +} + +func (x *WorkLogInfo) GetOperatorID() string { + if x != nil { + return x.OperatorID + } + return "" +} + +func (x *WorkLogInfo) GetUpdateTime() string { + if x != nil { + return x.UpdateTime + } + return "" +} + +func (x *WorkLogInfo) GetExtraData() string { + if x != nil { + return x.ExtraData + } + return "" +} + +func (x *WorkLogInfo) GetWorkStatus() uint32 { + if x != nil { + return x.WorkStatus + } + return 0 +} + +type WorkDetailResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content"` + Images []string `protobuf:"bytes,4,rep,name=images,proto3" json:"images"` + MediaAccountUuids []string `protobuf:"bytes,5,rep,name=mediaAccountUuids,proto3" json:"mediaAccountUuids"` + MediaAccountNames []string `protobuf:"bytes,6,rep,name=mediaAccountNames,proto3" json:"mediaAccountNames"` + PlatformIDs []uint32 `protobuf:"varint,7,rep,packed,name=platformIDs,proto3" json:"platformIDs"` + WorkStatus uint32 `protobuf:"varint,8,opt,name=workStatus,proto3" json:"workStatus"` + PublishConfig1 *PublishConfig `protobuf:"bytes,9,opt,name=publishConfig1,proto3" json:"publishConfig1"` + PublishConfig2 *PublishConfig `protobuf:"bytes,10,opt,name=publishConfig2,proto3" json:"publishConfig2"` + PublishConfig3 *PublishConfig `protobuf:"bytes,11,opt,name=publishConfig3,proto3" json:"publishConfig3"` + VideoUrl string `protobuf:"bytes,12,opt,name=videoUrl,proto3" json:"videoUrl"` + CoverUrl string `protobuf:"bytes,13,opt,name=coverUrl,proto3" json:"coverUrl"` + ApprovalID string `protobuf:"bytes,14,opt,name=approvalID,proto3" json:"approvalID"` + WorkLogData []*WorkLogInfo `protobuf:"bytes,15,rep,name=WorkLogData,proto3" json:"WorkLogData"` + WorkCategory uint32 `protobuf:"varint,16,opt,name=workCategory,proto3" json:"workCategory"` + MediaAccData map[string]*MediaUserInfo `protobuf:"bytes,17,rep,name=mediaAccData,proto3" json:"mediaAccData" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *WorkDetailResp) Reset() { + *x = WorkDetailResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkDetailResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkDetailResp) ProtoMessage() {} + +func (x *WorkDetailResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkDetailResp.ProtoReflect.Descriptor instead. +func (*WorkDetailResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{17} +} + +func (x *WorkDetailResp) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *WorkDetailResp) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *WorkDetailResp) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *WorkDetailResp) GetImages() []string { + if x != nil { + return x.Images + } + return nil +} + +func (x *WorkDetailResp) GetMediaAccountUuids() []string { + if x != nil { + return x.MediaAccountUuids + } + return nil +} + +func (x *WorkDetailResp) GetMediaAccountNames() []string { + if x != nil { + return x.MediaAccountNames + } + return nil +} + +func (x *WorkDetailResp) GetPlatformIDs() []uint32 { + if x != nil { + return x.PlatformIDs + } + return nil +} + +func (x *WorkDetailResp) GetWorkStatus() uint32 { + if x != nil { + return x.WorkStatus + } + return 0 +} + +func (x *WorkDetailResp) GetPublishConfig1() *PublishConfig { + if x != nil { + return x.PublishConfig1 + } + return nil +} + +func (x *WorkDetailResp) GetPublishConfig2() *PublishConfig { + if x != nil { + return x.PublishConfig2 + } + return nil +} + +func (x *WorkDetailResp) GetPublishConfig3() *PublishConfig { + if x != nil { + return x.PublishConfig3 + } + return nil +} + +func (x *WorkDetailResp) GetVideoUrl() string { + if x != nil { + return x.VideoUrl + } + return "" +} + +func (x *WorkDetailResp) GetCoverUrl() string { + if x != nil { + return x.CoverUrl + } + return "" +} + +func (x *WorkDetailResp) GetApprovalID() string { + if x != nil { + return x.ApprovalID + } + return "" +} + +func (x *WorkDetailResp) GetWorkLogData() []*WorkLogInfo { + if x != nil { + return x.WorkLogData + } + return nil +} + +func (x *WorkDetailResp) GetWorkCategory() uint32 { + if x != nil { + return x.WorkCategory + } + return 0 +} + +func (x *WorkDetailResp) GetMediaAccData() map[string]*MediaUserInfo { + if x != nil { + return x.MediaAccData + } + return nil +} + +type UpdateStatusReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkAction WorkActionENUM `protobuf:"varint,1,opt,name=workAction,proto3,enum=Cast.WorkActionENUM" json:"workAction"` + WorkUuid string `protobuf:"bytes,2,opt,name=workUuid,proto3" json:"workUuid"` + ApprovalID string `protobuf:"bytes,3,opt,name=approvalID,proto3" json:"approvalID"` + ConfirmRemark string `protobuf:"bytes,4,opt,name=confirmRemark,proto3" json:"confirmRemark"` + ConfirmStatus uint32 `protobuf:"varint,5,opt,name=confirmStatus,proto3" json:"confirmStatus"` + ApprovalReply string `protobuf:"bytes,6,opt,name=approvalReply,proto3" json:"approvalReply"` +} + +func (x *UpdateStatusReq) Reset() { + *x = UpdateStatusReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateStatusReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateStatusReq) ProtoMessage() {} + +func (x *UpdateStatusReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateStatusReq.ProtoReflect.Descriptor instead. +func (*UpdateStatusReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{18} +} + +func (x *UpdateStatusReq) GetWorkAction() WorkActionENUM { + if x != nil { + return x.WorkAction + } + return WorkActionENUM_NO_ACTION +} + +func (x *UpdateStatusReq) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *UpdateStatusReq) GetApprovalID() string { + if x != nil { + return x.ApprovalID + } + return "" +} + +func (x *UpdateStatusReq) GetConfirmRemark() string { + if x != nil { + return x.ConfirmRemark + } + return "" +} + +func (x *UpdateStatusReq) GetConfirmStatus() uint32 { + if x != nil { + return x.ConfirmStatus + } + return 0 +} + +func (x *UpdateStatusReq) GetApprovalReply() string { + if x != nil { + return x.ApprovalReply + } + return "" +} + +type MediaAccountsReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistUuid string `protobuf:"bytes,1,opt,name=artistUuid,proto3" json:"artistUuid"` +} + +func (x *MediaAccountsReq) Reset() { + *x = MediaAccountsReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaAccountsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaAccountsReq) ProtoMessage() {} + +func (x *MediaAccountsReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaAccountsReq.ProtoReflect.Descriptor instead. +func (*MediaAccountsReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{19} +} + +func (x *MediaAccountsReq) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +type MediaAccountsResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*MediaAccountsResp_Info `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` +} + +func (x *MediaAccountsResp) Reset() { + *x = MediaAccountsResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaAccountsResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaAccountsResp) ProtoMessage() {} + +func (x *MediaAccountsResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaAccountsResp.ProtoReflect.Descriptor instead. +func (*MediaAccountsResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{20} +} + +func (x *MediaAccountsResp) GetData() []*MediaAccountsResp_Info { + if x != nil { + return x.Data + } + return nil +} + +type MediaWorksReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MediaAccountUuid string `protobuf:"bytes,1,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` + Page int32 `protobuf:"varint,2,opt,name=page,proto3" json:"page"` + PageSize int32 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize"` +} + +func (x *MediaWorksReq) Reset() { + *x = MediaWorksReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaWorksReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaWorksReq) ProtoMessage() {} + +func (x *MediaWorksReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaWorksReq.ProtoReflect.Descriptor instead. +func (*MediaWorksReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{21} +} + +func (x *MediaWorksReq) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +func (x *MediaWorksReq) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *MediaWorksReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type MediaWorksResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count"` + Data []*MediaWorksResp_Info `protobuf:"bytes,2,rep,name=data,proto3" json:"data"` +} + +func (x *MediaWorksResp) Reset() { + *x = MediaWorksResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaWorksResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaWorksResp) ProtoMessage() {} + +func (x *MediaWorksResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaWorksResp.ProtoReflect.Descriptor instead. +func (*MediaWorksResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{22} +} + +func (x *MediaWorksResp) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *MediaWorksResp) GetData() []*MediaWorksResp_Info { + if x != nil { + return x.Data + } + return nil +} + +type RePublishReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` + MediaAccountUuids []string `protobuf:"bytes,2,rep,name=mediaAccountUuids,proto3" json:"mediaAccountUuids"` + MediaAccountNames []string `protobuf:"bytes,3,rep,name=mediaAccountNames,proto3" json:"mediaAccountNames"` +} + +func (x *RePublishReq) Reset() { + *x = RePublishReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RePublishReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RePublishReq) ProtoMessage() {} + +func (x *RePublishReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RePublishReq.ProtoReflect.Descriptor instead. +func (*RePublishReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{23} +} + +func (x *RePublishReq) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *RePublishReq) GetMediaAccountUuids() []string { + if x != nil { + return x.MediaAccountUuids + } + return nil +} + +func (x *RePublishReq) GetMediaAccountNames() []string { + if x != nil { + return x.MediaAccountNames + } + return nil +} + +type RePublishResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ArtistUuid string `protobuf:"bytes,1,opt,name=artistUuid,proto3" json:"artistUuid"` + WorkCategory int32 `protobuf:"varint,2,opt,name=workCategory,proto3" json:"workCategory"` +} + +func (x *RePublishResp) Reset() { + *x = RePublishResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RePublishResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RePublishResp) ProtoMessage() {} + +func (x *RePublishResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RePublishResp.ProtoReflect.Descriptor instead. +func (*RePublishResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{24} +} + +func (x *RePublishResp) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +func (x *RePublishResp) GetWorkCategory() int32 { + if x != nil { + return x.WorkCategory + } + return 0 +} + +type DelWorkReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` +} + +func (x *DelWorkReq) Reset() { + *x = DelWorkReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DelWorkReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelWorkReq) ProtoMessage() {} + +func (x *DelWorkReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DelWorkReq.ProtoReflect.Descriptor instead. +func (*DelWorkReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{25} +} + +func (x *DelWorkReq) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +type WorkInfoReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` +} + +func (x *WorkInfoReq) Reset() { + *x = WorkInfoReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkInfoReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkInfoReq) ProtoMessage() {} + +func (x *WorkInfoReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkInfoReq.ProtoReflect.Descriptor instead. +func (*WorkInfoReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{26} +} + +func (x *WorkInfoReq) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +type WorkInfoResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkStatus uint32 `protobuf:"varint,1,opt,name=workStatus,proto3" json:"workStatus"` + ArtistUuid string `protobuf:"bytes,2,opt,name=artistUuid,proto3" json:"artistUuid"` + ArtistName string `protobuf:"bytes,3,opt,name=artistName,proto3" json:"artistName"` + ArtistPhone string `protobuf:"bytes,4,opt,name=artistPhone,proto3" json:"artistPhone"` + ArtistPhoneAreaCode string `protobuf:"bytes,5,opt,name=artistPhoneAreaCode,proto3" json:"artistPhoneAreaCode"` +} + +func (x *WorkInfoResp) Reset() { + *x = WorkInfoResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkInfoResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkInfoResp) ProtoMessage() {} + +func (x *WorkInfoResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkInfoResp.ProtoReflect.Descriptor instead. +func (*WorkInfoResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{27} +} + +func (x *WorkInfoResp) GetWorkStatus() uint32 { + if x != nil { + return x.WorkStatus + } + return 0 +} + +func (x *WorkInfoResp) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +func (x *WorkInfoResp) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *WorkInfoResp) GetArtistPhone() string { + if x != nil { + return x.ArtistPhone + } + return "" +} + +func (x *WorkInfoResp) GetArtistPhoneAreaCode() string { + if x != nil { + return x.ArtistPhoneAreaCode + } + return "" +} + +// youtube +type OAuthYoutubeUrlReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MediaAccountUuid string `protobuf:"bytes,1,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` +} + +func (x *OAuthYoutubeUrlReq) Reset() { + *x = OAuthYoutubeUrlReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OAuthYoutubeUrlReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OAuthYoutubeUrlReq) ProtoMessage() {} + +func (x *OAuthYoutubeUrlReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OAuthYoutubeUrlReq.ProtoReflect.Descriptor instead. +func (*OAuthYoutubeUrlReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{28} +} + +func (x *OAuthYoutubeUrlReq) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +type OAuthYoutubeUrlResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url"` +} + +func (x *OAuthYoutubeUrlResp) Reset() { + *x = OAuthYoutubeUrlResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OAuthYoutubeUrlResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OAuthYoutubeUrlResp) ProtoMessage() {} + +func (x *OAuthYoutubeUrlResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OAuthYoutubeUrlResp.ProtoReflect.Descriptor instead. +func (*OAuthYoutubeUrlResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{29} +} + +func (x *OAuthYoutubeUrlResp) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +type OAuthYoutubeTokenReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MediaAccountUuid string `protobuf:"bytes,1,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` + Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code"` +} + +func (x *OAuthYoutubeTokenReq) Reset() { + *x = OAuthYoutubeTokenReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OAuthYoutubeTokenReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OAuthYoutubeTokenReq) ProtoMessage() {} + +func (x *OAuthYoutubeTokenReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OAuthYoutubeTokenReq.ProtoReflect.Descriptor instead. +func (*OAuthYoutubeTokenReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{30} +} + +func (x *OAuthYoutubeTokenReq) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +func (x *OAuthYoutubeTokenReq) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +type OAuthYoutubeTokenResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccessToken string `protobuf:"bytes,1,opt,name=accessToken,proto3" json:"accessToken"` + RefreshToken string `protobuf:"bytes,2,opt,name=refreshToken,proto3" json:"refreshToken"` + ExpireTime int64 `protobuf:"varint,3,opt,name=expireTime,proto3" json:"expireTime"` +} + +func (x *OAuthYoutubeTokenResp) Reset() { + *x = OAuthYoutubeTokenResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OAuthYoutubeTokenResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OAuthYoutubeTokenResp) ProtoMessage() {} + +func (x *OAuthYoutubeTokenResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OAuthYoutubeTokenResp.ProtoReflect.Descriptor instead. +func (*OAuthYoutubeTokenResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{31} +} + +func (x *OAuthYoutubeTokenResp) GetAccessToken() string { + if x != nil { + return x.AccessToken + } + return "" +} + +func (x *OAuthYoutubeTokenResp) GetRefreshToken() string { + if x != nil { + return x.RefreshToken + } + return "" +} + +func (x *OAuthYoutubeTokenResp) GetExpireTime() int64 { + if x != nil { + return x.ExpireTime + } + return 0 +} + +type WorkListResp_Info struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` + ArtistName string `protobuf:"bytes,2,opt,name=artistName,proto3" json:"artistName"` + ArtistPhone string `protobuf:"bytes,3,opt,name=artistPhone,proto3" json:"artistPhone"` + Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title"` + WorkCategory uint32 `protobuf:"varint,5,opt,name=workCategory,proto3" json:"workCategory"` + WorkStatus uint32 `protobuf:"varint,6,opt,name=workStatus,proto3" json:"workStatus"` + SubmitTime string `protobuf:"bytes,7,opt,name=submitTime,proto3" json:"submitTime"` + StatusUpdateTime string `protobuf:"bytes,8,opt,name=statusUpdateTime,proto3" json:"statusUpdateTime"` + PlatformIDs []uint32 `protobuf:"varint,9,rep,packed,name=platformIDs,proto3" json:"platformIDs"` + MediaAccountNames []string `protobuf:"bytes,10,rep,name=mediaAccountNames,proto3" json:"mediaAccountNames"` + MediaAccountUuids []string `protobuf:"bytes,11,rep,name=mediaAccountUuids,proto3" json:"mediaAccountUuids"` + ManagerUserNames []string `protobuf:"bytes,12,rep,name=managerUserNames,proto3" json:"managerUserNames"` + ManagerUuids []string `protobuf:"bytes,13,rep,name=managerUuids,proto3" json:"managerUuids"` + ApprovalID string `protobuf:"bytes,14,opt,name=approvalID,proto3" json:"approvalID"` +} + +func (x *WorkListResp_Info) Reset() { + *x = WorkListResp_Info{} + mi := &file_pb_fiee_cast_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkListResp_Info) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkListResp_Info) ProtoMessage() {} + +func (x *WorkListResp_Info) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkListResp_Info.ProtoReflect.Descriptor instead. +func (*WorkListResp_Info) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{14, 0} +} + +func (x *WorkListResp_Info) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *WorkListResp_Info) GetArtistName() string { + if x != nil { + return x.ArtistName + } + return "" +} + +func (x *WorkListResp_Info) GetArtistPhone() string { + if x != nil { + return x.ArtistPhone + } + return "" +} + +func (x *WorkListResp_Info) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *WorkListResp_Info) GetWorkCategory() uint32 { + if x != nil { + return x.WorkCategory + } + return 0 +} + +func (x *WorkListResp_Info) GetWorkStatus() uint32 { + if x != nil { + return x.WorkStatus + } + return 0 +} + +func (x *WorkListResp_Info) GetSubmitTime() string { + if x != nil { + return x.SubmitTime + } + return "" +} + +func (x *WorkListResp_Info) GetStatusUpdateTime() string { + if x != nil { + return x.StatusUpdateTime + } + return "" +} + +func (x *WorkListResp_Info) GetPlatformIDs() []uint32 { + if x != nil { + return x.PlatformIDs + } + return nil +} + +func (x *WorkListResp_Info) GetMediaAccountNames() []string { + if x != nil { + return x.MediaAccountNames + } + return nil +} + +func (x *WorkListResp_Info) GetMediaAccountUuids() []string { + if x != nil { + return x.MediaAccountUuids + } + return nil +} + +func (x *WorkListResp_Info) GetManagerUserNames() []string { + if x != nil { + return x.ManagerUserNames + } + return nil +} + +func (x *WorkListResp_Info) GetManagerUuids() []string { + if x != nil { + return x.ManagerUuids + } + return nil +} + +func (x *WorkListResp_Info) GetApprovalID() string { + if x != nil { + return x.ApprovalID + } + return "" +} + +type MediaAccountsResp_Info struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PlatformID uint32 `protobuf:"varint,1,opt,name=platformID,proto3" json:"platformID"` + FansCount uint32 `protobuf:"varint,2,opt,name=fansCount,proto3" json:"fansCount"` + WorkCount uint32 `protobuf:"varint,3,opt,name=workCount,proto3" json:"workCount"` + ArtistUuid string `protobuf:"bytes,4,opt,name=artistUuid,proto3" json:"artistUuid"` + MediaAccountUuid string `protobuf:"bytes,5,opt,name=mediaAccountUuid,proto3" json:"mediaAccountUuid"` + MediaAccountName string `protobuf:"bytes,6,opt,name=mediaAccountName,proto3" json:"mediaAccountName"` +} + +func (x *MediaAccountsResp_Info) Reset() { + *x = MediaAccountsResp_Info{} + mi := &file_pb_fiee_cast_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaAccountsResp_Info) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaAccountsResp_Info) ProtoMessage() {} + +func (x *MediaAccountsResp_Info) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaAccountsResp_Info.ProtoReflect.Descriptor instead. +func (*MediaAccountsResp_Info) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{20, 0} +} + +func (x *MediaAccountsResp_Info) GetPlatformID() uint32 { + if x != nil { + return x.PlatformID + } + return 0 +} + +func (x *MediaAccountsResp_Info) GetFansCount() uint32 { + if x != nil { + return x.FansCount + } + return 0 +} + +func (x *MediaAccountsResp_Info) GetWorkCount() uint32 { + if x != nil { + return x.WorkCount + } + return 0 +} + +func (x *MediaAccountsResp_Info) GetArtistUuid() string { + if x != nil { + return x.ArtistUuid + } + return "" +} + +func (x *MediaAccountsResp_Info) GetMediaAccountUuid() string { + if x != nil { + return x.MediaAccountUuid + } + return "" +} + +func (x *MediaAccountsResp_Info) GetMediaAccountName() string { + if x != nil { + return x.MediaAccountName + } + return "" +} + +type MediaWorksResp_Info struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` + Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content"` + WorkCategory uint32 `protobuf:"varint,4,opt,name=workCategory,proto3" json:"workCategory"` + WorkStatus uint32 `protobuf:"varint,5,opt,name=workStatus,proto3" json:"workStatus"` + SubmitTime string `protobuf:"bytes,6,opt,name=submitTime,proto3" json:"submitTime"` + StatusUpdateTime string `protobuf:"bytes,7,opt,name=statusUpdateTime,proto3" json:"statusUpdateTime"` + Images []string `protobuf:"bytes,8,rep,name=images,proto3" json:"images"` + VideoUrl string `protobuf:"bytes,9,opt,name=videoUrl,proto3" json:"videoUrl"` + CoverUrl string `protobuf:"bytes,10,opt,name=coverUrl,proto3" json:"coverUrl"` +} + +func (x *MediaWorksResp_Info) Reset() { + *x = MediaWorksResp_Info{} + mi := &file_pb_fiee_cast_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MediaWorksResp_Info) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MediaWorksResp_Info) ProtoMessage() {} + +func (x *MediaWorksResp_Info) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MediaWorksResp_Info.ProtoReflect.Descriptor instead. +func (*MediaWorksResp_Info) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{22, 0} +} + +func (x *MediaWorksResp_Info) GetWorkUuid() string { + if x != nil { + return x.WorkUuid + } + return "" +} + +func (x *MediaWorksResp_Info) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *MediaWorksResp_Info) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *MediaWorksResp_Info) GetWorkCategory() uint32 { + if x != nil { + return x.WorkCategory + } + return 0 +} + +func (x *MediaWorksResp_Info) GetWorkStatus() uint32 { + if x != nil { + return x.WorkStatus + } + return 0 +} + +func (x *MediaWorksResp_Info) GetSubmitTime() string { + if x != nil { + return x.SubmitTime + } + return "" +} + +func (x *MediaWorksResp_Info) GetStatusUpdateTime() string { + if x != nil { + return x.StatusUpdateTime + } + return "" +} + +func (x *MediaWorksResp_Info) GetImages() []string { + if x != nil { + return x.Images + } + return nil +} + +func (x *MediaWorksResp_Info) GetVideoUrl() string { + if x != nil { + return x.VideoUrl + } + return "" +} + +func (x *MediaWorksResp_Info) GetCoverUrl() string { + if x != nil { + return x.CoverUrl + } + return "" +} + +var File_pb_fiee_cast_proto protoreflect.FileDescriptor + +var file_pb_fiee_cast_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x70, 0x62, 0x2f, 0x66, 0x69, 0x65, 0x65, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x43, 0x61, 0x73, 0x74, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x82, 0x02, 0x0a, 0x10, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x56, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x56, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x56, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x34, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0xb5, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, + 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x52, 0x0a, + 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0xad, 0x03, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x0a, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, + 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, + 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0x44, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x10, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x55, 0x6e, 0x62, 0x69, 0x6e, + 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x11, 0x55, 0x6e, 0x62, 0x69, 0x6e, + 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x11, + 0x6f, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x64, + 0x41, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x42, + 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, + 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xef, 0x04, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0b, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x31, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x32, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, + 0x6e, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, + 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x0d, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0d, + 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x61, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, + 0x63, 0x61, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x6e, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x61, + 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x41, 0x49, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x69, 0x73, 0x41, 0x49, 0x22, 0x8f, 0x05, 0x0a, + 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, + 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, 0x4e, + 0x55, 0x4d, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, + 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x12, 0x3b, 0x0a, 0x0e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x31, + 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, + 0x64, 0x22, 0x8f, 0x04, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x12, + 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, + 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, + 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x26, 0x0a, + 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, + 0x69, 0x64, 0x73, 0x22, 0xcc, 0x04, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xf8, 0x03, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, + 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x49, 0x44, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x22, + 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x75, 0x69, + 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x49, 0x44, 0x22, 0x2b, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, + 0xfb, 0x01, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, + 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, + 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x9c, 0x06, + 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, + 0x44, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 0x12, + 0x3b, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0x12, 0x3b, 0x0a, 0x0e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, + 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, + 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, + 0x44, 0x12, 0x33, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, + 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x4c, + 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x6f, + 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x4a, 0x0a, 0x0c, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x44, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x44, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x54, 0x0a, 0x11, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf5, 0x01, 0x0a, + 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x12, 0x34, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x4e, 0x55, 0x4d, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, + 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x49, 0x44, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, + 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x32, 0x0a, 0x10, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, + 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x22, 0xa2, 0x02, 0x0a, 0x11, 0x4d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0xda, 0x01, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x6e, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x61, + 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, + 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, + 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6b, 0x0a, + 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x12, 0x2a, + 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x8a, 0x03, 0x0a, 0x0e, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0xb2, 0x02, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x77, + 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, + 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, + 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, + 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x86, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, + 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, + 0x55, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x22, 0x53, 0x0a, 0x0d, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x28, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x57, 0x6f, 0x72, 0x6b, + 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, + 0x29, 0x0a, 0x0b, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x1a, + 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x0c, 0x57, + 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x30, 0x0a, + 0x13, 0x61, 0x72, 0x74, 0x69, 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x72, 0x74, 0x69, + 0x73, 0x74, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x41, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x22, + 0x40, 0x0a, 0x12, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x55, + 0x72, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, + 0x64, 0x22, 0x27, 0x0a, 0x13, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, + 0x65, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x56, 0x0a, 0x14, 0x4f, 0x41, + 0x75, 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x22, 0x7d, 0x0a, 0x15, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, + 0x62, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, + 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x2a, 0x3f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x44, 0x45, + 0x4e, 0x55, 0x4d, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x49, 0x4b, 0x54, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x59, 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x53, + 0x10, 0x03, 0x2a, 0x77, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x4e, 0x55, 0x4d, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x10, 0x01, + 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x11, + 0x0a, 0x0d, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, + 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x45, + 0x4a, 0x45, 0x43, 0x54, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, + 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x32, 0xa2, 0x08, 0x0a, 0x04, + 0x43, 0x61, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, + 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x55, + 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x62, 0x69, + 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x3d, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x14, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x48, + 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x12, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x18, 0x2e, 0x43, 0x61, + 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x33, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x11, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x15, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x43, + 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x64, + 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x43, 0x61, 0x73, + 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, + 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x07, 0x44, 0x65, + 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x10, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x6c, + 0x57, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x00, 0x12, 0x33, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x11, 0x2e, + 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x1a, 0x12, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, + 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x2e, 0x43, 0x61, 0x73, 0x74, + 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x55, 0x72, 0x6c, + 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, + 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x4e, 0x0a, 0x11, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, + 0x74, 0x68, 0x59, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x71, 0x1a, 0x1b, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x59, 0x6f, + 0x75, 0x74, 0x75, 0x62, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x3b, 0x63, 0x61, 0x73, 0x74, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pb_fiee_cast_proto_rawDescOnce sync.Once + file_pb_fiee_cast_proto_rawDescData = file_pb_fiee_cast_proto_rawDesc +) + +func file_pb_fiee_cast_proto_rawDescGZIP() []byte { + file_pb_fiee_cast_proto_rawDescOnce.Do(func() { + file_pb_fiee_cast_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_fiee_cast_proto_rawDescData) + }) + return file_pb_fiee_cast_proto_rawDescData +} + +var file_pb_fiee_cast_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_pb_fiee_cast_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_pb_fiee_cast_proto_goTypes = []any{ + (PlatformIDENUM)(0), // 0: Cast.PlatformIDENUM + (WorkActionENUM)(0), // 1: Cast.WorkActionENUM + (*MediaUserListReq)(nil), // 2: Cast.MediaUserListReq + (*MediaUserInfo)(nil), // 3: Cast.MediaUserInfo + (*MediaUserListResp)(nil), // 4: Cast.MediaUserListResp + (*UpdateMediaAccountReq)(nil), // 5: Cast.UpdateMediaAccountReq + (*UpdateMediaAccountResp)(nil), // 6: Cast.UpdateMediaAccountResp + (*UnbindManagerReq)(nil), // 7: Cast.UnbindManagerReq + (*UnbindManagerResp)(nil), // 8: Cast.UnbindManagerResp + (*BindManagerReq)(nil), // 9: Cast.BindManagerReq + (*UpdateWorkImageReq)(nil), // 10: Cast.UpdateWorkImageReq + (*UpdateWorkImageResp)(nil), // 11: Cast.UpdateWorkImageResp + (*PublishConfig)(nil), // 12: Cast.PublishConfig + (*UpdateWorkVideoReq)(nil), // 13: Cast.UpdateWorkVideoReq + (*UpdateWorkVideoResp)(nil), // 14: Cast.UpdateWorkVideoResp + (*WorkListReq)(nil), // 15: Cast.WorkListReq + (*WorkListResp)(nil), // 16: Cast.WorkListResp + (*WorkDetailReq)(nil), // 17: Cast.WorkDetailReq + (*WorkLogInfo)(nil), // 18: Cast.WorkLogInfo + (*WorkDetailResp)(nil), // 19: Cast.WorkDetailResp + (*UpdateStatusReq)(nil), // 20: Cast.UpdateStatusReq + (*MediaAccountsReq)(nil), // 21: Cast.MediaAccountsReq + (*MediaAccountsResp)(nil), // 22: Cast.MediaAccountsResp + (*MediaWorksReq)(nil), // 23: Cast.MediaWorksReq + (*MediaWorksResp)(nil), // 24: Cast.MediaWorksResp + (*RePublishReq)(nil), // 25: Cast.RePublishReq + (*RePublishResp)(nil), // 26: Cast.RePublishResp + (*DelWorkReq)(nil), // 27: Cast.DelWorkReq + (*WorkInfoReq)(nil), // 28: Cast.WorkInfoReq + (*WorkInfoResp)(nil), // 29: Cast.WorkInfoResp + (*OAuthYoutubeUrlReq)(nil), // 30: Cast.OAuthYoutubeUrlReq + (*OAuthYoutubeUrlResp)(nil), // 31: Cast.OAuthYoutubeUrlResp + (*OAuthYoutubeTokenReq)(nil), // 32: Cast.OAuthYoutubeTokenReq + (*OAuthYoutubeTokenResp)(nil), // 33: Cast.OAuthYoutubeTokenResp + (*WorkListResp_Info)(nil), // 34: Cast.WorkListResp.Info + nil, // 35: Cast.WorkDetailResp.MediaAccDataEntry + (*MediaAccountsResp_Info)(nil), // 36: Cast.MediaAccountsResp.Info + (*MediaWorksResp_Info)(nil), // 37: Cast.MediaWorksResp.Info + (*emptypb.Empty)(nil), // 38: google.protobuf.Empty +} +var file_pb_fiee_cast_proto_depIdxs = []int32{ + 0, // 0: Cast.MediaUserListReq.platformID:type_name -> Cast.PlatformIDENUM + 3, // 1: Cast.MediaUserListResp.data:type_name -> Cast.MediaUserInfo + 0, // 2: Cast.UpdateMediaAccountReq.platformID:type_name -> Cast.PlatformIDENUM + 0, // 3: Cast.UpdateWorkImageReq.platformIDs:type_name -> Cast.PlatformIDENUM + 12, // 4: Cast.UpdateWorkImageReq.publishConfig1:type_name -> Cast.PublishConfig + 12, // 5: Cast.UpdateWorkImageReq.publishConfig2:type_name -> Cast.PublishConfig + 12, // 6: Cast.UpdateWorkImageReq.publishConfig3:type_name -> Cast.PublishConfig + 0, // 7: Cast.UpdateWorkVideoReq.platformIDs:type_name -> Cast.PlatformIDENUM + 12, // 8: Cast.UpdateWorkVideoReq.publishConfig1:type_name -> Cast.PublishConfig + 12, // 9: Cast.UpdateWorkVideoReq.publishConfig2:type_name -> Cast.PublishConfig + 12, // 10: Cast.UpdateWorkVideoReq.publishConfig3:type_name -> Cast.PublishConfig + 34, // 11: Cast.WorkListResp.data:type_name -> Cast.WorkListResp.Info + 12, // 12: Cast.WorkDetailResp.publishConfig1:type_name -> Cast.PublishConfig + 12, // 13: Cast.WorkDetailResp.publishConfig2:type_name -> Cast.PublishConfig + 12, // 14: Cast.WorkDetailResp.publishConfig3:type_name -> Cast.PublishConfig + 18, // 15: Cast.WorkDetailResp.WorkLogData:type_name -> Cast.WorkLogInfo + 35, // 16: Cast.WorkDetailResp.mediaAccData:type_name -> Cast.WorkDetailResp.MediaAccDataEntry + 1, // 17: Cast.UpdateStatusReq.workAction:type_name -> Cast.WorkActionENUM + 36, // 18: Cast.MediaAccountsResp.data:type_name -> Cast.MediaAccountsResp.Info + 37, // 19: Cast.MediaWorksResp.data:type_name -> Cast.MediaWorksResp.Info + 3, // 20: Cast.WorkDetailResp.MediaAccDataEntry.value:type_name -> Cast.MediaUserInfo + 2, // 21: Cast.Cast.MediaUserList:input_type -> Cast.MediaUserListReq + 5, // 22: Cast.Cast.UpdateMediaAccount:input_type -> Cast.UpdateMediaAccountReq + 7, // 23: Cast.Cast.UnbindManager:input_type -> Cast.UnbindManagerReq + 9, // 24: Cast.Cast.BindManager:input_type -> Cast.BindManagerReq + 10, // 25: Cast.Cast.UpdateWorkImage:input_type -> Cast.UpdateWorkImageReq + 13, // 26: Cast.Cast.UpdateWorkVideo:input_type -> Cast.UpdateWorkVideoReq + 15, // 27: Cast.Cast.WorkList:input_type -> Cast.WorkListReq + 17, // 28: Cast.Cast.WorkDetail:input_type -> Cast.WorkDetailReq + 20, // 29: Cast.Cast.UpdateStatus:input_type -> Cast.UpdateStatusReq + 21, // 30: Cast.Cast.MediaAccounts:input_type -> Cast.MediaAccountsReq + 23, // 31: Cast.Cast.MediaWorks:input_type -> Cast.MediaWorksReq + 25, // 32: Cast.Cast.RePublish:input_type -> Cast.RePublishReq + 27, // 33: Cast.Cast.DelWork:input_type -> Cast.DelWorkReq + 28, // 34: Cast.Cast.WorkInfo:input_type -> Cast.WorkInfoReq + 30, // 35: Cast.Cast.OAuthYoutubeUrl:input_type -> Cast.OAuthYoutubeUrlReq + 32, // 36: Cast.Cast.OAuthYoutubeToken:input_type -> Cast.OAuthYoutubeTokenReq + 4, // 37: Cast.Cast.MediaUserList:output_type -> Cast.MediaUserListResp + 6, // 38: Cast.Cast.UpdateMediaAccount:output_type -> Cast.UpdateMediaAccountResp + 8, // 39: Cast.Cast.UnbindManager:output_type -> Cast.UnbindManagerResp + 38, // 40: Cast.Cast.BindManager:output_type -> google.protobuf.Empty + 11, // 41: Cast.Cast.UpdateWorkImage:output_type -> Cast.UpdateWorkImageResp + 14, // 42: Cast.Cast.UpdateWorkVideo:output_type -> Cast.UpdateWorkVideoResp + 16, // 43: Cast.Cast.WorkList:output_type -> Cast.WorkListResp + 19, // 44: Cast.Cast.WorkDetail:output_type -> Cast.WorkDetailResp + 38, // 45: Cast.Cast.UpdateStatus:output_type -> google.protobuf.Empty + 22, // 46: Cast.Cast.MediaAccounts:output_type -> Cast.MediaAccountsResp + 24, // 47: Cast.Cast.MediaWorks:output_type -> Cast.MediaWorksResp + 26, // 48: Cast.Cast.RePublish:output_type -> Cast.RePublishResp + 38, // 49: Cast.Cast.DelWork:output_type -> google.protobuf.Empty + 29, // 50: Cast.Cast.WorkInfo:output_type -> Cast.WorkInfoResp + 31, // 51: Cast.Cast.OAuthYoutubeUrl:output_type -> Cast.OAuthYoutubeUrlResp + 33, // 52: Cast.Cast.OAuthYoutubeToken:output_type -> Cast.OAuthYoutubeTokenResp + 37, // [37:53] is the sub-list for method output_type + 21, // [21:37] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name +} + +func init() { file_pb_fiee_cast_proto_init() } +func file_pb_fiee_cast_proto_init() { + if File_pb_fiee_cast_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pb_fiee_cast_proto_rawDesc, + NumEnums: 2, + NumMessages: 36, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_pb_fiee_cast_proto_goTypes, + DependencyIndexes: file_pb_fiee_cast_proto_depIdxs, + EnumInfos: file_pb_fiee_cast_proto_enumTypes, + MessageInfos: file_pb_fiee_cast_proto_msgTypes, + }.Build() + File_pb_fiee_cast_proto = out.File + file_pb_fiee_cast_proto_rawDesc = nil + file_pb_fiee_cast_proto_goTypes = nil + file_pb_fiee_cast_proto_depIdxs = nil +} diff --git a/api/cast/cast.pb.validate.go b/api/cast/cast.pb.validate.go new file mode 100644 index 0000000..5c6edab --- /dev/null +++ b/api/cast/cast.pb.validate.go @@ -0,0 +1,4320 @@ +// Code generated by protoc-gen-validate. DO NOT EDIT. +// source: pb/fiee/cast.proto + +package cast + +import ( + "bytes" + "errors" + "fmt" + "net" + "net/mail" + "net/url" + "regexp" + "sort" + "strings" + "time" + "unicode/utf8" + + "google.golang.org/protobuf/types/known/anypb" +) + +// ensure the imports are used +var ( + _ = bytes.MinRead + _ = errors.New("") + _ = fmt.Print + _ = utf8.UTFMax + _ = (*regexp.Regexp)(nil) + _ = (*strings.Reader)(nil) + _ = net.IPv4len + _ = time.Duration(0) + _ = (*url.URL)(nil) + _ = (*mail.Address)(nil) + _ = anypb.Any{} + _ = sort.Sort +) + +// Validate checks the field values on MediaUserListReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *MediaUserListReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaUserListReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MediaUserListReqMultiError, or nil if none found. +func (m *MediaUserListReq) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaUserListReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ArtistVal + + // no validation rules for ManagerVal + + // no validation rules for PlatformUserName + + // no validation rules for PlatformID + + // no validation rules for Page + + // no validation rules for PageSize + + // no validation rules for ArtistUuid + + if len(errors) > 0 { + return MediaUserListReqMultiError(errors) + } + + return nil +} + +// MediaUserListReqMultiError is an error wrapping multiple validation errors +// returned by MediaUserListReq.ValidateAll() if the designated constraints +// aren't met. +type MediaUserListReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaUserListReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaUserListReqMultiError) AllErrors() []error { return m } + +// MediaUserListReqValidationError is the validation error returned by +// MediaUserListReq.Validate if the designated constraints aren't met. +type MediaUserListReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaUserListReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaUserListReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaUserListReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaUserListReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaUserListReqValidationError) ErrorName() string { return "MediaUserListReqValidationError" } + +// Error satisfies the builtin error interface +func (e MediaUserListReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaUserListReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaUserListReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaUserListReqValidationError{} + +// Validate checks the field values on MediaUserInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *MediaUserInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaUserInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in MediaUserInfoMultiError, or +// nil if none found. +func (m *MediaUserInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaUserInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PlatformUserName + + // no validation rules for PlatformID + + // no validation rules for ArtistName + + // no validation rules for ArtistPhone + + // no validation rules for ArtistUuid + + // no validation rules for ManagerUserName + + // no validation rules for ManagerUuid + + // no validation rules for MediaAccountUuid + + if len(errors) > 0 { + return MediaUserInfoMultiError(errors) + } + + return nil +} + +// MediaUserInfoMultiError is an error wrapping multiple validation errors +// returned by MediaUserInfo.ValidateAll() if the designated constraints +// aren't met. +type MediaUserInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaUserInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaUserInfoMultiError) AllErrors() []error { return m } + +// MediaUserInfoValidationError is the validation error returned by +// MediaUserInfo.Validate if the designated constraints aren't met. +type MediaUserInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaUserInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaUserInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaUserInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaUserInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaUserInfoValidationError) ErrorName() string { return "MediaUserInfoValidationError" } + +// Error satisfies the builtin error interface +func (e MediaUserInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaUserInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaUserInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaUserInfoValidationError{} + +// Validate checks the field values on MediaUserListResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *MediaUserListResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaUserListResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MediaUserListRespMultiError, or nil if none found. +func (m *MediaUserListResp) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaUserListResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetData() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MediaUserListRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MediaUserListRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MediaUserListRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for Count + + if len(errors) > 0 { + return MediaUserListRespMultiError(errors) + } + + return nil +} + +// MediaUserListRespMultiError is an error wrapping multiple validation errors +// returned by MediaUserListResp.ValidateAll() if the designated constraints +// aren't met. +type MediaUserListRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaUserListRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaUserListRespMultiError) AllErrors() []error { return m } + +// MediaUserListRespValidationError is the validation error returned by +// MediaUserListResp.Validate if the designated constraints aren't met. +type MediaUserListRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaUserListRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaUserListRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaUserListRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaUserListRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaUserListRespValidationError) ErrorName() string { + return "MediaUserListRespValidationError" +} + +// Error satisfies the builtin error interface +func (e MediaUserListRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaUserListResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaUserListRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaUserListRespValidationError{} + +// Validate checks the field values on UpdateMediaAccountReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *UpdateMediaAccountReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateMediaAccountReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateMediaAccountReqMultiError, or nil if none found. +func (m *UpdateMediaAccountReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateMediaAccountReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PlatformID + + // no validation rules for PlatformUserName + + // no validation rules for PlatformUserID + + // no validation rules for ArtistUuid + + // no validation rules for ArtistName + + // no validation rules for ArtistPhone + + // no validation rules for MediaAccountUuid + + // no validation rules for ManagerUuid + + // no validation rules for ManagerUserName + + // no validation rules for ArtistPhoneAreaCode + + if len(errors) > 0 { + return UpdateMediaAccountReqMultiError(errors) + } + + return nil +} + +// UpdateMediaAccountReqMultiError is an error wrapping multiple validation +// errors returned by UpdateMediaAccountReq.ValidateAll() if the designated +// constraints aren't met. +type UpdateMediaAccountReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateMediaAccountReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateMediaAccountReqMultiError) AllErrors() []error { return m } + +// UpdateMediaAccountReqValidationError is the validation error returned by +// UpdateMediaAccountReq.Validate if the designated constraints aren't met. +type UpdateMediaAccountReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateMediaAccountReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateMediaAccountReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateMediaAccountReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateMediaAccountReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateMediaAccountReqValidationError) ErrorName() string { + return "UpdateMediaAccountReqValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateMediaAccountReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateMediaAccountReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateMediaAccountReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateMediaAccountReqValidationError{} + +// Validate checks the field values on UpdateMediaAccountResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *UpdateMediaAccountResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateMediaAccountResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateMediaAccountRespMultiError, or nil if none found. +func (m *UpdateMediaAccountResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateMediaAccountResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for MediaAccountUuid + + if len(errors) > 0 { + return UpdateMediaAccountRespMultiError(errors) + } + + return nil +} + +// UpdateMediaAccountRespMultiError is an error wrapping multiple validation +// errors returned by UpdateMediaAccountResp.ValidateAll() if the designated +// constraints aren't met. +type UpdateMediaAccountRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateMediaAccountRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateMediaAccountRespMultiError) AllErrors() []error { return m } + +// UpdateMediaAccountRespValidationError is the validation error returned by +// UpdateMediaAccountResp.Validate if the designated constraints aren't met. +type UpdateMediaAccountRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateMediaAccountRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateMediaAccountRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateMediaAccountRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateMediaAccountRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateMediaAccountRespValidationError) ErrorName() string { + return "UpdateMediaAccountRespValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateMediaAccountRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateMediaAccountResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateMediaAccountRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateMediaAccountRespValidationError{} + +// Validate checks the field values on UnbindManagerReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *UnbindManagerReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UnbindManagerReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UnbindManagerReqMultiError, or nil if none found. +func (m *UnbindManagerReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UnbindManagerReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for MediaAccountUuid + + if len(errors) > 0 { + return UnbindManagerReqMultiError(errors) + } + + return nil +} + +// UnbindManagerReqMultiError is an error wrapping multiple validation errors +// returned by UnbindManagerReq.ValidateAll() if the designated constraints +// aren't met. +type UnbindManagerReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UnbindManagerReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UnbindManagerReqMultiError) AllErrors() []error { return m } + +// UnbindManagerReqValidationError is the validation error returned by +// UnbindManagerReq.Validate if the designated constraints aren't met. +type UnbindManagerReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UnbindManagerReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UnbindManagerReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UnbindManagerReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UnbindManagerReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UnbindManagerReqValidationError) ErrorName() string { return "UnbindManagerReqValidationError" } + +// Error satisfies the builtin error interface +func (e UnbindManagerReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUnbindManagerReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UnbindManagerReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UnbindManagerReqValidationError{} + +// Validate checks the field values on UnbindManagerResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *UnbindManagerResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UnbindManagerResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UnbindManagerRespMultiError, or nil if none found. +func (m *UnbindManagerResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UnbindManagerResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for OldBindArtistUuid + + if len(errors) > 0 { + return UnbindManagerRespMultiError(errors) + } + + return nil +} + +// UnbindManagerRespMultiError is an error wrapping multiple validation errors +// returned by UnbindManagerResp.ValidateAll() if the designated constraints +// aren't met. +type UnbindManagerRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UnbindManagerRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UnbindManagerRespMultiError) AllErrors() []error { return m } + +// UnbindManagerRespValidationError is the validation error returned by +// UnbindManagerResp.Validate if the designated constraints aren't met. +type UnbindManagerRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UnbindManagerRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UnbindManagerRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UnbindManagerRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UnbindManagerRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UnbindManagerRespValidationError) ErrorName() string { + return "UnbindManagerRespValidationError" +} + +// Error satisfies the builtin error interface +func (e UnbindManagerRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUnbindManagerResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UnbindManagerRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UnbindManagerRespValidationError{} + +// Validate checks the field values on BindManagerReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *BindManagerReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BindManagerReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in BindManagerReqMultiError, +// or nil if none found. +func (m *BindManagerReq) ValidateAll() error { + return m.validate(true) +} + +func (m *BindManagerReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for MediaAccountUuid + + // no validation rules for ManagerUuid + + // no validation rules for ManagerUserName + + if len(errors) > 0 { + return BindManagerReqMultiError(errors) + } + + return nil +} + +// BindManagerReqMultiError is an error wrapping multiple validation errors +// returned by BindManagerReq.ValidateAll() if the designated constraints +// aren't met. +type BindManagerReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BindManagerReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BindManagerReqMultiError) AllErrors() []error { return m } + +// BindManagerReqValidationError is the validation error returned by +// BindManagerReq.Validate if the designated constraints aren't met. +type BindManagerReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e BindManagerReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e BindManagerReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e BindManagerReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e BindManagerReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e BindManagerReqValidationError) ErrorName() string { return "BindManagerReqValidationError" } + +// Error satisfies the builtin error interface +func (e BindManagerReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sBindManagerReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = BindManagerReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = BindManagerReqValidationError{} + +// Validate checks the field values on UpdateWorkImageReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *UpdateWorkImageReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateWorkImageReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateWorkImageReqMultiError, or nil if none found. +func (m *UpdateWorkImageReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateWorkImageReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Title + + // no validation rules for Content + + if all { + switch v := interface{}(m.GetPublishConfig1()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateWorkImageReqValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateWorkImageReqValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig1()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateWorkImageReqValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetPublishConfig2()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateWorkImageReqValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateWorkImageReqValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig2()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateWorkImageReqValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetPublishConfig3()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateWorkImageReqValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateWorkImageReqValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig3()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateWorkImageReqValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Action + + // no validation rules for WorkUuid + + // no validation rules for ArtistUuid + + // no validation rules for ArtistPhone + + // no validation rules for ArtistName + + // no validation rules for ArtistPhoneAreaCode + + if len(errors) > 0 { + return UpdateWorkImageReqMultiError(errors) + } + + return nil +} + +// UpdateWorkImageReqMultiError is an error wrapping multiple validation errors +// returned by UpdateWorkImageReq.ValidateAll() if the designated constraints +// aren't met. +type UpdateWorkImageReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateWorkImageReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateWorkImageReqMultiError) AllErrors() []error { return m } + +// UpdateWorkImageReqValidationError is the validation error returned by +// UpdateWorkImageReq.Validate if the designated constraints aren't met. +type UpdateWorkImageReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateWorkImageReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateWorkImageReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateWorkImageReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateWorkImageReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateWorkImageReqValidationError) ErrorName() string { + return "UpdateWorkImageReqValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateWorkImageReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateWorkImageReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateWorkImageReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateWorkImageReqValidationError{} + +// Validate checks the field values on UpdateWorkImageResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *UpdateWorkImageResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateWorkImageResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateWorkImageRespMultiError, or nil if none found. +func (m *UpdateWorkImageResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateWorkImageResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + if len(errors) > 0 { + return UpdateWorkImageRespMultiError(errors) + } + + return nil +} + +// UpdateWorkImageRespMultiError is an error wrapping multiple validation +// errors returned by UpdateWorkImageResp.ValidateAll() if the designated +// constraints aren't met. +type UpdateWorkImageRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateWorkImageRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateWorkImageRespMultiError) AllErrors() []error { return m } + +// UpdateWorkImageRespValidationError is the validation error returned by +// UpdateWorkImageResp.Validate if the designated constraints aren't met. +type UpdateWorkImageRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateWorkImageRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateWorkImageRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateWorkImageRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateWorkImageRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateWorkImageRespValidationError) ErrorName() string { + return "UpdateWorkImageRespValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateWorkImageRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateWorkImageResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateWorkImageRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateWorkImageRespValidationError{} + +// Validate checks the field values on PublishConfig with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *PublishConfig) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on PublishConfig with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in PublishConfigMultiError, or +// nil if none found. +func (m *PublishConfig) ValidateAll() error { + return m.validate(true) +} + +func (m *PublishConfig) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ForbidComment + + // no validation rules for PublicType + + // no validation rules for CanJoin + + // no validation rules for CanQuote + + // no validation rules for CanComment + + // no validation rules for IsAI + + if len(errors) > 0 { + return PublishConfigMultiError(errors) + } + + return nil +} + +// PublishConfigMultiError is an error wrapping multiple validation errors +// returned by PublishConfig.ValidateAll() if the designated constraints +// aren't met. +type PublishConfigMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m PublishConfigMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m PublishConfigMultiError) AllErrors() []error { return m } + +// PublishConfigValidationError is the validation error returned by +// PublishConfig.Validate if the designated constraints aren't met. +type PublishConfigValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e PublishConfigValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e PublishConfigValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e PublishConfigValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e PublishConfigValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e PublishConfigValidationError) ErrorName() string { return "PublishConfigValidationError" } + +// Error satisfies the builtin error interface +func (e PublishConfigValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sPublishConfig.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = PublishConfigValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = PublishConfigValidationError{} + +// Validate checks the field values on UpdateWorkVideoReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *UpdateWorkVideoReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateWorkVideoReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateWorkVideoReqMultiError, or nil if none found. +func (m *UpdateWorkVideoReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateWorkVideoReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Title + + // no validation rules for Content + + // no validation rules for VideoUrl + + // no validation rules for CoverUrl + + if all { + switch v := interface{}(m.GetPublishConfig1()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateWorkVideoReqValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateWorkVideoReqValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig1()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateWorkVideoReqValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetPublishConfig2()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateWorkVideoReqValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateWorkVideoReqValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig2()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateWorkVideoReqValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetPublishConfig3()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateWorkVideoReqValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateWorkVideoReqValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig3()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateWorkVideoReqValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Action + + // no validation rules for WorkUuid + + // no validation rules for ArtistUuid + + // no validation rules for ArtistPhone + + // no validation rules for ArtistName + + // no validation rules for ArtistPhoneAreaCode + + if len(errors) > 0 { + return UpdateWorkVideoReqMultiError(errors) + } + + return nil +} + +// UpdateWorkVideoReqMultiError is an error wrapping multiple validation errors +// returned by UpdateWorkVideoReq.ValidateAll() if the designated constraints +// aren't met. +type UpdateWorkVideoReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateWorkVideoReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateWorkVideoReqMultiError) AllErrors() []error { return m } + +// UpdateWorkVideoReqValidationError is the validation error returned by +// UpdateWorkVideoReq.Validate if the designated constraints aren't met. +type UpdateWorkVideoReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateWorkVideoReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateWorkVideoReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateWorkVideoReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateWorkVideoReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateWorkVideoReqValidationError) ErrorName() string { + return "UpdateWorkVideoReqValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateWorkVideoReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateWorkVideoReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateWorkVideoReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateWorkVideoReqValidationError{} + +// Validate checks the field values on UpdateWorkVideoResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *UpdateWorkVideoResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateWorkVideoResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateWorkVideoRespMultiError, or nil if none found. +func (m *UpdateWorkVideoResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateWorkVideoResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + if len(errors) > 0 { + return UpdateWorkVideoRespMultiError(errors) + } + + return nil +} + +// UpdateWorkVideoRespMultiError is an error wrapping multiple validation +// errors returned by UpdateWorkVideoResp.ValidateAll() if the designated +// constraints aren't met. +type UpdateWorkVideoRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateWorkVideoRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateWorkVideoRespMultiError) AllErrors() []error { return m } + +// UpdateWorkVideoRespValidationError is the validation error returned by +// UpdateWorkVideoResp.Validate if the designated constraints aren't met. +type UpdateWorkVideoRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateWorkVideoRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateWorkVideoRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateWorkVideoRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateWorkVideoRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateWorkVideoRespValidationError) ErrorName() string { + return "UpdateWorkVideoRespValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateWorkVideoRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateWorkVideoResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateWorkVideoRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateWorkVideoRespValidationError{} + +// Validate checks the field values on WorkListReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *WorkListReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WorkListReq with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WorkListReqMultiError, or +// nil if none found. +func (m *WorkListReq) ValidateAll() error { + return m.validate(true) +} + +func (m *WorkListReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ArtistVal + + // no validation rules for PlatformID + + // no validation rules for WorkCategory + + // no validation rules for SubmitStartTime + + // no validation rules for SubmitEndTime + + // no validation rules for StatusUpdateTimeStart + + // no validation rules for StatusUpdateTimeEnd + + // no validation rules for Title + + // no validation rules for WorkStatus + + // no validation rules for MediaAccountUuid + + // no validation rules for ManagerUserVal + + // no validation rules for Page + + // no validation rules for PageSize + + if len(errors) > 0 { + return WorkListReqMultiError(errors) + } + + return nil +} + +// WorkListReqMultiError is an error wrapping multiple validation errors +// returned by WorkListReq.ValidateAll() if the designated constraints aren't met. +type WorkListReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WorkListReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WorkListReqMultiError) AllErrors() []error { return m } + +// WorkListReqValidationError is the validation error returned by +// WorkListReq.Validate if the designated constraints aren't met. +type WorkListReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkListReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkListReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkListReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkListReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkListReqValidationError) ErrorName() string { return "WorkListReqValidationError" } + +// Error satisfies the builtin error interface +func (e WorkListReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWorkListReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkListReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkListReqValidationError{} + +// Validate checks the field values on WorkListResp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *WorkListResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WorkListResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WorkListRespMultiError, or +// nil if none found. +func (m *WorkListResp) ValidateAll() error { + return m.validate(true) +} + +func (m *WorkListResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetData() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WorkListRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WorkListRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkListRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for Count + + if len(errors) > 0 { + return WorkListRespMultiError(errors) + } + + return nil +} + +// WorkListRespMultiError is an error wrapping multiple validation errors +// returned by WorkListResp.ValidateAll() if the designated constraints aren't met. +type WorkListRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WorkListRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WorkListRespMultiError) AllErrors() []error { return m } + +// WorkListRespValidationError is the validation error returned by +// WorkListResp.Validate if the designated constraints aren't met. +type WorkListRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkListRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkListRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkListRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkListRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkListRespValidationError) ErrorName() string { return "WorkListRespValidationError" } + +// Error satisfies the builtin error interface +func (e WorkListRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWorkListResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkListRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkListRespValidationError{} + +// Validate checks the field values on WorkDetailReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *WorkDetailReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WorkDetailReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WorkDetailReqMultiError, or +// nil if none found. +func (m *WorkDetailReq) ValidateAll() error { + return m.validate(true) +} + +func (m *WorkDetailReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + if len(errors) > 0 { + return WorkDetailReqMultiError(errors) + } + + return nil +} + +// WorkDetailReqMultiError is an error wrapping multiple validation errors +// returned by WorkDetailReq.ValidateAll() if the designated constraints +// aren't met. +type WorkDetailReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WorkDetailReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WorkDetailReqMultiError) AllErrors() []error { return m } + +// WorkDetailReqValidationError is the validation error returned by +// WorkDetailReq.Validate if the designated constraints aren't met. +type WorkDetailReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkDetailReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkDetailReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkDetailReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkDetailReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkDetailReqValidationError) ErrorName() string { return "WorkDetailReqValidationError" } + +// Error satisfies the builtin error interface +func (e WorkDetailReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWorkDetailReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkDetailReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkDetailReqValidationError{} + +// Validate checks the field values on WorkLogInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *WorkLogInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WorkLogInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WorkLogInfoMultiError, or +// nil if none found. +func (m *WorkLogInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *WorkLogInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + // no validation rules for Title + + // no validation rules for Content + + // no validation rules for OperatorName + + // no validation rules for OperatorID + + // no validation rules for UpdateTime + + // no validation rules for ExtraData + + // no validation rules for WorkStatus + + if len(errors) > 0 { + return WorkLogInfoMultiError(errors) + } + + return nil +} + +// WorkLogInfoMultiError is an error wrapping multiple validation errors +// returned by WorkLogInfo.ValidateAll() if the designated constraints aren't met. +type WorkLogInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WorkLogInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WorkLogInfoMultiError) AllErrors() []error { return m } + +// WorkLogInfoValidationError is the validation error returned by +// WorkLogInfo.Validate if the designated constraints aren't met. +type WorkLogInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkLogInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkLogInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkLogInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkLogInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkLogInfoValidationError) ErrorName() string { return "WorkLogInfoValidationError" } + +// Error satisfies the builtin error interface +func (e WorkLogInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWorkLogInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkLogInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkLogInfoValidationError{} + +// Validate checks the field values on WorkDetailResp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *WorkDetailResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WorkDetailResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WorkDetailRespMultiError, +// or nil if none found. +func (m *WorkDetailResp) ValidateAll() error { + return m.validate(true) +} + +func (m *WorkDetailResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + // no validation rules for Title + + // no validation rules for Content + + // no validation rules for WorkStatus + + if all { + switch v := interface{}(m.GetPublishConfig1()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig1()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkDetailRespValidationError{ + field: "PublishConfig1", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetPublishConfig2()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig2()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkDetailRespValidationError{ + field: "PublishConfig2", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetPublishConfig3()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPublishConfig3()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkDetailRespValidationError{ + field: "PublishConfig3", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for VideoUrl + + // no validation rules for CoverUrl + + // no validation rules for ApprovalID + + for idx, item := range m.GetWorkLogData() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: fmt.Sprintf("WorkLogData[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: fmt.Sprintf("WorkLogData[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkDetailRespValidationError{ + field: fmt.Sprintf("WorkLogData[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for WorkCategory + + { + sorted_keys := make([]string, len(m.GetMediaAccData())) + i := 0 + for key := range m.GetMediaAccData() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetMediaAccData()[key] + _ = val + + // no validation rules for MediaAccData[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: fmt.Sprintf("MediaAccData[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WorkDetailRespValidationError{ + field: fmt.Sprintf("MediaAccData[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WorkDetailRespValidationError{ + field: fmt.Sprintf("MediaAccData[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + } + + if len(errors) > 0 { + return WorkDetailRespMultiError(errors) + } + + return nil +} + +// WorkDetailRespMultiError is an error wrapping multiple validation errors +// returned by WorkDetailResp.ValidateAll() if the designated constraints +// aren't met. +type WorkDetailRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WorkDetailRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WorkDetailRespMultiError) AllErrors() []error { return m } + +// WorkDetailRespValidationError is the validation error returned by +// WorkDetailResp.Validate if the designated constraints aren't met. +type WorkDetailRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkDetailRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkDetailRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkDetailRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkDetailRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkDetailRespValidationError) ErrorName() string { return "WorkDetailRespValidationError" } + +// Error satisfies the builtin error interface +func (e WorkDetailRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWorkDetailResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkDetailRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkDetailRespValidationError{} + +// Validate checks the field values on UpdateStatusReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *UpdateStatusReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateStatusReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateStatusReqMultiError, or nil if none found. +func (m *UpdateStatusReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateStatusReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkAction + + // no validation rules for WorkUuid + + // no validation rules for ApprovalID + + // no validation rules for ConfirmRemark + + // no validation rules for ConfirmStatus + + // no validation rules for ApprovalReply + + if len(errors) > 0 { + return UpdateStatusReqMultiError(errors) + } + + return nil +} + +// UpdateStatusReqMultiError is an error wrapping multiple validation errors +// returned by UpdateStatusReq.ValidateAll() if the designated constraints +// aren't met. +type UpdateStatusReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateStatusReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateStatusReqMultiError) AllErrors() []error { return m } + +// UpdateStatusReqValidationError is the validation error returned by +// UpdateStatusReq.Validate if the designated constraints aren't met. +type UpdateStatusReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateStatusReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateStatusReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateStatusReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateStatusReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateStatusReqValidationError) ErrorName() string { return "UpdateStatusReqValidationError" } + +// Error satisfies the builtin error interface +func (e UpdateStatusReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateStatusReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateStatusReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateStatusReqValidationError{} + +// Validate checks the field values on MediaAccountsReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *MediaAccountsReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaAccountsReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MediaAccountsReqMultiError, or nil if none found. +func (m *MediaAccountsReq) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaAccountsReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ArtistUuid + + if len(errors) > 0 { + return MediaAccountsReqMultiError(errors) + } + + return nil +} + +// MediaAccountsReqMultiError is an error wrapping multiple validation errors +// returned by MediaAccountsReq.ValidateAll() if the designated constraints +// aren't met. +type MediaAccountsReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaAccountsReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaAccountsReqMultiError) AllErrors() []error { return m } + +// MediaAccountsReqValidationError is the validation error returned by +// MediaAccountsReq.Validate if the designated constraints aren't met. +type MediaAccountsReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaAccountsReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaAccountsReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaAccountsReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaAccountsReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaAccountsReqValidationError) ErrorName() string { return "MediaAccountsReqValidationError" } + +// Error satisfies the builtin error interface +func (e MediaAccountsReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaAccountsReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaAccountsReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaAccountsReqValidationError{} + +// Validate checks the field values on MediaAccountsResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *MediaAccountsResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaAccountsResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MediaAccountsRespMultiError, or nil if none found. +func (m *MediaAccountsResp) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaAccountsResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetData() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MediaAccountsRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MediaAccountsRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MediaAccountsRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return MediaAccountsRespMultiError(errors) + } + + return nil +} + +// MediaAccountsRespMultiError is an error wrapping multiple validation errors +// returned by MediaAccountsResp.ValidateAll() if the designated constraints +// aren't met. +type MediaAccountsRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaAccountsRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaAccountsRespMultiError) AllErrors() []error { return m } + +// MediaAccountsRespValidationError is the validation error returned by +// MediaAccountsResp.Validate if the designated constraints aren't met. +type MediaAccountsRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaAccountsRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaAccountsRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaAccountsRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaAccountsRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaAccountsRespValidationError) ErrorName() string { + return "MediaAccountsRespValidationError" +} + +// Error satisfies the builtin error interface +func (e MediaAccountsRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaAccountsResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaAccountsRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaAccountsRespValidationError{} + +// Validate checks the field values on MediaWorksReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *MediaWorksReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaWorksReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in MediaWorksReqMultiError, or +// nil if none found. +func (m *MediaWorksReq) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaWorksReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for MediaAccountUuid + + // no validation rules for Page + + // no validation rules for PageSize + + if len(errors) > 0 { + return MediaWorksReqMultiError(errors) + } + + return nil +} + +// MediaWorksReqMultiError is an error wrapping multiple validation errors +// returned by MediaWorksReq.ValidateAll() if the designated constraints +// aren't met. +type MediaWorksReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaWorksReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaWorksReqMultiError) AllErrors() []error { return m } + +// MediaWorksReqValidationError is the validation error returned by +// MediaWorksReq.Validate if the designated constraints aren't met. +type MediaWorksReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaWorksReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaWorksReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaWorksReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaWorksReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaWorksReqValidationError) ErrorName() string { return "MediaWorksReqValidationError" } + +// Error satisfies the builtin error interface +func (e MediaWorksReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaWorksReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaWorksReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaWorksReqValidationError{} + +// Validate checks the field values on MediaWorksResp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *MediaWorksResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaWorksResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in MediaWorksRespMultiError, +// or nil if none found. +func (m *MediaWorksResp) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaWorksResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Count + + for idx, item := range m.GetData() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MediaWorksRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MediaWorksRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MediaWorksRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return MediaWorksRespMultiError(errors) + } + + return nil +} + +// MediaWorksRespMultiError is an error wrapping multiple validation errors +// returned by MediaWorksResp.ValidateAll() if the designated constraints +// aren't met. +type MediaWorksRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaWorksRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaWorksRespMultiError) AllErrors() []error { return m } + +// MediaWorksRespValidationError is the validation error returned by +// MediaWorksResp.Validate if the designated constraints aren't met. +type MediaWorksRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaWorksRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaWorksRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaWorksRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaWorksRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaWorksRespValidationError) ErrorName() string { return "MediaWorksRespValidationError" } + +// Error satisfies the builtin error interface +func (e MediaWorksRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaWorksResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaWorksRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaWorksRespValidationError{} + +// Validate checks the field values on RePublishReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *RePublishReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RePublishReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in RePublishReqMultiError, or +// nil if none found. +func (m *RePublishReq) ValidateAll() error { + return m.validate(true) +} + +func (m *RePublishReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + if len(errors) > 0 { + return RePublishReqMultiError(errors) + } + + return nil +} + +// RePublishReqMultiError is an error wrapping multiple validation errors +// returned by RePublishReq.ValidateAll() if the designated constraints aren't met. +type RePublishReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RePublishReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RePublishReqMultiError) AllErrors() []error { return m } + +// RePublishReqValidationError is the validation error returned by +// RePublishReq.Validate if the designated constraints aren't met. +type RePublishReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RePublishReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RePublishReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RePublishReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RePublishReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RePublishReqValidationError) ErrorName() string { return "RePublishReqValidationError" } + +// Error satisfies the builtin error interface +func (e RePublishReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRePublishReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RePublishReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RePublishReqValidationError{} + +// Validate checks the field values on RePublishResp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *RePublishResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RePublishResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in RePublishRespMultiError, or +// nil if none found. +func (m *RePublishResp) ValidateAll() error { + return m.validate(true) +} + +func (m *RePublishResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ArtistUuid + + // no validation rules for WorkCategory + + if len(errors) > 0 { + return RePublishRespMultiError(errors) + } + + return nil +} + +// RePublishRespMultiError is an error wrapping multiple validation errors +// returned by RePublishResp.ValidateAll() if the designated constraints +// aren't met. +type RePublishRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RePublishRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RePublishRespMultiError) AllErrors() []error { return m } + +// RePublishRespValidationError is the validation error returned by +// RePublishResp.Validate if the designated constraints aren't met. +type RePublishRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RePublishRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RePublishRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RePublishRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RePublishRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RePublishRespValidationError) ErrorName() string { return "RePublishRespValidationError" } + +// Error satisfies the builtin error interface +func (e RePublishRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRePublishResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RePublishRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RePublishRespValidationError{} + +// Validate checks the field values on DelWorkReq with the rules defined in the +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *DelWorkReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DelWorkReq with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in DelWorkReqMultiError, or +// nil if none found. +func (m *DelWorkReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DelWorkReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + if len(errors) > 0 { + return DelWorkReqMultiError(errors) + } + + return nil +} + +// DelWorkReqMultiError is an error wrapping multiple validation errors +// returned by DelWorkReq.ValidateAll() if the designated constraints aren't met. +type DelWorkReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DelWorkReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DelWorkReqMultiError) AllErrors() []error { return m } + +// DelWorkReqValidationError is the validation error returned by +// DelWorkReq.Validate if the designated constraints aren't met. +type DelWorkReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DelWorkReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DelWorkReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DelWorkReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DelWorkReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DelWorkReqValidationError) ErrorName() string { return "DelWorkReqValidationError" } + +// Error satisfies the builtin error interface +func (e DelWorkReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDelWorkReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DelWorkReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DelWorkReqValidationError{} + +// Validate checks the field values on WorkInfoReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *WorkInfoReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WorkInfoReq with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WorkInfoReqMultiError, or +// nil if none found. +func (m *WorkInfoReq) ValidateAll() error { + return m.validate(true) +} + +func (m *WorkInfoReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + if len(errors) > 0 { + return WorkInfoReqMultiError(errors) + } + + return nil +} + +// WorkInfoReqMultiError is an error wrapping multiple validation errors +// returned by WorkInfoReq.ValidateAll() if the designated constraints aren't met. +type WorkInfoReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WorkInfoReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WorkInfoReqMultiError) AllErrors() []error { return m } + +// WorkInfoReqValidationError is the validation error returned by +// WorkInfoReq.Validate if the designated constraints aren't met. +type WorkInfoReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkInfoReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkInfoReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkInfoReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkInfoReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkInfoReqValidationError) ErrorName() string { return "WorkInfoReqValidationError" } + +// Error satisfies the builtin error interface +func (e WorkInfoReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWorkInfoReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkInfoReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkInfoReqValidationError{} + +// Validate checks the field values on WorkInfoResp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *WorkInfoResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WorkInfoResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WorkInfoRespMultiError, or +// nil if none found. +func (m *WorkInfoResp) ValidateAll() error { + return m.validate(true) +} + +func (m *WorkInfoResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkStatus + + // no validation rules for ArtistUuid + + // no validation rules for ArtistName + + // no validation rules for ArtistPhone + + // no validation rules for ArtistPhoneAreaCode + + if len(errors) > 0 { + return WorkInfoRespMultiError(errors) + } + + return nil +} + +// WorkInfoRespMultiError is an error wrapping multiple validation errors +// returned by WorkInfoResp.ValidateAll() if the designated constraints aren't met. +type WorkInfoRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WorkInfoRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WorkInfoRespMultiError) AllErrors() []error { return m } + +// WorkInfoRespValidationError is the validation error returned by +// WorkInfoResp.Validate if the designated constraints aren't met. +type WorkInfoRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkInfoRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkInfoRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkInfoRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkInfoRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkInfoRespValidationError) ErrorName() string { return "WorkInfoRespValidationError" } + +// Error satisfies the builtin error interface +func (e WorkInfoRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWorkInfoResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkInfoRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkInfoRespValidationError{} + +// Validate checks the field values on OAuthYoutubeUrlReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *OAuthYoutubeUrlReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OAuthYoutubeUrlReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// OAuthYoutubeUrlReqMultiError, or nil if none found. +func (m *OAuthYoutubeUrlReq) ValidateAll() error { + return m.validate(true) +} + +func (m *OAuthYoutubeUrlReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for MediaAccountUuid + + if len(errors) > 0 { + return OAuthYoutubeUrlReqMultiError(errors) + } + + return nil +} + +// OAuthYoutubeUrlReqMultiError is an error wrapping multiple validation errors +// returned by OAuthYoutubeUrlReq.ValidateAll() if the designated constraints +// aren't met. +type OAuthYoutubeUrlReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OAuthYoutubeUrlReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OAuthYoutubeUrlReqMultiError) AllErrors() []error { return m } + +// OAuthYoutubeUrlReqValidationError is the validation error returned by +// OAuthYoutubeUrlReq.Validate if the designated constraints aren't met. +type OAuthYoutubeUrlReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e OAuthYoutubeUrlReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e OAuthYoutubeUrlReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e OAuthYoutubeUrlReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e OAuthYoutubeUrlReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e OAuthYoutubeUrlReqValidationError) ErrorName() string { + return "OAuthYoutubeUrlReqValidationError" +} + +// Error satisfies the builtin error interface +func (e OAuthYoutubeUrlReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sOAuthYoutubeUrlReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = OAuthYoutubeUrlReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = OAuthYoutubeUrlReqValidationError{} + +// Validate checks the field values on OAuthYoutubeUrlResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *OAuthYoutubeUrlResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OAuthYoutubeUrlResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// OAuthYoutubeUrlRespMultiError, or nil if none found. +func (m *OAuthYoutubeUrlResp) ValidateAll() error { + return m.validate(true) +} + +func (m *OAuthYoutubeUrlResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Url + + if len(errors) > 0 { + return OAuthYoutubeUrlRespMultiError(errors) + } + + return nil +} + +// OAuthYoutubeUrlRespMultiError is an error wrapping multiple validation +// errors returned by OAuthYoutubeUrlResp.ValidateAll() if the designated +// constraints aren't met. +type OAuthYoutubeUrlRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OAuthYoutubeUrlRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OAuthYoutubeUrlRespMultiError) AllErrors() []error { return m } + +// OAuthYoutubeUrlRespValidationError is the validation error returned by +// OAuthYoutubeUrlResp.Validate if the designated constraints aren't met. +type OAuthYoutubeUrlRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e OAuthYoutubeUrlRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e OAuthYoutubeUrlRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e OAuthYoutubeUrlRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e OAuthYoutubeUrlRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e OAuthYoutubeUrlRespValidationError) ErrorName() string { + return "OAuthYoutubeUrlRespValidationError" +} + +// Error satisfies the builtin error interface +func (e OAuthYoutubeUrlRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sOAuthYoutubeUrlResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = OAuthYoutubeUrlRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = OAuthYoutubeUrlRespValidationError{} + +// Validate checks the field values on OAuthYoutubeTokenReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *OAuthYoutubeTokenReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OAuthYoutubeTokenReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// OAuthYoutubeTokenReqMultiError, or nil if none found. +func (m *OAuthYoutubeTokenReq) ValidateAll() error { + return m.validate(true) +} + +func (m *OAuthYoutubeTokenReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for MediaAccountUuid + + // no validation rules for Code + + if len(errors) > 0 { + return OAuthYoutubeTokenReqMultiError(errors) + } + + return nil +} + +// OAuthYoutubeTokenReqMultiError is an error wrapping multiple validation +// errors returned by OAuthYoutubeTokenReq.ValidateAll() if the designated +// constraints aren't met. +type OAuthYoutubeTokenReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OAuthYoutubeTokenReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OAuthYoutubeTokenReqMultiError) AllErrors() []error { return m } + +// OAuthYoutubeTokenReqValidationError is the validation error returned by +// OAuthYoutubeTokenReq.Validate if the designated constraints aren't met. +type OAuthYoutubeTokenReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e OAuthYoutubeTokenReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e OAuthYoutubeTokenReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e OAuthYoutubeTokenReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e OAuthYoutubeTokenReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e OAuthYoutubeTokenReqValidationError) ErrorName() string { + return "OAuthYoutubeTokenReqValidationError" +} + +// Error satisfies the builtin error interface +func (e OAuthYoutubeTokenReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sOAuthYoutubeTokenReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = OAuthYoutubeTokenReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = OAuthYoutubeTokenReqValidationError{} + +// Validate checks the field values on OAuthYoutubeTokenResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *OAuthYoutubeTokenResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OAuthYoutubeTokenResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// OAuthYoutubeTokenRespMultiError, or nil if none found. +func (m *OAuthYoutubeTokenResp) ValidateAll() error { + return m.validate(true) +} + +func (m *OAuthYoutubeTokenResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for AccessToken + + // no validation rules for RefreshToken + + // no validation rules for ExpireTime + + if len(errors) > 0 { + return OAuthYoutubeTokenRespMultiError(errors) + } + + return nil +} + +// OAuthYoutubeTokenRespMultiError is an error wrapping multiple validation +// errors returned by OAuthYoutubeTokenResp.ValidateAll() if the designated +// constraints aren't met. +type OAuthYoutubeTokenRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OAuthYoutubeTokenRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OAuthYoutubeTokenRespMultiError) AllErrors() []error { return m } + +// OAuthYoutubeTokenRespValidationError is the validation error returned by +// OAuthYoutubeTokenResp.Validate if the designated constraints aren't met. +type OAuthYoutubeTokenRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e OAuthYoutubeTokenRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e OAuthYoutubeTokenRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e OAuthYoutubeTokenRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e OAuthYoutubeTokenRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e OAuthYoutubeTokenRespValidationError) ErrorName() string { + return "OAuthYoutubeTokenRespValidationError" +} + +// Error satisfies the builtin error interface +func (e OAuthYoutubeTokenRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sOAuthYoutubeTokenResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = OAuthYoutubeTokenRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = OAuthYoutubeTokenRespValidationError{} + +// Validate checks the field values on WorkListResp_Info with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *WorkListResp_Info) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WorkListResp_Info with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// WorkListResp_InfoMultiError, or nil if none found. +func (m *WorkListResp_Info) ValidateAll() error { + return m.validate(true) +} + +func (m *WorkListResp_Info) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + // no validation rules for ArtistName + + // no validation rules for ArtistPhone + + // no validation rules for Title + + // no validation rules for WorkCategory + + // no validation rules for WorkStatus + + // no validation rules for SubmitTime + + // no validation rules for StatusUpdateTime + + // no validation rules for ApprovalID + + if len(errors) > 0 { + return WorkListResp_InfoMultiError(errors) + } + + return nil +} + +// WorkListResp_InfoMultiError is an error wrapping multiple validation errors +// returned by WorkListResp_Info.ValidateAll() if the designated constraints +// aren't met. +type WorkListResp_InfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WorkListResp_InfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WorkListResp_InfoMultiError) AllErrors() []error { return m } + +// WorkListResp_InfoValidationError is the validation error returned by +// WorkListResp_Info.Validate if the designated constraints aren't met. +type WorkListResp_InfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WorkListResp_InfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WorkListResp_InfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WorkListResp_InfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WorkListResp_InfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WorkListResp_InfoValidationError) ErrorName() string { + return "WorkListResp_InfoValidationError" +} + +// Error satisfies the builtin error interface +func (e WorkListResp_InfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWorkListResp_Info.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WorkListResp_InfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WorkListResp_InfoValidationError{} + +// Validate checks the field values on MediaAccountsResp_Info with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *MediaAccountsResp_Info) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaAccountsResp_Info with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MediaAccountsResp_InfoMultiError, or nil if none found. +func (m *MediaAccountsResp_Info) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaAccountsResp_Info) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PlatformID + + // no validation rules for FansCount + + // no validation rules for WorkCount + + // no validation rules for ArtistUuid + + // no validation rules for MediaAccountUuid + + // no validation rules for MediaAccountName + + if len(errors) > 0 { + return MediaAccountsResp_InfoMultiError(errors) + } + + return nil +} + +// MediaAccountsResp_InfoMultiError is an error wrapping multiple validation +// errors returned by MediaAccountsResp_Info.ValidateAll() if the designated +// constraints aren't met. +type MediaAccountsResp_InfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaAccountsResp_InfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaAccountsResp_InfoMultiError) AllErrors() []error { return m } + +// MediaAccountsResp_InfoValidationError is the validation error returned by +// MediaAccountsResp_Info.Validate if the designated constraints aren't met. +type MediaAccountsResp_InfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaAccountsResp_InfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaAccountsResp_InfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaAccountsResp_InfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaAccountsResp_InfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaAccountsResp_InfoValidationError) ErrorName() string { + return "MediaAccountsResp_InfoValidationError" +} + +// Error satisfies the builtin error interface +func (e MediaAccountsResp_InfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaAccountsResp_Info.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaAccountsResp_InfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaAccountsResp_InfoValidationError{} + +// Validate checks the field values on MediaWorksResp_Info with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *MediaWorksResp_Info) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MediaWorksResp_Info with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MediaWorksResp_InfoMultiError, or nil if none found. +func (m *MediaWorksResp_Info) ValidateAll() error { + return m.validate(true) +} + +func (m *MediaWorksResp_Info) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkUuid + + // no validation rules for Title + + // no validation rules for Content + + // no validation rules for WorkCategory + + // no validation rules for WorkStatus + + // no validation rules for SubmitTime + + // no validation rules for StatusUpdateTime + + // no validation rules for VideoUrl + + // no validation rules for CoverUrl + + if len(errors) > 0 { + return MediaWorksResp_InfoMultiError(errors) + } + + return nil +} + +// MediaWorksResp_InfoMultiError is an error wrapping multiple validation +// errors returned by MediaWorksResp_Info.ValidateAll() if the designated +// constraints aren't met. +type MediaWorksResp_InfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MediaWorksResp_InfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MediaWorksResp_InfoMultiError) AllErrors() []error { return m } + +// MediaWorksResp_InfoValidationError is the validation error returned by +// MediaWorksResp_Info.Validate if the designated constraints aren't met. +type MediaWorksResp_InfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MediaWorksResp_InfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MediaWorksResp_InfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MediaWorksResp_InfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MediaWorksResp_InfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MediaWorksResp_InfoValidationError) ErrorName() string { + return "MediaWorksResp_InfoValidationError" +} + +// Error satisfies the builtin error interface +func (e MediaWorksResp_InfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMediaWorksResp_Info.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MediaWorksResp_InfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MediaWorksResp_InfoValidationError{} diff --git a/api/cast/cast_triple.pb.go b/api/cast/cast_triple.pb.go new file mode 100644 index 0000000..0f798ff --- /dev/null +++ b/api/cast/cast_triple.pb.go @@ -0,0 +1,823 @@ +// Code generated by protoc-gen-go-triple. DO NOT EDIT. +// versions: +// - protoc-gen-go-triple v1.0.8 +// - protoc v3.21.1 +// source: pb/fiee/cast.proto + +package cast + +import ( + context "context" + protocol "dubbo.apache.org/dubbo-go/v3/protocol" + dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3" + invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation" + grpc_go "github.com/dubbogo/grpc-go" + codes "github.com/dubbogo/grpc-go/codes" + metadata "github.com/dubbogo/grpc-go/metadata" + status "github.com/dubbogo/grpc-go/status" + common "github.com/dubbogo/triple/pkg/common" + constant "github.com/dubbogo/triple/pkg/common/constant" + triple "github.com/dubbogo/triple/pkg/triple" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc_go.SupportPackageIsVersion7 + +// CastClient is the client API for Cast service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type CastClient interface { + MediaUserList(ctx context.Context, in *MediaUserListReq, opts ...grpc_go.CallOption) (*MediaUserListResp, common.ErrorWithAttachment) + UpdateMediaAccount(ctx context.Context, in *UpdateMediaAccountReq, opts ...grpc_go.CallOption) (*UpdateMediaAccountResp, common.ErrorWithAttachment) + UnbindManager(ctx context.Context, in *UnbindManagerReq, opts ...grpc_go.CallOption) (*UnbindManagerResp, common.ErrorWithAttachment) + BindManager(ctx context.Context, in *BindManagerReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) + UpdateWorkImage(ctx context.Context, in *UpdateWorkImageReq, opts ...grpc_go.CallOption) (*UpdateWorkImageResp, common.ErrorWithAttachment) + UpdateWorkVideo(ctx context.Context, in *UpdateWorkVideoReq, opts ...grpc_go.CallOption) (*UpdateWorkVideoResp, common.ErrorWithAttachment) + WorkList(ctx context.Context, in *WorkListReq, opts ...grpc_go.CallOption) (*WorkListResp, common.ErrorWithAttachment) + WorkDetail(ctx context.Context, in *WorkDetailReq, opts ...grpc_go.CallOption) (*WorkDetailResp, common.ErrorWithAttachment) + UpdateStatus(ctx context.Context, in *UpdateStatusReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) + MediaAccounts(ctx context.Context, in *MediaAccountsReq, opts ...grpc_go.CallOption) (*MediaAccountsResp, common.ErrorWithAttachment) + MediaWorks(ctx context.Context, in *MediaWorksReq, opts ...grpc_go.CallOption) (*MediaWorksResp, common.ErrorWithAttachment) + RePublish(ctx context.Context, in *RePublishReq, opts ...grpc_go.CallOption) (*RePublishResp, common.ErrorWithAttachment) + DelWork(ctx context.Context, in *DelWorkReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) + WorkInfo(ctx context.Context, in *WorkInfoReq, opts ...grpc_go.CallOption) (*WorkInfoResp, common.ErrorWithAttachment) + OAuthYoutubeUrl(ctx context.Context, in *OAuthYoutubeUrlReq, opts ...grpc_go.CallOption) (*OAuthYoutubeUrlResp, common.ErrorWithAttachment) + OAuthYoutubeToken(ctx context.Context, in *OAuthYoutubeTokenReq, opts ...grpc_go.CallOption) (*OAuthYoutubeTokenResp, common.ErrorWithAttachment) +} + +type castClient struct { + cc *triple.TripleConn +} + +type CastClientImpl struct { + MediaUserList func(ctx context.Context, in *MediaUserListReq) (*MediaUserListResp, error) + UpdateMediaAccount func(ctx context.Context, in *UpdateMediaAccountReq) (*UpdateMediaAccountResp, error) + UnbindManager func(ctx context.Context, in *UnbindManagerReq) (*UnbindManagerResp, error) + BindManager func(ctx context.Context, in *BindManagerReq) (*emptypb.Empty, error) + UpdateWorkImage func(ctx context.Context, in *UpdateWorkImageReq) (*UpdateWorkImageResp, error) + UpdateWorkVideo func(ctx context.Context, in *UpdateWorkVideoReq) (*UpdateWorkVideoResp, error) + WorkList func(ctx context.Context, in *WorkListReq) (*WorkListResp, error) + WorkDetail func(ctx context.Context, in *WorkDetailReq) (*WorkDetailResp, error) + UpdateStatus func(ctx context.Context, in *UpdateStatusReq) (*emptypb.Empty, error) + MediaAccounts func(ctx context.Context, in *MediaAccountsReq) (*MediaAccountsResp, error) + MediaWorks func(ctx context.Context, in *MediaWorksReq) (*MediaWorksResp, error) + RePublish func(ctx context.Context, in *RePublishReq) (*RePublishResp, error) + DelWork func(ctx context.Context, in *DelWorkReq) (*emptypb.Empty, error) + WorkInfo func(ctx context.Context, in *WorkInfoReq) (*WorkInfoResp, error) + OAuthYoutubeUrl func(ctx context.Context, in *OAuthYoutubeUrlReq) (*OAuthYoutubeUrlResp, error) + OAuthYoutubeToken func(ctx context.Context, in *OAuthYoutubeTokenReq) (*OAuthYoutubeTokenResp, error) +} + +func (c *CastClientImpl) GetDubboStub(cc *triple.TripleConn) CastClient { + return NewCastClient(cc) +} + +func (c *CastClientImpl) XXX_InterfaceName() string { + return "Cast.Cast" +} + +func NewCastClient(cc *triple.TripleConn) CastClient { + return &castClient{cc} +} + +func (c *castClient) MediaUserList(ctx context.Context, in *MediaUserListReq, opts ...grpc_go.CallOption) (*MediaUserListResp, common.ErrorWithAttachment) { + out := new(MediaUserListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/MediaUserList", in, out) +} + +func (c *castClient) UpdateMediaAccount(ctx context.Context, in *UpdateMediaAccountReq, opts ...grpc_go.CallOption) (*UpdateMediaAccountResp, common.ErrorWithAttachment) { + out := new(UpdateMediaAccountResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateMediaAccount", in, out) +} + +func (c *castClient) UnbindManager(ctx context.Context, in *UnbindManagerReq, opts ...grpc_go.CallOption) (*UnbindManagerResp, common.ErrorWithAttachment) { + out := new(UnbindManagerResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UnbindManager", in, out) +} + +func (c *castClient) BindManager(ctx context.Context, in *BindManagerReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) { + out := new(emptypb.Empty) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BindManager", in, out) +} + +func (c *castClient) UpdateWorkImage(ctx context.Context, in *UpdateWorkImageReq, opts ...grpc_go.CallOption) (*UpdateWorkImageResp, common.ErrorWithAttachment) { + out := new(UpdateWorkImageResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateWorkImage", in, out) +} + +func (c *castClient) UpdateWorkVideo(ctx context.Context, in *UpdateWorkVideoReq, opts ...grpc_go.CallOption) (*UpdateWorkVideoResp, common.ErrorWithAttachment) { + out := new(UpdateWorkVideoResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateWorkVideo", in, out) +} + +func (c *castClient) WorkList(ctx context.Context, in *WorkListReq, opts ...grpc_go.CallOption) (*WorkListResp, common.ErrorWithAttachment) { + out := new(WorkListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/WorkList", in, out) +} + +func (c *castClient) WorkDetail(ctx context.Context, in *WorkDetailReq, opts ...grpc_go.CallOption) (*WorkDetailResp, common.ErrorWithAttachment) { + out := new(WorkDetailResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/WorkDetail", in, out) +} + +func (c *castClient) UpdateStatus(ctx context.Context, in *UpdateStatusReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) { + out := new(emptypb.Empty) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateStatus", in, out) +} + +func (c *castClient) MediaAccounts(ctx context.Context, in *MediaAccountsReq, opts ...grpc_go.CallOption) (*MediaAccountsResp, common.ErrorWithAttachment) { + out := new(MediaAccountsResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/MediaAccounts", in, out) +} + +func (c *castClient) MediaWorks(ctx context.Context, in *MediaWorksReq, opts ...grpc_go.CallOption) (*MediaWorksResp, common.ErrorWithAttachment) { + out := new(MediaWorksResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/MediaWorks", in, out) +} + +func (c *castClient) RePublish(ctx context.Context, in *RePublishReq, opts ...grpc_go.CallOption) (*RePublishResp, common.ErrorWithAttachment) { + out := new(RePublishResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/RePublish", in, out) +} + +func (c *castClient) DelWork(ctx context.Context, in *DelWorkReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) { + out := new(emptypb.Empty) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DelWork", in, out) +} + +func (c *castClient) WorkInfo(ctx context.Context, in *WorkInfoReq, opts ...grpc_go.CallOption) (*WorkInfoResp, common.ErrorWithAttachment) { + out := new(WorkInfoResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/WorkInfo", in, out) +} + +func (c *castClient) OAuthYoutubeUrl(ctx context.Context, in *OAuthYoutubeUrlReq, opts ...grpc_go.CallOption) (*OAuthYoutubeUrlResp, common.ErrorWithAttachment) { + out := new(OAuthYoutubeUrlResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OAuthYoutubeUrl", in, out) +} + +func (c *castClient) OAuthYoutubeToken(ctx context.Context, in *OAuthYoutubeTokenReq, opts ...grpc_go.CallOption) (*OAuthYoutubeTokenResp, common.ErrorWithAttachment) { + out := new(OAuthYoutubeTokenResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/OAuthYoutubeToken", in, out) +} + +// CastServer is the server API for Cast service. +// All implementations must embed UnimplementedCastServer +// for forward compatibility +type CastServer interface { + MediaUserList(context.Context, *MediaUserListReq) (*MediaUserListResp, error) + UpdateMediaAccount(context.Context, *UpdateMediaAccountReq) (*UpdateMediaAccountResp, error) + UnbindManager(context.Context, *UnbindManagerReq) (*UnbindManagerResp, error) + BindManager(context.Context, *BindManagerReq) (*emptypb.Empty, error) + UpdateWorkImage(context.Context, *UpdateWorkImageReq) (*UpdateWorkImageResp, error) + UpdateWorkVideo(context.Context, *UpdateWorkVideoReq) (*UpdateWorkVideoResp, error) + WorkList(context.Context, *WorkListReq) (*WorkListResp, error) + WorkDetail(context.Context, *WorkDetailReq) (*WorkDetailResp, error) + UpdateStatus(context.Context, *UpdateStatusReq) (*emptypb.Empty, error) + MediaAccounts(context.Context, *MediaAccountsReq) (*MediaAccountsResp, error) + MediaWorks(context.Context, *MediaWorksReq) (*MediaWorksResp, error) + RePublish(context.Context, *RePublishReq) (*RePublishResp, error) + DelWork(context.Context, *DelWorkReq) (*emptypb.Empty, error) + WorkInfo(context.Context, *WorkInfoReq) (*WorkInfoResp, error) + OAuthYoutubeUrl(context.Context, *OAuthYoutubeUrlReq) (*OAuthYoutubeUrlResp, error) + OAuthYoutubeToken(context.Context, *OAuthYoutubeTokenReq) (*OAuthYoutubeTokenResp, error) + mustEmbedUnimplementedCastServer() +} + +// UnimplementedCastServer must be embedded to have forward compatible implementations. +type UnimplementedCastServer struct { + proxyImpl protocol.Invoker +} + +func (UnimplementedCastServer) MediaUserList(context.Context, *MediaUserListReq) (*MediaUserListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method MediaUserList not implemented") +} +func (UnimplementedCastServer) UpdateMediaAccount(context.Context, *UpdateMediaAccountReq) (*UpdateMediaAccountResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateMediaAccount not implemented") +} +func (UnimplementedCastServer) UnbindManager(context.Context, *UnbindManagerReq) (*UnbindManagerResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnbindManager not implemented") +} +func (UnimplementedCastServer) BindManager(context.Context, *BindManagerReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method BindManager not implemented") +} +func (UnimplementedCastServer) UpdateWorkImage(context.Context, *UpdateWorkImageReq) (*UpdateWorkImageResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateWorkImage not implemented") +} +func (UnimplementedCastServer) UpdateWorkVideo(context.Context, *UpdateWorkVideoReq) (*UpdateWorkVideoResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateWorkVideo not implemented") +} +func (UnimplementedCastServer) WorkList(context.Context, *WorkListReq) (*WorkListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method WorkList not implemented") +} +func (UnimplementedCastServer) WorkDetail(context.Context, *WorkDetailReq) (*WorkDetailResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method WorkDetail not implemented") +} +func (UnimplementedCastServer) UpdateStatus(context.Context, *UpdateStatusReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateStatus not implemented") +} +func (UnimplementedCastServer) MediaAccounts(context.Context, *MediaAccountsReq) (*MediaAccountsResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method MediaAccounts not implemented") +} +func (UnimplementedCastServer) MediaWorks(context.Context, *MediaWorksReq) (*MediaWorksResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method MediaWorks not implemented") +} +func (UnimplementedCastServer) RePublish(context.Context, *RePublishReq) (*RePublishResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method RePublish not implemented") +} +func (UnimplementedCastServer) DelWork(context.Context, *DelWorkReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelWork not implemented") +} +func (UnimplementedCastServer) WorkInfo(context.Context, *WorkInfoReq) (*WorkInfoResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method WorkInfo not implemented") +} +func (UnimplementedCastServer) OAuthYoutubeUrl(context.Context, *OAuthYoutubeUrlReq) (*OAuthYoutubeUrlResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method OAuthYoutubeUrl not implemented") +} +func (UnimplementedCastServer) OAuthYoutubeToken(context.Context, *OAuthYoutubeTokenReq) (*OAuthYoutubeTokenResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method OAuthYoutubeToken not implemented") +} +func (s *UnimplementedCastServer) XXX_SetProxyImpl(impl protocol.Invoker) { + s.proxyImpl = impl +} + +func (s *UnimplementedCastServer) XXX_GetProxyImpl() protocol.Invoker { + return s.proxyImpl +} + +func (s *UnimplementedCastServer) XXX_ServiceDesc() *grpc_go.ServiceDesc { + return &Cast_ServiceDesc +} +func (s *UnimplementedCastServer) XXX_InterfaceName() string { + return "Cast.Cast" +} + +func (UnimplementedCastServer) mustEmbedUnimplementedCastServer() {} + +// UnsafeCastServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to CastServer will +// result in compilation errors. +type UnsafeCastServer interface { + mustEmbedUnimplementedCastServer() +} + +func RegisterCastServer(s grpc_go.ServiceRegistrar, srv CastServer) { + s.RegisterService(&Cast_ServiceDesc, srv) +} + +func _Cast_MediaUserList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(MediaUserListReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("MediaUserList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_UpdateMediaAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateMediaAccountReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateMediaAccount", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_UnbindManager_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UnbindManagerReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UnbindManager", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_BindManager_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(BindManagerReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("BindManager", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_UpdateWorkImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateWorkImageReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateWorkImage", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_UpdateWorkVideo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateWorkVideoReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateWorkVideo", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_WorkList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(WorkListReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("WorkList", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_WorkDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(WorkDetailReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("WorkDetail", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_UpdateStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateStatusReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateStatus", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_MediaAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(MediaAccountsReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("MediaAccounts", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_MediaWorks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(MediaWorksReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("MediaWorks", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_RePublish_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(RePublishReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("RePublish", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_DelWork_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DelWorkReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DelWork", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_WorkInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(WorkInfoReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("WorkInfo", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_OAuthYoutubeUrl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(OAuthYoutubeUrlReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("OAuthYoutubeUrl", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_OAuthYoutubeToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(OAuthYoutubeTokenReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("OAuthYoutubeToken", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +// Cast_ServiceDesc is the grpc_go.ServiceDesc for Cast service. +// It's only intended for direct use with grpc_go.RegisterService, +// and not to be introspected or modified (even as a copy) +var Cast_ServiceDesc = grpc_go.ServiceDesc{ + ServiceName: "Cast.Cast", + HandlerType: (*CastServer)(nil), + Methods: []grpc_go.MethodDesc{ + { + MethodName: "MediaUserList", + Handler: _Cast_MediaUserList_Handler, + }, + { + MethodName: "UpdateMediaAccount", + Handler: _Cast_UpdateMediaAccount_Handler, + }, + { + MethodName: "UnbindManager", + Handler: _Cast_UnbindManager_Handler, + }, + { + MethodName: "BindManager", + Handler: _Cast_BindManager_Handler, + }, + { + MethodName: "UpdateWorkImage", + Handler: _Cast_UpdateWorkImage_Handler, + }, + { + MethodName: "UpdateWorkVideo", + Handler: _Cast_UpdateWorkVideo_Handler, + }, + { + MethodName: "WorkList", + Handler: _Cast_WorkList_Handler, + }, + { + MethodName: "WorkDetail", + Handler: _Cast_WorkDetail_Handler, + }, + { + MethodName: "UpdateStatus", + Handler: _Cast_UpdateStatus_Handler, + }, + { + MethodName: "MediaAccounts", + Handler: _Cast_MediaAccounts_Handler, + }, + { + MethodName: "MediaWorks", + Handler: _Cast_MediaWorks_Handler, + }, + { + MethodName: "RePublish", + Handler: _Cast_RePublish_Handler, + }, + { + MethodName: "DelWork", + Handler: _Cast_DelWork_Handler, + }, + { + MethodName: "WorkInfo", + Handler: _Cast_WorkInfo_Handler, + }, + { + MethodName: "OAuthYoutubeUrl", + Handler: _Cast_OAuthYoutubeUrl_Handler, + }, + { + MethodName: "OAuthYoutubeToken", + Handler: _Cast_OAuthYoutubeToken_Handler, + }, + }, + Streams: []grpc_go.StreamDesc{}, + Metadata: "pb/fiee/cast.proto", +} diff --git a/api/files/files.pb.go b/api/files/files.pb.go new file mode 100644 index 0000000..83e47fb --- /dev/null +++ b/api/files/files.pb.go @@ -0,0 +1,2583 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 +// source: files.proto + +package files + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type FileListReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // 目标文件夹路径 + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` // 用户空间的路径 + Sorting *Sorting `protobuf:"bytes,3,opt,name=sorting,proto3" json:"sorting,omitempty"` +} + +func (x *FileListReq) Reset() { + *x = FileListReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileListReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileListReq) ProtoMessage() {} + +func (x *FileListReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileListReq.ProtoReflect.Descriptor instead. +func (*FileListReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{0} +} + +func (x *FileListReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *FileListReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *FileListReq) GetSorting() *Sorting { + if x != nil { + return x.Sorting + } + return nil +} + +type Items struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` + Extension string `protobuf:"bytes,4,opt,name=extension,proto3" json:"extension,omitempty"` + Modified string `protobuf:"bytes,5,opt,name=modified,proto3" json:"modified,omitempty"` + ModTime int64 `protobuf:"varint,6,opt,name=modTime,proto3" json:"modTime,omitempty"` + Mode string `protobuf:"bytes,7,opt,name=mode,proto3" json:"mode,omitempty"` + IsDir bool `protobuf:"varint,8,opt,name=isDir,proto3" json:"isDir,omitempty"` + IsSymlink bool `protobuf:"varint,9,opt,name=isSymlink,proto3" json:"isSymlink,omitempty"` + Type string `protobuf:"bytes,10,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *Items) Reset() { + *x = Items{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Items) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Items) ProtoMessage() {} + +func (x *Items) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Items.ProtoReflect.Descriptor instead. +func (*Items) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{1} +} + +func (x *Items) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *Items) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Items) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *Items) GetExtension() string { + if x != nil { + return x.Extension + } + return "" +} + +func (x *Items) GetModified() string { + if x != nil { + return x.Modified + } + return "" +} + +func (x *Items) GetModTime() int64 { + if x != nil { + return x.ModTime + } + return 0 +} + +func (x *Items) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +func (x *Items) GetIsDir() bool { + if x != nil { + return x.IsDir + } + return false +} + +func (x *Items) GetIsSymlink() bool { + if x != nil { + return x.IsSymlink + } + return false +} + +func (x *Items) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +type Sorting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + By string `protobuf:"bytes,1,opt,name=by,proto3" json:"by,omitempty"` + Asc bool `protobuf:"varint,2,opt,name=asc,proto3" json:"asc,omitempty"` +} + +func (x *Sorting) Reset() { + *x = Sorting{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Sorting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Sorting) ProtoMessage() {} + +func (x *Sorting) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Sorting.ProtoReflect.Descriptor instead. +func (*Sorting) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{2} +} + +func (x *Sorting) GetBy() string { + if x != nil { + return x.By + } + return "" +} + +func (x *Sorting) GetAsc() bool { + if x != nil { + return x.Asc + } + return false +} + +type FileListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Items []*Items `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + NumDirs int32 `protobuf:"varint,2,opt,name=numDirs,proto3" json:"numDirs,omitempty"` + NumFiles int32 `protobuf:"varint,3,opt,name=numFiles,proto3" json:"numFiles,omitempty"` + Sorting *Sorting `protobuf:"bytes,4,opt,name=sorting,proto3" json:"sorting,omitempty"` + Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Size int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size,omitempty"` + Extension string `protobuf:"bytes,8,opt,name=extension,proto3" json:"extension,omitempty"` + Modified string `protobuf:"bytes,9,opt,name=modified,proto3" json:"modified,omitempty"` + ModTime int64 `protobuf:"varint,10,opt,name=modTime,proto3" json:"modTime,omitempty"` + Mode string `protobuf:"bytes,11,opt,name=mode,proto3" json:"mode,omitempty"` + IsDir bool `protobuf:"varint,12,opt,name=isDir,proto3" json:"isDir,omitempty"` + IsSymlink bool `protobuf:"varint,13,opt,name=isSymlink,proto3" json:"isSymlink,omitempty"` + Type string `protobuf:"bytes,14,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *FileListResp) Reset() { + *x = FileListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileListResp) ProtoMessage() {} + +func (x *FileListResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileListResp.ProtoReflect.Descriptor instead. +func (*FileListResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{3} +} + +func (x *FileListResp) GetItems() []*Items { + if x != nil { + return x.Items + } + return nil +} + +func (x *FileListResp) GetNumDirs() int32 { + if x != nil { + return x.NumDirs + } + return 0 +} + +func (x *FileListResp) GetNumFiles() int32 { + if x != nil { + return x.NumFiles + } + return 0 +} + +func (x *FileListResp) GetSorting() *Sorting { + if x != nil { + return x.Sorting + } + return nil +} + +func (x *FileListResp) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *FileListResp) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FileListResp) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *FileListResp) GetExtension() string { + if x != nil { + return x.Extension + } + return "" +} + +func (x *FileListResp) GetModified() string { + if x != nil { + return x.Modified + } + return "" +} + +func (x *FileListResp) GetModTime() int64 { + if x != nil { + return x.ModTime + } + return 0 +} + +func (x *FileListResp) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +func (x *FileListResp) GetIsDir() bool { + if x != nil { + return x.IsDir + } + return false +} + +func (x *FileListResp) GetIsSymlink() bool { + if x != nil { + return x.IsSymlink + } + return false +} + +func (x *FileListResp) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +type CreateReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` +} + +func (x *CreateReq) Reset() { + *x = CreateReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateReq) ProtoMessage() {} + +func (x *CreateReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateReq.ProtoReflect.Descriptor instead. +func (*CreateReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{4} +} + +func (x *CreateReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *CreateReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +type CreateResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CreateResp) Reset() { + *x = CreateResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateResp) ProtoMessage() {} + +func (x *CreateResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateResp.ProtoReflect.Descriptor instead. +func (*CreateResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{5} +} + +type DeleteReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` +} + +func (x *DeleteReq) Reset() { + *x = DeleteReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteReq) ProtoMessage() {} + +func (x *DeleteReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteReq.ProtoReflect.Descriptor instead. +func (*DeleteReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{6} +} + +func (x *DeleteReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *DeleteReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +type DeleteResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteResp) Reset() { + *x = DeleteResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResp) ProtoMessage() {} + +func (x *DeleteResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteResp.ProtoReflect.Descriptor instead. +func (*DeleteResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{7} +} + +type UploadReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` + Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` +} + +func (x *UploadReq) Reset() { + *x = UploadReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadReq) ProtoMessage() {} + +func (x *UploadReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UploadReq.ProtoReflect.Descriptor instead. +func (*UploadReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{8} +} + +func (x *UploadReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *UploadReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *UploadReq) GetContent() []byte { + if x != nil { + return x.Content + } + return nil +} + +type UploadResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *UploadResp) Reset() { + *x = UploadResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UploadResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadResp) ProtoMessage() {} + +func (x *UploadResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UploadResp.ProtoReflect.Descriptor instead. +func (*UploadResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{9} +} + +type SearchReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` + Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` +} + +func (x *SearchReq) Reset() { + *x = SearchReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchReq) ProtoMessage() {} + +func (x *SearchReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchReq.ProtoReflect.Descriptor instead. +func (*SearchReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{10} +} + +func (x *SearchReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *SearchReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *SearchReq) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +type SearchResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Items []*SearchResp_Nested `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` +} + +func (x *SearchResp) Reset() { + *x = SearchResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResp) ProtoMessage() {} + +func (x *SearchResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchResp.ProtoReflect.Descriptor instead. +func (*SearchResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{11} +} + +func (x *SearchResp) GetItems() []*SearchResp_Nested { + if x != nil { + return x.Items + } + return nil +} + +type TusCreateReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` + Override bool `protobuf:"varint,3,opt,name=override,proto3" json:"override,omitempty"` +} + +func (x *TusCreateReq) Reset() { + *x = TusCreateReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TusCreateReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TusCreateReq) ProtoMessage() {} + +func (x *TusCreateReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TusCreateReq.ProtoReflect.Descriptor instead. +func (*TusCreateReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{12} +} + +func (x *TusCreateReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *TusCreateReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *TusCreateReq) GetOverride() bool { + if x != nil { + return x.Override + } + return false +} + +type TusCreateResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UploadLength int64 `protobuf:"varint,1,opt,name=uploadLength,proto3" json:"uploadLength,omitempty"` + UploadOffset int64 `protobuf:"varint,2,opt,name=uploadOffset,proto3" json:"uploadOffset,omitempty"` +} + +func (x *TusCreateResp) Reset() { + *x = TusCreateResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TusCreateResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TusCreateResp) ProtoMessage() {} + +func (x *TusCreateResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TusCreateResp.ProtoReflect.Descriptor instead. +func (*TusCreateResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{13} +} + +func (x *TusCreateResp) GetUploadLength() int64 { + if x != nil { + return x.UploadLength + } + return 0 +} + +func (x *TusCreateResp) GetUploadOffset() int64 { + if x != nil { + return x.UploadOffset + } + return 0 +} + +type TusUploadReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` + UploadOffset int64 `protobuf:"varint,3,opt,name=uploadOffset,proto3" json:"uploadOffset,omitempty"` + Content []byte `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` +} + +func (x *TusUploadReq) Reset() { + *x = TusUploadReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TusUploadReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TusUploadReq) ProtoMessage() {} + +func (x *TusUploadReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TusUploadReq.ProtoReflect.Descriptor instead. +func (*TusUploadReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{14} +} + +func (x *TusUploadReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *TusUploadReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *TusUploadReq) GetUploadOffset() int64 { + if x != nil { + return x.UploadOffset + } + return 0 +} + +func (x *TusUploadReq) GetContent() []byte { + if x != nil { + return x.Content + } + return nil +} + +type TusUploadResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UploadOffset int64 `protobuf:"varint,1,opt,name=uploadOffset,proto3" json:"uploadOffset,omitempty"` +} + +func (x *TusUploadResp) Reset() { + *x = TusUploadResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TusUploadResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TusUploadResp) ProtoMessage() {} + +func (x *TusUploadResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TusUploadResp.ProtoReflect.Descriptor instead. +func (*TusUploadResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{15} +} + +func (x *TusUploadResp) GetUploadOffset() int64 { + if x != nil { + return x.UploadOffset + } + return 0 +} + +type ResumableTransferReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` + Offset int64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + Length int64 `protobuf:"varint,4,opt,name=length,proto3" json:"length,omitempty"` +} + +func (x *ResumableTransferReq) Reset() { + *x = ResumableTransferReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResumableTransferReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumableTransferReq) ProtoMessage() {} + +func (x *ResumableTransferReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResumableTransferReq.ProtoReflect.Descriptor instead. +func (*ResumableTransferReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{16} +} + +func (x *ResumableTransferReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *ResumableTransferReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *ResumableTransferReq) GetOffset() int64 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *ResumableTransferReq) GetLength() int64 { + if x != nil { + return x.Length + } + return 0 +} + +type ResumableTransferResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` +} + +func (x *ResumableTransferResp) Reset() { + *x = ResumableTransferResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResumableTransferResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumableTransferResp) ProtoMessage() {} + +func (x *ResumableTransferResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResumableTransferResp.ProtoReflect.Descriptor instead. +func (*ResumableTransferResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{17} +} + +func (x *ResumableTransferResp) GetContent() []byte { + if x != nil { + return x.Content + } + return nil +} + +type FileInfoReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` +} + +func (x *FileInfoReq) Reset() { + *x = FileInfoReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileInfoReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileInfoReq) ProtoMessage() {} + +func (x *FileInfoReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileInfoReq.ProtoReflect.Descriptor instead. +func (*FileInfoReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{18} +} + +func (x *FileInfoReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *FileInfoReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +type FileInfoResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` + Extension string `protobuf:"bytes,4,opt,name=extension,proto3" json:"extension,omitempty"` + Modified string `protobuf:"bytes,5,opt,name=modified,proto3" json:"modified,omitempty"` + Mode string `protobuf:"bytes,6,opt,name=mode,proto3" json:"mode,omitempty"` + ModTime int64 `protobuf:"varint,7,opt,name=modTime,proto3" json:"modTime,omitempty"` + IsDir bool `protobuf:"varint,8,opt,name=isDir,proto3" json:"isDir,omitempty"` + IsSymlink bool `protobuf:"varint,9,opt,name=isSymlink,proto3" json:"isSymlink,omitempty"` + Type string `protobuf:"bytes,10,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *FileInfoResp) Reset() { + *x = FileInfoResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileInfoResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileInfoResp) ProtoMessage() {} + +func (x *FileInfoResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileInfoResp.ProtoReflect.Descriptor instead. +func (*FileInfoResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{19} +} + +func (x *FileInfoResp) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *FileInfoResp) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FileInfoResp) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *FileInfoResp) GetExtension() string { + if x != nil { + return x.Extension + } + return "" +} + +func (x *FileInfoResp) GetModified() string { + if x != nil { + return x.Modified + } + return "" +} + +func (x *FileInfoResp) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +func (x *FileInfoResp) GetModTime() int64 { + if x != nil { + return x.ModTime + } + return 0 +} + +func (x *FileInfoResp) GetIsDir() bool { + if x != nil { + return x.IsDir + } + return false +} + +func (x *FileInfoResp) GetIsSymlink() bool { + if x != nil { + return x.IsSymlink + } + return false +} + +func (x *FileInfoResp) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +type PreviewReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` + Size uint32 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` // 预览大小 0:256x256, 1:1080x1080 +} + +func (x *PreviewReq) Reset() { + *x = PreviewReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PreviewReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PreviewReq) ProtoMessage() {} + +func (x *PreviewReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PreviewReq.ProtoReflect.Descriptor instead. +func (*PreviewReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{20} +} + +func (x *PreviewReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *PreviewReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *PreviewReq) GetSize() uint32 { + if x != nil { + return x.Size + } + return 0 +} + +type PreviewResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` + FileName string `protobuf:"bytes,2,opt,name=fileName,proto3" json:"fileName,omitempty"` + ModTime int64 `protobuf:"varint,3,opt,name=modTime,proto3" json:"modTime,omitempty"` +} + +func (x *PreviewResp) Reset() { + *x = PreviewResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PreviewResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PreviewResp) ProtoMessage() {} + +func (x *PreviewResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PreviewResp.ProtoReflect.Descriptor instead. +func (*PreviewResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{21} +} + +func (x *PreviewResp) GetContent() []byte { + if x != nil { + return x.Content + } + return nil +} + +func (x *PreviewResp) GetFileName() string { + if x != nil { + return x.FileName + } + return "" +} + +func (x *PreviewResp) GetModTime() int64 { + if x != nil { + return x.ModTime + } + return 0 +} + +type ActionReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` + Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"` + Destination string `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` + Override bool `protobuf:"varint,5,opt,name=override,proto3" json:"override,omitempty"` + Rename bool `protobuf:"varint,6,opt,name=rename,proto3" json:"rename,omitempty"` +} + +func (x *ActionReq) Reset() { + *x = ActionReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionReq) ProtoMessage() {} + +func (x *ActionReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionReq.ProtoReflect.Descriptor instead. +func (*ActionReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{22} +} + +func (x *ActionReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *ActionReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *ActionReq) GetAction() string { + if x != nil { + return x.Action + } + return "" +} + +func (x *ActionReq) GetDestination() string { + if x != nil { + return x.Destination + } + return "" +} + +func (x *ActionReq) GetOverride() bool { + if x != nil { + return x.Override + } + return false +} + +func (x *ActionReq) GetRename() bool { + if x != nil { + return x.Rename + } + return false +} + +type ActionResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionResp) Reset() { + *x = ActionResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionResp) ProtoMessage() {} + +func (x *ActionResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionResp.ProtoReflect.Descriptor instead. +func (*ActionResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{23} +} + +type DirDownloadReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` + Files []string `protobuf:"bytes,3,rep,name=files,proto3" json:"files,omitempty"` + Algo string `protobuf:"bytes,4,opt,name=algo,proto3" json:"algo,omitempty"` +} + +func (x *DirDownloadReq) Reset() { + *x = DirDownloadReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirDownloadReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirDownloadReq) ProtoMessage() {} + +func (x *DirDownloadReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DirDownloadReq.ProtoReflect.Descriptor instead. +func (*DirDownloadReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{24} +} + +func (x *DirDownloadReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *DirDownloadReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +func (x *DirDownloadReq) GetFiles() []string { + if x != nil { + return x.Files + } + return nil +} + +func (x *DirDownloadReq) GetAlgo() string { + if x != nil { + return x.Algo + } + return "" +} + +type DirDownloadResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` +} + +func (x *DirDownloadResp) Reset() { + *x = DirDownloadResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirDownloadResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirDownloadResp) ProtoMessage() {} + +func (x *DirDownloadResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DirDownloadResp.ProtoReflect.Descriptor instead. +func (*DirDownloadResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{25} +} + +func (x *DirDownloadResp) GetContent() []byte { + if x != nil { + return x.Content + } + return nil +} + +type UsageReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + UserSpacePath string `protobuf:"bytes,2,opt,name=userSpacePath,proto3" json:"userSpacePath,omitempty"` +} + +func (x *UsageReq) Reset() { + *x = UsageReq{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UsageReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UsageReq) ProtoMessage() {} + +func (x *UsageReq) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UsageReq.ProtoReflect.Descriptor instead. +func (*UsageReq) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{26} +} + +func (x *UsageReq) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *UsageReq) GetUserSpacePath() string { + if x != nil { + return x.UserSpacePath + } + return "" +} + +type UsageResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Used int64 `protobuf:"varint,2,opt,name=used,proto3" json:"used,omitempty"` +} + +func (x *UsageResp) Reset() { + *x = UsageResp{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UsageResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UsageResp) ProtoMessage() {} + +func (x *UsageResp) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UsageResp.ProtoReflect.Descriptor instead. +func (*UsageResp) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{27} +} + +func (x *UsageResp) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *UsageResp) GetUsed() int64 { + if x != nil { + return x.Used + } + return 0 +} + +type SearchResp_Nested struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsDir bool `protobuf:"varint,1,opt,name=isDir,proto3" json:"isDir,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` + ModTime int64 `protobuf:"varint,5,opt,name=modTime,proto3" json:"modTime,omitempty"` +} + +func (x *SearchResp_Nested) Reset() { + *x = SearchResp_Nested{} + if protoimpl.UnsafeEnabled { + mi := &file_files_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchResp_Nested) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResp_Nested) ProtoMessage() {} + +func (x *SearchResp_Nested) ProtoReflect() protoreflect.Message { + mi := &file_files_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchResp_Nested.ProtoReflect.Descriptor instead. +func (*SearchResp_Nested) Descriptor() ([]byte, []int) { + return file_files_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *SearchResp_Nested) GetIsDir() bool { + if x != nil { + return x.IsDir + } + return false +} + +func (x *SearchResp_Nested) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *SearchResp_Nested) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SearchResp_Nested) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *SearchResp_Nested) GetModTime() int64 { + if x != nil { + return x.ModTime + } + return 0 +} + +var File_files_proto protoreflect.FileDescriptor + +var file_files_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x22, 0x71, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, + 0x07, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, + 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xf3, 0x01, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, + 0x73, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x69, 0x73, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, + 0x07, 0x53, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x62, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x62, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x73, 0x63, 0x22, 0xfe, 0x02, 0x0a, 0x0c, 0x46, + 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x05, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x44, 0x69, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x44, 0x69, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6d, + 0x46, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x75, 0x6d, + 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x53, + 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x53, + 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, + 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, + 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x45, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x0c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5f, 0x0a, 0x09, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, + 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x0c, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x5b, 0x0a, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, + 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x22, 0xb2, 0x01, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x2e, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x1a, 0x74, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, + 0x44, 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, + 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x64, 0x0a, 0x0c, 0x54, 0x75, 0x73, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, + 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x57, 0x0a, 0x0d, + 0x54, 0x75, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, + 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x0c, 0x54, 0x75, 0x73, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, + 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x22, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x33, + 0x0a, 0x0d, 0x54, 0x75, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x22, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x31, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x47, 0x0a, 0x0b, 0x46, 0x69, 0x6c, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, + 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x22, 0xfa, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x12, 0x1c, 0x0a, + 0x09, 0x69, 0x73, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x69, 0x73, 0x53, 0x79, 0x6d, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x5a, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x5d, 0x0a, 0x0b, 0x50, + 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x09, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, + 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x0c, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x74, + 0x0a, 0x0e, 0x44, 0x69, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, + 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6c, 0x67, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x61, 0x6c, 0x67, 0x6f, 0x22, 0x2b, 0x0a, 0x0f, 0x44, 0x69, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x22, 0x44, 0x0a, 0x08, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x35, 0x0a, 0x09, 0x55, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x32, 0xcb, + 0x05, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x12, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x04, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x12, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2f, 0x0a, + 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x10, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2f, + 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x10, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x2f, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x10, 0x2e, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x2f, 0x0a, 0x06, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x10, 0x2e, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x38, 0x0a, 0x09, 0x54, 0x75, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x13, + 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x54, 0x75, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x54, 0x75, 0x73, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x09, 0x54, + 0x75, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x13, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x54, 0x75, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x54, 0x75, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x07, 0x50, 0x72, 0x65, 0x76, 0x69, + 0x65, 0x77, 0x12, 0x11, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, + 0x65, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x50, 0x72, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2f, 0x0a, 0x06, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0b, + 0x44, 0x69, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x15, 0x2e, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x2e, 0x44, 0x69, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x44, 0x69, 0x72, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x30, 0x01, 0x12, 0x2c, + 0x0a, 0x05, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0f, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, + 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, + 0x2e, 0x2f, 0x3b, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_files_proto_rawDescOnce sync.Once + file_files_proto_rawDescData = file_files_proto_rawDesc +) + +func file_files_proto_rawDescGZIP() []byte { + file_files_proto_rawDescOnce.Do(func() { + file_files_proto_rawDescData = protoimpl.X.CompressGZIP(file_files_proto_rawDescData) + }) + return file_files_proto_rawDescData +} + +var file_files_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_files_proto_goTypes = []interface{}{ + (*FileListReq)(nil), // 0: files.FileListReq + (*Items)(nil), // 1: files.Items + (*Sorting)(nil), // 2: files.Sorting + (*FileListResp)(nil), // 3: files.FileListResp + (*CreateReq)(nil), // 4: files.CreateReq + (*CreateResp)(nil), // 5: files.CreateResp + (*DeleteReq)(nil), // 6: files.DeleteReq + (*DeleteResp)(nil), // 7: files.DeleteResp + (*UploadReq)(nil), // 8: files.UploadReq + (*UploadResp)(nil), // 9: files.UploadResp + (*SearchReq)(nil), // 10: files.searchReq + (*SearchResp)(nil), // 11: files.searchResp + (*TusCreateReq)(nil), // 12: files.TusCreateReq + (*TusCreateResp)(nil), // 13: files.TusCreateResp + (*TusUploadReq)(nil), // 14: files.TusUploadReq + (*TusUploadResp)(nil), // 15: files.TusUploadResp + (*ResumableTransferReq)(nil), // 16: files.ResumableTransferReq + (*ResumableTransferResp)(nil), // 17: files.ResumableTransferResp + (*FileInfoReq)(nil), // 18: files.FileInfoReq + (*FileInfoResp)(nil), // 19: files.FileInfoResp + (*PreviewReq)(nil), // 20: files.PreviewReq + (*PreviewResp)(nil), // 21: files.PreviewResp + (*ActionReq)(nil), // 22: files.ActionReq + (*ActionResp)(nil), // 23: files.ActionResp + (*DirDownloadReq)(nil), // 24: files.DirDownloadReq + (*DirDownloadResp)(nil), // 25: files.DirDownloadResp + (*UsageReq)(nil), // 26: files.UsageReq + (*UsageResp)(nil), // 27: files.UsageResp + (*SearchResp_Nested)(nil), // 28: files.searchResp.Nested +} +var file_files_proto_depIdxs = []int32{ + 2, // 0: files.FileListReq.sorting:type_name -> files.Sorting + 1, // 1: files.FileListResp.items:type_name -> files.Items + 2, // 2: files.FileListResp.sorting:type_name -> files.Sorting + 28, // 3: files.searchResp.items:type_name -> files.searchResp.Nested + 0, // 4: files.File.List:input_type -> files.FileListReq + 18, // 5: files.File.Info:input_type -> files.FileInfoReq + 4, // 6: files.File.Create:input_type -> files.CreateReq + 6, // 7: files.File.Delete:input_type -> files.DeleteReq + 10, // 8: files.File.Search:input_type -> files.searchReq + 8, // 9: files.File.Upload:input_type -> files.UploadReq + 12, // 10: files.File.TusCreate:input_type -> files.TusCreateReq + 14, // 11: files.File.TusUpload:input_type -> files.TusUploadReq + 16, // 12: files.File.ResumableTransfer:input_type -> files.ResumableTransferReq + 20, // 13: files.File.Preview:input_type -> files.PreviewReq + 22, // 14: files.File.Action:input_type -> files.ActionReq + 24, // 15: files.File.DirDownload:input_type -> files.DirDownloadReq + 26, // 16: files.File.Usage:input_type -> files.UsageReq + 3, // 17: files.File.List:output_type -> files.FileListResp + 19, // 18: files.File.Info:output_type -> files.FileInfoResp + 5, // 19: files.File.Create:output_type -> files.CreateResp + 7, // 20: files.File.Delete:output_type -> files.DeleteResp + 11, // 21: files.File.Search:output_type -> files.searchResp + 9, // 22: files.File.Upload:output_type -> files.UploadResp + 13, // 23: files.File.TusCreate:output_type -> files.TusCreateResp + 15, // 24: files.File.TusUpload:output_type -> files.TusUploadResp + 17, // 25: files.File.ResumableTransfer:output_type -> files.ResumableTransferResp + 21, // 26: files.File.Preview:output_type -> files.PreviewResp + 23, // 27: files.File.Action:output_type -> files.ActionResp + 25, // 28: files.File.DirDownload:output_type -> files.DirDownloadResp + 27, // 29: files.File.Usage:output_type -> files.UsageResp + 17, // [17:30] is the sub-list for method output_type + 4, // [4:17] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_files_proto_init() } +func file_files_proto_init() { + if File_files_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_files_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileListReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Items); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Sorting); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UploadResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TusCreateReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TusCreateResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TusUploadReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TusUploadResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResumableTransferReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResumableTransferResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileInfoReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileInfoResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PreviewReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PreviewResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirDownloadReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirDownloadResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UsageReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UsageResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_files_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchResp_Nested); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_files_proto_rawDesc, + NumEnums: 0, + NumMessages: 29, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_files_proto_goTypes, + DependencyIndexes: file_files_proto_depIdxs, + MessageInfos: file_files_proto_msgTypes, + }.Build() + File_files_proto = out.File + file_files_proto_rawDesc = nil + file_files_proto_goTypes = nil + file_files_proto_depIdxs = nil +} diff --git a/api/files/files.proto b/api/files/files.proto new file mode 100644 index 0000000..e4bd9cd --- /dev/null +++ b/api/files/files.proto @@ -0,0 +1,194 @@ +syntax = "proto3"; +package files; + +option go_package = "./;files"; + +service File { + rpc List(FileListReq) returns (FileListResp) {} // 获取当前路径下的文件列表 + rpc Info(FileInfoReq) returns (FileInfoResp) {} // 获取文件信息 + rpc Create(CreateReq) returns (CreateResp) {} // 创建文件夹 + rpc Delete(DeleteReq) returns (DeleteResp) {} // 删除文件或文件夹 + rpc Search(searchReq) returns (searchResp) {} // 搜索 + rpc Upload(UploadReq) returns (UploadResp) {} // 文件上传 + rpc TusCreate(TusCreateReq) returns (TusCreateResp) { + } // 分块文件上传:创建文件 + rpc TusUpload(TusUploadReq) returns (TusUploadResp) { + } // 分块文件上传:上传文件块 + rpc ResumableTransfer(ResumableTransferReq) returns (ResumableTransferResp) { + } // 断点续传的grpc实现 + rpc Preview(PreviewReq) returns (PreviewResp) {} // 文件预览 + rpc Action(ActionReq) returns (ActionResp) {} // 移动文件或重命名文件 + rpc DirDownload(DirDownloadReq) returns (stream DirDownloadResp) { + } // 文件夹压缩下载 + rpc Usage(UsageReq) returns (UsageResp) {} //查看磁盘使用率 +} + +message FileListReq { + string path = 1; // 目标文件夹路径 + string userSpacePath = 2; // 用户空间的路径 + Sorting sorting = 3; +} + +message Items { + string path = 1; + string name = 2; + int64 size = 3; + string extension = 4; + string modified = 5; + int64 modTime = 6; + string mode = 7; + bool isDir = 8; + bool isSymlink = 9; + string type = 10; +} + +message Sorting { + string by = 1; + bool asc = 2; +} + +message FileListResp { + repeated Items items = 1; + int32 numDirs = 2; + int32 numFiles = 3; + Sorting sorting = 4; + string path = 5; + string name = 6; + int64 size = 7; + string extension = 8; + string modified = 9; + int64 modTime = 10; + string mode = 11; + bool isDir = 12; + bool isSymlink = 13; + string type = 14; +} + +message CreateReq { + string path = 1; + string userSpacePath = 2; +} + +message CreateResp {} + +message DeleteReq { + string path = 1; + string userSpacePath = 2; +} + +message DeleteResp {} + +message UploadReq { + string path = 1; + string userSpacePath = 2; + bytes content = 3; +} + +message UploadResp {} + +message searchReq { + string path = 1; + string userSpacePath = 2; + string query = 3; +} + +message searchResp { + message Nested { + bool isDir = 1; + string path = 2; + string name = 3; + int64 size = 4; + int64 modTime = 5; + } + + repeated Nested items = 1; +} + +message TusCreateReq { + string path = 1; + string userSpacePath = 2; + bool override = 3; +} + +message TusCreateResp { + int64 uploadLength = 1; + int64 uploadOffset = 2; +} + +message TusUploadReq { + string path = 1; + string userSpacePath = 2; + int64 uploadOffset = 3; + bytes content = 4; +} + +message TusUploadResp { int64 uploadOffset = 1; } + +message ResumableTransferReq { + string path = 1; + string userSpacePath = 2; + int64 offset = 3; + int64 length = 4; +} + +message ResumableTransferResp { bytes content = 1; } + +message FileInfoReq { + string path = 1; + string userSpacePath = 2; +} + +message FileInfoResp { + string path = 1; + string name = 2; + int64 size = 3; + string extension = 4; + string modified = 5; + string mode = 6; + int64 modTime = 7; + bool isDir = 8; + bool isSymlink = 9; + string type = 10; +} + +message PreviewReq { + string path = 1; + string userSpacePath = 2; + uint32 size = 3; // 预览大小 0:256x256, 1:1080x1080 +} + +message PreviewResp { + bytes content = 1; + string fileName = 2; + int64 modTime = 3; +} + +message ActionReq { + string path = 1; + string userSpacePath = 2; + string action = 3; + string destination = 4; + bool override = 5; + bool rename = 6; +} + +message ActionResp {} + +message DirDownloadReq { + string path = 1; + string userSpacePath = 2; + repeated string files = 3; + string algo = 4; +} + +message DirDownloadResp { bytes content = 1; } + +message UsageReq { + string path = 1; + string userSpacePath = 2; +} + +message UsageResp { + int64 total = 1; + int64 used = 2; +} \ No newline at end of file diff --git a/api/files/files.validator.pb.go b/api/files/files.validator.pb.go new file mode 100644 index 0000000..f59258d --- /dev/null +++ b/api/files/files.validator.pb.go @@ -0,0 +1,128 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: files.proto + +package files + +import ( + fmt "fmt" + math "math" + proto "github.com/golang/protobuf/proto" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *FileListReq) Validate() error { + if this.Sorting != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Sorting); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Sorting", err) + } + } + return nil +} +func (this *Items) Validate() error { + return nil +} +func (this *Sorting) Validate() error { + return nil +} +func (this *FileListResp) Validate() error { + for _, item := range this.Items { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Items", err) + } + } + } + if this.Sorting != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Sorting); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Sorting", err) + } + } + return nil +} +func (this *CreateReq) Validate() error { + return nil +} +func (this *CreateResp) Validate() error { + return nil +} +func (this *DeleteReq) Validate() error { + return nil +} +func (this *DeleteResp) Validate() error { + return nil +} +func (this *UploadReq) Validate() error { + return nil +} +func (this *UploadResp) Validate() error { + return nil +} +func (this *SearchReq) Validate() error { + return nil +} +func (this *SearchResp) Validate() error { + for _, item := range this.Items { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Items", err) + } + } + } + return nil +} +func (this *SearchResp_Nested) Validate() error { + return nil +} +func (this *TusCreateReq) Validate() error { + return nil +} +func (this *TusCreateResp) Validate() error { + return nil +} +func (this *TusUploadReq) Validate() error { + return nil +} +func (this *TusUploadResp) Validate() error { + return nil +} +func (this *ResumableTransferReq) Validate() error { + return nil +} +func (this *ResumableTransferResp) Validate() error { + return nil +} +func (this *FileInfoReq) Validate() error { + return nil +} +func (this *FileInfoResp) Validate() error { + return nil +} +func (this *PreviewReq) Validate() error { + return nil +} +func (this *PreviewResp) Validate() error { + return nil +} +func (this *ActionReq) Validate() error { + return nil +} +func (this *ActionResp) Validate() error { + return nil +} +func (this *DirDownloadReq) Validate() error { + return nil +} +func (this *DirDownloadResp) Validate() error { + return nil +} +func (this *UsageReq) Validate() error { + return nil +} +func (this *UsageResp) Validate() error { + return nil +} diff --git a/api/files/files_triple.pb.go b/api/files/files_triple.pb.go new file mode 100644 index 0000000..fe4dde4 --- /dev/null +++ b/api/files/files_triple.pb.go @@ -0,0 +1,723 @@ +// Code generated by protoc-gen-go-triple. DO NOT EDIT. +// versions: +// - protoc-gen-go-triple v1.0.8 +// - protoc v3.20.3 +// source: files.proto + +package files + +import ( + context "context" + constant1 "dubbo.apache.org/dubbo-go/v3/common/constant" + protocol "dubbo.apache.org/dubbo-go/v3/protocol" + dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3" + invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation" + fmt "fmt" + grpc_go "github.com/dubbogo/grpc-go" + codes "github.com/dubbogo/grpc-go/codes" + metadata "github.com/dubbogo/grpc-go/metadata" + status "github.com/dubbogo/grpc-go/status" + common "github.com/dubbogo/triple/pkg/common" + constant "github.com/dubbogo/triple/pkg/common/constant" + triple "github.com/dubbogo/triple/pkg/triple" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc_go.SupportPackageIsVersion7 + +// FileClient is the client API for File service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type FileClient interface { + List(ctx context.Context, in *FileListReq, opts ...grpc_go.CallOption) (*FileListResp, common.ErrorWithAttachment) + Info(ctx context.Context, in *FileInfoReq, opts ...grpc_go.CallOption) (*FileInfoResp, common.ErrorWithAttachment) + Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) + Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment) + Search(ctx context.Context, in *SearchReq, opts ...grpc_go.CallOption) (*SearchResp, common.ErrorWithAttachment) + Upload(ctx context.Context, in *UploadReq, opts ...grpc_go.CallOption) (*UploadResp, common.ErrorWithAttachment) + TusCreate(ctx context.Context, in *TusCreateReq, opts ...grpc_go.CallOption) (*TusCreateResp, common.ErrorWithAttachment) + TusUpload(ctx context.Context, in *TusUploadReq, opts ...grpc_go.CallOption) (*TusUploadResp, common.ErrorWithAttachment) + ResumableTransfer(ctx context.Context, in *ResumableTransferReq, opts ...grpc_go.CallOption) (*ResumableTransferResp, common.ErrorWithAttachment) + Preview(ctx context.Context, in *PreviewReq, opts ...grpc_go.CallOption) (*PreviewResp, common.ErrorWithAttachment) + Action(ctx context.Context, in *ActionReq, opts ...grpc_go.CallOption) (*ActionResp, common.ErrorWithAttachment) + DirDownload(ctx context.Context, in *DirDownloadReq, opts ...grpc_go.CallOption) (File_DirDownloadClient, error) + Usage(ctx context.Context, in *UsageReq, opts ...grpc_go.CallOption) (*UsageResp, common.ErrorWithAttachment) +} + +type fileClient struct { + cc *triple.TripleConn +} + +type FileClientImpl struct { + List func(ctx context.Context, in *FileListReq) (*FileListResp, error) + Info func(ctx context.Context, in *FileInfoReq) (*FileInfoResp, error) + Create func(ctx context.Context, in *CreateReq) (*CreateResp, error) + Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error) + Search func(ctx context.Context, in *SearchReq) (*SearchResp, error) + Upload func(ctx context.Context, in *UploadReq) (*UploadResp, error) + TusCreate func(ctx context.Context, in *TusCreateReq) (*TusCreateResp, error) + TusUpload func(ctx context.Context, in *TusUploadReq) (*TusUploadResp, error) + ResumableTransfer func(ctx context.Context, in *ResumableTransferReq) (*ResumableTransferResp, error) + Preview func(ctx context.Context, in *PreviewReq) (*PreviewResp, error) + Action func(ctx context.Context, in *ActionReq) (*ActionResp, error) + DirDownload func(ctx context.Context, in *DirDownloadReq) (File_DirDownloadClient, error) + Usage func(ctx context.Context, in *UsageReq) (*UsageResp, error) +} + +func (c *FileClientImpl) GetDubboStub(cc *triple.TripleConn) FileClient { + return NewFileClient(cc) +} + +func (c *FileClientImpl) XXX_InterfaceName() string { + return "files.File" +} + +func NewFileClient(cc *triple.TripleConn) FileClient { + return &fileClient{cc} +} + +func (c *fileClient) List(ctx context.Context, in *FileListReq, opts ...grpc_go.CallOption) (*FileListResp, common.ErrorWithAttachment) { + out := new(FileListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/List", in, out) +} + +func (c *fileClient) Info(ctx context.Context, in *FileInfoReq, opts ...grpc_go.CallOption) (*FileInfoResp, common.ErrorWithAttachment) { + out := new(FileInfoResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Info", in, out) +} + +func (c *fileClient) Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) { + out := new(CreateResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Create", in, out) +} + +func (c *fileClient) Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment) { + out := new(DeleteResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Delete", in, out) +} + +func (c *fileClient) Search(ctx context.Context, in *SearchReq, opts ...grpc_go.CallOption) (*SearchResp, common.ErrorWithAttachment) { + out := new(SearchResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Search", in, out) +} + +func (c *fileClient) Upload(ctx context.Context, in *UploadReq, opts ...grpc_go.CallOption) (*UploadResp, common.ErrorWithAttachment) { + out := new(UploadResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Upload", in, out) +} + +func (c *fileClient) TusCreate(ctx context.Context, in *TusCreateReq, opts ...grpc_go.CallOption) (*TusCreateResp, common.ErrorWithAttachment) { + out := new(TusCreateResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/TusCreate", in, out) +} + +func (c *fileClient) TusUpload(ctx context.Context, in *TusUploadReq, opts ...grpc_go.CallOption) (*TusUploadResp, common.ErrorWithAttachment) { + out := new(TusUploadResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/TusUpload", in, out) +} + +func (c *fileClient) ResumableTransfer(ctx context.Context, in *ResumableTransferReq, opts ...grpc_go.CallOption) (*ResumableTransferResp, common.ErrorWithAttachment) { + out := new(ResumableTransferResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ResumableTransfer", in, out) +} + +func (c *fileClient) Preview(ctx context.Context, in *PreviewReq, opts ...grpc_go.CallOption) (*PreviewResp, common.ErrorWithAttachment) { + out := new(PreviewResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Preview", in, out) +} + +func (c *fileClient) Action(ctx context.Context, in *ActionReq, opts ...grpc_go.CallOption) (*ActionResp, common.ErrorWithAttachment) { + out := new(ActionResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Action", in, out) +} + +func (c *fileClient) DirDownload(ctx context.Context, in *DirDownloadReq, opts ...grpc_go.CallOption) (File_DirDownloadClient, error) { + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + stream, err := c.cc.NewStream(ctx, "/"+interfaceKey+"/DirDownload", opts...) + if err != nil { + return nil, err + } + x := &fileDirDownloadClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type File_DirDownloadClient interface { + Recv() (*DirDownloadResp, error) + grpc_go.ClientStream +} + +type fileDirDownloadClient struct { + grpc_go.ClientStream +} + +func (x *fileDirDownloadClient) Recv() (*DirDownloadResp, error) { + m := new(DirDownloadResp) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *fileClient) Usage(ctx context.Context, in *UsageReq, opts ...grpc_go.CallOption) (*UsageResp, common.ErrorWithAttachment) { + out := new(UsageResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Usage", in, out) +} + +// FileServer is the server API for File service. +// All implementations must embed UnimplementedFileServer +// for forward compatibility +type FileServer interface { + List(context.Context, *FileListReq) (*FileListResp, error) + Info(context.Context, *FileInfoReq) (*FileInfoResp, error) + Create(context.Context, *CreateReq) (*CreateResp, error) + Delete(context.Context, *DeleteReq) (*DeleteResp, error) + Search(context.Context, *SearchReq) (*SearchResp, error) + Upload(context.Context, *UploadReq) (*UploadResp, error) + TusCreate(context.Context, *TusCreateReq) (*TusCreateResp, error) + TusUpload(context.Context, *TusUploadReq) (*TusUploadResp, error) + ResumableTransfer(context.Context, *ResumableTransferReq) (*ResumableTransferResp, error) + Preview(context.Context, *PreviewReq) (*PreviewResp, error) + Action(context.Context, *ActionReq) (*ActionResp, error) + DirDownload(*DirDownloadReq, File_DirDownloadServer) error + Usage(context.Context, *UsageReq) (*UsageResp, error) + mustEmbedUnimplementedFileServer() +} + +// UnimplementedFileServer must be embedded to have forward compatible implementations. +type UnimplementedFileServer struct { + proxyImpl protocol.Invoker +} + +func (UnimplementedFileServer) List(context.Context, *FileListReq) (*FileListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedFileServer) Info(context.Context, *FileInfoReq) (*FileInfoResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Info not implemented") +} +func (UnimplementedFileServer) Create(context.Context, *CreateReq) (*CreateResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedFileServer) Delete(context.Context, *DeleteReq) (*DeleteResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedFileServer) Search(context.Context, *SearchReq) (*SearchResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Search not implemented") +} +func (UnimplementedFileServer) Upload(context.Context, *UploadReq) (*UploadResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Upload not implemented") +} +func (UnimplementedFileServer) TusCreate(context.Context, *TusCreateReq) (*TusCreateResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method TusCreate not implemented") +} +func (UnimplementedFileServer) TusUpload(context.Context, *TusUploadReq) (*TusUploadResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method TusUpload not implemented") +} +func (UnimplementedFileServer) ResumableTransfer(context.Context, *ResumableTransferReq) (*ResumableTransferResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ResumableTransfer not implemented") +} +func (UnimplementedFileServer) Preview(context.Context, *PreviewReq) (*PreviewResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Preview not implemented") +} +func (UnimplementedFileServer) Action(context.Context, *ActionReq) (*ActionResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Action not implemented") +} +func (UnimplementedFileServer) DirDownload(*DirDownloadReq, File_DirDownloadServer) error { + return status.Errorf(codes.Unimplemented, "method DirDownload not implemented") +} +func (UnimplementedFileServer) Usage(context.Context, *UsageReq) (*UsageResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Usage not implemented") +} +func (s *UnimplementedFileServer) XXX_SetProxyImpl(impl protocol.Invoker) { + s.proxyImpl = impl +} + +func (s *UnimplementedFileServer) XXX_GetProxyImpl() protocol.Invoker { + return s.proxyImpl +} + +func (s *UnimplementedFileServer) XXX_ServiceDesc() *grpc_go.ServiceDesc { + return &File_ServiceDesc +} +func (s *UnimplementedFileServer) XXX_InterfaceName() string { + return "files.File" +} + +func (UnimplementedFileServer) mustEmbedUnimplementedFileServer() {} + +// UnsafeFileServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to FileServer will +// result in compilation errors. +type UnsafeFileServer interface { + mustEmbedUnimplementedFileServer() +} + +func RegisterFileServer(s grpc_go.ServiceRegistrar, srv FileServer) { + s.RegisterService(&File_ServiceDesc, srv) +} + +func _File_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(FileListReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("List", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_Info_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(FileInfoReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Info", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Create", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Delete", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Search", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_Upload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UploadReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Upload", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_TusCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(TusCreateReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("TusCreate", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_TusUpload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(TusUploadReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("TusUpload", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_ResumableTransfer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ResumableTransferReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("ResumableTransfer", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_Preview_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(PreviewReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Preview", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_Action_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ActionReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Action", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _File_DirDownload_Handler(srv interface{}, stream grpc_go.ServerStream) error { + _, ok := srv.(dubbo3.Dubbo3GrpcService) + ctx := stream.Context() + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + stream.(grpc_go.CtxSetterStream).SetContext(context.WithValue(ctx, constant1.AttachmentKey, invAttachment)) + invo := invocation.NewRPCInvocation("DirDownload", nil, nil) + if !ok { + fmt.Println(invo) + return nil + } + m := new(DirDownloadReq) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(FileServer).DirDownload(m, &fileDirDownloadServer{stream}) +} + +type File_DirDownloadServer interface { + Send(*DirDownloadResp) error + grpc_go.ServerStream +} + +type fileDirDownloadServer struct { + grpc_go.ServerStream +} + +func (x *fileDirDownloadServer) Send(m *DirDownloadResp) error { + return x.ServerStream.SendMsg(m) +} + +func _File_Usage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UsageReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Usage", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +// File_ServiceDesc is the grpc_go.ServiceDesc for File service. +// It's only intended for direct use with grpc_go.RegisterService, +// and not to be introspected or modified (even as a copy) +var File_ServiceDesc = grpc_go.ServiceDesc{ + ServiceName: "files.File", + HandlerType: (*FileServer)(nil), + Methods: []grpc_go.MethodDesc{ + { + MethodName: "List", + Handler: _File_List_Handler, + }, + { + MethodName: "Info", + Handler: _File_Info_Handler, + }, + { + MethodName: "Create", + Handler: _File_Create_Handler, + }, + { + MethodName: "Delete", + Handler: _File_Delete_Handler, + }, + { + MethodName: "Search", + Handler: _File_Search_Handler, + }, + { + MethodName: "Upload", + Handler: _File_Upload_Handler, + }, + { + MethodName: "TusCreate", + Handler: _File_TusCreate_Handler, + }, + { + MethodName: "TusUpload", + Handler: _File_TusUpload_Handler, + }, + { + MethodName: "ResumableTransfer", + Handler: _File_ResumableTransfer_Handler, + }, + { + MethodName: "Preview", + Handler: _File_Preview_Handler, + }, + { + MethodName: "Action", + Handler: _File_Action_Handler, + }, + { + MethodName: "Usage", + Handler: _File_Usage_Handler, + }, + }, + Streams: []grpc_go.StreamDesc{ + { + StreamName: "DirDownload", + Handler: _File_DirDownload_Handler, + ServerStreams: true, + }, + }, + Metadata: "files.proto", +} diff --git a/api/governance/governance.pb.go b/api/governance/governance.pb.go new file mode 100644 index 0000000..ec05caa --- /dev/null +++ b/api/governance/governance.pb.go @@ -0,0 +1,997 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 +// source: governance.proto + +package governance + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Attachment string `protobuf:"bytes,3,opt,name=attachment,proto3" json:"attachment,omitempty"` + AttachmentName string `protobuf:"bytes,4,opt,name=attachmentName,proto3" json:"attachmentName,omitempty"` + Sort int32 `protobuf:"varint,5,opt,name=sort,proto3" json:"sort,omitempty"` + Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` + UpdatedAt int64 `protobuf:"varint,7,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + Operator string `protobuf:"bytes,8,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,9,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *Item) Reset() { + *x = Item{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Item) ProtoMessage() {} + +func (x *Item) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Item.ProtoReflect.Descriptor instead. +func (*Item) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{0} +} + +func (x *Item) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Item) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Item) GetAttachment() string { + if x != nil { + return x.Attachment + } + return "" +} + +func (x *Item) GetAttachmentName() string { + if x != nil { + return x.AttachmentName + } + return "" +} + +func (x *Item) GetSort() int32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *Item) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *Item) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *Item) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *Item) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +type ListReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` // 1 下架 2 上架 + Page int32 `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,4,opt,name=pageSize,proto3" json:"pageSize,omitempty"` +} + +func (x *ListReq) Reset() { + *x = ListReq{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListReq) ProtoMessage() {} + +func (x *ListReq) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListReq.ProtoReflect.Descriptor instead. +func (*ListReq) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{1} +} + +func (x *ListReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ListReq) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ListReq) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *ListReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type ListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total int32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*Item `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *ListResp) Reset() { + *x = ListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListResp) ProtoMessage() {} + +func (x *ListResp) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListResp.ProtoReflect.Descriptor instead. +func (*ListResp) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{2} +} + +func (x *ListResp) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *ListResp) GetData() []*Item { + if x != nil { + return x.Data + } + return nil +} + +type DeleteReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteReq) Reset() { + *x = DeleteReq{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteReq) ProtoMessage() {} + +func (x *DeleteReq) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteReq.ProtoReflect.Descriptor instead. +func (*DeleteReq) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{3} +} + +func (x *DeleteReq) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +type DeleteResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteResp) Reset() { + *x = DeleteResp{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResp) ProtoMessage() {} + +func (x *DeleteResp) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteResp.ProtoReflect.Descriptor instead. +func (*DeleteResp) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{4} +} + +type EditReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Attachment string `protobuf:"bytes,3,opt,name=attachment,proto3" json:"attachment,omitempty"` + AttachmentName string `protobuf:"bytes,4,opt,name=attachmentName,proto3" json:"attachmentName,omitempty"` + Sort int32 `protobuf:"varint,5,opt,name=sort,proto3" json:"sort,omitempty"` + Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` + Operator string `protobuf:"bytes,7,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,8,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *EditReq) Reset() { + *x = EditReq{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EditReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EditReq) ProtoMessage() {} + +func (x *EditReq) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EditReq.ProtoReflect.Descriptor instead. +func (*EditReq) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{5} +} + +func (x *EditReq) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *EditReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *EditReq) GetAttachment() string { + if x != nil { + return x.Attachment + } + return "" +} + +func (x *EditReq) GetAttachmentName() string { + if x != nil { + return x.AttachmentName + } + return "" +} + +func (x *EditReq) GetSort() int32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *EditReq) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *EditReq) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *EditReq) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +type EditResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *EditResp) Reset() { + *x = EditResp{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EditResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EditResp) ProtoMessage() {} + +func (x *EditResp) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EditResp.ProtoReflect.Descriptor instead. +func (*EditResp) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{6} +} + +type CreateReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Sort uint32 `protobuf:"varint,2,opt,name=sort,proto3" json:"sort,omitempty"` + Attachment string `protobuf:"bytes,3,opt,name=attachment,proto3" json:"attachment,omitempty"` + AttachmentName string `protobuf:"bytes,4,opt,name=attachmentName,proto3" json:"attachmentName,omitempty"` + Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"` + Operator string `protobuf:"bytes,6,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,7,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *CreateReq) Reset() { + *x = CreateReq{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateReq) ProtoMessage() {} + +func (x *CreateReq) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateReq.ProtoReflect.Descriptor instead. +func (*CreateReq) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{7} +} + +func (x *CreateReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *CreateReq) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *CreateReq) GetAttachment() string { + if x != nil { + return x.Attachment + } + return "" +} + +func (x *CreateReq) GetAttachmentName() string { + if x != nil { + return x.AttachmentName + } + return "" +} + +func (x *CreateReq) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *CreateReq) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *CreateReq) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +type CreateResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CreateResp) Reset() { + *x = CreateResp{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateResp) ProtoMessage() {} + +func (x *CreateResp) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateResp.ProtoReflect.Descriptor instead. +func (*CreateResp) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{8} +} + +type DisplayReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DisplayReq) Reset() { + *x = DisplayReq{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayReq) ProtoMessage() {} + +func (x *DisplayReq) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayReq.ProtoReflect.Descriptor instead. +func (*DisplayReq) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{9} +} + +type DisplayResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []*Item `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *DisplayResp) Reset() { + *x = DisplayResp{} + if protoimpl.UnsafeEnabled { + mi := &file_governance_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayResp) ProtoMessage() {} + +func (x *DisplayResp) ProtoReflect() protoreflect.Message { + mi := &file_governance_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayResp.ProtoReflect.Descriptor instead. +func (*DisplayResp) Descriptor() ([]byte, []int) { + return file_governance_proto_rawDescGZIP(), []int{10} +} + +func (x *DisplayResp) GetData() []*Item { + if x != nil { + return x.Data + } + return nil +} + +var File_governance_proto protoreflect.FileDescriptor + +var file_governance_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xfa, + 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, + 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x67, 0x0a, 0x07, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x22, 0x46, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1b, 0x0a, 0x09, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x0c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0xdf, 0x01, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, + 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x0a, 0x0a, 0x08, 0x45, 0x64, 0x69, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd1, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, + 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x0c, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x52, 0x65, 0x71, 0x22, 0x33, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xaa, 0x02, 0x0a, 0x0a, 0x47, + 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x13, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, + 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x15, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x04, 0x45, 0x64, 0x69, + 0x74, 0x12, 0x13, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x45, + 0x64, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, + 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x15, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x07, 0x44, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, + 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x67, 0x6f, + 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_governance_proto_rawDescOnce sync.Once + file_governance_proto_rawDescData = file_governance_proto_rawDesc +) + +func file_governance_proto_rawDescGZIP() []byte { + file_governance_proto_rawDescOnce.Do(func() { + file_governance_proto_rawDescData = protoimpl.X.CompressGZIP(file_governance_proto_rawDescData) + }) + return file_governance_proto_rawDescData +} + +var file_governance_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_governance_proto_goTypes = []interface{}{ + (*Item)(nil), // 0: governance.Item + (*ListReq)(nil), // 1: governance.ListReq + (*ListResp)(nil), // 2: governance.ListResp + (*DeleteReq)(nil), // 3: governance.DeleteReq + (*DeleteResp)(nil), // 4: governance.DeleteResp + (*EditReq)(nil), // 5: governance.EditReq + (*EditResp)(nil), // 6: governance.EditResp + (*CreateReq)(nil), // 7: governance.CreateReq + (*CreateResp)(nil), // 8: governance.CreateResp + (*DisplayReq)(nil), // 9: governance.DisplayReq + (*DisplayResp)(nil), // 10: governance.DisplayResp +} +var file_governance_proto_depIdxs = []int32{ + 0, // 0: governance.ListResp.data:type_name -> governance.Item + 0, // 1: governance.DisplayResp.data:type_name -> governance.Item + 1, // 2: governance.Governance.List:input_type -> governance.ListReq + 3, // 3: governance.Governance.Delete:input_type -> governance.DeleteReq + 5, // 4: governance.Governance.Edit:input_type -> governance.EditReq + 7, // 5: governance.Governance.Create:input_type -> governance.CreateReq + 9, // 6: governance.Governance.Display:input_type -> governance.DisplayReq + 2, // 7: governance.Governance.List:output_type -> governance.ListResp + 4, // 8: governance.Governance.Delete:output_type -> governance.DeleteResp + 6, // 9: governance.Governance.Edit:output_type -> governance.EditResp + 8, // 10: governance.Governance.Create:output_type -> governance.CreateResp + 10, // 11: governance.Governance.Display:output_type -> governance.DisplayResp + 7, // [7:12] is the sub-list for method output_type + 2, // [2:7] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_governance_proto_init() } +func file_governance_proto_init() { + if File_governance_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_governance_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EditReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EditResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_governance_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_governance_proto_rawDesc, + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_governance_proto_goTypes, + DependencyIndexes: file_governance_proto_depIdxs, + MessageInfos: file_governance_proto_msgTypes, + }.Build() + File_governance_proto = out.File + file_governance_proto_rawDesc = nil + file_governance_proto_goTypes = nil + file_governance_proto_depIdxs = nil +} diff --git a/api/governance/governance.proto b/api/governance/governance.proto new file mode 100644 index 0000000..0905601 --- /dev/null +++ b/api/governance/governance.proto @@ -0,0 +1,81 @@ +syntax = "proto3"; +package governance; +//import "descriptor.proto"; +//import "validator.proto"; + +option go_package = "./;governance"; + +service Governance{ + rpc List(ListReq) returns (ListResp) {} + rpc Delete(DeleteReq) returns (DeleteResp) {} + rpc Edit(EditReq) returns (EditResp) {} + rpc Create(CreateReq) returns (CreateResp) {} + rpc Display(DisplayReq) returns (DisplayResp) {} +} + +message Item{ + int32 id = 1; + string title = 2; + string attachment = 3; + string attachmentName = 4; + int32 sort = 5; + int32 status = 6; + int64 updatedAt = 7; + string operator = 8; + int32 operatorId = 9; +} + +message ListReq{ + string title = 1; + int32 status = 2; // 1 下架 2 上架 + int32 page = 3; + int32 pageSize = 4; +} + +message ListResp{ + int32 total = 1; + repeated Item data =2; +} + +message DeleteReq{ + int32 id = 1; +} + +message DeleteResp{ +} + +message EditReq{ + uint32 id = 1; + string title = 2; + string attachment = 3; + string attachmentName = 4; + int32 sort = 5; + int32 status = 6; + string operator = 7; + int32 operatorId = 8; +} + +message EditResp{ +} + +message CreateReq{ + string title = 1; + uint32 sort = 2; + string attachment = 3; + string attachmentName = 4; + int32 status = 5; + string operator = 6; + int32 operatorId = 7; +} + +message CreateResp{ + +} + +message DisplayReq{ + +} + +message DisplayResp{ + repeated Item data = 1; +} \ No newline at end of file diff --git a/api/governance/governance.validator.pb.go b/api/governance/governance.validator.pb.go new file mode 100644 index 0000000..a8c0c3f --- /dev/null +++ b/api/governance/governance.validator.pb.go @@ -0,0 +1,64 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: governance.proto + +package governance + +import ( + fmt "fmt" + math "math" + proto "github.com/golang/protobuf/proto" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *Item) Validate() error { + return nil +} +func (this *ListReq) Validate() error { + return nil +} +func (this *ListResp) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *DeleteReq) Validate() error { + return nil +} +func (this *DeleteResp) Validate() error { + return nil +} +func (this *EditReq) Validate() error { + return nil +} +func (this *EditResp) Validate() error { + return nil +} +func (this *CreateReq) Validate() error { + return nil +} +func (this *CreateResp) Validate() error { + return nil +} +func (this *DisplayReq) Validate() error { + return nil +} +func (this *DisplayResp) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} diff --git a/api/governance/governance_triple.pb.go b/api/governance/governance_triple.pb.go new file mode 100644 index 0000000..df07aa0 --- /dev/null +++ b/api/governance/governance_triple.pb.go @@ -0,0 +1,327 @@ +// Code generated by protoc-gen-go-triple. DO NOT EDIT. +// versions: +// - protoc-gen-go-triple v1.0.8 +// - protoc v3.20.3 +// source: governance.proto + +package governance + +import ( + context "context" + protocol "dubbo.apache.org/dubbo-go/v3/protocol" + dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3" + invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation" + grpc_go "github.com/dubbogo/grpc-go" + codes "github.com/dubbogo/grpc-go/codes" + metadata "github.com/dubbogo/grpc-go/metadata" + status "github.com/dubbogo/grpc-go/status" + common "github.com/dubbogo/triple/pkg/common" + constant "github.com/dubbogo/triple/pkg/common/constant" + triple "github.com/dubbogo/triple/pkg/triple" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc_go.SupportPackageIsVersion7 + +// GovernanceClient is the client API for Governance service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type GovernanceClient interface { + List(ctx context.Context, in *ListReq, opts ...grpc_go.CallOption) (*ListResp, common.ErrorWithAttachment) + Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment) + Edit(ctx context.Context, in *EditReq, opts ...grpc_go.CallOption) (*EditResp, common.ErrorWithAttachment) + Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) + Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment) +} + +type governanceClient struct { + cc *triple.TripleConn +} + +type GovernanceClientImpl struct { + List func(ctx context.Context, in *ListReq) (*ListResp, error) + Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error) + Edit func(ctx context.Context, in *EditReq) (*EditResp, error) + Create func(ctx context.Context, in *CreateReq) (*CreateResp, error) + Display func(ctx context.Context, in *DisplayReq) (*DisplayResp, error) +} + +func (c *GovernanceClientImpl) GetDubboStub(cc *triple.TripleConn) GovernanceClient { + return NewGovernanceClient(cc) +} + +func (c *GovernanceClientImpl) XXX_InterfaceName() string { + return "governance.Governance" +} + +func NewGovernanceClient(cc *triple.TripleConn) GovernanceClient { + return &governanceClient{cc} +} + +func (c *governanceClient) List(ctx context.Context, in *ListReq, opts ...grpc_go.CallOption) (*ListResp, common.ErrorWithAttachment) { + out := new(ListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/List", in, out) +} + +func (c *governanceClient) Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment) { + out := new(DeleteResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Delete", in, out) +} + +func (c *governanceClient) Edit(ctx context.Context, in *EditReq, opts ...grpc_go.CallOption) (*EditResp, common.ErrorWithAttachment) { + out := new(EditResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Edit", in, out) +} + +func (c *governanceClient) Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) { + out := new(CreateResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Create", in, out) +} + +func (c *governanceClient) Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment) { + out := new(DisplayResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Display", in, out) +} + +// GovernanceServer is the server API for Governance service. +// All implementations must embed UnimplementedGovernanceServer +// for forward compatibility +type GovernanceServer interface { + List(context.Context, *ListReq) (*ListResp, error) + Delete(context.Context, *DeleteReq) (*DeleteResp, error) + Edit(context.Context, *EditReq) (*EditResp, error) + Create(context.Context, *CreateReq) (*CreateResp, error) + Display(context.Context, *DisplayReq) (*DisplayResp, error) + mustEmbedUnimplementedGovernanceServer() +} + +// UnimplementedGovernanceServer must be embedded to have forward compatible implementations. +type UnimplementedGovernanceServer struct { + proxyImpl protocol.Invoker +} + +func (UnimplementedGovernanceServer) List(context.Context, *ListReq) (*ListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedGovernanceServer) Delete(context.Context, *DeleteReq) (*DeleteResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedGovernanceServer) Edit(context.Context, *EditReq) (*EditResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Edit not implemented") +} +func (UnimplementedGovernanceServer) Create(context.Context, *CreateReq) (*CreateResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedGovernanceServer) Display(context.Context, *DisplayReq) (*DisplayResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Display not implemented") +} +func (s *UnimplementedGovernanceServer) XXX_SetProxyImpl(impl protocol.Invoker) { + s.proxyImpl = impl +} + +func (s *UnimplementedGovernanceServer) XXX_GetProxyImpl() protocol.Invoker { + return s.proxyImpl +} + +func (s *UnimplementedGovernanceServer) XXX_ServiceDesc() *grpc_go.ServiceDesc { + return &Governance_ServiceDesc +} +func (s *UnimplementedGovernanceServer) XXX_InterfaceName() string { + return "governance.Governance" +} + +func (UnimplementedGovernanceServer) mustEmbedUnimplementedGovernanceServer() {} + +// UnsafeGovernanceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GovernanceServer will +// result in compilation errors. +type UnsafeGovernanceServer interface { + mustEmbedUnimplementedGovernanceServer() +} + +func RegisterGovernanceServer(s grpc_go.ServiceRegistrar, srv GovernanceServer) { + s.RegisterService(&Governance_ServiceDesc, srv) +} + +func _Governance_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ListReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("List", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Governance_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Delete", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Governance_Edit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(EditReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Edit", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Governance_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Create", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Governance_Display_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DisplayReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Display", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +// Governance_ServiceDesc is the grpc_go.ServiceDesc for Governance service. +// It's only intended for direct use with grpc_go.RegisterService, +// and not to be introspected or modified (even as a copy) +var Governance_ServiceDesc = grpc_go.ServiceDesc{ + ServiceName: "governance.Governance", + HandlerType: (*GovernanceServer)(nil), + Methods: []grpc_go.MethodDesc{ + { + MethodName: "List", + Handler: _Governance_List_Handler, + }, + { + MethodName: "Delete", + Handler: _Governance_Delete_Handler, + }, + { + MethodName: "Edit", + Handler: _Governance_Edit_Handler, + }, + { + MethodName: "Create", + Handler: _Governance_Create_Handler, + }, + { + MethodName: "Display", + Handler: _Governance_Display_Handler, + }, + }, + Streams: []grpc_go.StreamDesc{}, + Metadata: "governance.proto", +} diff --git a/api/pressreleases/press_releases.pb.go b/api/pressreleases/press_releases.pb.go new file mode 100644 index 0000000..e9314f1 --- /dev/null +++ b/api/pressreleases/press_releases.pb.go @@ -0,0 +1,1402 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 +// source: press_releases.proto + +package pressreleases + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + CreatedAt uint64 `protobuf:"varint,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Sort uint32 `protobuf:"varint,4,opt,name=sort,proto3" json:"sort,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` + Attachment string `protobuf:"bytes,6,opt,name=attachment,proto3" json:"attachment,omitempty"` + AttachmentName string `protobuf:"bytes,7,opt,name=attachmentName,proto3" json:"attachmentName,omitempty"` + UpdatedAt uint64 `protobuf:"varint,8,opt,name=updatedAt,proto3" json:"updatedAt,omitempty"` + Status uint32 `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"` + Display uint32 `protobuf:"varint,10,opt,name=display,proto3" json:"display,omitempty"` + Summary string `protobuf:"bytes,11,opt,name=summary,proto3" json:"summary,omitempty"` + Operator string `protobuf:"bytes,12,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,13,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *Item) Reset() { + *x = Item{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Item) ProtoMessage() {} + +func (x *Item) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Item.ProtoReflect.Descriptor instead. +func (*Item) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{0} +} + +func (x *Item) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Item) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Item) GetCreatedAt() uint64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *Item) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *Item) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *Item) GetAttachment() string { + if x != nil { + return x.Attachment + } + return "" +} + +func (x *Item) GetAttachmentName() string { + if x != nil { + return x.AttachmentName + } + return "" +} + +func (x *Item) GetUpdatedAt() uint64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *Item) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *Item) GetDisplay() uint32 { + if x != nil { + return x.Display + } + return 0 +} + +func (x *Item) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *Item) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *Item) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +type ListReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + StartTime uint64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime,omitempty"` + EndTime uint64 `protobuf:"varint,3,opt,name=endTime,proto3" json:"endTime,omitempty"` + Status uint32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"` + Display uint32 `protobuf:"varint,5,opt,name=display,proto3" json:"display,omitempty"` + Page int32 `protobuf:"varint,6,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,7,opt,name=pageSize,proto3" json:"pageSize,omitempty"` +} + +func (x *ListReq) Reset() { + *x = ListReq{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListReq) ProtoMessage() {} + +func (x *ListReq) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListReq.ProtoReflect.Descriptor instead. +func (*ListReq) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{1} +} + +func (x *ListReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ListReq) GetStartTime() uint64 { + if x != nil { + return x.StartTime + } + return 0 +} + +func (x *ListReq) GetEndTime() uint64 { + if x != nil { + return x.EndTime + } + return 0 +} + +func (x *ListReq) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ListReq) GetDisplay() uint32 { + if x != nil { + return x.Display + } + return 0 +} + +func (x *ListReq) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *ListReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type ListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*Item `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *ListResp) Reset() { + *x = ListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListResp) ProtoMessage() {} + +func (x *ListResp) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListResp.ProtoReflect.Descriptor instead. +func (*ListResp) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{2} +} + +func (x *ListResp) GetTotal() uint64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *ListResp) GetData() []*Item { + if x != nil { + return x.Data + } + return nil +} + +type DisplayReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Page uint32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint32 `protobuf:"varint,3,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + TimeStart int64 `protobuf:"varint,4,opt,name=timeStart,proto3" json:"timeStart,omitempty"` + TimeEnd int64 `protobuf:"varint,5,opt,name=timeEnd,proto3" json:"timeEnd,omitempty"` + Display int32 `protobuf:"varint,6,opt,name=display,proto3" json:"display,omitempty"` +} + +func (x *DisplayReq) Reset() { + *x = DisplayReq{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayReq) ProtoMessage() {} + +func (x *DisplayReq) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayReq.ProtoReflect.Descriptor instead. +func (*DisplayReq) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{3} +} + +func (x *DisplayReq) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *DisplayReq) GetPage() uint32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *DisplayReq) GetPageSize() uint32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *DisplayReq) GetTimeStart() int64 { + if x != nil { + return x.TimeStart + } + return 0 +} + +func (x *DisplayReq) GetTimeEnd() int64 { + if x != nil { + return x.TimeEnd + } + return 0 +} + +func (x *DisplayReq) GetDisplay() int32 { + if x != nil { + return x.Display + } + return 0 +} + +type DisplayResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + Data []*Item `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *DisplayResp) Reset() { + *x = DisplayResp{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisplayResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisplayResp) ProtoMessage() {} + +func (x *DisplayResp) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisplayResp.ProtoReflect.Descriptor instead. +func (*DisplayResp) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{4} +} + +func (x *DisplayResp) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *DisplayResp) GetData() []*Item { + if x != nil { + return x.Data + } + return nil +} + +type EditReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + CreatedAt uint64 `protobuf:"varint,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Sort uint32 `protobuf:"varint,4,opt,name=sort,proto3" json:"sort,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` + Attachment string `protobuf:"bytes,6,opt,name=attachment,proto3" json:"attachment,omitempty"` + AttachmentName string `protobuf:"bytes,7,opt,name=attachmentName,proto3" json:"attachmentName,omitempty"` + Status uint32 `protobuf:"varint,8,opt,name=status,proto3" json:"status,omitempty"` + Display uint32 `protobuf:"varint,9,opt,name=display,proto3" json:"display,omitempty"` + Summary string `protobuf:"bytes,10,opt,name=summary,proto3" json:"summary,omitempty"` + Operator string `protobuf:"bytes,11,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,12,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *EditReq) Reset() { + *x = EditReq{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EditReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EditReq) ProtoMessage() {} + +func (x *EditReq) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EditReq.ProtoReflect.Descriptor instead. +func (*EditReq) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{5} +} + +func (x *EditReq) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *EditReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *EditReq) GetCreatedAt() uint64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *EditReq) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *EditReq) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *EditReq) GetAttachment() string { + if x != nil { + return x.Attachment + } + return "" +} + +func (x *EditReq) GetAttachmentName() string { + if x != nil { + return x.AttachmentName + } + return "" +} + +func (x *EditReq) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *EditReq) GetDisplay() uint32 { + if x != nil { + return x.Display + } + return 0 +} + +func (x *EditReq) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *EditReq) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *EditReq) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +type EditResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *EditResp) Reset() { + *x = EditResp{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EditResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EditResp) ProtoMessage() {} + +func (x *EditResp) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EditResp.ProtoReflect.Descriptor instead. +func (*EditResp) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{6} +} + +type CreateReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + CreatedAt uint64 `protobuf:"varint,2,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Sort uint32 `protobuf:"varint,3,opt,name=sort,proto3" json:"sort,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + Attachment string `protobuf:"bytes,5,opt,name=attachment,proto3" json:"attachment,omitempty"` + AttachmentName string `protobuf:"bytes,6,opt,name=attachmentName,proto3" json:"attachmentName,omitempty"` + Status uint32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` + Display uint32 `protobuf:"varint,8,opt,name=display,proto3" json:"display,omitempty"` + Summary string `protobuf:"bytes,9,opt,name=summary,proto3" json:"summary,omitempty"` + Operator string `protobuf:"bytes,10,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,11,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *CreateReq) Reset() { + *x = CreateReq{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateReq) ProtoMessage() {} + +func (x *CreateReq) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateReq.ProtoReflect.Descriptor instead. +func (*CreateReq) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{7} +} + +func (x *CreateReq) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *CreateReq) GetCreatedAt() uint64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *CreateReq) GetSort() uint32 { + if x != nil { + return x.Sort + } + return 0 +} + +func (x *CreateReq) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *CreateReq) GetAttachment() string { + if x != nil { + return x.Attachment + } + return "" +} + +func (x *CreateReq) GetAttachmentName() string { + if x != nil { + return x.AttachmentName + } + return "" +} + +func (x *CreateReq) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *CreateReq) GetDisplay() uint32 { + if x != nil { + return x.Display + } + return 0 +} + +func (x *CreateReq) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +func (x *CreateReq) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *CreateReq) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +type CreateResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CreateResp) Reset() { + *x = CreateResp{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateResp) ProtoMessage() {} + +func (x *CreateResp) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateResp.ProtoReflect.Descriptor instead. +func (*CreateResp) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{8} +} + +type DeleteReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteReq) Reset() { + *x = DeleteReq{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteReq) ProtoMessage() {} + +func (x *DeleteReq) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteReq.ProtoReflect.Descriptor instead. +func (*DeleteReq) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{9} +} + +func (x *DeleteReq) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +type DeleteResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteResp) Reset() { + *x = DeleteResp{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResp) ProtoMessage() {} + +func (x *DeleteResp) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteResp.ProtoReflect.Descriptor instead. +func (*DeleteResp) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{10} +} + +type GetReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *GetReq) Reset() { + *x = GetReq{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetReq) ProtoMessage() {} + +func (x *GetReq) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetReq.ProtoReflect.Descriptor instead. +func (*GetReq) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{11} +} + +func (x *GetReq) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +type GetResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + CreatedAt uint64 `protobuf:"varint,3,opt,name=createdAt,proto3" json:"createdAt,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` + Attachment string `protobuf:"bytes,5,opt,name=attachment,proto3" json:"attachment,omitempty"` + AttachmentName string `protobuf:"bytes,6,opt,name=attachmentName,proto3" json:"attachmentName,omitempty"` + Summary string `protobuf:"bytes,7,opt,name=summary,proto3" json:"summary,omitempty"` +} + +func (x *GetResp) Reset() { + *x = GetResp{} + if protoimpl.UnsafeEnabled { + mi := &file_press_releases_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetResp) ProtoMessage() {} + +func (x *GetResp) ProtoReflect() protoreflect.Message { + mi := &file_press_releases_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetResp.ProtoReflect.Descriptor instead. +func (*GetResp) Descriptor() ([]byte, []int) { + return file_press_releases_proto_rawDescGZIP(), []int{12} +} + +func (x *GetResp) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GetResp) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *GetResp) GetCreatedAt() uint64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *GetResp) GetContent() string { + if x != nil { + return x.Content + } + return "" +} + +func (x *GetResp) GetAttachment() string { + if x != nil { + return x.Attachment + } + return "" +} + +func (x *GetResp) GetAttachmentName() string { + if x != nil { + return x.AttachmentName + } + return "" +} + +func (x *GetResp) GetSummary() string { + if x != nil { + return x.Summary + } + return "" +} + +var File_press_releases_proto protoreflect.FileDescriptor + +var file_press_releases_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x70, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x73, 0x22, 0xe6, 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, + 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0xb9, + 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x49, 0x0a, 0x08, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa4, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x45, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, + 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x22, 0x4c, 0x0a, 0x0b, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xcb, 0x02, 0x0a, 0x07, 0x45, + 0x64, 0x69, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x0a, 0x0a, 0x08, 0x45, 0x64, 0x69, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x22, 0xbd, 0x02, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x49, 0x64, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x1b, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x0c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x18, 0x0a, + 0x06, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x32, 0x83, 0x03, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x42, 0x0a, 0x07, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x12, 0x19, 0x2e, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x04, 0x45, 0x64, 0x69, 0x74, 0x12, 0x16, 0x2e, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x45, 0x64, 0x69, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x73, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x3f, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x3f, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x36, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x16, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x12, 0x5a, 0x10, 0x2e, 0x2f, 0x3b, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_press_releases_proto_rawDescOnce sync.Once + file_press_releases_proto_rawDescData = file_press_releases_proto_rawDesc +) + +func file_press_releases_proto_rawDescGZIP() []byte { + file_press_releases_proto_rawDescOnce.Do(func() { + file_press_releases_proto_rawDescData = protoimpl.X.CompressGZIP(file_press_releases_proto_rawDescData) + }) + return file_press_releases_proto_rawDescData +} + +var file_press_releases_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_press_releases_proto_goTypes = []interface{}{ + (*Item)(nil), // 0: pressreleases.Item + (*ListReq)(nil), // 1: pressreleases.ListReq + (*ListResp)(nil), // 2: pressreleases.ListResp + (*DisplayReq)(nil), // 3: pressreleases.DisplayReq + (*DisplayResp)(nil), // 4: pressreleases.DisplayResp + (*EditReq)(nil), // 5: pressreleases.EditReq + (*EditResp)(nil), // 6: pressreleases.EditResp + (*CreateReq)(nil), // 7: pressreleases.CreateReq + (*CreateResp)(nil), // 8: pressreleases.CreateResp + (*DeleteReq)(nil), // 9: pressreleases.DeleteReq + (*DeleteResp)(nil), // 10: pressreleases.DeleteResp + (*GetReq)(nil), // 11: pressreleases.GetReq + (*GetResp)(nil), // 12: pressreleases.GetResp +} +var file_press_releases_proto_depIdxs = []int32{ + 0, // 0: pressreleases.ListResp.data:type_name -> pressreleases.Item + 0, // 1: pressreleases.DisplayResp.data:type_name -> pressreleases.Item + 1, // 2: pressreleases.PressReleases.List:input_type -> pressreleases.ListReq + 3, // 3: pressreleases.PressReleases.Display:input_type -> pressreleases.DisplayReq + 5, // 4: pressreleases.PressReleases.Edit:input_type -> pressreleases.EditReq + 7, // 5: pressreleases.PressReleases.Create:input_type -> pressreleases.CreateReq + 9, // 6: pressreleases.PressReleases.Delete:input_type -> pressreleases.DeleteReq + 11, // 7: pressreleases.PressReleases.Get:input_type -> pressreleases.GetReq + 2, // 8: pressreleases.PressReleases.List:output_type -> pressreleases.ListResp + 4, // 9: pressreleases.PressReleases.Display:output_type -> pressreleases.DisplayResp + 6, // 10: pressreleases.PressReleases.Edit:output_type -> pressreleases.EditResp + 8, // 11: pressreleases.PressReleases.Create:output_type -> pressreleases.CreateResp + 10, // 12: pressreleases.PressReleases.Delete:output_type -> pressreleases.DeleteResp + 12, // 13: pressreleases.PressReleases.Get:output_type -> pressreleases.GetResp + 8, // [8:14] is the sub-list for method output_type + 2, // [2:8] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_press_releases_proto_init() } +func file_press_releases_proto_init() { + if File_press_releases_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_press_releases_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisplayResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EditReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EditResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_press_releases_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_press_releases_proto_rawDesc, + NumEnums: 0, + NumMessages: 13, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_press_releases_proto_goTypes, + DependencyIndexes: file_press_releases_proto_depIdxs, + MessageInfos: file_press_releases_proto_msgTypes, + }.Build() + File_press_releases_proto = out.File + file_press_releases_proto_rawDesc = nil + file_press_releases_proto_goTypes = nil + file_press_releases_proto_depIdxs = nil +} diff --git a/api/pressreleases/press_releases.proto b/api/pressreleases/press_releases.proto new file mode 100644 index 0000000..53efcfc --- /dev/null +++ b/api/pressreleases/press_releases.proto @@ -0,0 +1,119 @@ +syntax = "proto3"; +package pressreleases; +//import "descriptor.proto"; +//import "validator.proto"; + +option go_package = "./;pressreleases"; + +service PressReleases{ + rpc List(ListReq) returns (ListResp) {} + rpc Display(DisplayReq) returns (DisplayResp) {} + rpc Edit(EditReq) returns (EditResp) {} + rpc Create(CreateReq) returns (CreateResp) {} + rpc Delete(DeleteReq) returns (DeleteResp) {} + rpc Get(GetReq) returns (GetResp) {} +} + +message Item{ + uint32 id = 1; + string title = 2; + uint64 createdAt = 3; + uint32 sort = 4; + string content = 5; + string attachment = 6; + string attachmentName = 7; + uint64 updatedAt = 8; + uint32 status = 9; + uint32 display = 10; + string summary = 11; + string operator = 12; + int32 operatorId = 13; +} + +message ListReq{ + string title = 1; + uint64 startTime = 2; + uint64 endTime = 3; + uint32 status = 4; + uint32 display = 5; + int32 page = 6; + int32 pageSize = 7; +} + +message ListResp{ + uint64 total = 1; + repeated Item data = 2; +} + +message DisplayReq{ + string query = 1; + uint32 page = 2; + uint32 pageSize = 3; + int64 timeStart = 4; + int64 timeEnd = 5; + int32 display = 6; +} + +message DisplayResp{ + int64 total = 1; + repeated Item data = 2; +} + +message EditReq{ + uint32 id = 1; + string title = 2; + uint64 createdAt = 3; + uint32 sort = 4; + string content = 5; + string attachment = 6; + string attachmentName = 7; + uint32 status = 8; + uint32 display = 9; + string summary = 10; + string operator = 11; + int32 operatorId = 12; + +} + +message EditResp{ +} + +message CreateReq{ + string title = 1; + uint64 createdAt = 2; + uint32 sort = 3; + string content = 4; + string attachment = 5; + string attachmentName = 6; + uint32 status = 7; + uint32 display = 8; + string summary = 9; + string operator = 10; + int32 operatorId = 11; +} + +message CreateResp{ + +} + +message DeleteReq{ + uint32 id = 1; +} + +message DeleteResp{ + +} + +message GetReq{ + int64 id = 1; +} + +message GetResp{ + uint32 id = 1; + string title = 2; + uint64 createdAt = 3; + string content = 4; + string attachment = 5; + string attachmentName = 6; + string summary = 7; +} \ No newline at end of file diff --git a/api/pressreleases/press_releases.validator.pb.go b/api/pressreleases/press_releases.validator.pb.go new file mode 100644 index 0000000..9481a14 --- /dev/null +++ b/api/pressreleases/press_releases.validator.pb.go @@ -0,0 +1,70 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: press_releases.proto + +package pressreleases + +import ( + fmt "fmt" + math "math" + proto "github.com/golang/protobuf/proto" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *Item) Validate() error { + return nil +} +func (this *ListReq) Validate() error { + return nil +} +func (this *ListResp) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *DisplayReq) Validate() error { + return nil +} +func (this *DisplayResp) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *EditReq) Validate() error { + return nil +} +func (this *EditResp) Validate() error { + return nil +} +func (this *CreateReq) Validate() error { + return nil +} +func (this *CreateResp) Validate() error { + return nil +} +func (this *DeleteReq) Validate() error { + return nil +} +func (this *DeleteResp) Validate() error { + return nil +} +func (this *GetReq) Validate() error { + return nil +} +func (this *GetResp) Validate() error { + return nil +} diff --git a/api/pressreleases/press_releases_triple.pb.go b/api/pressreleases/press_releases_triple.pb.go new file mode 100644 index 0000000..a3ba335 --- /dev/null +++ b/api/pressreleases/press_releases_triple.pb.go @@ -0,0 +1,372 @@ +// Code generated by protoc-gen-go-triple. DO NOT EDIT. +// versions: +// - protoc-gen-go-triple v1.0.8 +// - protoc v3.20.3 +// source: press_releases.proto + +package pressreleases + +import ( + context "context" + protocol "dubbo.apache.org/dubbo-go/v3/protocol" + dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3" + invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation" + grpc_go "github.com/dubbogo/grpc-go" + codes "github.com/dubbogo/grpc-go/codes" + metadata "github.com/dubbogo/grpc-go/metadata" + status "github.com/dubbogo/grpc-go/status" + common "github.com/dubbogo/triple/pkg/common" + constant "github.com/dubbogo/triple/pkg/common/constant" + triple "github.com/dubbogo/triple/pkg/triple" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc_go.SupportPackageIsVersion7 + +// PressReleasesClient is the client API for PressReleases service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type PressReleasesClient interface { + List(ctx context.Context, in *ListReq, opts ...grpc_go.CallOption) (*ListResp, common.ErrorWithAttachment) + Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment) + Edit(ctx context.Context, in *EditReq, opts ...grpc_go.CallOption) (*EditResp, common.ErrorWithAttachment) + Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) + Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment) + Get(ctx context.Context, in *GetReq, opts ...grpc_go.CallOption) (*GetResp, common.ErrorWithAttachment) +} + +type pressReleasesClient struct { + cc *triple.TripleConn +} + +type PressReleasesClientImpl struct { + List func(ctx context.Context, in *ListReq) (*ListResp, error) + Display func(ctx context.Context, in *DisplayReq) (*DisplayResp, error) + Edit func(ctx context.Context, in *EditReq) (*EditResp, error) + Create func(ctx context.Context, in *CreateReq) (*CreateResp, error) + Delete func(ctx context.Context, in *DeleteReq) (*DeleteResp, error) + Get func(ctx context.Context, in *GetReq) (*GetResp, error) +} + +func (c *PressReleasesClientImpl) GetDubboStub(cc *triple.TripleConn) PressReleasesClient { + return NewPressReleasesClient(cc) +} + +func (c *PressReleasesClientImpl) XXX_InterfaceName() string { + return "pressreleases.PressReleases" +} + +func NewPressReleasesClient(cc *triple.TripleConn) PressReleasesClient { + return &pressReleasesClient{cc} +} + +func (c *pressReleasesClient) List(ctx context.Context, in *ListReq, opts ...grpc_go.CallOption) (*ListResp, common.ErrorWithAttachment) { + out := new(ListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/List", in, out) +} + +func (c *pressReleasesClient) Display(ctx context.Context, in *DisplayReq, opts ...grpc_go.CallOption) (*DisplayResp, common.ErrorWithAttachment) { + out := new(DisplayResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Display", in, out) +} + +func (c *pressReleasesClient) Edit(ctx context.Context, in *EditReq, opts ...grpc_go.CallOption) (*EditResp, common.ErrorWithAttachment) { + out := new(EditResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Edit", in, out) +} + +func (c *pressReleasesClient) Create(ctx context.Context, in *CreateReq, opts ...grpc_go.CallOption) (*CreateResp, common.ErrorWithAttachment) { + out := new(CreateResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Create", in, out) +} + +func (c *pressReleasesClient) Delete(ctx context.Context, in *DeleteReq, opts ...grpc_go.CallOption) (*DeleteResp, common.ErrorWithAttachment) { + out := new(DeleteResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Delete", in, out) +} + +func (c *pressReleasesClient) Get(ctx context.Context, in *GetReq, opts ...grpc_go.CallOption) (*GetResp, common.ErrorWithAttachment) { + out := new(GetResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/Get", in, out) +} + +// PressReleasesServer is the server API for PressReleases service. +// All implementations must embed UnimplementedPressReleasesServer +// for forward compatibility +type PressReleasesServer interface { + List(context.Context, *ListReq) (*ListResp, error) + Display(context.Context, *DisplayReq) (*DisplayResp, error) + Edit(context.Context, *EditReq) (*EditResp, error) + Create(context.Context, *CreateReq) (*CreateResp, error) + Delete(context.Context, *DeleteReq) (*DeleteResp, error) + Get(context.Context, *GetReq) (*GetResp, error) + mustEmbedUnimplementedPressReleasesServer() +} + +// UnimplementedPressReleasesServer must be embedded to have forward compatible implementations. +type UnimplementedPressReleasesServer struct { + proxyImpl protocol.Invoker +} + +func (UnimplementedPressReleasesServer) List(context.Context, *ListReq) (*ListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedPressReleasesServer) Display(context.Context, *DisplayReq) (*DisplayResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Display not implemented") +} +func (UnimplementedPressReleasesServer) Edit(context.Context, *EditReq) (*EditResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Edit not implemented") +} +func (UnimplementedPressReleasesServer) Create(context.Context, *CreateReq) (*CreateResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") +} +func (UnimplementedPressReleasesServer) Delete(context.Context, *DeleteReq) (*DeleteResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") +} +func (UnimplementedPressReleasesServer) Get(context.Context, *GetReq) (*GetResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") +} +func (s *UnimplementedPressReleasesServer) XXX_SetProxyImpl(impl protocol.Invoker) { + s.proxyImpl = impl +} + +func (s *UnimplementedPressReleasesServer) XXX_GetProxyImpl() protocol.Invoker { + return s.proxyImpl +} + +func (s *UnimplementedPressReleasesServer) XXX_ServiceDesc() *grpc_go.ServiceDesc { + return &PressReleases_ServiceDesc +} +func (s *UnimplementedPressReleasesServer) XXX_InterfaceName() string { + return "pressreleases.PressReleases" +} + +func (UnimplementedPressReleasesServer) mustEmbedUnimplementedPressReleasesServer() {} + +// UnsafePressReleasesServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to PressReleasesServer will +// result in compilation errors. +type UnsafePressReleasesServer interface { + mustEmbedUnimplementedPressReleasesServer() +} + +func RegisterPressReleasesServer(s grpc_go.ServiceRegistrar, srv PressReleasesServer) { + s.RegisterService(&PressReleases_ServiceDesc, srv) +} + +func _PressReleases_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ListReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("List", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _PressReleases_Display_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DisplayReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Display", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _PressReleases_Edit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(EditReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Edit", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _PressReleases_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Create", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _PressReleases_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Delete", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _PressReleases_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("Get", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +// PressReleases_ServiceDesc is the grpc_go.ServiceDesc for PressReleases service. +// It's only intended for direct use with grpc_go.RegisterService, +// and not to be introspected or modified (even as a copy) +var PressReleases_ServiceDesc = grpc_go.ServiceDesc{ + ServiceName: "pressreleases.PressReleases", + HandlerType: (*PressReleasesServer)(nil), + Methods: []grpc_go.MethodDesc{ + { + MethodName: "List", + Handler: _PressReleases_List_Handler, + }, + { + MethodName: "Display", + Handler: _PressReleases_Display_Handler, + }, + { + MethodName: "Edit", + Handler: _PressReleases_Edit_Handler, + }, + { + MethodName: "Create", + Handler: _PressReleases_Create_Handler, + }, + { + MethodName: "Delete", + Handler: _PressReleases_Delete_Handler, + }, + { + MethodName: "Get", + Handler: _PressReleases_Get_Handler, + }, + }, + Streams: []grpc_go.StreamDesc{}, + Metadata: "press_releases.proto", +} diff --git a/api/secFilings/secFilings.pb.go b/api/secFilings/secFilings.pb.go new file mode 100644 index 0000000..41fe870 --- /dev/null +++ b/api/secFilings/secFilings.pb.go @@ -0,0 +1,1900 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 +// source: secFilings.proto + +package secFilings + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ListFormTypeReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize int32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` +} + +func (x *ListFormTypeReq) Reset() { + *x = ListFormTypeReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListFormTypeReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFormTypeReq) ProtoMessage() {} + +func (x *ListFormTypeReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFormTypeReq.ProtoReflect.Descriptor instead. +func (*ListFormTypeReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{0} +} + +func (x *ListFormTypeReq) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *ListFormTypeReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type FormTypeListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"` + FormType []*FormType `protobuf:"bytes,2,rep,name=formType,proto3" json:"formType,omitempty"` +} + +func (x *FormTypeListResp) Reset() { + *x = FormTypeListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FormTypeListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FormTypeListResp) ProtoMessage() {} + +func (x *FormTypeListResp) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FormTypeListResp.ProtoReflect.Descriptor instead. +func (*FormTypeListResp) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{1} +} + +func (x *FormTypeListResp) GetTotal() int64 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *FormTypeListResp) GetFormType() []*FormType { + if x != nil { + return x.FormType + } + return nil +} + +type FormType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + FormType string `protobuf:"bytes,2,opt,name=formType,proto3" json:"formType,omitempty"` +} + +func (x *FormType) Reset() { + *x = FormType{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FormType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FormType) ProtoMessage() {} + +func (x *FormType) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FormType.ProtoReflect.Descriptor instead. +func (*FormType) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{2} +} + +func (x *FormType) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *FormType) GetFormType() string { + if x != nil { + return x.FormType + } + return "" +} + +type IsSecFilingExistReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FilingDate string `protobuf:"bytes,1,opt,name=filingDate,proto3" json:"filingDate,omitempty"` + Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form,omitempty"` + FinalLink string `protobuf:"bytes,3,opt,name=finalLink,proto3" json:"finalLink,omitempty"` +} + +func (x *IsSecFilingExistReq) Reset() { + *x = IsSecFilingExistReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsSecFilingExistReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsSecFilingExistReq) ProtoMessage() {} + +func (x *IsSecFilingExistReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsSecFilingExistReq.ProtoReflect.Descriptor instead. +func (*IsSecFilingExistReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{3} +} + +func (x *IsSecFilingExistReq) GetFilingDate() string { + if x != nil { + return x.FilingDate + } + return "" +} + +func (x *IsSecFilingExistReq) GetForm() string { + if x != nil { + return x.Form + } + return "" +} + +func (x *IsSecFilingExistReq) GetFinalLink() string { + if x != nil { + return x.FinalLink + } + return "" +} + +type IsSecFilingExistResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exist bool `protobuf:"varint,1,opt,name=exist,proto3" json:"exist,omitempty"` +} + +func (x *IsSecFilingExistResp) Reset() { + *x = IsSecFilingExistResp{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsSecFilingExistResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsSecFilingExistResp) ProtoMessage() {} + +func (x *IsSecFilingExistResp) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsSecFilingExistResp.ProtoReflect.Descriptor instead. +func (*IsSecFilingExistResp) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{4} +} + +func (x *IsSecFilingExistResp) GetExist() bool { + if x != nil { + return x.Exist + } + return false +} + +type CommonResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + FilingKey string `protobuf:"bytes,2,opt,name=filingKey,json=filing_key,proto3" json:"filingKey,omitempty"` +} + +func (x *CommonResp) Reset() { + *x = CommonResp{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommonResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommonResp) ProtoMessage() {} + +func (x *CommonResp) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommonResp.ProtoReflect.Descriptor instead. +func (*CommonResp) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{5} +} + +func (x *CommonResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *CommonResp) GetFilingKey() string { + if x != nil { + return x.FilingKey + } + return "" +} + +type SecFiling struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Idx int32 `protobuf:"varint,1,opt,name=idx,proto3" json:"idx,omitempty"` + FilingKey string `protobuf:"bytes,2,opt,name=filingKey,json=filing_key,proto3" json:"filingKey,omitempty"` + FilingDate string `protobuf:"bytes,3,opt,name=filingDate,json=filing_date,proto3" json:"filingDate,omitempty"` + Form string `protobuf:"bytes,4,opt,name=form,proto3" json:"form,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + FormDescription string `protobuf:"bytes,6,opt,name=formDescription,json=form_description,proto3" json:"formDescription,omitempty"` + FileLink string `protobuf:"bytes,7,opt,name=fileLink,json=file_link,proto3" json:"fileLink,omitempty"` + DataFiles []*DataFiles `protobuf:"bytes,8,rep,name=dataFiles,json=data_files,proto3" json:"dataFiles,omitempty"` + PdfFile string `protobuf:"bytes,9,opt,name=pdfFile,json=pdf_file,proto3" json:"pdfFile,omitempty"` + WordFile string `protobuf:"bytes,10,opt,name=wordFile,json=word_file,proto3" json:"wordFile,omitempty"` + ExcelFile string `protobuf:"bytes,11,opt,name=excelFile,json=excel_file,proto3" json:"excelFile,omitempty"` + Status int32 `protobuf:"varint,12,opt,name=status,proto3" json:"status,omitempty"` + Operator string `protobuf:"bytes,13,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,14,opt,name=operatorId,json=operator_id,proto3" json:"operatorId,omitempty"` + CreatedAt string `protobuf:"bytes,15,opt,name=createdAt,json=created_at,proto3" json:"createdAt,omitempty"` + UpdatedAt string `protobuf:"bytes,16,opt,name=updatedAt,json=updated_at,proto3" json:"updatedAt,omitempty"` +} + +func (x *SecFiling) Reset() { + *x = SecFiling{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecFiling) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecFiling) ProtoMessage() {} + +func (x *SecFiling) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecFiling.ProtoReflect.Descriptor instead. +func (*SecFiling) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{6} +} + +func (x *SecFiling) GetIdx() int32 { + if x != nil { + return x.Idx + } + return 0 +} + +func (x *SecFiling) GetFilingKey() string { + if x != nil { + return x.FilingKey + } + return "" +} + +func (x *SecFiling) GetFilingDate() string { + if x != nil { + return x.FilingDate + } + return "" +} + +func (x *SecFiling) GetForm() string { + if x != nil { + return x.Form + } + return "" +} + +func (x *SecFiling) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *SecFiling) GetFormDescription() string { + if x != nil { + return x.FormDescription + } + return "" +} + +func (x *SecFiling) GetFileLink() string { + if x != nil { + return x.FileLink + } + return "" +} + +func (x *SecFiling) GetDataFiles() []*DataFiles { + if x != nil { + return x.DataFiles + } + return nil +} + +func (x *SecFiling) GetPdfFile() string { + if x != nil { + return x.PdfFile + } + return "" +} + +func (x *SecFiling) GetWordFile() string { + if x != nil { + return x.WordFile + } + return "" +} + +func (x *SecFiling) GetExcelFile() string { + if x != nil { + return x.ExcelFile + } + return "" +} + +func (x *SecFiling) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *SecFiling) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *SecFiling) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +func (x *SecFiling) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *SecFiling) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +type DataFiles struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` + FileUrl string `protobuf:"bytes,2,opt,name=fileUrl,json=file_url,proto3" json:"fileUrl,omitempty"` +} + +func (x *DataFiles) Reset() { + *x = DataFiles{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataFiles) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataFiles) ProtoMessage() {} + +func (x *DataFiles) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataFiles.ProtoReflect.Descriptor instead. +func (*DataFiles) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{7} +} + +func (x *DataFiles) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *DataFiles) GetFileUrl() string { + if x != nil { + return x.FileUrl + } + return "" +} + +type CreateSecFilingReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FilingDate string `protobuf:"bytes,1,opt,name=filingDate,proto3" json:"filingDate,omitempty"` + Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + FormDescription string `protobuf:"bytes,4,opt,name=formDescription,proto3" json:"formDescription,omitempty"` + FileLink string `protobuf:"bytes,5,opt,name=fileLink,proto3" json:"fileLink,omitempty"` + DataFiles []*DataFiles `protobuf:"bytes,6,rep,name=dataFiles,proto3" json:"dataFiles,omitempty"` + PdfFile string `protobuf:"bytes,7,opt,name=pdfFile,proto3" json:"pdfFile,omitempty"` + WordFile string `protobuf:"bytes,8,opt,name=wordFile,proto3" json:"wordFile,omitempty"` + ExcelFile string `protobuf:"bytes,9,opt,name=excelFile,proto3" json:"excelFile,omitempty"` + Operator string `protobuf:"bytes,10,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,11,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *CreateSecFilingReq) Reset() { + *x = CreateSecFilingReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateSecFilingReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSecFilingReq) ProtoMessage() {} + +func (x *CreateSecFilingReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSecFilingReq.ProtoReflect.Descriptor instead. +func (*CreateSecFilingReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{8} +} + +func (x *CreateSecFilingReq) GetFilingDate() string { + if x != nil { + return x.FilingDate + } + return "" +} + +func (x *CreateSecFilingReq) GetForm() string { + if x != nil { + return x.Form + } + return "" +} + +func (x *CreateSecFilingReq) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CreateSecFilingReq) GetFormDescription() string { + if x != nil { + return x.FormDescription + } + return "" +} + +func (x *CreateSecFilingReq) GetFileLink() string { + if x != nil { + return x.FileLink + } + return "" +} + +func (x *CreateSecFilingReq) GetDataFiles() []*DataFiles { + if x != nil { + return x.DataFiles + } + return nil +} + +func (x *CreateSecFilingReq) GetPdfFile() string { + if x != nil { + return x.PdfFile + } + return "" +} + +func (x *CreateSecFilingReq) GetWordFile() string { + if x != nil { + return x.WordFile + } + return "" +} + +func (x *CreateSecFilingReq) GetExcelFile() string { + if x != nil { + return x.ExcelFile + } + return "" +} + +func (x *CreateSecFilingReq) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *CreateSecFilingReq) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +type UpdateSecFilingReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey,omitempty"` + Form string `protobuf:"bytes,2,opt,name=form,proto3" json:"form,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + FormDescription string `protobuf:"bytes,4,opt,name=formDescription,proto3" json:"formDescription,omitempty"` + FileLink string `protobuf:"bytes,5,opt,name=fileLink,proto3" json:"fileLink,omitempty"` + DataFiles []*DataFiles `protobuf:"bytes,6,rep,name=dataFiles,proto3" json:"dataFiles,omitempty"` + PdfFile string `protobuf:"bytes,7,opt,name=pdfFile,proto3" json:"pdfFile,omitempty"` + WordFile string `protobuf:"bytes,8,opt,name=wordFile,proto3" json:"wordFile,omitempty"` + ExcelFile string `protobuf:"bytes,9,opt,name=excelFile,proto3" json:"excelFile,omitempty"` + Operator string `protobuf:"bytes,10,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,11,opt,name=operatorId,proto3" json:"operatorId,omitempty"` + FilingDate string `protobuf:"bytes,12,opt,name=filingDate,proto3" json:"filingDate,omitempty"` +} + +func (x *UpdateSecFilingReq) Reset() { + *x = UpdateSecFilingReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateSecFilingReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSecFilingReq) ProtoMessage() {} + +func (x *UpdateSecFilingReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSecFilingReq.ProtoReflect.Descriptor instead. +func (*UpdateSecFilingReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{9} +} + +func (x *UpdateSecFilingReq) GetFilingKey() string { + if x != nil { + return x.FilingKey + } + return "" +} + +func (x *UpdateSecFilingReq) GetForm() string { + if x != nil { + return x.Form + } + return "" +} + +func (x *UpdateSecFilingReq) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UpdateSecFilingReq) GetFormDescription() string { + if x != nil { + return x.FormDescription + } + return "" +} + +func (x *UpdateSecFilingReq) GetFileLink() string { + if x != nil { + return x.FileLink + } + return "" +} + +func (x *UpdateSecFilingReq) GetDataFiles() []*DataFiles { + if x != nil { + return x.DataFiles + } + return nil +} + +func (x *UpdateSecFilingReq) GetPdfFile() string { + if x != nil { + return x.PdfFile + } + return "" +} + +func (x *UpdateSecFilingReq) GetWordFile() string { + if x != nil { + return x.WordFile + } + return "" +} + +func (x *UpdateSecFilingReq) GetExcelFile() string { + if x != nil { + return x.ExcelFile + } + return "" +} + +func (x *UpdateSecFilingReq) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *UpdateSecFilingReq) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +func (x *UpdateSecFilingReq) GetFilingDate() string { + if x != nil { + return x.FilingDate + } + return "" +} + +type DetailSecFilingReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey,omitempty"` +} + +func (x *DetailSecFilingReq) Reset() { + *x = DetailSecFilingReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DetailSecFilingReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DetailSecFilingReq) ProtoMessage() {} + +func (x *DetailSecFilingReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DetailSecFilingReq.ProtoReflect.Descriptor instead. +func (*DetailSecFilingReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{10} +} + +func (x *DetailSecFilingReq) GetFilingKey() string { + if x != nil { + return x.FilingKey + } + return "" +} + +type SecFilingDetailResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + Data *SecFiling `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *SecFilingDetailResp) Reset() { + *x = SecFilingDetailResp{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecFilingDetailResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecFilingDetailResp) ProtoMessage() {} + +func (x *SecFilingDetailResp) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecFilingDetailResp.ProtoReflect.Descriptor instead. +func (*SecFilingDetailResp) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{11} +} + +func (x *SecFilingDetailResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *SecFilingDetailResp) GetData() *SecFiling { + if x != nil { + return x.Data + } + return nil +} + +type ListSecFilingReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page uint32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Form string `protobuf:"bytes,3,opt,name=form,proto3" json:"form,omitempty"` + FilingDateBegin string `protobuf:"bytes,4,opt,name=filingDateBegin,proto3" json:"filingDateBegin,omitempty"` + FilingDateEnd string `protobuf:"bytes,5,opt,name=filingDateEnd,proto3" json:"filingDateEnd,omitempty"` + Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *ListSecFilingReq) Reset() { + *x = ListSecFilingReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListSecFilingReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSecFilingReq) ProtoMessage() {} + +func (x *ListSecFilingReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListSecFilingReq.ProtoReflect.Descriptor instead. +func (*ListSecFilingReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{12} +} + +func (x *ListSecFilingReq) GetPage() uint32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *ListSecFilingReq) GetPageSize() uint32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListSecFilingReq) GetForm() string { + if x != nil { + return x.Form + } + return "" +} + +func (x *ListSecFilingReq) GetFilingDateBegin() string { + if x != nil { + return x.FilingDateBegin + } + return "" +} + +func (x *ListSecFilingReq) GetFilingDateEnd() string { + if x != nil { + return x.FilingDateEnd + } + return "" +} + +func (x *ListSecFilingReq) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +type SecFilingListResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Data []*SecFiling `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *SecFilingListResp) Reset() { + *x = SecFilingListResp{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SecFilingListResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecFilingListResp) ProtoMessage() {} + +func (x *SecFilingListResp) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecFilingListResp.ProtoReflect.Descriptor instead. +func (*SecFilingListResp) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{13} +} + +func (x *SecFilingListResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *SecFilingListResp) GetTotal() uint32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *SecFilingListResp) GetData() []*SecFiling { + if x != nil { + return x.Data + } + return nil +} + +type WebListSecFilingReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page uint32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + PageSize uint32 `protobuf:"varint,2,opt,name=pageSize,proto3" json:"pageSize,omitempty"` + Year string `protobuf:"bytes,3,opt,name=year,proto3" json:"year,omitempty"` + SortField string `protobuf:"bytes,4,opt,name=sortField,proto3" json:"sortField,omitempty"` + SortOrder string `protobuf:"bytes,5,opt,name=sortOrder,proto3" json:"sortOrder,omitempty"` +} + +func (x *WebListSecFilingReq) Reset() { + *x = WebListSecFilingReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WebListSecFilingReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebListSecFilingReq) ProtoMessage() {} + +func (x *WebListSecFilingReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WebListSecFilingReq.ProtoReflect.Descriptor instead. +func (*WebListSecFilingReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{14} +} + +func (x *WebListSecFilingReq) GetPage() uint32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *WebListSecFilingReq) GetPageSize() uint32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *WebListSecFilingReq) GetYear() string { + if x != nil { + return x.Year + } + return "" +} + +func (x *WebListSecFilingReq) GetSortField() string { + if x != nil { + return x.SortField + } + return "" +} + +func (x *WebListSecFilingReq) GetSortOrder() string { + if x != nil { + return x.SortOrder + } + return "" +} + +type WebListSecFilingResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + Data []*SecFiling `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *WebListSecFilingResp) Reset() { + *x = WebListSecFilingResp{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WebListSecFilingResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WebListSecFilingResp) ProtoMessage() {} + +func (x *WebListSecFilingResp) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WebListSecFilingResp.ProtoReflect.Descriptor instead. +func (*WebListSecFilingResp) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{15} +} + +func (x *WebListSecFilingResp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *WebListSecFilingResp) GetTotal() uint32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *WebListSecFilingResp) GetData() []*SecFiling { + if x != nil { + return x.Data + } + return nil +} + +type DeleteSecFilingReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey,omitempty"` + Operator string `protobuf:"bytes,2,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,3,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *DeleteSecFilingReq) Reset() { + *x = DeleteSecFilingReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteSecFilingReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteSecFilingReq) ProtoMessage() {} + +func (x *DeleteSecFilingReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteSecFilingReq.ProtoReflect.Descriptor instead. +func (*DeleteSecFilingReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{16} +} + +func (x *DeleteSecFilingReq) GetFilingKey() string { + if x != nil { + return x.FilingKey + } + return "" +} + +func (x *DeleteSecFilingReq) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *DeleteSecFilingReq) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +type UpdateSecFilingStatusReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FilingKey string `protobuf:"bytes,1,opt,name=filingKey,proto3" json:"filingKey,omitempty"` + Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + Operator string `protobuf:"bytes,3,opt,name=operator,proto3" json:"operator,omitempty"` + OperatorId int32 `protobuf:"varint,4,opt,name=operatorId,proto3" json:"operatorId,omitempty"` +} + +func (x *UpdateSecFilingStatusReq) Reset() { + *x = UpdateSecFilingStatusReq{} + if protoimpl.UnsafeEnabled { + mi := &file_secFilings_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateSecFilingStatusReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateSecFilingStatusReq) ProtoMessage() {} + +func (x *UpdateSecFilingStatusReq) ProtoReflect() protoreflect.Message { + mi := &file_secFilings_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateSecFilingStatusReq.ProtoReflect.Descriptor instead. +func (*UpdateSecFilingStatusReq) Descriptor() ([]byte, []int) { + return file_secFilings_proto_rawDescGZIP(), []int{17} +} + +func (x *UpdateSecFilingStatusReq) GetFilingKey() string { + if x != nil { + return x.FilingKey + } + return "" +} + +func (x *UpdateSecFilingStatusReq) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *UpdateSecFilingStatusReq) GetOperator() string { + if x != nil { + return x.Operator + } + return "" +} + +func (x *UpdateSecFilingStatusReq) GetOperatorId() int32 { + if x != nil { + return x.OperatorId + } + return 0 +} + +var File_secFilings_proto protoreflect.FileDescriptor + +var file_secFilings_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0a, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x41, + 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x22, 0x5a, 0x0a, 0x10, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x08, 0x66, + 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x36, 0x0a, + 0x08, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x72, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x72, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x67, 0x0a, 0x13, 0x49, 0x73, 0x53, 0x65, 0x63, 0x46, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, + 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x2c, + 0x0a, 0x14, 0x49, 0x73, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x22, 0x3d, 0x0a, 0x0a, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x1d, 0x0a, 0x09, + 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xfb, 0x03, 0x0a, 0x09, + 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x69, 0x64, 0x78, 0x12, 0x1d, 0x0a, 0x09, 0x66, + 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x29, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x6d, + 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x34, 0x0a, 0x09, 0x64, 0x61, 0x74, + 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, + 0x19, 0x0a, 0x07, 0x70, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x64, 0x66, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x77, 0x6f, + 0x72, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x6f, + 0x72, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x6c, + 0x46, 0x69, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x63, 0x65, + 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x48, 0x0a, 0x09, 0x44, 0x61, 0x74, + 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, + 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x75, 0x72, 0x6c, 0x22, 0xf5, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x6f, 0x72, 0x6d, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x33, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x63, 0x46, + 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73, + 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x64, + 0x66, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x93, 0x03, 0x0a, 0x12, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, + 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x33, 0x0a, 0x09, + 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x64, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x77, + 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, + 0x6f, 0x72, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x6c, + 0x46, 0x69, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, + 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, + 0x65, 0x22, 0x32, 0x0a, 0x12, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x63, 0x46, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x69, 0x6e, + 0x67, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x22, 0x52, 0x0a, 0x13, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x29, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, + 0x69, 0x6e, 0x67, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xbe, 0x01, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, + 0x42, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x69, 0x6c, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, + 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x65, 0x45, + 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x66, 0x0a, 0x11, 0x53, 0x65, + 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x95, 0x01, 0x0a, 0x13, 0x57, 0x65, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, + 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, + 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x69, 0x0a, 0x14, 0x57, 0x65, + 0x62, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6e, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, + 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x66, + 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x49, 0x64, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x49, 0x64, 0x32, 0xf1, 0x05, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, + 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x4b, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, + 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, + 0x0f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, + 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x53, 0x65, + 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x46, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, + 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x57, 0x0a, 0x10, 0x49, 0x73, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x45, + 0x78, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x49, 0x73, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x49, 0x73, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x15, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x24, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x46, 0x6f, 0x72, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x57, 0x0a, 0x10, 0x57, 0x65, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, + 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x57, 0x65, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x73, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x57, 0x65, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x73, + 0x65, 0x63, 0x46, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_secFilings_proto_rawDescOnce sync.Once + file_secFilings_proto_rawDescData = file_secFilings_proto_rawDesc +) + +func file_secFilings_proto_rawDescGZIP() []byte { + file_secFilings_proto_rawDescOnce.Do(func() { + file_secFilings_proto_rawDescData = protoimpl.X.CompressGZIP(file_secFilings_proto_rawDescData) + }) + return file_secFilings_proto_rawDescData +} + +var file_secFilings_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_secFilings_proto_goTypes = []interface{}{ + (*ListFormTypeReq)(nil), // 0: secFilings.ListFormTypeReq + (*FormTypeListResp)(nil), // 1: secFilings.FormTypeListResp + (*FormType)(nil), // 2: secFilings.FormType + (*IsSecFilingExistReq)(nil), // 3: secFilings.IsSecFilingExistReq + (*IsSecFilingExistResp)(nil), // 4: secFilings.IsSecFilingExistResp + (*CommonResp)(nil), // 5: secFilings.CommonResp + (*SecFiling)(nil), // 6: secFilings.SecFiling + (*DataFiles)(nil), // 7: secFilings.DataFiles + (*CreateSecFilingReq)(nil), // 8: secFilings.CreateSecFilingReq + (*UpdateSecFilingReq)(nil), // 9: secFilings.UpdateSecFilingReq + (*DetailSecFilingReq)(nil), // 10: secFilings.DetailSecFilingReq + (*SecFilingDetailResp)(nil), // 11: secFilings.SecFilingDetailResp + (*ListSecFilingReq)(nil), // 12: secFilings.ListSecFilingReq + (*SecFilingListResp)(nil), // 13: secFilings.SecFilingListResp + (*WebListSecFilingReq)(nil), // 14: secFilings.WebListSecFilingReq + (*WebListSecFilingResp)(nil), // 15: secFilings.WebListSecFilingResp + (*DeleteSecFilingReq)(nil), // 16: secFilings.DeleteSecFilingReq + (*UpdateSecFilingStatusReq)(nil), // 17: secFilings.UpdateSecFilingStatusReq +} +var file_secFilings_proto_depIdxs = []int32{ + 2, // 0: secFilings.FormTypeListResp.formType:type_name -> secFilings.FormType + 7, // 1: secFilings.SecFiling.dataFiles:type_name -> secFilings.DataFiles + 7, // 2: secFilings.CreateSecFilingReq.dataFiles:type_name -> secFilings.DataFiles + 7, // 3: secFilings.UpdateSecFilingReq.dataFiles:type_name -> secFilings.DataFiles + 6, // 4: secFilings.SecFilingDetailResp.data:type_name -> secFilings.SecFiling + 6, // 5: secFilings.SecFilingListResp.data:type_name -> secFilings.SecFiling + 6, // 6: secFilings.WebListSecFilingResp.data:type_name -> secFilings.SecFiling + 8, // 7: secFilings.SecFilings.CreateSecFiling:input_type -> secFilings.CreateSecFilingReq + 9, // 8: secFilings.SecFilings.UpdateSecFiling:input_type -> secFilings.UpdateSecFilingReq + 10, // 9: secFilings.SecFilings.DetailSecFiling:input_type -> secFilings.DetailSecFilingReq + 12, // 10: secFilings.SecFilings.ListSecFiling:input_type -> secFilings.ListSecFilingReq + 16, // 11: secFilings.SecFilings.DeleteSecFiling:input_type -> secFilings.DeleteSecFilingReq + 3, // 12: secFilings.SecFilings.IsSecFilingExist:input_type -> secFilings.IsSecFilingExistReq + 17, // 13: secFilings.SecFilings.UpdateSecFilingStatus:input_type -> secFilings.UpdateSecFilingStatusReq + 0, // 14: secFilings.SecFilings.ListFormType:input_type -> secFilings.ListFormTypeReq + 14, // 15: secFilings.SecFilings.WebListSecFiling:input_type -> secFilings.WebListSecFilingReq + 5, // 16: secFilings.SecFilings.CreateSecFiling:output_type -> secFilings.CommonResp + 5, // 17: secFilings.SecFilings.UpdateSecFiling:output_type -> secFilings.CommonResp + 11, // 18: secFilings.SecFilings.DetailSecFiling:output_type -> secFilings.SecFilingDetailResp + 13, // 19: secFilings.SecFilings.ListSecFiling:output_type -> secFilings.SecFilingListResp + 5, // 20: secFilings.SecFilings.DeleteSecFiling:output_type -> secFilings.CommonResp + 4, // 21: secFilings.SecFilings.IsSecFilingExist:output_type -> secFilings.IsSecFilingExistResp + 5, // 22: secFilings.SecFilings.UpdateSecFilingStatus:output_type -> secFilings.CommonResp + 1, // 23: secFilings.SecFilings.ListFormType:output_type -> secFilings.FormTypeListResp + 15, // 24: secFilings.SecFilings.WebListSecFiling:output_type -> secFilings.WebListSecFilingResp + 16, // [16:25] is the sub-list for method output_type + 7, // [7:16] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_secFilings_proto_init() } +func file_secFilings_proto_init() { + if File_secFilings_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_secFilings_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListFormTypeReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FormTypeListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FormType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsSecFilingExistReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsSecFilingExistResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommonResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecFiling); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataFiles); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateSecFilingReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateSecFilingReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DetailSecFilingReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecFilingDetailResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSecFilingReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SecFilingListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WebListSecFilingReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WebListSecFilingResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteSecFilingReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_secFilings_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateSecFilingStatusReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_secFilings_proto_rawDesc, + NumEnums: 0, + NumMessages: 18, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_secFilings_proto_goTypes, + DependencyIndexes: file_secFilings_proto_depIdxs, + MessageInfos: file_secFilings_proto_msgTypes, + }.Build() + File_secFilings_proto = out.File + file_secFilings_proto_rawDesc = nil + file_secFilings_proto_goTypes = nil + file_secFilings_proto_depIdxs = nil +} diff --git a/api/secFilings/secFilings.proto b/api/secFilings/secFilings.proto new file mode 100644 index 0000000..0092699 --- /dev/null +++ b/api/secFilings/secFilings.proto @@ -0,0 +1,135 @@ +syntax = "proto3"; +package secFilings; +//import "descriptor.proto"; +//import "validator.proto"; + +option go_package = "./;secFilings"; + +service SecFilings{ + rpc CreateSecFiling(CreateSecFilingReq) returns (CommonResp) {} + rpc UpdateSecFiling(UpdateSecFilingReq) returns (CommonResp) {} + rpc DetailSecFiling(DetailSecFilingReq) returns (SecFilingDetailResp) {} + rpc ListSecFiling(ListSecFilingReq) returns (SecFilingListResp) {} + rpc DeleteSecFiling(DeleteSecFilingReq)returns(CommonResp){} + rpc IsSecFilingExist(IsSecFilingExistReq) returns (IsSecFilingExistResp) {} + rpc UpdateSecFilingStatus(UpdateSecFilingStatusReq) returns(CommonResp) {} + rpc ListFormType(ListFormTypeReq) returns (FormTypeListResp) {} + rpc WebListSecFiling(WebListSecFilingReq) returns (WebListSecFilingResp) {} +} +message ListFormTypeReq{ + int32 page = 1; + int32 pageSize = 2; +} +message FormTypeListResp{ + int64 total = 1; + repeated FormType formType = 2; +} +message FormType{ + int32 id = 1; + string formType = 2; +} +message IsSecFilingExistReq{ + string filingDate = 1; + string form = 2; + string finalLink = 3; +} +message IsSecFilingExistResp{ + bool exist = 1; +} +message CommonResp{ + string msg = 1 [json_name="msg"]; + string filingKey = 2[json_name="filing_key"]; +} +message SecFiling{ + int32 idx = 1 [json_name="idx"]; + string filingKey = 2[json_name="filing_key"]; + string filingDate = 3[json_name="filing_date"]; + string form = 4[json_name="form"]; + string description = 5[json_name="description"]; + string formDescription = 6[json_name="form_description"]; + string fileLink = 7[json_name="file_link"]; + repeated DataFiles dataFiles = 8[json_name="data_files"]; + string pdfFile = 9[json_name="pdf_file"]; + string wordFile = 10[json_name="word_file"]; + string excelFile = 11[json_name="excel_file"]; + int32 status = 12[json_name="status"]; + string operator = 13[json_name="operator"]; + int32 operatorId = 14[json_name="operator_id"]; + string createdAt =15[json_name="created_at"]; + string updatedAt=16[json_name="updated_at"]; +} +message DataFiles { + string description = 1[json_name="description"]; + string fileUrl = 2[json_name="file_url"]; +} +message CreateSecFilingReq{ + string filingDate = 1; + string form = 2; + string description = 3; + string formDescription = 4; + string fileLink = 5; + repeated DataFiles dataFiles = 6; + string pdfFile = 7; + string wordFile = 8; + string excelFile = 9; + string operator = 10; + int32 operatorId = 11; +} +message UpdateSecFilingReq{ + string filingKey = 1; + string form = 2; + string description = 3; + string formDescription = 4; + string fileLink = 5; + repeated DataFiles dataFiles = 6; + string pdfFile = 7; + string wordFile = 8; + string excelFile = 9; + string operator = 10; + int32 operatorId = 11; + string filingDate = 12; + +} +message DetailSecFilingReq{ + string filingKey = 1; +} +message SecFilingDetailResp{ + string msg = 1; + SecFiling data = 2; +} +message ListSecFilingReq{ + uint32 page = 1; + uint32 pageSize = 2; + string form = 3; + string filingDateBegin = 4; + string filingDateEnd = 5; + int32 status = 6; +} +message SecFilingListResp{ + string msg = 1 [json_name="msg"]; + uint32 total = 2 [json_name="total"]; + repeated SecFiling data = 3 [json_name="data"]; +} +message WebListSecFilingReq{ + uint32 page = 1; + uint32 pageSize = 2; + string year = 3; + string sortField = 4; + string sortOrder = 5; +} +message WebListSecFilingResp{ + string msg = 1 [json_name="msg"]; + uint32 total = 2 [json_name="total"]; + repeated SecFiling data = 3 [json_name="data"]; +} +message DeleteSecFilingReq { + string filingKey = 1; + string operator = 2; + int32 operatorId = 3; +} +message UpdateSecFilingStatusReq{ + string filingKey = 1; + int32 status = 2; + string operator = 3; + int32 operatorId = 4; +} \ No newline at end of file diff --git a/api/secFilings/secFilings.validator.pb.go b/api/secFilings/secFilings.validator.pb.go new file mode 100644 index 0000000..cb0ef01 --- /dev/null +++ b/api/secFilings/secFilings.validator.pb.go @@ -0,0 +1,118 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: secFilings.proto + +package secFilings + +import ( + fmt "fmt" + math "math" + proto "github.com/golang/protobuf/proto" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *ListFormTypeReq) Validate() error { + return nil +} +func (this *FormTypeListResp) Validate() error { + for _, item := range this.FormType { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("FormType", err) + } + } + } + return nil +} +func (this *FormType) Validate() error { + return nil +} +func (this *IsSecFilingExistReq) Validate() error { + return nil +} +func (this *IsSecFilingExistResp) Validate() error { + return nil +} +func (this *CommonResp) Validate() error { + return nil +} +func (this *SecFiling) Validate() error { + for _, item := range this.DataFiles { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("DataFiles", err) + } + } + } + return nil +} +func (this *DataFiles) Validate() error { + return nil +} +func (this *CreateSecFilingReq) Validate() error { + for _, item := range this.DataFiles { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("DataFiles", err) + } + } + } + return nil +} +func (this *UpdateSecFilingReq) Validate() error { + for _, item := range this.DataFiles { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("DataFiles", err) + } + } + } + return nil +} +func (this *DetailSecFilingReq) Validate() error { + return nil +} +func (this *SecFilingDetailResp) Validate() error { + if this.Data != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Data); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + return nil +} +func (this *ListSecFilingReq) Validate() error { + return nil +} +func (this *SecFilingListResp) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *WebListSecFilingReq) Validate() error { + return nil +} +func (this *WebListSecFilingResp) Validate() error { + for _, item := range this.Data { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Data", err) + } + } + } + return nil +} +func (this *DeleteSecFilingReq) Validate() error { + return nil +} +func (this *UpdateSecFilingStatusReq) Validate() error { + return nil +} diff --git a/api/secFilings/secFilings_triple.pb.go b/api/secFilings/secFilings_triple.pb.go new file mode 100644 index 0000000..f3e8b04 --- /dev/null +++ b/api/secFilings/secFilings_triple.pb.go @@ -0,0 +1,507 @@ +// Code generated by protoc-gen-go-triple. DO NOT EDIT. +// versions: +// - protoc-gen-go-triple v1.0.8 +// - protoc v3.20.3 +// source: secFilings.proto + +package secFilings + +import ( + context "context" + protocol "dubbo.apache.org/dubbo-go/v3/protocol" + dubbo3 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3" + invocation "dubbo.apache.org/dubbo-go/v3/protocol/invocation" + grpc_go "github.com/dubbogo/grpc-go" + codes "github.com/dubbogo/grpc-go/codes" + metadata "github.com/dubbogo/grpc-go/metadata" + status "github.com/dubbogo/grpc-go/status" + common "github.com/dubbogo/triple/pkg/common" + constant "github.com/dubbogo/triple/pkg/common/constant" + triple "github.com/dubbogo/triple/pkg/triple" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc_go.SupportPackageIsVersion7 + +// SecFilingsClient is the client API for SecFilings service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type SecFilingsClient interface { + CreateSecFiling(ctx context.Context, in *CreateSecFilingReq, opts ...grpc_go.CallOption) (*CommonResp, common.ErrorWithAttachment) + UpdateSecFiling(ctx context.Context, in *UpdateSecFilingReq, opts ...grpc_go.CallOption) (*CommonResp, common.ErrorWithAttachment) + DetailSecFiling(ctx context.Context, in *DetailSecFilingReq, opts ...grpc_go.CallOption) (*SecFilingDetailResp, common.ErrorWithAttachment) + ListSecFiling(ctx context.Context, in *ListSecFilingReq, opts ...grpc_go.CallOption) (*SecFilingListResp, common.ErrorWithAttachment) + DeleteSecFiling(ctx context.Context, in *DeleteSecFilingReq, opts ...grpc_go.CallOption) (*CommonResp, common.ErrorWithAttachment) + IsSecFilingExist(ctx context.Context, in *IsSecFilingExistReq, opts ...grpc_go.CallOption) (*IsSecFilingExistResp, common.ErrorWithAttachment) + UpdateSecFilingStatus(ctx context.Context, in *UpdateSecFilingStatusReq, opts ...grpc_go.CallOption) (*CommonResp, common.ErrorWithAttachment) + ListFormType(ctx context.Context, in *ListFormTypeReq, opts ...grpc_go.CallOption) (*FormTypeListResp, common.ErrorWithAttachment) + WebListSecFiling(ctx context.Context, in *WebListSecFilingReq, opts ...grpc_go.CallOption) (*WebListSecFilingResp, common.ErrorWithAttachment) +} + +type secFilingsClient struct { + cc *triple.TripleConn +} + +type SecFilingsClientImpl struct { + CreateSecFiling func(ctx context.Context, in *CreateSecFilingReq) (*CommonResp, error) + UpdateSecFiling func(ctx context.Context, in *UpdateSecFilingReq) (*CommonResp, error) + DetailSecFiling func(ctx context.Context, in *DetailSecFilingReq) (*SecFilingDetailResp, error) + ListSecFiling func(ctx context.Context, in *ListSecFilingReq) (*SecFilingListResp, error) + DeleteSecFiling func(ctx context.Context, in *DeleteSecFilingReq) (*CommonResp, error) + IsSecFilingExist func(ctx context.Context, in *IsSecFilingExistReq) (*IsSecFilingExistResp, error) + UpdateSecFilingStatus func(ctx context.Context, in *UpdateSecFilingStatusReq) (*CommonResp, error) + ListFormType func(ctx context.Context, in *ListFormTypeReq) (*FormTypeListResp, error) + WebListSecFiling func(ctx context.Context, in *WebListSecFilingReq) (*WebListSecFilingResp, error) +} + +func (c *SecFilingsClientImpl) GetDubboStub(cc *triple.TripleConn) SecFilingsClient { + return NewSecFilingsClient(cc) +} + +func (c *SecFilingsClientImpl) XXX_InterfaceName() string { + return "secFilings.SecFilings" +} + +func NewSecFilingsClient(cc *triple.TripleConn) SecFilingsClient { + return &secFilingsClient{cc} +} + +func (c *secFilingsClient) CreateSecFiling(ctx context.Context, in *CreateSecFilingReq, opts ...grpc_go.CallOption) (*CommonResp, common.ErrorWithAttachment) { + out := new(CommonResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/CreateSecFiling", in, out) +} + +func (c *secFilingsClient) UpdateSecFiling(ctx context.Context, in *UpdateSecFilingReq, opts ...grpc_go.CallOption) (*CommonResp, common.ErrorWithAttachment) { + out := new(CommonResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateSecFiling", in, out) +} + +func (c *secFilingsClient) DetailSecFiling(ctx context.Context, in *DetailSecFilingReq, opts ...grpc_go.CallOption) (*SecFilingDetailResp, common.ErrorWithAttachment) { + out := new(SecFilingDetailResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DetailSecFiling", in, out) +} + +func (c *secFilingsClient) ListSecFiling(ctx context.Context, in *ListSecFilingReq, opts ...grpc_go.CallOption) (*SecFilingListResp, common.ErrorWithAttachment) { + out := new(SecFilingListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ListSecFiling", in, out) +} + +func (c *secFilingsClient) DeleteSecFiling(ctx context.Context, in *DeleteSecFilingReq, opts ...grpc_go.CallOption) (*CommonResp, common.ErrorWithAttachment) { + out := new(CommonResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeleteSecFiling", in, out) +} + +func (c *secFilingsClient) IsSecFilingExist(ctx context.Context, in *IsSecFilingExistReq, opts ...grpc_go.CallOption) (*IsSecFilingExistResp, common.ErrorWithAttachment) { + out := new(IsSecFilingExistResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/IsSecFilingExist", in, out) +} + +func (c *secFilingsClient) UpdateSecFilingStatus(ctx context.Context, in *UpdateSecFilingStatusReq, opts ...grpc_go.CallOption) (*CommonResp, common.ErrorWithAttachment) { + out := new(CommonResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdateSecFilingStatus", in, out) +} + +func (c *secFilingsClient) ListFormType(ctx context.Context, in *ListFormTypeReq, opts ...grpc_go.CallOption) (*FormTypeListResp, common.ErrorWithAttachment) { + out := new(FormTypeListResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ListFormType", in, out) +} + +func (c *secFilingsClient) WebListSecFiling(ctx context.Context, in *WebListSecFilingReq, opts ...grpc_go.CallOption) (*WebListSecFilingResp, common.ErrorWithAttachment) { + out := new(WebListSecFilingResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/WebListSecFiling", in, out) +} + +// SecFilingsServer is the server API for SecFilings service. +// All implementations must embed UnimplementedSecFilingsServer +// for forward compatibility +type SecFilingsServer interface { + CreateSecFiling(context.Context, *CreateSecFilingReq) (*CommonResp, error) + UpdateSecFiling(context.Context, *UpdateSecFilingReq) (*CommonResp, error) + DetailSecFiling(context.Context, *DetailSecFilingReq) (*SecFilingDetailResp, error) + ListSecFiling(context.Context, *ListSecFilingReq) (*SecFilingListResp, error) + DeleteSecFiling(context.Context, *DeleteSecFilingReq) (*CommonResp, error) + IsSecFilingExist(context.Context, *IsSecFilingExistReq) (*IsSecFilingExistResp, error) + UpdateSecFilingStatus(context.Context, *UpdateSecFilingStatusReq) (*CommonResp, error) + ListFormType(context.Context, *ListFormTypeReq) (*FormTypeListResp, error) + WebListSecFiling(context.Context, *WebListSecFilingReq) (*WebListSecFilingResp, error) + mustEmbedUnimplementedSecFilingsServer() +} + +// UnimplementedSecFilingsServer must be embedded to have forward compatible implementations. +type UnimplementedSecFilingsServer struct { + proxyImpl protocol.Invoker +} + +func (UnimplementedSecFilingsServer) CreateSecFiling(context.Context, *CreateSecFilingReq) (*CommonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateSecFiling not implemented") +} +func (UnimplementedSecFilingsServer) UpdateSecFiling(context.Context, *UpdateSecFilingReq) (*CommonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateSecFiling not implemented") +} +func (UnimplementedSecFilingsServer) DetailSecFiling(context.Context, *DetailSecFilingReq) (*SecFilingDetailResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method DetailSecFiling not implemented") +} +func (UnimplementedSecFilingsServer) ListSecFiling(context.Context, *ListSecFilingReq) (*SecFilingListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListSecFiling not implemented") +} +func (UnimplementedSecFilingsServer) DeleteSecFiling(context.Context, *DeleteSecFilingReq) (*CommonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteSecFiling not implemented") +} +func (UnimplementedSecFilingsServer) IsSecFilingExist(context.Context, *IsSecFilingExistReq) (*IsSecFilingExistResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method IsSecFilingExist not implemented") +} +func (UnimplementedSecFilingsServer) UpdateSecFilingStatus(context.Context, *UpdateSecFilingStatusReq) (*CommonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateSecFilingStatus not implemented") +} +func (UnimplementedSecFilingsServer) ListFormType(context.Context, *ListFormTypeReq) (*FormTypeListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFormType not implemented") +} +func (UnimplementedSecFilingsServer) WebListSecFiling(context.Context, *WebListSecFilingReq) (*WebListSecFilingResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method WebListSecFiling not implemented") +} +func (s *UnimplementedSecFilingsServer) XXX_SetProxyImpl(impl protocol.Invoker) { + s.proxyImpl = impl +} + +func (s *UnimplementedSecFilingsServer) XXX_GetProxyImpl() protocol.Invoker { + return s.proxyImpl +} + +func (s *UnimplementedSecFilingsServer) XXX_ServiceDesc() *grpc_go.ServiceDesc { + return &SecFilings_ServiceDesc +} +func (s *UnimplementedSecFilingsServer) XXX_InterfaceName() string { + return "secFilings.SecFilings" +} + +func (UnimplementedSecFilingsServer) mustEmbedUnimplementedSecFilingsServer() {} + +// UnsafeSecFilingsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to SecFilingsServer will +// result in compilation errors. +type UnsafeSecFilingsServer interface { + mustEmbedUnimplementedSecFilingsServer() +} + +func RegisterSecFilingsServer(s grpc_go.ServiceRegistrar, srv SecFilingsServer) { + s.RegisterService(&SecFilings_ServiceDesc, srv) +} + +func _SecFilings_CreateSecFiling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateSecFilingReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("CreateSecFiling", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _SecFilings_UpdateSecFiling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateSecFilingReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateSecFiling", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _SecFilings_DetailSecFiling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DetailSecFilingReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DetailSecFiling", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _SecFilings_ListSecFiling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ListSecFilingReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("ListSecFiling", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _SecFilings_DeleteSecFiling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteSecFilingReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeleteSecFiling", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _SecFilings_IsSecFilingExist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(IsSecFilingExistReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("IsSecFilingExist", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _SecFilings_UpdateSecFilingStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateSecFilingStatusReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdateSecFilingStatus", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _SecFilings_ListFormType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFormTypeReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("ListFormType", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _SecFilings_WebListSecFiling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(WebListSecFilingReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("WebListSecFiling", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +// SecFilings_ServiceDesc is the grpc_go.ServiceDesc for SecFilings service. +// It's only intended for direct use with grpc_go.RegisterService, +// and not to be introspected or modified (even as a copy) +var SecFilings_ServiceDesc = grpc_go.ServiceDesc{ + ServiceName: "secFilings.SecFilings", + HandlerType: (*SecFilingsServer)(nil), + Methods: []grpc_go.MethodDesc{ + { + MethodName: "CreateSecFiling", + Handler: _SecFilings_CreateSecFiling_Handler, + }, + { + MethodName: "UpdateSecFiling", + Handler: _SecFilings_UpdateSecFiling_Handler, + }, + { + MethodName: "DetailSecFiling", + Handler: _SecFilings_DetailSecFiling_Handler, + }, + { + MethodName: "ListSecFiling", + Handler: _SecFilings_ListSecFiling_Handler, + }, + { + MethodName: "DeleteSecFiling", + Handler: _SecFilings_DeleteSecFiling_Handler, + }, + { + MethodName: "IsSecFilingExist", + Handler: _SecFilings_IsSecFilingExist_Handler, + }, + { + MethodName: "UpdateSecFilingStatus", + Handler: _SecFilings_UpdateSecFilingStatus_Handler, + }, + { + MethodName: "ListFormType", + Handler: _SecFilings_ListFormType_Handler, + }, + { + MethodName: "WebListSecFiling", + Handler: _SecFilings_WebListSecFiling_Handler, + }, + }, + Streams: []grpc_go.StreamDesc{}, + Metadata: "secFilings.proto", +} diff --git a/clear.sh b/clear.sh index 68f07be..7af5074 100644 --- a/clear.sh +++ b/clear.sh @@ -1,3 +1,4 @@ ls api/account/*.pb.go | xargs -n1 -IX bash -c 'sed s/,omitempty// X > X.tmp && mv X{.tmp,}'; ls api/bundle/*.pb.go | xargs -n1 -IX bash -c 'sed s/,omitempty// X > X.tmp && mv X{.tmp,}'; ls api/order/*.pb.go | xargs -n1 -IX bash -c 'sed s/,omitempty// X > X.tmp && mv X{.tmp,}'; +ls api/secFilings/*.pb.go | xargs -n1 -IX bash -c 'sed s/,omitempty// X > X.tmp && mv X{.tmp,}'; diff --git a/cmd/app.go b/cmd/app.go index bcccfff..55bb6db 100644 --- a/cmd/app.go +++ b/cmd/app.go @@ -21,6 +21,7 @@ import ( "fmt" "fonchain-fiee/cmd/config" "fonchain-fiee/pkg/cache" + "fonchain-fiee/pkg/logger" "fonchain-fiee/pkg/router" ) @@ -44,6 +45,7 @@ func bootstrap() (err error) { fmt.Println(configEnv) fmt.Println(config.AppConfig) + logger.LogInit(config.AppConfig) ////redis redisConfig := cache.RedisConfig{ RedisDB: configEnv.Redis.RedisDB, diff --git a/cmd/config/config.go b/cmd/config/config.go index f02dec1..29a9bd0 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -109,10 +109,14 @@ type Redis struct { type System struct { Mode string + AppMode string Version string HttpPort string Host string RedirectUri string + Domain string + ErpHost string + FieeHost string } type Oss struct { AccessKeyId string @@ -122,6 +126,14 @@ type Oss struct { BaseDir string CdnHost string } + +type ZapLog struct { + Level string + Filename string + MaxSize int + MaxAge int + MaxBackups int +} type Mobile struct { SK string AK string @@ -141,6 +153,7 @@ type Config struct { Mobile Mobile `toml:"mobile"` Ai Ai `toml:"ai"` Oss Oss `toml:"oss"` + ZapLog ZapLog `toml:"zapLog"` } /********start-配置信息*********/ diff --git a/conf/.gitignore b/conf/.gitignore new file mode 100644 index 0000000..1dd36b4 --- /dev/null +++ b/conf/.gitignore @@ -0,0 +1,2 @@ +conf.ini +dubbogo.yaml \ No newline at end of file diff --git a/conf/dubbogo.yaml b/conf/dubbogo.yaml index 02a4946..be14665 100644 --- a/conf/dubbogo.yaml +++ b/conf/dubbogo.yaml @@ -26,4 +26,8 @@ dubbo: BundleClientImpl: protocol: tri retries: 0 - interface: com.fontree.microservices.fiee.bundle # must be compatible with grpc or dubbo-java \ No newline at end of file + interface: com.fontree.microservices.fiee.bundle # must be compatible with grpc or dubbo-java + SecFilingsClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.fiee.SecFiling \ No newline at end of file diff --git a/docs/dev/conf.ini b/docs/dev/conf.ini index 90addfe..bc81be3 100644 --- a/docs/dev/conf.ini +++ b/docs/dev/conf.ini @@ -1,10 +1,11 @@ [system] -Domain = "artistinfo" -AppMode = "debug" +Domain = "app" +AppMode = "dev" HttpPort = ":8085" Host = "https://common.szjixun.cn" RedirectUri = "/api/redirect/url" - +ErpHost = "http://114.218.158.24:9020" +FieeHost = "http://114.218.158.24:9020" [bos] Ak = "ALTAKxrqOQHnAN525Tb2GX4Bhe" Sk = "d2ecaa9d75114d3b9f42b99014198306" @@ -34,3 +35,10 @@ Password = "Gy.123456" [stripe] Webhookkey = "whsec_uOQpG6IZTqtfLuePIDtfLCGJPqedSCCN" + +[zapLog] +level = "info" +filename = "logs/fiee_zap.log" +max_size = 5 +max_age = 30 +max_backups = 30 diff --git a/docs/dev/dubbogo.yaml b/docs/dev/dubbogo.yaml index 2c63f90..5b5d3c3 100644 --- a/docs/dev/dubbogo.yaml +++ b/docs/dev/dubbogo.yaml @@ -37,8 +37,53 @@ dubbo: interface: com.fontree.microservices.common.micro.account.fiee # filter: echo,metrics,token,accesslog,sign,tps,generic_service,execute,pshutdown,auth,fonValidateFilter PaymentCentClientImpl: - interface: com.fontree.microservices.common.payment # must be compatible with grpc or dubbo-java - filter: cshutdown,sign,auth - params: - .accessKeyId: "Paymentksl" - .secretAccessKey: "BSDY-FDF1-Fontree_payment" + protocol: tri + retries: 0 + interface: com.fontree.microservices.common.payment.cent # must be compatible with grpc or dubbo-java + CastClientImpl: + protocol: tri + interface: com.fontree.microservices.fiee.multicast + SecFilingsClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.fiee.SecFiling + logger: + zap-config: + level: error # 日志级别 + development: false + disableCaller: false + disableStacktrace: false + encoding: "json" + # zap encoder 配置 + encoderConfig: + messageKey: "message" + levelKey: "level" + timeKey: "time" + nameKey: "logger" + callerKey: "caller" + stacktraceKey: "stacktrace" + lineEnding: "" + levelEncoder: "capitalColor" + timeEncoder: "iso8601" + durationEncoder: "seconds" + callerEncoder: "short" + nameEncoder: "" + EncodeTime: zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05.000"), + EncodeDuration: zapcore.SecondsDurationEncoder, + outputPaths: + - "stderr" + errorOutputPaths: + - "stderr" + lumberjack-config: + # 写日志的文件名称 + filename: "runtime/logs/fiee.log" + # 每个日志文件长度的最大大小,单位是 MiB。默认 100MiB + maxSize: 5 + # 日志保留的最大天数(只保留最近多少天的日志) + maxAge: 30 + # 只保留最近多少个日志文件,用于控制程序总日志的大小 + maxBackups: 30 + # 是否使用本地时间,默认使用 UTC 时间 + localTime: true + # 是否压缩日志文件,压缩方法 gzip + compress: false diff --git a/docs/prod/conf.ini b/docs/prod/conf.ini index 2c887ae..1fb820e 100644 --- a/docs/prod/conf.ini +++ b/docs/prod/conf.ini @@ -1,10 +1,11 @@ [system] -Domain = "artistinfo" -AppMode = "debug" +Domain = "app" +AppMode = "prod" HttpPort = ":8085" Host = "https://common.szjixun.cn" RedirectUri = "/api/redirect/url" - +ErpHost = "https://erpapi.fontree.cn" +FieeHost = "https://erpapi.fiee.com" [bos] Ak = "ALTAKxrqOQHnAN525Tb2GX4Bhe" Sk = "d2ecaa9d75114d3b9f42b99014198306" @@ -33,4 +34,11 @@ BaseDir = "fiee" CdnHost = "https://e-cdn.fontree.cn" [stripe] -Webhookkey = "whsec_Mol32WD1KcKHUdYsSwap0LR03q2g9qNY" \ No newline at end of file +Webhookkey = "whsec_Mol32WD1KcKHUdYsSwap0LR03q2g9qNY" + +[zapLog] +level = "info" +filename = "logs/fiee_zap.log" +max_size = 5 +max_age = 30 +max_backups = 30 diff --git a/docs/prod/dubbogo.yaml b/docs/prod/dubbogo.yaml index d27078e..7272e67 100644 --- a/docs/prod/dubbogo.yaml +++ b/docs/prod/dubbogo.yaml @@ -42,3 +42,50 @@ dubbo: params: .accessKeyId: "Paymentksl" .secretAccessKey: "BSDY-FDF1-Fontree_payment" + CastClientImpl: + protocol: tri + interface: com.fontree.microservices.fiee.multicast + SecFilingsClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.fiee.SecFiling + logger: + zap-config: + level: error # 日志级别 + development: false + disableCaller: false + disableStacktrace: false + encoding: "json" + # zap encoder 配置 + encoderConfig: + messageKey: "message" + levelKey: "level" + timeKey: "time" + nameKey: "logger" + callerKey: "caller" + stacktraceKey: "stacktrace" + lineEnding: "" + levelEncoder: "capitalColor" + timeEncoder: "iso8601" + durationEncoder: "seconds" + callerEncoder: "short" + nameEncoder: "" + EncodeTime: zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05.000"), + EncodeDuration: zapcore.SecondsDurationEncoder, + outputPaths: + - "stderr" + errorOutputPaths: + - "stderr" + lumberjack-config: + # 写日志的文件名称 + filename: "runtime/logs/fiee.log" + # 每个日志文件长度的最大大小,单位是 MiB。默认 100MiB + maxSize: 5 + # 日志保留的最大天数(只保留最近多少天的日志) + maxAge: 30 + # 只保留最近多少个日志文件,用于控制程序总日志的大小 + maxBackups: 30 + # 是否使用本地时间,默认使用 UTC 时间 + localTime: true + # 是否压缩日志文件,压缩方法 gzip + compress: false \ No newline at end of file diff --git a/docs/test/conf.ini b/docs/test/conf.ini index eff0c7d..75d53f1 100644 --- a/docs/test/conf.ini +++ b/docs/test/conf.ini @@ -1,25 +1,52 @@ [system] -Domain = "artistinfo" -AppMode = "debug" +Domain = "app" +AppMode = "test" HttpPort = ":8085" Host = "https://common.szjixun.cn" RedirectUri = "/api/redirect/url" - +ErpHost = "http://114.218.158.24:9020" +FieeHost = "http://114.218.158.24:9020" [bos] Ak = "ALTAKxrqOQHnAN525Tb2GX4Bhe" Sk = "d2ecaa9d75114d3b9f42b99014198306" -BucketName = "dci-file-new" +BucketName = "dci-file-new" BosUrl = ".bj.bcebos.com" -BosBaseDir = "fonchain-main" +BosBaseDir = "fiee" BosHttp = "https://" +BosDomain = "cdns.fontree.cn" +[oss] +AccessKeyId = "LTAI5tLz1fSK53FQAEC9uNSb" +AccessKeySecret = "oGB9chrQzQzITXR2IGv37Ji5WxZh4j" +Endpoint = "oss-cn-hangzhou.aliyuncs.com" +BucketName = "fontree-test" +BaseDir = "fiee" +CdnHost = "https://cdn-test.szjixun.cn" + +[oss] +AccessKeyId="LTAI5tLz1fSK53FQAEC9uNSb" +AccessKeysecret ="oGB9chrQzQzITXR2IGv37Ji5WxZh4j" +Endpoint = "oss-cn-hangzhou.aliyuncs.com" +BucketName = "fontree-test" +BaseDir = "fiee" +CdnHost = "https://cdn-test.szjixun.cn" [redis] RedisDB = "2" -RedisAddr = "redis:6379" -RedisPW = "root" +RedisAddr = "172.16.100.114:6379" +RedisPW = "kP6tW4tS3qB2dW4aE6uI5cX2" RedisDBNAme = "2" [ai] Host = "https://erpapi.fontree.cn" TelNum = "18021272627" -Password = "Gy.123456" \ No newline at end of file +Password = "Gy.123456" + +[stripe] +Webhookkey = "whsec_uOQpG6IZTqtfLuePIDtfLCGJPqedSCCN" + +[zapLog] +level = "info" +filename = "logs/fiee_zap.log" +max_size = 5 +max_age = 30 +max_backups = 30 diff --git a/docs/test/dubbogo.yaml b/docs/test/dubbogo.yaml index 8d599dc..503d30a 100644 --- a/docs/test/dubbogo.yaml +++ b/docs/test/dubbogo.yaml @@ -4,5 +4,86 @@ dubbo: protocol: zookeeper timeout: 3s # address: 121.229.45.214:9004 - address: 127.0.0.1:2181 - # address: 114.218.158.24:2181 \ No newline at end of file + address: 172.16.100.93:2181 + # address: 127.0.0.1:2181 + # address: 114.218.158.24:2181 + consumer: + filter: tracing + request-timeout: 30s + references: + OrderClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.common.order # must be compatible with grpc or dubbo-java + # filter: cshutdown,sign,fonDomainFilter,fonValidateFilter + params: + .accessKeyId: "SYD8-order-04" + .secretAccessKey: "Al-order-FDF112" + BundleClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.fiee.bundle # must be compatible with grpc or dubbo-java + AccountClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.common.Account + filter: echo,metrics,token,accesslog,sign,tps,generic_service,execute + params: + .accessKeyId: "Accountksl" + .secretAccessKey: "BSDY-FDF1-Fontree_account" + AccountFieeClientImpl: + protocol: tri + retries: 3 + interface: com.fontree.microservices.common.micro.account.fiee + # filter: echo,metrics,token,accesslog,sign,tps,generic_service,execute,pshutdown,auth,fonValidateFilter + PaymentCentClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.common.payment.cent # must be compatible with grpc or dubbo-java + CastClientImpl: + protocol: tri + interface: com.fontree.microservices.fiee.multicast + SecFilingsClientImpl: + protocol: tri + retries: 0 + interface: com.fontree.microservices.fiee.SecFiling + logger: + zap-config: + level: error # 日志级别 + development: false + disableCaller: false + disableStacktrace: false + encoding: "json" + # zap encoder 配置 + encoderConfig: + messageKey: "message" + levelKey: "level" + timeKey: "time" + nameKey: "logger" + callerKey: "caller" + stacktraceKey: "stacktrace" + lineEnding: "" + levelEncoder: "capitalColor" + timeEncoder: "iso8601" + durationEncoder: "seconds" + callerEncoder: "short" + nameEncoder: "" + EncodeTime: zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05.000"), + EncodeDuration: zapcore.SecondsDurationEncoder, + outputPaths: + - "stderr" + errorOutputPaths: + - "stderr" + lumberjack-config: + # 写日志的文件名称 + filename: "runtime/logs/fiee.log" + # 每个日志文件长度的最大大小,单位是 MiB。默认 100MiB + maxSize: 5 + # 日志保留的最大天数(只保留最近多少天的日志) + maxAge: 30 + # 只保留最近多少个日志文件,用于控制程序总日志的大小 + maxBackups: 30 + # 是否使用本地时间,默认使用 UTC 时间 + localTime: true + # 是否压缩日志文件,压缩方法 gzip + compress: false \ No newline at end of file diff --git a/go.mod b/go.mod index 9f87279..2c94ffb 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,14 @@ module fonchain-fiee -go 1.18 +go 1.21.3 + +toolchain go1.23.6 replace ( + //github.com/fonchain_enterprise/utils/objstorage => ../../tyfon-新/utils/objstorage + github.com/fonchain/utils/voice => ../utils/voice github.com/fonchain_enterprise/utils/aes => ../utils/aes github.com/fonchain_enterprise/utils/objstorage => ../utils/objstorage -//github.com/fonchain_enterprise/utils/objstorage => ../../tyfon-新/utils/objstorage ) // @@ -46,11 +49,11 @@ require ( github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.11.2 // indirect - github.com/goccy/go-json v0.10.2 // indirect + github.com/goccy/go-json v0.10.2 github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.0 github.com/jinzhu/copier v0.3.5 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/k0kubun/pp v3.0.1+incompatible // indirect @@ -101,6 +104,8 @@ require ( github.com/BurntSushi/toml v1.2.1 github.com/PuerkitoBio/goquery v1.8.1 github.com/disintegration/imaging v1.6.2 + github.com/envoyproxy/protoc-gen-validate v0.1.0 + github.com/fonchain/utils/voice v0.0.0-00010101000000-000000000000 github.com/fonchain_enterprise/utils/objstorage v0.0.0-00010101000000-000000000000 github.com/gin-contrib/pprof v1.4.0 github.com/go-redis/redis v6.15.9+incompatible @@ -116,7 +121,7 @@ require ( cloud.google.com/go v0.65.0 // indirect github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 // indirect github.com/alibaba/sentinel-golang v1.0.4 // indirect - github.com/aliyun/alibaba-cloud-sdk-go v1.61.18 // indirect + github.com/aliyun/alibaba-cloud-sdk-go v1.61.1376 // indirect github.com/andybalholm/cascadia v1.3.1 // indirect github.com/aws/aws-sdk-go v1.38.20 // indirect github.com/baidubce/bce-sdk-go v0.9.123 // indirect @@ -128,10 +133,10 @@ require ( github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1 // indirect github.com/coreos/go-semver v0.3.0 // indirect github.com/coreos/go-systemd/v22 v22.3.2 // indirect + github.com/dorlolo/simpleRequest v1.2.7 // indirect github.com/dubbogo/go-zookeeper v1.0.4-0.20211212162352-f9d2183d89d5 // indirect github.com/emicklei/go-restful/v3 v3.7.4 // indirect github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1 // indirect - github.com/envoyproxy/protoc-gen-validate v0.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-co-op/gocron v1.9.0 // indirect diff --git a/go.sum b/go.sum index e012c49..b893349 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,9 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alibaba/sentinel-golang v1.0.4 h1:i0wtMvNVdy7vM4DdzYrlC4r/Mpk1OKUUBurKKkWhEo8= github.com/alibaba/sentinel-golang v1.0.4/go.mod h1:Lag5rIYyJiPOylK8Kku2P+a23gdKMMqzQS7wTnjWEpk= -github.com/aliyun/alibaba-cloud-sdk-go v1.61.18 h1:zOVTBdCKFd9JbCKz9/nt+FovbjPFmb7mUnp8nH9fQBA= github.com/aliyun/alibaba-cloud-sdk-go v1.61.18/go.mod h1:v8ESoHo4SyHmuB4b1tJqDHxfTGEciD+yhvOU/5s1Rfk= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.1376 h1:lExo7heZgdFn5AbaNJEllbA0KSJ/Z8T7MphvMREJOOo= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.1376/go.mod h1:9CMdKNL3ynIGPpfTcdwTvIm8SGuAZYYC4jFVSSvE1YQ= github.com/aliyun/aliyun-oss-go-sdk v2.2.4+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/aliyun/aliyun-oss-go-sdk v2.2.6+incompatible h1:KXeJoM1wo9I/6xPTyt6qCxoSZnmASiAjlrr0dyTUKt8= github.com/aliyun/aliyun-oss-go-sdk v2.2.6+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= @@ -187,6 +188,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= +github.com/dorlolo/simpleRequest v1.2.7 h1:I6AlEhMBSZPNQ4QjpCevhpxsPRDa3lgDOxJYYfmPTU8= +github.com/dorlolo/simpleRequest v1.2.7/go.mod h1:koVT8DQu+JK40UoMNBQjt+zomlCW8FqE0ffEzjTOWYY= github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c= github.com/dubbogo/go-zookeeper v1.0.4-0.20211212162352-f9d2183d89d5 h1:XoR8SSVziXe698dt4uZYDfsmHpKLemqAgFyndQsq5Kw= github.com/dubbogo/go-zookeeper v1.0.4-0.20211212162352-f9d2183d89d5/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c= @@ -284,6 +287,7 @@ github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= @@ -1368,6 +1372,7 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= diff --git a/pkg/cache/common.go b/pkg/cache/common.go index f20e90f..8a3299e 100644 --- a/pkg/cache/common.go +++ b/pkg/cache/common.go @@ -17,7 +17,7 @@ type RedisConfig struct { RedisDbName string } -//LoadRedis 在中间件中初始化redis链接 +// LoadRedis 在中间件中初始化redis链接 func LoadRedis(configEnv RedisConfig) { db, _ := strconv.ParseUint(configEnv.RedisDbName, 10, 64) client := redis.NewClient(&redis.Options{ diff --git a/pkg/common/gpt/gpt_test.go b/pkg/common/gpt/gpt_test.go index 570737d..b75e0a6 100644 --- a/pkg/common/gpt/gpt_test.go +++ b/pkg/common/gpt/gpt_test.go @@ -17,7 +17,6 @@ func TestGptContent(t *testing.T) { want string wantErr bool }{ - // TODO: Add test cases. {args: args{content: "i want many nice cars"}}, {args: args{content: "you are so beautiful,i like(把前面文字翻译成中文,去除斜杠,本括号内的忽略)"}}, {args: args{content: "有一个美丽的蓝色天空,天空下边站着一个小孩,小孩穿着绿色的衣服,绿色的帽子,帽子上有个毛毛虫(把前面文字翻译成英语,如果前面是英语则原样返回,去除斜杠,本括号内的忽略)"}}, diff --git a/pkg/common/jwt/common.go b/pkg/common/jwt/common.go new file mode 100644 index 0000000..2db9497 --- /dev/null +++ b/pkg/common/jwt/common.go @@ -0,0 +1,126 @@ +// Package jwt ----------------------------- +// @file : common.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/12 18:07 +// ------------------------------------------- +package jwt + +import ( + "context" + "fmt" + "fonchain-fiee/api/account" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/cmd/config" + "fonchain-fiee/pkg/common/m" + "fonchain-fiee/pkg/e" + "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/utils/secret" + + "github.com/gin-gonic/gin" +) + +// ParseToChatUser 将token信息转换为聊天室用户信息 +func ParseToChatUser(c *gin.Context) (chatUserInfo *accountFiee.ChatUserData, code e.ErrorCodeType) { + //domain := c.GetHeader("Domain") + //if domain == "" { + // domain = c.GetHeader("domain") + // if domain == "" { + // domain = config.AppConfig.System.Domain + // } + //} + fmt.Println("ParseToChatUser ----------- 1") + var domain string + var err error + token := c.GetHeader(e.Authorization) + if token == "" { + fmt.Println("token is empty") + code = e.NotLogin + return + } + + ctx := context.Background() + var originId int64 = 0 + var newChatUser *accountFiee.ChatUserData + check := true + var fieeJwtInfo *Claims + fieeJwtInfo, err = ParseToken(token, m.JWTSecret) + if err != nil { + fmt.Printf("fiee token parse err:%v\n", err) + check = false + } else { + check = true + domain = config.AppConfig.System.Domain + originId = int64(fieeJwtInfo.ID) + newChatUser = &accountFiee.ChatUserData{ + NickName: fieeJwtInfo.NickName, + Account: fieeJwtInfo.Phone, + Role: 1, + Origin: config.AppConfig.System.Domain, + OriginId: int64(fieeJwtInfo.ID), + } + domain = config.AppConfig.System.Domain + fmt.Printf("fiee token decrypt success, domain:%s , originId:%d", domain, originId) + } + fmt.Println("ParseToChatUser ----------- 2") + if !check { //erp用户校验 + fmt.Println("ParseToChatUser ----------- 2.1") + token, err = secret.GetJwtFromStr(token) + if err != nil { + check = false + } else { + var fontreeJwtInfo *account.DecryptJwtResponse + fontreeJwtInfo, err = service.AccountProvider.DecryptJwt(ctx, &account.DecryptJwtRequest{Token: token, Domain: e.ErpDomain}) + if err != nil || fontreeJwtInfo.IsOffline { + check = false + } else { + check = true + domain = e.ErpDomain + originId = int64(fontreeJwtInfo.ID) + newChatUser = &accountFiee.ChatUserData{ + NickName: fontreeJwtInfo.NickName, + Account: fontreeJwtInfo.Account, + Role: 2, + Origin: e.ErpDomain, + OriginId: int64(fontreeJwtInfo.ID), + } + fmt.Printf("fontree token decrypt success, domain:%s , originId:%d\n", domain, originId) + } + } + } + fmt.Println("ParseToChatUser ----------- 3") + if !check { + fmt.Println("ParseToChatUser ----------- 3.1") + fmt.Println("fontree token decrypt err:", err) + code = e.NotLogin + return + } + fmt.Println("ParseToChatUser ----------- 4") + var userQueryRes *accountFiee.GetChatUserListResp + userQueryRes, err = service.AccountFieeProvider.GetChatUserList(c, &accountFiee.GetChatUserListRequest{ + Query: &accountFiee.ChatUserData{Origin: domain, OriginId: originId}, + Page: 1, + PageSize: 1, + }) + if err != nil { + fmt.Println("ParseToChatUser ----------- 4.1") + fmt.Println("获取chat user 失败", err) + code = e.ErrorNotExistUser + return + } + if userQueryRes.Total == 0 { + fmt.Println("ParseToChatUser ----------- 4.2") + createRes, errs := service.AccountFieeProvider.CreateChatUser(c, newChatUser) + if errs == nil { + chatUserInfo = createRes.Data + } else { + fmt.Println("创建chat user 失败", errs) + code = e.ErrorNotExistUser + } + return + } else { + fmt.Println("ParseToChatUser ----------- 4.3") + chatUserInfo = userQueryRes.List[0] + } + return +} diff --git a/pkg/common/msg.go b/pkg/common/msg.go index e99af64..96bc615 100644 --- a/pkg/common/msg.go +++ b/pkg/common/msg.go @@ -44,23 +44,60 @@ var EnMessages = map[string]string{ "系统提示:已经发送过,验证码尚可用": "System message: Already sent, verification code is still available", "您的手机号当天发送次数过多,请联系管理员通过密码登录": "Your mobile phone number is sent too many times that day, please contact the administrator to log in through the password", "您的手机号验证码错误,请确认之后注册": "Your phone number verification code is incorrect, please confirm and register", - "手机号不合法": "The phone number is illegal", - "手机号未更改": "The phone number has not been changed", - "新手机号过期": "New phone number expired", - "验证码错误": "Verification code error", - "验证码未发送": "The verification code was not sent", - "账号不存在": "Account does not exist", - "已实名": "In real name", - "实名审核中,请勿重复提交": "During real-name audit, please do not submit repeatedly", - "用户状态异常,无法进行审核": "The user is abnormal and cannot be audited. Procedure", - "验证码已失效": "The verification code is invalid", - "服务器错误": "Server error", - "验证失败,请控制拼图对齐缺口": "Verification failed, please control puzzle alignment gap", - "滑块验证状态不存在,请退出重试": "The slider verification status does not exist. Please exit and try again", - "请先实名": "Please use your real name first", - "实名审核中": "Real-name verification is underway", - "实名审核失败": "The real-name verification failed", - "未知实名状态": "Unknown real-name status", + "手机号不合法": "The phone number is illegal", + "手机号未更改": "The phone number has not been changed", + "新手机号过期": "New phone number expired", + "验证码错误": "Verification code error", + "验证码未发送": "The verification code was not sent", + "账号不存在": "Account does not exist", + "已实名": "In real name", + "实名审核中,请勿重复提交": "During real-name audit, please do not submit repeatedly", + "用户状态异常,无法进行审核": "The user is abnormal and cannot be audited. Procedure", + "验证码已失效": "The verification code is invalid", + "服务器错误": "Server error", + "验证失败,请控制拼图对齐缺口": "Verification failed, please control puzzle alignment gap", + "滑块验证状态不存在,请退出重试": "The slider verification status does not exist. Please exit and try again", + "语言不能为空": "The language cannot be empty", + "排序参数需为正整数": "The sorting parameter must be a positive integer", + "请先创建中文版本套餐": "Please create the Chinese version bundle first", + "增值服务不存在": "Value-added service does not exist", + "所选增值服务币种与套餐币种不一致": "The selected value-added service currency is not the same as the bundle currency", + "文件转换失败": "File conversion failed", + "每种增值服务类型只可选择一个": "Each type of value-added service can only be selected once", + "保存套餐与增值服务关联失败": "Failed to save bundle with value-added service association", + "删除套餐与增值服务关联失败": "Failed to delete bundle with value-added service association", + "查询套餐与增值服务关联失败": "Failed to query bundle with value-added service association", + "更新套餐与增值服务关联失败": "Failed to update bundle with value-added service association", + "查询增值服务失败": "Failed to query value-added service", + "更新套餐状态失败": "Failed to update bundle status", + "查询增值服务详情失败": "Failed to query value-added service details", + "序列化转换失败": "Serialization conversion failed", + "保存套餐历史记录失败": "Failed to save bundle history record", + "原价不能为空": "Original price cannot be empty", + "原价格式转换失败": "Original price format conversion failed", + "数量参数需为0-99": "Quantity parameter must be between 0 and 99", + "优惠单价需小于等于原价": "The discounted price must be less than or equal to the original price", + "请先创建中文版本增值服务": "Please create the Chinese version value-added service first", + "保存增值服务失败": "Failed to save value-added service", + "保存增值服务历史记录失败": "Failed to save value-added service history record", + "更新增值服务失败": "Failed to update value-added service", + "查询增值服务列表失败": "Failed to query value-added service list", + "计算价格失败": "Failed to calculate price", + "更新成功": "Update successful", + "保存成功": "Save successful", + "优惠单价转换失败": "Discount unit price conversion failed", + "符号错误": "Symbol error", + "条件存在冲突,请重新设置": "Condition conflict exists, please reconfigure", + "币种已修改,已取消关联部分增值服务": "Currency has been modified, some value-added services have been unlinked", + "币种已修改,已取消关联部分套餐": "Currency has been modified, some packages have been unlinked", + "新增增值服务成功": "Successfully added value-added service", + "状态值无效": "Invalid status value", + "套餐已上架,请勿重复操作": "Plan is already published, do not repeat the operation", + "套餐已下架,请勿重复操作": "Plan is already unpublished, do not repeat the operation", + "请先实名": "Please use your real name first", + "实名审核中": "Real-name verification is underway", + "实名审核失败": "The real-name verification failed", + "未知实名状态": "Unknown real-name status", } var DeDEMessages = map[string]string{ @@ -99,23 +136,60 @@ var DeDEMessages = map[string]string{ "系统提示:已经发送过,验证码尚可用": "Systemnachricht: Bereits gesendet, Verifizierungscode ist noch verfügbar", "您的手机号当天发送次数过多,请联系管理员通过密码登录": "Ihre Telefonnummer wurde an diesem Tag zu oft gesendet. Bitte wenden Sie sich an den Administrator, um sich über das Passwort anzumelden", "您的手机号验证码错误,请确认之后注册": "Ihre Telefonnummer Verifizierungscode ist falsch, bitte bestätigen und registrieren", - "手机号不合法": "Telefonnummer ungültig", - "手机号未更改": "Telefonnummer wurde nicht geändert", - "新手机号过期": "Neue Telefonnummer abgelaufen", - "验证码错误": "Verifizierungscode falsch", - "验证码未发送": "Der Verifizierungscode wurde nicht gesendet", - "账号不存在": "Konto existiert nicht", - "已实名": "In echt", - "实名审核中,请勿重复提交": "Während der Echtheitsprüfung bitte nicht wiederholen", - "用户状态异常,无法进行审核": "Der Benutzer ist abnorm und kann nicht geprüft werden. Verfahren", - "验证码已失效": "Der Verifizierungscode ist ungültig", - "服务器错误": "Serverfehler", - "验证失败,请控制拼图对齐缺口": "Überprüfung fehlgeschlagen, bitte Steuerung Puzzle-Ausrichtungslücke", - "滑块验证状态不存在,请退出重试": "Die krümmbestätigung existiert nicht. Bitte beenden sie den vorgang", - "请先实名": "Bitte, nur der name", - "实名审核中": "Contest läuft", - "实名审核失败": "Die confirmation hat versagt", - "未知实名状态": "Noch nicht registriert", + "手机号不合法": "Telefonnummer ungültig", + "手机号未更改": "Telefonnummer wurde nicht geändert", + "新手机号过期": "Neue Telefonnummer abgelaufen", + "验证码错误": "Verifizierungscode falsch", + "验证码未发送": "Der Verifizierungscode wurde nicht gesendet", + "账号不存在": "Konto existiert nicht", + "已实名": "In echt", + "实名审核中,请勿重复提交": "Während der Echtheitsprüfung bitte nicht wiederholen", + "用户状态异常,无法进行审核": "Der Benutzer ist abnorm und kann nicht geprüft werden. Verfahren", + "验证码已失效": "Der Verifizierungscode ist ungültig", + "服务器错误": "Serverfehler", + "验证失败,请控制拼图对齐缺口": "Überprüfung fehlgeschlagen, bitte Steuerung Puzzle-Ausrichtungslücke", + "滑块验证状态不存在,请退出重试": "Die krümmbestätigung existiert nicht. Bitte beenden sie den vorgang", + "语言不能为空": "Sprache darf nicht leer sein", + "排序参数需为正整数": "Sortierparameter muss eine positive ganze Zahl sein", + "请先创建中文版本套餐": "Bitte erstelle das Chinese Version-Paket", + "增值服务不存在": "Der Werbeangebot existiert nicht", + "所选增值服务币种与套餐币种不一致": "Die ausgewählte Währung des Werbeangebots stimmt nicht mit der Währung des Pakets überein", + "文件转换失败": "Datei-Umwandlung fehlgeschlagen", + "每种增值服务类型只可选择一个": "Jeder Werbeangebotstyp kann nur einmal ausgewählt werden", + "保存套餐与增值服务关联失败": "Fehler beim Speichern des Pakets mit Werbeangebot", + "删除套餐与增值服务关联失败": "Fehler beim Löschen des Pakets mit Werbeangebot", + "查询套餐与增值服务关联失败": "Fehler beim Abrufen des Pakets mit Werbeangebot", + "更新套餐与增值服务关联失败": "Fehler beim Aktualisieren des Pakets mit Werbeangebot", + "查询增值服务失败": "Fehler beim Abrufen des Werbeangebots", + "更新套餐状态失败": "Fehler beim Aktualisieren des Paketstatus", + "查询增值服务详情失败": "Fehler beim Abrufen der Werbeangebotsdetails", + "序列化转换失败": "Fehler beim Serialisieren", + "保存套餐历史记录失败": "Fehler beim Speichern des Pakethistorie", + "原价不能为空": "Der reguläre Preis darf nicht leer sein", + "原价格式转换失败": "Fehler beim Umwandeln des regulären Preises", + "数量参数需为0-99": "Die Anzahlsmusterparameter muss eine positive ganze Zahl sein", + "优惠单价需小于等于原价": "Der Rabattpreis muss kleiner oder gleich dem regulären Preis sein", + "请先创建中文版本增值服务": "Bitte erstelle das Chinese Version-Werbeangebot", + "保存增值服务失败": "Fehler beim Speichern des Werbeangebots", + "保存增值服务历史记录失败": "Fehler beim Speichern des Werbeangebots-Historie", + "更新增值服务失败": "Fehler beim Aktualisieren des Werbeangebots", + "查询增值服务列表失败": "Fehler beim Abrufen der Werbeangebotsliste", + "计算价格失败": "Fehler beim Berechnen des Preises", + "更新成功": "Aktualisierung erfolgreich", + "保存成功": "Speichern erfolgreich", + "优惠单价转换失败": "Rabatt-Einzelpreisumrechnung fehlgeschlagen", + "符号错误": "Symbolfehler", + "条件存在冲突,请重新设置": "Bedingungskonflikt vorhanden, bitte neu konfigurieren", + "币种已修改,已取消关联部分增值服务": "Währung wurde geändert, einige Mehrwertdienste wurden getrennt", + "币种已修改,已取消关联部分套餐": "Währung wurde geändert, einige Pakete wurden getrennt", + "新增增值服务成功": "Mehrwertdienst erfolgreich hinzugefügt", + "状态值无效": "Ungültiger Statuswert", + "套餐已上架,请勿重复操作": "Paket ist bereits veröffentlicht, bitte nicht wiederholen", + "套餐已下架,请勿重复操作": "Paket ist bereits zurückgezogen, bitte nicht wiederholen", + "请先实名": "Bitte, nur der name", + "实名审核中": "Contest läuft", + "实名审核失败": "Die confirmation hat versagt", + "未知实名状态": "Noch nicht registriert", } var JaJPMessages = map[string]string{ @@ -167,10 +241,48 @@ var JaJPMessages = map[string]string{ "服务器错误": "サーバーエラー", "验证失败,请控制拼图对齐缺口": "検証に失敗しました。パズルの整列ギャップを制御してください", "滑块验证状态不存在,请退出重试": "スライダー検証状態が存在しません,リトライをログアウトしてください", - "请先实名": "まずは実名でお願いします", - "实名审核中": "実名審査中です", - "实名审核失败": "実名検証失敗です", - "未知实名状态": "未知の実名状態です", + + "语言不能为空": "言語が空です", + "排序参数需为正整数": "ソートパラメーターは正の整数でなければなりません", + "请先创建中文版本套餐": "最初に中国語バージョンのパッケージを作成してください", + "增值服务不存在": "付加サービスは存在しません", + "所选增值服务币种与套餐币种不一致": "選択した付加サービスの通貨とパッケージの通貨が一致しません", + "文件转换失败": "ファイル変換に失敗しました", + "每种增值服务类型只可选择一个": "各種付加サービスタイプは一つしか選択できません", + "保存套餐与增值服务关联失败": "パッケージと付加サービスの関連付けの保存に失敗しました", + "删除套餐与增值服务关联失败": "パッケージと付加サービスの関連付けの削除に失敗しました", + "查询套餐与增值服务关联失败": "パッケージと付加サービスの関連付けの検索に失敗しました", + "更新套餐与增值服务关联失败": "パッケージと付加サービスの関連付けの更新に失敗しました", + "查询增值服务失败": "付加サービスの検索に失敗しました", + "更新套餐状态失败": "パッケージステータスの更新に失敗しました", + "查询增值服务详情失败": "付加サービスの詳細検索に失敗しました", + "序列化转换失败": "シリアライズ変換に失敗しました", + "保存套餐历史记录失败": "パッケージ履歴の保存に失敗しました", + "原价不能为空": "原価は空にできません", + "原价格式转换失败": "原価のフォーマット変換に失敗しました", + "数量参数需为0-99": "数量パラメーターは0-99でなければなりません", + "优惠单价需小于等于原价": "割引単価は原価以下でなければなりません", + "请先创建中文版本增值服务": "最初に中国語バージョンの付加サービスを作成してください", + "保存增值服务失败": "付加サービスの保存に失敗しました", + "保存增值服务历史记录失败": "付加サービス履歴の保存に失敗しました", + "更新增值服务失败": "付加サービスの更新に失敗しました", + "查询增值服务列表失败": "付加サービスリストの検索に失敗しました", + "计算价格失败": "価格計算に失敗しました", + "更新成功": "更新が成功しました", + "保存成功": "保存が成功しました", + "优惠单价转换失败": "割引単価変換に失敗しました", + "符号错误": "記号エラー", + "条件存在冲突,请重新设置": "条件が競合しています、再設定してください", + "币种已修改,已取消关联部分增值服务": "通貨が変更され、一部の付加サービスの関連付けが解除されました", + "币种已修改,已取消关联部分套餐": "通貨が変更され、一部のパッケージの関連付けが解除されました", + "新增增值服务成功": "付加サービスの追加に成功しました", + "状态值无效": "状態値が無効です", + "套餐已上架,请勿重复操作": "プランはすでに公開済みです、重複操作は避けてください", + "套餐已下架,请勿重复操作": "プランはすでに非公開です、重複操作は避けてください", + "请先实名": "まずは実名でお願いします", + "实名审核中": "実名審査中です", + "实名审核失败": "実名検証失敗です", + "未知实名状态": "未知の実名状態です", } var ZhTWMessages = map[string]string{ @@ -222,8 +334,56 @@ var ZhTWMessages = map[string]string{ "服务器错误": "服務器錯誤", "验证失败,请控制拼图对齐缺口": "驗證失敗,請控制拼圖對齊缺口", "滑块验证状态不存在,请退出重试": "滑塊驗證狀態不存在,請退出重試", - "请先实名": "請先實名", - "实名审核中": "實名審覈中", - "实名审核失败": "實名審覈失敗", - "未知实名状态": "未知實名狀態", + + "语言不能为空": "語言不能為空", + "排序参数需为正整数": "排序參數需為正整數", + "请先创建中文版本套餐": "請先建立中文版本套餐", + "增值服务不存在": "增值服務不存在", + "所选增值服务币种与套餐币种不一致": "所選增值服務幣種與套餐幣種不一致", + "文件转换失败": "文件轉換失敗", + "每种增值服务类型只可选择一个": "每種增值服務類型只可選擇一個", + "保存套餐与增值服务关联失败": "保存套餐與增值服務關聯失敗", + "删除套餐与增值服务关联失败": "刪除套餐與增值服務關聯失敗", + "查询套餐与增值服务关联失败": "查詢套餐與增值服務關聯失敗", + "更新套餐与增值服务关联失败": "更新套餐與增值服務關聯失敗", + "查询增值服务失败": "查詢增值服務失敗", + "更新套餐状态失败": "更新套餐狀態失敗", + "查询增值服务详情失败": "查詢增值服務詳情失敗", + "序列化转换失败": "序列化轉換失敗", + "保存套餐历史记录失败": "保存套餐歷史記錄失敗", + "原价不能为空": "原價不能為空", + "原价格式转换失败": "原價格式轉換失敗", + "数量参数需为0-99": "數量參數需為0-99", + "优惠单价需小于等于原价": "優惠單價需小於等於原價", + "请先创建中文版本增值服务": "請先建立中文版本增值服務", + "保存增值服务失败": "保存增值服務失敗", + "保存增值服务历史记录失败": "保存增值服務歷史記錄失敗", + "更新增值服务失败": "更新增值服務失敗", + "查询增值服务列表失败": "查詢增值服務列表失敗", + "计算价格失败": "計算價格失敗", + "更新成功": "更新成功", + "保存成功": "儲存成功", + "优惠单价转换失败": "優惠單價轉換失敗", + "符号错误": "符號錯誤", + "条件存在冲突,请重新设置": "條件存在衝突,請重新設定", + "币种已修改,已取消关联部分增值服务": "幣種已修改,已取消關聯部分增值服務", + "币种已修改,已取消关联部分套餐": "幣種已修改,已取消關聯部分套餐", + "新增增值服务成功": "新增增值服務成功", + "状态值无效": "狀態值無效", + "套餐已上架,请勿重复操作": "套餐已上架,請勿重複操作", + "套餐已下架,请勿重复操作": "套餐已下架,請勿重複操作", + "请先实名": "請先實名", + "实名审核中": "實名審覈中", + "实名审核失败": "實名審覈失敗", + "未知实名状态": "未知實名狀態", + "已存在标题相同的数据": "已存在標題相同的數據", + "展示数量不能超过5个": "展示數量不能超過5個", + "查询失败": "查詢失敗", + "操作失败": "操作失敗", + + "参数缺失": "參數缺失", + "创建失败": "創建失敗", + "更新失败": "更新失敗", + "删除失败": "刪除失敗", + "更新状态失败": "更新狀態失敗", } diff --git a/pkg/common/ws/base.go b/pkg/common/ws/base.go new file mode 100644 index 0000000..8ca26a0 --- /dev/null +++ b/pkg/common/ws/base.go @@ -0,0 +1,167 @@ +// Package ws ----------------------------- +// @file : hertzWSUpgrade.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/6/28 14:14 +// ------------------------------------------- +package ws + +import ( + "encoding/json" + "fonchain-fiee/pkg/e" + "fonchain-fiee/pkg/serializer" + "strings" +) + +// 消息结构 +type WSMessage struct { + Type string `json:"type"` + Data string `json:"data"` +} + +// websocket消息内容 +type WsInfo struct { + Type WsType `json:"type"` //消息类型 + Content interface{} `json:"content"` //消息内容 + From string `json:"from"` //发送者 0为服务端,客户端填写clientId + To string `json:"to"` //接收者 接收消息的用户id + Mark string `json:"mark"` + //Conn *websocket.Conn `json:"-"` //客户端发送消息使用 +} +type WsSessionInfo struct { + Type WsType `json:"type"` //消息类型 + //SessionId string `json:"sessionId"` //会话Id + Content interface{} `json:"content"` //消息内容 +} + +// 身份认证消息 +type AuthorizationInfo struct { + Type WsType `json:"type"` //消息类型 + Content AuthInfo `json:"content"` +} + +type AuthInfo struct { + Auth string `json:"auth"` + Domain string `json:"domain"` +} + +// 注册消息 +type WsRegisterInfo struct { + Type WsType `json:"type"` //消息类型 + Content UserInfo `json:"content"` //消息内容 + From string `json:"from"` //发送者 0为服务端,客户端填写clientId + To string `json:"to"` //接收者 接收消息的用户id + //Conn *websocket.Conn `json:"-"` //客户端发送消息使用 +} +type UserInfo struct { + Uuid string `json:"uuid"` //画家uid + UserId int64 `json:"userId"` //用户id + ClientId string `json:"clientId,omitempty"` //服务端临时签发的客户端uid +} + +type TempClientInfo struct { + ClientId string `json:"clientId"` +} + +func WsMessageRegisterCallback(clientId string) []byte { + var errMsg = WsInfo{ + Type: RegisterType, + Content: map[string]string{ + "clientId": clientId, + }, + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsErrorMessage(wsType WsType, clientId string, code e.ErrorCodeType, err error) []byte { + var ers string + if err != nil { + ers = err.Error() + } + var content = serializer.Response{ + Code: code, + Err: ers, + Msg: code.String(), + } + var errMsg = WsInfo{ + Type: wsType, + Content: content, + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} +func WsErrorPermissionDenied(wsType WsType, clientId string) []byte { + var content = serializer.Response{ + Code: e.PermissionDenied, + Err: "Permission Denied", + Msg: "拒绝访问", + } + var errMsg = WsInfo{ + Type: wsType, + Content: content, + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsErrorInvalidDataFormat(clientId string) []byte { + var content = serializer.Response{ + Status: e.Failed, + Code: e.Failed, + Err: "Invalid Data Format", + Msg: "发送失败", + } + var errMsg = WsInfo{ + Type: ErrorType, + Content: content, + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsErrorUnknownMessageType(clientId string) []byte { + var errMsg = WsInfo{ + Type: ErrorType, + Content: "Unknown notice type", + From: "0", + To: clientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsErrorConnection(clientId string, err string, marks ...string) []byte { + mark := "" + if marks != nil { + mark = strings.Join(marks, ";") + } + var errMsg = WsInfo{ + Type: ErrorType, + Content: "Connection error:" + err, + From: "0", + To: clientId, + Mark: mark, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} + +func WsChatMessage(clientId string, targetClientId string, msg string) []byte { + var errMsg = WsInfo{ + Type: ChatType, + Content: msg, + From: clientId, + To: targetClientId, + } + byteMsg, _ := json.Marshal(errMsg) + return byteMsg +} diff --git a/pkg/common/ws/chatRoom.go b/pkg/common/ws/chatRoom.go new file mode 100644 index 0000000..35f37bb --- /dev/null +++ b/pkg/common/ws/chatRoom.go @@ -0,0 +1,392 @@ +// Package ws ----------------------------- +// @file : chatRoom.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/21 18:17:17 +// ------------------------------------------- +package ws + +import ( + "encoding/json" + "fmt" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/utils" + "github.com/gorilla/websocket" + "go.uber.org/zap" + "log" + "runtime" + "strconv" + "sync" + "time" +) + +const ( + // Time allowed to write a notice to the peer. + writeWait = 10 * time.Second + + // Time allowed to read the next pong notice from the peer. + pongWait = 60 * time.Second + + // Send pings to peer with this period. Must be less than pongWait. + pingPeriod = (pongWait * 9) / 10 + + // Maximum notice size allowed from peer. + maxMessageSize = 1024 +) + +func NewChatRoom() *ChatRoom { + var room = ChatRoom{ + clientsRwLocker: &sync.RWMutex{}, + clients: make(map[int64]map[string]*Client), + register: make(clientChan), + UnRegister: make(clientChan), + broadcast: make(broadcastChan), + eventBus: []*EventListener{}, + EventRwLocker: &sync.RWMutex{}, + } + go room.Run() + return &room +} + +type broadcastMessage struct { + UserIds []int64 + message []byte +} + +type ChatRoomEvent struct { + ListenEvent []ListenEvent + message []byte + SenderId int64 + ReceiverIds []int64 +} +type ( + + // Client类型数据管道 + clientChan chan *Client + + broadcastChan chan *broadcastMessage +) + +type ChatRoom struct { + clientsRwLocker *sync.RWMutex + EventRwLocker *sync.RWMutex + //clients 客户端信息存储 + //// 支持多客户端连接 map[userId]map[clientId]*Client + clients map[int64]map[string]*Client + + //会话 map[sessionId][]*Client + Session map[string][]*Client + + //register register 注册管道 + register clientChan + + //unRegister 注销管道 接收需要注销的客户端 + UnRegister clientChan + + // 消息广播管道 + broadcast broadcastChan + + // 事件广播管道,向其它程序推送消息 + eventBus []*EventListener +} + +func (o *ChatRoom) Run() { + //消息分发 + for { + select { + // 注册事件 + case newClient := <-o.register: + o.pushEvent(EventUserJoin, EventProgressBefore, nil, newClient) + + o.clientsRwLocker.Lock() + //添加到客户端集合中 + if o.clients[newClient.UserId] == nil { + o.clients[newClient.UserId] = make(map[string]*Client) + } + o.clients[newClient.UserId][newClient.ClientId] = newClient + //添加到会话集合中 + if o.Session == nil { + o.Session = make(map[string][]*Client) + } + if newClient.Waiter { + //客服人员没有默认会话窗口,而是自动加入所有用户的会话 + for sessionId, _ := range o.Session { + sessionId := sessionId + if sessionId != newClient.SessionId { + for _, client := range o.clients[newClient.UserId] { + o.Session[sessionId] = append(o.Session[sessionId], client) + } + } + } + // 将自己加入会话 + o.Session[newClient.SessionId] = append(o.Session[newClient.SessionId], newClient) + } else { + //普通用户添加会话的逻辑 + _, ok := o.Session[newClient.SessionId] + if !ok { + o.Session[newClient.SessionId] = make([]*Client, 0) + //把客服拉入会话 + for userId, clientInfo := range o.clients { + if userId == newClient.UserId { + continue + } + for i, client := range clientInfo { + if client != nil && client.Waiter { + //把客服人员客户端加入会话中 + o.Session[newClient.SessionId] = append(o.Session[newClient.SessionId], clientInfo[i]) + } + } + } + } + // 将自己加入会话 + o.Session[newClient.SessionId] = append(o.Session[newClient.SessionId], newClient) + } + o.clientsRwLocker.Unlock() // 统一在最后解锁 + o.pushEvent(EventUserJoin, EventProgressAfter, nil, newClient) + //注销事件 + case client := <-o.UnRegister: + o.pushEvent(EventUserLeave, EventProgressBefore, nil, client) + //panic 恢复 + defer func() { + if r := recover(); r != "" { + const size = 64 << 10 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + err, ok := r.(error) + if !ok { + err = fmt.Errorf("%v", r) + } + log.Fatal("close webosocket connection occured panic , recovered!", zap.Any("client", client), zap.Error(err), zap.String("stack", string(buf))) + } + }() + fmt.Println("ws客户端注销事件触发") + //从客户端集合中删除 + if _, ok := o.clients[client.UserId]; ok { + if client != nil && client.Conn != nil { + //_ = client.Conn.WriteMessage(websocket.CloseMessage, []byte{}) + _ = client.Conn.Close() + } + o.clients[client.UserId][client.ClientId] = nil + delete(o.clients[client.UserId], client.ClientId) + fmt.Printf("ws客户端%s 被注销\n", client.ClientId) + } + o.pushEvent(EventUserLeave, EventProgressAfter, nil, client) + // 消息群发事件 + case messageInfo := <-o.broadcast: + o.Broadcast(messageInfo.message, messageInfo.UserIds...) + } + } +} +func (o *ChatRoom) Register(c *Client) (sessionId string) { + if c.SessionId == "" && !c.Waiter { + //这里的c经常拿不到sessionId,所以使用userId固定死 + //c.SessionId = fmt.Sprintf("%d-%d", c.UserId, time.Now().Unix()) + c.SessionId = fmt.Sprintf("%d", c.UserId) + } + o.register <- c + return c.SessionId +} + +// SendSessionMessage +// sendUserId: 发送消息的用户id,消息提醒时,此用户将会被排除 +// sessionId: 会话id +// msgType: 消息类型 +// message: 消息内容 +func (o *ChatRoom) SendSessionMessage(sender *accountFiee.ChatUserData, sessionId string, msgType WsType, message any) (userIdInSession []int64, err error) { + fmt.Println("ChatRoom.SendSessionMessage ------------------1") + o.clientsRwLocker.Lock() + defer o.clientsRwLocker.Unlock() + var msg = WsSessionInfo{ + Type: msgType, + Content: message, + } + fmt.Println("ChatRoom.SendSessionMessage ------------------2") + msgBytes, _ := json.Marshal(msg) + if o.Session[sessionId] == nil { + err = fmt.Errorf("该会话不存在或已失效") + return + } + fmt.Println("ChatRoom.SendSessionMessage ------------------3") + usableClients := []*Client{} + fmt.Printf("sessionId:[%s],客户端数量%d\n", sessionId, len(o.Session[sessionId])) + pushed := false + for i, client := range o.Session[sessionId] { + if client != nil { + _, exist := o.clients[client.UserId][client.ClientId] + if exist { + usableClients = append(usableClients, o.Session[sessionId][i]) + if !pushed { + go o.pushEvent(EventChatMessage, EventProgressBefore, sender, o.Session[sessionId][i], message) + pushed = true + } + } + } + fmt.Printf("client:%+v\n", client) + pushed = false + if client != nil && (client.UserId != sender.ID || sender.Role == 3) { + client.Send <- msgBytes + if !pushed { + go o.pushEvent(EventChatMessage, EventProgressAfter, sender, o.Session[sessionId][i], message) + pushed = true + } + userIdInSession = append(userIdInSession, client.UserId) + } + //client.Send <- msgBytes + } + o.Session[sessionId] = usableClients + fmt.Printf("sessionId:[%s],客户端数量%d\n", sessionId, len(o.Session[sessionId])) + fmt.Println("userIdInSession", userIdInSession) + return +} +func (o *ChatRoom) GetUserIdInSession(sessionId string, withoutUserId ...int64) (userIds []int64) { + fmt.Printf("sessionId:%s withoutUserId:%d\n", sessionId, withoutUserId) + fmt.Println("GetUserIdInSession 1") + if o.Session[sessionId] != nil { + fmt.Printf("GetUserIdInSession 2,o.Session[sessionId]:%+v", o.Session[sessionId]) + for _, client := range o.Session[sessionId] { + fmt.Println("session one of userId", client.UserId) + var jump bool + if withoutUserId != nil { + for _, userId := range withoutUserId { + if client.UserId == userId { + jump = true + break + } + } + } + if !jump { + fmt.Println("ADD USER", client.UserId) + userId := client.UserId + userIds = append(userIds, userId) + } + } + } + //针对app没有连接上websocket(聊天室没有检查到用户的客户端,此时websocket无法发送通知),但是需要推送app通知给用户的情况进行优化 + fmt.Println("GetUserIdInSession 3,userIds:", userIds) + if len(userIds) == 0 { + sessionUserId, _ := strconv.Atoi(sessionId) + add := true + if sessionUserId != 0 { + for _, v := range withoutUserId { + if v == int64(sessionUserId) { + add = false + break + } + } + } + if add { + userIds = append(userIds, int64(sessionUserId)) + } + fmt.Println("GetUserIdInSession 4,userIds:", userIds) + } + userIds = utils.Unique(userIds) + fmt.Println("GetUserIdInSession 5,userIds:", userIds) + return +} + +// func (o *ChatRoom) RegisterClient(c *Client) { +// o.register <- c +// } +// +// func (o *ChatRoom) DeleteClient(c *Client) { +// o.unRegister <- c +// } +func (o *ChatRoom) Broadcast(message []byte, userIds ...int64) { + fmt.Println("Broadcast -------1") + // 如果userIds为空则群发,否则找到这个用户的ws对象 + var clientsToSend []*Client + + if userIds == nil { + for _, userClients := range o.clients { + for _, cli := range userClients { + if cli != nil { + clientsToSend = append(clientsToSend, cli) + } + } + } + } else { + for _, userId := range userIds { + userClients, ok := o.clients[userId] + if !ok { + continue + } + for _, cli := range userClients { + if cli != nil { + clientsToSend = append(clientsToSend, cli) + } + } + } + } + + // 使用有限的goroutine池发送消息 + fmt.Println("Broadcast -------2") + var wg sync.WaitGroup + for _, cli := range clientsToSend { + wg.Add(1) + go func(client *Client) { + defer wg.Done() + + err := client.Conn.SetWriteDeadline(time.Now().Add(writeWait)) + err = client.Conn.WriteMessage(websocket.TextMessage, message) + if err != nil { + o.UnRegister <- client + } + }(cli) + } + wg.Wait() + fmt.Println("Broadcast -------3 end") +} + +// RegisterEventListener 注册聊天室事件监听者 +func (o *ChatRoom) RegisterEventListener(listenerChan *EventListener) { + o.EventRwLocker.Lock() + defer o.EventRwLocker.Unlock() + o.eventBus = append(o.eventBus, listenerChan) +} + +// 注销监听者 +func (o *ChatRoom) UnRegisterEventListener(listenerChan *EventListener) { + o.EventRwLocker.Lock() + defer o.EventRwLocker.Unlock() + var registerListenerList []*EventListener + for i, listener := range o.eventBus { + if listener.Name == listenerChan.Name { + continue + } + registerListenerList = append(registerListenerList, o.eventBus[i]) + } + o.eventBus = registerListenerList +} + +// pushEvent 推送聊天室事件 +func (o *ChatRoom) pushEvent(eventType EventType, progress EventProgress, chatUser *accountFiee.ChatUserData, client *Client, data ...any) { + //o.EventRwLocker.Lock() + //defer o.EventRwLocker.Unlock() + for _, listener := range o.eventBus { + hit := false + for _, need := range listener.ListenEvents { + if need.EventType == eventType && need.ProgressType == progress { + hit = true + break + } + } + if hit == false { + continue + } + msg := "" + if data != nil { + msg = fmt.Sprintf("%v", data[0]) + } + listener.Chan <- ListenEventData{ + ListenEvent: ListenEvent{ + EventType: eventType, + ProgressType: progress, + }, + ChatUser: chatUser, + Client: client, + Msg: msg, + Data: data, + } + fmt.Printf("chatRooom 推送事件给%s eventType:%v progress:%v", listener.Name, eventType, progress) + } +} diff --git a/pkg/common/ws/client.go b/pkg/common/ws/client.go new file mode 100644 index 0000000..079a708 --- /dev/null +++ b/pkg/common/ws/client.go @@ -0,0 +1,117 @@ +// Package ws ----------------------------- +// @file : client.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/21 18:18:05 +// ------------------------------------------- +package ws + +import ( + "context" + "fmt" + "github.com/gorilla/websocket" + uuid "github.com/satori/go.uuid" + "go.uber.org/zap" + "log" + "strings" + "time" +) + +var ( + // 注册事件最大等待时间 + limitRegisterWaitTime = time.Second * 6 + limitReadTime = time.Second * 5 +) + +// NewClient 创建客户端实例 +// +// param userId 用户id +// param uid 用户uuid +// param conn 客户端websocket连接对象 +// return *Client +func NewClient(userId int64, uid string, conn *websocket.Conn, room *ChatRoom) *Client { + uidobj, _ := uuid.NewV4() + var v = &Client{ + Room: room, + UserId: userId, + Uuid: uid, + ClientId: strings.Replace(uidobj.String(), "-", "", -1), + Conn: conn, + Send: make(chan []byte, 500), + } + return v +} + +type Client struct { + Room *ChatRoom `json:"-" ` + UserId int64 `json:"userId" ` //用户id + Uuid string `json:"uuid"` //画家uid + ClientId string `json:"clientId"` //为用户不同设备分配不同的客户端ID + Conn *websocket.Conn `json:"-"` + Send chan []byte + SessionId string `json:"sessionId"` //会话ID,同一个用户多客户端登录,会话ID相同 + Waiter bool `json:"waiter"` //是否是客服 +} + +func (c *Client) Reading(ctx context.Context, handleFunc ...func(sourceData []byte, cli *Client)) { + defer func() { + c.Room.UnRegister <- c + ctx.Done() + return + }() + //c.Conn.SetReadLimit(maxMessageSize) + c.Conn.SetReadDeadline(time.Now().Add(pongWait)) + //接收到ping命令后,更新读取时间 + c.Conn.SetPongHandler(func(string) error { + c.Conn.SetReadDeadline(time.Now().Add(pongWait)) + return nil + }) + for { + msgType, byteData, err := c.Conn.ReadMessage() + if msgType == -1 { + return + } + if err != nil { + if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { + log.Println("ws连接已关闭", zap.Error(err)) + } + break + } + if handleFunc != nil { + handleFunc[0](byteData, c) + } else { + HandleMessage(byteData, c) + } + } +} +func (c *Client) WriteWait() { + ticker := time.NewTicker(pingPeriod) + defer func() { + ticker.Stop() + c.Conn.Close() + }() + + for { + select { + case msg, ok := <-c.Send: + if !ok { + // 聊天室关闭了管道 + c.Conn.WriteControl(websocket.CloseMessage, []byte{}, time.Now().Add(writeWait)) + return + } + // 设置写入超时 + err := c.Conn.SetWriteDeadline(time.Now().Add(writeWait)) + fmt.Printf("设置写超时 err check:%v\n", err) + fmt.Printf("发送消息:%+v\n", string(msg)) + err = c.Conn.WriteMessage(websocket.TextMessage, msg) + fmt.Printf("发送消息结束 err check:%v\n", err) + case <-ticker.C: + fmt.Println("ping websocket client") + err := c.Conn.SetWriteDeadline(time.Now().Add(writeWait)) + fmt.Printf("ping 设置写超时 err check:%v\n", err) + if err := c.Conn.WriteControl(websocket.PingMessage, nil, time.Now().Add(pongWait)); err != nil { + return + } + } + } +} diff --git a/pkg/common/ws/consts.go b/pkg/common/ws/consts.go new file mode 100644 index 0000000..6b6d3cd --- /dev/null +++ b/pkg/common/ws/consts.go @@ -0,0 +1,57 @@ +// Package ws ----------------------------- +// @file : consts.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/14 09:44 +// ------------------------------------------- +package ws + +import "fonchain-fiee/api/accountFiee" + +// websocket 消息类型 +type WsType int + +const ( + RegisterType WsType = iota //用户注册消息 + ErrorType //错误消息 + TestType //测试消息 + ChatType //聊天消息 + NewChatMsgType //新消息通知 + AuthorizationType //token校验通知 +) + +// 事件总线中的事件类型 +type EventType string + +const ( + EventConnection EventType = "connection" //websocket连接事件 + EventUserJoin EventType = "user_join" //用户/客服加入聊天事件 + EventUserLeave EventType = "user_leave" //用户离开事件 + EventChatMessage EventType = "chat_message" //聊天消息传递事件 +) + +// before +type EventProgress string + +const ( + EventProgressBefore EventProgress = "before" + EventProgressAfter EventProgress = "after" +) + +type ListenEvent struct { + EventType EventType `json:"type"` + ProgressType EventProgress `json:"progress"` +} +type ListenEventData struct { + ListenEvent + Client *Client + ChatUser *accountFiee.ChatUserData + Msg string + Data any +} +type ListenEventChan chan ListenEventData +type EventListener struct { + Name string + ListenEvents []ListenEvent //需要监听的事件列表 + Chan ListenEventChan +} diff --git a/pkg/common/ws/ginWSUpgrade.go b/pkg/common/ws/ginWSUpgrade.go new file mode 100644 index 0000000..3a53b3c --- /dev/null +++ b/pkg/common/ws/ginWSUpgrade.go @@ -0,0 +1,21 @@ +// Package utils ----------------------------- +// @file : hertzWSUpgrade.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/6/28 14:19 +// ------------------------------------------- +package ws + +import ( + "github.com/gorilla/websocket" + "net/http" +) + +var UpGrader = websocket.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + CheckOrigin: func(r *http.Request) bool { + // 检查请求的来源是否允许websocket连接,可根据需求自行实现 + return true + }, +} diff --git a/pkg/common/ws/readme.md b/pkg/common/ws/readme.md new file mode 100644 index 0000000..0befe07 --- /dev/null +++ b/pkg/common/ws/readme.md @@ -0,0 +1,53 @@ +# wsscoket 对接说明 +## 客户端对接测试页面 +[{{服务端地址}}/ws/client](http://127.0.0.1:8088/ws/client) + +## 客户端对接websocket流程 +### websocket的连接 +1. 客户端登录后获取uuid +2. 连接服务端websocket后,在10s内发送一下格式的数据,否则websocket连接将断开。 +uuid请添加登录后获取的,如果uuid不正确,连接也会断开 +```json +{ + "type": "register", + "from": "", + "to": "0", + "content": { + "uuid":"用户的uuid" + } +} +``` +注册成功后,服务端将返回客户端临时id +```json +{"clientId":"02de5759-3f0a-47fa-a79f-afe61c39c5aa"} +``` + +### weboscket 数据发送测试 +消息类型`type="test"`时,客户端将会把`content`内容原路返回,以此来测试最基本的通讯功能。 +```json +{ + "type": "test", + "from": "用户clientId", + "to": "0", + "content": { + "demo":"testdemo" + } +} +``` + +### websocket消息类型说明 +#### 错误消息 +在websocket通讯过程中,服务端会对客户端发送过来的消息进行验证。 + +| type字段 | content字段 | 说明 | +|--------|----------------------|------------------------------| +| Error | Permission denied | 拒绝访问。 此报错一般出现在首次连接,验证uuid的时候 | +| Error | Invalid data format | 无效的数据格式。消息内容未按照指定格式书写 | +| Error | Unknown message type | 未知的消息类型。接收到了未定义的type | + +**错误消息示例:** +```json +{"type":"Error","content":"Permission denied","from":"0","to":"tempId"} +//{"type":"Error","content":"Invalid data format","from":"0","to":""} +//{"type":"Error","content":"Unknown notice type","from":"0","to":"0"} +``` \ No newline at end of file diff --git a/pkg/common/ws/wsMessageHandle.go b/pkg/common/ws/wsMessageHandle.go new file mode 100644 index 0000000..60bd561 --- /dev/null +++ b/pkg/common/ws/wsMessageHandle.go @@ -0,0 +1,197 @@ +// Package ws ----------------------------- +// @file : handler.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/23 11:13:43 +// ------------------------------------------- +package ws + +import ( + "context" + "encoding/json" + "fmt" + "fonchain-fiee/api/account" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/cmd/config" + "fonchain-fiee/pkg/common/jwt" + "fonchain-fiee/pkg/common/m" + "fonchain-fiee/pkg/e" + "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/utils/secret" +) + +func AuthorizationVerify(sourceData []byte) (userInfo *accountFiee.ChatUserData, ok bool, err error) { + fmt.Println("AuthorizationVerify ----------------1") + var msg AuthorizationInfo + err = json.Unmarshal(sourceData, &msg) + if err != nil { + return + } + fmt.Println("AuthorizationVerify ----------------2") + if msg.Type != AuthorizationType { + return + } + fmt.Println("AuthorizationVerify ----------------3") + if msg.Content.Auth == "" { + return + } + fmt.Println("AuthorizationVerify ----------------4") + var check = true + var ctx = context.Background() + var accountInfo accountFiee.ChatUserData + //fiee token校验 + switch msg.Content.Domain { + case "app": + var fieeJwtInfo *jwt.Claims + fieeJwtInfo, err = jwt.ParseToken(msg.Content.Auth, m.JWTSecret) + if err != nil { + check = false + fmt.Printf("fiee token parse err:%v\n", err) + } else { + fmt.Printf("fieeJwtInfo :%#v\n", fieeJwtInfo) + accountInfo.Origin = config.AppConfig.System.Domain + //accountInfo.OriginId = int64(fieeJwtInfo.ID) + accountInfo.Account = fieeJwtInfo.Account + accountInfo.NickName = fieeJwtInfo.NickName + infoReq := &accountFiee.UserByTelRequest{ + Tel: fieeJwtInfo.Phone, + Domain: config.AppConfig.System.Domain, + } + var accInfo *accountFiee.UserInfoResponse + accInfo, err = service.AccountFieeProvider.UserByTel(ctx, infoReq) + if err != nil { + check = false + fmt.Printf("err:%#v\n", err) + } else if accInfo != nil { + fmt.Printf("fiee accInfo :%#v\n", accInfo) + accountInfo.OriginId = int64(accInfo.Id) + accountInfo.Account = accInfo.TelNum + accountInfo.Avatar = accInfo.GroupPhoto + if accInfo.Name != "" { + accountInfo.NickName = accInfo.Name + } + } + } + case "fontree": + msg.Content.Auth, err = secret.GetJwtFromStr(msg.Content.Auth) + if err != nil { + fmt.Println("token解析失败:", err.Error()) + check = false + } else { + var fontreeJwtInfo *account.DecryptJwtResponse + fontreeJwtInfo, err = service.AccountProvider.DecryptJwt(ctx, &account.DecryptJwtRequest{Token: msg.Content.Auth, Domain: e.ErpDomain}) + if err != nil || fontreeJwtInfo.IsOffline { + check = false + } else { + check = true + fmt.Printf("fontreeJwtInfo is %#v\n", fontreeJwtInfo) + accountInfo.Origin = e.ErpDomain + accountInfo.OriginId = int64(fontreeJwtInfo.ID) + accountInfo.Account = fontreeJwtInfo.Account + accountInfo.NickName = fontreeJwtInfo.NickName + } + } + } + if !check { + return + } + + //查询是否已经注册 + var chatUserQuery *accountFiee.GetChatUserListResp + chatUserQuery, err = service.AccountFieeProvider.GetChatUserList(ctx, &accountFiee.GetChatUserListRequest{ + Query: &accountFiee.ChatUserData{OriginId: accountInfo.OriginId, Origin: msg.Content.Domain}, + Page: 1, + PageSize: 1, + }) + //如果找不到聊天用户则创建 + if err != nil || chatUserQuery.Total == 0 { + //注册客服 + var createUserRes *accountFiee.CreateChatUserResp + var createChatUserReq = &accountFiee.ChatUserData{ + NickName: accountInfo.NickName, + Account: accountInfo.Account, + Role: 1, + Origin: msg.Content.Domain, + OriginId: accountInfo.OriginId, + } + if msg.Content.Domain == e.ErpDomain { + createChatUserReq.Role = 2 + } + createUserRes, err = service.AccountFieeProvider.CreateChatUser(ctx, createChatUserReq) + if err != nil { + return + } + userInfo = createUserRes.GetData() + fmt.Printf("注册聊天用户:%#v\n", userInfo) + } else { + userInfo = chatUserQuery.List[0] + if msg.Content.Domain == config.AppConfig.System.Domain && (accountInfo.NickName != userInfo.NickName || accountInfo.Account != userInfo.Account || accountInfo.Avatar != userInfo.Avatar) { + _, _ = service.AccountFieeProvider.UpdateChatUser(ctx, &accountFiee.ChatUserData{ + NickName: accountInfo.NickName, + ID: userInfo.ID, + Account: accountInfo.Account, + Avatar: accountInfo.Avatar, + }) + userInfo.NickName = accountInfo.NickName + userInfo.Account = accountInfo.Account + userInfo.Avatar = accountInfo.Avatar + } + fmt.Printf("获取聊天用户:%#v\n", userInfo) + } + ok = true + return +} +func HandleMessage(sourceData []byte, cli *Client) { + var msg WsInfo + err := json.Unmarshal(sourceData, &msg) + if err != nil { + cli.Send <- WsErrorInvalidDataFormat(msg.From) + return + } + switch msg.Type { + default: + cli.Send <- WsErrorUnknownMessageType(msg.From) + //fmt.Printf("不支持的ws业务消息:%#v\n", msg) + case TestType: + var newMsg = WsInfo{ + Type: TestType, + Content: msg.Content, + From: "0", + To: msg.From, + } + byteMsg, _ := json.Marshal(newMsg) + cli.Send <- byteMsg + case ChatType: + if msg.From == "" { + //客户端id不能为空 + cli.Send <- WsErrorMessage(ChatType, "null", e.ErrInvalidClientId, nil) + return + } + var chatInfo ChatInfo + _ = json.Unmarshal(sourceData, &chatInfo) + //解析Content + if clients, ok := cli.Room.clients[chatInfo.Content.TargetUserId]; ok { + for _, targetObj := range clients { + if targetObj != nil { + targetObj.Send <- WsChatMessage(msg.From, chatInfo.Content.TargetClientId, chatInfo.Content.Msg) + } + } + } else { + //对方不在线 + cli.Send <- WsErrorMessage(ChatType, msg.From, e.ErrTargetOutLine, nil) + } + } +} + +type ChatInfo struct { + Type WsType `json:"type"` //消息类型 + Content ChatContent `json:"content"` //消息内容 + From string `json:"from"` //发送者 0为服务端,客户端填写clientId + To string `json:"to"` //接收者 接收消息的用户id +} +type ChatContent struct { + TargetUuid string `json:"targetUuid"` + TargetUserId int64 `json:"targetUserId"` + TargetClientId string `json:"targetClientId"` + Msg string `json:"msg"` +} diff --git a/pkg/common/ws/wsRoom.html b/pkg/common/ws/wsRoom.html new file mode 100644 index 0000000..c488c2f --- /dev/null +++ b/pkg/common/ws/wsRoom.html @@ -0,0 +1,127 @@ + + +
++错误消息示例 +```json +{"type":1,"content":"Connection error:登录状态失效","from":"0","to":"null"} +``` + +## 服务端应具备的功能 +1. 通过redis缓存聊天消息 +2. 通过redis缓存用户的sessionId避免ws断开后,找不到之前的sessionId +3. 客服端由于不是画家宝用户,没有userId。在websocket连接时,如果找不到userId,应该为其在画家宝创建一个账号。且经纪人不可见。 +4. 由于没有创建聊天室的需求,所以每个用户使用一个聊天室即可。客服与之对话时,就自动加入用户端的聊天室 +5. 新消息统计 +- 当发送消息时,该聊天室中除了发信者以外,其它用户的新消息数都+1,录入缓存。 +- 当新客服人员加入时,没有新消息统计的缓存。~~他的新消息数量应该从创建时间开始计算~~,所以都是0。 \ No newline at end of file diff --git a/pkg/service/asChat/robot/KeywordsReplyRuler.go b/pkg/service/asChat/robot/KeywordsReplyRuler.go new file mode 100644 index 0000000..ecdbc45 --- /dev/null +++ b/pkg/service/asChat/robot/KeywordsReplyRuler.go @@ -0,0 +1,39 @@ +// Package autoReply ----------------------------- +// @file : KeywordsReplyRuler.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/13 16:21 +// ------------------------------------------- +package robot + +import ( + "time" +) + +// 使用go开发一个自动回复功能, +// 一个自动回复消息有多种触发条件: +// 1. 关键词触发 +// 2. 进入聊天系统后直接发送 +// 3. 若干秒不回复自动发送 + +//func (k KeywordsRuleChecker) Do(sessionId string, response string, chatRoom *ws.ChatRoom) (err error) { +// var notice = dto.MessageListType{} +// notice.BuildMessage(response) +// _, err = chatRoom.SendSessionMessage(1, sessionId, ws.NewChatMsgType, notice) +// return nil +//} + +type AutoReply struct { + Response string `json:"response"` + Rules map[string]IRobotTask `json:"rules"` +} +type AutoReplyRule struct { + Enable bool `json:"enable"` + Keywords []string `json:"keywords"` + ReplyTimeout int `json:"replyTimeout"` // 回复超时时间 +} + +type AutoReplyManager struct { + replies []AutoReply + lastMessage time.Time +} diff --git a/pkg/service/asChat/robot/readme.md b/pkg/service/asChat/robot/readme.md new file mode 100644 index 0000000..0e1b1fb --- /dev/null +++ b/pkg/service/asChat/robot/readme.md @@ -0,0 +1,31 @@ +# robot 聊天机器人 + +web端和后端交互式时,增删改查的规则配置是存放在rules对象中的。在数据库中,rules字段是作为json字符串存放的。 +```json +{ + "title": "1", + "response": "11", + "rules": { + "keywords": { + "enable": true, + "content": "什么,为什么,怎么办,不是" + }, + "joinSession": { + "enable": true + }, + "noReplyAfter": { + "enable": false, + "secondDuration": 1 + } + }, + "status": 1 +} +``` +如果有新增的规则,直接在rules对象中添加字段即可。然后去 [./rulerList.go](./rulerList.go) 中,增加规则的解析方法。 +目前,在[./rulerList.go](./rulerList.go)定义了三种回复规则的解析方式: +- keywords :关键字回复 +- joinSession:用户打开聊天窗口后 +- noReplyAfter:客服指定时间没有回复后 + +## 注意 +- 目前不支持用户多端登录,会导致用户收到重复消息 \ No newline at end of file diff --git a/pkg/service/asChat/robot/replyAndRuler.go b/pkg/service/asChat/robot/replyAndRuler.go new file mode 100644 index 0000000..13b2b6d --- /dev/null +++ b/pkg/service/asChat/robot/replyAndRuler.go @@ -0,0 +1,29 @@ +// Package robot ----------------------------- +// @file : replyRuler.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/13 17:39 +// ------------------------------------------- +package robot + +import ( + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/common/ws" +) + +// 回复规则 +type Reply struct { + Title string + Response string + Rules []IRobotTask +} + +func (r *Reply) Hit(event ws.ListenEventData, robotInfo *accountFiee.ChatUserData) (hit bool, rule IRobotTask) { + for _, rule = range r.Rules { + hit = rule.Hit(event, robotInfo) + if hit { + return + } + } + return +} diff --git a/pkg/service/asChat/robot/robot.go b/pkg/service/asChat/robot/robot.go new file mode 100644 index 0000000..d27785b --- /dev/null +++ b/pkg/service/asChat/robot/robot.go @@ -0,0 +1,265 @@ +// Package robot ----------------------------- +// @file : robot.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/13 17:41 +// ------------------------------------------- +package robot + +import ( + "context" + "fmt" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/common/ws" + "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/service/asChat/chatCache" + "fonchain-fiee/pkg/service/asChat/consts" + "fonchain-fiee/pkg/service/asChat/dto" + "log" + "sync" + "time" +) + +func NewRobot(cache *chatCache.ChatCache) *Robot { + ctx := context.Background() + robotQuery, err := service.AccountFieeProvider.GetChatUserList(ctx, &accountFiee.GetChatUserListRequest{ + Query: &accountFiee.ChatUserData{Role: 3}, + Page: 1, PageSize: 1, + }) + if err != nil { + panic("聊天机器人初始化失败,err:" + err.Error()) + } + var robotInfo *accountFiee.ChatUserData + if robotQuery.Total > 0 { + robotInfo = robotQuery.List[0] + } else { + robotInfo = &accountFiee.ChatUserData{ + NickName: "阿泰", + Role: 3, + Origin: "fontree", + } + createChatUserResp, errs := service.AccountFieeProvider.CreateChatUser(ctx, robotInfo) + if errs != nil { + panic("聊天机器人创建失败,err:" + errs.Error()) + } + robotInfo = createChatUserResp.Data + } + r := &Robot{ + Info: robotInfo, + EventListener: &ws.EventListener{ + Name: "robot1", + ListenEvents: []ws.ListenEvent{ //只监听消息推送事件 + {ws.EventUserJoin, ws.EventProgressAfter}, + {ws.EventChatMessage, ws.EventProgressBefore}, + }, + Chan: make(ws.ListenEventChan), + }, + cache: cache, + } + err = r.ReloadRules(ctx) + fmt.Println("机器人规则加载完成,结果:", err) + consts.ChatRoom.RegisterEventListener(r.EventListener) + go r.Run() + return r +} + +type Robot struct { + Info *accountFiee.ChatUserData //机器人信息 + joinSessionRules, keywordsRules, noReplyAfterRules []IRobotTask //自动回复规则 + DelayTask []IRobotTask //延时任务 + ticker *time.Ticker //定时器 + stopChan chan struct{} //停止管道 + isRunning bool //运行状态 + mu sync.Mutex + *ws.EventListener + cache *chatCache.ChatCache +} + +//func (r *Robot) Listen(record *accountFiee.ChatRecordData) { +// for _, replyRules := range r.Rules { +// for _, rule := range replyRules.Rules { +// hit, runTime, function := rule.Hit(record) +// if hit && function != nil { +// if runTime.IsZero() { +// go func() { +// err := function(r.Info.ID, replyRules.Response) +// if err != nil { +// log.Printf("聊天机器人[%d]回复消息失败:%v", r.Info.ID, err) +// } +// }() +// } else { +// r.mu.Lock() +// r.DelayTask = append(r.DelayTask, RobotTask{ +// RunTime: runTime, +// Run: function, +// Response: replyRules.Response, +// }) +// r.mu.Unlock() +// // 添加任务后启动定时任务(如果未运行) +// if !r.isRunning { +// go r.Run() +// } +// } +// break +// } +// } +// } +//} + +func (r *Robot) Run() { + r.mu.Lock() + if r.isRunning { + r.mu.Unlock() + return + } + r.isRunning = true + r.ticker = time.NewTicker(time.Second) + r.stopChan = make(chan struct{}) + r.mu.Unlock() + + defer func() { + r.mu.Lock() + r.isRunning = false + if r.ticker != nil { + r.ticker.Stop() + r.ticker = nil + } + r.stopChan = nil + r.mu.Unlock() + }() + + for { + select { + default: + time.Sleep(200 * time.Millisecond) + case <-r.ticker.C: + r.mu.Lock() + if len(r.DelayTask) == 0 { + r.mu.Unlock() + break + //return // 没有任务时退出 + } + now := time.Now() + var remainingTasks []IRobotTask + for _, task := range r.DelayTask { + if now.After(task.RunTime()) { + // 执行任务 + go func() { + err := task.Run(r.cache) + if err != nil { + log.Printf("聊天机器人[%d]延时回复消息失败:%v", r.Info.ID, err) + } else { + log.Printf("聊天机器人[%d]延时回复消息成功", r.Info.ID) + } + }() + } else { + // 保留未到期的任务 + remainingTasks = append(remainingTasks, task) + } + } + r.DelayTask = remainingTasks + r.mu.Unlock() + case <-r.stopChan: + return + case event := <-r.EventListener.Chan: + fmt.Printf("robot listen event:%#v\n", event) + r.mu.Lock() + //加入聊天室规则 + hasHit := false + for _, rule := range r.joinSessionRules { + hit := rule.Hit(event, r.Info) + fmt.Printf("规则【%s】校验结果:%v\n", rule.GetTitle(), hit) + if hit { + hasHit = true + if rule.RunTime().IsZero() { + err := rule.Run(r.cache) + if err != nil { + log.Printf("robot 执行任务失败:%v\n", err) + } + } else { + r.RegisterDelayTask(rule) + } + } + } + if !hasHit { + for _, rule := range r.keywordsRules { + hit := rule.Hit(event, r.Info) + fmt.Printf("规则【%s】校验结果:%v\n", rule.GetTitle(), hit) + if hit { + hasHit = true + fmt.Println("命中规则:", rule.GetTitle()) + if rule.RunTime().IsZero() { + err := rule.Run(r.cache) + if err != nil { + log.Printf("robot 执行任务失败:%v\n", err) + } + } else { + r.RegisterDelayTask(rule) + } + } + } + } + if !hasHit { + for _, rule := range r.noReplyAfterRules { + hit := rule.Hit(event, r.Info) + fmt.Printf("规则【%s】校验结果:%v\n", rule.GetTitle(), hit) + if hit { + hasHit = true + fmt.Println("命中规则:", rule.GetTitle()) + if rule.RunTime().IsZero() { + err := rule.Run(r.cache) + if err != nil { + log.Printf("robot 执行任务失败:%v\n", err) + } + } else { + r.RegisterDelayTask(rule) + } + } + } + } + r.mu.Unlock() + } + } +} + +// Stop 主动停止机器人的定时任务 +func (r *Robot) Stop() { + r.mu.Lock() + if r.stopChan != nil { + close(r.stopChan) + } + r.mu.Unlock() +} +func (r *Robot) RegisterDelayTask(task IRobotTask) { + if task.Run == nil { + return + } + r.DelayTask = append(r.DelayTask, task) +} + +// 重载回复规则 +func (r *Robot) ReloadRules(ctx context.Context) error { + r.mu.Lock() + defer r.mu.Unlock() + r.joinSessionRules = []IRobotTask{} + r.keywordsRules = []IRobotTask{} + r.noReplyAfterRules = []IRobotTask{} + ruleListRes, err := service.AccountFieeProvider.GetChatAutoReplyRulerList(ctx, &accountFiee.GetChatAutoReplyRulerListRequest{ + Query: &accountFiee.ChatAutoReplyRulerData{Status: 1}, + Page: 1, + PageSize: -1, + }) + if err != nil { + log.Printf("robot 查询回复规则失败:%v\n", err) + return fmt.Errorf("robot 查询回复规则失败:%v\n", err) + } else { + var data []*dto.ChatAutoReplyData + for _, v := range ruleListRes.List { + tmp := dto.ChatAutoReplyData{} + tmp.Parse(v) + data = append(data, &tmp) + } + r.joinSessionRules, r.keywordsRules, r.noReplyAfterRules = ParseReplyRule(data) + } + return nil +} diff --git a/pkg/service/asChat/robot/rulerList.go b/pkg/service/asChat/robot/rulerList.go new file mode 100644 index 0000000..0bfa9ea --- /dev/null +++ b/pkg/service/asChat/robot/rulerList.go @@ -0,0 +1,64 @@ +// Package autoReply ----------------------------- +// @file : rulerList.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/13 16:16 +// ------------------------------------------- +package robot + +import ( + "fmt" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/common/ws" + "fonchain-fiee/pkg/service/asChat/chatCache" + "fonchain-fiee/pkg/service/asChat/dto" + "strings" + "time" +) + +type IRobotTask interface { + Hit(event ws.ListenEventData, sender *accountFiee.ChatUserData) (hit bool) + Run(cache *chatCache.ChatCache) error + RunTime() time.Time + SetResponse(response string) + GetResponse() string + SetTitle(title string) + GetTitle() string +} + +// 自动回复规则结构转换 +func ParseReplyRule(data []*dto.ChatAutoReplyData) (joinSessionRules, keywordsRules, noReplyAfterRules []IRobotTask) { + for _, responseRules := range data { + responseRules := responseRules + for ruleName, v := range responseRules.Rules { + if !v.Enable { + continue + } + switch ruleName { + case "keywords": //关键字回复 + var keywords []string + if v.Content == "" { + continue + } else { + keywords = strings.Split(v.Content, ",") + } + fmt.Println("ParseReplyRule 解析keywords:", keywords) + r := NewReplyWhenHitKeywords(responseRules.Title+"-keywords", keywords) + r.SetResponse(responseRules.Response) + keywordsRules = append(keywordsRules, r) + case "joinSession": //加入聊天后回复 + r := NewReplyWhenUserJoinSession(responseRules.Title + "-joinSession") + r.SetResponse(responseRules.Response) + joinSessionRules = append(joinSessionRules, r) + case "noReplyAfter": //指定时间没有回复则自动回复 + if v.SecondDuration == 0 { + continue + } + r := NewReplyWhenWaiterNoAction(responseRules.Title+"-noReplyAfter", v.SecondDuration) + r.SetResponse(responseRules.Response) + noReplyAfterRules = append(noReplyAfterRules, r) + } + } + } + return +} diff --git a/pkg/service/asChat/robot/ruler_ReplyWhenWaiterNoAction.go b/pkg/service/asChat/robot/ruler_ReplyWhenWaiterNoAction.go new file mode 100644 index 0000000..6fe204b --- /dev/null +++ b/pkg/service/asChat/robot/ruler_ReplyWhenWaiterNoAction.go @@ -0,0 +1,102 @@ +// Package robot ----------------------------- +// @file : ruler_ReplyWhenWaiterNoAction.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/13 18:02 +// ------------------------------------------- +package robot + +import ( + "context" + "fmt" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/common/ws" + "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/service/asChat/chatCache" + "fonchain-fiee/pkg/service/asChat/dto" + "fonchain-fiee/pkg/service/asChat/logic" + "time" +) + +// 客服指定时间不回复则自动回复 +func NewReplyWhenWaiterNoAction(title string, delaySecond time.Duration) IRobotTask { + return &RobotTaskReplyWhenWaiterNoAction{ + delaySecond: delaySecond, + title: title, + } +} + +type RobotTaskReplyWhenWaiterNoAction struct { + title string + runTime time.Time + Response string + Receiver *accountFiee.ChatUserData + Sender *accountFiee.ChatUserData + Msg string + Resp string + delaySecond time.Duration +} + +func (r *RobotTaskReplyWhenWaiterNoAction) Hit(event ws.ListenEventData, sender *accountFiee.ChatUserData) (hit bool) { + if event.Client == nil || event.EventType != ws.EventChatMessage { + return + } + //客服和机器人的的消息不需要处理 + if event.ChatUser.Role != 1 { + return + } + hit = true // 立即保存SessionId的值 + r.Sender = sender + r.Receiver = event.ChatUser + r.runTime = time.Now().Add(r.delaySecond * time.Second) + return +} + +func (r *RobotTaskReplyWhenWaiterNoAction) Run(cache *chatCache.ChatCache) error { + clientSessionId := fmt.Sprintf("%d", r.Receiver.ID) + fmt.Println("延时回复 sessionID:", clientSessionId) + //如果客服已经回复则不发送消息 + chatRecordListRes, err := service.AccountFieeProvider.GetChatRecordList(context.Background(), &accountFiee.GetChatRecordListRequest{ + Query: &accountFiee.ChatRecordData{ + SessionId: clientSessionId, + }, + Page: 1, + PageSize: 1, + Order: "created_at desc", + }) + if err != nil || chatRecordListRes.Total == 0 { + return err + } + checkUserId := chatRecordListRes.List[0].UserId + checkChatUser, err := service.AccountFieeProvider.GetChatUserDetail(context.Background(), &accountFiee.GetChatUserByIdRequest{Id: checkUserId}) + if err != nil || checkChatUser.Role != 1 { + return err + } + err = logic.NewMessage(context.Background(), cache, r.Sender, dto.NewMessageRequest{ + Waiter: true, + Robot: true, + AtUserId: r.Receiver.ID, + SessionId: clientSessionId, + Message: dto.Message{ + MsgType: 1, + Text: r.Resp, + LocalStamp: time.Now().Unix(), + }, + }) + return err +} +func (r *RobotTaskReplyWhenWaiterNoAction) RunTime() time.Time { + return r.runTime +} +func (r *RobotTaskReplyWhenWaiterNoAction) SetResponse(response string) { + r.Resp = response +} +func (r *RobotTaskReplyWhenWaiterNoAction) GetResponse() string { + return r.Response +} +func (r *RobotTaskReplyWhenWaiterNoAction) SetTitle(title string) { + r.title = title +} +func (r *RobotTaskReplyWhenWaiterNoAction) GetTitle() string { + return r.title +} diff --git a/pkg/service/asChat/robot/ruler_keywords.go b/pkg/service/asChat/robot/ruler_keywords.go new file mode 100644 index 0000000..cccc3d8 --- /dev/null +++ b/pkg/service/asChat/robot/ruler_keywords.go @@ -0,0 +1,80 @@ +package robot + +import ( + "context" + "fmt" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/common/ws" + "fonchain-fiee/pkg/service/asChat/chatCache" + "fonchain-fiee/pkg/service/asChat/dto" + "fonchain-fiee/pkg/service/asChat/logic" + "strings" + "time" +) + +type RobotTaskWithKeyworkds struct { + title string + runTime time.Time + Response string + Receiver *accountFiee.ChatUserData + Sender *accountFiee.ChatUserData + Msg string + Resp string + keywords []string +} + +func NewReplyWhenHitKeywords(title string, keywords []string) IRobotTask { + return &RobotTaskWithKeyworkds{title: title, keywords: keywords} +} +func (r *RobotTaskWithKeyworkds) Hit(event ws.ListenEventData, sender *accountFiee.ChatUserData) (hit bool) { + if event.EventType != ws.EventChatMessage || event.Msg == "" || event.Client == nil || event.ChatUser == nil { + return + } + if event.ChatUser.Role != 1 { + return + } + r.Sender = sender + r.Receiver = event.ChatUser + for _, v := range r.keywords { + if strings.Contains(event.Msg, v) { + fmt.Printf("关键词比对:%s ----- %s : true", event.Msg, v) + hit = true + break + } + fmt.Printf("关键词比对:%s ----- %s: false", event.Msg, v) + } + return +} + +func (r *RobotTaskWithKeyworkds) Run(cache *chatCache.ChatCache) (err error) { + err = logic.NewMessage(context.Background(), cache, r.Sender, dto.NewMessageRequest{ + Waiter: true, + Robot: true, + AtUserId: r.Receiver.ID, + SessionId: fmt.Sprintf("%d", r.Receiver.ID), + Message: dto.Message{ + MsgType: 1, + Text: r.Resp, + LocalStamp: time.Now().Unix(), + }, + }) + return +} + +func (r *RobotTaskWithKeyworkds) RunTime() time.Time { + return time.Time{} +} + +func (r *RobotTaskWithKeyworkds) SetResponse(response string) { + r.Resp = response +} + +func (r *RobotTaskWithKeyworkds) GetResponse() string { + return r.Response +} +func (r *RobotTaskWithKeyworkds) SetTitle(title string) { + r.title = title +} +func (r *RobotTaskWithKeyworkds) GetTitle() string { + return r.title +} diff --git a/pkg/service/asChat/robot/ruler_replyWhenUserJoinSession.go b/pkg/service/asChat/robot/ruler_replyWhenUserJoinSession.go new file mode 100644 index 0000000..5a2f68a --- /dev/null +++ b/pkg/service/asChat/robot/ruler_replyWhenUserJoinSession.go @@ -0,0 +1,95 @@ +package robot + +import ( + "context" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/common/ws" + "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/service/asChat/chatCache" + "fonchain-fiee/pkg/service/asChat/dto" + "fonchain-fiee/pkg/service/asChat/logic" + "strconv" + "time" +) + +func NewReplyWhenUserJoinSession(title string) IRobotTask { + return &ReplyWhenUserJoinSession{title: title} +} + +type ReplyWhenUserJoinSession struct { + Response string + Sender *accountFiee.ChatUserData + Msg string + Resp string + sessionId string + atUserId int + title string +} + +func (r *ReplyWhenUserJoinSession) Hit(event ws.ListenEventData, sender *accountFiee.ChatUserData) (hit bool) { + if event.EventType != ws.EventUserJoin { + return + } + if event.Client == nil { + return + } + ctx := context.Background() + queryRes, err := service.AccountFieeProvider.GetChatRecordList(ctx, &accountFiee.GetChatRecordListRequest{ + Query: &accountFiee.ChatRecordData{ + SessionId: event.Client.SessionId, + }, + Page: 1, + PageSize: 1, + Order: "created_at desc", + }) + if err != nil { + return + } + //如果最近一次的消息也是机器人发送的,就不再发送了 + for i, v := range queryRes.List { + if i == 0 { + if v.UserId == sender.ID { + return + } else { + break + } + } + } + hit = true + r.Sender = sender + r.sessionId = event.Client.SessionId + r.atUserId, _ = strconv.Atoi(event.Client.SessionId) + return +} + +func (r *ReplyWhenUserJoinSession) Run(cache *chatCache.ChatCache) (err error) { + err = logic.NewMessage(context.Background(), cache, r.Sender, dto.NewMessageRequest{ + Waiter: true, + Robot: true, + AtUserId: int64(r.atUserId), + SessionId: r.sessionId, + Message: dto.Message{ + MsgType: 1, + Text: r.Resp, + LocalStamp: time.Now().Unix(), + }, + }) + return +} + +func (r *ReplyWhenUserJoinSession) RunTime() time.Time { + return time.Time{} +} + +func (r *ReplyWhenUserJoinSession) SetResponse(response string) { + r.Resp = response +} +func (r *ReplyWhenUserJoinSession) GetResponse() string { + return r.Response +} +func (r *ReplyWhenUserJoinSession) SetTitle(title string) { + r.title = title +} +func (r *ReplyWhenUserJoinSession) GetTitle() string { + return r.title +} diff --git a/pkg/service/asChat/robot/task.go b/pkg/service/asChat/robot/task.go new file mode 100644 index 0000000..d64ea7f --- /dev/null +++ b/pkg/service/asChat/robot/task.go @@ -0,0 +1,20 @@ +// Package robot ----------------------------- +// @file : task.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2025/6/13 18:02 +// ------------------------------------------- +package robot + +import ( + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/pkg/service/asChat/chatCache" + "time" +) + +type RobotTask struct { + RunTime time.Time + Run func(msg string, cache *chatCache.ChatCache, Sender *accountFiee.ChatUserData) error + Response string + ChatUser *accountFiee.ChatUserData +} diff --git a/pkg/service/asChat/service.go b/pkg/service/asChat/service.go new file mode 100644 index 0000000..012b6bc --- /dev/null +++ b/pkg/service/asChat/service.go @@ -0,0 +1,46 @@ +// Package asChat ----------------------------- +// @file : service.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2024/9/10 下午7:05 +// ------------------------------------------- +package asChat + +import ( + "encoding/json" + "fonchain-fiee/pkg/common/ws" +) + +func HandleMessage(sourceData []byte, cli *ws.Client) { + var msg map[string]any + err := json.Unmarshal(sourceData, &msg) + if err != nil { + cli.Send <- ws.WsErrorInvalidDataFormat(cli.ClientId) + return + } + switch msg["type"] { + default: + cli.Send <- ws.WsErrorUnknownMessageType(cli.ClientId) + case ws.TestType: + var newMsg = ws.WsInfo{ + Type: ws.TestType, + Content: msg["content"], + } + byteMsg, _ := json.Marshal(newMsg) + cli.Send <- byteMsg + //case ws.ChatType: + // var chatInfo ChatInfo + // _ = json.Unmarshal(sourceData, &chatInfo) + // //解析Content + // if clients, ok := cli.Room.clients[chatInfo.Content.TargetUserId]; ok { + // for _, targetObj := range clients { + // if targetObj != nil { + // targetObj.Send <- WsChatMessage(msg.From, chatInfo.Content.TargetClientId, chatInfo.Content.Msg) + // } + // } + // } else { + // //对方不在线 + // cli.Send <- WsErrorMessage(ChatType, msg.From, e.ErrTargetOutLine, nil) + // } + } +} diff --git a/pkg/service/base.go b/pkg/service/base.go index ff35e97..736daae 100644 --- a/pkg/service/base.go +++ b/pkg/service/base.go @@ -7,8 +7,9 @@ import ( "fonchain-fiee/pkg/logic" "fonchain-fiee/pkg/serializer" "fonchain-fiee/pkg/service/approval/model" - "github.com/gin-gonic/gin" "net/http" + + "github.com/gin-gonic/gin" ) const ( @@ -189,3 +190,21 @@ func translateErrorMessage(c *gin.Context, message string) string { return common.EnMessages[message] } } + +func ErrWithCode(c *gin.Context, code e.ErrorCodeType, newMsg ...string) { + msg := e.GetCodeMsg(code) + if newMsg != nil { + msg = newMsg[0] + } + status := 1 + if code == e.NotLogin { + status = e.NotLogin + } + + c.JSON(e.Success, serializer.Response{ + Code: code, + Status: status, + Msg: msg, + Data: nil, + }) +} diff --git a/pkg/service/bundle/bundleBalance.go b/pkg/service/bundle/bundleBalance.go new file mode 100644 index 0000000..fe011f0 --- /dev/null +++ b/pkg/service/bundle/bundleBalance.go @@ -0,0 +1,250 @@ +package bundle + +import ( + "context" + "errors" + "fonchain-fiee/api/bundle" + "fonchain-fiee/api/cast" + "fonchain-fiee/pkg/service" + "strconv" + + bundleModel "fonchain-fiee/pkg/model/bundle" + "fonchain-fiee/pkg/model/login" + + "github.com/gin-gonic/gin" +) + +func BundleExtend(c *gin.Context) { + var req bundle.BundleExtendRequest + userInfo := login.GetUserInfoFromC(c) + req.Type = 1 // 设置未手动扩展' + req.OperatorName = userInfo.Name + req.OperatorPhoneNumber = userInfo.TelNum + req.OperatorId = userInfo.ID + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + res, err := service.BundleProvider.BundleExtend(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +func BundleExtendRecordsList(c *gin.Context) { + var req bundle.BundleExtendRecordsListRequest + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + res, err := service.BundleProvider.BundleExtendRecordsList(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +func GetBundleBalance(c *gin.Context) { + var req bundle.GetBundleBalanceListReq + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + res, err := service.BundleProvider.GetBundleBalanceList(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +func GetUsedRecordList(c *gin.Context) { + var req bundle.GetUsedRecordListReq + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + res, err := service.BundleProvider.GetUsedRecordList(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +func GetWorkDetail(c *gin.Context) { + var req cast.WorkDetailReq + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + // userInfo := login.GetUserInfoFromC(c) + // res, err := service.BundleProvider.GetBundleBalanceByUserId(context.TODO(), &bundle.GetBundleBalanceByUserIdReq{ + // UserId: int32(userInfo.ID), + // }) + // if err != nil { + // service.Error(c, err) + // return + // } + // if res.ExpiredTime <= time.Now().UnixMilli() { + // service.Success(c, gin.H{ + // "status": 1, + // "message": "套餐过期请重新购买", + // }) + // return + // } + + workRes, err := service.CastProvider.WorkDetail(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + + // if len(workRes.Images) > 0 && res.ImageConsumptionNumber >= res.ImageNumber { // 图片用尽 + // service.Success(c, gin.H{ + // "status": 2, + // "message": "增值服务已用尽", + // }) + // return + // } else { + // if res.VideoConsumptionNumber >= res.VideoNumber { // 视频用尽 + // service.Success(c, gin.H{ + // "status": 2, + // "message": "增值服务已用尽", + // }) + // return + // } + // } + + service.Success(c, workRes) +} + +func GetToBeComfirmedWorks(c *gin.Context) { + var req bundle.ToBeComfirmedWorksReq + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + userInfo := login.GetUserInfoFromC(c) + req.ArtistUuid = strconv.Itoa(int(userInfo.ID)) + res, err := service.BundleProvider.ToBeComfirmedWorks(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +func GetUserBalance(c *gin.Context) { + userInfo := login.GetUserInfoFromC(c) + res, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{ + UserId: int32(userInfo.ID), + }) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量 + var req bundleModel.UserWorkConfirmReq + + if err := c.ShouldBindJSON(&req); err != nil { + service.Error(c, err) + return + } + + if req.ConfirmStatus == 2 { // 驳回完直接结束 + res, err := service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{ + WorkAction: cast.WorkActionENUM_CONFIRM, + WorkUuid: req.WorkUuid, + ConfirmRemark: req.ConfirmRemark, + ConfirmStatus: 2, + }) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) + return + } + userInfo := login.GetUserInfoFromC(c) + balanceInfoRes, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{ + UserId: int32(userInfo.ID), + }) + if err != nil { + service.Error(c, err) + return + } + + wordInfoRes, err := service.CastProvider.WorkDetail(c, &cast.WorkDetailReq{ + WorkUuid: req.WorkUuid, + }) + if err != nil { + service.Error(c, err) + return + } + if wordInfoRes.WorkStatus != 4 { + service.Error(c, errors.New("作品不是待确认状态")) + return + } + var workCategory = wordInfoRes.WorkCategory + + var addBalanceReq bundle.AddBundleBalanceReq + addBalanceReq.UserId = int32(userInfo.ID) + switch workCategory { + case 1: + { + if balanceInfoRes.ImageConsumptionNumber >= balanceInfoRes.ImageNumber { // 图文余量不足 + service.Error(c, errors.New("图文余量不足")) + return + } + addBalanceReq.ImageConsumptionNumber = 1 + } + case 2: + { + if balanceInfoRes.VideoConsumptionNumber >= balanceInfoRes.VideoNumber { // 视频余量不足 + service.Error(c, errors.New("视频余量不足")) + return + } + addBalanceReq.VideoConsumptionNumber = 1 + } + default: + service.Error(c, errors.New("不支持的类型")) + return + } + _, err = service.BundleProvider.AddBundleBalance(c, &addBalanceReq) + if err != nil { + service.Error(c, err) + return + } + res, err := service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{ + WorkAction: cast.WorkActionENUM_CONFIRM, + WorkUuid: req.WorkUuid, + ConfirmRemark: req.ConfirmRemark, + ConfirmStatus: 1, + }) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +func CastLogConfirm(ctx *gin.Context) { + var req bundle.ConfirmWorkReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + res, err := service.BundleProvider.ConfirmWork(context.Background(), &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, res) +} diff --git a/pkg/service/bundle/bundleOrder.go b/pkg/service/bundle/bundleOrder.go index 0251c50..675277f 100644 --- a/pkg/service/bundle/bundleOrder.go +++ b/pkg/service/bundle/bundleOrder.go @@ -12,6 +12,7 @@ import ( "fonchain-fiee/pkg/service/bundle/common" "fonchain-fiee/pkg/service/bundle/logic" bundleModel "fonchain-fiee/pkg/service/bundle/model" + "fonchain-fiee/pkg/service/upload" "github.com/360EntSecGroup-Skylar/excelize" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" @@ -241,7 +242,7 @@ func CreateBundleOrderSignature(c *gin.Context) { //有套餐并且套餐未过期 if orderRecordsList.OrderRecords != nil { for _, orderInfo := range orderRecordsList.OrderRecords { - if orderInfo.CustomerID == strconv.FormatUint(userInfo.ID, 10) && orderInfo.PayType == 1 { + if orderInfo.CustomerID == strconv.FormatUint(userInfo.ID, 10) && orderInfo.Status == 1 { service.Error(c, errors.New(common.ThereAreOutstandingOrders)) return } @@ -319,7 +320,7 @@ func CreateBundleOrderSignature(c *gin.Context) { } } // 当前 未将 签名 写入合同中 todo 金额和有效时间待修改 - signContract, signContractErr := logic.SignContractV2(req.CustomerNum, bundleDetail.Contract, addTotalPrice, expirationDay) + signContract, signContractErr := logic.SignContractV2(req.CustomerNum, bundleDetail.Contract, bundleDetail.Price+addTotalPrice, expirationDay) if signContractErr != nil { service.Error(c, signContractErr) return @@ -881,8 +882,93 @@ func ExportOrderInfo(c *gin.Context) { } } - var exportUrl = strings.Replace(strings.Replace(filePath, ".", fmt.Sprintf("%s://%s", httpType, c.Request.Host), 1), "runtime", "api/static", 1) + var exportUrl = strings.Replace(strings.Replace(filePath, ".", fmt.Sprintf("%s://%s", httpType, c.Request.Host), 1), "runtime", "api/fiee/static", 1) //var exportUrl = fmt.Sprintf("%s%s/%s", httpType, c.Request.Host, dirPath + path) fmt.Println("exportUrl : ", exportUrl) service.Success(c, &bundleModel.ExportResponse{ExportUrl: exportUrl}) } + +func ExportOrderInfoOss(c *gin.Context) { + var req bundle.OrderRecordsRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + + res, err := service.BundleProvider.OrderRecordsList(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + + rows := make([][]interface{}, 0) + + for _, orderRecord := range res.OrderRecords { + if orderRecord.CustomerID != "" { + var userID uint64 + userID, err = strconv.ParseUint(orderRecord.CustomerID, 10, 64) + if err != nil { + err = nil + continue + } + + userInfo, _ := service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ + Domain: "app", + ID: userID, + }) + if userInfo != nil { + orderRecord.Sex = userInfo.Sex + orderRecord.Nationality = userInfo.Nationality + orderRecord.TelNum = userInfo.TelNum + } + } + + status := "" + if orderRecord.Status == bundleModel.OrderSigned { + status = "未支付" + } else if orderRecord.Status == bundleModel.OrderPaid { + status = "已支付" + } + financialConfirmation := "" + if orderRecord.FinancialConfirmation == bundleModel.UnConfirm { + financialConfirmation = "未确认" + } else if orderRecord.FinancialConfirmation == bundleModel.Confirmed { + financialConfirmation = "已确认" + } + + rows = append(rows, []interface{}{ + orderRecord.OrderNo, + orderRecord.CustomerNum, + orderRecord.CustomerName, + orderRecord.Sex, + orderRecord.TelNum, + orderRecord.Nationality, + orderRecord.BundleName, + orderRecord.SignedTime, + orderRecord.Amount, + orderRecord.Num, + orderRecord.ValueAddBundleAmount, + orderRecord.TotalAmount, + status, + orderRecord.PayTime, + financialConfirmation, + }) + } + + dirPath := "./runtime" + + filePath, err := logic.WriteToExcel(dirPath, rows) + if err != nil { + service.Error(c, err) + return + } + + exportUrl, err := upload.PutBos(filePath, "excel", true) + if err != nil { + service.Error(c, err) + return + } + + service.Success(c, &bundleModel.ExportResponse{ExportUrl: exportUrl}) +} diff --git a/pkg/service/bundle/bundleProfile.go b/pkg/service/bundle/bundleProfile.go index db8692e..d229aa4 100644 --- a/pkg/service/bundle/bundleProfile.go +++ b/pkg/service/bundle/bundleProfile.go @@ -4,6 +4,7 @@ import ( "context" "fonchain-fiee/api/bundle" "fonchain-fiee/pkg/service" + "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" ) @@ -76,3 +77,98 @@ func BundleList(c *gin.Context) { service.Success(c, res) } + +func SaveBundleV2(c *gin.Context) { + var req bundle.BundleProfile + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + + res, err := service.BundleProvider.SaveBundle(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + + service.Success(c, res) +} + +func BundleListV2(c *gin.Context) { + var req bundle.BundleListRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + + res, err := service.BundleProvider.BundleListV2(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + + service.Success(c, res) +} +func BundleDetailV2(c *gin.Context) { + var req bundle.BundleDetailRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + language := c.GetHeader("Accept-Language") + req.Language = language + res, err := service.BundleProvider.BundleDetailV2(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + + service.Success(c, res) +} +func HandShelf(c *gin.Context) { + var req bundle.HandShelfRequest + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + res, err := service.BundleProvider.HandShelf(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +func OnlyAddValueListByOrderNo(c *gin.Context) { + var req bundle.OnlyAddValueListByOrderNoRequest + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + res, err := service.BundleProvider.OnlyAddValueListByOrderNo(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + + service.Success(c, res) +} +func BundleListH5V2(c *gin.Context) { + var req bundle.BundleListRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + + res, err := service.BundleProvider.BundleListH5V2(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + + service.Success(c, res) +} diff --git a/pkg/service/bundle/common/time.go b/pkg/service/bundle/common/time.go index 93f996e..12b3dc6 100644 --- a/pkg/service/bundle/common/time.go +++ b/pkg/service/bundle/common/time.go @@ -3,9 +3,12 @@ package common import ( "fmt" "go.uber.org/zap" + "math/rand" "time" ) +const source = "0123456789abcdefghijklmnopqrstUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" + // GetBeijingTime 获取当前时间的北京时间 func GetBeijingTime() string { // 获取当前时间 @@ -26,3 +29,18 @@ func GetBeijingTime() string { return beijingTime } + +func GetZeroUuid() string { + id := time.Now().Format("20060102150405") + GetRandomstring(6) + result := "ZERO_" + id + return result +} + +func GetRandomstring(length int) string { + rand.Seed(time.Now().UnixNano()) + bytes := make([]byte, length) + for i := 0; i < length; i++ { + bytes[i] = source[rand.Intn(62)] + } + return string(bytes) +} diff --git a/pkg/service/bundle/logic/signContractV2.go b/pkg/service/bundle/logic/signContractV2.go index 3b24b60..4546729 100644 --- a/pkg/service/bundle/logic/signContractV2.go +++ b/pkg/service/bundle/logic/signContractV2.go @@ -47,6 +47,10 @@ func SignContractV2(customerNum, contract string, price float32, expirationDate } func InsertSignatureV2(templatePath, outputPath string, price float32, expirationDate string) error { + fmt.Println("================================templatePath:", templatePath) + fmt.Println("================================outputPath:", outputPath) + fmt.Println("================================price:", price) + fmt.Println("================================expirationDate:", expirationDate) pdf := gopdf.GoPdf{} pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4}) diff --git a/pkg/service/bundle/pay.go b/pkg/service/bundle/pay.go index 33d7d10..da73930 100644 --- a/pkg/service/bundle/pay.go +++ b/pkg/service/bundle/pay.go @@ -2,6 +2,7 @@ package bundle import ( "context" + "dubbo.apache.org/dubbo-go/v3/common/logger" "encoding/json" "errors" "fmt" @@ -141,76 +142,292 @@ func CreateAntomPay(c *gin.Context) { // 获取 用户信息 userInfo := login.GetUserInfoFromC(c) - // 检查 订单信息 - detail, detailErr := service.BundleProvider.OrderRecordsDetail(context.Background(), &bundle.OrderRecordsDetailRequest{ + // outTradeNo就是orderNo,根据这个去查询子表的source,如果是2就时单独的子套餐,如果是1就是主套餐 + orderLimit, err := service.BundleProvider.OrderListByOrderNo(context.Background(), &bundle.OrderInfoByOrderNoRequest{ OrderNo: req.OutTradeNo, }) - - if detailErr != nil { - service.Error(c, detailErr) + if err != nil { + fmt.Println("=============== antom创建支付,查询订单source报错:", err) + logger.Errorf("=============== antom创建支付,查询订单source报错:", err) + service.Error(c, err) return } - fmt.Println("detail.OrderRecord.CustomerID :", detail.OrderRecord.CustomerID) - - // 判断 是否是 本人操作 - if strconv.FormatUint(userInfo.ID, 10) != detail.OrderRecord.CustomerID { - service.Error(c, errors.New(common.NotMatchOrderInfo)) - return + currencyType := 0 + if req.ProductPriceCurrency == "cny" || req.ProductPriceCurrency == "CNY" { + currencyType = 1 + } + if req.ProductPriceCurrency == "usd" || req.ProductPriceCurrency == "USD" { + currencyType = 2 } - fmt.Println("detail.OrderRecord.TotalAmount :", detail.OrderRecord.TotalAmount) - fmt.Println("req.ProductAllPrice :", req.ProductAllPrice) - fmt.Println("detail.OrderRecord.TotalAmount*100 :", detail.OrderRecord.TotalAmount*100) + bundleName := "" // 套餐名称 - //金额校验 - orderAmountInCents := int64(math.Round(float64(detail.OrderRecord.TotalAmount * 100))) - reqAmountInCents := int64(math.Round(float64(req.ProductAllPrice))) - if orderAmountInCents != reqAmountInCents { - fmt.Println("orderAmountInCents :", orderAmountInCents) - fmt.Println("reqAmountInCents :", reqAmountInCents) - fmt.Println("111111111111111111111111111111111111") - service.Error(c, errors.New(common.InvalidOrderAmount)) - return - } - - fmt.Println("detail.OrderRecord.Status :", detail.OrderRecord.Status) - fmt.Println("detail.OrderRecord.CheckoutSessionId :", detail.OrderRecord.CheckoutSessionId) - fmt.Println("detail.OrderRecord.PayTime :", detail.OrderRecord.PayTime) - - // 如果 当前订单 是 已签未支付 且 存在 checkoutSessionId 需要 查询 支付结果 - if detail.OrderRecord.Status == bundleModel.OrderSigned && detail.OrderRecord.CheckoutSessionId != "" && detail.OrderRecord.PayTime == "" { - // 查询支付结果 - stripeInfosRes, stripeInfosErr := service.PaymentProvider.QueryAntomPayByCheckoutSessionId(context.Background(), &payment.AntomPayQueryRequest{ - CheckoutSessionIds: []string{detail.OrderRecord.CheckoutSessionId}, + if orderLimit != nil && orderLimit.Type == 1 { // 这儿的type实际就是source + // 检查 订单信息 type是1说明既有主套餐又有增值服务 + detail, detailErr := service.BundleProvider.OrderRecordsDetail(context.Background(), &bundle.OrderRecordsDetailRequest{ + OrderNo: req.OutTradeNo, }) - - if stripeInfosErr != nil { - service.Error(c, errors.New(common.ErrorQueryStripeInfo)) + if detailErr != nil { + fmt.Println("=============== antom创建支付,查询主订单信息报错:", detailErr) + logger.Errorf("=============== antom创建支付,查询主订单信息报错:", detailErr) + service.Error(c, detailErr) return } - if stripeInfosRes != nil && len(stripeInfosRes.Infos) > 0 { - for _, info := range stripeInfosRes.Infos { - if info.OutTradeNo == detail.OrderRecord.OrderNo && info.Status == "paid" { - _, updateOrderRecordErr := service.BundleProvider.UpdateOrderRecord(context.Background(), &bundle.OrderRecord{ - Uuid: detail.OrderRecord.Uuid, - Status: bundleModel.OrderPaid, - PayTime: common.GetBeijingTime(), - }) - fmt.Println("detail.OrderRecord.Uuid :", detail.OrderRecord.Uuid) - if updateOrderRecordErr != nil { - service.Error(c, detailErr) + fmt.Println("detail.OrderRecord.Status :", detail.OrderRecord.Status) + fmt.Println("detail.OrderRecord.CheckoutSessionId :", detail.OrderRecord.CheckoutSessionId) + fmt.Println("detail.OrderRecord.PayTime :", detail.OrderRecord.PayTime) + + bundleName = detail.OrderRecord.BundleName + + // 主套餐 + // 如果 当前订单 是 已签未支付 且 存在 checkoutSessionId 需要 查询 支付结果 + if detail.OrderRecord.Status == bundleModel.OrderSigned && detail.OrderRecord.CheckoutSessionId != "" && detail.OrderRecord.PayTime == "" { + // 查询支付结果 + stripeInfosRes, stripeInfosErr := service.PaymentProvider.QueryAntomPayByCheckoutSessionId(context.Background(), &payment.AntomPayQueryRequest{ + CheckoutSessionIds: []string{detail.OrderRecord.CheckoutSessionId}, + }) + + if stripeInfosErr != nil { + service.Error(c, errors.New(common.ErrorQueryStripeInfo)) + return + } + + if stripeInfosRes != nil && len(stripeInfosRes.Infos) > 0 { + for _, info := range stripeInfosRes.Infos { + if info.OutTradeNo == detail.OrderRecord.OrderNo && info.Status == "paid" { + // 更新主套餐和子套餐 TODO + // 更新子套餐,TODO + _, updateStatusErr := service.BundleProvider.UpdateOrderRecordByOrderNo(context.Background(), &bundle.OrderRecord{ + OrderNo: req.OutTradeNo, + PayTime: common.GetBeijingTime(), + Status: bundleModel.OrderPaid, + }) + fmt.Println("detail.OrderRecord.Uuid :", detail.OrderRecord.Uuid) + if updateStatusErr != nil { + fmt.Println("=============== antom创建支付,更新主套餐和子套餐支付状态报错:", updateStatusErr) + logger.Errorf("=============== antom创建支付,更新主套餐和子套餐支付状态报错:", updateStatusErr) + service.Error(c, updateStatusErr) + return + } + service.Success(c, &service.Response{ + Msg: common.HadPay, + Code: 0, + }) return } - service.Success(c, &service.Response{ - Msg: common.HadPay, - Code: 0, - }) - return } } } + + fmt.Println("detail.OrderRecord.CustomerID :", detail.OrderRecord.CustomerID) + + // 判断 是否是 本人操作 + if strconv.FormatUint(userInfo.ID, 10) != detail.OrderRecord.CustomerID { + service.Error(c, errors.New(common.NotMatchOrderInfo)) + return + } + + fmt.Println("detail.OrderRecord.TotalAmount :", detail.OrderRecord.TotalAmount) + fmt.Println("req.ProductAllPrice :", req.ProductAllPrice) + fmt.Println("detail.OrderRecord.TotalAmount*100 :", detail.OrderRecord.TotalAmount*100) + + //金额校验 + orderAmountInCents := int64(math.Round(float64(detail.OrderRecord.TotalAmount) * 100)) + reqAmountInCents := req.ProductAllPrice + if orderAmountInCents != reqAmountInCents { + fmt.Println("111111111111111111111111111111111111") + service.Error(c, errors.New(common.InvalidOrderAmount)) + return + } + } + + if orderLimit != nil && orderLimit.Type == 2 { + + res, listErr := service.BundleProvider.OnlyAddValueListByOrderNo(context.Background(), &bundle.OnlyAddValueListByOrderNoRequest{ + OrderNo: req.OutTradeNo, + }) + if listErr != nil { + fmt.Println("=============== antom创建支付,查询单独增值服务列表报错:", listErr) + logger.Errorf("=============== antom创建支付,查询单独增值服务列表报错:", listErr) + service.Error(c, listErr) + return + } + if res != nil && len(res.AddBundleInfos) > 0 { + firstAddBundle := res.AddBundleInfos[0] + // 如果 当前订单 是 已签未支付 且 存在 checkoutSessionId 需要 查询 支付结果 + if firstAddBundle.PaymentStatus == bundleModel.OrderSigned && firstAddBundle.CheckOutSessionId != "" { + // 查询支付结果 + stripeInfosRes, stripeInfosErr := service.PaymentProvider.QueryAntomPayByCheckoutSessionId(context.Background(), &payment.AntomPayQueryRequest{ + CheckoutSessionIds: []string{firstAddBundle.CheckOutSessionId}, + }) + + if stripeInfosErr != nil { + service.Error(c, errors.New(common.ErrorQueryStripeInfo)) + return + } + + if stripeInfosRes != nil && len(stripeInfosRes.Infos) > 0 { + for _, info := range stripeInfosRes.Infos { + if info.OutTradeNo == firstAddBundle.OrderNo && info.Status == "paid" { + // 更新子套餐,TODO + _, updateStatusErr := service.BundleProvider.UpdateOrderRecordByOrderNo(context.Background(), &bundle.OrderRecord{ + OrderNo: req.OutTradeNo, + PayTime: common.GetBeijingTime(), + Status: bundleModel.OrderPaid, + }) + fmt.Println("req.OutTradeNo :", req.OutTradeNo) + if updateStatusErr != nil { + fmt.Println("=============== antom创建支付,更新子套餐支付状态报错:", updateStatusErr) + logger.Errorf("=============== antom创建支付,更新子套餐支付状态报错:", updateStatusErr) + service.Error(c, updateStatusErr) + return + } + service.Success(c, &service.Response{ + Msg: common.HadPay, + Code: 0, + }) + return + } + } + } + } + + fmt.Println("firstAddBundle.CustomerID :", firstAddBundle.CustomerID) + + // 判断 是否是 本人操作 + if strconv.FormatUint(userInfo.ID, 10) != firstAddBundle.CustomerID { + service.Error(c, errors.New(common.NotMatchOrderInfo)) + return + } + + orderAmountInCents := int64(0.0) + for _, info := range res.AddBundleInfos { + temp := int64(math.Round(float64(info.Amount) * 100)) + orderAmountInCents += temp + } + + fmt.Println("orderAmountInCents :", orderAmountInCents) + fmt.Println("req.ProductAllPrice :", req.ProductAllPrice) + + //金额校验 + reqAmountInCents := req.ProductAllPrice + if orderAmountInCents != reqAmountInCents { + fmt.Println("111111111111111111111111111111111111") + service.Error(c, errors.New(common.InvalidOrderAmount)) + return + } + } + } + + if req.ProductAllPrice == 0 { + ////创建对账单 todo 待修改 + _, err = service.BundleProvider.CreateReconciliation(context.Background(), &bundle.ReconciliationInfo{ + BundleOrderOn: req.OutTradeNo, + BundleAddOrderOn: req.OutTradeNo, + UserName: userInfo.Name, + UserTel: userInfo.TelNum, + BundleName: bundleName, + PayAmount: float32(req.ProductAllPrice), + CurrencyType: int32(currencyType), + PayStatus: 2, + PayTime: common.GetBeijingTime(), + UserID: userInfo.ID, + SerialNumber: common.GetZeroUuid(), + }) + if err != nil { + fmt.Println("=============== antom创建支付,创建对账单报错:", err) + logger.Errorf("=============== antom创建支付,创建对账单报错:", err) + service.Error(c, err) + return + } + + _, updateStatusErr := service.BundleProvider.UpdateOrderRecordByOrderNo(context.Background(), &bundle.OrderRecord{ + OrderNo: req.OutTradeNo, + PayTime: common.GetBeijingTime(), + Status: bundleModel.OrderPaid, + }) + if updateStatusErr != nil { + fmt.Println("=============== antom创建支付,更新订单报错:", updateStatusErr) + logger.Errorf("=============== antom创建支付,更新订单报错:", updateStatusErr) + service.Error(c, updateStatusErr) + return + } + + switch orderLimit.Type { + case common.OrderTypePackage: + //如果是购买套餐 1:创建新的余量信息CreateBundleBalance 2 添加扩展记录BundleExtend + _, err = service.BundleProvider.CreateBundleBalance(context.Background(), &bundle.CreateBundleBalanceReq{ + UserId: int32(orderLimit.UserId), + OrderUUID: orderLimit.OrderUUID, + //AccountNumber: orderLimit.AccountNumber, + //VideoNumber: orderLimit.VideoNumber, + //ImageNumber: orderLimit.ImageNumber, + //DataAnalysisNumber: orderLimit.DataNumber, + ExpansionPacksNumber: 1, + }) + if err != nil { + fmt.Println("=============== antom创建支付,OrderTypePackage报错:", err) + logger.Errorf("=============== antom创建支付,OrderTypePackage报错:", err) + service.Error(c, err) + return + } + case common.OrderTypeAddon: + //如果是购买增值服务 1:修改余量信息AddBundleBalance 2 添加扩展记录BundleExtend + //_, err = service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{ + // UserId: int32(orderLimit.UserId), + // OrderUUID: orderLimit.OrderUUID, + // AccountNumber: orderLimit.AccountNumber, + // VideoNumber: orderLimit.VideoNumber, + // ImageNumber: orderLimit.ImageNumber, + // DataAnalysisNumber: orderLimit.DataNumber, + // ExpansionPacksNumber: 1, + //}) + //if err != nil { + // fmt.Println("=============== antom创建支付,OrderTypePackage报错:", err) + // logger.Errorf("=============== antom创建支付,OrderTypePackage报错:", err) + // service.Error(c, err) + // return + //} + default: + fmt.Println("=============== antom创建支付,无效的订单类型:", err) + logger.Errorf("=============== antom创建支付,无效的订单类型:", err) + service.Error(c, errors.New("无效的订单类型")) + return + } + + var timeUnit uint32 + switch orderLimit.Unit { + case "天": + timeUnit = common.TimeUnitDay + case "月": + timeUnit = common.TimeUnitMonth + case "年": + timeUnit = common.TimeUnitYear + default: + timeUnit = 0 + } + _, err = service.BundleProvider.BundleExtend(context.Background(), &bundle.BundleExtendRequest{ + UserId: int64(orderLimit.UserId), + AccountAdditional: uint32(orderLimit.AccountNumber), + VideoAdditional: uint32(orderLimit.VideoNumber), + ImagesAdditional: uint32(orderLimit.ImageNumber), + DataAdditional: uint32(orderLimit.DataNumber), + AvailableDurationAdditional: uint32(orderLimit.Duration), + TimeUnit: timeUnit, + AssociatedorderNumber: req.OutTradeNo, //增值服务订单号 + Type: 2, //自行购买 + OperatorName: orderLimit.UserName, + OperatorId: orderLimit.UserId, + }) + if err != nil { + service.Error(c, err) + return + } + + service.Success(c) + return } var antomReq payment.CreatePayRequest @@ -235,9 +452,9 @@ func CreateAntomPay(c *gin.Context) { fmt.Println("result.CheckoutSessionId :", result.CheckoutSessionId) fmt.Println("result.Url :", result.Url) - //更新订单状态 - _, updateOrderRecordErr := service.BundleProvider.UpdateOrderRecord(context.Background(), &bundle.OrderRecord{ - Uuid: detail.OrderRecord.Uuid, + //更新订单url和checkSessionId + _, updateStatusErr := service.BundleProvider.UpdateOrderRecordByOrderNo(context.Background(), &bundle.OrderRecord{ + OrderNo: req.OutTradeNo, CheckoutSessionId: result.CheckoutSessionId, CheckoutSessionUrl: result.Url, }) @@ -245,25 +462,35 @@ func CreateAntomPay(c *gin.Context) { resp := &order.CreateStripeCheckoutSessionResponse{} resp.CheckoutSessionUrl = result.Url resp.CheckoutSessionId = result.CheckoutSessionId - fmt.Println("resp:", resp) - - if updateOrderRecordErr != nil { - fmt.Println("有更新报错:", updateOrderRecordErr) - service.Error(c, updateOrderRecordErr) + fmt.Println("req.OutTradeNo :", req.OutTradeNo) + if updateStatusErr != nil { + fmt.Println("=============== antom创建支付,更新订单的请求id报错:", updateStatusErr) + logger.Errorf("=============== antom创建支付,更新订单的请求id报错:", updateStatusErr) + service.Error(c, updateStatusErr) return } + fmt.Println("resp:", resp) + ////创建对账单 todo 待修改 - //_, err = service.BundleProvider.CreateReconciliation(context.Background(), &bundle.ReconciliationInfo{ - // BundleOrderOn: detail.OrderRecord.OrderNo, - // BundleAddOrderOn: detail.OrderRecord.OrderNo, - // UserName: userInfo.Name, - // UserTel: userInfo.TelNum, - // BundleName: detail.OrderRecord.BundleName, - // Amount: detail.OrderRecord.TotalAmount, - // CurrencyType: int32(detail.OrderRecord.AmountType), - // PayStatus: 1, - // UserId: userInfo.ID, - //}) + _, err = service.BundleProvider.CreateReconciliation(context.Background(), &bundle.ReconciliationInfo{ + BundleOrderOn: req.OutTradeNo, + BundleAddOrderOn: req.OutTradeNo, + UserName: userInfo.Name, + UserTel: userInfo.TelNum, + BundleName: bundleName, + PayAmount: float32(req.ProductAllPrice) / 100, // 以后别用float存钱,无语 + CurrencyType: int32(currencyType), + PayStatus: 1, + UserID: userInfo.ID, + SerialNumber: result.CheckoutSessionId, + }) + if err != nil { + fmt.Println("=============== antom创建支付,创建对账单报错:", err) + logger.Errorf("=============== antom创建支付,创建对账单报错:", err) + service.Error(c, err) + return + } + service.Success(c, resp) } @@ -376,6 +603,19 @@ func AntomWebhook(c *gin.Context) { service.Error(c, err) return } + // 更新对账单 + _, err = service.BundleProvider.UpdateReconciliationStatusBySerialNumber(context.Background(), &bundle.UpdateStatusAndPayTimeBySerialNumber{ + PayTime: paymentTime, + PaymentStatus: 2, + SerialNumber: requestId, + }) + if err != nil { + fmt.Println("=============== antom回调,更新对账单报错:", err) + logger.Errorf("=============== antom回调,更新对账单报错:", err) + service.Error(c, err) + return + } + //添加余额 orderLimit, err := service.BundleProvider.OrderListByOrderNo(context.Background(), &bundle.OrderInfoByOrderNoRequest{ OrderNo: resp.OutTradeNo, diff --git a/pkg/service/bundle/reconciliation.go b/pkg/service/bundle/reconciliation.go index 0930f7e..85323af 100644 --- a/pkg/service/bundle/reconciliation.go +++ b/pkg/service/bundle/reconciliation.go @@ -2,11 +2,19 @@ package bundle import ( "context" + "fmt" + "fonchain-fiee/api/accountFiee" "fonchain-fiee/api/bundle" + "fonchain-fiee/cmd/config" "fonchain-fiee/pkg/service" + "fonchain-fiee/pkg/service/bundle/common" + "fonchain-fiee/pkg/service/bundle/logic" + bundleModel "fonchain-fiee/pkg/service/bundle/model" "fonchain-fiee/pkg/utils" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" + "strconv" + "time" ) func GetReconciliationList(c *gin.Context) { @@ -74,3 +82,331 @@ func GetReconciliationListDownload(c *gin.Context) { return } + +func AutoCreateUserAndOrder(c *gin.Context) { + var req bundle.AutoCreateUserAndOrderRequest + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + fmt.Println("==================== 111111111111111") + data, listErr := service.BundleProvider.ListUnfinishedInfos(context.Background(), &req) + if listErr != nil { + service.Error(c, listErr) + return + } + if data != nil { + fmt.Println("待处理的数据量:", len(data.UnfinishedInfos)) + } + + for _, unfinishInfo := range data.UnfinishedInfos { + fmt.Println("==================== 2222222222222") + // TODO 1.创建实名用户 [ok] + userReq := new(accountFiee.CreateUserAndRealNameRequest) + userReq.UserNum = unfinishInfo.UserNum + userReq.UserName = unfinishInfo.UserName + userReq.UserTelArea = unfinishInfo.UserTelArea + userReq.UserTel = unfinishInfo.UserTel + userReq.UserSex = unfinishInfo.UserSex + userReq.Nationality = unfinishInfo.Nationality + userReq.PlaceOfResidence = unfinishInfo.PlaceOfResidence + userReq.DocumentType = unfinishInfo.DocumentType + userReq.UserIdCardFrontUrl = unfinishInfo.UserIdCardFrontUrl + userReq.UserIdCardReverseUrl = unfinishInfo.UserIdCardReverseUrl + userReq.UserIdCardValidity = unfinishInfo.UserIdCardValidity + // 解析时间字符串 + loc, _ := time.LoadLocation("Local") + t, err := time.ParseInLocation("2006-01-02 15:04:05", unfinishInfo.PayTime, loc) + if err != nil { + fmt.Println("解析时间失败:", err) + return + } + // 减去一天 + oneDayBefore := t.AddDate(0, 0, -1) + + // 格式化为字符串 + userReq.AuditTime = oneDayBefore.Format("2006-01-02 15:04:05") + userResp, userErr := service.AccountFieeProvider.CreateUserAndRealName(context.Background(), userReq) + if userErr != nil { + service.Error(c, userErr) + return + } + + fmt.Println("==================== 3333333333333") + // TODO 2.匹配套餐并签约? [] + // 获取 最后一次的 合同编号 + lastOrderRecord, _ := service.BundleProvider.OrderRecordsList(context.Background(), &bundle.OrderRecordsRequest{ + PageSize: 1, + Page: 1, + }) + lastContractNo := "" + if lastOrderRecord.OrderRecords != nil { + for _, lastOrder := range lastOrderRecord.OrderRecords { + lastContractNo = lastOrder.ContractNo + } + } + BundleName := "" + BundleUuid := "" + videoUuid := "" + textAndImagesUuid := "" + reportUuid := "" + accountUuid := "" + durationUuid := "" + if config.AppConfig.System.AppMode == "prod" { + BundleName = "全球尊享版" + BundleUuid = "ac4c99c2951c2fcdbf417928d321554d" + videoUuid = "a29a1fa2862b2cdda1377b19066c8eb7" + textAndImagesUuid = "dfba176a40ae2d23aa4ef9b30b646bc8" + reportUuid = "1727557a85c92957a3e3332d18c713aa" + accountUuid = "e1cc219e4f682b3d8cb85929e540a0de" + durationUuid = "f002449ac57a2e71b0673da938c0354e" + } else { + BundleName = "测试导入全球尊享版" + BundleUuid = "5e84f86cb7f92a4ab785271e4a383aa5" + videoUuid = "1084c3406c852fb5a09be89918d568e6" + textAndImagesUuid = "51aa912412b22d68adb14f4151242df2" + reportUuid = "362d66d4877827fdafab7b3e66d62e74" + accountUuid = "9eb646957aff239e9f89e2c6ed6aeb23" + durationUuid = "8f20f3863a7c2a86bcd81d3fbacbf8f7" + } + var addRecords []*bundle.OrderCreateAddRecord + var addTotalPrice float32 + var TotalPrice float32 + var expirationDay string + numMap := make(map[string]int32) + numMap["3150.00"] = 3 + numMap["5600.00"] = 8 + numMap["6500.00"] = 10 + numMap["8500.00"] = 15 + numMap["10500.00"] = 20 + numMap["11500.00"] = 25 + numMap["14100.00"] = 30 + incrMap := make(map[string]float32) + incrMap["3150.00"] = 1650 + incrMap["5600.00"] = 4100 + incrMap["6500.00"] = 5000 + incrMap["8500.00"] = 7000 + incrMap["10500.00"] = 9000 + incrMap["11500.00"] = 10000 + incrMap["14100.00"] = 12600 + addTotalPrice = incrMap[unfinishInfo.OrderPayAmount] + fmt.Println("incrMap:", incrMap) + fmt.Println("unfinishInfo.OrderPayAmount:", unfinishInfo.OrderPayAmount) + fmt.Println("addTotalPrice:", addTotalPrice) + f64, err := strconv.ParseFloat(unfinishInfo.OrderPayAmount, 32) + TotalPrice = float32(f64) + addRecords = append(addRecords, + &bundle.OrderCreateAddRecord{ + ServiceType: 1, + ValueUid: videoUuid, + CurrencyType: 2, //美元 + Amount: addTotalPrice, //增值服务金额 + Num: numMap[unfinishInfo.OrderPayAmount], + Unit: "个", + Source: 1, + PaymentStatus: 1, + HandlingFee: unfinishInfo.OrderFeeAmount, + }, &bundle.OrderCreateAddRecord{ //图文 + ServiceType: 2, + ValueUid: textAndImagesUuid, + CurrencyType: 2, //美元 + Amount: 0, //增值服务金额 + Num: 120, + Unit: "个", + Source: 1, + PaymentStatus: 1, + HandlingFee: unfinishInfo.OrderFeeAmount, + }, &bundle.OrderCreateAddRecord{ //数据报表 + ServiceType: 3, + ValueUid: reportUuid, + CurrencyType: 2, //美元 + Amount: 0, //增值服务金额 + Num: 12, + Unit: "个", + Source: 1, + PaymentStatus: 1, + HandlingFee: unfinishInfo.OrderFeeAmount, + }, &bundle.OrderCreateAddRecord{ //账号数 + ServiceType: 4, + ValueUid: accountUuid, + CurrencyType: 2, //美元 + Amount: 0, //增值服务金额 + Num: 3, + Unit: "个", + Source: 1, + PaymentStatus: 1, + HandlingFee: unfinishInfo.OrderFeeAmount, + }, &bundle.OrderCreateAddRecord{ //可用时长 + ServiceType: 5, + ValueUid: durationUuid, + CurrencyType: 2, //美元 + Amount: 0, //增值服务金额 + Num: 10, + Unit: "年", + Source: 1, + PaymentStatus: 1, + HandlingFee: unfinishInfo.OrderFeeAmount, + }, + ) + // 当前 未将 签名 写入合同中 todo 金额和有效时间待修改 + contract := "https://e-cdn.fontree.cn/fonchain-main/prod/file/saas/contract/template-25032801.pdf" + expirationDay = t.AddDate(10, 0, 0).Format("2006-01-02") + signContract, signContractErr := logic.SignContractV2(userReq.UserNum, contract, TotalPrice, expirationDay) + if signContractErr != nil { + service.Error(c, signContractErr) + return + } + var orderReq bundle.OrderCreateRecord + orderReq.CustomerNum = userReq.UserNum + orderReq.CustomerName = userReq.UserName + orderReq.CustomerID = strconv.FormatInt(userResp.UserId, 10) + orderReq.BundleName = BundleName //套餐名称 + orderReq.Amount = 1500 + orderReq.AmountType = 2 + //req.BundleCommonUid = bundleDetail.BundleCommonUid + orderReq.TotalAmount = TotalPrice + orderReq.ContractNo = common.GenerateContractNo(lastContractNo) + orderReq.SignContract = signContract + orderReq.SignedTime = common.GetBeijingTime() + orderReq.Status = bundleModel.OrderSigned + orderReq.AddRecords = addRecords + //req.ExpirationTime = expirationDay //过期日期取消 在完成支付是更新 + orderReq.PayType = 1 + //补充 + orderReq.BundleUuid = BundleUuid + orderReq.Language = "en-US" + orderReq.OrderNo = unfinishInfo.OrderNo + //expirationTime := t.AddDate(10, 0, 0).Format("2006-01-02 15:04:05") + //orderReq.ExpirationTime = expirationTime + _, err = service.BundleProvider.CreateOrderRecord(context.Background(), &orderReq) + if err != nil { + service.Error(c, err) + return + } + fmt.Println("==================== 44444444444444444") + + // TODO 3.创建成功的订单和回调 [ok] + ////创建对账单 todo 待修改 + + // outTradeNo就是orderNo,根据这个去查询子表的source,如果是2就时单独的子套餐,如果是1就是主套餐 + orderLimit, err := service.BundleProvider.OrderListByOrderNo(context.Background(), &bundle.OrderInfoByOrderNoRequest{ + OrderNo: unfinishInfo.OrderNo, + }) + if err != nil { + fmt.Println("=============== antom创建支付,查询订单source报错:", err) + service.Error(c, err) + return + } + + bundleName := "" // 套餐名称 + detail, detailErr := service.BundleProvider.OrderRecordsDetail(context.Background(), &bundle.OrderRecordsDetailRequest{ + OrderNo: unfinishInfo.OrderNo, + }) + if detailErr != nil { + fmt.Println("=============== antom创建支付,查询主订单信息报错:", detailErr) + service.Error(c, detailErr) + return + } + + fmt.Println("detail.OrderRecord.Status :", detail.OrderRecord.Status) + fmt.Println("detail.OrderRecord.CheckoutSessionId :", detail.OrderRecord.CheckoutSessionId) + fmt.Println("detail.OrderRecord.PayTime :", detail.OrderRecord.PayTime) + + bundleName = detail.OrderRecord.BundleName + payAmount, err := strconv.ParseFloat(unfinishInfo.OrderPayAmount, 64) + if err != nil { + fmt.Println("转换失败:", err) + return + } + + _, err = service.BundleProvider.CreateReconciliation(context.Background(), &bundle.ReconciliationInfo{ + BundleOrderOn: unfinishInfo.OrderNo, + BundleAddOrderOn: unfinishInfo.OrderNo, + UserName: unfinishInfo.UserName, + UserTel: unfinishInfo.UserTel, + BundleName: bundleName, + PayAmount: float32(payAmount), + CurrencyType: 2, + PayStatus: 2, + PayTime: unfinishInfo.PayTime, + UserID: uint64(userResp.UserId), + SerialNumber: unfinishInfo.OrderNo, + }) + if err != nil { + fmt.Println("=============== antom创建支付,创建对账单报错:", err) + service.Error(c, err) + return + } + + _, updateStatusErr := service.BundleProvider.UpdateOrderRecordByOrderNo(context.Background(), &bundle.OrderRecord{ + OrderNo: unfinishInfo.OrderNo, + PayTime: unfinishInfo.PayTime, + Status: bundleModel.OrderPaid, + }) + if updateStatusErr != nil { + fmt.Println("=============== antom创建支付,更新订单报错:", updateStatusErr) + service.Error(c, updateStatusErr) + return + } + + //如果是购买套餐 1:创建新的余量信息CreateBundleBalance 2 添加扩展记录BundleExtend + _, err = service.BundleProvider.CreateBundleBalance(context.Background(), &bundle.CreateBundleBalanceReq{ + UserId: int32(userResp.UserId), + OrderUUID: orderLimit.OrderUUID, + //AccountNumber: orderLimit.AccountNumber, + //VideoNumber: orderLimit.VideoNumber, + //ImageNumber: orderLimit.ImageNumber, + //DataAnalysisNumber: orderLimit.DataNumber, + ExpansionPacksNumber: 1, + }) + if err != nil { + fmt.Println("=============== antom创建支付,OrderTypePackage报错:", err) + service.Error(c, err) + return + } + + var timeUnit uint32 + switch orderLimit.Unit { + case "天": + timeUnit = common.TimeUnitDay + case "月": + timeUnit = common.TimeUnitMonth + case "年": + timeUnit = common.TimeUnitYear + default: + timeUnit = 0 + } + _, err = service.BundleProvider.BundleExtend(context.Background(), &bundle.BundleExtendRequest{ + UserId: int64(orderLimit.UserId), + AccountAdditional: uint32(orderLimit.AccountNumber), + VideoAdditional: uint32(orderLimit.VideoNumber), + ImagesAdditional: uint32(orderLimit.ImageNumber), + DataAdditional: uint32(orderLimit.DataNumber), + AvailableDurationAdditional: uint32(orderLimit.Duration), + TimeUnit: timeUnit, + AssociatedorderNumber: unfinishInfo.OrderNo, //增值服务订单号 + Type: 2, //自行购买 + OperatorName: orderLimit.UserName, + OperatorId: orderLimit.UserId, + }) + if err != nil { + service.Error(c, err) + return + } + + fmt.Println("==================== 5555555555555555555") + // TODO 4.软删除未删除信息 [ok] + deleteReq := new(bundle.SoftDeleteUnfinishedInfoRequest) + deleteReq.ID = unfinishInfo.ID + _, deleteErr := service.BundleProvider.SoftDeleteUnfinishedInfo(context.Background(), deleteReq) + if deleteErr != nil { + service.Error(c, deleteErr) + return + } + } + + fmt.Println("==================== 66666666666666666") + service.Success(c) + return + +} diff --git a/pkg/service/bundle/valueAddBundle.go b/pkg/service/bundle/valueAddBundle.go index f9b1729..4978196 100644 --- a/pkg/service/bundle/valueAddBundle.go +++ b/pkg/service/bundle/valueAddBundle.go @@ -67,3 +67,65 @@ func ValueAddBundleDetail(c *gin.Context) { service.Success1(c, res.Msg, res) } + +func SaveValueAddService(c *gin.Context) { + var req bundle.ValueAddServiceLang + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error1(c, err) + return + } + + res, err := service.BundleProvider.SaveValueAddService(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func ValueAddServiceList(c *gin.Context) { + var req bundle.ValueAddServiceListRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error1(c, err) + return + } + + res, err := service.BundleProvider.ValueAddServiceList(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func ValueAddServiceDetail(c *gin.Context) { + var req bundle.ValueAddServiceDetailRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error1(c, err) + return + } + + res, err := service.BundleProvider.ValueAddServiceDetail(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func ValueAddServiceLangDetail(c *gin.Context) { + var req bundle.ValueAddServiceDetailRequest + + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error1(c, err) + return + } + language := c.GetHeader("Accept-Language") + req.Language = language + res, err := service.BundleProvider.ValueAddServiceLangByUuidAndLanguage(context.Background(), &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} diff --git a/pkg/service/cast/approval.go b/pkg/service/cast/approval.go new file mode 100644 index 0000000..67ec517 --- /dev/null +++ b/pkg/service/cast/approval.go @@ -0,0 +1,45 @@ +package cast + +import ( + "encoding/json" + "errors" + "fmt" + "fonchain-fiee/cmd/config" + "fonchain-fiee/pkg/e" + modelCast "fonchain-fiee/pkg/model/cast" + "fonchain-fiee/pkg/utils" +) + +type CastService struct { +} + +func (c *CastService) ApprovalDetail(approvalIds []int) (data map[int]modelCast.Item, err error) { + type ApprovalDetailRequest struct { + ID []int `json:"ID"` + } + req := ApprovalDetailRequest{ + ID: approvalIds, + } + idsBytes, _ := json.Marshal(req) + var respBody string + url := fmt.Sprintf(config.AppConfig.System.FieeHost + "/approval/list/ex") + respBody, err = utils.Post(url, string(idsBytes)) + if err != nil { + return + } + var respDetail modelCast.ApprovalDetailResponse + if err = json.Unmarshal([]byte(respBody), &respDetail); err != nil { + err = errors.New(e.GetMsg(e.JsonUnmarshal)) + return + } + if respDetail.Status == 0 && len(respDetail.Data.Data) > 0 { + data = make(map[int]modelCast.Item, len(respDetail.Data.Data)) + for _, v := range respDetail.Data.Data { + data[v.ID] = v + } + } else { + err = errors.New(e.GetMsg(e.ErrorHttp)) + return + } + return +} diff --git a/pkg/service/cast/media.go b/pkg/service/cast/media.go new file mode 100644 index 0000000..85c01ab --- /dev/null +++ b/pkg/service/cast/media.go @@ -0,0 +1,203 @@ +package cast + +import ( + "context" + "errors" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/api/bundle" + "fonchain-fiee/api/cast" + "fonchain-fiee/cmd/config" + "fonchain-fiee/pkg/e" + modelCast "fonchain-fiee/pkg/model/cast" + "fonchain-fiee/pkg/service" + "github.com/gin-gonic/gin" + "go.uber.org/zap" + "strconv" +) + +func MediaUserList(ctx *gin.Context) { + var req *cast.MediaUserListReq + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + if err = req.Validate(); err != nil { + service.Error(ctx, err) + return + } + resp, err := service.CastProvider.MediaUserList(ctx, req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) + return +} + +func UnbindManager(ctx *gin.Context) { + var req *cast.UnbindManagerReq + var resp *cast.UnbindManagerResp + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + if err = req.Validate(); err != nil { + service.Error(ctx, err) + return + } + resp, err = service.CastProvider.UnbindManager(ctx, req) + if err != nil { + service.Error(ctx, err) + return + } + zap.L().Info("UnbindManager resp", zap.Any("resp", resp)) + if resp.OldBindArtistUuid != "" { + userID, _ := strconv.ParseInt(resp.OldBindArtistUuid, 10, 64) + _, err = service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{ + UserId: int32(userID), + AccountConsumptionNumber: -1, + }) + if err != nil { + service.Error(ctx, err) + //FIXME 进行回滚 + return + } + } + service.Success(ctx, nil) + return +} + +func BindManager(ctx *gin.Context) { + var req *cast.BindManagerReq + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + if err = req.Validate(); err != nil { + service.Error(ctx, err) + return + } + _, err = service.CastProvider.BindManager(ctx, req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, nil) + return +} + +func UpdateMediaAccount(ctx *gin.Context) { + var req *cast.UpdateMediaAccountReq + var infoResp *accountFiee.UserInfoResponse + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + if err = req.Validate(); err != nil { + service.Error(ctx, err) + return + } + // 查询艺人的信息 + // 字符串转整型 + artistID, err := strconv.ParseUint(req.ArtistUuid, 10, 64) + if config.AppConfig.System.AppMode != "dev" { + infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ + ID: artistID, + Domain: "app", + }) + if err != nil { + service.Error(ctx, err) + return + } + } else { + infoResp = &accountFiee.UserInfoResponse{ + Name: "小波", + TelNum: "18288888888", + } + } + req.ArtistName = infoResp.Name + req.ArtistPhone = infoResp.TelNum + req.ArtistPhoneAreaCode = infoResp.TelAreaCode + if _, ok := cast.PlatformIDENUM_name[int32(req.PlatformID)]; !ok { + service.Error(ctx, errors.New(e.GetMsg(e.InvalidParams))) + return + } + userID, _ := strconv.ParseInt(req.ArtistUuid, 10, 64) + if req.MediaAccountUuid == "" { + if err = CheckUserBundleBalance(int32(userID), modelCast.BalanceTypeAccountValue); err != nil { + service.Error(ctx, err) + return + } + _, err = service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{ + UserId: int32(userID), + AccountConsumptionNumber: 1, + }) + if err != nil { + service.Error(ctx, err) + return + } + } + resp, err := service.CastProvider.UpdateMediaAccount(ctx, req) + if err != nil { + service.Error(ctx, err) + if req.MediaAccountUuid == "" { + _, err = service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{ + UserId: int32(userID), + AccountConsumptionNumber: -1, + }) + if err != nil { + service.Error(ctx, err) + return + } + } + return + } + service.Success(ctx, resp) + return +} + +func OAuthUrl(ctx *gin.Context) { + var req *cast.OAuthYoutubeUrlReq + var resp *cast.OAuthYoutubeUrlResp + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + if err = req.Validate(); err != nil { + service.Error(ctx, err) + return + } + if resp, err = service.CastProvider.OAuthYoutubeUrl(ctx, req); err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) + return +} + +func OAuth2Callback(ctx *gin.Context) { + code := ctx.Query("code") + state := ctx.Query("state") + //scope := ctx.Query("scope") + resp, err := service.CastProvider.OAuthYoutubeToken(ctx, &cast.OAuthYoutubeTokenReq{ + MediaAccountUuid: state, + Code: code, + //scope: scope, + }) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) + return +} + +func Test(ctx *gin.Context) { + service.Success(ctx, nil) + return +} diff --git a/pkg/service/cast/oauth.go b/pkg/service/cast/oauth.go new file mode 100644 index 0000000..4e6c8aa --- /dev/null +++ b/pkg/service/cast/oauth.go @@ -0,0 +1 @@ +package cast diff --git a/pkg/service/cast/user.go b/pkg/service/cast/user.go new file mode 100644 index 0000000..f5adbb9 --- /dev/null +++ b/pkg/service/cast/user.go @@ -0,0 +1,29 @@ +package cast + +import ( + "context" + "dubbo.apache.org/dubbo-go/v3/common/constant" + "fmt" + "fonchain-fiee/cmd/config" + "fonchain-fiee/pkg/model/login" + "github.com/gin-gonic/gin" +) + +func NewCtxWithUserInfo(ctx *gin.Context) (newCtx context.Context) { + var userInfo = login.Info{} + if config.AppConfig.System.AppMode != "dev" { + userInfo = login.GetUserInfoFromC(ctx) + } else { + userInfo = login.Info{ + ID: 61, + Name: "小波", + TelNum: "18288888888", + } + } + var mm = make(map[string]interface{}, 3) + mm["userid"] = fmt.Sprintf("%d", userInfo.ID) + mm["name"] = userInfo.Name + mm["phone"] = userInfo.TelNum + newCtx = context.WithValue(context.Background(), constant.DubboCtxKey("attachment"), mm) + return +} diff --git a/pkg/service/cast/work.go b/pkg/service/cast/work.go new file mode 100644 index 0000000..2c88c5d --- /dev/null +++ b/pkg/service/cast/work.go @@ -0,0 +1,363 @@ +package cast + +import ( + "context" + "errors" + "fmt" + "fonchain-fiee/api/accountFiee" + "fonchain-fiee/api/bundle" + "fonchain-fiee/api/cast" + "fonchain-fiee/cmd/config" + "fonchain-fiee/pkg/e" + modelCast "fonchain-fiee/pkg/model/cast" + "fonchain-fiee/pkg/service" + "github.com/gin-gonic/gin" + "go.uber.org/zap" + "strconv" +) + +func UpdateWorkImage(ctx *gin.Context) { + var req *cast.UpdateWorkImageReq + var infoResp *accountFiee.UserInfoResponse + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + if config.AppConfig.System.AppMode != "dev" { + artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) + infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ + ID: artistId, + Domain: "app", + }) + if err != nil { + service.Error(ctx, err) + return + } + } else { + infoResp = &accountFiee.UserInfoResponse{ + Name: "小波", + TelNum: "18288888888", + TelAreaCode: "86", + } + } + req.ArtistName = infoResp.Name + req.ArtistPhone = infoResp.TelNum + req.ArtistPhoneAreaCode = infoResp.TelAreaCode + artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) + if err = CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeImageValue); err != nil { + service.Error(ctx, err) + return + } + newCtx := NewCtxWithUserInfo(ctx) + resp, err := service.CastProvider.UpdateWorkImage(newCtx, req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) + return +} + +func UpdateWorkVideo(ctx *gin.Context) { + var req *cast.UpdateWorkVideoReq + var infoResp *accountFiee.UserInfoResponse + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + if config.AppConfig.System.AppMode != "dev" { + artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) + infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ + ID: artistId, + Domain: "app", + }) + if err != nil { + service.Error(ctx, err) + return + } + } else { + infoResp = &accountFiee.UserInfoResponse{ + Name: "小波", + TelNum: "18288888888", + TelAreaCode: "86", + } + } + artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64) + if err = CheckUserBundleBalance(int32(artistID), modelCast.BalanceTypeVideoValue); err != nil { + service.Error(ctx, err) + return + } + req.ArtistName = infoResp.Name + req.ArtistPhone = infoResp.TelNum + req.ArtistPhoneAreaCode = infoResp.TelAreaCode + newCtx := NewCtxWithUserInfo(ctx) + resp, err := service.CastProvider.UpdateWorkVideo(newCtx, req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) + return +} + +func UpdateApproval(ctx *gin.Context) { + var req *cast.UpdateStatusReq + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + req.WorkAction = cast.WorkActionENUM_APPROVAL + newCtx := NewCtxWithUserInfo(ctx) + resp, err := service.CastProvider.UpdateStatus(newCtx, req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) + return +} + +func WorkList(ctx *gin.Context) { + var ( + req *cast.WorkListReq + resp *cast.WorkListResp + ) + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + newCtx := NewCtxWithUserInfo(ctx) + resp, err = service.CastProvider.WorkList(newCtx, req) + if err != nil { + service.Error(ctx, err) + return + } + if len(resp.Data) > 0 { + var workUuidApprovalIDMap = make(map[int]string) + for _, v := range resp.Data { + if v.WorkStatus == 2 && v.ApprovalID != "" { + approvalID, _ := strconv.ParseUint(v.ApprovalID, 10, 64) + workUuidApprovalIDMap[int(approvalID)] = v.WorkUuid + } + } + if len(workUuidApprovalIDMap) > 0 { + _ = RefreshWorkApprovalStatus(ctx, workUuidApprovalIDMap) + } + } + service.Success(ctx, resp) + return +} + +func WorkDetail(ctx *gin.Context) { + var ( + req *cast.WorkDetailReq + resp *cast.WorkDetailResp + ) + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + newCtx := NewCtxWithUserInfo(ctx) + resp, err = service.CastProvider.WorkDetail(newCtx, req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) + return +} + +func CheckUserBundleBalance(userID int32, balanceType modelCast.BalanceTypeEnum) (err error) { + resp, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{UserId: userID}) + if err != nil { + return + } + zap.L().Info("CheckUserBundleBalance", zap.Any("resp", resp)) + fmt.Println("CheckUserBundleBalance resp", resp) + switch balanceType { + case modelCast.BalanceTypeAccountValue: + if resp.AccountNumber-resp.AccountConsumptionNumber <= 0 { + err = errors.New(e.ErrorBalanceInsufficient) + return + } + case modelCast.BalanceTypeImageValue: + if resp.ImageNumber-resp.ImageConsumptionNumber <= 0 { + err = errors.New(e.ErrorBalanceInsufficient) + return + } + case modelCast.BalanceTypeVideoValue: + if resp.VideoNumber-resp.VideoConsumptionNumber <= 0 { + err = errors.New(e.ErrorBalanceInsufficient) + return + } + } + return +} + +func RePublish(ctx *gin.Context) { + var ( + req *cast.RePublishReq + resp *cast.RePublishResp + ) + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + newCtx := NewCtxWithUserInfo(ctx) + resp, err = service.CastProvider.RePublish(newCtx, req) + if err != nil { + service.Error(ctx, err) + return + } + artistID, _ := strconv.ParseUint(resp.ArtistUuid, 10, 64) + balanceReq := &bundle.AddBundleBalanceReq{ + UserId: int32(artistID), + } + if resp.WorkCategory == 1 { + balanceReq.ImageConsumptionNumber = 1 + } + if resp.WorkCategory == 2 { + balanceReq.VideoConsumptionNumber = 1 + } + _, err = service.BundleProvider.AddBundleBalance(context.Background(), balanceReq) + if err != nil { + service.Error(ctx, err) + //FIXME 进行回滚 + return + } + service.Success(ctx, nil) + return +} + +//修改余量我还需要调用吗 +func UserBundleBalanceCost() { + service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{}) +} + +func RefreshWorkApprovalStatus(ctx *gin.Context, approvalIDWorkUuidMap map[int]string) (err error) { + var castS = new(CastService) + var data = make(map[int]modelCast.Item) + var approvalIDs []int + for approvalId, _ := range approvalIDWorkUuidMap { + approvalIDs = append(approvalIDs, approvalId) + } + if len(approvalIDs) == 0 { + return + } + data, err = castS.ApprovalDetail(approvalIDs) + // status: 1待审批 2审批通过 3审批不通过 6撤销发其中 7撤销完成 + var newData = make(map[int]modelCast.Item, len(approvalIDs)) + for _, v := range approvalIDs { + newData[v] = data[v] + } + newCtx := NewCtxWithUserInfo(ctx) + if len(newData) > 0 { + for approvalId, v := range newData { + if v.ID == 0 { + _, _ = service.CastProvider.UpdateStatus(newCtx, &cast.UpdateStatusReq{ + WorkAction: cast.WorkActionENUM_APPROVAL_DELETE, + WorkUuid: approvalIDWorkUuidMap[approvalId], + ApprovalID: fmt.Sprint(approvalId), + ApprovalReply: "", + }) + continue + } + var workAction cast.WorkActionENUM + if v.Status == 2 { + workAction = cast.WorkActionENUM_APPROVAL_PASS + } else if v.Status == 3 { + workAction = cast.WorkActionENUM_APPROVAL_REJECT + } else { + continue + } + _, _ = service.CastProvider.UpdateStatus(newCtx, &cast.UpdateStatusReq{ + WorkAction: workAction, + WorkUuid: approvalIDWorkUuidMap[approvalId], + ApprovalID: fmt.Sprint(approvalId), + ApprovalReply: v.Reply, + }) + } + } + return +} + +func DelWork(ctx *gin.Context) { + var req *cast.DelWorkReq + var err error + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + newCtx := NewCtxWithUserInfo(ctx) + _, err = service.CastProvider.DelWork(newCtx, req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, nil) + return +} + +func Remind(ctx *gin.Context) { + var req *cast.WorkInfoReq + var err error + var workInfo *cast.WorkInfoResp + if err = ctx.ShouldBind(&req); err != nil { + service.Error(ctx, err) + return + } + workInfo, err = service.CastProvider.WorkInfo(context.Background(), req) + if err != nil { + service.Error(ctx, err) + return + } + if workInfo.WorkStatus != modelCast.WorkStatusArtistConfirming { + service.Error(ctx, errors.New(e.InvalidStatus)) + return + } + if workInfo.ArtistPhoneAreaCode == "" { + workInfo.ArtistPhoneAreaCode = "86" + } + artistID, _ := strconv.ParseUint(workInfo.ArtistUuid, 10, 64) + infoResp, err := service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{ + ID: artistID, + Domain: "app", + }) + if err != nil { + service.Error(ctx, err) + return + } + if workInfo.ArtistPhoneAreaCode == "86" { + _, err = service.AccountFieeProvider.OnlySendMsg(context.Background(), &accountFiee.SendMsgRequest{ + Domain: "app", + TelNum: infoResp.TelNum, + Project: "fiee", + SignNo: 0, + MId: 277385, + Scope: "", + Zone: infoResp.TelAreaCode, + NonceStr: "", + }) + } else { + _, err = service.AccountFieeProvider.SendNationTemplateMsg(context.Background(), &accountFiee.SendNationMsgRequest{ + Domain: "app", + TelNum: fmt.Sprintf("%s%s", infoResp.TelAreaCode, infoResp.TelNum), + Project: "fiee", + SignNo: 0, + MId: 108375, + Scope: "", + }) + } + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, nil) + return +} diff --git a/pkg/service/file/file.go b/pkg/service/file/file.go new file mode 100644 index 0000000..50dd970 --- /dev/null +++ b/pkg/service/file/file.go @@ -0,0 +1,280 @@ +package file + +import ( + "bytes" + "errors" + "fmt" + "fonchain-fiee/api/files" + "fonchain-fiee/pkg/service" + "io" + "net/http" + "net/url" + "strconv" + "strings" + "time" + + "github.com/gin-gonic/gin" +) + +func Raw(ctx *gin.Context) { + r := ctx.Request + w := ctx.Writer + + w.Header().Add("Content-Security-Policy", `script-src 'none';`) + w.Header().Set("Cache-Control", "private") + rs, err := newGrpcReaderSeeker(getUserSpacePath(ctx), ctx.Param("path")) + if err != nil { + service.Error(ctx, err) + return + } + if r.URL.Query().Get("inline") == "true" { + w.Header().Set("Content-Disposition", "inline") + } else { + // As per RFC6266 section 4.3 + w.Header().Set("Content-Disposition", "attachment; filename*=utf-8''"+rs.FileName) + } + http.ServeContent(ctx.Writer, r, rs.FileName, time.Now(), rs) +} + +func List(ctx *gin.Context) { + path := ctx.DefaultQuery("path", "/") + sortBy := ctx.DefaultQuery("sortBy", "name") + sortAsc, _ := strconv.ParseBool(ctx.DefaultQuery("sortAsc", "true")) + resp, err := service.FilesProvider.List(ctx, &files.FileListReq{ + Path: path, + UserSpacePath: getUserSpacePath(ctx), + Sorting: &files.Sorting{ + By: sortBy, + Asc: sortAsc, + }, + }) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Usage(ctx *gin.Context) { + path := ctx.DefaultQuery("path", "/") + resp, err := service.FilesProvider.Usage(ctx, &files.UsageReq{ + Path: path, + UserSpacePath: getUserSpacePath(ctx), + }) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Info(ctx *gin.Context) { + resp, err := service.FilesProvider.Info(ctx, &files.FileInfoReq{ + Path: ctx.DefaultQuery("path", "/"), + UserSpacePath: getUserSpacePath(ctx), + }) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Create(ctx *gin.Context) { + var req files.CreateReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + req.UserSpacePath = getUserSpacePath(ctx) + resp, err := service.FilesProvider.Create(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Delete(ctx *gin.Context) { + resp, err := service.FilesProvider.Delete(ctx, &files.DeleteReq{ + Path: ctx.DefaultQuery("path", "/"), + UserSpacePath: getUserSpacePath(ctx), + }) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Search(ctx *gin.Context) { + resp, err := service.FilesProvider.Search(ctx, &files.SearchReq{ + UserSpacePath: getUserSpacePath(ctx), + Path: ctx.Query("path"), + Query: ctx.Query("query"), + }) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Upload(ctx *gin.Context) { + path, ok := ctx.GetQuery("path") + if !ok { + service.Error(ctx, errors.New("缺失参数路径")) + return + } + b, err := io.ReadAll(ctx.Request.Body) + if !ok { + service.Error(ctx, err) + return + } + resp, err := service.FilesProvider.Upload(ctx, &files.UploadReq{ + Path: path, + UserSpacePath: getUserSpacePath(ctx), + Content: b, + }) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func TusCreate(ctx *gin.Context) { + var req files.TusCreateReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + req.UserSpacePath = getUserSpacePath(ctx) + resp, err := service.FilesProvider.TusCreate(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func TusUpload(ctx *gin.Context) { + path, ok := ctx.GetQuery("path") + if !ok { + service.Error(ctx, errors.New("文件路径缺失")) + return + } + uploadOffset, err := getUploadOffset(ctx.Request) + if err != nil { + service.Error(ctx, fmt.Errorf("invalid upload offset: %w", err)) + return + } + mf, err := ctx.MultipartForm() + if err != nil { + service.Error(ctx, fmt.Errorf("invalid upload offset: %w", err)) + return + } + f, err := mf.File["file"][0].Open() + if err != nil { + service.Error(ctx, fmt.Errorf("invalid upload offset: %w", err)) + return + } + defer f.Close() + b, err := io.ReadAll(f) + // b, err := io.ReadAll(ctx.Request.Body) + if !ok { + service.Error(ctx, err) + return + } + resp, err := service.FilesProvider.TusUpload(ctx, &files.TusUploadReq{ + Path: path, + UploadOffset: uploadOffset, + Content: b, + UserSpacePath: getUserSpacePath(ctx), + }) + if err != nil { + service.Error(ctx, err) + return + } + ctx.Writer.Header().Set("Upload-Offset", strconv.FormatInt(resp.UploadOffset, 10)) + service.Success(ctx, nil) +} + +func Preview(ctx *gin.Context) { + var size int + size, err := strconv.Atoi(ctx.Param("size")) + if err != nil { + size = 1 + } + resp, err := service.FilesProvider.Preview(ctx, &files.PreviewReq{ + Path: ctx.Param("path"), + UserSpacePath: getUserSpacePath(ctx), + Size: uint32(size), + }) + if err != nil { + service.Error(ctx, err) + return + } + ctx.Writer.Header().Set("Cache-Control", "private") + http.ServeContent(ctx.Writer, ctx.Request, resp.FileName, time.UnixMilli(resp.ModTime), bytes.NewReader(resp.Content)) +} + +func Action(ctx *gin.Context) { + var req files.ActionReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + req.UserSpacePath = getUserSpacePath(ctx) + resp, err := service.FilesProvider.Action(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func DirDownload(ctx *gin.Context) { + path := ctx.Query("path") + fileList := strings.Split(ctx.Query("files"), ",") + algo := ctx.Query("algo") + stream, err := service.FilesProvider.DirDownload(ctx, &files.DirDownloadReq{ + Algo: algo, + Files: fileList, + Path: path, + UserSpacePath: getUserSpacePath(ctx), + }) + if err != nil { + service.Error(ctx, err) + return + } + header, err := stream.Header() + if err != nil { + service.Error(ctx, err) + return + } + + ctx.Writer.Header().Set("Content-Disposition", "attachment; filename*=utf-8''"+url.PathEscape(header.Get("filename")[0])) + for { + recvMsg, err := stream.Recv() + if err != nil { + break + } + ctx.Writer.Write(recvMsg.Content) + } +} + +func getUploadOffset(r *http.Request) (int64, error) { + uploadOffset, err := strconv.ParseInt(r.Header.Get("Upload-Offset"), 10, 64) + if err != nil { + return 0, fmt.Errorf("invalid upload offset: %w", err) + } + return uploadOffset, nil +} + +func getUserSpacePath(ctx *gin.Context) string { + // user := login.GetUserInfoFromC(ctx) + // return strconv.Itoa(int(user.ID)) + + return "" +} diff --git a/pkg/service/file/grpc_reader_seeker.go b/pkg/service/file/grpc_reader_seeker.go new file mode 100644 index 0000000..c1c309e --- /dev/null +++ b/pkg/service/file/grpc_reader_seeker.go @@ -0,0 +1,91 @@ +package file + +import ( + "context" + "errors" + "fonchain-fiee/api/files" + "fonchain-fiee/pkg/service" + "io" +) + +type grpcReaderSeeker struct { + io.Reader + io.Seeker + path string + userSpacePath string + cursor int64 + length int64 + FileName string +} + +func (g *grpcReaderSeeker) Seek(offset int64, whence int) (int64, error) { + var abs int64 + switch whence { + case io.SeekStart: + abs = offset + case io.SeekCurrent: + abs = g.cursor + offset + case io.SeekEnd: + abs = g.length + offset + default: + return 0, errors.New("grpc.Reader.Seek: invalid whence") + } + if abs < 0 { + return 0, errors.New("grpc.Reader.Seek: negative position") + } + g.cursor = abs + return abs, nil +} + +func (g *grpcReaderSeeker) Read(b []byte) (n int, err error) { + if g.cursor >= g.length { + return 0, io.EOF + } + + data, err := g.getBytesData(len(b)) + if err != nil { + return 0, err + } + n = copy(b, data) + g.cursor += int64(n) + return +} + +// 通过grpc获取到bytes数据 +func (g *grpcReaderSeeker) getBytesData(len int) ([]byte, error) { + resp, err := service.FilesProvider.ResumableTransfer(context.TODO(), &files.ResumableTransferReq{ + UserSpacePath: g.userSpacePath, + Path: g.path, + Offset: g.cursor, + Length: int64(len), + }) + if err != nil { + return nil, err + } + return resp.Content, nil +} + +// grpc 获取到文件信息 +func (g *grpcReaderSeeker) initInfo() error { + resp, err := service.FilesProvider.Info(context.TODO(), &files.FileInfoReq{ + UserSpacePath: g.userSpacePath, + Path: g.path, + }) + if err != nil { + return nil + } + g.FileName = resp.Name + g.length = resp.Size + return err +} + +func newGrpcReaderSeeker(userSpacePath string, path string) (*grpcReaderSeeker, error) { + g := new(grpcReaderSeeker) + g.userSpacePath = userSpacePath + g.path = path + err := g.initInfo() + if err != nil { + return nil, err + } + return g, nil +} diff --git a/pkg/service/governance/governance.go b/pkg/service/governance/governance.go new file mode 100644 index 0000000..c9976c8 --- /dev/null +++ b/pkg/service/governance/governance.go @@ -0,0 +1,84 @@ +package governance + +import ( + "github.com/gin-gonic/gin" + + "fonchain-fiee/api/governance" + "fonchain-fiee/pkg/model/login" + "fonchain-fiee/pkg/service" +) + +func Create(ctx *gin.Context) { + var req governance.CreateReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + user := login.GetUserInfoFromC(ctx) + // user := login.Info{ + // Name: "test" + strconv.Itoa(rand.Intn(10)), + // ID: uint64(rand.Intn(10)), + // } + req.Operator = user.Name + req.OperatorId = int32(user.ID) + resp, err := service.GovernanceProvider.Create(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Delete(ctx *gin.Context) { + var req governance.DeleteReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + resp, err := service.GovernanceProvider.Delete(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Display(ctx *gin.Context) { + resp, err := service.GovernanceProvider.Display(ctx, &governance.DisplayReq{}) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func List(ctx *gin.Context) { + var req governance.ListReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + resp, err := service.GovernanceProvider.List(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Edit(ctx *gin.Context) { + var req governance.EditReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + user := login.GetUserInfoFromC(ctx) + req.Operator = user.Name + req.OperatorId = int32(user.ID) + resp, err := service.GovernanceProvider.Edit(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} diff --git a/pkg/service/init.go b/pkg/service/init.go index 1c3dbb2..adfa22e 100644 --- a/pkg/service/init.go +++ b/pkg/service/init.go @@ -1,17 +1,23 @@ package service import ( - "dubbo.apache.org/dubbo-go/v3/common/constant" - "dubbo.apache.org/dubbo-go/v3/config" - _ "dubbo.apache.org/dubbo-go/v3/imports" "fmt" "fonchain-fiee/api/account" "fonchain-fiee/api/accountFiee" "fonchain-fiee/api/bundle" + "fonchain-fiee/api/cast" + "fonchain-fiee/api/files" + "fonchain-fiee/api/governance" "fonchain-fiee/api/order" "fonchain-fiee/api/payment" + "fonchain-fiee/api/pressreleases" + "fonchain-fiee/api/secFilings" pkConfig "fonchain-fiee/pkg/config" "os" + + "dubbo.apache.org/dubbo-go/v3/common/constant" + "dubbo.apache.org/dubbo-go/v3/config" + _ "dubbo.apache.org/dubbo-go/v3/imports" ) var AccountProvider = new(account.AccountClientImpl) @@ -19,14 +25,24 @@ var AccountFieeProvider = new(accountFiee.AccountFieeClientImpl) var BundleProvider = new(bundle.BundleClientImpl) var OrderProvider = new(order.OrderClientImpl) +var FilesProvider = new(files.FileClientImpl) var PaymentProvider = new(payment.PaymentCentClientImpl) +var CastProvider = new(cast.CastClientImpl) +var GovernanceProvider = new(governance.GovernanceClientImpl) +var PressReleasesProvider = new(pressreleases.PressReleasesClientImpl) +var SecFilingProvider = new(secFilings.SecFilingsClientImpl) func init() { config.SetConsumerService(BundleProvider) - //config.SetConsumerService(OrderProvider) - //config.SetConsumerService(AccountProvider) - //config.SetConsumerService(PaymentProvider) + config.SetConsumerService(OrderProvider) + config.SetConsumerService(AccountProvider) + config.SetConsumerService(PaymentProvider) config.SetConsumerService(AccountFieeProvider) + config.SetConsumerService(CastProvider) + config.SetConsumerService(FilesProvider) + config.SetConsumerService(GovernanceProvider) + config.SetConsumerService(PressReleasesProvider) + config.SetConsumerService(SecFilingProvider) if err := config.Load(); err != nil { panic(err) diff --git a/pkg/service/pressreleases/pressreleases.go b/pkg/service/pressreleases/pressreleases.go new file mode 100644 index 0000000..3081342 --- /dev/null +++ b/pkg/service/pressreleases/pressreleases.go @@ -0,0 +1,103 @@ +package pressreleases + +import ( + "strconv" + + "github.com/gin-gonic/gin" + + "fonchain-fiee/api/pressreleases" + "fonchain-fiee/pkg/model/login" + "fonchain-fiee/pkg/service" +) + +func Create(ctx *gin.Context) { + var req pressreleases.CreateReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + user := login.GetUserInfoFromC(ctx) + req.Operator = user.Name + req.OperatorId = int32(user.ID) + resp, err := service.PressReleasesProvider.Create(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Delete(ctx *gin.Context) { + var req pressreleases.DeleteReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + resp, err := service.PressReleasesProvider.Delete(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Display(ctx *gin.Context) { + var req pressreleases.DisplayReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + resp, err := service.PressReleasesProvider.Display(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func List(ctx *gin.Context) { + var req pressreleases.ListReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + resp, err := service.PressReleasesProvider.List(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Edit(ctx *gin.Context) { + var req pressreleases.EditReq + if err := ctx.ShouldBindJSON(&req); err != nil { + service.Error(ctx, err) + return + } + user := login.GetUserInfoFromC(ctx) + req.Operator = user.Name + req.OperatorId = int32(user.ID) + resp, err := service.PressReleasesProvider.Edit(ctx, &req) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} + +func Get(ctx *gin.Context) { + id, err := strconv.Atoi(ctx.Query("id")) + if err != nil { + service.Error(ctx, err) + return + } + resp, err := service.PressReleasesProvider.Get(ctx, &pressreleases.GetReq{ + Id: int64(id), + }) + if err != nil { + service.Error(ctx, err) + return + } + service.Success(ctx, resp) +} diff --git a/pkg/service/secfilings/secfilings.go b/pkg/service/secfilings/secfilings.go new file mode 100644 index 0000000..a674527 --- /dev/null +++ b/pkg/service/secfilings/secfilings.go @@ -0,0 +1,235 @@ +package secfilings + +import ( + "encoding/json" + "errors" + "fmt" + "fonchain-fiee/api/secFilings" + "fonchain-fiee/pkg/model/login" + "fonchain-fiee/pkg/service" + "net/http" + "net/url" + "strconv" + + "github.com/gin-gonic/gin" + "github.com/gin-gonic/gin/binding" +) + +func CreateSecFiling(c *gin.Context) { + var req secFilings.CreateSecFilingReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + userInfo := login.GetUserInfoFromC(c) + req.Operator = userInfo.Name + req.OperatorId = int32(userInfo.ID) + res, err := service.SecFilingProvider.CreateSecFiling(c, &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func UpdateSecFiling(c *gin.Context) { + var req secFilings.UpdateSecFilingReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + userInfo := login.GetUserInfoFromC(c) + req.Operator = userInfo.Name + req.OperatorId = int32(userInfo.ID) + res, err := service.SecFilingProvider.UpdateSecFiling(c, &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func UpdateSecFilingStatus(c *gin.Context) { + var req secFilings.UpdateSecFilingStatusReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + userInfo := login.GetUserInfoFromC(c) + req.Operator = userInfo.Name + req.OperatorId = int32(userInfo.ID) + res, err := service.SecFilingProvider.UpdateSecFilingStatus(c, &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func ListSecFiling(c *gin.Context) { + var req secFilings.ListSecFilingReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + res, err := service.SecFilingProvider.ListSecFiling(c, &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func DetailSecFiling(c *gin.Context) { + var req secFilings.DetailSecFilingReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + res, err := service.SecFilingProvider.DetailSecFiling(c, &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func DeleteSecFiling(c *gin.Context) { + var req secFilings.DeleteSecFilingReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + userInfo := login.GetUserInfoFromC(c) + req.Operator = userInfo.Name + req.OperatorId = int32(userInfo.ID) + res, err := service.SecFilingProvider.DeleteSecFiling(c, &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} + +type GetSecFilingsReq struct { + FilingDate string `json:"filingDate"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} +type GetSecFilingsData struct { + Symbol string `json:"symbol"` + Cik string `json:"cik"` + FilingDate string `json:"filingDate"` + AcceptedDate string `json:"acceptedDate"` + FormType string `json:"formType"` + Link string `json:"link"` + FinalLink string `json:"finalLink"` + IsSelect bool `json:"isSelect"` +} +type GetSecFilingsResp struct { + Total int `json:"total"` + Data []*GetSecFilingsResult `json:"data"` +} +type GetSecFilingsResult struct { + //Symbol string `json:"symbol"` + //Cik string `json:"cik"` + FilingDate string `json:"filingDate"` + Form string `json:"form"` + //Description string `json:"description"` + //FormDescription string `json:"formDescription"` + FileLink string `json:"fileLink"` + IsSelect bool `json:"isSelect"` +} + +func GetSecFilings(c *gin.Context) { + var req GetSecFilingsReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + if req.FilingDate == "" { + service.Error(c, errors.New("filing_date is empty")) + return + } + fmt.Println(req.FilingDate) + symbol := "MINM" + beginDate := req.FilingDate + endDate := req.FilingDate + page := 0 + pageSize := 100 + if req.Page != 0 && req.PageSize != 0 { + page = req.Page - 1 + pageSize = req.PageSize + } + + baseURL := "https://financialmodelingprep.com/stable/sec-filings-search/symbol" + params := url.Values{} + params.Add("symbol", symbol) + params.Add("from", beginDate) + params.Add("to", endDate) + params.Add("page", strconv.Itoa(page)) + params.Add("limit", strconv.Itoa(pageSize)) + params.Add("apikey", "lBQWUwdjRmfHVZ7e3I1trWe4jw0ZtDct") + + fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode()) + resp, err := http.Get(fullURL) + if err != nil { + service.Error(c, err) + return + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + service.Error(c, fmt.Errorf("http status code is not 200")) + return + } + var result []GetSecFilingsData + err = json.NewDecoder(resp.Body).Decode(&result) + if err != nil { + service.Error(c, err) + return + } + var data = GetSecFilingsResp{ + Total: 0, + Data: make([]*GetSecFilingsResult, 0), + } + for _, v := range result { + res, err := service.SecFilingProvider.IsSecFilingExist(c, &secFilings.IsSecFilingExistReq{ + FilingDate: req.FilingDate, + Form: v.FormType, + FinalLink: v.Link, + }) + if err != nil { + service.Error(c, err) + return + } + data.Data = append(data.Data, &GetSecFilingsResult{ + FilingDate: req.FilingDate, + Form: v.FormType, + FileLink: v.Link, + IsSelect: res.Exist, + }) + data.Total++ + } + service.Success(c, data) +} +func GetFormList(c *gin.Context) { + var req secFilings.ListFormTypeReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + res, err := service.SecFilingProvider.ListFormType(c, &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} +func WebListSecFiling(c *gin.Context) { + var req secFilings.WebListSecFilingReq + if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { + service.Error(c, err) + return + } + res, err := service.SecFilingProvider.WebListSecFiling(c, &req) + if err != nil { + service.Error(c, err) + return + } + service.Success(c, res) +} diff --git a/pkg/service/upload/upload.go b/pkg/service/upload/upload.go index 8c7b82a..54282fc 100644 --- a/pkg/service/upload/upload.go +++ b/pkg/service/upload/upload.go @@ -329,3 +329,19 @@ func GetSnapshot(videoPath, snapshotPath string, frameNum int) (snapshotName str snapshotName = names[len(names)-1] + "." + PngType return } + +func UploadWithBuffer(fileBuffer *bytes.Buffer, cloudStoreSubPath string) (url string, err error) { + Client, err := objstorage.NewOSS(config.ConfigData.Oss.AccessKeyId, config.ConfigData.Oss.AccessKeySecret, config.ConfigData.Oss.Endpoint) + if err != nil { + err = errors.New(fmt.Sprintf("云存储初始化失败:%s", err.Error())) + return + } + cloudStoreSubPath = getEnvDir(cloudStoreSubPath) + _, err = Client.PutObjectFromBytes(config.ConfigData.Oss.BucketName, cloudStoreSubPath, fileBuffer.Bytes()) + url = config.ConfigData.Oss.CdnHost + "/" + cloudStoreSubPath + return +} +func getEnvDir(cloudStoreSubPath string) (ep string) { + ep, _ = url.JoinPath("fiee", cloudStoreSubPath) + return ep +} diff --git a/pkg/utils/http.go b/pkg/utils/http.go new file mode 100644 index 0000000..0ab8e10 --- /dev/null +++ b/pkg/utils/http.go @@ -0,0 +1,34 @@ +package utils + +import ( + "bytes" + "io/ioutil" + "net/http" +) + +func Post(url, data string) (string, error) { + reader := bytes.NewReader([]byte(data)) + + request, err := http.NewRequest("POST", url, reader) + if err != nil { + return "", err + } + defer request.Body.Close() //程序在使用完回复后必须关闭回复的主体 + request.Header.Set("Content-Type", "application/json;charset=UTF-8") + //必须设定该参数,POST参数才能正常提交,意思是以json串提交数据 + + client := http.Client{} + resp, err := client.Do(request) //Do 方法发送请求,返回 HTTP 回复 + if err != nil { + return "", err + } + + respBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + + //byte数组直接转成string,优化内存 + // str := (*string)(unsafe.Pointer(&respBytes)) + return string(respBytes), nil +} diff --git a/pkg/utils/if.go b/pkg/utils/if.go new file mode 100644 index 0000000..c1893ef --- /dev/null +++ b/pkg/utils/if.go @@ -0,0 +1,47 @@ +/* + * @FileName: if.go + * @Author: JJXu + * @CreateTime: 2022/3/31 下午10:34 + * @Description: + */ + +package utils + +import "strings" + +func If(condition bool, trueVal, falseVal interface{}) interface{} { + if condition { + return trueVal + } + return falseVal +} +func IfGec[T ~string | ~int | ~int32 | ~int64 | ~bool | ~float32 | ~float64](condition bool, trueVal, falseVal T) T { + if condition { + return trueVal + } + return falseVal +} + +// IsValueInList 值是否在列表中 +// value:查询的值 +// list: 列表 +// disableStrictCase: 禁用严格大小写检查。默认是严格大小写 +func IsValueInList(value string, list []string, disableStrictCase ...bool) bool { + var disStrictCase bool + if disableStrictCase != nil { + disStrictCase = disableStrictCase[0] + } + for _, v := range list { + var listValue string + if disStrictCase { + listValue = strings.ToLower(v) + value = strings.ToLower(v) + } else { + listValue = v + } + if listValue == value { + return true + } + } + return false +} diff --git a/pkg/utils/requestDataToProto.go b/pkg/utils/requestDataToProto.go new file mode 100644 index 0000000..a71ed68 --- /dev/null +++ b/pkg/utils/requestDataToProto.go @@ -0,0 +1,51 @@ +// Package utils ----------------------------- +// @file : requestDataToProto.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2023/8/28 17:57 +// ------------------------------------------- +package utils + +import ( + "reflect" + "strings" +) + +// http请求转proto请求 +func RequestDataConvert(from interface{}, to interface{}) { + var proxyField = "Query" + fromValue := reflect.ValueOf(from) + toValue := reflect.ValueOf(to) + toType := reflect.TypeOf(to) + + // 获取From结构体的字段信息 + fromType := fromValue.Type().Elem() + for i := 0; i < fromType.NumField(); i++ { + // 获取字段名和字段值 + fieldName := fromType.Field(i).Name + fieldValue := fromValue.Elem().FieldByName(fieldName) + if fieldName != proxyField { + _, exists := toType.Elem().FieldByName(fieldName) + if exists { + // 设置To结构体中相应字段的值 + toValue.Elem().FieldByName(fieldName).Set(fieldValue) + } + } + } + queryField, exists := toType.Elem().FieldByName(proxyField) + if exists { + var queryFieldTypeName string + // 指针类型额外处理,拿到真实的数据类型 + if queryField.Type.Kind() == reflect.Ptr { + queryFieldTypeName = queryField.Type.Elem().String() + } else { + queryFieldTypeName = queryField.Type.Kind().String() + } + //处理拿到的结构体类型如 utils.xxxx的类型,去掉utils.这部分 + if strings.Contains(queryFieldTypeName, ".") { + queryFieldTypeName = strings.Split(queryFieldTypeName, ".")[1] + } + fromQueryValue := fromValue.Elem().FieldByName(queryFieldTypeName) + toValue.Elem().FieldByName(proxyField).Set(fromQueryValue.Addr()) + } +} diff --git a/pkg/utils/stime/common.go b/pkg/utils/stime/common.go new file mode 100644 index 0000000..21930d8 --- /dev/null +++ b/pkg/utils/stime/common.go @@ -0,0 +1,90 @@ +// Package stime ----------------------------- +// @file : common.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/10/21 00:19:04 +// ------------------------------------------- +package stime + +import ( + "time" +) + +var Loc loc + +type loc time.Location + +func (l loc) Shanghai() *time.Location { + var shanghai, err = time.LoadLocation("Asia/Shanghai") + if err != nil { + shanghai = time.FixedZone("CST", 8*3600) + } + return shanghai +} + +const ( + //常规时间格式(日期带横杠) + Format_Normal_YMDhms = "2006-01-02 15:04:05" + Format_Normal_YMDh = "2006-01-02 15:04" + Format_Normal_YMD = "2006-01-02" + Format_Normal_hms = "15:04:05" + Format_Normal_hm = "15:04" + Format_Normal_YM = "2006-01" + Format_Dot_YMD = "2006.01.02" + //带斜杠的时间格式 + Format_Slash_YMDhms = "2006/01/02 15:04:05" + Format_Slash_YMD = "2006/01/02" + //无间隔符 + Format_NoSpacer_YMDhms = "20060102150405" + Format_NoSpacer_YMD = "20060102" + Format_ChinaChar_YMD = "2006年01月02日" +) + +var MonthStrMap = map[string]string{ + "January": "01", + "February": "02", + "March": "03", + "April": "04", + "May": "05", + "June": "06", + "July": "07", + "August": "08", + "September": "09", + "October": "10", + "November": "11", + "December": "12", +} +var MonthIntMap = map[string]int{ + "January": 1, + "February": 2, + "March": 3, + "April": 4, + "May": 5, + "June": 6, + "July": 7, + "August": 8, + "September": 9, + "October": 10, + "November": 11, + "December": 12, +} + +var WeekIntMap = map[string]int{ + "Monday": 1, + "Tuesday": 2, + "Wednesday": 3, + "Thursday": 4, + "Friday": 5, + "Saturday": 6, + "Sunday": 7, +} + +var WeekStrMap = map[string]string{ + "Monday": "一", + "Tuesday": "二", + "Wednesday": "三", + "Thursday": "四", + "Friday": "五", + "Saturday": "六", + "Sunday": "日", +} diff --git a/pkg/utils/stime/getTime.go b/pkg/utils/stime/getTime.go new file mode 100644 index 0000000..db69c22 --- /dev/null +++ b/pkg/utils/stime/getTime.go @@ -0,0 +1,128 @@ +/* + * @FileName: getTime.go + * @Author: JJXu + * @CreateTime: 2022/3/1 下午6:35 + * @Description: + */ + +package stime + +import ( + "fmt" + "time" +) + +func StrNowDate() string { + return TimeToString(time.Now(), Format_Normal_YMD) +} + +func StrNowYearMonth() string { + return TimeToString(time.Now(), Format_Normal_YM) +} + +//ThisMorming 今天凌晨 +func ThisMorming(format string) (strTime string) { + thisTime := time.Now() + year := thisTime.Year() + month := MonthStrMap[thisTime.Month().String()] + day := fmt.Sprintf("%02d", thisTime.Day()) + strTime = fmt.Sprintf("%v-%v-%v 00:00:00", year, month, day) + if format != Format_Normal_YMDhms { + t1, _ := time.ParseInLocation(Format_Normal_YMDhms, strTime, Loc.Shanghai()) + strTime = t1.Format(format) + } + return strTime +} + +//ThisMorningUnix 获取当日凌晨的时间戳 +func ThisMorningToUnix() int64 { + thist := time.Now() + zero_tm := time.Date(thist.Year(), thist.Month(), thist.Day(), 0, 0, 0, 0, thist.Location()).Unix() + return zero_tm +} + +//TomorrowMorning 第二天凌晨 +func TomorrowMorning(baseTime time.Time) *time.Time { + year := baseTime.Year() + month := MonthStrMap[baseTime.Month().String()] + day := fmt.Sprintf("%02d", baseTime.Day()+1) + strTime := fmt.Sprintf("%v-%v-%v 00:00:00", year, month, day) + res, _ := StringToTime(strTime) + return res +} + +//ThisTimeUnix 获取当前时间的时间戳 +func CurrentimeToUnix() int64 { + return time.Now().Unix() +} + +//Currentime 获取当前时间 +func Currentime(format string) (strTime string) { + strTime = time.Now().Format(format) + return +} + +//HoursAgo 若干小时之前的时间 +func HoursAgo(hours time.Duration, format string) (lastTimeStr string) { + lastStamp := time.Now().Unix() - int64((time.Hour * hours).Seconds()) + lastTime := time.Unix(lastStamp, 0).In(Loc.Shanghai()) + lastTimeStr = lastTime.Format(format) + return +} + +//TimeToString 时间转字符串 +func TimeToString(t time.Time, format string) string { + return t.Format(format) +} + +//计算指定月份的天数 +func YearMonthToDayNumber(year int, month int) int { + // 有31天的月份 + day31 := map[int]bool{ + 1: true, + 3: true, + 5: true, + 7: true, + 8: true, + 10: true, + 12: true, + } + if day31[month] == true { + return 31 + } + // 有30天的月份 + day30 := map[int]bool{ + 4: true, + 6: true, + 9: true, + 11: true, + } + if day30[month] == true { + return 30 + } + // 计算是平年还是闰年 + if (year%4 == 0 && year%100 != 0) || year%400 == 0 { + // 得出2月的天数 + return 29 + } + // 得出2月的天数 + return 28 +} + +// 求时间差(返回一个数字,该数字单位由传过来的unit决定。若unit为60,则单位是分钟。) +func GetDiffTime(start_time string, end_time string, unit int64) int64 { + // 转成时间戳 + if len(start_time) == 10 { + start_time = fmt.Sprintf("%v 00:00:00", start_time) + } + if len(end_time) == 10 { + end_time = fmt.Sprintf("%v 00:00:00", end_time) + } + startUnix, _ := time.ParseInLocation("2006-01-02 15:04:05", start_time, Loc.Shanghai()) + endUnix, _ := time.ParseInLocation("2006-01-02 15:04:05", end_time, Loc.Shanghai()) + startTime := startUnix.Unix() + endTime := endUnix.Unix() + // 求相差天数 + date := (endTime - startTime) / unit + return date +} diff --git a/pkg/utils/stime/getTimeExt.go b/pkg/utils/stime/getTimeExt.go new file mode 100644 index 0000000..166b173 --- /dev/null +++ b/pkg/utils/stime/getTimeExt.go @@ -0,0 +1,101 @@ +package stime + +import ( + "fmt" + "strconv" + "time" +) + +// 根据指定时间获取后面的若干天工作日列表 +// param baseOn 指定基准时间 +// param daysNum 获取工作日的数量 +func GetWorkDayList(baseOn *time.Time, daysNum int) []time.Time { + var timeList []time.Time + var basCount = 1 + var workDay time.Time + for { + if len(timeList) == daysNum { + break + } + workDay = baseOn.AddDate(0, 0, basCount) + switch workDay.Weekday() { + case time.Saturday: + basCount += 2 + continue + case time.Sunday: + basCount++ + continue + default: + timeList = append(timeList, workDay) + basCount++ + } + } + return timeList +} + +// 根据指定时间获取后面的若干天工作日列表 +// param baseOn 指定基准时间 +// param daysNum 获取工作日的数量 +func GetWorkDayStrList(baseOn *time.Time, daysNum int) []string { + var timeList []string + var basCount = 1 + var workDay time.Time + for { + if len(timeList) == daysNum { + break + } + workDay = baseOn.AddDate(0, 0, basCount) + switch workDay.Weekday() { + case time.Saturday: + basCount += 2 + continue + case time.Sunday: + basCount++ + continue + default: + timeList = append(timeList, TimeToString(workDay, Format_Normal_YMD)) + basCount++ + } + } + return timeList +} + +// 获取时间差文字描述 +func GetTimeDifferenceDesc(now *time.Time, before *time.Time) string { + if before == nil { + return "" + } + if now.After(*before) { + subTimestamp := now.Unix() - before.Unix() + day := subTimestamp / (3600 * 24) + hour := (subTimestamp - day*3600*24) / 3600 + minute := (subTimestamp - day*3600*24 - hour*3600) / 60 + second := subTimestamp - day*3600*24 - hour*3600 - minute*60 + + switch { + case day > 0: + if hour > 0 { + return fmt.Sprintf("%d天%d小时", day, hour) + } else { + return fmt.Sprintf("%d天", day) + } + case hour > 0: + if minute < 10 { + return fmt.Sprintf("%d小时", hour) + } else { + return fmt.Sprintf("%d小时%d", hour, minute) + } + case hour == 0 && minute > 0: + return fmt.Sprintf("%d分钟", minute) + case hour == 0 && minute == 0: + return fmt.Sprintf("%d秒", second) + } + } + return "" +} + +// TimeStampToBytes 时间戳转字节 +func TimeStampToBytes(stamp int64) []byte { + timeStr := strconv.FormatInt(stamp, 2) + return []byte(timeStr) +} diff --git a/pkg/utils/stime/getTimeExt_test.go b/pkg/utils/stime/getTimeExt_test.go new file mode 100644 index 0000000..52d4d41 --- /dev/null +++ b/pkg/utils/stime/getTimeExt_test.go @@ -0,0 +1,12 @@ +package stime + +import ( + "testing" + "time" +) + +func TestGetWorkDayStrList(t *testing.T) { + now := time.Now() + result := GetWorkDayStrList(&now, 5) + t.Log(result) +} diff --git a/pkg/utils/stime/timeTranslate.go b/pkg/utils/stime/timeTranslate.go new file mode 100644 index 0000000..2197e02 --- /dev/null +++ b/pkg/utils/stime/timeTranslate.go @@ -0,0 +1,64 @@ +/* + * @Author: immortal + * @Date: 2022-03-11 20:55:38 + * @LastEditors: immortal + * @LastEditTime: 2022-03-12 14:26:42 + * @Description: + * @FilePath: \monitor_env\utils\simpletime\timeTranslate.go + */ +/** + * @Author Puzzle + * @Date 2021/11/18 1:36 下午 + **/ + +package stime + +import ( + "time" +) + +func GetTimestampMillisecond() int64 { + now := time.Now() + return now.UnixNano() / 1e6 +} + +func StringToTime(strTime string) (*time.Time, error) { + const TIME_LAYOUT = "2006-01-02 15:04:05" //此时间不可更改 + timeobj, err := time.ParseInLocation(TIME_LAYOUT, strTime, Loc.Shanghai()) + return &timeobj, err +} + +func StringToTimeWithFormat(strTime string, timeFormat string) (*time.Time, error) { + timeobj, err := time.ParseInLocation(timeFormat, strTime, Loc.Shanghai()) + return &timeobj, err +} + +// 去除精确时间后面的小数点 +func NowTimeToTime(layout string) *time.Time { + otime := time.Now().Format(layout) //"2006-01-02 15:04:05" and so on + tt, _ := StringToTime(otime) + return tt +} + +// 时间之间的转换 +func TimeStampToString(timestamp int64, format string) string { + t := time.Unix(timestamp, 0) + return t.Format(format) +} + +func GetAge(birthday time.Time) int { + if birthday.IsZero() { + return 0 + } + now := time.Now() + year, month, day := now.Date() + if year == 0 || month == 0 || day == 0 { + return 0 + } + age := year - birthday.Year() - 1 + //判断年龄 + if birthday.Month() < month || birthday.Month() == month && birthday.Day() <= day { + age++ + } + return age +} diff --git a/pkg/utils/stime/timeTranslate_test.go b/pkg/utils/stime/timeTranslate_test.go new file mode 100644 index 0000000..20b2a50 --- /dev/null +++ b/pkg/utils/stime/timeTranslate_test.go @@ -0,0 +1,26 @@ +/* + * @FileName: time_test.go + * @Author: JJXu + * @CreateTime: 2022/2/25 下午2:37 + * @Description: + */ + +package stime + +import ( + "fmt" + "testing" + "time" +) + +func TestTime(t *testing.T) { + result := NowTimeToTime(Format_Normal_YMDhms) + fmt.Println(result) +} +func TestGetAge(t *testing.T) { + age := GetAge(time.Date(1991, 3, 6, 0, 0, 0, 0, Loc.Shanghai())) + fmt.Println(age) + if age != 31 { + t.Errorf("want 31 but get %v", age) + } +} diff --git a/pkg/utils/stime/week.go b/pkg/utils/stime/week.go new file mode 100644 index 0000000..e99e85d --- /dev/null +++ b/pkg/utils/stime/week.go @@ -0,0 +1,52 @@ +/** + * @Author Puzzle + * @Date 2022/5/20 12:54 下午 + **/ + +package stime + +import "time" + +func NowWeekDay() string { + var weekday = [7]string{"七", "一", "二", "三", "四", "五", "六"} + week := int(time.Now().Weekday()) + return weekday[week] +} + +// 获取按年算的周数 +func GetYearWeek(t *time.Time) int { + yearDay := t.YearDay() + yearFirstDay := t.AddDate(0, 0, -yearDay+1) + firstDayInWeek := int(yearFirstDay.Weekday()) + + //今年第一周有几天 + firstWeekDays := 1 + if firstDayInWeek != 0 { + firstWeekDays = 7 - firstDayInWeek + 1 + } + var week int + if yearDay <= firstWeekDays { + week = 1 + } else { + week = (yearDay-firstWeekDays)/7 + 2 + } + return week +} + +// GetWeekDate 获取基准时间范围最最近的某个星期时间 +// +// param baseOn: 基准时间 +// param weekNum: 中国星期数 1~7 +// return *time.Time +func GetWeekDate(baseOn time.Time, weekNum int) *time.Time { + if baseOn.IsZero() || (weekNum <= 0 || weekNum > 7) { + return nil + } + baseDate := time.Date(baseOn.Year(), baseOn.Month(), baseOn.Day(), 0, 0, 0, 0, Loc.Shanghai()) + var ( + w = int(baseOn.Weekday()) + weekDate time.Time + ) + weekDate = baseDate.AddDate(0, 0, weekNum-w) + return &weekDate +} diff --git a/pkg/utils/stime/week_test.go b/pkg/utils/stime/week_test.go new file mode 100644 index 0000000..5242248 --- /dev/null +++ b/pkg/utils/stime/week_test.go @@ -0,0 +1,20 @@ +// Package simpletime ----------------------------- +// @file : week_test.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2022/8/31 14:57 +// ------------------------------------------- +package stime + +import ( + "testing" + "time" +) + +func TestGetYearWeek(t *testing.T) { + now := time.Now() + t.Log(GetYearWeek(&now)) + var w = int(now.Weekday()) + t.Log(now.AddDate(0, 0, -w+1).Weekday()) + t.Log(now.AddDate(0, 0, 7-w).Weekday()) +} diff --git a/pkg/utils/unqiue.go b/pkg/utils/unqiue.go new file mode 100644 index 0000000..6a3b603 --- /dev/null +++ b/pkg/utils/unqiue.go @@ -0,0 +1,19 @@ +// Package utils ----------------------------- +// @file : unqiue.go +// @author : JJXu +// @contact : wavingbear@163.com +// @time : 2024/9/12 下午5:03 +// ------------------------------------------- +package utils + +func Unique[T int | int8 | int32 | int64 | string](slice []T) []T { + seen := make(map[T]bool) // 创建一个 map 来跟踪已经看到的元素 + unique := make([]T, 0) // 创建一个新的切片来存储唯一的元素 + for _, v := range slice { + if _, ok := seen[v]; !ok { + seen[v] = true // 标记元素为已见 + unique = append(unique, v) // 将元素添加到唯一元素切片中 + } + } + return unique +}