Commit ee7a9adf authored by harrylee's avatar harrylee Committed by vipwzw

add value field for storage

parent 28885ad0
...@@ -55,9 +55,16 @@ func (s *StorageAction) ContentStorage(payload *ety.ContentOnlyNotaryStorage) (* ...@@ -55,9 +55,16 @@ func (s *StorageAction) ContentStorage(payload *ety.ContentOnlyNotaryStorage) (*
if err == nil && storage.Ty != ety.TyContentStorageAction { if err == nil && storage.Ty != ety.TyContentStorageAction {
return nil, ety.ErrStorageType return nil, ety.ErrStorageType
} }
if payload.GetContent() != nil {
content := append(storage.GetContentStorage().Content, []byte(",")...) content := append(storage.GetContentStorage().Content, []byte(",")...)
payload.Content = append(content, payload.Content...) payload.Content = append(content, payload.Content...)
} }
if payload.GetValue() != "" {
value := storage.GetContentStorage().GetValue() + "," + payload.GetValue()
payload.Value = value
}
}
stg := &ety.Storage{Value: &ety.Storage_ContentStorage{ContentStorage: payload}, Ty: ety.TyContentStorageAction} stg := &ety.Storage{Value: &ety.Storage_ContentStorage{ContentStorage: payload}, Ty: ety.TyContentStorageAction}
log := &types.ReceiptLog{Ty: ety.TyContentStorageLog, Log: types.Encode(stg)} log := &types.ReceiptLog{Ty: ety.TyContentStorageLog, Log: types.Encode(stg)}
logs = append(logs, log) logs = append(logs, log)
......
...@@ -30,6 +30,8 @@ message ContentOnlyNotaryStorage { ...@@ -30,6 +30,8 @@ message ContentOnlyNotaryStorage {
bytes content = 2; bytes content = 2;
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
string key = 3; string key = 3;
//字符串值
string value = 4;
} }
//哈希存证模型,推荐使用sha256哈希,限制256位得摘要值 //哈希存证模型,推荐使用sha256哈希,限制256位得摘要值
...@@ -39,6 +41,8 @@ message HashOnlyNotaryStorage { ...@@ -39,6 +41,8 @@ message HashOnlyNotaryStorage {
bytes hash = 1; bytes hash = 1;
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
string key = 2; string key = 2;
//字符串值
string value = 3;
} }
// 链接存证模型 // 链接存证模型
...@@ -49,6 +53,8 @@ message LinkNotaryStorage { ...@@ -49,6 +53,8 @@ message LinkNotaryStorage {
bytes hash = 2; bytes hash = 2;
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
string key = 3; string key = 3;
//字符串值
string value = 4;
} }
// 隐私存证模型,如果一个文件需要存证,且不公开内容,可以选择将源文件通过对称加密算法加密后上链 // 隐私存证模型,如果一个文件需要存证,且不公开内容,可以选择将源文件通过对称加密算法加密后上链
...@@ -61,6 +67,8 @@ message EncryptNotaryStorage { ...@@ -61,6 +67,8 @@ message EncryptNotaryStorage {
bytes nonce = 3; bytes nonce = 3;
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
string key = 4; string key = 4;
//字符串值
string value = 5;
} }
// 分享隐私存证模型,需要完备的sdk或者相应的密钥库支持 // 分享隐私存证模型,需要完备的sdk或者相应的密钥库支持
...@@ -73,6 +81,8 @@ message EncryptShareNotaryStorage { ...@@ -73,6 +81,8 @@ message EncryptShareNotaryStorage {
bytes pubKey = 3; bytes pubKey = 3;
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
string key = 4; string key = 4;
//字符串值
string value = 5;
} }
service storage {} service storage {}
......
...@@ -298,6 +298,8 @@ type ContentOnlyNotaryStorage struct { ...@@ -298,6 +298,8 @@ type ContentOnlyNotaryStorage struct {
Content []byte `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` Content []byte `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
//字符串值
Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -349,12 +351,21 @@ func (m *ContentOnlyNotaryStorage) GetKey() string { ...@@ -349,12 +351,21 @@ func (m *ContentOnlyNotaryStorage) GetKey() string {
return "" return ""
} }
func (m *ContentOnlyNotaryStorage) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
//哈希存证模型,推荐使用sha256哈希,限制256位得摘要值 //哈希存证模型,推荐使用sha256哈希,限制256位得摘要值
type HashOnlyNotaryStorage struct { type HashOnlyNotaryStorage struct {
//长度固定为32字节 //长度固定为32字节
Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
//字符串值
Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -399,6 +410,13 @@ func (m *HashOnlyNotaryStorage) GetKey() string { ...@@ -399,6 +410,13 @@ func (m *HashOnlyNotaryStorage) GetKey() string {
return "" return ""
} }
func (m *HashOnlyNotaryStorage) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
// 链接存证模型 // 链接存证模型
type LinkNotaryStorage struct { type LinkNotaryStorage struct {
//存证内容的链接,可以写入URL,或者其他可用于定位源文件得线索. //存证内容的链接,可以写入URL,或者其他可用于定位源文件得线索.
...@@ -407,6 +425,8 @@ type LinkNotaryStorage struct { ...@@ -407,6 +425,8 @@ type LinkNotaryStorage struct {
Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` Key string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
//字符串值
Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -458,6 +478,13 @@ func (m *LinkNotaryStorage) GetKey() string { ...@@ -458,6 +478,13 @@ func (m *LinkNotaryStorage) GetKey() string {
return "" return ""
} }
func (m *LinkNotaryStorage) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
// 隐私存证模型,如果一个文件需要存证,且不公开内容,可以选择将源文件通过对称加密算法加密后上链 // 隐私存证模型,如果一个文件需要存证,且不公开内容,可以选择将源文件通过对称加密算法加密后上链
type EncryptNotaryStorage struct { type EncryptNotaryStorage struct {
//存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值 //存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值
...@@ -468,6 +495,8 @@ type EncryptNotaryStorage struct { ...@@ -468,6 +495,8 @@ type EncryptNotaryStorage struct {
Nonce []byte `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` Nonce []byte `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"`
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
//字符串值
Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -526,6 +555,13 @@ func (m *EncryptNotaryStorage) GetKey() string { ...@@ -526,6 +555,13 @@ func (m *EncryptNotaryStorage) GetKey() string {
return "" return ""
} }
func (m *EncryptNotaryStorage) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
// 分享隐私存证模型,需要完备的sdk或者相应的密钥库支持 // 分享隐私存证模型,需要完备的sdk或者相应的密钥库支持
type EncryptShareNotaryStorage struct { type EncryptShareNotaryStorage struct {
//存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值 //存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值
...@@ -536,6 +572,8 @@ type EncryptShareNotaryStorage struct { ...@@ -536,6 +572,8 @@ type EncryptShareNotaryStorage struct {
PubKey []byte `protobuf:"bytes,3,opt,name=pubKey,proto3" json:"pubKey,omitempty"` PubKey []byte `protobuf:"bytes,3,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
//自定义的主键,可以为空,如果没传,则用txhash为key //自定义的主键,可以为空,如果没传,则用txhash为key
Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
//字符串值
Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -594,6 +632,13 @@ func (m *EncryptShareNotaryStorage) GetKey() string { ...@@ -594,6 +632,13 @@ func (m *EncryptShareNotaryStorage) GetKey() string {
return "" return ""
} }
func (m *EncryptShareNotaryStorage) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
//根据txhash去状态数据库中查询存储内容 //根据txhash去状态数据库中查询存储内容
type QueryStorage struct { type QueryStorage struct {
TxHash string `protobuf:"bytes,1,opt,name=txHash,proto3" json:"txHash,omitempty"` TxHash string `protobuf:"bytes,1,opt,name=txHash,proto3" json:"txHash,omitempty"`
...@@ -763,37 +808,38 @@ func init() { ...@@ -763,37 +808,38 @@ func init() {
} }
var fileDescriptor_0d2c4ccf1453ffdb = []byte{ var fileDescriptor_0d2c4ccf1453ffdb = []byte{
// 470 bytes of a gzipped FileDescriptorProto // 487 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0x4d, 0x8b, 0xd4, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x95, 0xcd, 0x8e, 0x94, 0x40,
0x10, 0x35, 0xc9, 0x64, 0xe2, 0x54, 0xb2, 0x61, 0xb7, 0x5d, 0x97, 0x88, 0x82, 0x21, 0x87, 0x65, 0x10, 0xc7, 0x05, 0x86, 0x41, 0x0a, 0x96, 0xec, 0xb6, 0xeb, 0x06, 0xa3, 0x89, 0x84, 0xc3, 0x66,
0x10, 0x9c, 0xc3, 0x78, 0x55, 0xd4, 0x5d, 0x16, 0x46, 0xfc, 0xc2, 0x56, 0xbc, 0x67, 0x43, 0x63, 0x62, 0xe2, 0x1c, 0xc6, 0xab, 0x89, 0xba, 0x9b, 0x4d, 0xc6, 0x68, 0x34, 0xf6, 0xfa, 0x02, 0x2c,
0x86, 0x09, 0xdd, 0x21, 0xe9, 0x11, 0xf3, 0x0f, 0xc4, 0x8b, 0xfe, 0x64, 0x49, 0xa7, 0x3a, 0x1f, 0xe9, 0xc8, 0x64, 0x48, 0x37, 0x81, 0x1e, 0x23, 0xaf, 0xe0, 0xc9, 0x27, 0xf0, 0xe6, 0x7b, 0x1a,
0x93, 0xec, 0x4d, 0xf0, 0xb2, 0xb7, 0xae, 0xaa, 0xf7, 0x5e, 0xaa, 0x5e, 0x75, 0x1a, 0x8e, 0x4a, 0x9a, 0x6a, 0x16, 0x06, 0x26, 0x7a, 0x30, 0xf1, 0xb2, 0xb7, 0xae, 0xae, 0x7f, 0xfd, 0xea, 0x0b,
0x29, 0x8a, 0xf8, 0x1b, 0x5b, 0xe5, 0x85, 0x90, 0x82, 0xd8, 0xb2, 0xca, 0x59, 0x19, 0xfd, 0xb2, 0xd2, 0x70, 0x54, 0x49, 0x51, 0x26, 0x5f, 0xd8, 0xb2, 0x28, 0x85, 0x14, 0xc4, 0x96, 0x75, 0xc1,
0xc0, 0xf9, 0xdc, 0x14, 0xc8, 0x1b, 0xf0, 0x13, 0xc1, 0x25, 0xe3, 0x12, 0x33, 0x81, 0x11, 0x1a, 0xaa, 0xf8, 0xbb, 0x05, 0xce, 0x75, 0xeb, 0x20, 0x6f, 0x21, 0x48, 0x05, 0x97, 0x8c, 0x4b, 0xbc,
0x4b, 0x77, 0xfd, 0x78, 0xa5, 0xb0, 0xab, 0xcb, 0xa6, 0xf8, 0x91, 0x67, 0xd5, 0x07, 0x21, 0xe3, 0x09, 0x8d, 0xc8, 0x58, 0x78, 0xab, 0xa7, 0x4b, 0xa5, 0x5d, 0x5e, 0xb6, 0xce, 0x8f, 0x3c, 0xaf,
0xa2, 0x42, 0xd8, 0xe6, 0x0e, 0x3d, 0x20, 0x92, 0x57, 0xe0, 0xa6, 0x71, 0x99, 0x6a, 0x1d, 0x53, 0x3f, 0x08, 0x99, 0x94, 0x35, 0xca, 0xd6, 0xf7, 0xe8, 0x5e, 0x20, 0x79, 0x0d, 0x5e, 0x96, 0x54,
0xe9, 0x3c, 0x42, 0x9d, 0x4d, 0x5c, 0xa6, 0x53, 0x22, 0x7d, 0x0a, 0x79, 0x0e, 0x6e, 0xb6, 0xe5, 0x99, 0xe6, 0x98, 0x8a, 0xf3, 0x04, 0x39, 0xeb, 0xa4, 0xca, 0xa6, 0x20, 0xfd, 0x10, 0xf2, 0x12,
0x3b, 0xad, 0x60, 0x29, 0x85, 0x00, 0x15, 0xde, 0x6d, 0xf9, 0x6e, 0xc4, 0xee, 0xc1, 0xc9, 0x15, 0xbc, 0x7c, 0xc3, 0xb7, 0x9a, 0x60, 0x29, 0x42, 0x88, 0x84, 0xf7, 0x1b, 0xbe, 0x1d, 0x45, 0xf7,
0xf8, 0x8c, 0x27, 0x45, 0x95, 0xb7, 0xa3, 0xcc, 0x94, 0xc0, 0x43, 0x14, 0xb8, 0x6a, 0x8a, 0xa3, 0xe4, 0xe4, 0x0a, 0x02, 0xc6, 0xd3, 0xb2, 0x2e, 0xba, 0x56, 0x66, 0x0a, 0xf0, 0x18, 0x01, 0x57,
0x31, 0x86, 0x24, 0xf2, 0x05, 0xee, 0xe9, 0x4c, 0x1a, 0x17, 0x4c, 0x6b, 0xd9, 0x4a, 0x2b, 0x1c, 0xad, 0x73, 0xd4, 0xc6, 0x30, 0x88, 0x7c, 0x86, 0x07, 0xfa, 0x26, 0x4b, 0x4a, 0xa6, 0x59, 0xb6,
0x6a, 0x29, 0xc4, 0xa1, 0xe0, 0x14, 0x9d, 0xf8, 0x60, 0xca, 0x2a, 0x98, 0x87, 0xc6, 0xd2, 0xa6, 0x62, 0x45, 0x43, 0x96, 0x52, 0xec, 0x03, 0xa7, 0xc2, 0x49, 0x00, 0xa6, 0xac, 0xc3, 0x79, 0x64,
0xa6, 0xac, 0x2e, 0x1c, 0xb0, 0xbf, 0xc7, 0xd9, 0x9e, 0x45, 0x7f, 0x2c, 0x38, 0x42, 0xd0, 0xeb, 0x2c, 0x6c, 0x6a, 0xca, 0xfa, 0xc2, 0x01, 0xfb, 0x6b, 0x92, 0xef, 0x58, 0xfc, 0xc3, 0x82, 0x23,
0x44, 0x6e, 0x05, 0xbf, 0x5d, 0xc9, 0xff, 0x5e, 0xc9, 0x57, 0x08, 0x6e, 0xf2, 0xb8, 0x26, 0x89, 0x14, 0xbd, 0x49, 0xe5, 0x46, 0xf0, 0xbb, 0x95, 0xfc, 0xef, 0x95, 0xe4, 0x10, 0x1e, 0x9a, 0x71,
0x5c, 0x2d, 0xc4, 0xa6, 0xa6, 0xc8, 0x49, 0x00, 0x0e, 0x7a, 0xae, 0xdc, 0xf5, 0xa8, 0x0e, 0xc9, 0x13, 0x24, 0x0a, 0xb5, 0x10, 0x9b, 0x9a, 0xa2, 0x20, 0x21, 0x38, 0x38, 0x73, 0x35, 0x5d, 0x9f,
0x31, 0x58, 0x3b, 0x56, 0x29, 0xc7, 0x16, 0xb4, 0x3e, 0x46, 0x2f, 0xe0, 0xfe, 0xa4, 0xe7, 0x84, 0x6a, 0x93, 0x1c, 0x83, 0xb5, 0x65, 0xb5, 0x9a, 0x98, 0x4b, 0x9b, 0x23, 0x39, 0xc5, 0x04, 0x6a,
0xc0, 0xac, 0xf6, 0x5c, 0xc9, 0x7a, 0x54, 0x9d, 0x35, 0xdd, 0xec, 0xe8, 0xef, 0xe1, 0x64, 0x64, 0x08, 0x2e, 0xc5, 0x6c, 0xd7, 0xf0, 0x70, 0x72, 0x13, 0x84, 0xc0, 0xac, 0xd9, 0x84, 0x4a, 0xe6,
0x78, 0x4d, 0xad, 0x0d, 0xd7, 0xd4, 0xfa, 0xdc, 0xca, 0x99, 0x63, 0xb9, 0x5e, 0x37, 0x3f, 0x0d, 0x53, 0x75, 0xd6, 0x50, 0x73, 0x02, 0x6a, 0xf5, 0xa1, 0x29, 0x9c, 0x8c, 0x96, 0xd3, 0x00, 0x9b,
0x38, 0x9d, 0xf2, 0x9f, 0x84, 0xe0, 0xe2, 0x0c, 0x9b, 0xae, 0xa9, 0x7e, 0x8a, 0x9c, 0xb7, 0x6b, 0xe5, 0x68, 0x60, 0x73, 0xee, 0x92, 0x98, 0xe3, 0x24, 0x7f, 0xac, 0xfc, 0xa7, 0x01, 0xa7, 0x53,
0xbd, 0x1c, 0xcc, 0x7e, 0x90, 0x25, 0xa7, 0x60, 0x73, 0xc1, 0x93, 0xe6, 0xda, 0x78, 0xb4, 0x09, 0x1b, 0x24, 0x11, 0x78, 0x38, 0x85, 0xf5, 0x6d, 0x03, 0xfd, 0x2b, 0x72, 0xde, 0x7d, 0x18, 0x97,
0x74, 0x2b, 0xb3, 0xae, 0x95, 0xdf, 0x06, 0x3c, 0xb8, 0x71, 0x7d, 0xff, 0xb0, 0x9f, 0x33, 0x98, 0x83, 0xe9, 0xed, 0xdd, 0x36, 0x89, 0xb9, 0xe0, 0x69, 0xdb, 0x9d, 0x4f, 0x5b, 0x43, 0x17, 0x38,
0xe7, 0xfb, 0xeb, 0xb7, 0xe8, 0x83, 0x47, 0x31, 0x9a, 0xe8, 0xe8, 0x1c, 0xbc, 0x4f, 0x7b, 0xd6, 0x9b, 0x28, 0xd0, 0xee, 0x17, 0xf8, 0xcb, 0x80, 0x47, 0x07, 0x3f, 0x8b, 0x7f, 0x58, 0xe5, 0x19,
0xf5, 0x70, 0x06, 0x73, 0xf9, 0xa3, 0xfd, 0xfc, 0x82, 0x62, 0x14, 0x3d, 0x85, 0x93, 0x8b, 0x58, 0xcc, 0x8b, 0xdd, 0xcd, 0x3b, 0x9c, 0x99, 0x4f, 0xd1, 0xfa, 0xeb, 0x3a, 0xcf, 0xc1, 0xff, 0xb4,
0x26, 0xe9, 0x00, 0x1c, 0x80, 0xd3, 0x94, 0xcb, 0xc0, 0x08, 0xad, 0xe5, 0x82, 0xea, 0x30, 0x7a, 0x63, 0xb7, 0x95, 0x9d, 0xc1, 0x5c, 0x7e, 0xeb, 0x8a, 0x72, 0x29, 0x5a, 0xf1, 0x73, 0x38, 0xb9,
0x89, 0x70, 0xca, 0xf2, 0xac, 0x85, 0x3f, 0x81, 0xbb, 0xf8, 0x4c, 0x37, 0x78, 0x77, 0xed, 0xe3, 0x48, 0x64, 0x9a, 0x0d, 0xc4, 0x21, 0x38, 0xad, 0xbb, 0x0a, 0x8d, 0xc8, 0x5a, 0xb8, 0x54, 0x9b,
0x95, 0x46, 0x04, 0x6d, 0xeb, 0xd1, 0x31, 0xf8, 0x94, 0x25, 0x6c, 0xdb, 0xfe, 0x1b, 0xeb, 0x05, 0xf1, 0x2b, 0x94, 0x53, 0x56, 0xe4, 0x9d, 0xfc, 0x19, 0xdc, 0xc7, 0x47, 0xa1, 0xd5, 0x7b, 0xab,
0x38, 0x58, 0xbd, 0x9e, 0xab, 0x57, 0xfe, 0xd9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2c, 0xe3, 0x00, 0x7f, 0x20, 0x54, 0xd0, 0xce, 0x1f, 0x1f, 0x43, 0x40, 0x59, 0xca, 0x36, 0xdd, 0x9f, 0xb8,
0xe3, 0x53, 0xf6, 0x05, 0x00, 0x00, 0x72, 0xc1, 0x41, 0xef, 0xcd, 0x5c, 0xbd, 0x29, 0x2f, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0x4a,
0xd4, 0x84, 0x62, 0x64, 0x06, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // 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