1 Star 0 Fork 0

陈文甲/fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
ab.pb.go 20.97 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
// Code generated by protoc-gen-go.
// source: orderer/ab.proto
// DO NOT EDIT!
/*
Package orderer is a generated protocol buffer package.
It is generated from these files:
orderer/ab.proto
orderer/configuration.proto
orderer/kafka.proto
It has these top-level messages:
BroadcastResponse
SeekNewest
SeekOldest
SeekSpecified
SeekPosition
SeekInfo
DeliverResponse
ConsensusType
BatchSize
BatchTimeout
KafkaBrokers
ChannelRestrictions
KafkaMessage
KafkaMessageRegular
KafkaMessageTimeToCut
KafkaMessageConnect
KafkaMetadata
*/
package orderer
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import common "github.com/hyperledger/fabric/protos/common"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type SeekInfo_SeekBehavior int32
const (
SeekInfo_BLOCK_UNTIL_READY SeekInfo_SeekBehavior = 0
SeekInfo_FAIL_IF_NOT_READY SeekInfo_SeekBehavior = 1
)
var SeekInfo_SeekBehavior_name = map[int32]string{
0: "BLOCK_UNTIL_READY",
1: "FAIL_IF_NOT_READY",
}
var SeekInfo_SeekBehavior_value = map[string]int32{
"BLOCK_UNTIL_READY": 0,
"FAIL_IF_NOT_READY": 1,
}
func (x SeekInfo_SeekBehavior) String() string {
return proto.EnumName(SeekInfo_SeekBehavior_name, int32(x))
}
func (SeekInfo_SeekBehavior) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} }
type BroadcastResponse struct {
Status common.Status `protobuf:"varint,1,opt,name=status,enum=common.Status" json:"status,omitempty"`
}
func (m *BroadcastResponse) Reset() { *m = BroadcastResponse{} }
func (m *BroadcastResponse) String() string { return proto.CompactTextString(m) }
func (*BroadcastResponse) ProtoMessage() {}
func (*BroadcastResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
type SeekNewest struct {
}
func (m *SeekNewest) Reset() { *m = SeekNewest{} }
func (m *SeekNewest) String() string { return proto.CompactTextString(m) }
func (*SeekNewest) ProtoMessage() {}
func (*SeekNewest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
type SeekOldest struct {
}
func (m *SeekOldest) Reset() { *m = SeekOldest{} }
func (m *SeekOldest) String() string { return proto.CompactTextString(m) }
func (*SeekOldest) ProtoMessage() {}
func (*SeekOldest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
type SeekSpecified struct {
Number uint64 `protobuf:"varint,1,opt,name=number" json:"number,omitempty"`
}
func (m *SeekSpecified) Reset() { *m = SeekSpecified{} }
func (m *SeekSpecified) String() string { return proto.CompactTextString(m) }
func (*SeekSpecified) ProtoMessage() {}
func (*SeekSpecified) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
type SeekPosition struct {
// Types that are valid to be assigned to Type:
// *SeekPosition_Newest
// *SeekPosition_Oldest
// *SeekPosition_Specified
Type isSeekPosition_Type `protobuf_oneof:"Type"`
}
func (m *SeekPosition) Reset() { *m = SeekPosition{} }
func (m *SeekPosition) String() string { return proto.CompactTextString(m) }
func (*SeekPosition) ProtoMessage() {}
func (*SeekPosition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
type isSeekPosition_Type interface {
isSeekPosition_Type()
}
type SeekPosition_Newest struct {
Newest *SeekNewest `protobuf:"bytes,1,opt,name=newest,oneof"`
}
type SeekPosition_Oldest struct {
Oldest *SeekOldest `protobuf:"bytes,2,opt,name=oldest,oneof"`
}
type SeekPosition_Specified struct {
Specified *SeekSpecified `protobuf:"bytes,3,opt,name=specified,oneof"`
}
func (*SeekPosition_Newest) isSeekPosition_Type() {}
func (*SeekPosition_Oldest) isSeekPosition_Type() {}
func (*SeekPosition_Specified) isSeekPosition_Type() {}
func (m *SeekPosition) GetType() isSeekPosition_Type {
if m != nil {
return m.Type
}
return nil
}
func (m *SeekPosition) GetNewest() *SeekNewest {
if x, ok := m.GetType().(*SeekPosition_Newest); ok {
return x.Newest
}
return nil
}
func (m *SeekPosition) GetOldest() *SeekOldest {
if x, ok := m.GetType().(*SeekPosition_Oldest); ok {
return x.Oldest
}
return nil
}
func (m *SeekPosition) GetSpecified() *SeekSpecified {
if x, ok := m.GetType().(*SeekPosition_Specified); ok {
return x.Specified
}
return nil
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*SeekPosition) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _SeekPosition_OneofMarshaler, _SeekPosition_OneofUnmarshaler, _SeekPosition_OneofSizer, []interface{}{
(*SeekPosition_Newest)(nil),
(*SeekPosition_Oldest)(nil),
(*SeekPosition_Specified)(nil),
}
}
func _SeekPosition_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*SeekPosition)
// Type
switch x := m.Type.(type) {
case *SeekPosition_Newest:
b.EncodeVarint(1<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Newest); err != nil {
return err
}
case *SeekPosition_Oldest:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Oldest); err != nil {
return err
}
case *SeekPosition_Specified:
b.EncodeVarint(3<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Specified); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("SeekPosition.Type has unexpected type %T", x)
}
return nil
}
func _SeekPosition_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*SeekPosition)
switch tag {
case 1: // Type.newest
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(SeekNewest)
err := b.DecodeMessage(msg)
m.Type = &SeekPosition_Newest{msg}
return true, err
case 2: // Type.oldest
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(SeekOldest)
err := b.DecodeMessage(msg)
m.Type = &SeekPosition_Oldest{msg}
return true, err
case 3: // Type.specified
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(SeekSpecified)
err := b.DecodeMessage(msg)
m.Type = &SeekPosition_Specified{msg}
return true, err
default:
return false, nil
}
}
func _SeekPosition_OneofSizer(msg proto.Message) (n int) {
m := msg.(*SeekPosition)
// Type
switch x := m.Type.(type) {
case *SeekPosition_Newest:
s := proto.Size(x.Newest)
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *SeekPosition_Oldest:
s := proto.Size(x.Oldest)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *SeekPosition_Specified:
s := proto.Size(x.Specified)
n += proto.SizeVarint(3<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// SeekInfo specifies the range of requested blocks to return
// If the start position is not found, an error is immediately returned
// Otherwise, blocks are returned until a missing block is encountered, then behavior is dictated
// by the SeekBehavior specified. If BLOCK_UNTIL_READY is specified, the reply will block until
// the requested blocks are available, if FAIL_IF_NOT_READY is specified, the reply will return an
// error indicating that the block is not found. To request that all blocks be returned indefinitely
// as they are created, behavior should be set to BLOCK_UNTIL_READY and the stop should be set to
// specified with a number of MAX_UINT64
type SeekInfo struct {
Start *SeekPosition `protobuf:"bytes,1,opt,name=start" json:"start,omitempty"`
Stop *SeekPosition `protobuf:"bytes,2,opt,name=stop" json:"stop,omitempty"`
Behavior SeekInfo_SeekBehavior `protobuf:"varint,3,opt,name=behavior,enum=orderer.SeekInfo_SeekBehavior" json:"behavior,omitempty"`
}
func (m *SeekInfo) Reset() { *m = SeekInfo{} }
func (m *SeekInfo) String() string { return proto.CompactTextString(m) }
func (*SeekInfo) ProtoMessage() {}
func (*SeekInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *SeekInfo) GetStart() *SeekPosition {
if m != nil {
return m.Start
}
return nil
}
func (m *SeekInfo) GetStop() *SeekPosition {
if m != nil {
return m.Stop
}
return nil
}
type DeliverResponse struct {
// Types that are valid to be assigned to Type:
// *DeliverResponse_Status
// *DeliverResponse_Block
Type isDeliverResponse_Type `protobuf_oneof:"Type"`
}
func (m *DeliverResponse) Reset() { *m = DeliverResponse{} }
func (m *DeliverResponse) String() string { return proto.CompactTextString(m) }
func (*DeliverResponse) ProtoMessage() {}
func (*DeliverResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
type isDeliverResponse_Type interface {
isDeliverResponse_Type()
}
type DeliverResponse_Status struct {
Status common.Status `protobuf:"varint,1,opt,name=status,enum=common.Status,oneof"`
}
type DeliverResponse_Block struct {
Block *common.Block `protobuf:"bytes,2,opt,name=block,oneof"`
}
func (*DeliverResponse_Status) isDeliverResponse_Type() {}
func (*DeliverResponse_Block) isDeliverResponse_Type() {}
func (m *DeliverResponse) GetType() isDeliverResponse_Type {
if m != nil {
return m.Type
}
return nil
}
func (m *DeliverResponse) GetStatus() common.Status {
if x, ok := m.GetType().(*DeliverResponse_Status); ok {
return x.Status
}
return common.Status_UNKNOWN
}
func (m *DeliverResponse) GetBlock() *common.Block {
if x, ok := m.GetType().(*DeliverResponse_Block); ok {
return x.Block
}
return nil
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*DeliverResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _DeliverResponse_OneofMarshaler, _DeliverResponse_OneofUnmarshaler, _DeliverResponse_OneofSizer, []interface{}{
(*DeliverResponse_Status)(nil),
(*DeliverResponse_Block)(nil),
}
}
func _DeliverResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*DeliverResponse)
// Type
switch x := m.Type.(type) {
case *DeliverResponse_Status:
b.EncodeVarint(1<<3 | proto.WireVarint)
b.EncodeVarint(uint64(x.Status))
case *DeliverResponse_Block:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Block); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("DeliverResponse.Type has unexpected type %T", x)
}
return nil
}
func _DeliverResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*DeliverResponse)
switch tag {
case 1: // Type.status
if wire != proto.WireVarint {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeVarint()
m.Type = &DeliverResponse_Status{common.Status(x)}
return true, err
case 2: // Type.block
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(common.Block)
err := b.DecodeMessage(msg)
m.Type = &DeliverResponse_Block{msg}
return true, err
default:
return false, nil
}
}
func _DeliverResponse_OneofSizer(msg proto.Message) (n int) {
m := msg.(*DeliverResponse)
// Type
switch x := m.Type.(type) {
case *DeliverResponse_Status:
n += proto.SizeVarint(1<<3 | proto.WireVarint)
n += proto.SizeVarint(uint64(x.Status))
case *DeliverResponse_Block:
s := proto.Size(x.Block)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
func init() {
proto.RegisterType((*BroadcastResponse)(nil), "orderer.BroadcastResponse")
proto.RegisterType((*SeekNewest)(nil), "orderer.SeekNewest")
proto.RegisterType((*SeekOldest)(nil), "orderer.SeekOldest")
proto.RegisterType((*SeekSpecified)(nil), "orderer.SeekSpecified")
proto.RegisterType((*SeekPosition)(nil), "orderer.SeekPosition")
proto.RegisterType((*SeekInfo)(nil), "orderer.SeekInfo")
proto.RegisterType((*DeliverResponse)(nil), "orderer.DeliverResponse")
proto.RegisterEnum("orderer.SeekInfo_SeekBehavior", SeekInfo_SeekBehavior_name, SeekInfo_SeekBehavior_value)
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion3
// Client API for AtomicBroadcast service
type AtomicBroadcastClient interface {
// broadcast receives a reply of Acknowledgement for each common.Envelope in order, indicating success or type of failure
Broadcast(ctx context.Context, opts ...grpc.CallOption) (AtomicBroadcast_BroadcastClient, error)
// deliver first requires an Envelope of type DELIVER_SEEK_INFO with Payload data as a mashaled SeekInfo message, then a stream of block replies is received.
Deliver(ctx context.Context, opts ...grpc.CallOption) (AtomicBroadcast_DeliverClient, error)
}
type atomicBroadcastClient struct {
cc *grpc.ClientConn
}
func NewAtomicBroadcastClient(cc *grpc.ClientConn) AtomicBroadcastClient {
return &atomicBroadcastClient{cc}
}
func (c *atomicBroadcastClient) Broadcast(ctx context.Context, opts ...grpc.CallOption) (AtomicBroadcast_BroadcastClient, error) {
stream, err := grpc.NewClientStream(ctx, &_AtomicBroadcast_serviceDesc.Streams[0], c.cc, "/orderer.AtomicBroadcast/Broadcast", opts...)
if err != nil {
return nil, err
}
x := &atomicBroadcastBroadcastClient{stream}
return x, nil
}
type AtomicBroadcast_BroadcastClient interface {
Send(*common.Envelope) error
Recv() (*BroadcastResponse, error)
grpc.ClientStream
}
type atomicBroadcastBroadcastClient struct {
grpc.ClientStream
}
func (x *atomicBroadcastBroadcastClient) Send(m *common.Envelope) error {
return x.ClientStream.SendMsg(m)
}
func (x *atomicBroadcastBroadcastClient) Recv() (*BroadcastResponse, error) {
m := new(BroadcastResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *atomicBroadcastClient) Deliver(ctx context.Context, opts ...grpc.CallOption) (AtomicBroadcast_DeliverClient, error) {
stream, err := grpc.NewClientStream(ctx, &_AtomicBroadcast_serviceDesc.Streams[1], c.cc, "/orderer.AtomicBroadcast/Deliver", opts...)
if err != nil {
return nil, err
}
x := &atomicBroadcastDeliverClient{stream}
return x, nil
}
type AtomicBroadcast_DeliverClient interface {
Send(*common.Envelope) error
Recv() (*DeliverResponse, error)
grpc.ClientStream
}
type atomicBroadcastDeliverClient struct {
grpc.ClientStream
}
func (x *atomicBroadcastDeliverClient) Send(m *common.Envelope) error {
return x.ClientStream.SendMsg(m)
}
func (x *atomicBroadcastDeliverClient) Recv() (*DeliverResponse, error) {
m := new(DeliverResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// Server API for AtomicBroadcast service
type AtomicBroadcastServer interface {
// broadcast receives a reply of Acknowledgement for each common.Envelope in order, indicating success or type of failure
Broadcast(AtomicBroadcast_BroadcastServer) error
// deliver first requires an Envelope of type DELIVER_SEEK_INFO with Payload data as a mashaled SeekInfo message, then a stream of block replies is received.
Deliver(AtomicBroadcast_DeliverServer) error
}
func RegisterAtomicBroadcastServer(s *grpc.Server, srv AtomicBroadcastServer) {
s.RegisterService(&_AtomicBroadcast_serviceDesc, srv)
}
func _AtomicBroadcast_Broadcast_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(AtomicBroadcastServer).Broadcast(&atomicBroadcastBroadcastServer{stream})
}
type AtomicBroadcast_BroadcastServer interface {
Send(*BroadcastResponse) error
Recv() (*common.Envelope, error)
grpc.ServerStream
}
type atomicBroadcastBroadcastServer struct {
grpc.ServerStream
}
func (x *atomicBroadcastBroadcastServer) Send(m *BroadcastResponse) error {
return x.ServerStream.SendMsg(m)
}
func (x *atomicBroadcastBroadcastServer) Recv() (*common.Envelope, error) {
m := new(common.Envelope)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func _AtomicBroadcast_Deliver_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(AtomicBroadcastServer).Deliver(&atomicBroadcastDeliverServer{stream})
}
type AtomicBroadcast_DeliverServer interface {
Send(*DeliverResponse) error
Recv() (*common.Envelope, error)
grpc.ServerStream
}
type atomicBroadcastDeliverServer struct {
grpc.ServerStream
}
func (x *atomicBroadcastDeliverServer) Send(m *DeliverResponse) error {
return x.ServerStream.SendMsg(m)
}
func (x *atomicBroadcastDeliverServer) Recv() (*common.Envelope, error) {
m := new(common.Envelope)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
var _AtomicBroadcast_serviceDesc = grpc.ServiceDesc{
ServiceName: "orderer.AtomicBroadcast",
HandlerType: (*AtomicBroadcastServer)(nil),
Methods: []grpc.MethodDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "Broadcast",
Handler: _AtomicBroadcast_Broadcast_Handler,
ServerStreams: true,
ClientStreams: true,
},
{
StreamName: "Deliver",
Handler: _AtomicBroadcast_Deliver_Handler,
ServerStreams: true,
ClientStreams: true,
},
},
Metadata: fileDescriptor0,
}
func init() { proto.RegisterFile("orderer/ab.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 492 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x7c, 0x93, 0xdb, 0x6e, 0xd3, 0x4c,
0x10, 0xc7, 0xe3, 0xef, 0x4b, 0xd3, 0x76, 0x68, 0xd3, 0x74, 0xab, 0x56, 0x51, 0x2e, 0x10, 0xb2,
0x54, 0x08, 0x02, 0x6c, 0x14, 0x24, 0x2e, 0x28, 0x12, 0x8a, 0x69, 0xab, 0x44, 0x44, 0x09, 0x72,
0xd2, 0x0b, 0xb8, 0x89, 0x7c, 0x98, 0x24, 0xa6, 0x8e, 0xd7, 0xda, 0xdd, 0x04, 0xf5, 0x29, 0x78,
0x11, 0x1e, 0x89, 0x87, 0x41, 0x7b, 0xb0, 0x43, 0xa0, 0x70, 0x65, 0xcf, 0xcc, 0xef, 0x3f, 0x27,
0xcd, 0x42, 0x83, 0xb2, 0x18, 0x19, 0x32, 0x37, 0x08, 0x9d, 0x9c, 0x51, 0x41, 0xc9, 0xae, 0xf1,
0xb4, 0x4e, 0x22, 0xba, 0x5c, 0xd2, 0xcc, 0xd5, 0x1f, 0x1d, 0xb5, 0x2f, 0xe0, 0xd8, 0x63, 0x34,
0x88, 0xa3, 0x80, 0x0b, 0x1f, 0x79, 0x4e, 0x33, 0x8e, 0xe4, 0x31, 0xd4, 0xb8, 0x08, 0xc4, 0x8a,
0x37, 0xad, 0x47, 0x56, 0xbb, 0xde, 0xa9, 0x3b, 0x46, 0x33, 0x56, 0x5e, 0xdf, 0x44, 0xed, 0x03,
0x80, 0x31, 0xe2, 0xed, 0x10, 0xbf, 0x22, 0x17, 0x85, 0x35, 0x4a, 0x63, 0x69, 0x3d, 0x81, 0x43,
0x69, 0x8d, 0x73, 0x8c, 0x92, 0x59, 0x82, 0x31, 0x39, 0x83, 0x5a, 0xb6, 0x5a, 0x86, 0xc8, 0x54,
0xd2, 0xaa, 0x6f, 0x2c, 0xfb, 0xbb, 0x05, 0x07, 0x92, 0xfc, 0x48, 0x79, 0x22, 0x12, 0x9a, 0x91,
0x17, 0x50, 0xcb, 0x54, 0x46, 0x05, 0x3e, 0xe8, 0x9c, 0x38, 0x66, 0x02, 0x67, 0x53, 0xac, 0x57,
0xf1, 0x0d, 0x24, 0x71, 0xaa, 0x4a, 0x36, 0xff, 0xbb, 0x07, 0xd7, 0xdd, 0x48, 0x5c, 0x43, 0xe4,
0x35, 0xec, 0xf3, 0xa2, 0xa7, 0xe6, 0xff, 0x4a, 0x71, 0xb6, 0xa5, 0x28, 0x3b, 0xee, 0x55, 0xfc,
0x0d, 0xea, 0xd5, 0xa0, 0x3a, 0xb9, 0xcb, 0xd1, 0xfe, 0x61, 0xc1, 0x9e, 0xc4, 0xfa, 0xd9, 0x8c,
0x92, 0x67, 0xb0, 0xc3, 0x45, 0xc0, 0x8a, 0x4e, 0x4f, 0xb7, 0x12, 0x15, 0x03, 0xf9, 0x9a, 0x21,
0x4f, 0xa1, 0xca, 0x05, 0xcd, 0x4d, 0x9b, 0x7f, 0x61, 0x15, 0x42, 0xde, 0xc0, 0x5e, 0x88, 0x8b,
0x60, 0x9d, 0x50, 0xa6, 0x7a, 0xac, 0x77, 0x1e, 0x6e, 0xe1, 0xb2, 0xb8, 0xfa, 0xf1, 0x0c, 0xe5,
0x97, 0xbc, 0xfd, 0x56, 0xaf, 0xb3, 0x88, 0x90, 0x53, 0x38, 0xf6, 0x06, 0xa3, 0xf7, 0x1f, 0xa6,
0x37, 0xc3, 0x49, 0x7f, 0x30, 0xf5, 0xaf, 0xba, 0x97, 0x9f, 0x1a, 0x15, 0xe9, 0xbe, 0xee, 0xf6,
0x07, 0xd3, 0xfe, 0xf5, 0x74, 0x38, 0x9a, 0x18, 0xb7, 0x65, 0x7f, 0x81, 0xa3, 0x4b, 0x4c, 0x93,
0x35, 0xb2, 0xf2, 0x1a, 0xda, 0xff, 0xbe, 0x06, 0xb9, 0x5b, 0x1d, 0x27, 0xe7, 0xb0, 0x13, 0xa6,
0x34, 0xba, 0x35, 0x23, 0x1e, 0x16, 0xa0, 0x27, 0x9d, 0xbd, 0x8a, 0xaf, 0xa3, 0xc5, 0x2a, 0x3b,
0xdf, 0x2c, 0x38, 0xea, 0x0a, 0xba, 0x4c, 0xa2, 0xf2, 0x04, 0xc9, 0x3b, 0xd8, 0xdf, 0x18, 0x8d,
0x22, 0xc1, 0x55, 0xb6, 0xc6, 0x94, 0xe6, 0xd8, 0x6a, 0x95, 0x6b, 0xf8, 0xe3, 0x6a, 0xed, 0x4a,
0xdb, 0x7a, 0x69, 0x91, 0x0b, 0xd8, 0x35, 0x03, 0xdc, 0x23, 0x6f, 0x96, 0xf2, 0xdf, 0x86, 0xd4,
0x62, 0xef, 0x06, 0xce, 0x29, 0x9b, 0x3b, 0x8b, 0xbb, 0x1c, 0x59, 0x8a, 0xf1, 0x1c, 0x99, 0x33,
0x0b, 0x42, 0x96, 0x44, 0xfa, 0xb5, 0xf0, 0x42, 0xfe, 0xf9, 0xf9, 0x3c, 0x11, 0x8b, 0x55, 0x28,
0x0b, 0xb8, 0xbf, 0xd0, 0xae, 0xa6, 0x5d, 0x4d, 0xbb, 0x86, 0x0e, 0x6b, 0xca, 0x7e, 0xf5, 0x33,
0x00, 0x00, 0xff, 0xff, 0xee, 0xc5, 0xfc, 0x14, 0x9d, 0x03, 0x00, 0x00,
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/venjia/fabric.git
git@gitee.com:venjia/fabric.git
venjia
fabric
fabric
v1.0.0-alpha2

搜索帮助