github.com/kchristidis/fabric@v1.0.4-0.20171028114726-837acd08cde1/protos/common/common.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: common/common.proto 3 4 /* 5 Package common is a generated protocol buffer package. 6 7 It is generated from these files: 8 common/common.proto 9 common/configtx.proto 10 common/configuration.proto 11 common/ledger.proto 12 common/policies.proto 13 14 It has these top-level messages: 15 LastConfig 16 Metadata 17 MetadataSignature 18 Header 19 ChannelHeader 20 SignatureHeader 21 Payload 22 Envelope 23 Block 24 BlockHeader 25 BlockData 26 BlockMetadata 27 ConfigEnvelope 28 ConfigGroupSchema 29 ConfigValueSchema 30 ConfigPolicySchema 31 Config 32 ConfigUpdateEnvelope 33 ConfigUpdate 34 ConfigGroup 35 ConfigValue 36 ConfigPolicy 37 ConfigSignature 38 HashingAlgorithm 39 BlockDataHashingStructure 40 OrdererAddresses 41 Consortium 42 BlockchainInfo 43 Policy 44 SignaturePolicyEnvelope 45 SignaturePolicy 46 ImplicitMetaPolicy 47 */ 48 package common 49 50 import proto "github.com/golang/protobuf/proto" 51 import fmt "fmt" 52 import math "math" 53 import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" 54 55 // Reference imports to suppress errors if they are not otherwise used. 56 var _ = proto.Marshal 57 var _ = fmt.Errorf 58 var _ = math.Inf 59 60 // This is a compile-time assertion to ensure that this generated file 61 // is compatible with the proto package it is being compiled against. 62 // A compilation error at this line likely means your copy of the 63 // proto package needs to be updated. 64 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package 65 66 // These status codes are intended to resemble selected HTTP status codes 67 type Status int32 68 69 const ( 70 Status_UNKNOWN Status = 0 71 Status_SUCCESS Status = 200 72 Status_BAD_REQUEST Status = 400 73 Status_FORBIDDEN Status = 403 74 Status_NOT_FOUND Status = 404 75 Status_REQUEST_ENTITY_TOO_LARGE Status = 413 76 Status_INTERNAL_SERVER_ERROR Status = 500 77 Status_SERVICE_UNAVAILABLE Status = 503 78 ) 79 80 var Status_name = map[int32]string{ 81 0: "UNKNOWN", 82 200: "SUCCESS", 83 400: "BAD_REQUEST", 84 403: "FORBIDDEN", 85 404: "NOT_FOUND", 86 413: "REQUEST_ENTITY_TOO_LARGE", 87 500: "INTERNAL_SERVER_ERROR", 88 503: "SERVICE_UNAVAILABLE", 89 } 90 var Status_value = map[string]int32{ 91 "UNKNOWN": 0, 92 "SUCCESS": 200, 93 "BAD_REQUEST": 400, 94 "FORBIDDEN": 403, 95 "NOT_FOUND": 404, 96 "REQUEST_ENTITY_TOO_LARGE": 413, 97 "INTERNAL_SERVER_ERROR": 500, 98 "SERVICE_UNAVAILABLE": 503, 99 } 100 101 func (x Status) String() string { 102 return proto.EnumName(Status_name, int32(x)) 103 } 104 func (Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 105 106 type HeaderType int32 107 108 const ( 109 HeaderType_MESSAGE HeaderType = 0 110 HeaderType_CONFIG HeaderType = 1 111 HeaderType_CONFIG_UPDATE HeaderType = 2 112 HeaderType_ENDORSER_TRANSACTION HeaderType = 3 113 HeaderType_ORDERER_TRANSACTION HeaderType = 4 114 HeaderType_DELIVER_SEEK_INFO HeaderType = 5 115 HeaderType_CHAINCODE_PACKAGE HeaderType = 6 116 ) 117 118 var HeaderType_name = map[int32]string{ 119 0: "MESSAGE", 120 1: "CONFIG", 121 2: "CONFIG_UPDATE", 122 3: "ENDORSER_TRANSACTION", 123 4: "ORDERER_TRANSACTION", 124 5: "DELIVER_SEEK_INFO", 125 6: "CHAINCODE_PACKAGE", 126 } 127 var HeaderType_value = map[string]int32{ 128 "MESSAGE": 0, 129 "CONFIG": 1, 130 "CONFIG_UPDATE": 2, 131 "ENDORSER_TRANSACTION": 3, 132 "ORDERER_TRANSACTION": 4, 133 "DELIVER_SEEK_INFO": 5, 134 "CHAINCODE_PACKAGE": 6, 135 } 136 137 func (x HeaderType) String() string { 138 return proto.EnumName(HeaderType_name, int32(x)) 139 } 140 func (HeaderType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } 141 142 // This enum enlists indexes of the block metadata array 143 type BlockMetadataIndex int32 144 145 const ( 146 BlockMetadataIndex_SIGNATURES BlockMetadataIndex = 0 147 BlockMetadataIndex_LAST_CONFIG BlockMetadataIndex = 1 148 BlockMetadataIndex_TRANSACTIONS_FILTER BlockMetadataIndex = 2 149 BlockMetadataIndex_ORDERER BlockMetadataIndex = 3 150 ) 151 152 var BlockMetadataIndex_name = map[int32]string{ 153 0: "SIGNATURES", 154 1: "LAST_CONFIG", 155 2: "TRANSACTIONS_FILTER", 156 3: "ORDERER", 157 } 158 var BlockMetadataIndex_value = map[string]int32{ 159 "SIGNATURES": 0, 160 "LAST_CONFIG": 1, 161 "TRANSACTIONS_FILTER": 2, 162 "ORDERER": 3, 163 } 164 165 func (x BlockMetadataIndex) String() string { 166 return proto.EnumName(BlockMetadataIndex_name, int32(x)) 167 } 168 func (BlockMetadataIndex) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } 169 170 // LastConfig is the encoded value for the Metadata message which is encoded in the LAST_CONFIGURATION block metadata index 171 type LastConfig struct { 172 Index uint64 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` 173 } 174 175 func (m *LastConfig) Reset() { *m = LastConfig{} } 176 func (m *LastConfig) String() string { return proto.CompactTextString(m) } 177 func (*LastConfig) ProtoMessage() {} 178 func (*LastConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 179 180 func (m *LastConfig) GetIndex() uint64 { 181 if m != nil { 182 return m.Index 183 } 184 return 0 185 } 186 187 // Metadata is a common structure to be used to encode block metadata 188 type Metadata struct { 189 Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` 190 Signatures []*MetadataSignature `protobuf:"bytes,2,rep,name=signatures" json:"signatures,omitempty"` 191 } 192 193 func (m *Metadata) Reset() { *m = Metadata{} } 194 func (m *Metadata) String() string { return proto.CompactTextString(m) } 195 func (*Metadata) ProtoMessage() {} 196 func (*Metadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } 197 198 func (m *Metadata) GetValue() []byte { 199 if m != nil { 200 return m.Value 201 } 202 return nil 203 } 204 205 func (m *Metadata) GetSignatures() []*MetadataSignature { 206 if m != nil { 207 return m.Signatures 208 } 209 return nil 210 } 211 212 type MetadataSignature struct { 213 SignatureHeader []byte `protobuf:"bytes,1,opt,name=signature_header,json=signatureHeader,proto3" json:"signature_header,omitempty"` 214 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 215 } 216 217 func (m *MetadataSignature) Reset() { *m = MetadataSignature{} } 218 func (m *MetadataSignature) String() string { return proto.CompactTextString(m) } 219 func (*MetadataSignature) ProtoMessage() {} 220 func (*MetadataSignature) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } 221 222 func (m *MetadataSignature) GetSignatureHeader() []byte { 223 if m != nil { 224 return m.SignatureHeader 225 } 226 return nil 227 } 228 229 func (m *MetadataSignature) GetSignature() []byte { 230 if m != nil { 231 return m.Signature 232 } 233 return nil 234 } 235 236 type Header struct { 237 ChannelHeader []byte `protobuf:"bytes,1,opt,name=channel_header,json=channelHeader,proto3" json:"channel_header,omitempty"` 238 SignatureHeader []byte `protobuf:"bytes,2,opt,name=signature_header,json=signatureHeader,proto3" json:"signature_header,omitempty"` 239 } 240 241 func (m *Header) Reset() { *m = Header{} } 242 func (m *Header) String() string { return proto.CompactTextString(m) } 243 func (*Header) ProtoMessage() {} 244 func (*Header) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } 245 246 func (m *Header) GetChannelHeader() []byte { 247 if m != nil { 248 return m.ChannelHeader 249 } 250 return nil 251 } 252 253 func (m *Header) GetSignatureHeader() []byte { 254 if m != nil { 255 return m.SignatureHeader 256 } 257 return nil 258 } 259 260 // Header is a generic replay prevention and identity message to include in a signed payload 261 type ChannelHeader struct { 262 Type int32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` 263 // Version indicates message protocol version 264 Version int32 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` 265 // Timestamp is the local time when the message was created 266 // by the sender 267 Timestamp *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=timestamp" json:"timestamp,omitempty"` 268 // Identifier of the channel this message is bound for 269 ChannelId string `protobuf:"bytes,4,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` 270 // An unique identifier that is used end-to-end. 271 // - set by higher layers such as end user or SDK 272 // - passed to the endorser (which will check for uniqueness) 273 // - as the header is passed along unchanged, it will be 274 // be retrieved by the committer (uniqueness check here as well) 275 // - to be stored in the ledger 276 TxId string `protobuf:"bytes,5,opt,name=tx_id,json=txId" json:"tx_id,omitempty"` 277 // The epoch in which this header was generated, where epoch is defined based on block height 278 // Epoch in which the response has been generated. This field identifies a 279 // logical window of time. A proposal response is accepted by a peer only if 280 // two conditions hold: 281 // 1. the epoch specified in the message is the current epoch 282 // 2. this message has been only seen once during this epoch (i.e. it hasn't 283 // been replayed) 284 Epoch uint64 `protobuf:"varint,6,opt,name=epoch" json:"epoch,omitempty"` 285 // Extension that may be attached based on the header type 286 Extension []byte `protobuf:"bytes,7,opt,name=extension,proto3" json:"extension,omitempty"` 287 } 288 289 func (m *ChannelHeader) Reset() { *m = ChannelHeader{} } 290 func (m *ChannelHeader) String() string { return proto.CompactTextString(m) } 291 func (*ChannelHeader) ProtoMessage() {} 292 func (*ChannelHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } 293 294 func (m *ChannelHeader) GetType() int32 { 295 if m != nil { 296 return m.Type 297 } 298 return 0 299 } 300 301 func (m *ChannelHeader) GetVersion() int32 { 302 if m != nil { 303 return m.Version 304 } 305 return 0 306 } 307 308 func (m *ChannelHeader) GetTimestamp() *google_protobuf.Timestamp { 309 if m != nil { 310 return m.Timestamp 311 } 312 return nil 313 } 314 315 func (m *ChannelHeader) GetChannelId() string { 316 if m != nil { 317 return m.ChannelId 318 } 319 return "" 320 } 321 322 func (m *ChannelHeader) GetTxId() string { 323 if m != nil { 324 return m.TxId 325 } 326 return "" 327 } 328 329 func (m *ChannelHeader) GetEpoch() uint64 { 330 if m != nil { 331 return m.Epoch 332 } 333 return 0 334 } 335 336 func (m *ChannelHeader) GetExtension() []byte { 337 if m != nil { 338 return m.Extension 339 } 340 return nil 341 } 342 343 type SignatureHeader struct { 344 // Creator of the message, specified as a certificate chain 345 Creator []byte `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` 346 // Arbitrary number that may only be used once. Can be used to detect replay attacks. 347 Nonce []byte `protobuf:"bytes,2,opt,name=nonce,proto3" json:"nonce,omitempty"` 348 } 349 350 func (m *SignatureHeader) Reset() { *m = SignatureHeader{} } 351 func (m *SignatureHeader) String() string { return proto.CompactTextString(m) } 352 func (*SignatureHeader) ProtoMessage() {} 353 func (*SignatureHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } 354 355 func (m *SignatureHeader) GetCreator() []byte { 356 if m != nil { 357 return m.Creator 358 } 359 return nil 360 } 361 362 func (m *SignatureHeader) GetNonce() []byte { 363 if m != nil { 364 return m.Nonce 365 } 366 return nil 367 } 368 369 // Payload is the message contents (and header to allow for signing) 370 type Payload struct { 371 // Header is included to provide identity and prevent replay 372 Header *Header `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"` 373 // Data, the encoding of which is defined by the type in the header 374 Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` 375 } 376 377 func (m *Payload) Reset() { *m = Payload{} } 378 func (m *Payload) String() string { return proto.CompactTextString(m) } 379 func (*Payload) ProtoMessage() {} 380 func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } 381 382 func (m *Payload) GetHeader() *Header { 383 if m != nil { 384 return m.Header 385 } 386 return nil 387 } 388 389 func (m *Payload) GetData() []byte { 390 if m != nil { 391 return m.Data 392 } 393 return nil 394 } 395 396 // Envelope wraps a Payload with a signature so that the message may be authenticated 397 type Envelope struct { 398 // A marshaled Payload 399 Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` 400 // A signature by the creator specified in the Payload header 401 Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` 402 } 403 404 func (m *Envelope) Reset() { *m = Envelope{} } 405 func (m *Envelope) String() string { return proto.CompactTextString(m) } 406 func (*Envelope) ProtoMessage() {} 407 func (*Envelope) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } 408 409 func (m *Envelope) GetPayload() []byte { 410 if m != nil { 411 return m.Payload 412 } 413 return nil 414 } 415 416 func (m *Envelope) GetSignature() []byte { 417 if m != nil { 418 return m.Signature 419 } 420 return nil 421 } 422 423 // This is finalized block structure to be shared among the orderer and peer 424 // Note that the BlockHeader chains to the previous BlockHeader, and the BlockData hash is embedded 425 // in the BlockHeader. This makes it natural and obvious that the Data is included in the hash, but 426 // the Metadata is not. 427 type Block struct { 428 Header *BlockHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"` 429 Data *BlockData `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` 430 Metadata *BlockMetadata `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"` 431 } 432 433 func (m *Block) Reset() { *m = Block{} } 434 func (m *Block) String() string { return proto.CompactTextString(m) } 435 func (*Block) ProtoMessage() {} 436 func (*Block) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } 437 438 func (m *Block) GetHeader() *BlockHeader { 439 if m != nil { 440 return m.Header 441 } 442 return nil 443 } 444 445 func (m *Block) GetData() *BlockData { 446 if m != nil { 447 return m.Data 448 } 449 return nil 450 } 451 452 func (m *Block) GetMetadata() *BlockMetadata { 453 if m != nil { 454 return m.Metadata 455 } 456 return nil 457 } 458 459 // BlockHeader is the element of the block which forms the block chain 460 // The block header is hashed using the configured chain hashing algorithm 461 // over the ASN.1 encoding of the BlockHeader 462 type BlockHeader struct { 463 Number uint64 `protobuf:"varint,1,opt,name=number" json:"number,omitempty"` 464 PreviousHash []byte `protobuf:"bytes,2,opt,name=previous_hash,json=previousHash,proto3" json:"previous_hash,omitempty"` 465 DataHash []byte `protobuf:"bytes,3,opt,name=data_hash,json=dataHash,proto3" json:"data_hash,omitempty"` 466 } 467 468 func (m *BlockHeader) Reset() { *m = BlockHeader{} } 469 func (m *BlockHeader) String() string { return proto.CompactTextString(m) } 470 func (*BlockHeader) ProtoMessage() {} 471 func (*BlockHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } 472 473 func (m *BlockHeader) GetNumber() uint64 { 474 if m != nil { 475 return m.Number 476 } 477 return 0 478 } 479 480 func (m *BlockHeader) GetPreviousHash() []byte { 481 if m != nil { 482 return m.PreviousHash 483 } 484 return nil 485 } 486 487 func (m *BlockHeader) GetDataHash() []byte { 488 if m != nil { 489 return m.DataHash 490 } 491 return nil 492 } 493 494 type BlockData struct { 495 Data [][]byte `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` 496 } 497 498 func (m *BlockData) Reset() { *m = BlockData{} } 499 func (m *BlockData) String() string { return proto.CompactTextString(m) } 500 func (*BlockData) ProtoMessage() {} 501 func (*BlockData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } 502 503 func (m *BlockData) GetData() [][]byte { 504 if m != nil { 505 return m.Data 506 } 507 return nil 508 } 509 510 type BlockMetadata struct { 511 Metadata [][]byte `protobuf:"bytes,1,rep,name=metadata,proto3" json:"metadata,omitempty"` 512 } 513 514 func (m *BlockMetadata) Reset() { *m = BlockMetadata{} } 515 func (m *BlockMetadata) String() string { return proto.CompactTextString(m) } 516 func (*BlockMetadata) ProtoMessage() {} 517 func (*BlockMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } 518 519 func (m *BlockMetadata) GetMetadata() [][]byte { 520 if m != nil { 521 return m.Metadata 522 } 523 return nil 524 } 525 526 func init() { 527 proto.RegisterType((*LastConfig)(nil), "common.LastConfig") 528 proto.RegisterType((*Metadata)(nil), "common.Metadata") 529 proto.RegisterType((*MetadataSignature)(nil), "common.MetadataSignature") 530 proto.RegisterType((*Header)(nil), "common.Header") 531 proto.RegisterType((*ChannelHeader)(nil), "common.ChannelHeader") 532 proto.RegisterType((*SignatureHeader)(nil), "common.SignatureHeader") 533 proto.RegisterType((*Payload)(nil), "common.Payload") 534 proto.RegisterType((*Envelope)(nil), "common.Envelope") 535 proto.RegisterType((*Block)(nil), "common.Block") 536 proto.RegisterType((*BlockHeader)(nil), "common.BlockHeader") 537 proto.RegisterType((*BlockData)(nil), "common.BlockData") 538 proto.RegisterType((*BlockMetadata)(nil), "common.BlockMetadata") 539 proto.RegisterEnum("common.Status", Status_name, Status_value) 540 proto.RegisterEnum("common.HeaderType", HeaderType_name, HeaderType_value) 541 proto.RegisterEnum("common.BlockMetadataIndex", BlockMetadataIndex_name, BlockMetadataIndex_value) 542 } 543 544 func init() { proto.RegisterFile("common/common.proto", fileDescriptor0) } 545 546 var fileDescriptor0 = []byte{ 547 // 900 bytes of a gzipped FileDescriptorProto 548 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x55, 0xdf, 0x6e, 0xe3, 0xc4, 549 0x1b, 0xad, 0xe3, 0xfc, 0x69, 0xbe, 0x34, 0xad, 0x3b, 0xd9, 0xfe, 0xd6, 0xbf, 0xc2, 0x6a, 0x23, 550 0xc3, 0xa2, 0xd2, 0x4a, 0x89, 0x28, 0x37, 0x70, 0xe9, 0xd8, 0x93, 0xd6, 0x6a, 0xd6, 0x2e, 0x63, 551 0x67, 0x11, 0xbb, 0x48, 0x96, 0x93, 0x4c, 0x13, 0x8b, 0xc4, 0x8e, 0x6c, 0xa7, 0x6a, 0x5f, 0x02, 552 0x21, 0xc1, 0x0d, 0x17, 0xbc, 0x00, 0x4f, 0xc2, 0x5b, 0xf0, 0x12, 0x48, 0xdc, 0xa2, 0xf1, 0x8c, 553 0xbd, 0x49, 0x59, 0x89, 0xab, 0xcc, 0x39, 0x73, 0x3c, 0xdf, 0x99, 0xf3, 0x7d, 0xb1, 0xa1, 0x33, 554 0x8d, 0x57, 0xab, 0x38, 0xea, 0xf3, 0x9f, 0xde, 0x3a, 0x89, 0xb3, 0x18, 0xd5, 0x39, 0x3a, 0x7d, 555 0x39, 0x8f, 0xe3, 0xf9, 0x92, 0xf6, 0x73, 0x76, 0xb2, 0xb9, 0xeb, 0x67, 0xe1, 0x8a, 0xa6, 0x59, 556 0xb0, 0x5a, 0x73, 0xa1, 0xa6, 0x01, 0x8c, 0x82, 0x34, 0x33, 0xe2, 0xe8, 0x2e, 0x9c, 0xa3, 0x67, 557 0x50, 0x0b, 0xa3, 0x19, 0x7d, 0x50, 0xa5, 0xae, 0x74, 0x56, 0x25, 0x1c, 0x68, 0xef, 0x60, 0xff, 558 0x35, 0xcd, 0x82, 0x59, 0x90, 0x05, 0x4c, 0x71, 0x1f, 0x2c, 0x37, 0x34, 0x57, 0x1c, 0x10, 0x0e, 559 0xd0, 0xd7, 0x00, 0x69, 0x38, 0x8f, 0x82, 0x6c, 0x93, 0xd0, 0x54, 0xad, 0x74, 0xe5, 0xb3, 0xd6, 560 0xe5, 0xff, 0x7b, 0xc2, 0x51, 0xf1, 0xac, 0x5b, 0x28, 0xc8, 0x96, 0x58, 0xfb, 0x1e, 0x8e, 0xff, 561 0x25, 0x40, 0x9f, 0x83, 0x52, 0x4a, 0xfc, 0x05, 0x0d, 0x66, 0x34, 0x11, 0x05, 0x8f, 0x4a, 0xfe, 562 0x3a, 0xa7, 0xd1, 0xc7, 0xd0, 0x2c, 0x29, 0xb5, 0x92, 0x6b, 0xde, 0x13, 0xda, 0x5b, 0xa8, 0x0b, 563 0xdd, 0x2b, 0x38, 0x9c, 0x2e, 0x82, 0x28, 0xa2, 0xcb, 0xdd, 0x03, 0xdb, 0x82, 0x15, 0xb2, 0x0f, 564 0x55, 0xae, 0x7c, 0xb0, 0xb2, 0xf6, 0xa7, 0x04, 0x6d, 0x63, 0xe7, 0x61, 0x04, 0xd5, 0xec, 0x71, 565 0xcd, 0xb3, 0xa9, 0x91, 0x7c, 0x8d, 0x54, 0x68, 0xdc, 0xd3, 0x24, 0x0d, 0xe3, 0x28, 0x3f, 0xa7, 566 0x46, 0x0a, 0x88, 0xbe, 0x82, 0x66, 0xd9, 0x0d, 0x55, 0xee, 0x4a, 0x67, 0xad, 0xcb, 0xd3, 0x1e, 567 0xef, 0x57, 0xaf, 0xe8, 0x57, 0xcf, 0x2b, 0x14, 0xe4, 0xbd, 0x18, 0xbd, 0x00, 0x28, 0xee, 0x12, 568 0xce, 0xd4, 0x6a, 0x57, 0x3a, 0x6b, 0x92, 0xa6, 0x60, 0xac, 0x19, 0xea, 0x40, 0x2d, 0x7b, 0x60, 569 0x3b, 0xb5, 0x7c, 0xa7, 0x9a, 0x3d, 0x58, 0x33, 0xd6, 0x38, 0xba, 0x8e, 0xa7, 0x0b, 0xb5, 0xce, 570 0x5b, 0x9b, 0x03, 0x96, 0x1e, 0x7d, 0xc8, 0x68, 0x94, 0xfb, 0x6b, 0xf0, 0xf4, 0x4a, 0x42, 0xd3, 571 0xe1, 0xc8, 0x7d, 0x12, 0xb7, 0x0a, 0x8d, 0x69, 0x42, 0x83, 0x2c, 0x2e, 0xf2, 0x2b, 0x20, 0x2b, 572 0x10, 0xc5, 0xd1, 0xb4, 0x68, 0x02, 0x07, 0x1a, 0x86, 0xc6, 0x6d, 0xf0, 0xb8, 0x8c, 0x83, 0x19, 573 0xfa, 0x0c, 0xea, 0x5b, 0xc9, 0xb7, 0x2e, 0x0f, 0x8b, 0x01, 0xe1, 0x47, 0x13, 0xb1, 0xcb, 0x52, 574 0x64, 0xd3, 0x20, 0xce, 0xc9, 0xd7, 0xda, 0x00, 0xf6, 0x71, 0x74, 0x4f, 0x97, 0x31, 0x4f, 0x74, 575 0xcd, 0x8f, 0x2c, 0x2c, 0x08, 0xf8, 0x1f, 0xb3, 0xf0, 0xa3, 0x04, 0xb5, 0xc1, 0x32, 0x9e, 0xfe, 576 0x80, 0x2e, 0x9e, 0x38, 0xe9, 0x14, 0x4e, 0xf2, 0xed, 0x27, 0x76, 0x5e, 0x6d, 0xd9, 0x69, 0x5d, 577 0x1e, 0xef, 0x48, 0xcd, 0x20, 0x0b, 0xb8, 0x43, 0xf4, 0x05, 0xec, 0xaf, 0xc4, 0x1c, 0x8b, 0x66, 578 0x9e, 0xec, 0x48, 0x8b, 0x21, 0x27, 0xa5, 0x4c, 0x9b, 0x43, 0x6b, 0xab, 0x20, 0xfa, 0x1f, 0xd4, 579 0xa3, 0xcd, 0x6a, 0x22, 0x5c, 0x55, 0x89, 0x40, 0xe8, 0x13, 0x68, 0xaf, 0x13, 0x7a, 0x1f, 0xc6, 580 0x9b, 0xd4, 0x5f, 0x04, 0xe9, 0x42, 0xdc, 0xec, 0xa0, 0x20, 0xaf, 0x83, 0x74, 0x81, 0x3e, 0x82, 581 0x26, 0x3b, 0x93, 0x0b, 0xe4, 0x5c, 0xb0, 0xcf, 0x08, 0xb6, 0xa9, 0xbd, 0x84, 0x66, 0x69, 0xb7, 582 0x8c, 0x57, 0xea, 0xca, 0x65, 0xbc, 0x17, 0xd0, 0xde, 0x31, 0x89, 0x4e, 0xb7, 0x6e, 0xc3, 0x85, 583 0x25, 0x3e, 0xff, 0x5d, 0x82, 0xba, 0x9b, 0x05, 0xd9, 0x26, 0x45, 0x2d, 0x68, 0x8c, 0xed, 0x1b, 584 0xdb, 0xf9, 0xd6, 0x56, 0xf6, 0xd0, 0x01, 0x34, 0xdc, 0xb1, 0x61, 0x60, 0xd7, 0x55, 0xfe, 0x90, 585 0x90, 0x02, 0xad, 0x81, 0x6e, 0xfa, 0x04, 0x7f, 0x33, 0xc6, 0xae, 0xa7, 0xfc, 0x24, 0xa3, 0x43, 586 0x68, 0x0e, 0x1d, 0x32, 0xb0, 0x4c, 0x13, 0xdb, 0xca, 0xcf, 0x39, 0xb6, 0x1d, 0xcf, 0x1f, 0x3a, 587 0x63, 0xdb, 0x54, 0x7e, 0x91, 0xd1, 0x0b, 0x50, 0x85, 0xda, 0xc7, 0xb6, 0x67, 0x79, 0xdf, 0xf9, 588 0x9e, 0xe3, 0xf8, 0x23, 0x9d, 0x5c, 0x61, 0xe5, 0x37, 0x19, 0x9d, 0xc2, 0x89, 0x65, 0x7b, 0x98, 589 0xd8, 0xfa, 0xc8, 0x77, 0x31, 0x79, 0x83, 0x89, 0x8f, 0x09, 0x71, 0x88, 0xf2, 0x97, 0x8c, 0x54, 590 0xe8, 0x30, 0xca, 0x32, 0xb0, 0x3f, 0xb6, 0xf5, 0x37, 0xba, 0x35, 0xd2, 0x07, 0x23, 0xac, 0xfc, 591 0x2d, 0x9f, 0xff, 0x2a, 0x01, 0xf0, 0x7c, 0x3d, 0xf6, 0x6f, 0x6c, 0x41, 0xe3, 0x35, 0x76, 0x5d, 592 0xfd, 0x0a, 0x2b, 0x7b, 0x08, 0xa0, 0x6e, 0x38, 0xf6, 0xd0, 0xba, 0x52, 0x24, 0x74, 0x0c, 0x6d, 593 0xbe, 0xf6, 0xc7, 0xb7, 0xa6, 0xee, 0x61, 0xa5, 0x82, 0x54, 0x78, 0x86, 0x6d, 0xd3, 0x21, 0x2e, 594 0x26, 0xbe, 0x47, 0x74, 0xdb, 0xd5, 0x0d, 0xcf, 0x72, 0x6c, 0x45, 0x46, 0xcf, 0xa1, 0xe3, 0x10, 595 0x13, 0x93, 0x27, 0x1b, 0x55, 0x74, 0x02, 0xc7, 0x26, 0x1e, 0x59, 0xcc, 0x9b, 0x8b, 0xf1, 0x8d, 596 0x6f, 0xd9, 0x43, 0x47, 0xa9, 0x31, 0xda, 0xb8, 0xd6, 0x2d, 0xdb, 0x70, 0x4c, 0xec, 0xdf, 0xea, 597 0xc6, 0x0d, 0xab, 0x5f, 0x3f, 0x7f, 0x07, 0x68, 0x27, 0x75, 0x8b, 0xbd, 0x6d, 0xd1, 0x21, 0x80, 598 0x6b, 0x5d, 0xd9, 0xba, 0x37, 0x26, 0xd8, 0x55, 0xf6, 0xd0, 0x11, 0xb4, 0x46, 0xba, 0xeb, 0xf9, 599 0xa5, 0xd5, 0xe7, 0xd0, 0xd9, 0xaa, 0xea, 0xfa, 0x43, 0x6b, 0xe4, 0x61, 0xa2, 0x54, 0xd8, 0xe5, 600 0x84, 0x2d, 0x45, 0x1e, 0xb8, 0xf0, 0x69, 0x9c, 0xcc, 0x7b, 0x8b, 0xc7, 0x35, 0x4d, 0x96, 0x74, 601 0x36, 0xa7, 0x49, 0xef, 0x2e, 0x98, 0x24, 0xe1, 0x94, 0xbf, 0x5b, 0x52, 0x31, 0x9c, 0x6f, 0x2f, 602 0xe6, 0x61, 0xb6, 0xd8, 0x4c, 0x18, 0xec, 0x6f, 0x89, 0xfb, 0x5c, 0xcc, 0x3f, 0x1c, 0xa9, 0xf8, 603 0xb8, 0x4c, 0xea, 0x39, 0xfc, 0xf2, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa1, 0xcb, 0xe1, 0xb4, 604 0x74, 0x06, 0x00, 0x00, 605 }