github.com/hyperledger/fabric-protos-go@v0.3.3/orderer/cluster.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: orderer/cluster.proto 3 4 package orderer 5 6 import ( 7 context "context" 8 fmt "fmt" 9 proto "github.com/golang/protobuf/proto" 10 common "github.com/hyperledger/fabric-protos-go/common" 11 grpc "google.golang.org/grpc" 12 codes "google.golang.org/grpc/codes" 13 status "google.golang.org/grpc/status" 14 math "math" 15 ) 16 17 // Reference imports to suppress errors if they are not otherwise used. 18 var _ = proto.Marshal 19 var _ = fmt.Errorf 20 var _ = math.Inf 21 22 // This is a compile-time assertion to ensure that this generated file 23 // is compatible with the proto package it is being compiled against. 24 // A compilation error at this line likely means your copy of the 25 // proto package needs to be updated. 26 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package 27 28 // StepRequest wraps a message that is sent to a cluster member. 29 type StepRequest struct { 30 // Types that are valid to be assigned to Payload: 31 // 32 // *StepRequest_ConsensusRequest 33 // *StepRequest_SubmitRequest 34 Payload isStepRequest_Payload `protobuf_oneof:"payload"` 35 XXX_NoUnkeyedLiteral struct{} `json:"-"` 36 XXX_unrecognized []byte `json:"-"` 37 XXX_sizecache int32 `json:"-"` 38 } 39 40 func (m *StepRequest) Reset() { *m = StepRequest{} } 41 func (m *StepRequest) String() string { return proto.CompactTextString(m) } 42 func (*StepRequest) ProtoMessage() {} 43 func (*StepRequest) Descriptor() ([]byte, []int) { 44 return fileDescriptor_e3b50707fd3a71f2, []int{0} 45 } 46 47 func (m *StepRequest) XXX_Unmarshal(b []byte) error { 48 return xxx_messageInfo_StepRequest.Unmarshal(m, b) 49 } 50 func (m *StepRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 51 return xxx_messageInfo_StepRequest.Marshal(b, m, deterministic) 52 } 53 func (m *StepRequest) XXX_Merge(src proto.Message) { 54 xxx_messageInfo_StepRequest.Merge(m, src) 55 } 56 func (m *StepRequest) XXX_Size() int { 57 return xxx_messageInfo_StepRequest.Size(m) 58 } 59 func (m *StepRequest) XXX_DiscardUnknown() { 60 xxx_messageInfo_StepRequest.DiscardUnknown(m) 61 } 62 63 var xxx_messageInfo_StepRequest proto.InternalMessageInfo 64 65 type isStepRequest_Payload interface { 66 isStepRequest_Payload() 67 } 68 69 type StepRequest_ConsensusRequest struct { 70 ConsensusRequest *ConsensusRequest `protobuf:"bytes,1,opt,name=consensus_request,json=consensusRequest,proto3,oneof"` 71 } 72 73 type StepRequest_SubmitRequest struct { 74 SubmitRequest *SubmitRequest `protobuf:"bytes,2,opt,name=submit_request,json=submitRequest,proto3,oneof"` 75 } 76 77 func (*StepRequest_ConsensusRequest) isStepRequest_Payload() {} 78 79 func (*StepRequest_SubmitRequest) isStepRequest_Payload() {} 80 81 func (m *StepRequest) GetPayload() isStepRequest_Payload { 82 if m != nil { 83 return m.Payload 84 } 85 return nil 86 } 87 88 func (m *StepRequest) GetConsensusRequest() *ConsensusRequest { 89 if x, ok := m.GetPayload().(*StepRequest_ConsensusRequest); ok { 90 return x.ConsensusRequest 91 } 92 return nil 93 } 94 95 func (m *StepRequest) GetSubmitRequest() *SubmitRequest { 96 if x, ok := m.GetPayload().(*StepRequest_SubmitRequest); ok { 97 return x.SubmitRequest 98 } 99 return nil 100 } 101 102 // XXX_OneofWrappers is for the internal use of the proto package. 103 func (*StepRequest) XXX_OneofWrappers() []interface{} { 104 return []interface{}{ 105 (*StepRequest_ConsensusRequest)(nil), 106 (*StepRequest_SubmitRequest)(nil), 107 } 108 } 109 110 // StepResponse is a message received from a cluster member. 111 type StepResponse struct { 112 // Types that are valid to be assigned to Payload: 113 // 114 // *StepResponse_SubmitRes 115 Payload isStepResponse_Payload `protobuf_oneof:"payload"` 116 XXX_NoUnkeyedLiteral struct{} `json:"-"` 117 XXX_unrecognized []byte `json:"-"` 118 XXX_sizecache int32 `json:"-"` 119 } 120 121 func (m *StepResponse) Reset() { *m = StepResponse{} } 122 func (m *StepResponse) String() string { return proto.CompactTextString(m) } 123 func (*StepResponse) ProtoMessage() {} 124 func (*StepResponse) Descriptor() ([]byte, []int) { 125 return fileDescriptor_e3b50707fd3a71f2, []int{1} 126 } 127 128 func (m *StepResponse) XXX_Unmarshal(b []byte) error { 129 return xxx_messageInfo_StepResponse.Unmarshal(m, b) 130 } 131 func (m *StepResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 132 return xxx_messageInfo_StepResponse.Marshal(b, m, deterministic) 133 } 134 func (m *StepResponse) XXX_Merge(src proto.Message) { 135 xxx_messageInfo_StepResponse.Merge(m, src) 136 } 137 func (m *StepResponse) XXX_Size() int { 138 return xxx_messageInfo_StepResponse.Size(m) 139 } 140 func (m *StepResponse) XXX_DiscardUnknown() { 141 xxx_messageInfo_StepResponse.DiscardUnknown(m) 142 } 143 144 var xxx_messageInfo_StepResponse proto.InternalMessageInfo 145 146 type isStepResponse_Payload interface { 147 isStepResponse_Payload() 148 } 149 150 type StepResponse_SubmitRes struct { 151 SubmitRes *SubmitResponse `protobuf:"bytes,1,opt,name=submit_res,json=submitRes,proto3,oneof"` 152 } 153 154 func (*StepResponse_SubmitRes) isStepResponse_Payload() {} 155 156 func (m *StepResponse) GetPayload() isStepResponse_Payload { 157 if m != nil { 158 return m.Payload 159 } 160 return nil 161 } 162 163 func (m *StepResponse) GetSubmitRes() *SubmitResponse { 164 if x, ok := m.GetPayload().(*StepResponse_SubmitRes); ok { 165 return x.SubmitRes 166 } 167 return nil 168 } 169 170 // XXX_OneofWrappers is for the internal use of the proto package. 171 func (*StepResponse) XXX_OneofWrappers() []interface{} { 172 return []interface{}{ 173 (*StepResponse_SubmitRes)(nil), 174 } 175 } 176 177 // ConsensusRequest is a consensus specific message sent to a cluster member. 178 type ConsensusRequest struct { 179 Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"` 180 Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` 181 Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` 182 XXX_NoUnkeyedLiteral struct{} `json:"-"` 183 XXX_unrecognized []byte `json:"-"` 184 XXX_sizecache int32 `json:"-"` 185 } 186 187 func (m *ConsensusRequest) Reset() { *m = ConsensusRequest{} } 188 func (m *ConsensusRequest) String() string { return proto.CompactTextString(m) } 189 func (*ConsensusRequest) ProtoMessage() {} 190 func (*ConsensusRequest) Descriptor() ([]byte, []int) { 191 return fileDescriptor_e3b50707fd3a71f2, []int{2} 192 } 193 194 func (m *ConsensusRequest) XXX_Unmarshal(b []byte) error { 195 return xxx_messageInfo_ConsensusRequest.Unmarshal(m, b) 196 } 197 func (m *ConsensusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 198 return xxx_messageInfo_ConsensusRequest.Marshal(b, m, deterministic) 199 } 200 func (m *ConsensusRequest) XXX_Merge(src proto.Message) { 201 xxx_messageInfo_ConsensusRequest.Merge(m, src) 202 } 203 func (m *ConsensusRequest) XXX_Size() int { 204 return xxx_messageInfo_ConsensusRequest.Size(m) 205 } 206 func (m *ConsensusRequest) XXX_DiscardUnknown() { 207 xxx_messageInfo_ConsensusRequest.DiscardUnknown(m) 208 } 209 210 var xxx_messageInfo_ConsensusRequest proto.InternalMessageInfo 211 212 func (m *ConsensusRequest) GetChannel() string { 213 if m != nil { 214 return m.Channel 215 } 216 return "" 217 } 218 219 func (m *ConsensusRequest) GetPayload() []byte { 220 if m != nil { 221 return m.Payload 222 } 223 return nil 224 } 225 226 func (m *ConsensusRequest) GetMetadata() []byte { 227 if m != nil { 228 return m.Metadata 229 } 230 return nil 231 } 232 233 // SubmitRequest wraps a transaction to be sent for ordering. 234 type SubmitRequest struct { 235 Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"` 236 // last_validation_seq denotes the last 237 // configuration sequence at which the 238 // sender validated this message. 239 LastValidationSeq uint64 `protobuf:"varint,2,opt,name=last_validation_seq,json=lastValidationSeq,proto3" json:"last_validation_seq,omitempty"` 240 // content is the fabric transaction 241 // that is forwarded to the cluster member. 242 Payload *common.Envelope `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` 243 XXX_NoUnkeyedLiteral struct{} `json:"-"` 244 XXX_unrecognized []byte `json:"-"` 245 XXX_sizecache int32 `json:"-"` 246 } 247 248 func (m *SubmitRequest) Reset() { *m = SubmitRequest{} } 249 func (m *SubmitRequest) String() string { return proto.CompactTextString(m) } 250 func (*SubmitRequest) ProtoMessage() {} 251 func (*SubmitRequest) Descriptor() ([]byte, []int) { 252 return fileDescriptor_e3b50707fd3a71f2, []int{3} 253 } 254 255 func (m *SubmitRequest) XXX_Unmarshal(b []byte) error { 256 return xxx_messageInfo_SubmitRequest.Unmarshal(m, b) 257 } 258 func (m *SubmitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 259 return xxx_messageInfo_SubmitRequest.Marshal(b, m, deterministic) 260 } 261 func (m *SubmitRequest) XXX_Merge(src proto.Message) { 262 xxx_messageInfo_SubmitRequest.Merge(m, src) 263 } 264 func (m *SubmitRequest) XXX_Size() int { 265 return xxx_messageInfo_SubmitRequest.Size(m) 266 } 267 func (m *SubmitRequest) XXX_DiscardUnknown() { 268 xxx_messageInfo_SubmitRequest.DiscardUnknown(m) 269 } 270 271 var xxx_messageInfo_SubmitRequest proto.InternalMessageInfo 272 273 func (m *SubmitRequest) GetChannel() string { 274 if m != nil { 275 return m.Channel 276 } 277 return "" 278 } 279 280 func (m *SubmitRequest) GetLastValidationSeq() uint64 { 281 if m != nil { 282 return m.LastValidationSeq 283 } 284 return 0 285 } 286 287 func (m *SubmitRequest) GetPayload() *common.Envelope { 288 if m != nil { 289 return m.Payload 290 } 291 return nil 292 } 293 294 // SubmitResponse returns a success 295 // or failure status to the sender. 296 type SubmitResponse struct { 297 Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"` 298 // Status code, which may be used to programatically respond to success/failure. 299 Status common.Status `protobuf:"varint,2,opt,name=status,proto3,enum=common.Status" json:"status,omitempty"` 300 // Info string which may contain additional information about the returned status. 301 Info string `protobuf:"bytes,3,opt,name=info,proto3" json:"info,omitempty"` 302 XXX_NoUnkeyedLiteral struct{} `json:"-"` 303 XXX_unrecognized []byte `json:"-"` 304 XXX_sizecache int32 `json:"-"` 305 } 306 307 func (m *SubmitResponse) Reset() { *m = SubmitResponse{} } 308 func (m *SubmitResponse) String() string { return proto.CompactTextString(m) } 309 func (*SubmitResponse) ProtoMessage() {} 310 func (*SubmitResponse) Descriptor() ([]byte, []int) { 311 return fileDescriptor_e3b50707fd3a71f2, []int{4} 312 } 313 314 func (m *SubmitResponse) XXX_Unmarshal(b []byte) error { 315 return xxx_messageInfo_SubmitResponse.Unmarshal(m, b) 316 } 317 func (m *SubmitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 318 return xxx_messageInfo_SubmitResponse.Marshal(b, m, deterministic) 319 } 320 func (m *SubmitResponse) XXX_Merge(src proto.Message) { 321 xxx_messageInfo_SubmitResponse.Merge(m, src) 322 } 323 func (m *SubmitResponse) XXX_Size() int { 324 return xxx_messageInfo_SubmitResponse.Size(m) 325 } 326 func (m *SubmitResponse) XXX_DiscardUnknown() { 327 xxx_messageInfo_SubmitResponse.DiscardUnknown(m) 328 } 329 330 var xxx_messageInfo_SubmitResponse proto.InternalMessageInfo 331 332 func (m *SubmitResponse) GetChannel() string { 333 if m != nil { 334 return m.Channel 335 } 336 return "" 337 } 338 339 func (m *SubmitResponse) GetStatus() common.Status { 340 if m != nil { 341 return m.Status 342 } 343 return common.Status_UNKNOWN 344 } 345 346 func (m *SubmitResponse) GetInfo() string { 347 if m != nil { 348 return m.Info 349 } 350 return "" 351 } 352 353 func init() { 354 proto.RegisterType((*StepRequest)(nil), "orderer.StepRequest") 355 proto.RegisterType((*StepResponse)(nil), "orderer.StepResponse") 356 proto.RegisterType((*ConsensusRequest)(nil), "orderer.ConsensusRequest") 357 proto.RegisterType((*SubmitRequest)(nil), "orderer.SubmitRequest") 358 proto.RegisterType((*SubmitResponse)(nil), "orderer.SubmitResponse") 359 } 360 361 func init() { proto.RegisterFile("orderer/cluster.proto", fileDescriptor_e3b50707fd3a71f2) } 362 363 var fileDescriptor_e3b50707fd3a71f2 = []byte{ 364 // 418 bytes of a gzipped FileDescriptorProto 365 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0xc1, 0x6a, 0xdb, 0x40, 366 0x10, 0x8d, 0x1a, 0x13, 0x57, 0x93, 0x44, 0x38, 0x9b, 0xa6, 0x75, 0x7d, 0x2a, 0x82, 0x96, 0x50, 367 0x88, 0x54, 0xdc, 0x43, 0x7b, 0x2b, 0x38, 0x14, 0x7c, 0x5e, 0x41, 0x29, 0xbd, 0x98, 0x95, 0x34, 368 0x96, 0x05, 0xd2, 0xae, 0xbc, 0xbb, 0x0a, 0xe4, 0x03, 0xfa, 0x25, 0xfd, 0xd1, 0xa2, 0xdd, 0x95, 369 0xe4, 0x38, 0x90, 0x93, 0x34, 0xef, 0xcd, 0xbc, 0x79, 0xb3, 0x33, 0x70, 0x23, 0x64, 0x8e, 0x12, 370 0x65, 0x9c, 0x55, 0xad, 0xd2, 0x28, 0xa3, 0x46, 0x0a, 0x2d, 0xc8, 0xd4, 0xc1, 0x8b, 0xeb, 0x4c, 371 0xd4, 0xb5, 0xe0, 0xb1, 0xfd, 0x58, 0x36, 0xfc, 0xe7, 0xc1, 0x79, 0xa2, 0xb1, 0xa1, 0xb8, 0x6f, 372 0x51, 0x69, 0xb2, 0x86, 0xab, 0x4c, 0x70, 0x85, 0x5c, 0xb5, 0x6a, 0x23, 0x2d, 0x38, 0xf7, 0x3e, 373 0x78, 0xb7, 0xe7, 0xcb, 0xf7, 0x91, 0x53, 0x8a, 0xee, 0xfb, 0x0c, 0x57, 0xb5, 0x3e, 0xa1, 0xb3, 374 0xec, 0x08, 0x23, 0x3f, 0x20, 0x50, 0x6d, 0x5a, 0x97, 0x7a, 0x90, 0x79, 0x65, 0x64, 0xde, 0x0e, 375 0x32, 0x89, 0xa1, 0x47, 0x8d, 0x4b, 0x75, 0x08, 0xac, 0x7c, 0x98, 0x36, 0xec, 0xb1, 0x12, 0x2c, 376 0x0f, 0x13, 0xb8, 0xb0, 0x26, 0x55, 0xd3, 0xb5, 0x21, 0xdf, 0x01, 0x06, 0x6d, 0xe5, 0xec, 0xbd, 377 0x7b, 0xa6, 0x6b, 0x93, 0xd7, 0x27, 0xd4, 0xef, 0x85, 0xd5, 0xa1, 0x68, 0x0a, 0xb3, 0xe3, 0x41, 378 0xc8, 0x1c, 0xa6, 0xd9, 0x8e, 0x71, 0x8e, 0x95, 0x51, 0xf5, 0x69, 0x1f, 0x76, 0x8c, 0x2b, 0x34, 379 0x73, 0x5c, 0xd0, 0x3e, 0x24, 0x0b, 0x78, 0x5d, 0xa3, 0x66, 0x39, 0xd3, 0x6c, 0x7e, 0x6a, 0xa8, 380 0x21, 0x0e, 0xff, 0x7a, 0x70, 0xf9, 0x64, 0xcc, 0x17, 0x3a, 0x44, 0x70, 0x5d, 0x31, 0xa5, 0x37, 381 0x0f, 0xac, 0x2a, 0x73, 0xa6, 0x4b, 0xc1, 0x37, 0x0a, 0xf7, 0xa6, 0xdb, 0x84, 0x5e, 0x75, 0xd4, 382 0xaf, 0x81, 0x49, 0x70, 0x4f, 0x3e, 0x8f, 0x8e, 0x4e, 0xcd, 0x0b, 0xcc, 0x22, 0xb7, 0xda, 0x9f, 383 0xfc, 0x01, 0x2b, 0xd1, 0xe0, 0xe0, 0x31, 0xdc, 0x42, 0xf0, 0xf4, 0x55, 0x5e, 0xf0, 0xf1, 0x09, 384 0xce, 0x94, 0x66, 0xba, 0x55, 0xa6, 0x75, 0xb0, 0x0c, 0x7a, 0xd9, 0xc4, 0xa0, 0xd4, 0xb1, 0x84, 385 0xc0, 0xa4, 0xe4, 0x5b, 0x61, 0x9a, 0xfb, 0xd4, 0xfc, 0x2f, 0x57, 0x30, 0xbd, 0xb7, 0xd7, 0x47, 386 0xbe, 0xc1, 0xa4, 0xdb, 0x19, 0x79, 0x33, 0xee, 0x65, 0xbc, 0xb3, 0xc5, 0xcd, 0x11, 0x6a, 0x5d, 387 0xdd, 0x7a, 0x5f, 0xbc, 0xd5, 0x6f, 0xf8, 0x28, 0x64, 0x11, 0xed, 0x1e, 0x1b, 0x94, 0x15, 0xe6, 388 0x05, 0xca, 0x68, 0xcb, 0x52, 0x59, 0x66, 0xf6, 0x64, 0x55, 0x5f, 0xf9, 0x27, 0x2e, 0x4a, 0xbd, 389 0x6b, 0xd3, 0xce, 0x5e, 0x7c, 0x90, 0x1d, 0xdb, 0xec, 0x3b, 0x9b, 0x7d, 0x57, 0x88, 0xd8, 0x15, 390 0xa4, 0x67, 0x06, 0xfa, 0xfa, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xe2, 0xed, 0x23, 0xd0, 0x2a, 0x03, 391 0x00, 0x00, 392 } 393 394 // Reference imports to suppress errors if they are not otherwise used. 395 var _ context.Context 396 var _ grpc.ClientConn 397 398 // This is a compile-time assertion to ensure that this generated file 399 // is compatible with the grpc package it is being compiled against. 400 const _ = grpc.SupportPackageIsVersion4 401 402 // ClusterClient is the client API for Cluster service. 403 // 404 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 405 type ClusterClient interface { 406 // Step passes an implementation-specific message to another cluster member. 407 Step(ctx context.Context, opts ...grpc.CallOption) (Cluster_StepClient, error) 408 } 409 410 type clusterClient struct { 411 cc *grpc.ClientConn 412 } 413 414 func NewClusterClient(cc *grpc.ClientConn) ClusterClient { 415 return &clusterClient{cc} 416 } 417 418 func (c *clusterClient) Step(ctx context.Context, opts ...grpc.CallOption) (Cluster_StepClient, error) { 419 stream, err := c.cc.NewStream(ctx, &_Cluster_serviceDesc.Streams[0], "/orderer.Cluster/Step", opts...) 420 if err != nil { 421 return nil, err 422 } 423 x := &clusterStepClient{stream} 424 return x, nil 425 } 426 427 type Cluster_StepClient interface { 428 Send(*StepRequest) error 429 Recv() (*StepResponse, error) 430 grpc.ClientStream 431 } 432 433 type clusterStepClient struct { 434 grpc.ClientStream 435 } 436 437 func (x *clusterStepClient) Send(m *StepRequest) error { 438 return x.ClientStream.SendMsg(m) 439 } 440 441 func (x *clusterStepClient) Recv() (*StepResponse, error) { 442 m := new(StepResponse) 443 if err := x.ClientStream.RecvMsg(m); err != nil { 444 return nil, err 445 } 446 return m, nil 447 } 448 449 // ClusterServer is the server API for Cluster service. 450 type ClusterServer interface { 451 // Step passes an implementation-specific message to another cluster member. 452 Step(Cluster_StepServer) error 453 } 454 455 // UnimplementedClusterServer can be embedded to have forward compatible implementations. 456 type UnimplementedClusterServer struct { 457 } 458 459 func (*UnimplementedClusterServer) Step(srv Cluster_StepServer) error { 460 return status.Errorf(codes.Unimplemented, "method Step not implemented") 461 } 462 463 func RegisterClusterServer(s *grpc.Server, srv ClusterServer) { 464 s.RegisterService(&_Cluster_serviceDesc, srv) 465 } 466 467 func _Cluster_Step_Handler(srv interface{}, stream grpc.ServerStream) error { 468 return srv.(ClusterServer).Step(&clusterStepServer{stream}) 469 } 470 471 type Cluster_StepServer interface { 472 Send(*StepResponse) error 473 Recv() (*StepRequest, error) 474 grpc.ServerStream 475 } 476 477 type clusterStepServer struct { 478 grpc.ServerStream 479 } 480 481 func (x *clusterStepServer) Send(m *StepResponse) error { 482 return x.ServerStream.SendMsg(m) 483 } 484 485 func (x *clusterStepServer) Recv() (*StepRequest, error) { 486 m := new(StepRequest) 487 if err := x.ServerStream.RecvMsg(m); err != nil { 488 return nil, err 489 } 490 return m, nil 491 } 492 493 var _Cluster_serviceDesc = grpc.ServiceDesc{ 494 ServiceName: "orderer.Cluster", 495 HandlerType: (*ClusterServer)(nil), 496 Methods: []grpc.MethodDesc{}, 497 Streams: []grpc.StreamDesc{ 498 { 499 StreamName: "Step", 500 Handler: _Cluster_Step_Handler, 501 ServerStreams: true, 502 ClientStreams: true, 503 }, 504 }, 505 Metadata: "orderer/cluster.proto", 506 }