Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
ce15f935
Commit
ce15f935
authored
Jan 28, 2021
by
madengji
Committed by
vipwzw
Sep 18, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add role
parent
6e5bf601
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
283 additions
and
241 deletions
+283
-241
authorize.go
plugin/dapp/mix/executor/authorize.go
+1
-1
committree.go
plugin/dapp/mix/executor/committree.go
+15
-15
config.go
plugin/dapp/mix/executor/config.go
+4
-4
query.go
plugin/dapp/mix/executor/query.go
+4
-4
mix.proto
plugin/dapp/mix/proto/mix.proto
+22
-16
mix.pb.go
plugin/dapp/mix/types/mix.pb.go
+220
-188
mixbizdb.go
plugin/dapp/mix/wallet/mixbizdb.go
+7
-3
proof.go
plugin/dapp/mix/wallet/proof.go
+10
-10
No files found.
plugin/dapp/mix/executor/authorize.go
View file @
ce15f935
...
...
@@ -38,7 +38,7 @@ func (a *action) authParamCheck(input *mixTy.AuthorizePublicInput) error {
//authorize pubkey hash should be configured already
var
found
bool
for
_
,
k
:=
range
authPubKeys
.
Data
{
for
_
,
k
:=
range
authPubKeys
.
Pks
{
if
input
.
AuthorizePubKey
==
k
{
found
=
true
break
...
...
plugin/dapp/mix/executor/committree.go
View file @
ce15f935
...
...
@@ -87,7 +87,7 @@ func getNewTree() *merkletree.Tree {
func
calcTreeRoot
(
leaves
*
mixTy
.
CommitTreeLeaves
)
[]
byte
{
tree
:=
getNewTree
()
for
_
,
leaf
:=
range
leaves
.
Data
{
for
_
,
leaf
:=
range
leaves
.
Leaves
{
tree
.
Push
(
leaf
)
}
return
tree
.
Root
()
...
...
@@ -100,8 +100,8 @@ func getNewCommitLeaves() (*mixTy.CommitTreeLeaves, *mixTy.CommitTreeRoots) {
//第一个叶子节点都是固定的"00"字节
leaf
:=
[]
byte
(
"00"
)
leaves
.
Data
=
append
(
leaves
.
Data
,
leaf
)
roots
.
Data
=
append
(
roots
.
Data
,
calcTreeRoot
(
leaves
))
leaves
.
Leaves
=
append
(
leaves
.
Leaves
,
leaf
)
roots
.
Roots
=
append
(
roots
.
Roots
,
calcTreeRoot
(
leaves
))
return
leaves
,
roots
}
...
...
@@ -109,8 +109,8 @@ func getNewCommitLeaves() (*mixTy.CommitTreeLeaves, *mixTy.CommitTreeRoots) {
func
initNewLeaves
(
leaf
[][]
byte
)
*
types
.
Receipt
{
leaves
,
roots
:=
getNewCommitLeaves
()
if
len
(
leaf
)
>
0
{
leaves
.
Data
=
append
(
leaves
.
Data
,
leaf
...
)
roots
.
Data
=
append
(
roots
.
Data
,
calcTreeRoot
(
leaves
))
leaves
.
Leaves
=
append
(
leaves
.
Leaves
,
leaf
...
)
roots
.
Roots
=
append
(
roots
.
Roots
,
calcTreeRoot
(
leaves
))
}
return
makeCurrentTreeReceipt
(
leaves
,
roots
)
...
...
@@ -127,7 +127,7 @@ func archiveRoots(db dbm.KV, root []byte, leaves *mixTy.CommitTreeLeaves) (*type
if
err
!=
nil
{
return
nil
,
err
}
archiveRoots
.
Data
=
append
(
archiveRoots
.
Data
,
root
)
archiveRoots
.
Roots
=
append
(
archiveRoots
.
Roots
,
root
)
receiptArch
:=
makeTreeArchiveRootsReceipt
(
archiveRoots
)
return
mergeReceipt
(
receiptRootLeaves
,
receiptArch
),
nil
}
...
...
@@ -158,13 +158,13 @@ func pushTree(db dbm.KV, leaf [][]byte) (*types.Receipt, error) {
return
nil
,
err
}
leaves
.
Data
=
append
(
leaves
.
Data
,
leaf
...
)
leaves
.
Leaves
=
append
(
leaves
.
Leaves
,
leaf
...
)
currentRoot
:=
calcTreeRoot
(
leaves
)
roots
.
Data
=
append
(
roots
.
Data
,
currentRoot
)
roots
.
Roots
=
append
(
roots
.
Roots
,
currentRoot
)
r
:=
makeCurrentTreeReceipt
(
leaves
,
roots
)
//归档
if
len
(
leaves
.
Data
)
>=
mixTy
.
MaxTreeLeaves
{
if
len
(
leaves
.
Leaves
)
>=
mixTy
.
MaxTreeLeaves
{
receiptArch
,
err
:=
archiveRoots
(
db
,
currentRoot
,
leaves
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -184,12 +184,12 @@ func checkTreeRootHashExist(db dbm.KV, hash []byte) bool {
var
roots
[][]
byte
currentRoots
,
err
:=
getCurrentCommitTreeRoots
(
db
)
if
err
==
nil
{
roots
=
append
(
roots
,
currentRoots
.
Data
...
)
roots
=
append
(
roots
,
currentRoots
.
Roots
...
)
}
archiveRoots
,
err
:=
getArchiveCommitRoots
(
db
)
if
err
==
nil
{
roots
=
append
(
roots
,
archiveRoots
.
Data
...
)
roots
=
append
(
roots
,
archiveRoots
.
Roots
...
)
}
for
_
,
k
:=
range
roots
{
...
...
@@ -250,7 +250,7 @@ func CalcTreeProve(db dbm.KV, rootHash, leaf string) (*mixTy.CommitTreeProve, er
}
leaves
,
err
:=
getCurrentCommitTreeLeaves
(
db
)
if
err
==
nil
{
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Data
)
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Leaves
)
if
err
==
nil
{
return
p
,
nil
}
...
...
@@ -261,7 +261,7 @@ func CalcTreeProve(db dbm.KV, rootHash, leaf string) (*mixTy.CommitTreeProve, er
if
err
!=
nil
{
return
nil
,
err
}
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Data
)
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Leaves
)
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"hash=%s,leaf=%s"
,
rootHash
,
leaf
)
}
...
...
@@ -270,10 +270,10 @@ func CalcTreeProve(db dbm.KV, rootHash, leaf string) (*mixTy.CommitTreeProve, er
roots
,
err
:=
getArchiveCommitRoots
(
db
)
if
err
==
nil
{
for
_
,
root
:=
range
roots
.
Data
{
for
_
,
root
:=
range
roots
.
Roots
{
leaves
,
err
:=
getCommitRootLeaves
(
db
,
transferFr2String
(
root
))
if
err
==
nil
{
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Data
)
p
,
err
:=
getProveData
(
transferFr2Bytes
(
leaf
),
leaves
.
Leaves
)
if
err
==
nil
{
return
p
,
nil
}
...
...
plugin/dapp/mix/executor/config.go
View file @
ce15f935
...
...
@@ -129,14 +129,14 @@ func (a *action) ConfigAddAuthPubKey(key string) (*types.Receipt, error) {
keys
,
err
:=
a
.
getAuthKeys
()
if
isNotFound
(
errors
.
Cause
(
err
))
{
keys
:=
&
mixTy
.
AuthPubKeys
{}
keys
.
Data
=
append
(
keys
.
Data
,
key
)
keys
.
Pks
=
append
(
keys
.
Pks
,
key
)
return
makeConfigAuthKeyReceipt
(
keys
),
nil
}
if
err
!=
nil
{
return
nil
,
err
}
keys
.
Data
=
append
(
keys
.
Data
,
key
)
keys
.
Pks
=
append
(
keys
.
Pks
,
key
)
return
makeConfigAuthKeyReceipt
(
keys
),
nil
}
...
...
@@ -147,11 +147,11 @@ func (a *action) ConfigDeleteAuthPubKey(key string) (*types.Receipt, error) {
}
var
newKeys
mixTy
.
AuthPubKeys
for
_
,
v
:=
range
keys
.
Data
{
for
_
,
v
:=
range
keys
.
Pks
{
if
key
==
v
{
continue
}
newKeys
.
Data
=
append
(
newKeys
.
Data
,
v
)
newKeys
.
Pks
=
append
(
newKeys
.
Pks
,
v
)
}
return
makeConfigAuthKeyReceipt
(
&
newKeys
),
nil
...
...
plugin/dapp/mix/executor/query.go
View file @
ce15f935
...
...
@@ -34,8 +34,8 @@ func (m *Mix) Query_GetLeavesList(in *mixTy.TreeInfoReq) (types.Message, error)
return
nil
,
err
}
var
resp
mixTy
.
TreeListResp
for
_
,
k
:=
range
leaves
.
Data
{
resp
.
Datas
=
append
(
resp
.
Data
s
,
transferFr2String
(
k
))
for
_
,
k
:=
range
leaves
.
Leaves
{
resp
.
Leaves
=
append
(
resp
.
Leave
s
,
transferFr2String
(
k
))
}
return
&
resp
,
nil
...
...
@@ -49,8 +49,8 @@ func (m *Mix) Query_GetRootList(in *types.ReqNil) (types.Message, error) {
return
nil
,
err
}
var
resp
mixTy
.
TreeListResp
for
_
,
k
:=
range
roots
.
Data
{
resp
.
Datas
=
append
(
resp
.
Data
s
,
transferFr2String
(
k
))
for
_
,
k
:=
range
roots
.
Roots
{
resp
.
Leaves
=
append
(
resp
.
Leave
s
,
transferFr2String
(
k
))
}
return
&
resp
,
nil
...
...
plugin/dapp/mix/proto/mix.proto
View file @
ce15f935
...
...
@@ -27,7 +27,7 @@ message ZkVerifyKeys{
}
message
AuthPubKeys
{
repeated
string
data
=
1
;
repeated
string
pks
=
1
;
}
message
PaymentKey
{
...
...
@@ -167,11 +167,11 @@ message ExistValue {
}
message
CommitTreeLeaves
{
repeated
bytes
data
=
1
;
repeated
bytes
leaves
=
1
;
}
message
CommitTreeRoots
{
repeated
bytes
data
=
1
;
repeated
bytes
roots
=
1
;
}
...
...
@@ -189,7 +189,7 @@ message TreeInfoReq{
}
message
TreeListResp
{
repeated
string
data
s
=
1
;
repeated
string
leave
s
=
1
;
}
// mix wallet part
...
...
@@ -289,8 +289,8 @@ message WithdrawProofResp{
string
authorizeSpendHash
=
3
;
string
noteHash
=
4
;
string
spendPrivKey
=
5
;
uint32
spendFlag
=
6
;
uint32
authorizeFlag
=
7
;
string
spendFlag
=
6
;
string
authorizeFlag
=
7
;
TreePathProof
treeProof
=
8
;
}
...
...
@@ -306,7 +306,7 @@ message AuthProofResp{
string
authHash
=
4
;
string
authorizeSpendHash
=
5
;
string
noteHash
=
6
;
uint32
spendFlag
=
7
;
string
spendFlag
=
7
;
TreePathProof
treeProof
=
8
;
}
...
...
@@ -331,8 +331,8 @@ message TransferInputProof{
string
authorizeSpendHash
=
3
;
string
noteHash
=
4
;
string
spendPrivKey
=
5
;
uint32
spendFlag
=
6
;
uint32
authorizeFlag
=
7
;
string
spendFlag
=
6
;
string
authorizeFlag
=
7
;
TreePathProof
treeProof
=
8
;
ShieldAmount
shieldAmount
=
9
;
string
amountRandom
=
10
;
...
...
@@ -372,14 +372,20 @@ enum NoteStatus{
USED
=
3
;
//已使用
}
enum
Role
{
SPENDER
=
0
;
RETURNER
=
1
;
AUTHORIZER
=
2
;
}
message
WalletIndexInfo
{
string
noteHash
=
1
;
string
nullifier
=
2
;
string
authorizeSpendHash
=
3
;
bool
isReturner
=
4
;
string
account
=
5
;
//账户地址
NoteStatus
status
=
6
;
SecretData
secret
=
7
;
string
noteHash
=
1
;
string
nullifier
=
2
;
string
authorizeSpendHash
=
3
;
Role
role
=
4
;
string
account
=
5
;
//账户地址
NoteStatus
status
=
6
;
SecretData
secret
=
7
;
}
...
...
plugin/dapp/mix/types/mix.pb.go
View file @
ce15f935
...
...
@@ -147,6 +147,34 @@ func (NoteStatus) EnumDescriptor() ([]byte, []int) {
return
fileDescriptor_5c21d519a9be369a
,
[]
int
{
3
}
}
type
Role
int32
const
(
Role_SPENDER
Role
=
0
Role_RETURNER
Role
=
1
Role_AUTHORIZER
Role
=
2
)
var
Role_name
=
map
[
int32
]
string
{
0
:
"SPENDER"
,
1
:
"RETURNER"
,
2
:
"AUTHORIZER"
,
}
var
Role_value
=
map
[
string
]
int32
{
"SPENDER"
:
0
,
"RETURNER"
:
1
,
"AUTHORIZER"
:
2
,
}
func
(
x
Role
)
String
()
string
{
return
proto
.
EnumName
(
Role_name
,
int32
(
x
))
}
func
(
Role
)
EnumDescriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_5c21d519a9be369a
,
[]
int
{
4
}
}
type
MixWalletRescanStatus
int32
const
(
...
...
@@ -172,7 +200,7 @@ func (x MixWalletRescanStatus) String() string {
}
func
(
MixWalletRescanStatus
)
EnumDescriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_5c21d519a9be369a
,
[]
int
{
4
}
return
fileDescriptor_5c21d519a9be369a
,
[]
int
{
5
}
}
type
ZkVerifyKey
struct
{
...
...
@@ -262,7 +290,7 @@ func (m *ZkVerifyKeys) GetData() []*ZkVerifyKey {
}
type
AuthPubKeys
struct
{
Data
[]
string
`protobuf:"bytes,1,rep,name=data,proto3" json:"data
,omitempty"`
Pks
[]
string
`protobuf:"bytes,1,rep,name=pks,proto3" json:"pks
,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -293,9 +321,9 @@ func (m *AuthPubKeys) XXX_DiscardUnknown() {
var
xxx_messageInfo_AuthPubKeys
proto
.
InternalMessageInfo
func
(
m
*
AuthPubKeys
)
Get
Data
()
[]
string
{
func
(
m
*
AuthPubKeys
)
Get
Pks
()
[]
string
{
if
m
!=
nil
{
return
m
.
Data
return
m
.
Pks
}
return
nil
}
...
...
@@ -1288,7 +1316,7 @@ func (m *ExistValue) GetData() bool {
}
type
CommitTreeLeaves
struct
{
Data
[][]
byte
`protobuf:"bytes,1,rep,name=data,proto3" json:"data
,omitempty"`
Leaves
[][]
byte
`protobuf:"bytes,1,rep,name=leaves,proto3" json:"leaves
,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -1319,15 +1347,15 @@ func (m *CommitTreeLeaves) XXX_DiscardUnknown() {
var
xxx_messageInfo_CommitTreeLeaves
proto
.
InternalMessageInfo
func
(
m
*
CommitTreeLeaves
)
Get
Data
()
[][]
byte
{
func
(
m
*
CommitTreeLeaves
)
Get
Leaves
()
[][]
byte
{
if
m
!=
nil
{
return
m
.
Data
return
m
.
Leaves
}
return
nil
}
type
CommitTreeRoots
struct
{
Data
[][]
byte
`protobuf:"bytes,1,rep,name=data,proto3" json:"data
,omitempty"`
Roots
[][]
byte
`protobuf:"bytes,1,rep,name=roots,proto3" json:"roots
,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -1358,9 +1386,9 @@ func (m *CommitTreeRoots) XXX_DiscardUnknown() {
var
xxx_messageInfo_CommitTreeRoots
proto
.
InternalMessageInfo
func
(
m
*
CommitTreeRoots
)
Get
Data
()
[][]
byte
{
func
(
m
*
CommitTreeRoots
)
Get
Roots
()
[][]
byte
{
if
m
!=
nil
{
return
m
.
Data
return
m
.
Roots
}
return
nil
}
...
...
@@ -1484,7 +1512,7 @@ func (m *TreeInfoReq) GetLeafHash() string {
}
type
TreeListResp
struct
{
Datas
[]
string
`protobuf:"bytes,1,rep,name=datas,proto3" json:"data
s,omitempty"`
Leaves
[]
string
`protobuf:"bytes,1,rep,name=leaves,proto3" json:"leave
s,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -1515,9 +1543,9 @@ func (m *TreeListResp) XXX_DiscardUnknown() {
var
xxx_messageInfo_TreeListResp
proto
.
InternalMessageInfo
func
(
m
*
TreeListResp
)
Get
Data
s
()
[]
string
{
func
(
m
*
TreeListResp
)
Get
Leave
s
()
[]
string
{
if
m
!=
nil
{
return
m
.
Data
s
return
m
.
Leave
s
}
return
nil
}
...
...
@@ -2250,8 +2278,8 @@ type WithdrawProofResp struct {
AuthorizeSpendHash
string
`protobuf:"bytes,3,opt,name=authorizeSpendHash,proto3" json:"authorizeSpendHash,omitempty"`
NoteHash
string
`protobuf:"bytes,4,opt,name=noteHash,proto3" json:"noteHash,omitempty"`
SpendPrivKey
string
`protobuf:"bytes,5,opt,name=spendPrivKey,proto3" json:"spendPrivKey,omitempty"`
SpendFlag
uint32
`protobuf:"varint
,6,opt,name=spendFlag,proto3" json:"spendFlag,omitempty"`
AuthorizeFlag
uint32
`protobuf:"varint
,7,opt,name=authorizeFlag,proto3" json:"authorizeFlag,omitempty"`
SpendFlag
string
`protobuf:"bytes
,6,opt,name=spendFlag,proto3" json:"spendFlag,omitempty"`
AuthorizeFlag
string
`protobuf:"bytes
,7,opt,name=authorizeFlag,proto3" json:"authorizeFlag,omitempty"`
TreeProof
*
TreePathProof
`protobuf:"bytes,8,opt,name=treeProof,proto3" json:"treeProof,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
...
...
@@ -2318,18 +2346,18 @@ func (m *WithdrawProofResp) GetSpendPrivKey() string {
return
""
}
func
(
m
*
WithdrawProofResp
)
GetSpendFlag
()
uint32
{
func
(
m
*
WithdrawProofResp
)
GetSpendFlag
()
string
{
if
m
!=
nil
{
return
m
.
SpendFlag
}
return
0
return
""
}
func
(
m
*
WithdrawProofResp
)
GetAuthorizeFlag
()
uint32
{
func
(
m
*
WithdrawProofResp
)
GetAuthorizeFlag
()
string
{
if
m
!=
nil
{
return
m
.
AuthorizeFlag
}
return
0
return
""
}
func
(
m
*
WithdrawProofResp
)
GetTreeProof
()
*
TreePathProof
{
...
...
@@ -2393,7 +2421,7 @@ type AuthProofResp struct {
AuthHash
string
`protobuf:"bytes,4,opt,name=authHash,proto3" json:"authHash,omitempty"`
AuthorizeSpendHash
string
`protobuf:"bytes,5,opt,name=authorizeSpendHash,proto3" json:"authorizeSpendHash,omitempty"`
NoteHash
string
`protobuf:"bytes,6,opt,name=noteHash,proto3" json:"noteHash,omitempty"`
SpendFlag
uint32
`protobuf:"varint
,7,opt,name=spendFlag,proto3" json:"spendFlag,omitempty"`
SpendFlag
string
`protobuf:"bytes
,7,opt,name=spendFlag,proto3" json:"spendFlag,omitempty"`
TreeProof
*
TreePathProof
`protobuf:"bytes,8,opt,name=treeProof,proto3" json:"treeProof,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
...
...
@@ -2467,11 +2495,11 @@ func (m *AuthProofResp) GetNoteHash() string {
return
""
}
func
(
m
*
AuthProofResp
)
GetSpendFlag
()
uint32
{
func
(
m
*
AuthProofResp
)
GetSpendFlag
()
string
{
if
m
!=
nil
{
return
m
.
SpendFlag
}
return
0
return
""
}
func
(
m
*
AuthProofResp
)
GetTreeProof
()
*
TreePathProof
{
...
...
@@ -2606,8 +2634,8 @@ type TransferInputProof struct {
AuthorizeSpendHash
string
`protobuf:"bytes,3,opt,name=authorizeSpendHash,proto3" json:"authorizeSpendHash,omitempty"`
NoteHash
string
`protobuf:"bytes,4,opt,name=noteHash,proto3" json:"noteHash,omitempty"`
SpendPrivKey
string
`protobuf:"bytes,5,opt,name=spendPrivKey,proto3" json:"spendPrivKey,omitempty"`
SpendFlag
uint32
`protobuf:"varint
,6,opt,name=spendFlag,proto3" json:"spendFlag,omitempty"`
AuthorizeFlag
uint32
`protobuf:"varint
,7,opt,name=authorizeFlag,proto3" json:"authorizeFlag,omitempty"`
SpendFlag
string
`protobuf:"bytes
,6,opt,name=spendFlag,proto3" json:"spendFlag,omitempty"`
AuthorizeFlag
string
`protobuf:"bytes
,7,opt,name=authorizeFlag,proto3" json:"authorizeFlag,omitempty"`
TreeProof
*
TreePathProof
`protobuf:"bytes,8,opt,name=treeProof,proto3" json:"treeProof,omitempty"`
ShieldAmount
*
ShieldAmount
`protobuf:"bytes,9,opt,name=shieldAmount,proto3" json:"shieldAmount,omitempty"`
AmountRandom
string
`protobuf:"bytes,10,opt,name=amountRandom,proto3" json:"amountRandom,omitempty"`
...
...
@@ -2676,18 +2704,18 @@ func (m *TransferInputProof) GetSpendPrivKey() string {
return
""
}
func
(
m
*
TransferInputProof
)
GetSpendFlag
()
uint32
{
func
(
m
*
TransferInputProof
)
GetSpendFlag
()
string
{
if
m
!=
nil
{
return
m
.
SpendFlag
}
return
0
return
""
}
func
(
m
*
TransferInputProof
)
GetAuthorizeFlag
()
uint32
{
func
(
m
*
TransferInputProof
)
GetAuthorizeFlag
()
string
{
if
m
!=
nil
{
return
m
.
AuthorizeFlag
}
return
0
return
""
}
func
(
m
*
TransferInputProof
)
GetTreeProof
()
*
TreePathProof
{
...
...
@@ -2920,7 +2948,7 @@ type WalletIndexInfo struct {
NoteHash
string
`protobuf:"bytes,1,opt,name=noteHash,proto3" json:"noteHash,omitempty"`
Nullifier
string
`protobuf:"bytes,2,opt,name=nullifier,proto3" json:"nullifier,omitempty"`
AuthorizeSpendHash
string
`protobuf:"bytes,3,opt,name=authorizeSpendHash,proto3" json:"authorizeSpendHash,omitempty"`
IsReturner
bool
`protobuf:"varint,4,opt,name=isReturner,proto3" json:"isReturner
,omitempty"`
Role
Role
`protobuf:"varint,4,opt,name=role,proto3,enum=types.Role" json:"role
,omitempty"`
Account
string
`protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"`
Status
NoteStatus
`protobuf:"varint,6,opt,name=status,proto3,enum=types.NoteStatus" json:"status,omitempty"`
Secret
*
SecretData
`protobuf:"bytes,7,opt,name=secret,proto3" json:"secret,omitempty"`
...
...
@@ -2975,11 +3003,11 @@ func (m *WalletIndexInfo) GetAuthorizeSpendHash() string {
return
""
}
func
(
m
*
WalletIndexInfo
)
Get
IsReturner
()
bool
{
func
(
m
*
WalletIndexInfo
)
Get
Role
()
Role
{
if
m
!=
nil
{
return
m
.
IsReturner
return
m
.
Role
}
return
false
return
Role_SPENDER
}
func
(
m
*
WalletIndexInfo
)
GetAccount
()
string
{
...
...
@@ -3581,6 +3609,7 @@ func init() {
proto
.
RegisterEnum
(
"types.MixConfigType"
,
MixConfigType_name
,
MixConfigType_value
)
proto
.
RegisterEnum
(
"types.MixConfigAct"
,
MixConfigAct_name
,
MixConfigAct_value
)
proto
.
RegisterEnum
(
"types.NoteStatus"
,
NoteStatus_name
,
NoteStatus_value
)
proto
.
RegisterEnum
(
"types.Role"
,
Role_name
,
Role_value
)
proto
.
RegisterEnum
(
"types.MixWalletRescanStatus"
,
MixWalletRescanStatus_name
,
MixWalletRescanStatus_value
)
proto
.
RegisterType
((
*
ZkVerifyKey
)(
nil
),
"types.ZkVerifyKey"
)
proto
.
RegisterType
((
*
ZkVerifyKeys
)(
nil
),
"types.ZkVerifyKeys"
)
...
...
@@ -3648,164 +3677,167 @@ func init() {
}
var
fileDescriptor_5c21d519a9be369a
=
[]
byte
{
// 25
04
bytes of a gzipped FileDescriptorProto
// 25
56
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xec
,
0x59
,
0xcd
,
0x6e
,
0x1b
,
0xc9
,
0xf1
,
0xd7
,
0xf0
,
0x53
,
0x2c
,
0x91
,
0x
12
,
0xd9
,
0xf6
,
0x6a
,
0xb9
,
0xc2
,
0x7f
,
0xfd
,
0x57
,
0x7a
,
0x
bd
,
0x5e
,
0x45
,
0x0e
,
0xb4
,
0x1b
,
0xda
,
0x71
,
0x92
,
0x43
,
0x76
,
0xc1
,
0x98
,
0x94
,
0xc9
,
0xb5
,
0x45
,
0x11
,
0x4d
,
0x
fa
,
0x33
,
0x48
,
0x80
,
0x31
,
0xd9
,
0x12
,
0x07
,
0x26
,
0x39
,
0xe3
,
0x99
,
0xa1
,
0x
4c
,
0xe5
,
0x14
,
0x20
,
0x01
,
0xf6
,
0x10
,
0xe4
,
0x14
,
0xe4
,
0x1a
,
0x20
,
0xa7
,
0xe4
,
0x01
,
0x16
,
0x39
,
0xe4
,
0x19
,
0x72
,
0xcc
,
0x03
,
0x04
,
0xc8
,
0x21
,
0xd7
,
0x3c
,
0x42
,
0xd0
,
0x5f
,
0x33
,
0x
d
d
,
0xf1
,
0xd7
,
0xf0
,
0x53
,
0x2c
,
0x91
,
0x
d4
,
0xb0
,
0xed
,
0xd5
,
0xd2
,
0xc2
,
0x7f
,
0xd7
,
0x42
,
0xaf
,
0x
ff
,
0xb6
,
0x22
,
0x07
,
0xda
,
0x5d
,
0xda
,
0x71
,
0x92
,
0x43
,
0x76
,
0xc1
,
0x98
,
0x94
,
0xc9
,
0xb5
,
0x45
,
0x11
,
0x4d
,
0x
ca
,
0x5f
,
0x41
,
0x02
,
0x8c
,
0xc9
,
0x96
,
0x38
,
0x30
,
0xc9
,
0x19
,
0xcf
,
0x0c
,
0x
65
,
0x2a
,
0xa7
,
0x00
,
0x09
,
0xb0
,
0x97
,
0xe4
,
0x14
,
0xe4
,
0x1a
,
0x20
,
0xa7
,
0xe4
,
0x01
,
0x16
,
0x39
,
0xe4
,
0x19
,
0x72
,
0xcc
,
0x03
,
0x04
,
0xc8
,
0x21
,
0xd7
,
0x3c
,
0x42
,
0xd0
,
0x5f
,
0x33
,
0x
3
d
,
0x43
,
0xd2
,
0x92
,
0x9c
,
0xcd
,
0x2d
,
0xb7
,
0xa9
,
0xea
,
0x5f
,
0x77
,
0x57
,
0xfd
,
0xaa
,
0xba
,
0xbb
,
0xba
,
0x07
,
0x0a
,
0x13
,
0x67
,
0x7e
,
0xe0
,
0xf9
,
0x6e
,
0xe8
,
0xa2
,
0x6c
,
0x78
,
0xee
,
0xd1
,
0x60
,
0xa7
,
0x38
,
0x70
,
0x27
,
0x13
,
0x77
,
0x2a
,
0x94
,
0x3b
,
0x95
,
0xd0
,
0xb7
,
0xa7
,
0x81
,
0x3d
,
0x08
,
0x1d
,
0xa5
,
0xc2
,
0x5f
,
0xc2
,
0xc6
,
0x8b
,
0x57
,
0x4f
,
0xa8
,
0xef
,
0x9c
,
0x9c
,
0x3f
,
0xa4
,
0xe7
,
0xe8
,
0x63
,
0xc8
,
0xb0
,
0x8e
,
0x55
,
0x6b
,
0xd7
,
0xda
,
0xdb
,
0xac
,
0x55
,
0x0e
,
0xf8
,
0x28
,
0x07
,
0xa2
,
0xbd
,
0x7f
,
0xee
,
0x51
,
0xc2
,
0x9b
,
0xd1
,
0x75
,
0xc8
,
0x9e
,
0xd9
,
0xe3
,
0x19
,
0xad
,
0xa6
,
0x76
,
0xad
,
0xbd
,
0x02
,
0x11
,
0x02
,
0xbe
,
0x07
,
0x45
,
0x6d
,
0xac
,
0x00
,
0xdd
,
0x82
,
0xcc
,
0xd0
,
0x0e
,
0xed
,
0xaa
,
0xb5
,
0x9b
,
0xde
,
0xdb
,
0xa8
,
0x21
,
0x39
,
0x98
,
0x06
,
0x21
,
0xbc
,
0x1d
,
0x7f
,
0x0b
,
0x36
,
0xea
,
0xb3
,
0x70
,
0xd4
,
0x9d
,
0xbd
,
0xe4
,
0xdd
,
0x90
,
0xd6
,
0xad
,
0x20
,
0x21
,
0x2e
,
0x40
,
0xd7
,
0x3e
,
0x9f
,
0xd0
,
0x69
,
0xc8
,
0xac
,
0x44
,
0x90
,
0xb1
,
0x87
,
0x43
,
0x9f
,
0x5b
,
0x59
,
0x20
,
0xfc
,
0x1b
,
0xed
,
0xc2
,
0x86
,
0x4f
,
0x07
,
0xd4
,
0x39
,
0xa3
,
0xfe
,
0x43
,
0x7a
,
0x2e
,
0x0d
,
0xd3
,
0x55
,
0xe8
,
0x36
,
0x14
,
0x02
,
0x3a
,
0xf0
,
0x29
,
0x1b
,
0xa2
,
0x9a
,
0xde
,
0xb5
,
0xf6
,
0x36
,
0x6a
,
0x25
,
0x69
,
0x93
,
0x98
,
0x9a
,
0xc4
,
0xed
,
0xf8
,
0x5f
,
0x16
,
0x6c
,
0x1d
,
0x39
,
0xf3
,
0xfb
,
0xee
,
0xf4
,
0xc4
,
0x39
,
0xad
,
0x73
,
0xc6
,
0xd0
,
0x4d
,
0x48
,
0xf5
,
0xcf
,
0x25
,
0x35
,
0xd7
,
0x65
,
0xcf
,
0x08
,
0xc3
,
0xd9
,
0x49
,
0xf5
,
0xd9
,
0x34
,
0x39
,
0x81
,
0xe7
,
0x36
,
0x6c
,
0xd6
,
0xae
,
0x25
,
0x91
,
0xf5
,
0x41
,
0x48
,
0x24
,
0x04
,
0xd5
,
0xa0
,
0x70
,
0xa6
,
0xd8
,
0x90
,
0x36
,
0x2d
,
0xe1
,
0xa9
,
0xb5
,
0x46
,
0x62
,
0x18
,
0xaa
,
0x42
,
0xce
,
0x66
,
0x74
,
0xbd
,
0xaa
,
0x66
,
0x98
,
0x93
,
0xad
,
0x35
,
0x22
,
0x65
,
0x74
,
0x07
,
0xc0
,
0x8b
,
0x58
,
0xaa
,
0x66
,
0xf9
,
0x70
,
0x2a
,
0x86
,
0x31
,
0x7d
,
0xad
,
0x35
,
0xa2
,
0xc1
,
0x7e
,
0x9c
,
0x97
,
0xb1
,
0xc4
,
0xf7
,
0x61
,
0xbd
,
0xd1
,
0xea
,
0x71
,
0x06
,
0xd0
,
0xff
,
0x43
,
0x9a
,
0x7a
,
0xaf
,
0xb8
,
0xaf
,
0x0b
,
0x2c
,
0xb1
,
0x16
,
0xb4
,
0x0d
,
0x39
,
0x41
,
0x16
,
0xb7
,
0xba
,
0x40
,
0xa4
,
0x84
,
0x29
,
0x94
,
0xd4
,
0x20
,
0x0f
,
0x7c
,
0x77
,
0xe6
,
0xa1
,
0x1d
,
0x58
,
0x57
,
0x41
,
0x90
,
0xf1
,
0x8a
,
0x64
,
0xd1
,
0x16
,
0xce
,
0xfc
,
0x29
,
0xf5
,
0x65
,
0xc0
,
0x22
,
0x19
,
0xfd
,
0x1f
,
0x14
,
0x98
,
0x57
,
0xae
,
0xef
,
0xfc
,
0x9c
,
0xca
,
0x39
,
0x62
,
0x05
,
0x9e
,
0xb1
,
0xb4
,
0xed
,
0xfa
,
0xae
,
0x7b
,
0xd2
,
0x9e
,
0x9e
,
0xb8
,
0x2c
,
0x1f
,
0x3d
,
0x26
,
0xc8
,
0x19
,
0x84
,
0xc0
,
0x52
,
0xc2
,
0x9b
,
0xbd
,
0x1c
,
0x3b
,
0x83
,
0xf6
,
0xd4
,
0x9b
,
0x85
,
0x2a
,
0x25
,
0x34
,
0x15
,
0x3a
,
0x80
,
0xbc
,
0xb0
,
0x3b
,
0x90
,
0xe4
,
0xab
,
0xb0
,
0x1a
,
0x3e
,
0x10
,
0x05
,
0xc2
,
0x7d
,
0x28
,
0x1f
,
0x39
,
0xf3
,
0x06
,
0xf5
,
0xdc
,
0xc0
,
0x09
,
0x65
,
0x08
,
0xb7
,
0x21
,
0x67
,
0x4f
,
0xdc
,
0xd9
,
0x34
,
0xe4
,
0x93
,
0x67
,
0x88
,
0x94
,
0xd0
,
0x9e
,
0xb2
,
0x29
,
0x95
,
0x08
,
0x6b
,
0x64
,
0xb6
,
0xb4
,
0x13
,
0xff
,
0xce
,
0x82
,
0xca
,
0x91
,
0x33
,
0xef
,
0xb3
,
0xc5
,
0x79
,
0x42
,
0x7d
,
0x39
,
0xee
,
0x1e
,
0x64
,
0x1d
,
0x6e
,
0xb7
,
0xb5
,
0xba
,
0x3f
,
0x07
,
0xa0
,
0x7d
,
0xc8
,
0xb9
,
0xb3
,
0x50
,
0xb9
,
0xb8
,
0x1c
,
0x2a
,
0x11
,
0x0c
,
0x3b
,
0x18
,
0xd9
,
0xd3
,
0x53
,
0xba
,
0x90
,
0x6d
,
0x1a
,
0x56
,
0x20
,
0xf0
,
0x80
,
0x9b
,
0xf5
,
0xd4
,
0x09
,
0x47
,
0x43
,
0xdf
,
0x7e
,
0x73
,
0x81
,
0xbb
,
0xf7
,
0xa0
,
0x18
,
0x78
,
0x74
,
0x3a
,
0xbc
,
0xef
,
0x4e
,
0x26
,
0x4e
,
0x18
,
0x54
,
0x53
,
0x89
,
0x45
,
0x1f
,
0x0f
,
0x6f
,
0xe0
,
0xf0
,
0x97
,
0x80
,
0x8e
,
0x9c
,
0x79
,
0x5d
,
0x45
,
0x56
,
0xce
,
0x72
,
0x17
,
0x36
,
0x58
,
0xb0
,
0xd5
,
0x60
,
0xd6
,
0xca
,
0xc1
,
0x74
,
0x18
,
0xfe
,
0x73
,
0x0a
,
0x0a
,
0x6c
,
0x30
,
0x31
,
0xc6
,
0x26
,
0xa4
,
0x42
,
0xb1
,
0x5c
,
0xb3
,
0x24
,
0x15
,
0x9e
,
0xa3
,
0xcf
,
0x20
,
0x37
,
0xe0
,
0x0b
,
0x50
,
0xd2
,
0xb4
,
0xbd
,
0x64
,
0x61
,
0x3a
,
0xee
,
0x94
,
0xad
,
0x27
,
0x81
,
0x43
,
0x77
,
0x20
,
0x3f
,
0x14
,
0xb1
,
0x96
,
0x6c
,
0xbd
,
0x1f
,
0x77
,
0x31
,
0x92
,
0xa0
,
0xb5
,
0x46
,
0x14
,
0x12
,
0xdd
,
0x83
,
0xf5
,
0x37
,
0x92
,
0x32
,
0xbe
,
0x40
,
0x37
,
0x6a
,
0xd5
,
0xb8
,
0x97
,
0x49
,
0x66
,
0x6b
,
0x8d
,
0x44
,
0x58
,
0xd6
,
0x2f
,
0x94
,
0x19
,
0x20
,
0x97
,
0xae
,
0xd6
,
0xcf
,
0xcc
,
0x0d
,
0xd6
,
0x4f
,
0x61
,
0xd1
,
0x0f
,
0xf5
,
0x85
,
0x92
,
0xe3
,
0x1d
,
0x3f
,
0x88
,
0x3b
,
0x26
,
0x88
,
0x65
,
0x3b
,
0x49
,
0x84
,
0x8e
,
0x97
,
0x7e
,
0x0b
,
0x90
,
0xf4
,
0xa7
,
0xab
,
0xad
,
0x8e
,
0x1d
,
0x58
,
0x9f
,
0xba
,
0x21
,
0x6d
,
0xd9
,
0xc1
,
0x48
,
0x2d
,
0x5d
,
0x25
,
0x6b
,
0x69
,
0x20
,
0x96
,
0x95
,
0x94
,
0xf0
,
0x1f
,
0x2d
,
0xb8
,
0xa6
,
0x9c
,
0xd4
,
0xc7
,
0xc2
,
0x50
,
0x0c
,
0x7d
,
0x4a
,
0x89
,
0xeb
,
0x86
,
0xda
,
0x78
,
0x86
,
0x0e
,
0xdd
,
0x84
,
0xd2
,
0x74
,
0x36
,
0x1e
,
0x3b
,
0x27
,
0x0e
,
0xf5
,
0x39
,
0x48
,
0x0c
,
0x6d
,
0x2a
,
0xd1
,
0x01
,
0xa0
,
0xc8
,
0x83
,
0x1e
,
0xcb
,
0x24
,
0x0e
,
0x15
,
0x3b
,
0xc4
,
0x92
,
0x16
,
0xcd
,
0xd2
,
0x8c
,
0x61
,
0xe9
,
0xdf
,
0x2d
,
0xa8
,
0x2a
,
0x5a
,
0xb9
,
0x8d
,
0xef
,
0x60
,
0x6e
,
0x30
,
0x72
,
0xe8
,
0x78
,
0x58
,
0xe7
,
0x03
,
0x3e
,
0x53
,
0xe6
,
0x1a
,
0xca
,
0x24
,
0xea
,
0xb9
,
0xb4
,
0xd4
,
0x54
,
0xae
,
0x70
,
0x2a
,
0xb3
,
0xd2
,
0xa9
,
0x05
,
0xaa
,
0xb2
,
0x4b
,
0xa8
,
0xc2
,
0xbf
,
0xb4
,
0xe0
,
0x03
,
0xe5
,
0xe2
,
0x31
,
0x5f
,
0xff
,
0x97
,
0x0d
,
0xef
,
0x37
,
0xe8
,
0x1b
,
0xfe
,
0x8b
,
0x05
,
0xd7
,
0xa3
,
0x34
,
0xbc
,
0x2a
,
0xc9
,
0x7b
,
0xb0
,
0x65
,
0x6b
,
0x7d
,
0xe3
,
0xa3
,
0x3d
,
0xa9
,
0x66
,
0xc6
,
0x44
,
0x2a
,
0x2d
,
0x25
,
0x4c
,
0xe5
,
0x55
,
0x89
,
0xc6
,
0xbb
,
0x00
,
0xcd
,
0xb9
,
0x13
,
0x84
,
0x4f
,
0xd8
,
0x3a
,
0xd1
,
0x4a
,
0x13
,
0x6b
,
0x6f
,
0x5d
,
0x96
,
0x26
,
0xb7
,
0xa0
,
0x2c
,
0xf6
,
0x9f
,
0xbe
,
0x4f
,
0xe9
,
0x23
,
0x6a
,
0x9f
,
0x51
,
0xb3
,
0x84
,
0x29
,
0x4a
,
0xdc
,
0xc7
,
0xb0
,
0x15
,
0xe3
,
0x98
,
0x7f
,
0xcb
,
0x61
,
0x7f
,
0xb0
,
0x74
,
0x5c
,
0xd7
,
0x77
,
0xcf
,
0x28
,
0x3f
,
0x27
,
0x4d
,
0x92
,
0x22
,
0x99
,
0xb5
,
0xf1
,
0x53
,
0xa4
,
0x47
,
0x43
,
0xbe
,
0xe7
,
0x16
,
0x48
,
0x24
,
0xa3
,
0x1b
,
0x00
,
0x9e
,
0xd8
,
0x29
,
0x87
,
0x74
,
0xce
,
0xf9
,
0x28
,
0x11
,
0x4d
,
0xc3
,
0xce
,
0xd8
,
0xe9
,
0x6c
,
0x22
,
0x6c
,
0xe6
,
0x1c
,
0x94
,
0x48
,
0xac
,
0x40
,
0x55
,
0xc8
,
0x8f
,
0xe8
,
0xd8
,
0xa3
,
0x7e
,
0x50
,
0xcd
,
0xee
,
0xa6
,
0xf7
,
0x4a
,
0x44
,
0x89
,
0xb8
,
0x09
,
0x1b
,
0xcc
,
0x38
,
0xbe
,
0x01
,
0xd3
,
0xd7
,
0x17
,
0x99
,
0x37
,
0xa6
,
0xf6
,
0x89
,
0xb6
,
0x9c
,
0x23
,
0x19
,
0xdf
,
0x84
,
0x22
,
0xe7
,
0xcc
,
0x09
,
0x42
,
0x42
,
0x03
,
0x8f
,
0x9d
,
0xe2
,
0x8c
,
0x82
,
0x40
,
0x56
,
0x7e
,
0x42
,
0xc0
,
0x2f
,
0x60
,
0x33
,
0xae
,
0x5d
,
0xba
,
0xb6
,
0xe3
,
0xa3
,
0x5b
,
0xb0
,
0xa9
,
0x4a
,
0x08
,
0x99
,
0x12
,
0x62
,
0xd6
,
0x84
,
0x96
,
0x9d
,
0xff
,
0xfc
,
0xa8
,
0xe9
,
0xfa
,
0x8e
,
0x56
,
0x12
,
0x6a
,
0x2a
,
0x7c
,
0x13
,
0x72
,
0x12
,
0x5b
,
0x04
,
0xeb
,
0x99
,
0x1c
,
0xc6
,
0x7a
,
0xc6
,
0xa4
,
0xe7
,
0x12
,
0x6f
,
0x3d
,
0xc7
,
0x1f
,
0x42
,
0xbe
,
0xeb
,
0x3b
,
0x67
,
0xb2
,
0xf2
,
0x8c
,
0x12
,
0x20
,
0xae
,
0x4d
,
0x51
,
0x6f
,
0x64
,
0xfb
,
0xb4
,
0xa7
,
0x8a
,
0x47
,
0x6e
,
0xe4
,
0x1e
,
0xe4
,
0x3d
,
0xd1
,
0x49
,
0x1e
,
0xe0
,
0x9b
,
0xaa
,
0x8a
,
0x12
,
0x5a
,
0xa2
,
0x9a
,
0xd1
,
0xa7
,
0xaa
,
0x72
,
0x75
,
0xa6
,
0xa7
,
0xdd
,
0x57
,
0xf2
,
0x70
,
0x4a
,
0xd4
,
0x5c
,
0x3a
,
0x02
,
0xff
,
0xc6
,
0x82
,
0x4a
,
0x7d
,
0x30
,
0x60
,
0xab
,
0x8b
,
0x0d
,
0x66
,
0x0f
,
0x78
,
0x59
,
0xf8
,
0x3d
,
0xa3
,
0xf8
,
0x13
,
0x73
,
0xbe
,
0xb7
,
0x50
,
0xfc
,
0x31
,
0xdb
,
0xf4
,
0xf2
,
0x0f
,
0xd5
,
0x61
,
0x33
,
0x30
,
0xac
,
0x97
,
0x06
,
0xa8
,
0x33
,
0x64
,
0xd1
,
0x35
,
0x92
,
0xe8
,
0x80
,
0x7f
,
0x02
,
0x95
,
0xa7
,
0xf6
,
0x78
,
0x4c
,
0xc3
,
0xfa
,
0x70
,
0xe8
,
0x4b
,
0x8b
,
0x50
,
0x4d
,
0xf8
,
0x6f
,
0x0f
,
0x94
,
0x2d
,
0xea
,
0x34
,
0x5b
,
0xb0
,
0x9c
,
0x28
,
0x60
,
0x54
,
0xd7
,
0xa7
,
0xe2
,
0xba
,
0x9e
,
0xed
,
0x1e
,
0x20
,
0xa6
,
0x6a
,
0xd8
,
0xa1
,
0x7d
,
0xe9
,
0xd8
,
0x63
,
0x28
,
0x8a
,
0x52
,
0xd2
,
0xd8
,
0x34
,
0x0c
,
0xdd
,
0xb2
,
0xbd
,
0x25
,
0xbd
,
0x7c
,
0x6f
,
0x59
,
0x71
,
0x86
,
0xb0
,
0x05
,
0xc6
,
0xb6
,
0x4c
,
0x62
,
0x4f
,
0x87
,
0xee
,
0x44
,
0xee
,
0xc1
,
0x9a
,
0x06
,
0xbf
,
0x80
,
0x4a
,
0x73
,
0x3a
,
0x70
,
0x87
,
0x74
,
0xa8
,
0xb9
,
0x50
,
0x85
,
0x3c
,
0x15
,
0x4a
,
0x69
,
0xbb
,
0x12
,
0xd1
,
0x6d
,
0xc8
,
0xfb
,
0xf6
,
0x1b
,
0x06
,
0x92
,
0x41
,
0x50
,
0xc5
,
0x7b
,
0xdc
,
0x9b
,
0x28
,
0x04
,
0xfe
,
0x19
,
0x1f
,
0xdb
,
0x3f
,
0xf7
,
0x42
,
0x6d
,
0xec
,
0xb8
,
0x2c
,
0xb7
,
0xf4
,
0xb2
,
0x1c
,
0x7d
,
0x17
,
0x8a
,
0x02
,
0xa5
,
0xd1
,
0xb1
,
0x90
,
0x64
,
0x06
,
0x04
,
0xff
,
0xc2
,
0x82
,
0x4a
,
0x83
,
0x5e
,
0x76
,
0x82
,
0x5a
,
0x34
,
0x41
,
0xbc
,
0xd8
,
0x16
,
0x73
,
0xde
,
0xc0
,
0xa8
,
0x4b
,
0x46
,
0x7a
,
0xd5
,
0x25
,
0x03
,
0xff
,
0xd6
,
0x82
,
0x2d
,
0x55
,
0x97
,
0xb0
,
0x5d
,
0x8b
,
0x6d
,
0x36
,
0x3c
,
0xb0
,
0x22
,
0xd4
,
0xf5
,
0xf8
,
0x0e
,
0x68
,
0xe8
,
0x58
,
0x58
,
0x44
,
0xa0
,
0xeb
,
0x71
,
0x36
,
0x69
,
0x1a
,
0xe3
,
0xa8
,
0xe0
,
0x90
,
0xe4
,
0x51
,
0xc1
,
0x51
,
0x66
,
0xd0
,
0xa3
,
0x4a
,
0x17
,
0x7f
,
0x65
,
0x41
,
0xd9
,
0xb4
,
0x2a
,
0xf0
,
0xde
,
0x7a
,
0x98
,
0x7e
,
0x62
,
0xde
,
0x04
,
0x96
,
0x04
,
0x55
,
0x5e
,
0x58
,
0xae
,
0x7a
,
0x1d
,
0xf9
,
0xca
,
0x82
,
0x12
,
0x3f
,
0x25
,
0xec
,
0x70
,
0xc4
,
0x4d
,
0xb9
,
0xd4
,
0x91
,
0xba
,
0xc3
,
0x0a
,
0x4d
,
0xd1
,
0x49
,
0x9d
,
0x18
,
0x4a
,
0xd6
,
0xf7
,
0xfc
,
0xb4
,
0xb1
,
0xe7
,
0xb3
,
0xb3
,
0xe2
,
0xcc
,
0x1e
,
0x3b
,
0x43
,
0xde
,
0x2d
,
0xc3
,
0xdb
,
0x62
,
0x05
,
0x3e
,
0x80
,
0x72
,
0x54
,
0xf5
,
0xa9
,
0x48
,
0xbd
,
0x85
,
0x12
,
0xfc
,
0xd7
,
0x14
,
0x54
,
0x12
,
0x1d
,
0x02
,
0x0f
,
0x7d
,
0xdb
,
0x48
,
0xae
,
0xa5
,
0x4c
,
0xa9
,
0x7c
,
0xfb
,
0xef
,
0xd4
,
0x8a
,
0xba
,
0xc9
,
0x99
,
0x44
,
0x14
,
0xb1
,
0xbc
,
0xe0
,
0xc8
,
0x5c
,
0x96
,
0xab
,
0xdd
,
0xd0
,
0x31
,
0x92
,
0xb8
,
0x7c
,
0x38
,
0xb6
,
0x4f
,
0x79
,
0x2d
,
0x5e
,
0x22
,
0xb1
,
0xc2
,
0x48
,
0x3b
,
0x8e
,
0xc8
,
0x73
,
0x84
,
0xa9
,
0x44
,
0x35
,
0x28
,
0x84
,
0xe2
,
0xe4
,
0x77
,
0x4f
,
0xaa
,
0xeb
,
0x46
,
0x1a
,
0x18
,
0xb1
,
0x26
,
0x31
,
0x0c
,
0x1f
,
0x42
,
0x91
,
0xbf
,
0xa0
,
0x5c
,
0x82
,
0x7a
,
0x1e
,
0x7e
,
0x97
,
0xf0
,
0xc5
,
0xc0
,
0x49
,
0x2b
,
0x91
,
0x48
,
0xc6
,
0x5f
,
0xa7
,
0xa0
,
0xa4
,
0x0d
,
0x14
,
0x78
,
0x71
,
0xee
,
0x5a
,
0x17
,
0xe4
,
0xee
,
0x0d
,
0x00
,
0x3b
,
0x7a
,
0xc4
,
0x51
,
0x6b
,
0x2e
,
0xd6
,
0xb0
,
0xc3
,
0x98
,
0x4b
,
0x92
,
0x3d
,
0x11
,
0x03
,
0x5d
,
0xc5
,
0x0c
,
0x63
,
0xa2
,
0x4e
,
0xbe
,
0x92
,
0x57
,
0x04
,
0x32
,
0x7b
,
0xa9
,
0x40
,
0xe6
,
0x12
,
0x04
,
0x18
,
0x41
,
0xca
,
0x27
,
0x83
,
0xf4
,
0x2e
,
0xf4
,
0xff
,
0xde
,
0x82
,
0xb2
,
0xaa
,
0xb3
,
0x2f
,
0x15
,
0x83
,
0x6d
,
0xc8
,
0x85
,
0xae
,
0xb6
,
0x39
,
0x49
,
0x89
,
0x91
,
0x18
,
0xba
,
0x2c
,
0x00
,
0xda
,
0xae
,
0xa4
,
0x69
,
0x12
,
0x1b
,
0x5b
,
0x66
,
0x61
,
0x63
,
0x8b
,
0xb7
,
0xac
,
0xac
,
0xb1
,
0x65
,
0xed
,
0x43
,
0xb1
,
0xa7
,
0xd5
,
0xe4
,
0x6f
,
0xad
,
0x76
,
0xfe
,
0x94
,
0x06
,
0x64
,
0xde
,
0x8b
,
0x78
,
0x7c
,
0x2f
,
0x9d
,
0x08
,
0xff
,
0x5b
,
0x99
,
0x5a
,
0x6a
,
0xa0
,
0xef
,
0x43
,
0x51
,
0xbf
,
0x0d
,
0x55
,
0x0b
,
0xbc
,
0xdb
,
0xb5
,
0xa8
,
0xb8
,
0x8a
,
0x9b
,
0x88
,
0x01
,
0x64
,
0x4e
,
0x89
,
0xe0
,
0xc9
,
0xe2
,
0x02
,
0x84
,
0x53
,
0xba
,
0x0e
,
0xff
,
0xd3
,
0x82
,
0x6b
,
0x89
,
0xfb
,
0xdd
,
0xd5
,
0x62
,
0xa5
,
0xb3
,
0x9a
,
0x4a
,
0xb0
,
0x7a
,
0xc5
,
0xc3
,
0x68
,
0xc1
,
0xd3
,
0xcc
,
0xbb
,
0x7a
,
0x9a
,
0x5d
,
0xe2
,
0xe9
,
0xdf
,
0x2c
,
0xa8
,
0x24
,
0x56
,
0x58
,
0xe0
,
0xa1
,
0x2f
,
0xa0
,
0x14
,
0xea
,
0x99
,
0x2a
,
0xfd
,
0xfd
,
0x20
,
0x0a
,
0x4a
,
0x32
,
0x8b
,
0x89
,
0x89
,
0x47
,
0x9f
,
0x43
,
0x31
,
0xb4
,
0xfd
,
0x53
,
0x1a
,
0x1e
,
0xeb
,
0xef
,
0x67
,
0x3b
,
0x89
,
0xfe
,
0x1a
,
0xb5
,
0xc4
,
0xc0
,
0xb3
,
0xfe
,
0xe2
,
0xad
,
0x4c
,
0xf6
,
0x4f
,
0x5f
,
0xdc
,
0x5f
,
0xc7
,
0xe3
,
0x5f
,
0xa5
,
0x60
,
0xcb
,
0x60
,
0x26
,
0x48
,
0xd6
,
0x94
,
0x56
,
0xb2
,
0xa6
,
0x64
,
0x15
,
0xb0
,
0x72
,
0x42
,
0x62
,
0x44
,
0xe4
,
0x12
,
0x5a
,
0x46
,
0xab
,
0x98
,
0x4b
,
0xa2
,
0xc4
,
0xda
,
0x32
,
0x74
,
0xe8
,
0x13
,
0xc8
,
0xb0
,
0x91
,
0xdf
,
0x16
,
0x2b
,
0x0e
,
0x40
,
0x9f
,
0x2e
,
0x3c
,
0x4e
,
0x2d
,
0x05
,
0xc7
,
0xaf
,
0x52
,
0xb7
,
0xa3
,
0x77
,
0xc6
,
0xdc
,
0x6a
,
0xb8
,
0x7a
,
0x68
,
0xfc
,
0x75
,
0x0a
,
0xb6
,
0xc4
,
0x0d
,
0x82
,
0xdf
,
0x4b
,
0xf9
,
0x93
,
0xee
,
0xdb
,
0xb6
,
0x4f
,
0x7e
,
0x6f
,
0x95
,
0xbb
,
0x89
,
0xf4
,
0x3e
,
0x56
,
0x5c
,
0x79
,
0x6b
,
0xb9
,
0x01
,
0xe0
,
0x04
,
0x44
,
0xbd
,
0x43
,
0x67
,
0xf8
,
0xd5
,
0x5e
,
0xd3
,
0xb0
,
0x9a
,
0xc8
,
0x16
,
0x77
,
0x16
,
0x99
,
0x9a
,
0x4a
,
0xe4
,
0xf5
,
0x4a
,
0x68
,
0x87
,
0xb3
,
0x80
,
0x3b
,
0x19
,
0xff
,
0x2f
,
0xe9
,
0xb8
,
0x21
,
0xed
,
0xf1
,
0x06
,
0x22
,
0x01
,
0x5a
,
0x69
,
0x93
,
0xbf
,
0xa0
,
0xb4
,
0xc1
,
0x4f
,
0x15
,
0x19
,
0x8d
,
0x97
,
0x47
,
0x8e
,
0x20
,
0x63
,
0x1f
,
0x32
,
0xce
,
0xf4
,
0xc4
,
0x95
,
0xf9
,
0xad
,
0x1e
,
0x2e
,
0x13
,
0x94
,
0x11
,
0x8e
,
0x61
,
0xe6
,
0x86
,
0x73
,
0x71
,
0xe3
,
0x17
,
0xd4
,
0x28
,
0x11
,
0xff
,
0xc3
,
0x52
,
0x17
,
0x35
,
0x3e
,
0xee
,
0x90
,
0xce
,
0x2f
,
0x3a
,
0xa7
,
0xbe
,
0x59
,
0xa2
,
0x57
,
0x13
,
0xb9
,
0x6d
,
0x10
,
0x99
,
0x8d
,
0x58
,
0xbb
,
0x0e
,
0x59
,
0x81
,
0xcf
,
0x73
,
0xb5
,
0x10
,
0x98
,
0x55
,
0x43
,
0xc7
,
0xa7
,
0xe2
,
0x27
,
0xcb
,
0x3a
,
0x6f
,
0x89
,
0x15
,
0xf8
,
0x0b
,
0x23
,
0x97
,
0xf8
,
0x3e
,
0xf1
,
0x1d
,
0xc8
,
0x32
,
0x97
,
0xd4
,
0x3b
,
0xf2
,
0x2a
,
0xfe
,
0x04
,
0x08
,
0xdf
,
0x82
,
0x4d
,
0xd1
,
0x42
,
0xe8
,
0x6b
,
0x76
,
0xaa
,
0x72
,
0x33
,
0xd8
,
0x5d
,
0x34
,
0x7a
,
0x98
,
0xe0
,
0x02
,
0x26
,
0xb0
,
0x2d
,
0x70
,
0xcd
,
0xa9
,
0xfd
,
0x72
,
0x4c
,
0xe5
,
0x85
,
0x96
,
0x2d
,
0xe1
,
0x65
,
0xff
,
0xa7
,
0x10
,
0x64
,
0x9c
,
0xe0
,
0xf8
,
0x21
,
0x67
,
0x71
,
0x9d
,
0xf0
,
0x6f
,
0x54
,
0x86
,
0xf4
,
0x24
,
0x38
,
0x95
,
0x8c
,
0xb1
,
0x4f
,
0xdc
,
0x81
,
0xf7
,
0x97
,
0x8d
,
0xc9
,
0x9c
,
0xb8
,
0x03
,
0x59
,
0x9f
,
0x06
,
0x9e
,
0x72
,
0xe2
,
0x43
,
0xc3
,
0x89
,
0xa4
,
0x09
,
0x44
,
0x60
,
0x71
,
0x07
,
0xe0
,
0x91
,
0x3b
,
0xb0
,
0xc7
,
0x47
,
0xce
,
0xbc
,
0x3f
,
0x67
,
0x36
,
0x8c
,
0xe2
,
0x30
,
0xf3
,
0x6f
,
0x46
,
0xfd
,
0x88
,
0x3a
,
0xa7
,
0x23
,
0xb1
,
0xf9
,
0xa5
,
0x89
,
0x94
,
0x98
,
0xcf
,
0x4e
,
0xf4
,
0x6c
,
0x94
,
0x26
,
0x42
,
0x60
,
0x95
,
0x4e
,
0x91
,
0x8f
,
0x25
,
0x1e
,
0x6d
,
0x5e
,
0xeb
,
0xd9
,
0x66
,
0x19
,
0xd9
,
0x16
,
0x4d
,
0x96
,
0x5a
,
0x3a
,
0x59
,
0x7a
,
0xf9
,
0x64
,
0x19
,
0x6d
,
0xb2
,
0x38
,
0xfa
,
0xd9
,
0x95
,
0xd1
,
0xcf
,
0x25
,
0xa3
,
0x7f
,
0x17
,
0x4a
,
0x9a
,
0x7d
,
0x81
,
0x87
,
0x3e
,
0x82
,
0x74
,
0x38
,
0x57
,
0xa4
,
0xa9
,
0x55
,
0x17
,
0x73
,
0x42
,
0x58
,
0x2b
,
0x3e
,
0x82
,
0x8a
,
0xe4
,
0x8e
,
0x05
,
0x9c
,
0xd0
,
0x60
,
0x36
,
0xfe
,
0x4f
,
0xa2
,
0xd8
,
0x86
,
0x6b
,
0x84
,
0xbe
,
0x5e
,
0x48
,
0x8b
,
0x1a
,
0xe4
,
0x7d
,
0x3e
,
0xb4
,
0x32
,
0xa7
,
0xaa
,
0x5d
,
0x8f
,
0x8d
,
0xb9
,
0x89
,
0x02
,
0xee
,
0xff
,
0x14
,
0x20
,
0xfe
,
0xfb
,
0x8a
,
0x36
,
0x20
,
0xdf
,
0x68
,
0x76
,
0x8f
,
0x7b
,
0xed
,
0x7e
,
0x79
,
0x0d
,
0x15
,
0x61
,
0xfd
,
0x69
,
0xbb
,
0xdf
,
0x6a
,
0x90
,
0xfa
,
0xd3
,
0xb2
,
0x85
,
0x2a
,
0x50
,
0xea
,
0x93
,
0x7a
,
0xa7
,
0x77
,
0xd8
,
0x24
,
0xed
,
0x4e
,
0xf7
,
0x71
,
0xbf
,
0x9c
,
0x42
,
0x08
,
0x36
,
0x95
,
0xea
,
0xf8
,
0x71
,
0x9f
,
0xe9
,
0xd2
,
0xa8
,
0x04
,
0x85
,
0xfa
,
0xe3
,
0x7e
,
0xeb
,
0x98
,
0xb4
,
0x5f
,
0x34
,
0xcb
,
0x99
,
0xfd
,
0x3a
,
0xa7
,
0x2b
,
0xfe
,
0x83
,
0xc9
,
0xda
,
0xa3
,
0xdf
,
0x8e
,
0xe5
,
0x35
,
0xb4
,
0x09
,
0x10
,
0xff
,
0x9a
,
0x15
,
0xb3
,
0xc8
,
0xb7
,
0x24
,
0xa9
,
0x4a
,
0xed
,
0x7f
,
0xc4
,
0x33
,
0x22
,
0xfa
,
0x83
,
0x82
,
0xf2
,
0x90
,
0xae
,
0x0f
,
0x87
,
0xe5
,
0x35
,
0x04
,
0x90
,
0x6b
,
0xd0
,
0x31
,
0x0d
,
0x69
,
0xd9
,
0xda
,
0xff
,
0x01
,
0x40
,
0xbc
,
0x29
,
0xa2
,
0x02
,
0x64
,
0x1f
,
0x77
,
0x1a
,
0xcd
,
0xc3
,
0xf2
,
0x1a
,
0xfb
,
0x7c
,
0x52
,
0x7f
,
0xd4
,
0x6e
,
0x94
,
0x2d
,
0x86
,
0x3f
,
0x24
,
0xc7
,
0x2f
,
0x9a
,
0x9d
,
0x72
,
0x0a
,
0xad
,
0x43
,
0xe6
,
0x71
,
0xaf
,
0xd9
,
0x28
,
0xa7
,
0xf7
,
0x7f
,
0x04
,
0xef
,
0x1d
,
0x39
,
0x73
,
0xb5
,
0x20
,
0x83
,
0x81
,
0x3d
,
0x95
,
0x83
,
0xac
,
0x43
,
0xa6
,
0xdd
,
0x78
,
0xd4
,
0x14
,
0x44
,
0xf4
,
0xee
,
0xd7
,
0x3b
,
0x9d
,
0x76
,
0xe7
,
0x41
,
0xd9
,
0x62
,
0xd2
,
0x61
,
0xbb
,
0xd3
,
0xee
,
0xb5
,
0x9a
,
0x8d
,
0x72
,
0xaa
,
0xf6
,
0xb5
,
0x05
,
0x30
,
0x71
,
0xe6
,
0xea
,
0x55
,
0xea
,
0x2e
,
0x6c
,
0x3d
,
0x48
,
0x8c
,
0xa3
,
0x1e
,
0x1e
,
0x08
,
0x7d
,
0xdd
,
0x71
,
0xc6
,
0x3b
,
0xe5
,
0x58
,
0xec
,
0x85
,
0xbe
,
0x33
,
0x3d
,
0xc5
,
0x6b
,
0xe8
,
0x33
,
0xd8
,
0x10
,
0x5d
,
0x98
,
0x0f
,
0x97
,
0xea
,
0xf1
,
0x39
,
0x94
,
0x8c
,
0xf0
,
0xa3
,
0xad
,
0x18
,
0xc4
,
0xf7
,
0x94
,
0x9d
,
0x9d
,
0x58
,
0x91
,
0x4c
,
0x14
,
0xbc
,
0xf6
,
0x32
,
0xc7
,
0xff
,
0xce
,
0xdf
,
0xf9
,
0x77
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0x53
,
0x45
,
0xb1
,
0xbd
,
0xd2
,
0x1f
,
0x00
,
0x00
,
0xba
,
0x07
,
0x0a
,
0x13
,
0x7b
,
0xbe
,
0xef
,
0x7a
,
0x4e
,
0xe0
,
0xa0
,
0x6c
,
0x70
,
0xee
,
0x52
,
0x7f
,
0xbb
,
0x38
,
0x70
,
0x26
,
0x13
,
0x67
,
0x2a
,
0x94
,
0xdb
,
0x95
,
0xc0
,
0xb3
,
0xa6
,
0xbe
,
0x35
,
0x08
,
0x6c
,
0xa5
,
0xc2
,
0x5f
,
0xc1
,
0xc6
,
0xcb
,
0xd7
,
0x4f
,
0xa9
,
0x67
,
0x9f
,
0x9c
,
0x3f
,
0xa6
,
0xe7
,
0xe8
,
0xff
,
0x21
,
0xc3
,
0x3a
,
0x56
,
0x8d
,
0x1d
,
0x63
,
0xb7
,
0x5c
,
0xab
,
0xec
,
0xf3
,
0x51
,
0xf6
,
0x45
,
0x7b
,
0xff
,
0xdc
,
0xa5
,
0x84
,
0x37
,
0xa3
,
0xeb
,
0x90
,
0x3d
,
0xb3
,
0xc6
,
0x33
,
0x5a
,
0x4d
,
0xed
,
0x18
,
0xbb
,
0x05
,
0x22
,
0x04
,
0xfc
,
0x00
,
0x8a
,
0xda
,
0x58
,
0x3e
,
0xba
,
0x0d
,
0x99
,
0xa1
,
0x15
,
0x58
,
0x55
,
0x63
,
0x27
,
0xbd
,
0xbb
,
0x51
,
0x43
,
0x72
,
0x30
,
0x0d
,
0x42
,
0x78
,
0x3b
,
0xbe
,
0x09
,
0x1b
,
0xf5
,
0x59
,
0x30
,
0xea
,
0xce
,
0x5e
,
0xf1
,
0x6e
,
0x26
,
0xa4
,
0xdd
,
0xd7
,
0x3e
,
0xef
,
0x55
,
0x20
,
0xec
,
0x13
,
0x3b
,
0x00
,
0x5d
,
0xeb
,
0x7c
,
0x42
,
0xa7
,
0x01
,
0xb3
,
0x11
,
0x41
,
0xc6
,
0x1a
,
0x0e
,
0x3d
,
0x6e
,
0x63
,
0x81
,
0xf0
,
0x6f
,
0xb4
,
0x03
,
0x1b
,
0x1e
,
0x1d
,
0x50
,
0xfb
,
0x8c
,
0x7a
,
0x8f
,
0xe9
,
0xb9
,
0x34
,
0x4b
,
0x57
,
0xa1
,
0xbb
,
0x50
,
0xf0
,
0xe9
,
0xc0
,
0xa3
,
0x6c
,
0x88
,
0x6a
,
0x7a
,
0xc7
,
0xd8
,
0xdd
,
0xa8
,
0x95
,
0xa4
,
0x45
,
0x62
,
0x62
,
0x12
,
0xb5
,
0xe3
,
0x7f
,
0x19
,
0xb0
,
0x79
,
0x68
,
0xcf
,
0x1f
,
0x3a
,
0xd3
,
0x13
,
0xfb
,
0xb4
,
0xce
,
0xf9
,
0x42
,
0xb7
,
0x20
,
0xd5
,
0x3f
,
0x97
,
0xc4
,
0x5c
,
0x97
,
0x3d
,
0x43
,
0x0c
,
0xe7
,
0x26
,
0xd5
,
0x67
,
0xd3
,
0xe4
,
0x04
,
0x9e
,
0xdb
,
0x50
,
0xae
,
0x5d
,
0x4b
,
0x22
,
0xeb
,
0x83
,
0x80
,
0x48
,
0x08
,
0xaa
,
0x41
,
0xe1
,
0x4c
,
0x71
,
0x21
,
0x6d
,
0x5a
,
0xc2
,
0x52
,
0x6b
,
0x8d
,
0x44
,
0x30
,
0x54
,
0x85
,
0x9c
,
0xc5
,
0xc8
,
0x7a
,
0x5d
,
0xcd
,
0x30
,
0x27
,
0x5b
,
0x6b
,
0x44
,
0xca
,
0xe8
,
0x1e
,
0x80
,
0x1b
,
0xb2
,
0x54
,
0xcd
,
0xf2
,
0xe1
,
0x54
,
0x04
,
0x23
,
0xfa
,
0x5a
,
0x6b
,
0x44
,
0x83
,
0xfd
,
0x38
,
0x2f
,
0x23
,
0x89
,
0x1f
,
0xc2
,
0x7a
,
0xa3
,
0xd5
,
0xe3
,
0x0c
,
0xa0
,
0x9b
,
0x90
,
0xa6
,
0xee
,
0x6b
,
0xee
,
0xeb
,
0x02
,
0x4b
,
0xac
,
0x05
,
0x6d
,
0x41
,
0x4e
,
0x90
,
0xc5
,
0xad
,
0x2e
,
0x10
,
0x29
,
0x61
,
0x0a
,
0x25
,
0x35
,
0xc8
,
0x23
,
0xcf
,
0x99
,
0xb9
,
0x68
,
0x1b
,
0xd6
,
0x55
,
0x10
,
0x64
,
0xbc
,
0x42
,
0x59
,
0xb4
,
0x05
,
0x33
,
0x6f
,
0x4a
,
0x3d
,
0x19
,
0xb0
,
0x50
,
0x46
,
0xff
,
0x07
,
0x05
,
0xe6
,
0x95
,
0xe3
,
0xd9
,
0x3f
,
0xa7
,
0x72
,
0x8e
,
0x48
,
0x81
,
0x67
,
0x2c
,
0x69
,
0xbb
,
0x9e
,
0xe3
,
0x9c
,
0xb4
,
0xa7
,
0x27
,
0x0e
,
0xcb
,
0x46
,
0x97
,
0x09
,
0x72
,
0x06
,
0x21
,
0xb0
,
0x94
,
0x70
,
0x67
,
0xaf
,
0xc6
,
0xf6
,
0xa0
,
0x3d
,
0x75
,
0x67
,
0x81
,
0x4a
,
0x09
,
0x4d
,
0x85
,
0xf6
,
0x21
,
0x2f
,
0xec
,
0xf6
,
0x25
,
0xf9
,
0x2a
,
0xac
,
0x31
,
0x1f
,
0x88
,
0x02
,
0xe1
,
0x3e
,
0x98
,
0x87
,
0xf6
,
0xbc
,
0x41
,
0x5d
,
0xc7
,
0xb7
,
0x03
,
0x19
,
0xc2
,
0x2d
,
0xc8
,
0x59
,
0x13
,
0x67
,
0x36
,
0x0d
,
0xf8
,
0xe4
,
0x19
,
0x22
,
0x25
,
0xb4
,
0xab
,
0x6c
,
0x4a
,
0x25
,
0xc2
,
0x1a
,
0x9a
,
0x2d
,
0xed
,
0xc4
,
0xbf
,
0x33
,
0xa0
,
0x72
,
0x68
,
0xcf
,
0xfb
,
0x6c
,
0x69
,
0x9e
,
0x50
,
0x4f
,
0x8e
,
0xbb
,
0x0b
,
0x59
,
0x9b
,
0xdb
,
0x6d
,
0xac
,
0xee
,
0xcf
,
0x01
,
0x68
,
0x0f
,
0x72
,
0xce
,
0x2c
,
0x50
,
0x2e
,
0x2e
,
0x87
,
0x4a
,
0x04
,
0xc3
,
0x0e
,
0x46
,
0xd6
,
0xf4
,
0x94
,
0x2e
,
0x64
,
0x9b
,
0x86
,
0x15
,
0x08
,
0x3c
,
0xe0
,
0x66
,
0x3d
,
0xb3
,
0x83
,
0xd1
,
0xd0
,
0xb3
,
0xde
,
0x5e
,
0xe0
,
0xee
,
0x03
,
0x28
,
0xfa
,
0x2e
,
0x9d
,
0x0e
,
0x1f
,
0x3a
,
0x93
,
0x89
,
0x1d
,
0xf8
,
0xd5
,
0x54
,
0x62
,
0xc9
,
0x47
,
0xc3
,
0xc7
,
0x70
,
0xf8
,
0x2b
,
0x40
,
0x87
,
0xf6
,
0xbc
,
0xae
,
0x22
,
0x2b
,
0x67
,
0xb9
,
0x0f
,
0x1b
,
0x2c
,
0xd8
,
0x6a
,
0x30
,
0x63
,
0xe5
,
0x60
,
0x3a
,
0x0c
,
0xff
,
0x39
,
0x05
,
0x05
,
0x36
,
0x98
,
0x18
,
0xa3
,
0x0c
,
0xa9
,
0x40
,
0x2c
,
0xd7
,
0x2c
,
0x49
,
0x05
,
0xe7
,
0xe8
,
0x33
,
0xc8
,
0x0d
,
0xf8
,
0x02
,
0x94
,
0x34
,
0x6d
,
0x2d
,
0x59
,
0x98
,
0xb6
,
0x33
,
0x65
,
0xeb
,
0x49
,
0xe0
,
0xd0
,
0x3d
,
0xc8
,
0x0f
,
0x45
,
0xac
,
0x25
,
0x5b
,
0x1f
,
0x46
,
0x5d
,
0x62
,
0x49
,
0xd0
,
0x5a
,
0x23
,
0x0a
,
0x89
,
0x1e
,
0xc0
,
0xfa
,
0x5b
,
0x49
,
0x19
,
0x5f
,
0xa0
,
0x1b
,
0xb5
,
0x6a
,
0xd4
,
0x2b
,
0x4e
,
0x66
,
0x6b
,
0x8d
,
0x84
,
0x58
,
0xd6
,
0x2f
,
0x90
,
0x19
,
0x20
,
0x97
,
0xae
,
0xd6
,
0x2f
,
0x9e
,
0x1b
,
0xac
,
0x9f
,
0xc2
,
0xa2
,
0x1f
,
0xea
,
0x0b
,
0x25
,
0xc7
,
0x3b
,
0xde
,
0x88
,
0x3a
,
0x26
,
0x88
,
0x65
,
0x3b
,
0x49
,
0x88
,
0x8e
,
0x96
,
0x7e
,
0x0b
,
0x90
,
0xf4
,
0xa7
,
0xab
,
0xad
,
0x8e
,
0x6d
,
0x58
,
0x9f
,
0x3a
,
0x01
,
0x6d
,
0x59
,
0xfe
,
0x48
,
0x2d
,
0x5d
,
0x25
,
0x6b
,
0x69
,
0x20
,
0x96
,
0x95
,
0x94
,
0xf0
,
0x1f
,
0x0d
,
0xb8
,
0xa6
,
0x9c
,
0xd4
,
0xc7
,
0xc2
,
0x50
,
0x0c
,
0x3c
,
0x4a
,
0x89
,
0xe3
,
0x04
,
0xda
,
0x78
,
0x31
,
0x1d
,
0xba
,
0x05
,
0xa5
,
0xe9
,
0x6c
,
0x3c
,
0xb6
,
0x4f
,
0x6c
,
0xea
,
0x71
,
0x90
,
0x18
,
0x3a
,
0xae
,
0x44
,
0xfb
,
0x80
,
0x42
,
0x0f
,
0x7a
,
0x2c
,
0x93
,
0x38
,
0x54
,
0xec
,
0x10
,
0x4b
,
0x5a
,
0x34
,
0x4b
,
0x33
,
0x31
,
0x4b
,
0xff
,
0x6e
,
0x40
,
0x55
,
0xd1
,
0xca
,
0x6d
,
0x7c
,
0x0f
,
0x73
,
0xfd
,
0x91
,
0x4d
,
0xc7
,
0xc3
,
0x3a
,
0x1f
,
0xf0
,
0xb9
,
0x32
,
0x37
,
0xa6
,
0x4c
,
0xa2
,
0x5e
,
0x48
,
0x4b
,
0xe3
,
0xca
,
0x15
,
0x4e
,
0x65
,
0x56
,
0x3a
,
0xb5
,
0x40
,
0x55
,
0x76
,
0x09
,
0x55
,
0xf8
,
0x97
,
0x06
,
0xdc
,
0x50
,
0x2e
,
0x1e
,
0xf1
,
0xf5
,
0x7f
,
0xd9
,
0xf0
,
0x7e
,
0x8b
,
0xbe
,
0xe1
,
0xbf
,
0x18
,
0x70
,
0x3d
,
0x4c
,
0xc3
,
0xab
,
0x92
,
0xbc
,
0x0b
,
0x9b
,
0x96
,
0xd6
,
0x37
,
0x3a
,
0xda
,
0x93
,
0x6a
,
0x66
,
0x4c
,
0xa8
,
0xd2
,
0x52
,
0x22
,
0xae
,
0xbc
,
0x2a
,
0xd1
,
0x78
,
0x07
,
0xa0
,
0x39
,
0xb7
,
0xfd
,
0xe0
,
0x29
,
0x5b
,
0x27
,
0xac
,
0xf0
,
0x90
,
0xf5
,
0x8c
,
0xb1
,
0xbb
,
0x2e
,
0x6b
,
0x97
,
0x3d
,
0x30
,
0xc5
,
0xfe
,
0xd3
,
0xf7
,
0x28
,
0x7d
,
0x42
,
0xad
,
0x33
,
0xea
,
0xb3
,
0x9c
,
0x1b
,
0xf3
,
0x2f
,
0xbe
,
0x73
,
0x15
,
0x89
,
0x94
,
0xf0
,
0x1d
,
0xd8
,
0x8c
,
0xb0
,
0xcc
,
0x47
,
0x9f
,
0x1d
,
0x5d
,
0x1e
,
0xfb
,
0x90
,
0x48
,
0x21
,
0xe0
,
0x3f
,
0x18
,
0x3a
,
0xb2
,
0xeb
,
0x39
,
0x67
,
0x94
,
0x9f
,
0x96
,
0x71
,
0xaa
,
0x42
,
0x99
,
0xb5
,
0xf1
,
0xb3
,
0xa4
,
0x47
,
0x03
,
0xbe
,
0xf3
,
0x16
,
0x48
,
0x28
,
0xa3
,
0x8f
,
0x01
,
0x5c
,
0xb1
,
0x5f
,
0x0e
,
0xe9
,
0x9c
,
0xb3
,
0x52
,
0x22
,
0x9a
,
0x86
,
0x9d
,
0xb4
,
0xd3
,
0xd9
,
0x44
,
0x58
,
0xce
,
0x99
,
0x28
,
0x91
,
0x48
,
0x81
,
0xaa
,
0x90
,
0x1f
,
0xd1
,
0xb1
,
0x4b
,
0x3d
,
0xbf
,
0x9a
,
0xdd
,
0x49
,
0xef
,
0x96
,
0x88
,
0x12
,
0x71
,
0x13
,
0x36
,
0x98
,
0x71
,
0x7c
,
0x1b
,
0xa6
,
0x6f
,
0x2e
,
0x32
,
0x6f
,
0x4c
,
0xad
,
0x13
,
0x6d
,
0x51
,
0x87
,
0x32
,
0xbe
,
0x0d
,
0x45
,
0xce
,
0x9c
,
0xed
,
0x07
,
0x84
,
0xfa
,
0x6e
,
0x82
,
0xbb
,
0x42
,
0xc8
,
0xdd
,
0x4b
,
0x28
,
0x47
,
0x35
,
0x4c
,
0xd7
,
0xb2
,
0x3d
,
0x74
,
0x1b
,
0xca
,
0xaa
,
0x94
,
0x90
,
0xa9
,
0x21
,
0xe6
,
0x4d
,
0x68
,
0x59
,
0x1d
,
0xc0
,
0x8f
,
0x9c
,
0xae
,
0x67
,
0x6b
,
0xa5
,
0xa1
,
0xa6
,
0xc2
,
0xb7
,
0x20
,
0x27
,
0xb1
,
0x45
,
0x30
,
0x9e
,
0xcb
,
0x61
,
0x8c
,
0xe7
,
0x4c
,
0x7a
,
0x21
,
0xf1
,
0xc6
,
0x0b
,
0xfc
,
0x11
,
0xe4
,
0xbb
,
0x9e
,
0x7d
,
0x26
,
0x2b
,
0xd0
,
0x30
,
0x11
,
0x0a
,
0x32
,
0x11
,
0x1c
,
0x40
,
0xbd
,
0x91
,
0xe5
,
0xd1
,
0x9e
,
0x2a
,
0x22
,
0xb9
,
0x91
,
0xbb
,
0x90
,
0x77
,
0x45
,
0x27
,
0x79
,
0x90
,
0x97
,
0x55
,
0x35
,
0x25
,
0xb4
,
0x44
,
0x35
,
0xa3
,
0x4f
,
0x55
,
0x05
,
0x6b
,
0x4f
,
0x4f
,
0xbb
,
0xaf
,
0xe5
,
0x21
,
0x95
,
0xa8
,
0xbd
,
0x74
,
0x04
,
0xfe
,
0x8d
,
0x01
,
0x95
,
0xfa
,
0x60
,
0xc0
,
0x56
,
0x19
,
0x1b
,
0xcc
,
0x1a
,
0xf0
,
0xf2
,
0xf0
,
0x7b
,
0xb1
,
0x22
,
0x50
,
0xcc
,
0xf9
,
0xc1
,
0x42
,
0x11
,
0xc8
,
0x6c
,
0xd3
,
0xcb
,
0x40
,
0x54
,
0x87
,
0xb2
,
0x1f
,
0xb3
,
0x5e
,
0x1a
,
0xa0
,
0xce
,
0x92
,
0x45
,
0xd7
,
0x48
,
0xa2
,
0x03
,
0xfe
,
0x09
,
0x54
,
0x9e
,
0x59
,
0xe3
,
0x31
,
0x0d
,
0xea
,
0xc3
,
0xa1
,
0x27
,
0x2d
,
0x42
,
0x35
,
0xe1
,
0xbf
,
0x35
,
0x50
,
0xb6
,
0xa8
,
0x53
,
0x6d
,
0xc1
,
0x72
,
0xa2
,
0x80
,
0x61
,
0x7d
,
0x9f
,
0x8a
,
0xea
,
0x7b
,
0xb6
,
0x8b
,
0x80
,
0x98
,
0xaa
,
0x61
,
0x05
,
0xd6
,
0xa5
,
0x63
,
0x8f
,
0xa1
,
0x28
,
0x4a
,
0xca
,
0xd8
,
0xe6
,
0x11
,
0xd3
,
0x2d
,
0xdb
,
0x63
,
0xd2
,
0xcb
,
0xf7
,
0x98
,
0x15
,
0x67
,
0x09
,
0x5b
,
0x62
,
0x6c
,
0xeb
,
0x24
,
0xd6
,
0x74
,
0xe8
,
0x4c
,
0xe4
,
0x5e
,
0xac
,
0x69
,
0xf0
,
0x4b
,
0xa8
,
0x34
,
0xa7
,
0x03
,
0x67
,
0x48
,
0x87
,
0x9a
,
0x0b
,
0x55
,
0xc8
,
0x53
,
0xa1
,
0x94
,
0xb6
,
0x2b
,
0x11
,
0xdd
,
0x85
,
0xbc
,
0x67
,
0xbd
,
0x65
,
0x20
,
0x19
,
0x04
,
0x55
,
0xc4
,
0x47
,
0xbd
,
0x89
,
0x42
,
0xe0
,
0x9f
,
0xf1
,
0xb1
,
0xbd
,
0x73
,
0x37
,
0xd0
,
0xc6
,
0x8e
,
0xca
,
0x73
,
0x43
,
0x2f
,
0xcf
,
0xd1
,
0xe7
,
0x50
,
0x14
,
0x28
,
0x8d
,
0x8e
,
0x85
,
0x24
,
0x8b
,
0x41
,
0xf0
,
0x2f
,
0x0c
,
0xa8
,
0x34
,
0xe8
,
0x65
,
0x27
,
0xa8
,
0x85
,
0x13
,
0x44
,
0x8b
,
0x6d
,
0x31
,
0xe7
,
0x63
,
0x18
,
0x75
,
0xd9
,
0x48
,
0xaf
,
0xba
,
0x6c
,
0xe0
,
0xdf
,
0x1a
,
0xb0
,
0xa9
,
0xea
,
0x13
,
0xb6
,
0x6f
,
0xb1
,
0xed
,
0x86
,
0x07
,
0x56
,
0x84
,
0xba
,
0x1e
,
0xdd
,
0x05
,
0x63
,
0x3a
,
0x16
,
0x16
,
0x11
,
0xe8
,
0x7a
,
0x94
,
0x4d
,
0x9a
,
0x26
,
0x76
,
0x64
,
0x70
,
0x48
,
0xf2
,
0xc8
,
0xe0
,
0xa8
,
0x78
,
0xd0
,
0xc3
,
0x8a
,
0x17
,
0x7f
,
0x6d
,
0x80
,
0x19
,
0xb7
,
0xca
,
0x77
,
0xdf
,
0x79
,
0xa8
,
0xde
,
0x89
,
0xdf
,
0x08
,
0x96
,
0x04
,
0x55
,
0x5e
,
0x5c
,
0xae
,
0x7a
,
0x2d
,
0xf9
,
0xda
,
0x80
,
0x12
,
0x3f
,
0x27
,
0xac
,
0x60
,
0xc4
,
0x4d
,
0xb9
,
0xd4
,
0xd1
,
0xba
,
0xcd
,
0x0a
,
0x4e
,
0xd1
,
0x49
,
0x9d
,
0x19
,
0x4a
,
0xd6
,
0x77
,
0xfd
,
0x74
,
0x6c
,
0xd7
,
0x67
,
0xa7
,
0xc5
,
0x99
,
0x35
,
0xb6
,
0x87
,
0xbc
,
0x5b
,
0x86
,
0xb7
,
0x45
,
0x0a
,
0xbc
,
0x0f
,
0x66
,
0x58
,
0xfd
,
0xa9
,
0x48
,
0xbd
,
0x83
,
0x12
,
0xfc
,
0xd7
,
0x14
,
0x54
,
0x12
,
0x1d
,
0x7c
,
0x17
,
0x7d
,
0x27
,
0x96
,
0x5c
,
0x4b
,
0x99
,
0x52
,
0xf9
,
0xf6
,
0xdf
,
0xa9
,
0x19
,
0x75
,
0x93
,
0x33
,
0x89
,
0x28
,
0x62
,
0x79
,
0xd1
,
0x91
,
0xb9
,
0x2c
,
0x57
,
0x7b
,
0x4c
,
0xc7
,
0x48
,
0xe2
,
0xf2
,
0xc1
,
0xd8
,
0x3a
,
0xe5
,
0x35
,
0x79
,
0x81
,
0x44
,
0x8a
,
0x58
,
0xda
,
0x71
,
0x44
,
0x3e
,
0x91
,
0x76
,
0x1c
,
0x55
,
0x83
,
0x42
,
0x20
,
0xce
,
0x7e
,
0xe7
,
0xa4
,
0xba
,
0x1e
,
0x4b
,
0x83
,
0x58
,
0xac
,
0x49
,
0x04
,
0xc3
,
0x07
,
0x50
,
0xe4
,
0xef
,
0x28
,
0x97
,
0xa0
,
0x9e
,
0x87
,
0xdf
,
0x21
,
0x7c
,
0x31
,
0x70
,
0xd2
,
0x4a
,
0x24
,
0x94
,
0xf1
,
0x37
,
0x29
,
0x28
,
0x69
,
0x03
,
0xf9
,
0x6e
,
0x94
,
0xbb
,
0xc6
,
0x05
,
0xb9
,
0xfb
,
0x31
,
0x80
,
0x15
,
0x3e
,
0xe5
,
0xa8
,
0x35
,
0x17
,
0x69
,
0xd8
,
0x61
,
0xcc
,
0x25
,
0xc9
,
0x9e
,
0x88
,
0x81
,
0xae
,
0x62
,
0x86
,
0x31
,
0x51
,
0x27
,
0x5f
,
0xc9
,
0x2b
,
0x02
,
0x99
,
0xbd
,
0x54
,
0x20
,
0x73
,
0x09
,
0x02
,
0x62
,
0x41
,
0xca
,
0x27
,
0x83
,
0xf4
,
0x3e
,
0xf4
,
0xff
,
0xde
,
0x00
,
0x53
,
0xd5
,
0xdb
,
0x97
,
0x8a
,
0xc1
,
0x16
,
0xe4
,
0x02
,
0x47
,
0xdb
,
0x9c
,
0xa4
,
0xc4
,
0x48
,
0x0c
,
0x1c
,
0x16
,
0x00
,
0x6d
,
0x57
,
0xd2
,
0x34
,
0x89
,
0x8d
,
0x2d
,
0xb3
,
0xb0
,
0xb1
,
0x45
,
0x5b
,
0x56
,
0x36
,
0xb6
,
0x65
,
0xed
,
0x41
,
0xb1
,
0xa7
,
0xd5
,
0xe6
,
0xef
,
0xac
,
0x76
,
0xfe
,
0x94
,
0x06
,
0x14
,
0xbf
,
0x1f
,
0xf1
,
0xf8
,
0x5e
,
0x3a
,
0x11
,
0xfe
,
0xb7
,
0x32
,
0xb5
,
0xd4
,
0x40
,
0xdf
,
0x87
,
0xa2
,
0x7e
,
0x2b
,
0xaa
,
0x16
,
0x78
,
0xb7
,
0x6b
,
0x61
,
0x71
,
0x15
,
0x35
,
0x91
,
0x18
,
0x90
,
0x39
,
0x25
,
0x82
,
0x27
,
0x8b
,
0x0b
,
0x10
,
0x4e
,
0xe9
,
0x3a
,
0xfc
,
0x4f
,
0x03
,
0xae
,
0x25
,
0xee
,
0x79
,
0x57
,
0x8b
,
0x95
,
0xce
,
0x6a
,
0x2a
,
0xc1
,
0xea
,
0x15
,
0x0f
,
0xa3
,
0x05
,
0x4f
,
0x33
,
0xef
,
0xeb
,
0x69
,
0x76
,
0x89
,
0xa7
,
0x7f
,
0x33
,
0xa0
,
0x92
,
0x58
,
0x61
,
0xbe
,
0x8b
,
0xbe
,
0x84
,
0x52
,
0xa0
,
0x67
,
0xaa
,
0xf4
,
0xf7
,
0x46
,
0x18
,
0x94
,
0x64
,
0x16
,
0x93
,
0x38
,
0x1e
,
0x7d
,
0x01
,
0xc5
,
0xc0
,
0xf2
,
0x4e
,
0x69
,
0x70
,
0xa4
,
0xbf
,
0xa3
,
0x6d
,
0x27
,
0xfa
,
0x6b
,
0xd4
,
0x92
,
0x18
,
0x9e
,
0xf5
,
0x17
,
0x6f
,
0x66
,
0xb2
,
0x7f
,
0xfa
,
0xe2
,
0xfe
,
0x3a
,
0x1e
,
0xff
,
0x2a
,
0x05
,
0x9b
,
0x31
,
0x66
,
0xfc
,
0x64
,
0x4d
,
0x69
,
0x24
,
0x6b
,
0x4a
,
0x56
,
0x01
,
0x2b
,
0x27
,
0x24
,
0x46
,
0x44
,
0x2e
,
0xa1
,
0x65
,
0xb4
,
0x8a
,
0xb9
,
0x24
,
0x4a
,
0xac
,
0xad
,
0x98
,
0x0e
,
0xdd
,
0x81
,
0x0c
,
0x1b
,
0xf9
,
0x5d
,
0xb1
,
0xe2
,
0x00
,
0xf4
,
0xe9
,
0xc2
,
0x23
,
0xd5
,
0x52
,
0x70
,
0xf4
,
0x3a
,
0x75
,
0x37
,
0x7c
,
0x6f
,
0xcc
,
0xad
,
0x86
,
0xab
,
0x07
,
0xc7
,
0x5f
,
0xa7
,
0x60
,
0x53
,
0xdc
,
0x20
,
0xf8
,
0xcd
,
0x94
,
0x3f
,
0xed
,
0xbe
,
0x6b
,
0xfb
,
0xe4
,
0x37
,
0x57
,
0xb9
,
0x9b
,
0x48
,
0xef
,
0x23
,
0xc5
,
0x95
,
0xb7
,
0x96
,
0x9b
,
0x90
,
0xf1
,
0x9c
,
0xb1
,
0x20
,
0xa1
,
0x5c
,
0xdb
,
0x90
,
0x86
,
0x12
,
0x67
,
0x4c
,
0x09
,
0x6f
,
0x60
,
0x45
,
0x91
,
0x25
,
0x2e
,
0x2d
,
0x32
,
0x37
,
0x95
,
0xc8
,
0x0b
,
0x96
,
0xc0
,
0x0a
,
0x66
,
0x3e
,
0xf7
,
0x32
,
0xfa
,
0x6d
,
0xd2
,
0x71
,
0x02
,
0xda
,
0xe3
,
0x0d
,
0x44
,
0x02
,
0xb4
,
0xda
,
0x26
,
0x7f
,
0x41
,
0x6d
,
0x83
,
0x9f
,
0x29
,
0x36
,
0x1a
,
0xaf
,
0x0e
,
0x6d
,
0xc1
,
0xc6
,
0x1e
,
0x64
,
0xec
,
0xe9
,
0x89
,
0x23
,
0x13
,
0x5c
,
0xbd
,
0x60
,
0x26
,
0x38
,
0x23
,
0x1c
,
0xc3
,
0xcc
,
0x0d
,
0xe6
,
0xe2
,
0xd2
,
0x2f
,
0xb8
,
0x51
,
0x22
,
0xfe
,
0x87
,
0xa1
,
0x6e
,
0x6a
,
0x7c
,
0xdc
,
0x21
,
0x9d
,
0x5f
,
0x74
,
0x50
,
0x7d
,
0xbb
,
0x4c
,
0xaf
,
0x26
,
0x72
,
0x2b
,
0x46
,
0x64
,
0x36
,
0x64
,
0xed
,
0x3a
,
0x64
,
0x05
,
0x3e
,
0xcf
,
0xd5
,
0x42
,
0x60
,
0x56
,
0x0d
,
0x6d
,
0x8f
,
0x8a
,
0xbf
,
0x2d
,
0xeb
,
0xbc
,
0x25
,
0x52
,
0xe0
,
0x2f
,
0x63
,
0xc9
,
0xc4
,
0x37
,
0x8a
,
0xef
,
0x42
,
0x96
,
0xb9
,
0xa4
,
0x1e
,
0x94
,
0x57
,
0xf1
,
0x27
,
0x40
,
0xf8
,
0x36
,
0x94
,
0x45
,
0x0b
,
0xa1
,
0x6f
,
0xd8
,
0xb1
,
0xca
,
0xcd
,
0x60
,
0x97
,
0x51
,
0xf5
,
0x34
,
0x21
,
0x04
,
0x4c
,
0x60
,
0x4b
,
0xe0
,
0x9a
,
0x53
,
0xeb
,
0xd5
,
0x98
,
0xca
,
0x1b
,
0x2d
,
0x5b
,
0xc3
,
0xcb
,
0x7e
,
0x54
,
0x21
,
0xc8
,
0xd8
,
0xfe
,
0xd1
,
0x63
,
0xce
,
0xe2
,
0x3a
,
0xe1
,
0xdf
,
0xc8
,
0x84
,
0xf4
,
0xc4
,
0x3f
,
0x95
,
0x8c
,
0xb1
,
0x4f
,
0xdc
,
0x81
,
0x0f
,
0x97
,
0x8d
,
0xc9
,
0x9c
,
0xb8
,
0x07
,
0x59
,
0x8f
,
0xfa
,
0xae
,
0x72
,
0xe2
,
0xa3
,
0x98
,
0x13
,
0x49
,
0x13
,
0x88
,
0xc0
,
0xe2
,
0x0e
,
0xc0
,
0x13
,
0x67
,
0x60
,
0x8d
,
0x0f
,
0xed
,
0x79
,
0x7f
,
0xce
,
0x6c
,
0x18
,
0x45
,
0x61
,
0xe6
,
0xdf
,
0x8c
,
0xfa
,
0x11
,
0xb5
,
0x4f
,
0x47
,
0x62
,
0xf7
,
0x4b
,
0x13
,
0x29
,
0x31
,
0x9f
,
0xed
,
0xf0
,
0xe5
,
0x28
,
0x4d
,
0x84
,
0xc0
,
0x4a
,
0x9d
,
0x22
,
0x1f
,
0x4b
,
0xbc
,
0xdb
,
0xbc
,
0xd1
,
0xb3
,
0xcd
,
0x88
,
0x65
,
0x5b
,
0x38
,
0x59
,
0x6a
,
0xe9
,
0x64
,
0xe9
,
0xe5
,
0x93
,
0x65
,
0xb4
,
0xc9
,
0xa2
,
0xe8
,
0x67
,
0x57
,
0x46
,
0x3f
,
0x97
,
0x8c
,
0xfe
,
0x7d
,
0x28
,
0x69
,
0xf6
,
0xf9
,
0x2e
,
0xfa
,
0x04
,
0xd2
,
0xc1
,
0x5c
,
0x91
,
0xa6
,
0x56
,
0x5d
,
0xc4
,
0x09
,
0x61
,
0xad
,
0xf8
,
0x10
,
0x2a
,
0x92
,
0x3b
,
0x16
,
0x70
,
0x42
,
0xfd
,
0xd9
,
0xf8
,
0x3f
,
0x89
,
0x62
,
0x1b
,
0xae
,
0x11
,
0xfa
,
0x66
,
0x21
,
0x2d
,
0x6a
,
0x90
,
0xf7
,
0xf8
,
0xd0
,
0xca
,
0x9c
,
0xaa
,
0x76
,
0x3f
,
0x8e
,
0xcd
,
0x4d
,
0x14
,
0x70
,
0xef
,
0xa7
,
0x00
,
0xd1
,
0x4f
,
0x58
,
0xb4
,
0x01
,
0xf9
,
0x46
,
0xb3
,
0x7b
,
0xd4
,
0x6b
,
0xf7
,
0xcd
,
0x35
,
0x54
,
0x84
,
0xf5
,
0x67
,
0xed
,
0x7e
,
0xab
,
0x41
,
0xea
,
0xcf
,
0x4c
,
0x03
,
0x55
,
0xa0
,
0xd4
,
0x27
,
0xf5
,
0x4e
,
0xef
,
0xa0
,
0x49
,
0xda
,
0x9d
,
0xee
,
0x71
,
0xdf
,
0x4c
,
0x21
,
0x04
,
0x65
,
0xa5
,
0x3a
,
0x3a
,
0xee
,
0x33
,
0x5d
,
0x1a
,
0x95
,
0xa0
,
0x50
,
0x3f
,
0xee
,
0xb7
,
0x8e
,
0x48
,
0xfb
,
0x65
,
0xd3
,
0xcc
,
0xec
,
0xd5
,
0x39
,
0x5d
,
0xd1
,
0xaf
,
0x4c
,
0xd6
,
0x1e
,
0xfe
,
0x7f
,
0x34
,
0xd7
,
0x50
,
0x19
,
0x20
,
0xfa
,
0x43
,
0x2b
,
0x66
,
0x91
,
0x8f
,
0x49
,
0x52
,
0x95
,
0xda
,
0xfb
,
0x84
,
0x67
,
0x44
,
0xf8
,
0x2b
,
0x05
,
0xe5
,
0x21
,
0x5d
,
0x1f
,
0x0e
,
0xcd
,
0x35
,
0x04
,
0x90
,
0x6b
,
0xd0
,
0x31
,
0x0d
,
0xa8
,
0x69
,
0xec
,
0xfd
,
0x00
,
0x20
,
0xda
,
0x14
,
0x51
,
0x01
,
0xb2
,
0xc7
,
0x9d
,
0x46
,
0xf3
,
0xc0
,
0x5c
,
0x63
,
0x9f
,
0x4f
,
0xeb
,
0x4f
,
0xda
,
0x0d
,
0xd3
,
0x60
,
0xf8
,
0x03
,
0x72
,
0xf4
,
0xb2
,
0xd9
,
0x31
,
0x53
,
0x68
,
0x1d
,
0x32
,
0xc7
,
0xbd
,
0x66
,
0xc3
,
0x4c
,
0xef
,
0x7d
,
0x0e
,
0x19
,
0xb6
,
0x17
,
0x33
,
0xd7
,
0x7b
,
0xdd
,
0x66
,
0xa7
,
0xd1
,
0x24
,
0xc2
,
0x75
,
0xd2
,
0xec
,
0x1f
,
0x93
,
0x4e
,
0x93
,
0x98
,
0x06
,
0x37
,
0x52
,
0xf9
,
0x44
,
0xcc
,
0xd4
,
0xde
,
0x8f
,
0xe0
,
0x83
,
0x43
,
0x7b
,
0xae
,
0xd6
,
0xb0
,
0x3f
,
0xb0
,
0xa6
,
0x72
,
0xde
,
0x75
,
0xc8
,
0xb4
,
0x1b
,
0x4f
,
0x9a
,
0x62
,
0x80
,
0xde
,
0xc3
,
0x7a
,
0xa7
,
0xd3
,
0xee
,
0x3c
,
0x32
,
0x0d
,
0x26
,
0x1d
,
0xb4
,
0x3b
,
0xed
,
0x5e
,
0xab
,
0xd9
,
0x30
,
0x53
,
0xb5
,
0x6f
,
0x0c
,
0x80
,
0x89
,
0x3d
,
0x57
,
0x2f
,
0x59
,
0xf7
,
0x61
,
0xf3
,
0x51
,
0x62
,
0x1c
,
0xf5
,
0x58
,
0x41
,
0xe8
,
0x9b
,
0x8e
,
0x3d
,
0xde
,
0x36
,
0x23
,
0xb1
,
0x17
,
0x78
,
0xf6
,
0xf4
,
0x14
,
0xaf
,
0xa1
,
0xcf
,
0x60
,
0x43
,
0x74
,
0x61
,
0x6e
,
0x5f
,
0xaa
,
0xc7
,
0x17
,
0x50
,
0x8a
,
0x65
,
0x0c
,
0xda
,
0x8c
,
0x40
,
0x7c
,
0x1b
,
0xda
,
0xde
,
0x8e
,
0x14
,
0xc9
,
0xdc
,
0xc2
,
0x6b
,
0xaf
,
0x72
,
0xfc
,
0xbf
,
0xfe
,
0xbd
,
0x7f
,
0x07
,
0x00
,
0x00
,
0xff
,
0xff
,
0x1d
,
0x09
,
0x71
,
0xcc
,
0x0c
,
0x20
,
0x00
,
0x00
,
}
// Reference imports to suppress errors if they are not otherwise used.
...
...
plugin/dapp/mix/wallet/mixbizdb.go
View file @
ce15f935
...
...
@@ -350,11 +350,15 @@ func (p *mixPolicy) decodeSecret(noteHash string, secretData string, privacyKeys
//如果授权为returnerAuthHash,则returner更新本地为VALID,spender侧仍为FROZEN,
info
.
AuthorizeSpendHash
=
"0"
if
len
(
rawData
.
AuthorizePubKey
)
>
LENNULLKEY
{
if
rawData
.
ReceiverPubKey
==
key
.
Privacy
.
PaymentKey
.
ReceiverPubKey
{
switch
key
.
Privacy
.
PaymentKey
.
ReceiverPubKey
{
case
rawData
.
ReceiverPubKey
:
info
.
Role
=
mixTy
.
Role_SPENDER
info
.
AuthorizeSpendHash
=
getFrString
(
mimcHashString
([]
string
{
rawData
.
ReceiverPubKey
,
rawData
.
Amount
,
rawData
.
NoteRandom
}))
}
else
if
rawData
.
ReturnPubKey
==
key
.
Privacy
.
PaymentKey
.
ReceiverPubKey
{
info
.
IsReturner
=
true
case
rawData
.
ReturnPubKey
:
info
.
Role
=
mixTy
.
Role_RETURNER
info
.
AuthorizeSpendHash
=
getFrString
(
mimcHashString
([]
string
{
rawData
.
ReturnPubKey
,
rawData
.
Amount
,
rawData
.
NoteRandom
}))
case
rawData
.
AuthorizePubKey
:
info
.
Role
=
mixTy
.
Role_AUTHORIZER
}
}
...
...
plugin/dapp/mix/wallet/proof.go
View file @
ce15f935
...
...
@@ -210,12 +210,12 @@ func (policy *mixPolicy) withdrawProof(req *mixTy.WithdrawProofReq) (*mixTy.With
resp
.
NullifierHash
=
note
.
Nullifier
resp
.
AuthorizeSpendHash
=
note
.
AuthorizeSpendHash
resp
.
NoteHash
=
note
.
NoteHash
resp
.
SpendFlag
=
1
if
note
.
IsReturner
{
resp
.
SpendFlag
=
0
resp
.
SpendFlag
=
"1"
if
note
.
Role
==
mixTy
.
Role_RETURNER
{
resp
.
SpendFlag
=
"0"
}
if
len
(
resp
.
AuthorizeSpendHash
)
>
LENNULLKEY
{
resp
.
AuthorizeFlag
=
1
resp
.
AuthorizeFlag
=
"1"
}
//get spend privacy key
...
...
@@ -260,10 +260,10 @@ func (policy *mixPolicy) authProof(req *mixTy.AuthProofReq) (*mixTy.AuthProofRes
resp
.
AuthHash
=
getFrString
(
mimcHashString
([]
string
{
resp
.
AuthPubKey
,
note
.
Secret
.
NoteRandom
}))
//default auto to paymenter
resp
.
SpendFlag
=
1
resp
.
SpendFlag
=
"1"
resp
.
AuthorizeSpendHash
=
getFrString
(
mimcHashString
([]
string
{
note
.
Secret
.
ReceiverPubKey
,
note
.
Secret
.
Amount
,
note
.
Secret
.
NoteRandom
}))
if
req
.
ToReturn
!=
0
{
resp
.
SpendFlag
=
0
resp
.
SpendFlag
=
"0"
//auth to returner
resp
.
AuthorizeSpendHash
=
getFrString
(
mimcHashString
([]
string
{
note
.
Secret
.
ReturnPubKey
,
note
.
Secret
.
Amount
,
note
.
Secret
.
NoteRandom
}))
}
...
...
@@ -313,12 +313,12 @@ func (policy *mixPolicy) getTransferInputPart(note *mixTy.WalletIndexInfo) (*mix
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"payment pubkey from note=%s not match from privacyKey=%s,for account =%s"
,
note
.
Secret
.
ReceiverPubKey
,
privacyKey
.
Privacy
.
PaymentKey
.
ReceiverPubKey
,
note
.
Account
)
}
input
.
SpendFlag
=
1
if
note
.
IsReturner
{
input
.
SpendFlag
=
0
input
.
SpendFlag
=
"1"
if
note
.
Role
==
mixTy
.
Role_RETURNER
{
input
.
SpendFlag
=
"0"
}
if
len
(
input
.
AuthorizeSpendHash
)
>
LENNULLKEY
{
input
.
AuthorizeFlag
=
1
input
.
AuthorizeFlag
=
"1"
}
treeProof
,
err
:=
policy
.
getTreeProof
(
note
.
NoteHash
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment