diff --git a/abci/types/types.pb.go b/abci/types/types.pb.go index 33f295fc342..30474f67532 100644 --- a/abci/types/types.pb.go +++ b/abci/types/types.pb.go @@ -2256,6 +2256,10 @@ type ResponseCheckTx struct { GasUsed int64 `protobuf:"varint,6,opt,name=gas_used,proto3" json:"gas_used,omitempty"` Events []Event `protobuf:"bytes,7,rep,name=events,proto3" json:"events,omitempty"` Codespace string `protobuf:"bytes,8,opt,name=codespace,proto3" json:"codespace,omitempty"` + // these fields are used in the priority mempool + Address []byte `protobuf:"bytes,15,opt,name=address,proto3" json:"address,omitempty"` + GasFees uint64 `protobuf:"varint,16,opt,name=gas_fees,json=gasFees,proto3" json:"gas_fees,omitempty"` + Sequence uint64 `protobuf:"varint,17,opt,name=sequence,proto3" json:"sequence,omitempty"` } func (m *ResponseCheckTx) Reset() { *m = ResponseCheckTx{} } @@ -2347,6 +2351,27 @@ func (m *ResponseCheckTx) GetCodespace() string { return "" } +func (m *ResponseCheckTx) GetAddress() []byte { + if m != nil { + return m.Address + } + return nil +} + +func (m *ResponseCheckTx) GetGasFees() uint64 { + if m != nil { + return m.GasFees + } + return 0 +} + +func (m *ResponseCheckTx) GetSequence() uint64 { + if m != nil { + return m.Sequence + } + return 0 +} + type ResponseCommit struct { RetainHeight int64 `protobuf:"varint,3,opt,name=retain_height,json=retainHeight,proto3" json:"retain_height,omitempty"` } @@ -3704,209 +3729,211 @@ func init() { func init() { proto.RegisterFile("tendermint/abci/types.proto", fileDescriptor_252557cfdd89a31a) } var fileDescriptor_252557cfdd89a31a = []byte{ - // 3225 bytes of a gzipped FileDescriptorProto + // 3262 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x73, 0x23, 0xd5, - 0xd5, 0x57, 0xeb, 0xad, 0xa3, 0x87, 0xdb, 0xd7, 0x9e, 0x41, 0x23, 0x06, 0x8f, 0x69, 0x3e, 0x60, - 0x18, 0xc0, 0xe6, 0xf3, 0x7c, 0xc3, 0xa3, 0x06, 0xbe, 0x2a, 0x59, 0xa3, 0x89, 0xec, 0x31, 0xb6, - 0x69, 0xcb, 0x43, 0x91, 0x07, 0x4d, 0x5b, 0xba, 0xb2, 0x9a, 0x91, 0xd4, 0x4d, 0xf7, 0x95, 0x91, - 0x67, 0x95, 0x0a, 0xc9, 0x22, 0xac, 0xa8, 0x4a, 0x16, 0x2c, 0xc2, 0x22, 0x8b, 0x6c, 0xf2, 0x17, - 0x64, 0x95, 0x6c, 0xb2, 0x60, 0x91, 0xaa, 0xb0, 0xcc, 0x8a, 0xa4, 0x60, 0xc7, 0x36, 0x8b, 0x6c, - 0x53, 0xf7, 0xd1, 0x2f, 0x49, 0x6d, 0x49, 0x03, 0x59, 0xa4, 0x92, 0xdd, 0xbd, 0xe7, 0x9e, 0x73, - 0x6e, 0xf7, 0xe9, 0x73, 0xcf, 0xe3, 0xd7, 0x17, 0x1e, 0x27, 0x78, 0xd0, 0xc6, 0x76, 0xdf, 0x18, - 0x90, 0x4d, 0xfd, 0xa4, 0x65, 0x6c, 0x92, 0x73, 0x0b, 0x3b, 0x1b, 0x96, 0x6d, 0x12, 0x13, 0x2d, - 0xf9, 0x8b, 0x1b, 0x74, 0xb1, 0xf2, 0x44, 0x80, 0xbb, 0x65, 0x9f, 0x5b, 0xc4, 0xdc, 0xb4, 0x6c, - 0xd3, 0xec, 0x70, 0xfe, 0xca, 0xd5, 0xc9, 0xe5, 0x07, 0xf8, 0x5c, 0x68, 0x0b, 0x09, 0xb3, 0x5d, - 0x36, 0x2d, 0xdd, 0xd6, 0xfb, 0xee, 0xf2, 0xfa, 0xc4, 0xf2, 0x99, 0xde, 0x33, 0xda, 0x3a, 0x31, - 0x6d, 0xc1, 0x71, 0xed, 0xd4, 0x34, 0x4f, 0x7b, 0x78, 0x93, 0xcd, 0x4e, 0x86, 0x9d, 0x4d, 0x62, - 0xf4, 0xb1, 0x43, 0xf4, 0xbe, 0x25, 0x18, 0x56, 0x4f, 0xcd, 0x53, 0x93, 0x0d, 0x37, 0xe9, 0x88, - 0x53, 0x95, 0x3f, 0xe4, 0x20, 0xa3, 0xe2, 0x0f, 0x86, 0xd8, 0x21, 0x68, 0x0b, 0x92, 0xb8, 0xd5, - 0x35, 0xcb, 0xd2, 0xba, 0x74, 0x3d, 0xbf, 0x75, 0x75, 0x63, 0xec, 0x05, 0x37, 0x04, 0x5f, 0xbd, - 0xd5, 0x35, 0x1b, 0x31, 0x95, 0xf1, 0xa2, 0x5b, 0x90, 0xea, 0xf4, 0x86, 0x4e, 0xb7, 0x1c, 0x67, - 0x42, 0x4f, 0x44, 0x09, 0xdd, 0xa5, 0x4c, 0x8d, 0x98, 0xca, 0xb9, 0xe9, 0x56, 0xc6, 0xa0, 0x63, - 0x96, 0x13, 0x17, 0x6f, 0xb5, 0x33, 0xe8, 0xb0, 0xad, 0x28, 0x2f, 0xda, 0x06, 0x30, 0x06, 0x06, - 0xd1, 0x5a, 0x5d, 0xdd, 0x18, 0x94, 0x53, 0x4c, 0xf2, 0xc9, 0x68, 0x49, 0x83, 0xd4, 0x28, 0x63, - 0x23, 0xa6, 0xe6, 0x0c, 0x77, 0x42, 0x1f, 0xf7, 0x83, 0x21, 0xb6, 0xcf, 0xcb, 0xe9, 0x8b, 0x1f, - 0xf7, 0x2d, 0xca, 0x44, 0x1f, 0x97, 0x71, 0xa3, 0xd7, 0x21, 0xdb, 0xea, 0xe2, 0xd6, 0x03, 0x8d, - 0x8c, 0xca, 0x59, 0x26, 0x79, 0x2d, 0x4a, 0xb2, 0x46, 0xf9, 0x9a, 0xa3, 0x46, 0x4c, 0xcd, 0xb4, - 0xf8, 0x10, 0xbd, 0x0a, 0xe9, 0x96, 0xd9, 0xef, 0x1b, 0xa4, 0x9c, 0x67, 0xb2, 0x6b, 0x91, 0xb2, - 0x8c, 0xab, 0x11, 0x53, 0x05, 0x3f, 0xda, 0x87, 0x52, 0xcf, 0x70, 0x88, 0xe6, 0x0c, 0x74, 0xcb, - 0xe9, 0x9a, 0xc4, 0x29, 0x17, 0x98, 0x86, 0xa7, 0xa3, 0x34, 0xec, 0x19, 0x0e, 0x39, 0x72, 0x99, - 0x1b, 0x31, 0xb5, 0xd8, 0x0b, 0x12, 0xa8, 0x3e, 0xb3, 0xd3, 0xc1, 0xb6, 0xa7, 0xb0, 0x5c, 0xbc, - 0x58, 0xdf, 0x01, 0xe5, 0x76, 0xe5, 0xa9, 0x3e, 0x33, 0x48, 0x40, 0x3f, 0x80, 0x95, 0x9e, 0xa9, - 0xb7, 0x3d, 0x75, 0x5a, 0xab, 0x3b, 0x1c, 0x3c, 0x28, 0x97, 0x98, 0xd2, 0xe7, 0x22, 0x1f, 0xd2, - 0xd4, 0xdb, 0xae, 0x8a, 0x1a, 0x15, 0x68, 0xc4, 0xd4, 0xe5, 0xde, 0x38, 0x11, 0xbd, 0x0b, 0xab, - 0xba, 0x65, 0xf5, 0xce, 0xc7, 0xb5, 0x2f, 0x31, 0xed, 0x37, 0xa2, 0xb4, 0x57, 0xa9, 0xcc, 0xb8, - 0x7a, 0xa4, 0x4f, 0x50, 0x51, 0x13, 0x64, 0xcb, 0xc6, 0x96, 0x6e, 0x63, 0xcd, 0xb2, 0x4d, 0xcb, - 0x74, 0xf4, 0x5e, 0x59, 0x66, 0xba, 0x9f, 0x8d, 0xd2, 0x7d, 0xc8, 0xf9, 0x0f, 0x05, 0x7b, 0x23, - 0xa6, 0x2e, 0x59, 0x61, 0x12, 0xd7, 0x6a, 0xb6, 0xb0, 0xe3, 0xf8, 0x5a, 0x97, 0x67, 0x69, 0x65, - 0xfc, 0x61, 0xad, 0x21, 0x12, 0xaa, 0x43, 0x1e, 0x8f, 0xa8, 0xb8, 0x76, 0x66, 0x12, 0x5c, 0x46, - 0x4c, 0xa1, 0x12, 0x79, 0x42, 0x19, 0xeb, 0x7d, 0x93, 0xe0, 0x46, 0x4c, 0x05, 0xec, 0xcd, 0x90, - 0x0e, 0x97, 0xce, 0xb0, 0x6d, 0x74, 0xce, 0x99, 0x1a, 0x8d, 0xad, 0x38, 0x86, 0x39, 0x28, 0xaf, - 0x30, 0x85, 0xcf, 0x47, 0x29, 0xbc, 0xcf, 0x84, 0xa8, 0x8a, 0xba, 0x2b, 0xd2, 0x88, 0xa9, 0x2b, - 0x67, 0x93, 0x64, 0xea, 0x62, 0x1d, 0x63, 0xa0, 0xf7, 0x8c, 0x87, 0x58, 0x3b, 0xe9, 0x99, 0xad, - 0x07, 0xe5, 0xd5, 0x8b, 0x5d, 0xec, 0xae, 0xe0, 0xde, 0xa6, 0xcc, 0xd4, 0xc5, 0x3a, 0x41, 0xc2, - 0x76, 0x06, 0x52, 0x67, 0x7a, 0x6f, 0x88, 0x77, 0x93, 0xd9, 0xa4, 0x9c, 0xda, 0x4d, 0x66, 0x33, - 0x72, 0x76, 0x37, 0x99, 0xcd, 0xc9, 0xb0, 0x9b, 0xcc, 0x82, 0x9c, 0x57, 0x9e, 0x85, 0x7c, 0x20, - 0x30, 0xa1, 0x32, 0x64, 0xfa, 0xd8, 0x71, 0xf4, 0x53, 0xcc, 0xe2, 0x58, 0x4e, 0x75, 0xa7, 0x4a, - 0x09, 0x0a, 0xc1, 0x60, 0xa4, 0x7c, 0x22, 0x79, 0x92, 0x34, 0xce, 0x50, 0xc9, 0x33, 0x6c, 0x33, - 0x73, 0x08, 0x49, 0x31, 0x45, 0x4f, 0x41, 0x91, 0xbd, 0x8a, 0xe6, 0xae, 0xd3, 0x60, 0x97, 0x54, - 0x0b, 0x8c, 0x78, 0x5f, 0x30, 0x5d, 0x83, 0xbc, 0xb5, 0x65, 0x79, 0x2c, 0x09, 0xc6, 0x02, 0xd6, - 0x96, 0xe5, 0x32, 0x3c, 0x09, 0x05, 0xfa, 0xde, 0x1e, 0x47, 0x92, 0x6d, 0x92, 0xa7, 0x34, 0xc1, - 0xa2, 0xfc, 0x29, 0x0e, 0xf2, 0x78, 0x00, 0x43, 0xaf, 0x42, 0x92, 0xc6, 0x72, 0x11, 0x96, 0x2b, - 0x1b, 0x3c, 0xd0, 0x6f, 0xb8, 0x81, 0x7e, 0xa3, 0xe9, 0x06, 0xfa, 0xed, 0xec, 0xe7, 0x5f, 0x5e, - 0x8b, 0x7d, 0xf2, 0xd7, 0x6b, 0x92, 0xca, 0x24, 0xd0, 0x15, 0x1a, 0xb6, 0x74, 0x63, 0xa0, 0x19, - 0x6d, 0xf6, 0xc8, 0x39, 0x1a, 0x93, 0x74, 0x63, 0xb0, 0xd3, 0x46, 0x7b, 0x20, 0xb7, 0xcc, 0x81, - 0x83, 0x07, 0xce, 0xd0, 0xd1, 0x78, 0xaa, 0x11, 0xc1, 0x38, 0x14, 0x52, 0x79, 0xc2, 0xab, 0xb9, - 0x9c, 0x87, 0x8c, 0x51, 0x5d, 0x6a, 0x85, 0x09, 0xe8, 0x2e, 0x80, 0x97, 0x8f, 0x9c, 0x72, 0x72, - 0x3d, 0x71, 0x3d, 0xbf, 0xb5, 0x3e, 0xf1, 0xc1, 0xef, 0xbb, 0x2c, 0xc7, 0x56, 0x5b, 0x27, 0x78, - 0x3b, 0x49, 0x1f, 0x57, 0x0d, 0x48, 0xa2, 0x67, 0x60, 0x49, 0xb7, 0x2c, 0xcd, 0x21, 0x3a, 0xc1, - 0xda, 0xc9, 0x39, 0xc1, 0x0e, 0x8b, 0xf3, 0x05, 0xb5, 0xa8, 0x5b, 0xd6, 0x11, 0xa5, 0x6e, 0x53, - 0x22, 0x7a, 0x1a, 0x4a, 0x34, 0xa6, 0x1b, 0x7a, 0x4f, 0xeb, 0x62, 0xe3, 0xb4, 0x4b, 0x58, 0x3c, - 0x4f, 0xa8, 0x45, 0x41, 0x6d, 0x30, 0xa2, 0xd2, 0xf6, 0xbe, 0x38, 0x8b, 0xe7, 0x08, 0x41, 0xb2, - 0xad, 0x13, 0x9d, 0x59, 0xb2, 0xa0, 0xb2, 0x31, 0xa5, 0x59, 0x3a, 0xe9, 0x0a, 0xfb, 0xb0, 0x31, - 0xba, 0x0c, 0x69, 0xa1, 0x36, 0xc1, 0xd4, 0x8a, 0x19, 0x5a, 0x85, 0x94, 0x65, 0x9b, 0x67, 0x98, - 0x7d, 0xba, 0xac, 0xca, 0x27, 0x8a, 0x0a, 0xa5, 0x70, 0xec, 0x47, 0x25, 0x88, 0x93, 0x91, 0xd8, - 0x25, 0x4e, 0x46, 0xe8, 0x25, 0x48, 0x52, 0x43, 0xb2, 0x3d, 0x4a, 0x53, 0xb2, 0x9d, 0x90, 0x6b, - 0x9e, 0x5b, 0x58, 0x65, 0x9c, 0xca, 0x12, 0x14, 0x43, 0x39, 0x41, 0xb9, 0x0c, 0xab, 0xd3, 0x42, - 0xbc, 0xf2, 0x73, 0xc9, 0x5b, 0x08, 0xc5, 0x6a, 0x74, 0x0b, 0xb2, 0x5e, 0x90, 0xe7, 0x9e, 0x73, - 0x65, 0x62, 0x5f, 0x97, 0x59, 0xf5, 0x58, 0xa9, 0xcb, 0xd0, 0x2f, 0xd0, 0xd5, 0x45, 0x4a, 0x2f, - 0xa8, 0x19, 0xdd, 0xb2, 0x1a, 0xba, 0xd3, 0xa5, 0x0e, 0x4e, 0x97, 0xc6, 0x1c, 0x5c, 0xb7, 0x5c, - 0x07, 0x57, 0xde, 0x83, 0x72, 0x54, 0x84, 0x0f, 0x98, 0x54, 0x62, 0x72, 0xae, 0x49, 0x2f, 0x43, - 0xba, 0x63, 0xda, 0x7d, 0x9d, 0xb0, 0xdd, 0x8a, 0xaa, 0x98, 0x51, 0x53, 0xf3, 0x68, 0x9f, 0x60, - 0x64, 0x3e, 0x51, 0x34, 0xb8, 0x12, 0x19, 0xe5, 0xa9, 0x88, 0x31, 0x68, 0x63, 0x6e, 0xf8, 0xa2, - 0xca, 0x27, 0xbe, 0x22, 0xfe, 0x36, 0x7c, 0x42, 0xb7, 0x75, 0x98, 0x31, 0x98, 0xfe, 0x9c, 0x2a, - 0x66, 0xca, 0xa7, 0x09, 0xb8, 0x3c, 0x3d, 0xd6, 0xa3, 0x75, 0x28, 0xf4, 0xf5, 0x91, 0x46, 0x46, - 0xc2, 0x31, 0x25, 0xe6, 0x1a, 0xd0, 0xd7, 0x47, 0xcd, 0x11, 0xf7, 0x4a, 0x19, 0x12, 0x64, 0xe4, - 0x94, 0xe3, 0xeb, 0x89, 0xeb, 0x05, 0x95, 0x0e, 0xd1, 0x31, 0x2c, 0xf7, 0xcc, 0x96, 0xde, 0xd3, - 0x7a, 0xba, 0x43, 0x34, 0x51, 0x04, 0xf0, 0x63, 0xf6, 0xd4, 0xc4, 0xd7, 0xe0, 0x51, 0x1b, 0xb7, - 0xf9, 0x17, 0xa7, 0x21, 0x49, 0x9c, 0x90, 0x25, 0xa6, 0x63, 0x4f, 0x77, 0x9d, 0x01, 0xdd, 0x81, - 0x7c, 0xdf, 0x70, 0x4e, 0x70, 0x57, 0x3f, 0x33, 0x4c, 0x5b, 0x9c, 0xb7, 0x49, 0xb7, 0x7a, 0xd3, - 0xe7, 0x11, 0x9a, 0x82, 0x62, 0x81, 0x4f, 0x92, 0x0a, 0x79, 0xb9, 0x1b, 0x6f, 0xd2, 0x0b, 0xc7, - 0x9b, 0x97, 0x60, 0x75, 0x80, 0x47, 0x44, 0xf3, 0x4f, 0x34, 0x77, 0xa4, 0x0c, 0x33, 0x3d, 0xa2, - 0x6b, 0x5e, 0x0c, 0x70, 0x98, 0x4f, 0x3d, 0xc7, 0xb2, 0xa5, 0x65, 0x3a, 0xd8, 0xd6, 0xf4, 0x76, - 0xdb, 0xc6, 0x8e, 0xc3, 0x0a, 0xac, 0x02, 0x4b, 0x81, 0x8c, 0x5e, 0xe5, 0x64, 0xe5, 0xcf, 0xc1, - 0x4f, 0x13, 0xce, 0x8e, 0xc2, 0xf0, 0x92, 0x6f, 0xf8, 0x23, 0x58, 0x15, 0xf2, 0xed, 0x90, 0xed, - 0x79, 0x95, 0xfa, 0xf8, 0xe4, 0x09, 0x1c, 0xb7, 0x39, 0x72, 0xc5, 0xa3, 0xcd, 0x9e, 0x78, 0x34, - 0xb3, 0x23, 0x48, 0x32, 0xa3, 0x24, 0x79, 0x10, 0xa2, 0xe3, 0x7f, 0xb3, 0x4f, 0x41, 0x23, 0x81, - 0xf3, 0xc1, 0x90, 0x16, 0x4e, 0x8e, 0xf1, 0x10, 0x97, 0x73, 0x3c, 0x12, 0x70, 0xd2, 0x91, 0xf1, - 0x10, 0xa3, 0xff, 0x81, 0x12, 0x0d, 0xae, 0x9a, 0x6d, 0x9a, 0x84, 0xef, 0x0b, 0x4c, 0x53, 0x81, - 0x52, 0x55, 0xd3, 0x24, 0x74, 0x47, 0xe5, 0xa3, 0x04, 0x2c, 0x4f, 0x54, 0x2c, 0x9e, 0x7d, 0xa4, - 0xa9, 0xf6, 0x89, 0x4f, 0xb5, 0x4f, 0x62, 0x61, 0xfb, 0x08, 0x97, 0x49, 0xce, 0x76, 0x99, 0xd4, - 0x77, 0xe8, 0x32, 0xe9, 0x47, 0x73, 0x99, 0x7f, 0xe9, 0xb9, 0xfa, 0x95, 0x04, 0x95, 0xe8, 0x32, - 0x6f, 0xea, 0xe7, 0x78, 0x1e, 0x96, 0xbd, 0x47, 0xf1, 0xd4, 0xf3, 0xf8, 0x2a, 0x7b, 0x0b, 0xae, - 0xb3, 0x44, 0x25, 0xd3, 0xa7, 0xa1, 0x34, 0x56, 0x84, 0xf2, 0x13, 0x51, 0x3c, 0x0b, 0xee, 0xaf, - 0xfc, 0x34, 0xe1, 0x25, 0xb8, 0x50, 0xa5, 0x38, 0xe5, 0xd0, 0xbf, 0x05, 0x2b, 0x6d, 0xdc, 0x32, - 0xda, 0x8f, 0x7a, 0xe6, 0x97, 0x85, 0xf4, 0x7f, 0x8f, 0xfc, 0xa4, 0x97, 0xfc, 0x12, 0x20, 0xab, - 0x62, 0xc7, 0xa2, 0x85, 0x1f, 0xda, 0x86, 0x1c, 0x1e, 0xb5, 0xb0, 0x45, 0xdc, 0x5a, 0x79, 0x7a, - 0x2f, 0xc2, 0xb9, 0xeb, 0x2e, 0x27, 0xed, 0xc4, 0x3d, 0x31, 0x74, 0x53, 0x80, 0x0d, 0xd1, 0xb8, - 0x81, 0x10, 0x0f, 0xa2, 0x0d, 0x2f, 0xbb, 0x68, 0x43, 0x22, 0xb2, 0x91, 0xe6, 0x52, 0x63, 0x70, - 0xc3, 0x4d, 0x01, 0x37, 0x24, 0x67, 0x6c, 0x16, 0xc2, 0x1b, 0x6a, 0x21, 0xbc, 0x21, 0x3d, 0xe3, - 0x35, 0x23, 0x00, 0x87, 0x97, 0x5d, 0xc0, 0x21, 0x33, 0xe3, 0x89, 0xc7, 0x10, 0x87, 0x37, 0x02, - 0x88, 0x43, 0x8e, 0x89, 0xae, 0x47, 0x8a, 0x4e, 0x81, 0x1c, 0x5e, 0xf3, 0x20, 0x87, 0x42, 0x24, - 0x5c, 0x21, 0x84, 0xc7, 0x31, 0x87, 0x83, 0x09, 0xcc, 0x81, 0x63, 0x04, 0xcf, 0x44, 0xaa, 0x98, - 0x01, 0x3a, 0x1c, 0x4c, 0x80, 0x0e, 0xa5, 0x19, 0x0a, 0x67, 0xa0, 0x0e, 0x3f, 0x9c, 0x8e, 0x3a, - 0x44, 0xe3, 0x02, 0xe2, 0x31, 0xe7, 0x83, 0x1d, 0xb4, 0x08, 0xd8, 0x41, 0x8e, 0x6c, 0x91, 0xb9, - 0xfa, 0xb9, 0x71, 0x87, 0xe3, 0x29, 0xb8, 0x03, 0x47, 0x08, 0xae, 0x47, 0x2a, 0x9f, 0x03, 0x78, - 0x38, 0x9e, 0x02, 0x3c, 0xa0, 0x99, 0x6a, 0x67, 0x22, 0x0f, 0x77, 0xc3, 0xc8, 0xc3, 0x4a, 0x44, - 0xf1, 0xea, 0x9f, 0xf6, 0x08, 0xe8, 0xe1, 0x24, 0x0a, 0x7a, 0xe0, 0xf0, 0xc0, 0x0b, 0x91, 0x1a, - 0x17, 0xc0, 0x1e, 0x0e, 0x26, 0xb0, 0x87, 0x4b, 0x33, 0x3c, 0x6d, 0x7e, 0xf0, 0x21, 0x25, 0xa7, - 0x77, 0x93, 0xd9, 0xac, 0x9c, 0xe3, 0xb0, 0xc3, 0x6e, 0x32, 0x9b, 0x97, 0x0b, 0xca, 0x73, 0xb4, - 0x82, 0x19, 0x8b, 0x73, 0xb4, 0xe5, 0xc0, 0xb6, 0x6d, 0xda, 0x02, 0x46, 0xe0, 0x13, 0xe5, 0x3a, - 0x6d, 0x46, 0xfd, 0x98, 0x76, 0x01, 0x50, 0xc1, 0x9a, 0xbf, 0x40, 0x1c, 0x53, 0x7e, 0x27, 0xf9, - 0xb2, 0x0c, 0xaa, 0x08, 0x36, 0xb2, 0x39, 0xd1, 0xc8, 0x06, 0xe0, 0x8b, 0x78, 0x18, 0xbe, 0x98, - 0xd5, 0xb8, 0xa1, 0x1b, 0xb0, 0xcc, 0x12, 0x26, 0x07, 0x39, 0x44, 0x5a, 0x4a, 0xb2, 0xb4, 0xb4, - 0x44, 0x17, 0xb8, 0x75, 0x78, 0x7e, 0x7a, 0x11, 0x56, 0x02, 0xbc, 0x5e, 0xaf, 0xc8, 0xdb, 0x74, - 0xd9, 0xe3, 0xae, 0xf2, 0xa6, 0x51, 0xf9, 0xa3, 0xe4, 0x5b, 0xc8, 0x87, 0x34, 0xa6, 0xa1, 0x0f, - 0xd2, 0x77, 0x84, 0x3e, 0xc4, 0x1f, 0x19, 0x7d, 0x08, 0xf6, 0xbe, 0x89, 0x50, 0xef, 0xab, 0xfc, - 0x43, 0xf2, 0xbf, 0x89, 0x87, 0x25, 0xb4, 0xcc, 0x36, 0x16, 0xcd, 0x26, 0x1b, 0xd3, 0x92, 0xa4, - 0x67, 0x9e, 0x8a, 0x96, 0x92, 0x0e, 0x29, 0x97, 0x97, 0x78, 0x72, 0x22, 0xaf, 0x78, 0x7d, 0x2a, - 0x4f, 0xfc, 0xa2, 0x4f, 0x95, 0x21, 0xf1, 0x00, 0x73, 0x5c, 0xba, 0xa0, 0xd2, 0x21, 0xe5, 0x63, - 0xce, 0x27, 0x12, 0x38, 0x9f, 0xa0, 0x57, 0x21, 0xc7, 0xfe, 0x2a, 0x68, 0xa6, 0xe5, 0x08, 0x2c, - 0x3a, 0x54, 0xda, 0xf0, 0x5f, 0x0b, 0x1b, 0x87, 0x94, 0xe7, 0xc0, 0x72, 0xd4, 0xac, 0x25, 0x46, - 0x81, 0x8a, 0x23, 0x17, 0xaa, 0x38, 0xae, 0x42, 0x8e, 0x3e, 0xbd, 0x63, 0xe9, 0x2d, 0xcc, 0xea, - 0xf4, 0x9c, 0xea, 0x13, 0x94, 0xdf, 0xc6, 0x61, 0x69, 0x2c, 0xd1, 0x4c, 0x7d, 0x77, 0xd7, 0x25, - 0xe3, 0x01, 0x6c, 0x65, 0x3e, 0x7b, 0xac, 0x01, 0x9c, 0xea, 0x8e, 0xf6, 0xa1, 0x3e, 0x20, 0xb8, - 0x2d, 0x8c, 0x12, 0xa0, 0xa0, 0x0a, 0x64, 0xe9, 0x6c, 0xe8, 0xe0, 0xb6, 0x80, 0x79, 0xbc, 0x39, - 0x6a, 0x40, 0x1a, 0x9f, 0xe1, 0x01, 0x71, 0xca, 0x19, 0xf6, 0xd9, 0x2f, 0x4f, 0x76, 0xd5, 0x74, - 0x79, 0xbb, 0x4c, 0x3f, 0xf6, 0x37, 0x5f, 0x5e, 0x93, 0x39, 0xf7, 0x0b, 0x66, 0xdf, 0x20, 0xb8, - 0x6f, 0x91, 0x73, 0x55, 0xc8, 0x87, 0xad, 0x90, 0x1d, 0xb3, 0x02, 0x03, 0x1c, 0x0b, 0x2e, 0x4a, - 0x40, 0x6d, 0x6a, 0x98, 0xb6, 0x41, 0xce, 0xd5, 0x62, 0x1f, 0xf7, 0x2d, 0xd3, 0xec, 0x69, 0xfc, - 0x8c, 0x57, 0xa1, 0x14, 0xce, 0xab, 0xe8, 0x29, 0x28, 0xda, 0x98, 0xe8, 0xc6, 0x40, 0x0b, 0x15, - 0xc1, 0x05, 0x4e, 0xe4, 0x67, 0x6a, 0x37, 0x99, 0x95, 0xe4, 0xf8, 0x6e, 0x32, 0x1b, 0x97, 0x13, - 0xca, 0x21, 0x5c, 0x9a, 0x9a, 0x57, 0xd1, 0x2b, 0x90, 0xf3, 0x53, 0xb2, 0xc4, 0xde, 0xf6, 0x02, - 0x44, 0xc7, 0xe7, 0x55, 0x7e, 0x2f, 0xf9, 0x2a, 0xc3, 0x18, 0x51, 0x1d, 0xd2, 0x36, 0x76, 0x86, - 0x3d, 0x0e, 0xca, 0x94, 0xb6, 0x5e, 0x9c, 0x2f, 0x23, 0x53, 0xea, 0xb0, 0x47, 0x54, 0x21, 0xac, - 0xbc, 0x0b, 0x69, 0x4e, 0x41, 0x79, 0xc8, 0x1c, 0xef, 0xdf, 0xdb, 0x3f, 0x78, 0x7b, 0x5f, 0x8e, - 0x21, 0x80, 0x74, 0xb5, 0x56, 0xab, 0x1f, 0x36, 0x65, 0x09, 0xe5, 0x20, 0x55, 0xdd, 0x3e, 0x50, - 0x9b, 0x72, 0x9c, 0x92, 0xd5, 0xfa, 0x6e, 0xbd, 0xd6, 0x94, 0x13, 0x68, 0x19, 0x8a, 0x7c, 0xac, - 0xdd, 0x3d, 0x50, 0xdf, 0xac, 0x36, 0xe5, 0x64, 0x80, 0x74, 0x54, 0xdf, 0xbf, 0x53, 0x57, 0xe5, - 0x94, 0xf2, 0xbf, 0x70, 0x25, 0x32, 0x87, 0xfb, 0xf8, 0x8e, 0x14, 0xc0, 0x77, 0x94, 0x4f, 0xe3, - 0xb4, 0xa9, 0x89, 0x4a, 0xcc, 0x68, 0x77, 0xec, 0xc5, 0xb7, 0x16, 0xc8, 0xea, 0x63, 0x6f, 0x4f, - 0xfb, 0x18, 0x1b, 0x77, 0x30, 0x69, 0x75, 0x79, 0xa1, 0xc0, 0x23, 0x50, 0x51, 0x2d, 0x0a, 0x2a, - 0x13, 0x72, 0x38, 0xdb, 0xfb, 0xb8, 0x45, 0x34, 0xee, 0x44, 0x0e, 0x6b, 0x26, 0x72, 0x94, 0x8d, - 0x52, 0x8f, 0x38, 0x51, 0x79, 0x6f, 0x21, 0x5b, 0xe6, 0x20, 0xa5, 0xd6, 0x9b, 0xea, 0x3b, 0x72, - 0x02, 0x21, 0x28, 0xb1, 0xa1, 0x76, 0xb4, 0x5f, 0x3d, 0x3c, 0x6a, 0x1c, 0x50, 0x5b, 0xae, 0xc0, - 0x92, 0x6b, 0x4b, 0x97, 0x98, 0x52, 0x6c, 0x78, 0x2c, 0xa2, 0xaa, 0x98, 0xd2, 0x52, 0x8d, 0x75, - 0xfa, 0xf1, 0x39, 0x3a, 0xfd, 0xc4, 0x94, 0x4e, 0xff, 0xd7, 0x52, 0x70, 0xd3, 0x70, 0x81, 0x71, - 0x00, 0x69, 0x87, 0xe8, 0x64, 0xe8, 0x88, 0x6f, 0xf1, 0xca, 0xbc, 0xd5, 0xca, 0x86, 0x3b, 0x38, - 0x62, 0xe2, 0xaa, 0x50, 0xa3, 0xdc, 0x82, 0x52, 0x78, 0x25, 0xda, 0x94, 0xbe, 0x2f, 0xc6, 0x95, - 0xdb, 0x80, 0x26, 0x8b, 0x98, 0x29, 0x5d, 0xaa, 0x34, 0xad, 0x4b, 0xfd, 0x8d, 0x04, 0x8f, 0x5f, - 0x50, 0xb0, 0xa0, 0xb7, 0xc6, 0x5e, 0xf2, 0xb5, 0x45, 0xca, 0x9d, 0x0d, 0x4e, 0x1b, 0x7b, 0xcd, - 0x9b, 0x50, 0x08, 0xd2, 0xe7, 0x7b, 0xc9, 0x6f, 0xe2, 0x7e, 0x2c, 0x08, 0xb7, 0xd3, 0x7e, 0x24, - 0x95, 0xbe, 0x65, 0x24, 0x7d, 0x1d, 0x80, 0x8c, 0x34, 0x7e, 0x3a, 0xdc, 0x74, 0xfc, 0xc4, 0x14, - 0xb4, 0x13, 0xb7, 0x9a, 0x23, 0x71, 0x96, 0x72, 0x44, 0x8c, 0x1c, 0x74, 0x14, 0xc4, 0x16, 0x86, - 0x2c, 0x55, 0x3b, 0xa2, 0xef, 0x9e, 0x37, 0xa7, 0xfb, 0x18, 0x04, 0x27, 0x3b, 0xe8, 0x1d, 0x78, - 0x6c, 0xac, 0xde, 0xf0, 0x54, 0x27, 0xe7, 0x2d, 0x3b, 0x2e, 0x85, 0xcb, 0x0e, 0x57, 0x75, 0xb0, - 0x68, 0x48, 0x85, 0x8b, 0x86, 0x77, 0x00, 0x7c, 0x8c, 0x81, 0x06, 0x2a, 0xdb, 0x1c, 0x0e, 0xda, - 0xcc, 0x03, 0x52, 0x2a, 0x9f, 0xa0, 0x5b, 0x90, 0xa2, 0x9e, 0xe4, 0xda, 0x69, 0x32, 0xa2, 0x53, - 0x4f, 0x08, 0x60, 0x14, 0x9c, 0x5b, 0x31, 0x00, 0x4d, 0xc2, 0xc5, 0x11, 0x5b, 0xbc, 0x11, 0xde, - 0xe2, 0xc9, 0x48, 0xe0, 0x79, 0xfa, 0x56, 0x0f, 0x21, 0xc5, 0xbe, 0x3c, 0xcd, 0xdd, 0xec, 0x2f, - 0x86, 0x28, 0x3a, 0xe9, 0x18, 0xfd, 0x08, 0x40, 0x27, 0xc4, 0x36, 0x4e, 0x86, 0xfe, 0x06, 0xd7, - 0xa6, 0x7b, 0x4e, 0xd5, 0xe5, 0xdb, 0xbe, 0x2a, 0x5c, 0x68, 0xd5, 0x17, 0x0d, 0xb8, 0x51, 0x40, - 0xa1, 0xb2, 0x0f, 0xa5, 0xb0, 0xac, 0x5b, 0x26, 0xf1, 0x67, 0x08, 0x97, 0x49, 0xbc, 0xea, 0x15, - 0x65, 0x92, 0x57, 0x64, 0x25, 0xf8, 0xaf, 0x1a, 0x36, 0x51, 0x7e, 0x1c, 0x87, 0x42, 0xd0, 0xf1, - 0xfe, 0xf3, 0x2a, 0x19, 0xe5, 0x67, 0x12, 0x64, 0xbd, 0xd7, 0x0f, 0xff, 0x95, 0x09, 0xfd, 0xe8, - 0xe2, 0xd6, 0x8b, 0x07, 0x7f, 0xa5, 0xf0, 0xdf, 0x5a, 0x09, 0xef, 0xb7, 0xd6, 0x6d, 0x2f, 0x8b, - 0x46, 0xe1, 0x2a, 0x41, 0x5b, 0x0b, 0xaf, 0x72, 0x8b, 0x86, 0xdb, 0x90, 0xf3, 0x4e, 0x2f, 0xed, - 0x5d, 0x5c, 0xfc, 0x49, 0x12, 0x67, 0x48, 0xa0, 0x87, 0xab, 0x90, 0xb2, 0xcc, 0x0f, 0xc5, 0x7f, - 0x9a, 0x84, 0xca, 0x27, 0x4a, 0x1b, 0x96, 0xc6, 0x8e, 0x3e, 0xba, 0x0d, 0x19, 0x6b, 0x78, 0xa2, - 0xb9, 0xce, 0x31, 0x86, 0xd2, 0xb9, 0x55, 0xf1, 0xf0, 0xa4, 0x67, 0xb4, 0xee, 0xe1, 0x73, 0xf7, - 0x61, 0xac, 0xe1, 0xc9, 0x3d, 0xee, 0x43, 0x7c, 0x97, 0x78, 0x70, 0x97, 0x5f, 0x48, 0x90, 0x75, - 0xcf, 0x04, 0xfa, 0x7f, 0xc8, 0x79, 0x61, 0xc5, 0xfb, 0x15, 0x1b, 0x19, 0x8f, 0x84, 0x7e, 0x5f, - 0x04, 0x55, 0xdd, 0x7f, 0xc8, 0x46, 0x5b, 0xeb, 0xf4, 0x74, 0xee, 0x4b, 0xa5, 0xb0, 0xcd, 0x78, - 0xe0, 0x61, 0xf1, 0x78, 0xe7, 0xce, 0xdd, 0x9e, 0x7e, 0xaa, 0xe6, 0x99, 0xcc, 0x4e, 0x9b, 0x4e, - 0x44, 0x81, 0xf8, 0x77, 0x09, 0xe4, 0xf1, 0x13, 0xfb, 0xad, 0x9f, 0x6e, 0x32, 0xcd, 0x25, 0xa6, - 0xa4, 0x39, 0xb4, 0x09, 0x2b, 0x1e, 0x87, 0xe6, 0x18, 0xa7, 0x03, 0x9d, 0x0c, 0x6d, 0x2c, 0x70, - 0x4d, 0xe4, 0x2d, 0x1d, 0xb9, 0x2b, 0x93, 0x6f, 0x9d, 0x7a, 0xc4, 0xb7, 0xfe, 0x28, 0x0e, 0xf9, - 0x00, 0xca, 0x8a, 0xfe, 0x2f, 0x10, 0x8c, 0x4a, 0x53, 0x32, 0x43, 0x80, 0xd7, 0xff, 0xad, 0x1a, - 0x36, 0x53, 0x7c, 0x71, 0x33, 0x45, 0x61, 0xd9, 0x2e, 0x68, 0x9b, 0x5c, 0x18, 0xb4, 0x7d, 0x01, - 0x10, 0x31, 0x89, 0xde, 0xd3, 0xce, 0x4c, 0x62, 0x0c, 0x4e, 0x35, 0xee, 0x86, 0x3c, 0x74, 0xc8, - 0x6c, 0xe5, 0x3e, 0x5b, 0x38, 0x64, 0x1e, 0xf9, 0x13, 0x09, 0xb2, 0x5e, 0xf5, 0xbe, 0xe8, 0x2f, - 0xd5, 0xcb, 0x90, 0x16, 0x05, 0x2a, 0xff, 0xa7, 0x2a, 0x66, 0x53, 0xd1, 0xe9, 0x0a, 0x64, 0xfb, - 0x98, 0xe8, 0x2c, 0x0e, 0xf2, 0xac, 0xe6, 0xcd, 0x6f, 0xbc, 0x06, 0xf9, 0xc0, 0x0f, 0x6b, 0x1a, - 0x1a, 0xf7, 0xeb, 0x6f, 0xcb, 0xb1, 0x4a, 0xe6, 0xe3, 0xcf, 0xd6, 0x13, 0xfb, 0xf8, 0x43, 0x7a, - 0x9a, 0xd5, 0x7a, 0xad, 0x51, 0xaf, 0xdd, 0x93, 0xa5, 0x4a, 0xfe, 0xe3, 0xcf, 0xd6, 0x33, 0x2a, - 0x66, 0xc0, 0xe4, 0x8d, 0x7b, 0xb0, 0x34, 0xf6, 0x61, 0xc2, 0x65, 0x0b, 0x82, 0xd2, 0x9d, 0xe3, - 0xc3, 0xbd, 0x9d, 0x5a, 0xb5, 0x59, 0xd7, 0xee, 0x1f, 0x34, 0xeb, 0xb2, 0x84, 0x1e, 0x83, 0x95, - 0xbd, 0x9d, 0xef, 0x35, 0x9a, 0x5a, 0x6d, 0x6f, 0xa7, 0xbe, 0xdf, 0xd4, 0xaa, 0xcd, 0x66, 0xb5, - 0x76, 0x4f, 0x8e, 0x6f, 0x7d, 0x96, 0x87, 0x64, 0x75, 0xbb, 0xb6, 0x83, 0x6a, 0x90, 0x64, 0x88, - 0xca, 0x85, 0x37, 0xd6, 0x2a, 0x17, 0x43, 0xcc, 0xe8, 0x2e, 0xa4, 0x18, 0xd8, 0x82, 0x2e, 0xbe, - 0xc2, 0x56, 0x99, 0x81, 0x39, 0xd3, 0x87, 0x61, 0x27, 0xf2, 0xc2, 0x3b, 0x6d, 0x95, 0x8b, 0x21, - 0x68, 0xb4, 0x07, 0x19, 0xb7, 0xd7, 0x9e, 0x75, 0xd1, 0xac, 0x32, 0x13, 0x17, 0xa6, 0xaf, 0xc6, - 0x31, 0x8b, 0x8b, 0xaf, 0xbb, 0x55, 0x66, 0x80, 0xd3, 0x68, 0x07, 0xd2, 0xa2, 0xab, 0x9d, 0x71, - 0x83, 0xad, 0x32, 0x0b, 0x6e, 0x46, 0x2a, 0xe4, 0x7c, 0x34, 0x68, 0xf6, 0x25, 0xbe, 0xca, 0x1c, - 0xb8, 0x3b, 0x7a, 0x17, 0x8a, 0xe1, 0x8e, 0x79, 0xbe, 0x5b, 0x72, 0x95, 0x39, 0x81, 0x6d, 0xaa, - 0x3f, 0xdc, 0x3e, 0xcf, 0x77, 0x6b, 0xae, 0x32, 0x27, 0xce, 0x8d, 0xde, 0x87, 0xe5, 0xc9, 0xf6, - 0x76, 0xfe, 0x4b, 0x74, 0x95, 0x05, 0x90, 0x6f, 0xd4, 0x07, 0x34, 0xa5, 0x2d, 0x5e, 0xe0, 0x4e, - 0x5d, 0x65, 0x11, 0x20, 0x1c, 0xb5, 0x61, 0x69, 0xbc, 0xd7, 0x9c, 0xf7, 0x8e, 0x5d, 0x65, 0x6e, - 0x50, 0x9c, 0xef, 0x12, 0x6e, 0x2e, 0xe7, 0xbd, 0x73, 0x57, 0x99, 0x1b, 0x23, 0x47, 0xc7, 0x00, - 0x81, 0xfe, 0x70, 0x8e, 0x3b, 0x78, 0x95, 0x79, 0xd0, 0x72, 0x64, 0xc1, 0xca, 0xb4, 0xc6, 0x71, - 0x91, 0x2b, 0x79, 0x95, 0x85, 0x40, 0x74, 0xea, 0xcf, 0xe1, 0x16, 0x70, 0xbe, 0x2b, 0x7a, 0x95, - 0x39, 0xd1, 0xf4, 0xed, 0xea, 0xe7, 0x5f, 0xad, 0x49, 0x5f, 0x7c, 0xb5, 0x26, 0xfd, 0xed, 0xab, - 0x35, 0xe9, 0x93, 0xaf, 0xd7, 0x62, 0x5f, 0x7c, 0xbd, 0x16, 0xfb, 0xcb, 0xd7, 0x6b, 0xb1, 0xef, - 0x3f, 0x7b, 0x6a, 0x90, 0xee, 0xf0, 0x64, 0xa3, 0x65, 0xf6, 0x37, 0x5b, 0x66, 0x1f, 0x93, 0x93, - 0x0e, 0xf1, 0x07, 0xfe, 0x4d, 0xeb, 0x93, 0x34, 0xcb, 0xa0, 0x37, 0xff, 0x19, 0x00, 0x00, 0xff, - 0xff, 0xc8, 0x5b, 0x8f, 0x7e, 0x89, 0x2d, 0x00, 0x00, + 0xd5, 0x57, 0x4b, 0xad, 0xd7, 0xd1, 0xc3, 0xed, 0x6b, 0xcf, 0xa0, 0x11, 0x83, 0xc7, 0x34, 0x1f, + 0x30, 0x0c, 0x60, 0xf3, 0x79, 0xbe, 0xe1, 0x51, 0x03, 0x5f, 0x95, 0xac, 0x91, 0x23, 0x7b, 0x06, + 0xdb, 0xb4, 0xe5, 0xa1, 0xc8, 0x83, 0xa6, 0x2d, 0x5d, 0x59, 0xcd, 0x48, 0xea, 0xa6, 0xfb, 0xca, + 0xd8, 0xb3, 0x4a, 0x85, 0x64, 0x11, 0x56, 0x54, 0x25, 0x0b, 0x16, 0x61, 0x91, 0x45, 0xfe, 0x87, + 0xac, 0x92, 0x4d, 0x16, 0x2c, 0x52, 0x15, 0x96, 0x59, 0x91, 0x14, 0xec, 0xd8, 0x66, 0x91, 0x45, + 0x36, 0xa9, 0xfb, 0xe8, 0x97, 0xa4, 0xb6, 0xe4, 0x81, 0x2c, 0x52, 0xc9, 0xae, 0xef, 0xb9, 0xe7, + 0x9c, 0xdb, 0x7d, 0xee, 0xb9, 0xe7, 0xf1, 0xeb, 0x0b, 0x8f, 0x13, 0x3c, 0xec, 0x60, 0x67, 0x60, + 0x0e, 0xc9, 0xba, 0x71, 0xd4, 0x36, 0xd7, 0xc9, 0x99, 0x8d, 0xdd, 0x35, 0xdb, 0xb1, 0x88, 0x85, + 0x16, 0x82, 0xc9, 0x35, 0x3a, 0x59, 0x7d, 0x22, 0xc4, 0xdd, 0x76, 0xce, 0x6c, 0x62, 0xad, 0xdb, + 0x8e, 0x65, 0x75, 0x39, 0x7f, 0xf5, 0xea, 0xe4, 0xf4, 0x03, 0x7c, 0x26, 0xb4, 0x45, 0x84, 0xd9, + 0x2a, 0xeb, 0xb6, 0xe1, 0x18, 0x03, 0x6f, 0x7a, 0x75, 0x62, 0xfa, 0xc4, 0xe8, 0x9b, 0x1d, 0x83, + 0x58, 0x8e, 0xe0, 0xb8, 0x76, 0x6c, 0x59, 0xc7, 0x7d, 0xbc, 0xce, 0x46, 0x47, 0xa3, 0xee, 0x3a, + 0x31, 0x07, 0xd8, 0x25, 0xc6, 0xc0, 0x16, 0x0c, 0xcb, 0xc7, 0xd6, 0xb1, 0xc5, 0x1e, 0xd7, 0xe9, + 0x13, 0xa7, 0xaa, 0xbf, 0xcf, 0x43, 0x56, 0xc3, 0x1f, 0x8c, 0xb0, 0x4b, 0xd0, 0x06, 0xc8, 0xb8, + 0xdd, 0xb3, 0x2a, 0xd2, 0xaa, 0x74, 0xbd, 0xb0, 0x71, 0x75, 0x6d, 0xec, 0x03, 0xd7, 0x04, 0x5f, + 0xa3, 0xdd, 0xb3, 0x9a, 0x09, 0x8d, 0xf1, 0xa2, 0x5b, 0x90, 0xee, 0xf6, 0x47, 0x6e, 0xaf, 0x92, + 0x64, 0x42, 0x4f, 0xc4, 0x09, 0x6d, 0x51, 0xa6, 0x66, 0x42, 0xe3, 0xdc, 0x74, 0x29, 0x73, 0xd8, + 0xb5, 0x2a, 0xa9, 0xf3, 0x97, 0xda, 0x1e, 0x76, 0xd9, 0x52, 0x94, 0x17, 0x6d, 0x02, 0x98, 0x43, + 0x93, 0xe8, 0xed, 0x9e, 0x61, 0x0e, 0x2b, 0x69, 0x26, 0xf9, 0x64, 0xbc, 0xa4, 0x49, 0xea, 0x94, + 0xb1, 0x99, 0xd0, 0xf2, 0xa6, 0x37, 0xa0, 0xaf, 0xfb, 0xc1, 0x08, 0x3b, 0x67, 0x95, 0xcc, 0xf9, + 0xaf, 0xfb, 0x16, 0x65, 0xa2, 0xaf, 0xcb, 0xb8, 0xd1, 0xeb, 0x90, 0x6b, 0xf7, 0x70, 0xfb, 0x81, + 0x4e, 0x4e, 0x2b, 0x39, 0x26, 0x79, 0x2d, 0x4e, 0xb2, 0x4e, 0xf9, 0x5a, 0xa7, 0xcd, 0x84, 0x96, + 0x6d, 0xf3, 0x47, 0xf4, 0x2a, 0x64, 0xda, 0xd6, 0x60, 0x60, 0x92, 0x4a, 0x81, 0xc9, 0xae, 0xc4, + 0xca, 0x32, 0xae, 0x66, 0x42, 0x13, 0xfc, 0x68, 0x17, 0xca, 0x7d, 0xd3, 0x25, 0xba, 0x3b, 0x34, + 0x6c, 0xb7, 0x67, 0x11, 0xb7, 0x52, 0x64, 0x1a, 0x9e, 0x8e, 0xd3, 0x70, 0xcf, 0x74, 0xc9, 0x81, + 0xc7, 0xdc, 0x4c, 0x68, 0xa5, 0x7e, 0x98, 0x40, 0xf5, 0x59, 0xdd, 0x2e, 0x76, 0x7c, 0x85, 0x95, + 0xd2, 0xf9, 0xfa, 0xf6, 0x28, 0xb7, 0x27, 0x4f, 0xf5, 0x59, 0x61, 0x02, 0xfa, 0x01, 0x2c, 0xf5, + 0x2d, 0xa3, 0xe3, 0xab, 0xd3, 0xdb, 0xbd, 0xd1, 0xf0, 0x41, 0xa5, 0xcc, 0x94, 0x3e, 0x17, 0xfb, + 0x92, 0x96, 0xd1, 0xf1, 0x54, 0xd4, 0xa9, 0x40, 0x33, 0xa1, 0x2d, 0xf6, 0xc7, 0x89, 0xe8, 0x5d, + 0x58, 0x36, 0x6c, 0xbb, 0x7f, 0x36, 0xae, 0x7d, 0x81, 0x69, 0xbf, 0x11, 0xa7, 0xbd, 0x46, 0x65, + 0xc6, 0xd5, 0x23, 0x63, 0x82, 0x8a, 0x5a, 0xa0, 0xd8, 0x0e, 0xb6, 0x0d, 0x07, 0xeb, 0xb6, 0x63, + 0xd9, 0x96, 0x6b, 0xf4, 0x2b, 0x0a, 0xd3, 0xfd, 0x6c, 0x9c, 0xee, 0x7d, 0xce, 0xbf, 0x2f, 0xd8, + 0x9b, 0x09, 0x6d, 0xc1, 0x8e, 0x92, 0xb8, 0x56, 0xab, 0x8d, 0x5d, 0x37, 0xd0, 0xba, 0x38, 0x4b, + 0x2b, 0xe3, 0x8f, 0x6a, 0x8d, 0x90, 0x50, 0x03, 0x0a, 0xf8, 0x94, 0x8a, 0xeb, 0x27, 0x16, 0xc1, + 0x15, 0xc4, 0x14, 0xaa, 0xb1, 0x27, 0x94, 0xb1, 0xde, 0xb7, 0x08, 0x6e, 0x26, 0x34, 0xc0, 0xfe, + 0x08, 0x19, 0x70, 0xe9, 0x04, 0x3b, 0x66, 0xf7, 0x8c, 0xa9, 0xd1, 0xd9, 0x8c, 0x6b, 0x5a, 0xc3, + 0xca, 0x12, 0x53, 0xf8, 0x7c, 0x9c, 0xc2, 0xfb, 0x4c, 0x88, 0xaa, 0x68, 0x78, 0x22, 0xcd, 0x84, + 0xb6, 0x74, 0x32, 0x49, 0xa6, 0x2e, 0xd6, 0x35, 0x87, 0x46, 0xdf, 0x7c, 0x88, 0xf5, 0xa3, 0xbe, + 0xd5, 0x7e, 0x50, 0x59, 0x3e, 0xdf, 0xc5, 0xb6, 0x04, 0xf7, 0x26, 0x65, 0xa6, 0x2e, 0xd6, 0x0d, + 0x13, 0x36, 0xb3, 0x90, 0x3e, 0x31, 0xfa, 0x23, 0xbc, 0x23, 0xe7, 0x64, 0x25, 0xbd, 0x23, 0xe7, + 0xb2, 0x4a, 0x6e, 0x47, 0xce, 0xe5, 0x15, 0xd8, 0x91, 0x73, 0xa0, 0x14, 0xd4, 0x67, 0xa1, 0x10, + 0x0a, 0x4c, 0xa8, 0x02, 0xd9, 0x01, 0x76, 0x5d, 0xe3, 0x18, 0xb3, 0x38, 0x96, 0xd7, 0xbc, 0xa1, + 0x5a, 0x86, 0x62, 0x38, 0x18, 0xa9, 0x9f, 0x48, 0xbe, 0x24, 0x8d, 0x33, 0x54, 0xf2, 0x04, 0x3b, + 0xcc, 0x1c, 0x42, 0x52, 0x0c, 0xd1, 0x53, 0x50, 0x62, 0x9f, 0xa2, 0x7b, 0xf3, 0x34, 0xd8, 0xc9, + 0x5a, 0x91, 0x11, 0xef, 0x0b, 0xa6, 0x6b, 0x50, 0xb0, 0x37, 0x6c, 0x9f, 0x25, 0xc5, 0x58, 0xc0, + 0xde, 0xb0, 0x3d, 0x86, 0x27, 0xa1, 0x48, 0xbf, 0xdb, 0xe7, 0x90, 0xd9, 0x22, 0x05, 0x4a, 0x13, + 0x2c, 0xea, 0x1f, 0x93, 0xa0, 0x8c, 0x07, 0x30, 0xf4, 0x2a, 0xc8, 0x34, 0x96, 0x8b, 0xb0, 0x5c, + 0x5d, 0xe3, 0x81, 0x7e, 0xcd, 0x0b, 0xf4, 0x6b, 0x2d, 0x2f, 0xd0, 0x6f, 0xe6, 0x3e, 0xff, 0xf2, + 0x5a, 0xe2, 0x93, 0xbf, 0x5c, 0x93, 0x34, 0x26, 0x81, 0xae, 0xd0, 0xb0, 0x65, 0x98, 0x43, 0xdd, + 0xec, 0xb0, 0x57, 0xce, 0xd3, 0x98, 0x64, 0x98, 0xc3, 0xed, 0x0e, 0xba, 0x07, 0x4a, 0xdb, 0x1a, + 0xba, 0x78, 0xe8, 0x8e, 0x5c, 0x9d, 0xa7, 0x1a, 0x11, 0x8c, 0x23, 0x21, 0x95, 0x27, 0xbc, 0xba, + 0xc7, 0xb9, 0xcf, 0x18, 0xb5, 0x85, 0x76, 0x94, 0x80, 0xb6, 0x00, 0xfc, 0x7c, 0xe4, 0x56, 0xe4, + 0xd5, 0xd4, 0xf5, 0xc2, 0xc6, 0xea, 0xc4, 0x86, 0xdf, 0xf7, 0x58, 0x0e, 0xed, 0x8e, 0x41, 0xf0, + 0xa6, 0x4c, 0x5f, 0x57, 0x0b, 0x49, 0xa2, 0x67, 0x60, 0xc1, 0xb0, 0x6d, 0xdd, 0x25, 0x06, 0xc1, + 0xfa, 0xd1, 0x19, 0xc1, 0x2e, 0x8b, 0xf3, 0x45, 0xad, 0x64, 0xd8, 0xf6, 0x01, 0xa5, 0x6e, 0x52, + 0x22, 0x7a, 0x1a, 0xca, 0x34, 0xa6, 0x9b, 0x46, 0x5f, 0xef, 0x61, 0xf3, 0xb8, 0x47, 0x58, 0x3c, + 0x4f, 0x69, 0x25, 0x41, 0x6d, 0x32, 0xa2, 0xda, 0xf1, 0x77, 0x9c, 0xc5, 0x73, 0x84, 0x40, 0xee, + 0x18, 0xc4, 0x60, 0x96, 0x2c, 0x6a, 0xec, 0x99, 0xd2, 0x6c, 0x83, 0xf4, 0x84, 0x7d, 0xd8, 0x33, + 0xba, 0x0c, 0x19, 0xa1, 0x36, 0xc5, 0xd4, 0x8a, 0x11, 0x5a, 0x86, 0xb4, 0xed, 0x58, 0x27, 0x98, + 0x6d, 0x5d, 0x4e, 0xe3, 0x03, 0x55, 0x83, 0x72, 0x34, 0xf6, 0xa3, 0x32, 0x24, 0xc9, 0xa9, 0x58, + 0x25, 0x49, 0x4e, 0xd1, 0x4b, 0x20, 0x53, 0x43, 0xb2, 0x35, 0xca, 0x53, 0xb2, 0x9d, 0x90, 0x6b, + 0x9d, 0xd9, 0x58, 0x63, 0x9c, 0xea, 0x02, 0x94, 0x22, 0x39, 0x41, 0xbd, 0x0c, 0xcb, 0xd3, 0x42, + 0xbc, 0xfa, 0x73, 0xc9, 0x9f, 0x88, 0xc4, 0x6a, 0x74, 0x0b, 0x72, 0x7e, 0x90, 0xe7, 0x9e, 0x73, + 0x65, 0x62, 0x5d, 0x8f, 0x59, 0xf3, 0x59, 0xa9, 0xcb, 0xd0, 0x1d, 0xe8, 0x19, 0x22, 0xa5, 0x17, + 0xb5, 0xac, 0x61, 0xdb, 0x4d, 0xc3, 0xed, 0x51, 0x07, 0xa7, 0x53, 0x63, 0x0e, 0x6e, 0xd8, 0x9e, + 0x83, 0xab, 0xef, 0x41, 0x25, 0x2e, 0xc2, 0x87, 0x4c, 0x2a, 0x31, 0x39, 0xcf, 0xa4, 0x97, 0x21, + 0xd3, 0xb5, 0x9c, 0x81, 0x41, 0xd8, 0x6a, 0x25, 0x4d, 0x8c, 0xa8, 0xa9, 0x79, 0xb4, 0x4f, 0x31, + 0x32, 0x1f, 0xa8, 0x3a, 0x5c, 0x89, 0x8d, 0xf2, 0x54, 0xc4, 0x1c, 0x76, 0x30, 0x37, 0x7c, 0x49, + 0xe3, 0x83, 0x40, 0x11, 0xff, 0x1a, 0x3e, 0xa0, 0xcb, 0xba, 0xcc, 0x18, 0x4c, 0x7f, 0x5e, 0x13, + 0x23, 0xf5, 0xd3, 0x14, 0x5c, 0x9e, 0x1e, 0xeb, 0xd1, 0x2a, 0x14, 0x07, 0xc6, 0xa9, 0x4e, 0x4e, + 0x85, 0x63, 0x4a, 0xcc, 0x35, 0x60, 0x60, 0x9c, 0xb6, 0x4e, 0xb9, 0x57, 0x2a, 0x90, 0x22, 0xa7, + 0x6e, 0x25, 0xb9, 0x9a, 0xba, 0x5e, 0xd4, 0xe8, 0x23, 0x3a, 0x84, 0xc5, 0xbe, 0xd5, 0x36, 0xfa, + 0x7a, 0xdf, 0x70, 0x89, 0x2e, 0x8a, 0x00, 0x7e, 0xcc, 0x9e, 0x9a, 0xd8, 0x0d, 0x1e, 0xb5, 0x71, + 0x87, 0xef, 0x38, 0x0d, 0x49, 0xe2, 0x84, 0x2c, 0x30, 0x1d, 0xf7, 0x0c, 0xcf, 0x19, 0xd0, 0x1d, + 0x28, 0x0c, 0x4c, 0xf7, 0x08, 0xf7, 0x8c, 0x13, 0xd3, 0x72, 0xc4, 0x79, 0x9b, 0x74, 0xab, 0x37, + 0x03, 0x1e, 0xa1, 0x29, 0x2c, 0x16, 0xda, 0x92, 0x74, 0xc4, 0xcb, 0xbd, 0x78, 0x93, 0xb9, 0x70, + 0xbc, 0x79, 0x09, 0x96, 0x87, 0xf8, 0x94, 0xe8, 0xc1, 0x89, 0xe6, 0x8e, 0x94, 0x65, 0xa6, 0x47, + 0x74, 0xce, 0x8f, 0x01, 0x2e, 0xf3, 0xa9, 0xe7, 0x58, 0xb6, 0xb4, 0x2d, 0x17, 0x3b, 0xba, 0xd1, + 0xe9, 0x38, 0xd8, 0x75, 0x59, 0x81, 0x55, 0x64, 0x29, 0x90, 0xd1, 0x6b, 0x9c, 0xac, 0xfe, 0x29, + 0xbc, 0x35, 0xd1, 0xec, 0x28, 0x0c, 0x2f, 0x05, 0x86, 0x3f, 0x80, 0x65, 0x21, 0xdf, 0x89, 0xd8, + 0x9e, 0x57, 0xa9, 0x8f, 0x4f, 0x9e, 0xc0, 0x71, 0x9b, 0x23, 0x4f, 0x3c, 0xde, 0xec, 0xa9, 0x47, + 0x33, 0x3b, 0x02, 0x99, 0x19, 0x45, 0xe6, 0x41, 0x88, 0x3e, 0xff, 0x9b, 0x6d, 0x05, 0x8d, 0x04, + 0xee, 0x07, 0x23, 0x5a, 0x38, 0xb9, 0xe6, 0x43, 0x5c, 0xc9, 0xf3, 0x48, 0xc0, 0x49, 0x07, 0xe6, + 0x43, 0x8c, 0xfe, 0x07, 0xca, 0x34, 0xb8, 0xea, 0x8e, 0x65, 0x11, 0xbe, 0x2e, 0x30, 0x4d, 0x45, + 0x4a, 0xd5, 0x2c, 0x8b, 0xd0, 0x15, 0xd5, 0x8f, 0x52, 0xb0, 0x38, 0x51, 0xb1, 0xf8, 0xf6, 0x91, + 0xa6, 0xda, 0x27, 0x39, 0xd5, 0x3e, 0xa9, 0x0b, 0xdb, 0x47, 0xb8, 0x8c, 0x3c, 0xdb, 0x65, 0xd2, + 0xdf, 0xa1, 0xcb, 0x64, 0x1e, 0xcd, 0x65, 0xfe, 0xa5, 0xe7, 0xea, 0x57, 0x12, 0x54, 0xe3, 0xcb, + 0xbc, 0xa9, 0xdb, 0xf1, 0x3c, 0x2c, 0xfa, 0xaf, 0xe2, 0xab, 0xe7, 0xf1, 0x55, 0xf1, 0x27, 0x3c, + 0x67, 0x89, 0x4b, 0xa6, 0x4f, 0x43, 0x79, 0xac, 0x08, 0xe5, 0x27, 0xa2, 0x74, 0x12, 0x5e, 0x5f, + 0xfd, 0x69, 0xca, 0x4f, 0x70, 0x91, 0x4a, 0x71, 0xca, 0xa1, 0x7f, 0x0b, 0x96, 0x3a, 0xb8, 0x6d, + 0x76, 0x1e, 0xf5, 0xcc, 0x2f, 0x0a, 0xe9, 0xff, 0x1e, 0xf9, 0x49, 0x2f, 0xf9, 0x25, 0x40, 0x4e, + 0xc3, 0xae, 0x4d, 0x0b, 0x3f, 0xb4, 0x09, 0x79, 0x7c, 0xda, 0xc6, 0x36, 0xf1, 0x6a, 0xe5, 0xe9, + 0xbd, 0x08, 0xe7, 0x6e, 0x78, 0x9c, 0xb4, 0x13, 0xf7, 0xc5, 0xd0, 0x4d, 0x01, 0x36, 0xc4, 0xe3, + 0x06, 0x42, 0x3c, 0x8c, 0x36, 0xbc, 0xec, 0xa1, 0x0d, 0xa9, 0xd8, 0x46, 0x9a, 0x4b, 0x8d, 0xc1, + 0x0d, 0x37, 0x05, 0xdc, 0x20, 0xcf, 0x58, 0x2c, 0x82, 0x37, 0xd4, 0x23, 0x78, 0x43, 0x66, 0xc6, + 0x67, 0xc6, 0x00, 0x0e, 0x2f, 0x7b, 0x80, 0x43, 0x76, 0xc6, 0x1b, 0x8f, 0x21, 0x0e, 0x6f, 0x84, + 0x10, 0x87, 0x3c, 0x13, 0x5d, 0x8d, 0x15, 0x9d, 0x02, 0x39, 0xbc, 0xe6, 0x43, 0x0e, 0xc5, 0x58, + 0xb8, 0x42, 0x08, 0x8f, 0x63, 0x0e, 0x7b, 0x13, 0x98, 0x03, 0xc7, 0x08, 0x9e, 0x89, 0x55, 0x31, + 0x03, 0x74, 0xd8, 0x9b, 0x00, 0x1d, 0xca, 0x33, 0x14, 0xce, 0x40, 0x1d, 0x7e, 0x38, 0x1d, 0x75, + 0x88, 0xc7, 0x05, 0xc4, 0x6b, 0xce, 0x07, 0x3b, 0xe8, 0x31, 0xb0, 0x83, 0x12, 0xdb, 0x22, 0x73, + 0xf5, 0x73, 0xe3, 0x0e, 0x87, 0x53, 0x70, 0x07, 0x8e, 0x10, 0x5c, 0x8f, 0x55, 0x3e, 0x07, 0xf0, + 0x70, 0x38, 0x05, 0x78, 0x40, 0x33, 0xd5, 0xce, 0x44, 0x1e, 0xb6, 0xa2, 0xc8, 0xc3, 0x52, 0x4c, + 0xf1, 0x1a, 0x9c, 0xf6, 0x18, 0xe8, 0xe1, 0x28, 0x0e, 0x7a, 0xe0, 0xf0, 0xc0, 0x0b, 0xb1, 0x1a, + 0x2f, 0x80, 0x3d, 0xec, 0x4d, 0x60, 0x0f, 0x97, 0x66, 0x78, 0xda, 0xfc, 0xe0, 0x43, 0x5a, 0xc9, + 0xec, 0xc8, 0xb9, 0x9c, 0x92, 0xe7, 0xb0, 0xc3, 0x8e, 0x9c, 0x2b, 0x28, 0x45, 0xf5, 0x39, 0x5a, + 0xc1, 0x8c, 0xc5, 0x39, 0xda, 0x72, 0x60, 0xc7, 0xb1, 0x1c, 0x01, 0x23, 0xf0, 0x81, 0x7a, 0x9d, + 0x36, 0xa3, 0x41, 0x4c, 0x3b, 0x07, 0xa8, 0x60, 0xcd, 0x5f, 0x28, 0x8e, 0xa9, 0xbf, 0x95, 0x02, + 0x59, 0x06, 0x55, 0x84, 0x1b, 0xd9, 0xbc, 0x68, 0x64, 0x43, 0xf0, 0x45, 0x32, 0x0a, 0x5f, 0xcc, + 0x6a, 0xdc, 0xd0, 0x0d, 0x58, 0x64, 0x09, 0x93, 0x83, 0x1c, 0x22, 0x2d, 0xc9, 0x2c, 0x2d, 0x2d, + 0xd0, 0x09, 0x6e, 0x1d, 0x9e, 0x9f, 0x5e, 0x84, 0xa5, 0x10, 0xaf, 0xdf, 0x2b, 0xf2, 0x36, 0x5d, + 0xf1, 0xb9, 0x6b, 0xbc, 0x69, 0x54, 0xff, 0x20, 0x05, 0x16, 0x0a, 0x20, 0x8d, 0x69, 0xe8, 0x83, + 0xf4, 0x1d, 0xa1, 0x0f, 0xc9, 0x47, 0x46, 0x1f, 0xc2, 0xbd, 0x6f, 0x2a, 0xd2, 0xfb, 0xaa, 0x7f, + 0x97, 0x82, 0x3d, 0xf1, 0xb1, 0x84, 0xb6, 0xd5, 0xc1, 0xa2, 0xd9, 0x64, 0xcf, 0xb4, 0x24, 0xe9, + 0x5b, 0xc7, 0xa2, 0xa5, 0xa4, 0x8f, 0x94, 0xcb, 0x4f, 0x3c, 0x79, 0x91, 0x57, 0xfc, 0x3e, 0x95, + 0x27, 0x7e, 0xd1, 0xa7, 0x2a, 0x90, 0x7a, 0x80, 0x39, 0x2e, 0x5d, 0xd4, 0xe8, 0x23, 0xe5, 0x63, + 0xce, 0x27, 0x12, 0x38, 0x1f, 0xa0, 0x57, 0x21, 0xcf, 0xfe, 0x2a, 0xe8, 0x96, 0xed, 0x0a, 0x2c, + 0x3a, 0x52, 0xda, 0xf0, 0x5f, 0x0b, 0x6b, 0xfb, 0x94, 0x67, 0xcf, 0x76, 0xb5, 0x9c, 0x2d, 0x9e, + 0x42, 0x15, 0x47, 0x3e, 0x52, 0x71, 0x5c, 0x85, 0x3c, 0x7d, 0x7b, 0xd7, 0x36, 0xda, 0x98, 0xd5, + 0xe9, 0x79, 0x2d, 0x20, 0xa8, 0xff, 0x48, 0xc2, 0xc2, 0x58, 0xa2, 0x99, 0xfa, 0xed, 0x9e, 0x4b, + 0x26, 0x43, 0xd8, 0xca, 0x7c, 0xf6, 0x58, 0x01, 0x38, 0x36, 0x5c, 0xfd, 0x43, 0x63, 0x48, 0x70, + 0x47, 0x18, 0x25, 0x44, 0x41, 0x55, 0xc8, 0xd1, 0xd1, 0xc8, 0xc5, 0x1d, 0x01, 0xf3, 0xf8, 0x63, + 0xd4, 0x84, 0x0c, 0x3e, 0xc1, 0x43, 0xe2, 0x56, 0xb2, 0x6c, 0xdb, 0x2f, 0x4f, 0x76, 0xd5, 0x74, + 0x7a, 0xb3, 0x42, 0x37, 0xfb, 0x9b, 0x2f, 0xaf, 0x29, 0x9c, 0xfb, 0x05, 0x6b, 0x60, 0x12, 0x3c, + 0xb0, 0xc9, 0x99, 0x26, 0xe4, 0xa3, 0x56, 0xc8, 0x8d, 0x59, 0x81, 0x1e, 0x2e, 0xaf, 0x40, 0x5a, + 0x10, 0x9e, 0x21, 0xca, 0xdb, 0x2b, 0xfc, 0xed, 0xba, 0x18, 0xbb, 0x2c, 0x45, 0xc8, 0x5a, 0xf6, + 0xd8, 0x70, 0xb7, 0x30, 0x76, 0xe9, 0x8b, 0xbb, 0xb4, 0x72, 0x1d, 0xb6, 0x31, 0x0b, 0xf0, 0xb2, + 0xe6, 0x8f, 0x19, 0x82, 0x59, 0xf4, 0x60, 0x07, 0xba, 0x49, 0xa6, 0xe5, 0x98, 0xe4, 0x4c, 0x2b, + 0x0d, 0xf0, 0xc0, 0xb6, 0xac, 0xbe, 0xce, 0x83, 0x46, 0x0d, 0xca, 0xd1, 0x44, 0x8d, 0x9e, 0x82, + 0x92, 0x83, 0x89, 0x61, 0x0e, 0xf5, 0x48, 0x55, 0x5d, 0xe4, 0x44, 0x7e, 0x48, 0x77, 0xe4, 0x9c, + 0xa4, 0x24, 0x77, 0xe4, 0x5c, 0x52, 0x49, 0xa9, 0xfb, 0x70, 0x69, 0x6a, 0xa2, 0x46, 0xaf, 0x40, + 0x3e, 0xc8, 0xf1, 0x12, 0x33, 0xdf, 0x39, 0x10, 0x51, 0xc0, 0xab, 0xfe, 0x4e, 0x0a, 0x54, 0x46, + 0x41, 0xa7, 0x06, 0x64, 0x1c, 0xec, 0x8e, 0xfa, 0x1c, 0xe5, 0x29, 0x6f, 0xbc, 0x38, 0x5f, 0x8a, + 0xa7, 0xd4, 0x51, 0x9f, 0x68, 0x42, 0x58, 0x7d, 0x17, 0x32, 0x9c, 0x82, 0x0a, 0x90, 0x3d, 0xdc, + 0xbd, 0xbb, 0xbb, 0xf7, 0xf6, 0xae, 0x92, 0x40, 0x00, 0x99, 0x5a, 0xbd, 0xde, 0xd8, 0x6f, 0x29, + 0x12, 0xca, 0x43, 0xba, 0xb6, 0xb9, 0xa7, 0xb5, 0x94, 0x24, 0x25, 0x6b, 0x8d, 0x9d, 0x46, 0xbd, + 0xa5, 0xa4, 0xd0, 0x22, 0x94, 0xf8, 0xb3, 0xbe, 0xb5, 0xa7, 0xbd, 0x59, 0x6b, 0x29, 0x72, 0x88, + 0x74, 0xd0, 0xd8, 0xbd, 0xd3, 0xd0, 0x94, 0xb4, 0xfa, 0xbf, 0x70, 0x25, 0xb6, 0x28, 0x08, 0x00, + 0x23, 0x29, 0x04, 0x18, 0xa9, 0x9f, 0x26, 0x69, 0x97, 0x14, 0x97, 0xe9, 0xd1, 0xce, 0xd8, 0x87, + 0x6f, 0x5c, 0xa0, 0x4c, 0x18, 0xfb, 0x7a, 0xda, 0x18, 0x39, 0xb8, 0x8b, 0x49, 0xbb, 0xc7, 0x2b, + 0x0f, 0x1e, 0xd2, 0x4a, 0x5a, 0x49, 0x50, 0x99, 0x90, 0xcb, 0xd9, 0xde, 0xc7, 0x6d, 0xa2, 0x73, + 0x27, 0x72, 0x59, 0x77, 0x92, 0xa7, 0x6c, 0x94, 0x7a, 0xc0, 0x89, 0xea, 0x7b, 0x17, 0xb2, 0x65, + 0x1e, 0xd2, 0x5a, 0xa3, 0xa5, 0xbd, 0xa3, 0xa4, 0x10, 0x82, 0x32, 0x7b, 0xd4, 0x0f, 0x76, 0x6b, + 0xfb, 0x07, 0xcd, 0x3d, 0x6a, 0xcb, 0x25, 0x58, 0xf0, 0x6c, 0xe9, 0x11, 0xd3, 0xaa, 0x03, 0x8f, + 0xc5, 0x94, 0x29, 0x53, 0x7a, 0xb4, 0x31, 0xe8, 0x20, 0x39, 0x07, 0x74, 0x90, 0x9a, 0x02, 0x1d, + 0xfc, 0x5a, 0x0a, 0x2f, 0x1a, 0xad, 0x58, 0xf6, 0x20, 0xe3, 0x12, 0x83, 0x8c, 0x5c, 0xb1, 0x17, + 0xaf, 0xcc, 0x5b, 0xfe, 0xac, 0x79, 0x0f, 0x07, 0x4c, 0x5c, 0x13, 0x6a, 0xd4, 0x5b, 0x50, 0x8e, + 0xce, 0xc4, 0x9b, 0x32, 0xf0, 0xc5, 0xa4, 0x7a, 0x1b, 0xd0, 0x64, 0x55, 0x34, 0xa5, 0xed, 0x95, + 0xa6, 0xb5, 0xbd, 0xbf, 0x91, 0xe0, 0xf1, 0x73, 0x2a, 0x20, 0xf4, 0xd6, 0xd8, 0x47, 0xbe, 0x76, + 0x91, 0xfa, 0x69, 0x8d, 0xd3, 0xc6, 0x3e, 0xf3, 0x26, 0x14, 0xc3, 0xf4, 0xf9, 0x3e, 0xf2, 0x9b, + 0x64, 0x10, 0x0b, 0xa2, 0xfd, 0x79, 0x10, 0x9a, 0xa5, 0x6f, 0x19, 0x9a, 0x5f, 0x07, 0x20, 0xa7, + 0x3a, 0x3f, 0x1d, 0x5e, 0x7e, 0x7f, 0x62, 0x0a, 0x7c, 0x8a, 0xdb, 0xad, 0x53, 0x71, 0x96, 0xf2, + 0x44, 0x3c, 0xb9, 0xe8, 0x20, 0x0c, 0x56, 0x8c, 0x58, 0xee, 0x77, 0x45, 0x23, 0x3f, 0x6f, 0x91, + 0x10, 0x80, 0x1a, 0x9c, 0xec, 0xa2, 0x77, 0xe0, 0xb1, 0xb1, 0x02, 0xc6, 0x57, 0x2d, 0xcf, 0x5b, + 0xc7, 0x5c, 0x8a, 0xd6, 0x31, 0x9e, 0xea, 0x70, 0x15, 0x92, 0x8e, 0x56, 0x21, 0xef, 0x00, 0x04, + 0xa0, 0x05, 0x0d, 0x54, 0x8e, 0x35, 0x1a, 0x76, 0x98, 0x07, 0xa4, 0x35, 0x3e, 0x40, 0xb7, 0x20, + 0x4d, 0x3d, 0xc9, 0xb3, 0xd3, 0x64, 0x44, 0xa7, 0x9e, 0x10, 0x02, 0x3d, 0x38, 0xb7, 0x6a, 0x02, + 0x9a, 0xc4, 0x9f, 0x63, 0x96, 0x78, 0x23, 0xba, 0xc4, 0x93, 0xb1, 0x48, 0xf6, 0xf4, 0xa5, 0x1e, + 0x42, 0x9a, 0xed, 0x3c, 0x2d, 0x06, 0xd8, 0x6f, 0x11, 0x51, 0xc5, 0xd2, 0x67, 0xf4, 0x23, 0x00, + 0x83, 0x10, 0xc7, 0x3c, 0x1a, 0x05, 0x0b, 0x5c, 0x9b, 0xee, 0x39, 0x35, 0x8f, 0x6f, 0xf3, 0xaa, + 0x70, 0xa1, 0xe5, 0x40, 0x34, 0xe4, 0x46, 0x21, 0x85, 0xea, 0x2e, 0x94, 0xa3, 0xb2, 0x5e, 0xdd, + 0xc5, 0xdf, 0x21, 0x5a, 0x77, 0xf1, 0x32, 0x5a, 0xd4, 0x5d, 0x7e, 0xd5, 0x96, 0xe2, 0xff, 0x7e, + 0xd8, 0x40, 0xfd, 0x71, 0x12, 0x8a, 0x61, 0xc7, 0xfb, 0xcf, 0x2b, 0x8d, 0xd4, 0x9f, 0x49, 0x90, + 0xf3, 0x3f, 0x3f, 0xfa, 0x9b, 0x27, 0xf2, 0xe7, 0x8c, 0x5b, 0x2f, 0x19, 0xfe, 0x37, 0xc3, 0xff, + 0x93, 0xa5, 0xfc, 0xff, 0x64, 0xb7, 0xfd, 0x2c, 0x1a, 0x07, 0xd4, 0x84, 0x6d, 0x2d, 0xbc, 0xca, + 0x2b, 0x1a, 0x6e, 0x43, 0xde, 0x3f, 0xbd, 0xe1, 0x7a, 0x4d, 0x8a, 0xd6, 0x6b, 0xcb, 0x90, 0xb6, + 0xad, 0x0f, 0xc5, 0x8f, 0x9f, 0x94, 0xc6, 0x07, 0x6a, 0x07, 0x16, 0xc6, 0x8e, 0x3e, 0xba, 0x0d, + 0x59, 0x7b, 0x74, 0xa4, 0x7b, 0xce, 0x31, 0x06, 0xfb, 0x79, 0x65, 0xf6, 0xe8, 0xa8, 0x6f, 0xb6, + 0xef, 0xe2, 0x33, 0xef, 0x65, 0xec, 0xd1, 0xd1, 0x5d, 0xee, 0x43, 0x7c, 0x95, 0x64, 0x78, 0x95, + 0x5f, 0x48, 0x90, 0xf3, 0xce, 0x04, 0xfa, 0x7f, 0xc8, 0xfb, 0x61, 0xc5, 0xff, 0xb7, 0x1b, 0x1b, + 0x8f, 0x84, 0xfe, 0x40, 0x04, 0xd5, 0xbc, 0x9f, 0xd2, 0x66, 0x47, 0xef, 0xf6, 0x0d, 0xee, 0x4b, + 0xe5, 0xa8, 0xcd, 0x78, 0xe0, 0x61, 0xf1, 0x78, 0xfb, 0xce, 0x56, 0xdf, 0x38, 0xd6, 0x0a, 0x4c, + 0x66, 0xbb, 0x43, 0x07, 0xa2, 0x40, 0xfc, 0x9b, 0x04, 0xca, 0xf8, 0x89, 0xfd, 0xd6, 0x6f, 0x37, + 0x99, 0xe6, 0x52, 0x53, 0xd2, 0x1c, 0x5a, 0x87, 0x25, 0x9f, 0x43, 0x77, 0xcd, 0xe3, 0xa1, 0x41, + 0x46, 0x0e, 0x16, 0x40, 0x29, 0xf2, 0xa7, 0x0e, 0xbc, 0x99, 0xc9, 0xaf, 0x4e, 0x3f, 0xe2, 0x57, + 0x7f, 0x94, 0x84, 0x42, 0x08, 0xb6, 0x45, 0xff, 0x17, 0x0a, 0x46, 0xe5, 0x29, 0x99, 0x21, 0xc4, + 0x1b, 0xfc, 0xa7, 0x8d, 0x9a, 0x29, 0x79, 0x71, 0x33, 0xc5, 0x81, 0xe3, 0x1e, 0x0a, 0x2c, 0x5f, + 0x18, 0x05, 0x7e, 0x01, 0x10, 0xb1, 0x88, 0xd1, 0xd7, 0x4f, 0x2c, 0x62, 0x0e, 0x8f, 0x75, 0xee, + 0x86, 0x3c, 0x74, 0x28, 0x6c, 0xe6, 0x3e, 0x9b, 0xd8, 0x67, 0x1e, 0xf9, 0x13, 0x09, 0x72, 0x7e, + 0xf5, 0x7e, 0xd1, 0x7f, 0xb4, 0x97, 0x21, 0x23, 0x0a, 0x54, 0xfe, 0x93, 0x56, 0x8c, 0xa6, 0xc2, + 0xdd, 0x55, 0xc8, 0x0d, 0x30, 0x31, 0x58, 0x1c, 0xe4, 0x59, 0xcd, 0x1f, 0xdf, 0x78, 0x0d, 0x0a, + 0xa1, 0x3f, 0xe0, 0x34, 0x34, 0xee, 0x36, 0xde, 0x56, 0x12, 0xd5, 0xec, 0xc7, 0x9f, 0xad, 0xa6, + 0x76, 0xf1, 0x87, 0xf4, 0x34, 0x6b, 0x8d, 0x7a, 0xb3, 0x51, 0xbf, 0xab, 0x48, 0xd5, 0xc2, 0xc7, + 0x9f, 0xad, 0x66, 0x35, 0xcc, 0x90, 0xce, 0x1b, 0x77, 0x61, 0x61, 0x6c, 0x63, 0xa2, 0x65, 0x0b, + 0x82, 0xf2, 0x9d, 0xc3, 0xfd, 0x7b, 0xdb, 0xf5, 0x5a, 0xab, 0xa1, 0xdf, 0xdf, 0x6b, 0x35, 0x14, + 0x09, 0x3d, 0x06, 0x4b, 0xf7, 0xb6, 0xbf, 0xd7, 0x6c, 0xe9, 0xf5, 0x7b, 0xdb, 0x8d, 0xdd, 0x96, + 0x5e, 0x6b, 0xb5, 0x6a, 0xf5, 0xbb, 0x4a, 0x72, 0xe3, 0xb3, 0x02, 0xc8, 0xb5, 0xcd, 0xfa, 0x36, + 0xaa, 0x83, 0xcc, 0x20, 0x9a, 0x73, 0xaf, 0xc0, 0x55, 0xcf, 0xc7, 0xac, 0xd1, 0x16, 0xa4, 0x19, + 0x7a, 0x83, 0xce, 0xbf, 0x13, 0x57, 0x9d, 0x01, 0x62, 0xd3, 0x97, 0x61, 0x27, 0xf2, 0xdc, 0x4b, + 0x72, 0xd5, 0xf3, 0x31, 0x6d, 0x74, 0x0f, 0xb2, 0x5e, 0xf3, 0x3e, 0xeb, 0xe6, 0x5a, 0x75, 0x26, + 0xd0, 0x4c, 0x3f, 0x8d, 0x83, 0x20, 0xe7, 0xdf, 0x9f, 0xab, 0xce, 0x40, 0xbb, 0xd1, 0x36, 0x64, + 0x44, 0x57, 0x3b, 0xe3, 0x4a, 0x5c, 0x75, 0x16, 0x7e, 0x8d, 0x34, 0xc8, 0x07, 0xf0, 0xd2, 0xec, + 0x5b, 0x81, 0xd5, 0x39, 0x80, 0x7c, 0xf4, 0x2e, 0x94, 0xa2, 0x1d, 0xf3, 0x7c, 0xd7, 0xee, 0xaa, + 0x73, 0x22, 0xe5, 0x54, 0x7f, 0xb4, 0x7d, 0x9e, 0xef, 0x1a, 0x5e, 0x75, 0x4e, 0xe0, 0x1c, 0xbd, + 0x0f, 0x8b, 0x93, 0xed, 0xed, 0xfc, 0xb7, 0xf2, 0xaa, 0x17, 0x80, 0xd2, 0xd1, 0x00, 0xd0, 0x94, + 0xb6, 0xf8, 0x02, 0x97, 0xf4, 0xaa, 0x17, 0x41, 0xd6, 0x51, 0x07, 0x16, 0xc6, 0x7b, 0xcd, 0x79, + 0x2f, 0xed, 0x55, 0xe7, 0x46, 0xd9, 0xf9, 0x2a, 0xd1, 0xe6, 0x72, 0xde, 0x4b, 0x7c, 0xd5, 0xb9, + 0x41, 0x77, 0x74, 0x08, 0x10, 0xea, 0x0f, 0xe7, 0xb8, 0xd4, 0x57, 0x9d, 0x07, 0x7e, 0x47, 0x36, + 0x2c, 0x4d, 0x6b, 0x1c, 0x2f, 0x72, 0xc7, 0xaf, 0x7a, 0x21, 0x54, 0x9e, 0xfa, 0x73, 0xb4, 0x05, + 0x9c, 0xef, 0xce, 0x5f, 0x75, 0x4e, 0x78, 0x7e, 0xb3, 0xf6, 0xf9, 0x57, 0x2b, 0xd2, 0x17, 0x5f, + 0xad, 0x48, 0x7f, 0xfd, 0x6a, 0x45, 0xfa, 0xe4, 0xeb, 0x95, 0xc4, 0x17, 0x5f, 0xaf, 0x24, 0xfe, + 0xfc, 0xf5, 0x4a, 0xe2, 0xfb, 0xcf, 0x1e, 0x9b, 0xa4, 0x37, 0x3a, 0x5a, 0x6b, 0x5b, 0x83, 0xf5, + 0xb6, 0x35, 0xc0, 0xe4, 0xa8, 0x4b, 0x82, 0x87, 0xe0, 0xea, 0xf6, 0x51, 0x86, 0x65, 0xd0, 0x9b, + 0xff, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x31, 0xf6, 0xd3, 0xff, 0xda, 0x2d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -6461,6 +6488,27 @@ func (m *ResponseCheckTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Sequence != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.Sequence)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x88 + } + if m.GasFees != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.GasFees)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x80 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x7a + } if len(m.Codespace) > 0 { i -= len(m.Codespace) copy(dAtA[i:], m.Codespace) @@ -8466,6 +8514,16 @@ func (m *ResponseCheckTx) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.GasFees != 0 { + n += 2 + sovTypes(uint64(m.GasFees)) + } + if m.Sequence != 0 { + n += 2 + sovTypes(uint64(m.Sequence)) + } return n } @@ -13944,6 +14002,78 @@ func (m *ResponseCheckTx) Unmarshal(dAtA []byte) error { } m.Codespace = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = append(m.Address[:0], dAtA[iNdEx:postIndex]...) + if m.Address == nil { + m.Address = []byte{} + } + iNdEx = postIndex + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GasFees", wireType) + } + m.GasFees = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GasFees |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 17: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) + } + m.Sequence = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Sequence |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/consensus/byzantine_test.go b/consensus/byzantine_test.go index b31b31dca91..bb72e7932a9 100644 --- a/consensus/byzantine_test.go +++ b/consensus/byzantine_test.go @@ -594,7 +594,3 @@ func (br *ByzantineReactor) Receive(e p2p.Envelope) { br.reactor.Receive(e) } func (br *ByzantineReactor) InitPeer(peer p2p.Peer) p2p.Peer { return peer } - -// func (br *ByzantineReactor) QueueUnprocessedEnvelope(e p2p.UnprocessedEnvelope) { -// br.reactor.QueueUnprocessedEnvelope(e) -// } diff --git a/consensus/reactor.go b/consensus/reactor.go index 8a95b6d0370..67089313d17 100644 --- a/consensus/reactor.go +++ b/consensus/reactor.go @@ -34,9 +34,6 @@ const ( blocksToContributeToBecomeGoodPeer = 10000 votesToContributeToBecomeGoodPeer = 10000 - - // ReactorIncomingMessageQueueSize the size of the reactor's message queue. - ReactorIncomingMessageQueueSize = 1000 ) //----------------------------------------------------------------------------- @@ -71,7 +68,7 @@ func NewReactor(consensusState *State, waitSync bool, options ...ReactorOption) conR.BaseReactor = *p2p.NewBaseReactor( "Consensus", conR, - p2p.WithIncomingQueueSize(ReactorIncomingMessageQueueSize)) + ) for _, option := range options { option(conR) diff --git a/evidence/reactor.go b/evidence/reactor.go index b86f37e46a7..2501a0e9d6f 100644 --- a/evidence/reactor.go +++ b/evidence/reactor.go @@ -25,8 +25,6 @@ const ( broadcastEvidenceIntervalS = 10 // If a message fails wait this much before sending it again peerRetryMessageIntervalMS = 100 - // ReactorIncomingMessageQueueSize the size of the reactor's message queue. - ReactorIncomingMessageQueueSize = 1 ) // Reactor handles evpool evidence broadcasting amongst peers. @@ -41,7 +39,7 @@ func NewReactor(evpool *Pool) *Reactor { evR := &Reactor{ evpool: evpool, } - evR.BaseReactor = *p2p.NewBaseReactor("Evidence", evR, p2p.WithIncomingQueueSize(ReactorIncomingMessageQueueSize)) + evR.BaseReactor = *p2p.NewBaseReactor("Evidence", evR) return evR } diff --git a/mempool/reactor.go b/mempool/reactor.go index 16960afa8dd..ef3e9a7c382 100644 --- a/mempool/reactor.go +++ b/mempool/reactor.go @@ -10,7 +10,6 @@ import ( cfg "github.com/cometbft/cometbft/config" "github.com/cometbft/cometbft/libs/clist" "github.com/cometbft/cometbft/libs/log" - "github.com/cometbft/cometbft/libs/trace" "github.com/cometbft/cometbft/p2p" protomem "github.com/cometbft/cometbft/proto/tendermint/mempool" "github.com/cometbft/cometbft/types" @@ -31,16 +30,14 @@ type Reactor struct { // connections for different groups of peers. activePersistentPeersSemaphore *semaphore.Weighted activeNonPersistentPeersSemaphore *semaphore.Weighted - traceClient trace.Tracer } // NewReactor returns a new Reactor with the given config and mempool. -func NewReactor(config *cfg.MempoolConfig, mempool *CListMempool, traceClient trace.Tracer) *Reactor { +func NewReactor(config *cfg.MempoolConfig, mempool *CListMempool) *Reactor { memR := &Reactor{ - config: config, - mempool: mempool, - ids: newMempoolIDs(), - traceClient: traceClient, + config: config, + mempool: mempool, + ids: newMempoolIDs(), } memR.BaseReactor = *p2p.NewBaseReactor("Mempool", memR) memR.activePersistentPeersSemaphore = semaphore.NewWeighted(int64(memR.config.ExperimentalMaxGossipConnectionsToPersistentPeers)) diff --git a/mempool/reactor_test.go b/mempool/reactor_test.go index 599ed36c8b3..732dd482336 100644 --- a/mempool/reactor_test.go +++ b/mempool/reactor_test.go @@ -16,7 +16,6 @@ import ( abci "github.com/cometbft/cometbft/abci/types" cfg "github.com/cometbft/cometbft/config" "github.com/cometbft/cometbft/libs/log" - "github.com/cometbft/cometbft/libs/trace" "github.com/cometbft/cometbft/p2p" "github.com/cometbft/cometbft/p2p/mock" memproto "github.com/cometbft/cometbft/proto/tendermint/mempool" @@ -330,7 +329,7 @@ func makeAndConnectReactors(config *cfg.Config, n int) ([]*Reactor, []*p2p.Switc mempool, cleanup := newMempoolWithApp(cc) defer cleanup() - reactors[i] = NewReactor(config.Mempool, mempool, trace.NoOpTracer()) // so we dont start the consensus states + reactors[i] = NewReactor(config.Mempool, mempool) // so we dont start the consensus states reactors[i].SetLogger(logger.With("validator", i)) } diff --git a/node/setup.go b/node/setup.go index e2d0ee52d03..20f1c90c49b 100644 --- a/node/setup.go +++ b/node/setup.go @@ -252,7 +252,6 @@ func createMempoolAndMempoolReactor( reactor := mempl.NewReactor( config.Mempool, mp, - traceClient, ) if config.Consensus.WaitForTxs() { mp.EnableTxsAvailable() diff --git a/p2p/base_reactor.go b/p2p/base_reactor.go index 40f20e3e81a..5d817ce9c23 100644 --- a/p2p/base_reactor.go +++ b/p2p/base_reactor.go @@ -46,15 +46,6 @@ type Reactor interface { // Receive is called by the switch when an envelope is received from any connected // peer on any of the channels registered by the reactor Receive(Envelope) - - // QueueUnprocessedEnvelope is called by the switch when an unprocessed - // envelope is received. Unprocessed envelopes are immediately buffered in a - // queue to avoid blocking. Incoming messages are then passed to a - // processing function. The default processing function unmarshals the - // messages in the order the sender sent them and then calls Receive on the - // reactor. The queue size and the processing function can be changed via - // passing options to the base reactor. - // QueueUnprocessedEnvelope(e UnprocessedEnvelope) } //-------------------------------------- @@ -62,66 +53,20 @@ type Reactor interface { type BaseReactor struct { service.BaseService // Provides Start, Stop, .Quit Switch *Switch - - // incoming chan UnprocessedEnvelope - - // ctx context.Context - // cancel context.CancelFunc - // // processor is called with the incoming channel and is responsible for - // // unmarshalling the messages and calling Receive on the reactor. - // processor ProcessorFunc } type ReactorOptions func(*BaseReactor) func NewBaseReactor(name string, impl Reactor, opts ...ReactorOptions) *BaseReactor { - // ctx := context.Background() - // ctx, cancel := context.WithCancel(ctx) br := &BaseReactor{ BaseService: *service.NewBaseService(nil, name, impl), Switch: nil, - - // ctx: ctx, - // cancel: cancel, - // incoming: make(chan UnprocessedEnvelope, 100), - // processor: DefaultProcessor(impl), } - // for _, opt := range opts { - // opt(br) - // } - - // go func() { - // err := br.processor(ctx, br.incoming) - // if err != nil { - // err = br.Stop() - // if err != nil { - // panic(err) - // } - // } - // }() - return br } -// // WithProcessor sets the processor function for the reactor. The processor -// // function is called with the incoming channel and is responsible for -// // unmarshalling the messages and calling Receive on the reactor. -// func WithProcessor(processor ProcessorFunc) ReactorOptions { -// return func(br *BaseReactor) { -// br.processor = processor -// } -// } - -// WithIncomingQueueSize sets the size of the incoming message queue for a -// reactor. -func WithIncomingQueueSize(size int) ReactorOptions { - return func(br *BaseReactor) { - // br.incoming = make(chan UnprocessedEnvelope, size) - } -} - func (br *BaseReactor) SetSwitch(sw *Switch) { br.Switch = sw } @@ -130,79 +75,3 @@ func (*BaseReactor) AddPeer(Peer) {} func (*BaseReactor) RemovePeer(Peer, interface{}) {} func (*BaseReactor) Receive(Envelope) {} func (*BaseReactor) InitPeer(peer Peer) Peer { return peer } - -// // QueueUnprocessedEnvelope is called by the switch when an unprocessed -// // envelope is received. Unprocessed envelopes are immediately buffered in a -// // queue to avoid blocking. The size of the queue can be changed by passing -// // options to the base reactor. -// func (br *BaseReactor) QueueUnprocessedEnvelope(e UnprocessedEnvelope) { -// select { -// // if the context is done, do nothing. -// case <-br.ctx.Done(): -// // if not, add the item to the channel. -// case br.incoming <- e: -// } -// } - -// func (br *BaseReactor) OnStop() { -// br.cancel() -// close(br.incoming) -// } - -// // DefaultProcessor unmarshalls the message and calls Receive on the reactor. -// // This preserves the sender's original order for all messages. -// func DefaultProcessor(impl Reactor) func(context.Context, <-chan UnprocessedEnvelope) error { -// implChannels := impl.GetChannels() - -// chIDs := make(map[byte]proto.Message, len(implChannels)) -// for _, chDesc := range implChannels { -// chIDs[chDesc.ID] = chDesc.MessageType -// } -// return func(ctx context.Context, incoming <-chan UnprocessedEnvelope) error { -// for { -// select { -// case <-ctx.Done(): -// return nil -// case ue, ok := <-incoming: -// if !ok { -// // this means the channel was closed. -// return nil -// } -// mt := chIDs[ue.ChannelID] - -// if mt == nil { -// return fmt.Errorf("no message type registered for channel %d", ue.ChannelID) -// } - -// msg := proto.Clone(mt) - -// err := proto.Unmarshal(ue.Message, msg) -// if err != nil { -// return fmt.Errorf("unmarshaling message: %v into type: %s resulted in error %w", msg, reflect.TypeOf(mt), err) -// } - -// if w, ok := msg.(Unwrapper); ok { -// msg, err = w.Unwrap() -// if err != nil { -// return fmt.Errorf("unwrapping message: %v", err) -// } -// } - -// labels := []string{ -// "peer_id", string(ue.Src.ID()), -// "chID", fmt.Sprintf("%#x", ue.ChannelID), -// } - -// ue.Src.Metrics().PeerReceiveBytesTotal.With(labels...).Add(float64(len(ue.Message))) -// ue.Src.Metrics().MessageReceiveBytesTotal.With(append(labels, "message_type", ue.Src.ValueToMetricLabel(msg))...).Add(float64(len(ue.Message))) -// schema.WriteReceivedBytes(ue.Src.TraceClient(), string(ue.Src.ID()), ue.ChannelID, len(ue.Message)) - -// impl.Receive(Envelope{ -// ChannelID: ue.ChannelID, -// Src: ue.Src, -// Message: msg, -// }) -// } -// } -// } -// } diff --git a/p2p/base_reactor_test.go b/p2p/base_reactor_test.go deleted file mode 100644 index aba6d461dd9..00000000000 --- a/p2p/base_reactor_test.go +++ /dev/null @@ -1,123 +0,0 @@ -package p2p_test - -// import ( -// "net" -// "sync" -// "testing" -// "time" - -// "github.com/cosmos/gogoproto/proto" -// "github.com/stretchr/testify/require" - -// "github.com/cometbft/cometbft/libs/service" -// "github.com/cometbft/cometbft/libs/trace" -// "github.com/cometbft/cometbft/p2p" -// "github.com/cometbft/cometbft/p2p/conn" -// "github.com/cometbft/cometbft/proto/tendermint/mempool" -// ) - -// // TestBaseReactorProcessor tests the BaseReactor's message processing by -// // queueing encoded messages and adding artificial delay to the first message. -// // Depending on the processors used, the ordering of the sender could be lost. -// func TestBaseReactorProcessor(t *testing.T) { -// // a reactor using the default processor should be able to queue -// // messages, and they get processed in order. -// or := NewOrderedReactor() - -// msgs := []string{"msg1", "msg2", "msg3"} -// or.fillQueue(t, msgs...) - -// time.Sleep(300 * time.Millisecond) // wait plenty of time for the processing to finish - -// or.Lock() -// require.Equal(t, len(msgs), len(or.received)) -// require.Equal(t, msgs, or.received) -// or.Unlock() -// } - -// var _ p2p.Reactor = &orderedReactor{} - -// // orderedReactor is used for testing. It saves each envelope in the order it -// // receives it. -// type orderedReactor struct { -// p2p.BaseReactor - -// sync.Mutex -// received []string -// receivedFirst bool -// } - -// func NewOrderedReactor() *orderedReactor { -// r := &orderedReactor{Mutex: sync.Mutex{}} -// r.BaseReactor = *p2p.NewBaseReactor("Ordered Reactor", r, p2p.WithIncomingQueueSize(10)) -// return r -// } - -// func (r *orderedReactor) GetChannels() []*conn.ChannelDescriptor { -// return []*conn.ChannelDescriptor{ -// { -// ID: 0x99, -// Priority: 1, -// RecvMessageCapacity: 10, -// MessageType: &mempool.Txs{}, -// }, -// } -// } - -// // ReceiveEnvelope adds a delay to the first processed envelope to test ordering. -// func (r *orderedReactor) Receive(e p2p.Envelope) { -// r.Lock() -// f := r.receivedFirst -// if !f { -// r.receivedFirst = true -// r.Unlock() -// time.Sleep(100 * time.Millisecond) -// } else { -// r.Unlock() -// } -// r.Lock() -// defer r.Unlock() - -// envMsg := e.Message.(*mempool.Txs) -// r.received = append(r.received, string(envMsg.Txs[0])) -// } - -// func (r *orderedReactor) fillQueue(t *testing.T, msgs ...string) { -// peer := &imaginaryPeer{} -// for _, msg := range msgs { -// s, err := proto.Marshal(&mempool.Txs{Txs: [][]byte{[]byte(msg)}}) -// require.NoError(t, err) -// r.QueueUnprocessedEnvelope(p2p.UnprocessedEnvelope{ -// Src: peer, -// Message: s, -// ChannelID: 0x99, -// }) -// } -// } - -// var _ p2p.IntrospectivePeer = &imaginaryPeer{} - -// type imaginaryPeer struct { -// service.BaseService -// } - -// func (ip *imaginaryPeer) TraceClient() trace.Tracer { return trace.NoOpTracer() } -// func (ip *imaginaryPeer) HasIPChanged() bool { return false } -// func (ip *imaginaryPeer) FlushStop() {} -// func (ip *imaginaryPeer) ID() p2p.ID { return "" } -// func (ip *imaginaryPeer) RemoteIP() net.IP { return []byte{} } -// func (ip *imaginaryPeer) RemoteAddr() net.Addr { return nil } -// func (ip *imaginaryPeer) IsOutbound() bool { return true } -// func (ip *imaginaryPeer) CloseConn() error { return nil } -// func (ip *imaginaryPeer) IsPersistent() bool { return false } -// func (ip *imaginaryPeer) NodeInfo() p2p.NodeInfo { return nil } -// func (ip *imaginaryPeer) Status() conn.ConnectionStatus { return conn.ConnectionStatus{} } -// func (ip *imaginaryPeer) SocketAddr() *p2p.NetAddress { return nil } -// func (ip *imaginaryPeer) Send(p2p.Envelope) bool { return true } -// func (ip *imaginaryPeer) TrySend(p2p.Envelope) bool { return true } -// func (ip *imaginaryPeer) Set(key string, value any) {} -// func (ip *imaginaryPeer) Get(key string) any { return nil } -// func (ip *imaginaryPeer) SetRemovalFailed() {} -// func (ip *imaginaryPeer) GetRemovalFailed() bool { return false } -// func (ip *imaginaryPeer) Metrics() *p2p.Metrics { return p2p.NopMetrics() } -// func (ip *imaginaryPeer) ValueToMetricLabel(i any) string { return "" } diff --git a/p2p/mock/reactor.go b/p2p/mock/reactor.go index 28993a056fd..64d93a97358 100644 --- a/p2p/mock/reactor.go +++ b/p2p/mock/reactor.go @@ -14,7 +14,7 @@ type Reactor struct { func NewReactor() *Reactor { r := &Reactor{} - r.BaseReactor = *p2p.NewBaseReactor("Mock-PEX", r, p2p.WithIncomingQueueSize(1)) + r.BaseReactor = *p2p.NewBaseReactor("Mock-PEX", r) r.SetLogger(log.TestingLogger()) return r } diff --git a/proto/tendermint/abci/types.proto b/proto/tendermint/abci/types.proto index e71d58c7d41..4a56a7f7dcf 100644 --- a/proto/tendermint/abci/types.proto +++ b/proto/tendermint/abci/types.proto @@ -108,9 +108,9 @@ message RequestListSnapshots {} // offers a snapshot to the application message RequestOfferSnapshot { - Snapshot snapshot = 1; // snapshot offered by peers - bytes app_hash = 2; // light client-verified app hash for snapshot height - uint64 app_version = 3; + Snapshot snapshot = 1; // snapshot offered by peers + bytes app_hash = 2; // light client-verified app hash for snapshot height + uint64 app_version = 3; } // loads a snapshot chunk @@ -152,9 +152,9 @@ message RequestProcessProposal { google.protobuf.Timestamp time = 6 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; bytes next_validators_hash = 7; // address of the public key of the original proposer of the block. - bytes proposer_address = 8; - uint64 square_size = 9; - bytes data_root_hash = 10; + bytes proposer_address = 8; + uint64 square_size = 9; + bytes data_root_hash = 10; } // Extends a vote with application-injected data @@ -176,7 +176,7 @@ message RequestExtendVote { // Verify the vote extension message RequestVerifyVoteExtension { // the hash of the block that this received vote corresponds to - bytes hash = 1; + bytes hash = 1; // the validator that signed the vote extension bytes validator_address = 2; int64 height = 3; @@ -277,6 +277,11 @@ message ResponseCheckTx { // removed). reserved 9 to 11; reserved "sender", "priority", "mempool_error"; + + // these fields are used in the priority mempool + bytes address = 15; + uint64 gas_fees = 16; + uint64 sequence = 17; } message ResponseCommit { @@ -321,9 +326,9 @@ message ResponseApplySnapshotChunk { } message ResponsePrepareProposal { - repeated bytes txs = 1; - uint64 square_size = 2; - bytes data_root_hash = 3; + repeated bytes txs = 1; + uint64 square_size = 2; + bytes data_root_hash = 3; } message ResponseProcessProposal { @@ -350,7 +355,7 @@ message ResponseVerifyVoteExtension { // Incorrectly implementing this thus has liveness implications as it may affect // CometBFT's ability to receive 2/3+ valid votes to finalize the block. // Honest nodes should never be rejected. - REJECT = 2; + REJECT = 2; } } @@ -447,10 +452,10 @@ message ValidatorUpdate { } message VoteInfo { - Validator validator = 1 [(gogoproto.nullable) = false]; + Validator validator = 1 [(gogoproto.nullable) = false]; tendermint.types.BlockIDFlag block_id_flag = 3; - reserved 2; // signed_last_block + reserved 2; // signed_last_block } message ExtendedVoteInfo { @@ -463,7 +468,7 @@ message ExtendedVoteInfo { // block_id_flag indicates whether the validator voted for a block, nil, or did not vote at all tendermint.types.BlockIDFlag block_id_flag = 5; - reserved 2; // signed_last_block + reserved 2; // signed_last_block } enum MisbehaviorType { diff --git a/proto/tendermint/store/types.proto b/proto/tendermint/store/types.proto index 891f1e70899..c7635075e34 100644 --- a/proto/tendermint/store/types.proto +++ b/proto/tendermint/store/types.proto @@ -8,7 +8,6 @@ message BlockStoreState { int64 height = 2; } - // TxInfo describes the location of a tx inside a committed block // as well as the result of executing the transaction and the error log output. message TxInfo { @@ -19,4 +18,4 @@ message TxInfo { uint32 code = 3; // The error log output generated if the transaction execution fails. string error = 4; -} \ No newline at end of file +} diff --git a/statesync/reactor.go b/statesync/reactor.go index 33ba56434ad..a7374a29182 100644 --- a/statesync/reactor.go +++ b/statesync/reactor.go @@ -23,8 +23,6 @@ const ( ChunkChannel = byte(0x61) // recentSnapshots is the number of recent snapshots to send and receive per peer. recentSnapshots = 10 - // ReactorIncomingMessageQueueSize the size of the reactor's message queue. - ReactorIncomingMessageQueueSize = 100 ) // Reactor handles state sync, both restoring snapshots for the local node and serving snapshots @@ -57,7 +55,7 @@ func NewReactor( connQuery: connQuery, metrics: metrics, } - r.BaseReactor = *p2p.NewBaseReactor("StateSync", r, p2p.WithIncomingQueueSize(ReactorIncomingMessageQueueSize)) + r.BaseReactor = *p2p.NewBaseReactor("StateSync", r) return r } diff --git a/test/e2e/docker/Dockerfile b/test/e2e/docker/Dockerfile index 78b7ca55c0c..663f04a9cfc 100644 --- a/test/e2e/docker/Dockerfile +++ b/test/e2e/docker/Dockerfile @@ -1,12 +1,11 @@ # We need to build in a Linux environment to support C libraries, e.g. RocksDB. # We use Debian instead of Alpine, so that we can use binary database packages # instead of spending time compiling them. -FROM cometbft/cometbft-db-testing:latest +FROM golang:1.23.6 RUN apt-get -qq update -y && apt-get -qq upgrade -y >/dev/null # Set up build directory /src/cometbft -ENV COMETBFT_BUILD_OPTIONS badgerdb,boltdb,cleveldb,rocksdb WORKDIR /src/cometbft # Fetch dependencies separately (for layer caching) diff --git a/types/block.go b/types/block.go index 21f36488dc3..f6b1bd311f8 100644 --- a/types/block.go +++ b/types/block.go @@ -1301,9 +1301,6 @@ type Data struct { // proofs that some element was included in the block SquareSize uint64 `json:"square_size"` - // DataRootHash is the root hash of the data square. - DataRootHash cmtbytes.HexBytes `json:"data_root_hash"` - // Volatile hash cmtbytes.HexBytes } @@ -1352,7 +1349,7 @@ func (data *Data) ToProto() cmtproto.Data { } tp.SquareSize = data.SquareSize - tp.Hash = data.DataRootHash + tp.Hash = data.hash return *tp } @@ -1375,7 +1372,7 @@ func DataFromProto(dp *cmtproto.Data) (Data, error) { data.Txs = Txs{} } - data.DataRootHash = dp.Hash + data.hash = dp.Hash data.SquareSize = dp.SquareSize return *data, nil