Commit fac9d130 authored by harrylee's avatar harrylee

add get broker info command

parent 4652fb73
Pipeline #8377 failed with stages
in 0 seconds
......@@ -30,6 +30,7 @@ func Cmd() *cobra.Command {
InterchainSetRawTxCmd(),
Init_Broker(),
QueryStorageCmd(),
GetBrokerInfoCmd(),
)
return cmd
}
......@@ -314,3 +315,78 @@ func ParseStorage(res interface{}) (interface{}, error) {
}
return nil, fmt.Errorf("unknow storage type!")
}
func GetBrokerInfoCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "get",
Short: "get broker info",
Run: getBrokerInfo,
}
GetBrokerInfoFlags(cmd)
return cmd
}
func GetBrokerInfoFlags(cmd *cobra.Command) {
//cmd.Flags().StringP("key", "k", "", "get storage key, such as \"key\"")
//err := cmd.MarkFlagRequired("key")
//if err != nil {
// fmt.Printf("MarkFlagRequired get key Error: %v", err)
// return
//}
}
func getBrokerInfo(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName")
rpcLaddr, err := cmd.Flags().GetString("rpc_laddr")
if err != nil {
fmt.Printf("getStorage get rpc addr Error: %v", err)
return
}
brokerInfo, err := GetBrokerInfo(paraName, rpcLaddr)
if err != nil {
fmt.Println("QueryStorageBykey Error: %v", err)
return
}
fmt.Println(fmt.Sprintf("%s:%s:%s",brokerInfo.GetBxhId(),brokerInfo.GetAppChainId(),brokerInfo.GetServiceId()))
return
}
func GetBrokerInfo(prefix, rpcLaddr string) (*brokerty.BrokerInfo, error) {
params := &rpctypes.Query4Jrpc{
Execer: types.GetExecName(brokerty.BrokerX, prefix),
FuncName: brokerty.FuncNameGetBrokerInfo,
Payload: nil,
}
var res json.RawMessage
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.SetResultCb(ParseBrokerInfo)
data, err := ctx.RunResult()
if err != nil {
return nil, err
}
return data.(*brokerty.BrokerInfo), nil
}
// 回调解析函数
func ParseBrokerInfo(res interface{}) (interface{}, error) {
raw, ok := res.(*json.RawMessage)
if !ok {
return nil, fmt.Errorf("res is not json rawMessage type!")
}
js, err := NewJson(*raw)
if err != nil {
return nil, err
}
bxhId, _ := js.Get("bxhId").String()
appChainId, _ := js.Get("appChainId").String()
broker := &brokerty.BrokerInfo{
BxhId: bxhId,
AppChainId: appChainId,
XXX_NoUnkeyedLiteral: struct{}{},
XXX_unrecognized: nil,
XXX_sizecache: 0,
}
return broker, nil
}
......@@ -57,6 +57,7 @@ func (b *BrokerDB) initBroker(payload *brokertypes.Init) (*types.Receipt, error)
if b.fromaddr != getManagerAddr(b.api.GetConfig(), b.statedb, brokerAdmin, DefaultManagerAddr) {
return nil, fmt.Errorf("the addr %s is not admin", b.fromaddr)
}
brokerInfo := &brokertypes.BrokerInfo{AppChainId: payload.GetAppChainId(), BxhId: payload.GetBxhId(), ServiceId: b.api.GetConfig().GetTitle() + delimiter + "broker"}
m := make(map[string]uint64)
//初始化map,填充一些默认值,防止序列化后为nil
m["broker"] = 0
......@@ -70,7 +71,7 @@ func (b *BrokerDB) initBroker(payload *brokertypes.Init) (*types.Receipt, error)
kvsets = append(kvsets, &types.KeyValue{Key: calDstRollBackMetaKey(), Value: types.Encode(meta)})
receipt := &types.Receipt{Ty: types.ExecOk}
receipt.KV = append(receipt.KV, kvsets...)
receipt.KV = append(receipt.KV, &types.KeyValue{Key: BxhIDKey(), Value: types.Encode(payload)})
receipt.KV = append(receipt.KV, &types.KeyValue{Key: BxhIDKey(), Value: types.Encode(brokerInfo)})
receipt.Ty = brokertypes.TyInitLog
return receipt, nil
}
......@@ -89,7 +90,7 @@ func (b *BrokerDB) audit(payload *brokertypes.Audit) (*types.Receipt, error) {
func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt, error) {
//FIXME 权限检查
currentServiceID,err:= b.genFullServiceID(payload.DstServiceID)
currentServiceID, err := b.genFullServiceID(payload.DstServiceID)
if err != nil {
return nil, fmt.Errorf("can't get current service ID!")
}
......@@ -103,7 +104,7 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
payload.DstServiceID = currentServiceID
idx := meta.Meta[inServicePair]
if payload.SequenceNum != idx+1 {
return nil, fmt.Errorf("Req_Inner incorrect index,key %s expect %d,but get %d",inServicePair, idx+1,payload.SequenceNum)
return nil, fmt.Errorf("Req_Inner incorrect index,key %s expect %d,but get %d", inServicePair, idx+1, payload.SequenceNum)
}
meta.Meta[inServicePair] = idx + 1
kvset := b.GetMetaKVSet(payload.ReqType, meta)
......@@ -118,7 +119,7 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
}
idx := meta.Meta[outServicePair]
if payload.SequenceNum != idx+1 {
return nil, fmt.Errorf("Req_Callback incorrect index,key %s expect %d,but get %d",outServicePair, idx+1,payload.SequenceNum)
return nil, fmt.Errorf("Req_Callback incorrect index,key %s expect %d,but get %d", outServicePair, idx+1, payload.SequenceNum)
}
meta.Meta[outServicePair] = idx + 1
kvset := b.GetMetaKVSet(payload.ReqType, meta)
......@@ -133,7 +134,7 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
}
idx := meta.Meta[inServicePair]
if payload.SequenceNum < idx+1 {
return nil, fmt.Errorf("Req_DstRollback incorrect index,key %s expect %d,but get %d",inServicePair, idx+1,payload.SequenceNum)
return nil, fmt.Errorf("Req_DstRollback incorrect index,key %s expect %d,but get %d", inServicePair, idx+1, payload.SequenceNum)
}
meta.Meta[inServicePair] = payload.SequenceNum
kvset := b.GetMetaKVSet(payload.ReqType, meta)
......
......@@ -124,6 +124,8 @@ message BrokerInfo {
string bxhId =1;
//应用链ID
string appChainId = 2;
//服务ID
string serviceId = 3;
}
......
......@@ -25,6 +25,13 @@ const (
NameAuditAction = "Audit"
NameUpdateIndexAction = "UpdateIndex"
NameEmitInterchainEventAction = "EmitInterchainEvent"
FuncNameGetBrokerInfo = "GetBrokerInfo"
FuncNameQueryOutMessage = "QueryOutMessage"
FuncNameQueryInMessage = "QueryInMessage"
FuncNameQueryCallBackMeta = "QueryCallBackMeta"
FuncNameQueryOutterMeta = "QueryOutterMeta"
FuncNameQueryInnerMeta = "QueryInnerMeta"
)
// 请求类型
......
......@@ -923,7 +923,9 @@ type BrokerInfo struct {
//跨链协议版本ID
BxhId string `protobuf:"bytes,1,opt,name=bxhId,proto3" json:"bxhId,omitempty"`
//应用链ID
AppChainId string `protobuf:"bytes,2,opt,name=appChainId,proto3" json:"appChainId,omitempty"`
AppChainId string `protobuf:"bytes,2,opt,name=appChainId,proto3" json:"appChainId,omitempty"`
//服务ID
ServiceId string `protobuf:"bytes,3,opt,name=serviceId,proto3" json:"serviceId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -968,6 +970,13 @@ func (m *BrokerInfo) GetAppChainId() string {
return ""
}
func (m *BrokerInfo) GetServiceId() string {
if m != nil {
return m.ServiceId
}
return ""
}
type Meta struct {
Meta map[string]uint64 `protobuf:"bytes,1,rep,name=meta,proto3" json:"meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -1074,52 +1083,53 @@ func init() {
}
var fileDescriptor_f209535e190f2bed = []byte{
// 710 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xdd, 0x4e, 0xdb, 0x4a,
0x10, 0x8e, 0x1d, 0x3b, 0x24, 0x93, 0x40, 0x38, 0x0b, 0x07, 0x59, 0xe7, 0xe2, 0x94, 0xae, 0xb8,
0xa0, 0xad, 0x14, 0x24, 0x90, 0xda, 0xaa, 0xea, 0x4d, 0x42, 0x91, 0x92, 0x0a, 0x28, 0xdd, 0xb6,
0x52, 0xdb, 0x3b, 0xc7, 0x19, 0xc2, 0x96, 0xc4, 0x36, 0xeb, 0x35, 0x22, 0x8f, 0xd2, 0x37, 0xe9,
0x55, 0x5f, 0xa4, 0x2f, 0x53, 0xed, 0x0f, 0x89, 0x13, 0xa8, 0xaa, 0x22, 0xd4, 0x1b, 0xd8, 0xf9,
0x66, 0x76, 0x67, 0xf2, 0xcd, 0x7c, 0x63, 0x68, 0xf4, 0x45, 0x72, 0x8e, 0xa2, 0x95, 0x8a, 0x44,
0x26, 0xc4, 0x97, 0x93, 0x14, 0x33, 0xfa, 0xcd, 0x85, 0x46, 0x47, 0xe3, 0xed, 0x48, 0xf2, 0x24,
0x26, 0x0f, 0xc1, 0xe3, 0x31, 0x97, 0x81, 0xb3, 0xe9, 0x6c, 0xd7, 0x77, 0xeb, 0x2d, 0x1d, 0xd6,
0xea, 0xc5, 0x5c, 0x76, 0x4b, 0x4c, 0xbb, 0x48, 0x07, 0x9a, 0x02, 0x87, 0x3c, 0x93, 0x28, 0x0e,
0xae, 0x30, 0x92, 0x89, 0x08, 0x5c, 0x1d, 0xbd, 0x61, 0xa3, 0xd9, 0xbc, 0xb7, 0x5b, 0x62, 0x8b,
0x17, 0xc8, 0x16, 0xf8, 0x61, 0x3e, 0xe0, 0x32, 0x28, 0xeb, 0x9b, 0x0d, 0x7b, 0xb3, 0xad, 0xb0,
0x6e, 0x89, 0x19, 0x27, 0x79, 0x0d, 0x6b, 0x38, 0xe6, 0xb2, 0x17, 0x4b, 0x14, 0xd1, 0x59, 0xc8,
0xe3, 0x83, 0x4b, 0x8c, 0x65, 0xe0, 0xcd, 0x65, 0x5b, 0xf0, 0x76, 0x4b, 0xec, 0xb6, 0x4b, 0xe4,
0x29, 0xd4, 0xf3, 0x74, 0x10, 0x4a, 0xec, 0xc5, 0x03, 0xbc, 0x0a, 0x7c, 0xfd, 0x06, 0xb1, 0x6f,
0x7c, 0x98, 0x79, 0xba, 0x25, 0x56, 0x0c, 0x24, 0x2b, 0xe0, 0xca, 0x49, 0x50, 0xd9, 0x74, 0xb6,
0x7d, 0xe6, 0xca, 0x49, 0x67, 0x09, 0xfc, 0xcb, 0x70, 0x94, 0x23, 0x7d, 0x09, 0x9e, 0xa2, 0x85,
0xac, 0x83, 0xdf, 0xbf, 0x3a, 0xeb, 0x0d, 0x34, 0x65, 0x35, 0x66, 0x0c, 0xf2, 0x3f, 0x40, 0x98,
0xa6, 0xfb, 0x2a, 0x7f, 0x6f, 0xa0, 0xf9, 0xa9, 0xb1, 0x02, 0x42, 0xf7, 0xa0, 0xb9, 0x40, 0x13,
0xd9, 0x84, 0x3a, 0x9a, 0xe3, 0x71, 0x38, 0x46, 0xfb, 0x5c, 0x11, 0xa2, 0x6d, 0xf0, 0x35, 0x43,
0xbf, 0x0f, 0x25, 0x1b, 0x50, 0xc9, 0x64, 0x28, 0xf3, 0xcc, 0xe6, 0xb6, 0x16, 0xdd, 0x81, 0xc6,
0x49, 0x32, 0x1a, 0xf1, 0x78, 0x68, 0x68, 0x79, 0x00, 0xde, 0x18, 0x65, 0xb8, 0xd0, 0xef, 0x23,
0x94, 0x21, 0xd3, 0x0e, 0xfa, 0xdd, 0x81, 0x7a, 0x81, 0x1e, 0x95, 0x3a, 0xc3, 0x8b, 0x1c, 0xe3,
0x08, 0x8f, 0xf3, 0xb1, 0xbe, 0xe7, 0xb1, 0x22, 0x44, 0x28, 0x34, 0x06, 0x99, 0x7c, 0x87, 0xe2,
0x92, 0x47, 0xd8, 0x7b, 0x65, 0x0b, 0x98, 0xc3, 0x54, 0x4c, 0x26, 0xa2, 0x59, 0x4c, 0xd9, 0xc4,
0x14, 0x31, 0x12, 0xc0, 0x92, 0xc0, 0x8b, 0xf7, 0x93, 0x14, 0x75, 0xc7, 0x3d, 0x76, 0x6d, 0x92,
0x27, 0x50, 0x15, 0x98, 0xa5, 0x49, 0x9c, 0xa1, 0x6d, 0x64, 0x73, 0x3a, 0x7a, 0x06, 0x66, 0xd3,
0x00, 0xfa, 0xc3, 0x81, 0xe6, 0xe2, 0x30, 0xac, 0x83, 0xcf, 0xf5, 0x18, 0x98, 0xf2, 0x8d, 0x71,
0x6f, 0x85, 0x13, 0xf0, 0xe4, 0xac, 0x6a, 0x7d, 0x56, 0xd8, 0x69, 0x1e, 0x47, 0xba, 0xdc, 0x1a,
0xd3, 0x67, 0x85, 0x85, 0x62, 0x98, 0xe9, 0xe1, 0xaa, 0x31, 0x7d, 0x56, 0x7d, 0x53, 0xff, 0xa3,
0x7e, 0xb0, 0x64, 0xfa, 0x66, 0xac, 0x6b, 0x5c, 0xf4, 0x83, 0xea, 0x0c, 0x17, 0x7d, 0xfa, 0xd5,
0x85, 0x55, 0x86, 0x11, 0xf2, 0x54, 0x1a, 0x1d, 0x1f, 0x26, 0xc3, 0xdb, 0x14, 0xea, 0xdc, 0x59,
0xa1, 0xee, 0x1d, 0x14, 0x5a, 0xbe, 0x07, 0x85, 0x7a, 0x7f, 0xa6, 0x50, 0xff, 0xa6, 0x42, 0x25,
0xac, 0xbf, 0xcd, 0x51, 0x4c, 0xfe, 0x6a, 0xf7, 0x69, 0x1b, 0xd6, 0x74, 0xc2, 0xfd, 0x69, 0xc2,
0x43, 0x9e, 0x49, 0xf2, 0x18, 0xbc, 0x11, 0xcf, 0xd4, 0x62, 0x2d, 0xff, 0x9a, 0x1a, 0xa6, 0x63,
0x68, 0x13, 0x96, 0x75, 0xe1, 0xc7, 0x7c, 0x74, 0x12, 0x8a, 0x70, 0x4c, 0xff, 0x81, 0xa6, 0x06,
0xde, 0xe4, 0x52, 0xa2, 0x50, 0xea, 0xa4, 0xab, 0xb0, 0x62, 0x7f, 0x5c, 0x6c, 0x91, 0x8f, 0x53,
0xe4, 0x08, 0xb3, 0x2c, 0x1c, 0x22, 0xd9, 0x82, 0x65, 0x1e, 0xdb, 0xca, 0x4e, 0x42, 0x2e, 0xec,
0xa2, 0x98, 0x07, 0x17, 0x15, 0xed, 0xde, 0x50, 0x34, 0xfd, 0x34, 0x4b, 0x7f, 0xdf, 0x4f, 0x77,
0x00, 0xcc, 0xdc, 0xf6, 0xe2, 0xd3, 0xe4, 0x8e, 0xbb, 0xf4, 0x0b, 0x78, 0x8a, 0x00, 0xf2, 0x68,
0xba, 0xcb, 0x14, 0xc5, 0xff, 0x16, 0x76, 0x99, 0xfe, 0x73, 0x10, 0x4b, 0x31, 0x31, 0x5b, 0xed,
0xbf, 0x67, 0x50, 0x9b, 0x42, 0x64, 0x15, 0xca, 0xe7, 0x38, 0xb1, 0x39, 0xd5, 0x51, 0xd5, 0xa1,
0x47, 0xc8, 0x56, 0x6c, 0x8c, 0x17, 0xee, 0x73, 0x87, 0x52, 0xa8, 0x5e, 0xef, 0x98, 0xc2, 0x8e,
0x75, 0xf4, 0xf0, 0x59, 0x6b, 0xb7, 0x0a, 0x15, 0xf3, 0xad, 0xed, 0xc0, 0xe7, 0x6a, 0xab, 0xb5,
0xa3, 0xeb, 0xe8, 0x57, 0xf4, 0x87, 0x77, 0xef, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2a, 0x8f,
0x2d, 0x0d, 0x88, 0x07, 0x00, 0x00,
// 723 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x5f, 0x4f, 0xdb, 0x48,
0x10, 0x8f, 0x1d, 0x3b, 0x24, 0x93, 0x40, 0xb8, 0x85, 0x43, 0xd6, 0xe9, 0x74, 0xc7, 0xad, 0x78,
0xe0, 0x5a, 0x29, 0x48, 0x20, 0xb5, 0x55, 0xd5, 0x97, 0x84, 0x22, 0x25, 0x15, 0x50, 0xba, 0x6d,
0xa5, 0xb6, 0x4f, 0x75, 0x9c, 0x21, 0x6c, 0x49, 0x6c, 0xb3, 0x5e, 0x23, 0xf2, 0x51, 0xfa, 0x4d,
0xfa, 0xd4, 0x2f, 0xd2, 0x2f, 0x53, 0xed, 0x1f, 0x12, 0x27, 0x50, 0x55, 0x45, 0xa8, 0x2f, 0xc9,
0xce, 0x6f, 0x66, 0x76, 0xc6, 0x33, 0xf3, 0x9b, 0x85, 0x46, 0x5f, 0x24, 0xe7, 0x28, 0x5a, 0xa9,
0x48, 0x64, 0x42, 0x7c, 0x39, 0x49, 0x31, 0xa3, 0x5f, 0x5c, 0x68, 0x74, 0x34, 0xde, 0x8e, 0x24,
0x4f, 0x62, 0xf2, 0x1f, 0x78, 0x3c, 0xe6, 0x32, 0x70, 0x36, 0x9d, 0xed, 0xfa, 0x6e, 0xbd, 0xa5,
0xcd, 0x5a, 0xbd, 0x98, 0xcb, 0x6e, 0x89, 0x69, 0x15, 0xe9, 0x40, 0x53, 0xe0, 0x90, 0x67, 0x12,
0xc5, 0xc1, 0x15, 0x46, 0x32, 0x11, 0x81, 0xab, 0xad, 0x37, 0xac, 0x35, 0x9b, 0xd7, 0x76, 0x4b,
0x6c, 0xd1, 0x81, 0x6c, 0x81, 0x1f, 0xe6, 0x03, 0x2e, 0x83, 0xb2, 0xf6, 0x6c, 0x58, 0xcf, 0xb6,
0xc2, 0xba, 0x25, 0x66, 0x94, 0xe4, 0x05, 0xac, 0xe1, 0x98, 0xcb, 0x5e, 0x2c, 0x51, 0x44, 0x67,
0x21, 0x8f, 0x0f, 0x2e, 0x31, 0x96, 0x81, 0x37, 0x17, 0x6d, 0x41, 0xdb, 0x2d, 0xb1, 0xdb, 0x9c,
0xc8, 0x23, 0xa8, 0xe7, 0xe9, 0x20, 0x94, 0xd8, 0x8b, 0x07, 0x78, 0x15, 0xf8, 0xfa, 0x0e, 0x62,
0xef, 0x78, 0x3b, 0xd3, 0x74, 0x4b, 0xac, 0x68, 0x48, 0x56, 0xc0, 0x95, 0x93, 0xa0, 0xb2, 0xe9,
0x6c, 0xfb, 0xcc, 0x95, 0x93, 0xce, 0x12, 0xf8, 0x97, 0xe1, 0x28, 0x47, 0xfa, 0x0c, 0x3c, 0x55,
0x16, 0xb2, 0x0e, 0x7e, 0xff, 0xea, 0xac, 0x37, 0xd0, 0x25, 0xab, 0x31, 0x23, 0x90, 0x7f, 0x00,
0xc2, 0x34, 0xdd, 0x57, 0xf1, 0x7b, 0x03, 0x5d, 0x9f, 0x1a, 0x2b, 0x20, 0x74, 0x0f, 0x9a, 0x0b,
0x65, 0x22, 0x9b, 0x50, 0x47, 0x73, 0x3c, 0x0e, 0xc7, 0x68, 0xaf, 0x2b, 0x42, 0xb4, 0x0d, 0xbe,
0xae, 0xd0, 0xcf, 0x4d, 0xc9, 0x06, 0x54, 0x32, 0x19, 0xca, 0x3c, 0xb3, 0xb1, 0xad, 0x44, 0x77,
0xa0, 0x71, 0x92, 0x8c, 0x46, 0x3c, 0x1e, 0x9a, 0xb2, 0xfc, 0x0b, 0xde, 0x18, 0x65, 0xb8, 0xd0,
0xef, 0x23, 0x94, 0x21, 0xd3, 0x0a, 0xfa, 0xd5, 0x81, 0x7a, 0xa1, 0x3c, 0x2a, 0x74, 0x86, 0x17,
0x39, 0xc6, 0x11, 0x1e, 0xe7, 0x63, 0xed, 0xe7, 0xb1, 0x22, 0x44, 0x28, 0x34, 0x06, 0x99, 0x7c,
0x8d, 0xe2, 0x92, 0x47, 0xd8, 0x7b, 0x6e, 0x13, 0x98, 0xc3, 0x94, 0x4d, 0x26, 0xa2, 0x99, 0x4d,
0xd9, 0xd8, 0x14, 0x31, 0x12, 0xc0, 0x92, 0xc0, 0x8b, 0x37, 0x93, 0x14, 0x75, 0xc7, 0x3d, 0x76,
0x2d, 0x92, 0x87, 0x50, 0x15, 0x98, 0xa5, 0x49, 0x9c, 0xa1, 0x6d, 0x64, 0x73, 0x3a, 0x7a, 0x06,
0x66, 0x53, 0x03, 0xfa, 0xcd, 0x81, 0xe6, 0xe2, 0x30, 0xac, 0x83, 0xcf, 0xf5, 0x18, 0x98, 0xf4,
0x8d, 0x70, 0x6f, 0x89, 0x13, 0xf0, 0xe4, 0x2c, 0x6b, 0x7d, 0x56, 0xd8, 0x69, 0x1e, 0x47, 0x3a,
0xdd, 0x1a, 0xd3, 0x67, 0x85, 0x85, 0x62, 0x98, 0xe9, 0xe1, 0xaa, 0x31, 0x7d, 0x56, 0x7d, 0x53,
0xff, 0x51, 0x3f, 0x58, 0x32, 0x7d, 0x33, 0xd2, 0x35, 0x2e, 0xfa, 0x41, 0x75, 0x86, 0x8b, 0x3e,
0xfd, 0xec, 0xc2, 0x2a, 0xc3, 0x08, 0x79, 0x2a, 0x0d, 0x8f, 0x0f, 0x93, 0xe1, 0x6d, 0x0c, 0x75,
0xee, 0xcc, 0x50, 0xf7, 0x0e, 0x0c, 0x2d, 0xdf, 0x03, 0x43, 0xbd, 0x5f, 0x63, 0xa8, 0x7f, 0x93,
0xa1, 0x12, 0xd6, 0x5f, 0xe5, 0x28, 0x26, 0xbf, 0xb5, 0xfb, 0xb4, 0x0d, 0x6b, 0x3a, 0xe0, 0xfe,
0x34, 0xe0, 0x21, 0xcf, 0x24, 0x79, 0x00, 0xde, 0x88, 0x67, 0x6a, 0xb1, 0x96, 0x7f, 0x5c, 0x1a,
0xa6, 0x6d, 0x68, 0x13, 0x96, 0x75, 0xe2, 0xc7, 0x7c, 0x74, 0x12, 0x8a, 0x70, 0x4c, 0xff, 0x80,
0xa6, 0x06, 0x5e, 0xe6, 0x52, 0xa2, 0x50, 0xec, 0xa4, 0xab, 0xb0, 0x62, 0x3f, 0x2e, 0xb6, 0xc8,
0xbb, 0x29, 0x72, 0x84, 0x59, 0x16, 0x0e, 0x91, 0x6c, 0xc1, 0x32, 0x8f, 0x6d, 0x66, 0x27, 0x21,
0x17, 0x76, 0x51, 0xcc, 0x83, 0x8b, 0x8c, 0x76, 0x6f, 0x30, 0x9a, 0xbe, 0x9f, 0x85, 0xbf, 0xef,
0xab, 0x3f, 0x02, 0x98, 0xb9, 0xed, 0xc5, 0xa7, 0xc9, 0xdd, 0x76, 0x29, 0xf9, 0x1b, 0x6a, 0x99,
0x2d, 0xff, 0xc0, 0xb6, 0x64, 0x06, 0xd0, 0x4f, 0xe0, 0xa9, 0xf2, 0x90, 0xff, 0xa7, 0x9b, 0x4e,
0x35, 0xe0, 0xcf, 0xc2, 0xa6, 0xd3, 0x3f, 0x07, 0xb1, 0x14, 0x13, 0xb3, 0xf3, 0xfe, 0x7a, 0x0c,
0xb5, 0x29, 0x44, 0x56, 0xa1, 0x7c, 0x8e, 0x13, 0x9b, 0x91, 0x3a, 0xaa, 0x2c, 0xf5, 0x80, 0xd9,
0xef, 0x31, 0xc2, 0x53, 0xf7, 0x89, 0x43, 0x29, 0x54, 0xaf, 0x37, 0x50, 0x61, 0x03, 0x3b, 0x7a,
0x34, 0xad, 0xb4, 0x5b, 0x85, 0x8a, 0x79, 0x89, 0x3b, 0xf0, 0xa1, 0xda, 0x6a, 0xed, 0xe8, 0x3c,
0xfa, 0x15, 0xfd, 0x2c, 0xef, 0x7d, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xbd, 0xc5, 0xb3, 0x5e, 0xa6,
0x07, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment