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
f18b8d76
Commit
f18b8d76
authored
Mar 19, 2021
by
jiangpeng
Committed by
vipwzw
Mar 24, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
privacy:update rpc PrivacyTransactionList
parent
0559134e
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
204 additions
and
225 deletions
+204
-225
test-rpc.sh
plugin/dapp/privacy/cmd/test/test-rpc.sh
+1
-1
privacy.go
plugin/dapp/privacy/commands/privacy.go
+7
-7
privacy.proto
plugin/dapp/privacy/proto/privacy.proto
+9
-4
rpc_channel_test.go
plugin/dapp/privacy/rpc/rpc_channel_test.go
+1
-2
privacy.pb.go
plugin/dapp/privacy/types/privacy.pb.go
+164
-166
keys.go
plugin/dapp/privacy/wallet/keys.go
+2
-3
privacybizpolicy_test.go
plugin/dapp/privacy/wallet/privacybizpolicy_test.go
+1
-1
privacystore.go
plugin/dapp/privacy/wallet/privacystore.go
+19
-41
No files found.
plugin/dapp/privacy/cmd/test/test-rpc.sh
View file @
f18b8d76
...
...
@@ -14,7 +14,7 @@ privacy_CreateRawTransaction() {
}
privacy_GetPrivacyTxByAddr
()
{
chain33_Http
'{"method":"privacy.GetPrivacyTxByAddr","params":[{"assetExec":"coins", "
tokenname":"BTY","sendRecvFlag":0,"from
":"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv", "direction":1, "count":1}]}'
${
MAIN_HTTP
}
'.error|not'
"
$FUNCNAME
"
chain33_Http
'{"method":"privacy.GetPrivacyTxByAddr","params":[{"assetExec":"coins", "
assetSymbol":"BTY","sendRecvFlag":0,"address
":"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv", "direction":1, "count":1}]}'
${
MAIN_HTTP
}
'.error|not'
"
$FUNCNAME
"
}
privacy_ShowPrivacyKey
()
{
...
...
plugin/dapp/privacy/commands/privacy.go
View file @
f18b8d76
...
...
@@ -549,12 +549,12 @@ func addListPrivacyTxsFlags(cmd *cobra.Command) {
cmd
.
Flags
()
.
StringP
(
"addr"
,
"a"
,
""
,
"account address"
)
cmd
.
MarkFlagRequired
(
"addr"
)
//
cmd
.
Flags
()
.
Int32P
(
"sendrecv"
,
""
,
0
,
"send or recv flag (0: send, 1: recv), default 0"
)
cmd
.
Flags
()
.
Int32P
(
"sendrecv"
,
"
f
"
,
0
,
"send or recv flag (0: send, 1: recv), default 0"
)
cmd
.
Flags
()
.
Int32P
(
"count"
,
"c"
,
10
,
"number of transactions, default 10"
)
cmd
.
Flags
()
.
StringP
(
"exec"
,
"e"
,
"coins"
,
"asset executor(coins, token, paracross), default coins"
)
cmd
.
Flags
()
.
StringP
(
"
token"
,
""
,
types
.
BTY
,
"token name.(BTY supported
)"
)
cmd
.
Flags
()
.
StringP
(
"
symbol"
,
"s"
,
types
.
BTY
,
"asset sysmbol.(BTY default
)"
)
cmd
.
Flags
()
.
Int32P
(
"direction"
,
"d"
,
1
,
"query direction (0: pre page, 1: next page), valid with seedtxhash param"
)
cmd
.
Flags
()
.
StringP
(
"
seedtxhash"
,
""
,
""
,
"seed trasnaction hash
"
)
cmd
.
Flags
()
.
StringP
(
"
txHeightIndex"
,
"x"
,
""
,
"start tx height index string
"
)
}
func
listPrivacyTxsFlags
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
...
...
@@ -563,17 +563,17 @@ func listPrivacyTxsFlags(cmd *cobra.Command, args []string) {
direction
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"direction"
)
addr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"addr"
)
sendRecvFlag
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"sendrecv"
)
tokenname
,
_
:=
cmd
.
Flags
()
.
GetString
(
"token
"
)
seedtxhash
,
_
:=
cmd
.
Flags
()
.
GetString
(
"seedtxhash
"
)
symbol
,
_
:=
cmd
.
Flags
()
.
GetString
(
"symbol
"
)
txHeightIndex
,
_
:=
cmd
.
Flags
()
.
GetString
(
"txHeightIndex
"
)
exec
,
_
:=
cmd
.
Flags
()
.
GetString
(
"exec"
)
params
:=
pty
.
ReqPrivacyTransactionList
{
AssetExec
:
exec
,
Tokenname
:
tokenname
,
AssetSymbol
:
symbol
,
SendRecvFlag
:
sendRecvFlag
,
Direction
:
direction
,
Count
:
count
,
Address
:
addr
,
S
eedtxhash
:
[]
byte
(
seedtxhash
)
,
S
tartTxHeightIndex
:
txHeightIndex
,
}
var
res
rpctypes
.
WalletTxDetails
ctx
:=
jsonclient
.
NewRPCCtx
(
rpcLaddr
,
"privacy.GetPrivacyTxByAddr"
,
params
,
&
res
)
...
...
plugin/dapp/privacy/proto/privacy.proto
View file @
f18b8d76
...
...
@@ -344,16 +344,21 @@ message ReqCreateCacheTxKey {
// get privacy transaction list in wallet
message
ReqPrivacyTransactionList
{
// support BTY
string
tokenname
=
1
;
// 1:sendtx 2:recvtx
int32
sendRecvFlag
=
2
;
// 列表顺序,0降1升
int32
direction
=
3
;
// 单次列表数量
int32
count
=
4
;
string
from
=
5
;
// 交易相关的地址,发送方或接收方
string
address
=
6
;
bytes
seedtxhash
=
7
;
// 资产执行器
string
assetExec
=
8
;
// 资产符号
string
assetSymbol
=
9
;
// 指定列表请求开始位置
string
startTxHeightIndex
=
10
;
}
message
ReqRescanUtxos
{
...
...
plugin/dapp/privacy/rpc/rpc_channel_test.go
View file @
f18b8d76
...
...
@@ -122,12 +122,11 @@ func testShowUTXOs4SpecifiedAmount(t *testing.T, jrpc *jsonclient.JSONClient) er
func
testListPrivacyTxs
(
t
*
testing
.
T
,
jrpc
*
jsonclient
.
JSONClient
)
error
{
params
:=
pty
.
ReqPrivacyTransactionList
{
Tokenname
:
types
.
BTY
,
AssetSymbol
:
types
.
BTY
,
SendRecvFlag
:
1
,
Direction
:
1
,
Count
:
16
,
Address
:
"13cS5G1BDN2YfGudsxRxr7X25yu6ZdgxMU"
,
Seedtxhash
:
[]
byte
(
"0xa64296792f90f364371e0b66fdac622080ceb7b2537ff9152e189aa9e88e61bd"
),
}
var
res
rpctypes
.
WalletTxDetails
err
:=
jrpc
.
Call
(
"privacy.GetPrivacyTxByAddr"
,
params
,
&
res
)
...
...
plugin/dapp/privacy/types/privacy.pb.go
View file @
f18b8d76
...
...
@@ -2941,16 +2941,20 @@ func (m *ReqCreateCacheTxKey) GetHashkey() []byte {
// get privacy transaction list in wallet
type
ReqPrivacyTransactionList
struct
{
// support BTY
Tokenname
string
`protobuf:"bytes,1,opt,name=tokenname,proto3" json:"tokenname,omitempty"`
// 1:sendtx 2:recvtx
SendRecvFlag
int32
`protobuf:"varint,2,opt,name=sendRecvFlag,proto3" json:"sendRecvFlag,omitempty"`
// 列表顺序,0降1升
Direction
int32
`protobuf:"varint,3,opt,name=direction,proto3" json:"direction,omitempty"`
// 单次列表数量
Count
int32
`protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
From
string
`protobuf:"bytes,5,opt,name=from,proto3" json:"from,omitempty"`
// 交易相关的地址,发送方或接收方
Address
string
`protobuf:"bytes,6,opt,name=address,proto3" json:"address,omitempty"`
Seedtxhash
[]
byte
`protobuf:"bytes,7,opt,name=seedtxhash,proto3" json:"seedtxhash,omitempty"`
// 资产执行器
AssetExec
string
`protobuf:"bytes,8,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
// 资产符号
AssetSymbol
string
`protobuf:"bytes,9,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
// 指定列表请求开始位置
StartTxHeightIndex
string
`protobuf:"bytes,10,opt,name=startTxHeightIndex,proto3" json:"startTxHeightIndex,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -2981,13 +2985,6 @@ func (m *ReqPrivacyTransactionList) XXX_DiscardUnknown() {
var
xxx_messageInfo_ReqPrivacyTransactionList
proto
.
InternalMessageInfo
func
(
m
*
ReqPrivacyTransactionList
)
GetTokenname
()
string
{
if
m
!=
nil
{
return
m
.
Tokenname
}
return
""
}
func
(
m
*
ReqPrivacyTransactionList
)
GetSendRecvFlag
()
int32
{
if
m
!=
nil
{
return
m
.
SendRecvFlag
...
...
@@ -3009,30 +3006,30 @@ func (m *ReqPrivacyTransactionList) GetCount() int32 {
return
0
}
func
(
m
*
ReqPrivacyTransactionList
)
Get
From
()
string
{
func
(
m
*
ReqPrivacyTransactionList
)
Get
Address
()
string
{
if
m
!=
nil
{
return
m
.
From
return
m
.
Address
}
return
""
}
func
(
m
*
ReqPrivacyTransactionList
)
GetA
ddress
()
string
{
func
(
m
*
ReqPrivacyTransactionList
)
GetA
ssetExec
()
string
{
if
m
!=
nil
{
return
m
.
A
ddress
return
m
.
A
ssetExec
}
return
""
}
func
(
m
*
ReqPrivacyTransactionList
)
Get
Seedtxhash
()
[]
byte
{
func
(
m
*
ReqPrivacyTransactionList
)
Get
AssetSymbol
()
string
{
if
m
!=
nil
{
return
m
.
Seedtxhash
return
m
.
AssetSymbol
}
return
nil
return
""
}
func
(
m
*
ReqPrivacyTransactionList
)
Get
AssetExec
()
string
{
func
(
m
*
ReqPrivacyTransactionList
)
Get
StartTxHeightIndex
()
string
{
if
m
!=
nil
{
return
m
.
AssetExec
return
m
.
StartTxHeightIndex
}
return
""
}
...
...
@@ -3618,153 +3615,154 @@ func init() {
}
var
fileDescriptor_dde03d4df7a6e99a
=
[]
byte
{
// 23
29
bytes of a gzipped FileDescriptorProto
// 23
37
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xb4
,
0x39
,
0xcb
,
0x6f
,
0x1c
,
0x49
,
0xf9
,
0xee
,
0x79
,
0xd8
,
0xee
,
0xcf
,
0x63
,
0x7b
,
0x52
,
0xb1
,
0xbd
,
0xce
,
0x24
,
0x8a
,
0xfc
,
0xab
,
0x5d
,
0xe5
,
0x17
,
0x16
,
0x64
,
0xb4
,
0xc1
,
0xd2
,
0x3e
,
0x08
,
0x5a
,
0x3c
,
0x8e
,
0x93
,
0x58
,
0xde
,
0xc4
,
0xa6
,
0xec
,
0x15
,
0x0f
,
0x01
,
0x52
,
0x4d
,
0x4f
,
0xd9
,
0x6e
,
0xb9
,
0xa7
,
0xbb
,
0xdd
,
0xdd
,
0x63
,
0xcf
,
0x1c
,
0xd0
,
0x72
,
0x5a
,
0x71
,
0xe0
,
0xc0
,
0x61
,
0x05
,
0x07
,
0x24
,
0x6e
,
0xf0
,
0x47
,
0x70
,
0x87
,
0x13
,
0xe2
,
0xc0
,
0x7f
,
0xc0
,
0x3f
,
0xc0
,
0x7f
,
0x80
,
0x84
,
0xea
,
0xd1
,
0xdd
,
0x55
,
0x35
,
0x3d
,
0x76
,
0x96
,
0x98
,
0xcb
,
0xa8
,
0xeb
,
0xab
,
0xaf
,
0xbe
,
0xfa
,
0xde
,
0x8f
,
0x1a
,
0x58
,
0x8c
,
0x13
,
0xff
,
0x92
,
0x7a
,
0xe3
,
0xcd
,
0x38
,
0x89
,
0xb2
,
0x08
,
0x35
,
0xb3
,
0x71
,
0xcc
,
0xd2
,
0x4e
,
0xcb
,
0x8b
,
0x06
,
0x83
,
0x28
,
0x94
,
0xc0
,
0xce
,
0x9d
,
0x2c
,
0xa1
,
0x61
,
0x4a
,
0xbd
,
0xcc
,
0xcf
,
0x41
,
0xf8
,
0x5f
,
0x0e
,
0x2c
,
0x1e
,
0xca
,
0x93
,
0xdb
,
0x02
,
0x8e
,
0x3e
,
0x85
,
0xa5
,
0x78
,
0xd8
,
0x0b
,
0x7c
,
0xef
,
0x89
,
0xa2
,
0xb8
,
0xee
,
0x6c
,
0x38
,
0x8f
,
0x17
,
0x9e
,
0xac
,
0x6e
,
0x0a
,
0x92
,
0x9b
,
0x87
,
0x72
,
0x53
,
0x1d
,
0x7a
,
0x39
,
0x43
,
0x2c
,
0x74
,
0xd4
,
0x85
,
0x65
,
0xf5
,
0x59
,
0x50
,
0xa8
,
0x09
,
0x0a
,
0x6b
,
0x39
,
0x05
,
0xb5
,
0x5b
,
0x92
,
0xb0
,
0x0f
,
0x08
,
0x26
,
0x72
,
0x90
,
0xa0
,
0xbe
,
0x5e
,
0x37
,
0x99
,
0xc8
,
0x49
,
0x88
,
0x4d
,
0xc1
,
0x84
,
0x81
,
0x8e
,
0x96
,
0xa0
,
0x96
,
0x8d
,
0xd7
,
0x1b
,
0x1b
,
0xce
,
0xe3
,
0x26
,
0xa9
,
0x65
,
0xe3
,
0xee
,
0x1c
,
0x34
,
0x2f
,
0x69
,
0x30
,
0x64
,
0xf8
,
0x4f
,
0x0e
,
0x2c
,
0x99
,
0x22
,
0xa0
,
0x07
,
0xe0
,
0x66
,
0xd1
,
0x39
,
0x0b
,
0x43
,
0x3a
,
0x60
,
0x42
,
0x58
,
0x97
,
0x94
,
0x00
,
0xb4
,
0x06
,
0xb3
,
0x74
,
0x10
,
0x0d
,
0xc3
,
0x4c
,
0x48
,
0x51
,
0x27
,
0x6a
,
0x85
,
0x10
,
0x34
,
0xc2
,
0x28
,
0x63
,
0xeb
,
0x4d
,
0x71
,
0x40
,
0x7c
,
0xa3
,
0x6f
,
0xc1
,
0x6c
,
0x34
,
0xcc
,
0xe2
,
0x61
,
0xb6
,
0x3e
,
0x27
,
0xd8
,
0x5d
,
0x31
,
0xd9
,
0x3d
,
0x10
,
0x7b
,
0x44
,
0xe1
,
0xf0
,
0x7b
,
0x69
,
0x9a
,
0xb2
,
0x6c
,
0x77
,
0xc4
,
0xbc
,
0xf5
,
0x79
,
0x79
,
0x6f
,
0x01
,
0xc0
,
0xff
,
0x70
,
0x60
,
0xd9
,
0xd2
,
0xd4
,
0x2d
,
0x72
,
0xfa
,
0x0d
,
0x68
,
0xfa
,
0x21
,
0x67
,
0x74
,
0x56
,
0x30
,
0x7a
,
0xd7
,
0x64
,
0x74
,
0x8f
,
0x6f
,
0x11
,
0x89
,
0x71
,
0xab
,
0x42
,
0xfd
,
0x93
,
0x6b
,
0xdf
,
0xb0
,
0xdd
,
0x5b
,
0xca
,
0x54
,
0xd7
,
0x64
,
0xe2
,
0x36
,
0x8f
,
0x84
,
0x40
,
0x2e
,
0xa9
,
0x65
,
0x51
,
0x29
,
0x63
,
0xe3
,
0x6b
,
0xc8
,
0xd8
,
0x7c
,
0x6b
,
0x19
,
0x77
,
0x61
,
0xf9
,
0xf3
,
0xe3
,
0x1f
,
0x1d
,
0xbc
,
0x08
,
0xa2
,
0x1e
,
0x0d
,
0xf6
,
0xc2
,
0x3e
,
0x1b
,
0x71
,
0x29
,
0xb2
,
0xd1
,
0x19
,
0x4d
,
0xcf
,
0x04
,
0xbf
,
0x2d
,
0xa2
,
0x56
,
0xa8
,
0x03
,
0xf3
,
0xd1
,
0x30
,
0xf3
,
0x39
,
0x8e
,
0xf2
,
0xd5
,
0x62
,
0x8d
,
0x7f
,
0xe9
,
0xc0
,
0xfc
,
0x3e
,
0x93
,
0x6c
,
0x6a
,
0x6a
,
0x70
,
0x0c
,
0x35
,
0x7c
,
0x1f
,
0x96
,
0x87
,
0xd9
,
0x28
,
0xd2
,
0xee
,
0x5a
,
0xaf
,
0x6d
,
0xd4
,
0xb5
,
0x58
,
0xb3
,
0x38
,
0x21
,
0x36
,
0x3a
,
0x67
,
0xe1
,
0x9c
,
0x8d
,
0xf7
,
0x06
,
0xf4
,
0x94
,
0x29
,
0xe6
,
0x8a
,
0x35
,
0xfe
,
0x2e
,
0xb4
,
0x74
,
0x65
,
0xa1
,
0x6f
,
0x0a
,
0x5c
,
0xa9
,
0x53
,
0x47
,
0x5c
,
0xb3
,
0xac
,
0xae
,
0xc9
,
0x19
,
0x25
,
0x05
,
0x02
,
0xde
,
0x03
,
0xf7
,
0x9c
,
0x29
,
0xcd
,
0x4d
,
0xe5
,
0xff
,
0x3d
,
0x58
,
0x8c
,
0x42
,
0x96
,
0xf9
,
0x03
,
0x16
,
0x0f
,
0x7b
,
0xe7
,
0x4c
,
0x66
,
0x8a
,
0x16
,
0x31
,
0x81
,
0xf8
,
0x67
,
0x45
,
0x8e
,
0x3a
,
0x28
,
0x0c
,
0x40
,
0xe2
,
0x61
,
0x6f
,
0x9f
,
0x8d
,
0xb3
,
0x91
,
0xa0
,
0xd8
,
0x22
,
0x25
,
0x00
,
0x6d
,
0x8a
,
0x9b
,
0x95
,
0x3d
,
0xa5
,
0x3a
,
0xda
,
0x8a
,
0xcf
,
0x82
,
0x23
,
0x52
,
0xa2
,
0xe0
,
0x18
,
0x56
,
0x5e
,
0x24
,
0xd1
,
0x30
,
0xae
,
0xb0
,
0xda
,
0xff
,
0x46
,
0xe9
,
0xf8
,
0xf7
,
0x0e
,
0x2c
,
0x7e
,
0x16
,
0x79
,
0x34
,
0xe0
,
0x98
,
0x7b
,
0x19
,
0x1b
,
0xf0
,
0xbb
,
0xce
,
0x98
,
0x7f
,
0x7a
,
0x56
,
0xdc
,
0x25
,
0x57
,
0x68
,
0x1d
,
0xe6
,
0xb2
,
0x91
,
0xaf
,
0xee
,
0xe0
,
0x0e
,
0x92
,
0x2f
,
0x0d
,
0xdf
,
0xa9
,
0x9b
,
0xbe
,
0xa3
,
0xf9
,
0x5b
,
0xc3
,
0xf0
,
0xb7
,
0x09
,
0x75
,
0x37
,
0xab
,
0xd4
,
0xfd
,
0x05
,
0x2c
,
0x11
,
0x76
,
0xc1
,
0x59
,
0x3b
,
0x14
,
0x2a
,
0x4d
,
0x8b
,
0x18
,
0x7d
,
0x6d
,
0xc7
,
0x28
,
0x07
,
0xa0
,
0x03
,
0x58
,
0x39
,
0xad
,
0xd0
,
0x9f
,
0x52
,
0xca
,
0x7d
,
0xa5
,
0x94
,
0x2a
,
0x15
,
0x93
,
0xca
,
0x83
,
0xf8
,
0x5d
,
0x58
,
0x94
,
0xc9
,
0x61
,
0x9f
,
0x8d
,
0x9f
,
0xd1
,
0x8c
,
0xf2
,
0x68
,
0xef
,
0xd3
,
0x8c
,
0x0a
,
0xa7
,
0x6b
,
0x11
,
0xf1
,
0x8d
,
0xb7
,
0x61
,
0xb9
,
0x20
,
0x29
,
0xf9
,
0x9c
,
0x6a
,
0xb0
,
0x35
,
0x98
,
0x2d
,
0xdc
,
0x8b
,
0x13
,
0x50
,
0x2b
,
0x7c
,
0xcc
,
0x05
,
0x4d
,
0x75
,
0x41
,
0xbb
,
0xd0
,
0x3e
,
0x35
,
0x89
,
0xa6
,
0xca
,
0xd3
,
0xd7
,
0x6c
,
0x31
,
0xe4
,
0x36
,
0x99
,
0xc0
,
0xc7
,
0x3e
,
0x2c
,
0x13
,
0x76
,
0xa1
,
0x1c
,
0xf6
,
0x98
,
0x6b
,
0xc9
,
0x4c
,
0x18
,
0x8e
,
0x95
,
0x30
,
0xd0
,
0x06
,
0x2c
,
0x88
,
0xc5
,
0xd1
,
0x78
,
0xd0
,
0x8b
,
0x02
,
0x61
,
0x67
,
0x97
,
0xe8
,
0x20
,
0x4d
,
0xb0
,
0xba
,
0x2e
,
0x18
,
0x7e
,
0x0a
,
0xad
,
0x6d
,
0xf1
,
0xf5
,
0x8c
,
0x65
,
0xd4
,
0x0f
,
0xa6
,
0x2a
,
0x60
,
0x05
,
0x9a
,
0x9e
,
0x96
,
0x44
,
0xe5
,
0x02
,
0xbf
,
0x86
,
0xbb
,
0x84
,
0xc5
,
0xc1
,
0x38
,
0xaf
,
0xff
,
0x02
,
0x37
,
0x45
,
0x1f
,
0x42
,
0x8b
,
0x6a
,
0x44
,
0x95
,
0xfc
,
0x79
,
0xf6
,
0xd4
,
0xef
,
0x23
,
0x06
,
0x22
,
0x26
,
0x80
,
0x12
,
0x4e
,
0x8f
,
0x2b
,
0x23
,
0x3d
,
0x38
,
0x91
,
0x98
,
0xe8
,
0x29
,
0x2c
,
0x05
,
0xba
,
0xab
,
0xe7
,
0x0a
,
0xcd
,
0x53
,
0xac
,
0x11
,
0x07
,
0xc4
,
0xc2
,
0xc5
,
0x5f
,
0x3a
,
0xb0
,
0x42
,
0x98
,
0xc7
,
0xfc
,
0x38
,
0x9b
,
0x48
,
0x01
,
0x6f
,
0xa5
,
0x52
,
0x23
,
0x49
,
0xd4
,
0x6f
,
0x4e
,
0x12
,
0xbf
,
0x71
,
0x60
,
0x51
,
0x69
,
0xe8
,
0xe0
,
0x84
,
0xf3
,
0x87
,
0xb6
,
0xc1
,
0x95
,
0xe2
,
0xbf
,
0xa2
,
0xb1
,
0x92
,
0xe9
,
0x5d
,
0x43
,
0x49
,
0x0a
,
0x51
,
0xad
,
0x5e
,
0xd1
,
0x78
,
0x37
,
0xcc
,
0x92
,
0x31
,
0x29
,
0x4f
,
0x75
,
0x9e
,
0xc2
,
0x92
,
0xb9
,
0x89
,
0xda
,
0x50
,
0xe7
,
0x7e
,
0x2a
,
0xcd
,
0xc7
,
0x3f
,
0xb9
,
0xed
,
0x44
,
0xe7
,
0x92
,
0xdb
,
0x4e
,
0x2c
,
0x3e
,
0xa9
,
0x7d
,
0xe4
,
0xe0
,
0xdf
,
0x3a
,
0xd0
,
0x3e
,
0xce
,
0xa3
,
0x30
,
0xe7
,
0xea
,
0x99
,
0x0a
,
0xd5
,
0xb4
,
0xe4
,
0xea
,
0x91
,
0xe2
,
0xca
,
0xc6
,
0x95
,
0x80
,
0xb4
,
0x64
,
0xac
,
0x38
,
0xc8
,
0x19
,
0x33
,
0x37
,
0x75
,
0xc6
,
0xdc
,
0x0a
,
0xc6
,
0x5c
,
0x9d
,
0xb1
,
0x7d
,
0x58
,
0xb5
,
0x42
,
0x7a
,
0xeb
,
0x30
,
0xf1
,
0x65
,
0x20
,
0xaa
,
0xbc
,
0x24
,
0xe9
,
0x54
,
0xd5
,
0xc1
,
0x9a
,
0x55
,
0x07
,
0x7f
,
0xed
,
0xc0
,
0x52
,
0x5e
,
0x5e
,
0x4a
,
0x32
,
0x95
,
0x6e
,
0xfe
,
0x7c
,
0x5a
,
0x62
,
0x7e
,
0x50
,
0x9d
,
0x98
,
0x25
,
0xb9
,
0x9b
,
0x6b
,
0xa2
,
0xab
,
0xd5
,
0xc4
,
0x03
,
0x58
,
0x2e
,
0xfc
,
0xe3
,
0x06
,
0x76
,
0x2a
,
0x8b
,
0x9b
,
0x6b
,
0x67
,
0xdb
,
0x17
,
0x80
,
0xf4
,
0x22
,
0xab
,
0x68
,
0x7e
,
0x30
,
0x51
,
0x6a
,
0x57
,
0xad
,
0x52
,
0xab
,
0x98
,
0x2f
,
0x0b
,
0xae
,
0x0f
,
0x77
,
0x8d
,
0x10
,
0x51
,
0x94
,
0x26
,
0x6a
,
0xa5
,
0xab
,
0xd7
,
0xca
,
0xad
,
0xc9
,
0x5a
,
0xb9
,
0x66
,
0x87
,
0x81
,
0xba
,
0x49
,
0x0b
,
0x86
,
0xaf
,
0x1c
,
0x58
,
0x31
,
0x9b
,
0xe8
,
0xf2
,
0xb2
,
0x5b
,
0x6a
,
0x50
,
0x9f
,
0x58
,
0x5d
,
0x67
,
0xa7
,
0xaa
,
0x23
,
0x53
,
0x9c
,
0x29
,
0x4c
,
0xfc
,
0x57
,
0x07
,
0x56
,
0xad
,
0x96
,
0xf9
,
0xd6
,
0xf9
,
0xfa
,
0xb6
,
0xd9
,
0x38
,
0xdf
,
0xab
,
0x68
,
0x2a
,
0x15
,
0x57
,
0xaa
,
0xb5
,
0xfc
,
0x6f
,
0x04
,
0xf9
,
0x0b
,
0xd7
,
0xaf
,
0xd1
,
0x26
,
0xdf
,
0x8a
,
0x1c
,
0xf5
,
0x2a
,
0x39
,
0x1a
,
0x5f
,
0x5b
,
0x8e
,
0xe6
,
0x1b
,
0xcb
,
0xf1
,
0x65
,
0xad
,
0xf0
,
0x49
,
0x39
,
0x5d
,
0x2a
,
0x31
,
0x76
,
0xa7
,
0xcc
,
0x98
,
0xf7
,
0x2b
,
0x67
,
0x4c
,
0x79
,
0xa8
,
0x62
,
0xd2
,
0x7c
,
0x39
,
0x6d
,
0xd2
,
0x7c
,
0x50
,
0x3d
,
0x69
,
0x16
,
0x84
,
0x26
,
0xe6
,
0xcd
,
0xdd
,
0x29
,
0xf3
,
0xe6
,
0xfd
,
0xca
,
0x79
,
0x53
,
0x63
,
0xe8
,
0x0d
,
0xa7
,
0xce
,
0x9f
,
0x02
,
0xd2
,
0x4b
,
0xed
,
0xe1
,
0xf9
,
0x21
,
0xf5
,
0x13
,
0xf4
,
0x08
,
0x96
,
0xd2
,
0xb3
,
0xe8
,
0xea
,
0x68
,
0xe8
,
0x79
,
0x2c
,
0x4d
,
0x4f
,
0x86
,
0x81
,
0x50
,
0xc3
,
0x3c
,
0xb1
,
0xa0
,
0xe8
,
0x21
,
0x80
,
0x4c
,
0x16
,
0x31
,
0xf5
,
0x13
,
0x41
,
0xde
,
0x25
,
0x1a
,
0x04
,
0xff
,
0x9c
,
0xd7
,
0x48
,
0xd1
,
0x71
,
0x74
,
0x69
,
0xb0
,
0xb5
,
0xdd
,
0xef
,
0x27
,
0xb2
,
0xed
,
0x40
,
0xd0
,
0xa0
,
0xfd
,
0x7e
,
0xa2
,
0x1c
,
0x45
,
0x7c
,
0xf3
,
0xac
,
0x2d
,
0x1c
,
0x26
,
0xcf
,
0xda
,
0xd9
,
0x64
,
0x83
,
0x52
,
0xb7
,
0x27
,
0x9a
,
0x1f
,
0x98
,
0x8d
,
0x42
,
0x97
,
0x06
,
0x34
,
0xf4
,
0x18
,
0x2f
,
0xb2
,
0x2a
,
0x95
,
0x69
,
0xb7
,
0xe8
,
0x20
,
0xde
,
0xbd
,
0xf6
,
0x24
,
0xb2
,
0xf2
,
0xc8
,
0x7c
,
0x89
,
0xff
,
0x5e
,
0x2b
,
0x06
,
0xc1
,
0x67
,
0xdd
,
0xa3
,
0x2c
,
0x4a
,
0x98
,
0x55
,
0x1c
,
0xca
,
0xa6
,
0xd5
,
0xf0
,
0xf9
,
0xda
,
0x74
,
0x9f
,
0x37
,
0x5a
,
0x23
,
0x55
,
0x52
,
0xf6
,
0xac
,
0xd1
,
0x4a
,
0xe6
,
0x77
,
0x0c
,
0xad
,
0x6c
,
0x54
,
0x74
,
0x98
,
0x44
,
0x75
,
0xc1
,
0x06
,
0x0c
,
0xbd
,
0x0f
,
0x6d
,
0x25
,
0x49
,
0x01
,
0x14
,
0x21
,
0xdf
,
0x22
,
0x13
,
0x70
,
0xae
,
0xd3
,
0xe8
,
0x2a
,
0x64
,
0x89
,
0x88
,
0x70
,
0x97
,
0xc8
,
0x85
,
0xd6
,
0xd2
,
0xcf
,
0x4f
,
0x6b
,
0xe9
,
0x5d
,
0xb3
,
0xa5
,
0x7f
,
0x00
,
0x6e
,
0x2f
,
0x88
,
0xbc
,
0x73
,
0xa1
,
0x04
,
0x90
,
0x63
,
0x4d
,
0x01
,
0x30
,
0x6d
,
0xb4
,
0x60
,
0xdb
,
0xe8
,
0x35
,
0x34
,
0x44
,
0xfd
,
0x9f
,
0x56
,
0x8c
,
0x36
,
0xc1
,
0xe5
,
0x65
,
0xae
,
0x4b
,
0x53
,
0xdf
,
0x53
,
0x51
,
0xd2
,
0xd6
,
0xaa
,
0xa2
,
0x80
,
0x93
,
0x12
,
0x05
,
0xc7
,
0xb0
,
0xc4
,
0xe1
,
0x2f
,
0xe9
,
0x25
,
0x3b
,
0x1e
,
0xbd
,
0xe4
,
0xf7
,
0x5f
,
0xd3
,
0x5d
,
0x67
,
0x02
,
0x43
,
0x19
,
0x47
,
0xad
,
0xcc
,
0x1b
,
0xeb
,
0x37
,
0xdf
,
0xf8
,
0x3e
,
0x34
,
0x45
,
0xe7
,
0x88
,
0xfe
,
0x0f
,
0x9a
,
0x1c
,
0x9a
,
0x37
,
0x8a
,
0x0b
,
0xda
,
0x21
,
0x22
,
0x77
,
0x30
,
0x91
,
0x33
,
0x76
,
0xc9
,
0x5d
,
0x8a
,
0x3e
,
0x95
,
0xc5
,
0x5f
,
0x03
,
0x59
,
0x85
,
0xd3
,
0x3c
,
0x40
,
0x6c
,
0x6c
,
0xfc
,
0x2b
,
0x87
,
0x07
,
0xe9
,
0x85
,
0x3d
,
0x05
,
0xbe
,
0x6d
,
0xa3
,
0xd9
,
0x81
,
0xf9
,
0x81
,
0x3f
,
0xda
,
0x29
,
0x5c
,
0xb4
,
0x49
,
0x8a
,
0xb5
,
0xa6
,
0xd2
,
0xc6
,
0x46
,
0x5d
,
0xeb
,
0xeb
,
0x53
,
0x70
,
0x0b
,
0x15
,
0x55
,
0x8d
,
0x9b
,
0x8e
,
0xf1
,
0x9e
,
0x76
,
0xe3
,
0x8c
,
0x5f
,
0x36
,
0x22
,
0x87
,
0x55
,
0x53
,
0xb6
,
0x04
,
0x62
,
0x02
,
0x6d
,
0xd1
,
0x77
,
0x8b
,
0xce
,
0x68
,
0x7b
,
0x60
,
0x31
,
0x68
,
0xda
,
0xfc
,
0x51
,
0x6e
,
0x22
,
0x73
,
0xbc
,
0x2e
,
0xed
,
0xaa
,
0xec
,
0xf4
,
0x63
,
0xae
,
0xd2
,
0xd4
,
0x56
,
0xe9
,
0x0e
,
0xb4
,
0xf9
,
0xb6
,
0x7e
,
0x93
,
0x6a
,
0xc1
,
0xdf
,
0xd1
,
0x08
,
0xe9
,
0xdb
,
0x64
,
0xe2
,
0x00
,
0xfe
,
0xb3
,
0x03
,
0x77
,
0x9e
,
0x73
,
0x7f
,
0x39
,
0xe2
,
0x3f
,
0x7b
,
0xe1
,
0x41
,
0xc8
,
0x8e
,
0x47
,
0x37
,
0x17
,
0xc8
,
0x94
,
0x85
,
0x7d
,
0x96
,
0xe4
,
0xae
,
0x2a
,
0x57
,
0x1c
,
0xce
,
0x46
,
0xb1
,
0x9f
,
0xb0
,
0x3c
,
0x89
,
0xc8
,
0x95
,
0x35
,
0x47
,
0x97
,
0xfd
,
0x6a
,
0xe1
,
0xa1
,
0xcd
,
0x69
,
0x1e
,
0x6a
,
0xba
,
0xcd
,
0xac
,
0x1d
,
0xad
,
0x3f
,
0x81
,
0x16
,
0x61
,
0x34
,
0x28
,
0xde
,
0x77
,
0x30
,
0xb4
,
0x12
,
0x46
,
0x03
,
0x51
,
0x69
,
0xf3
,
0x36
,
0xbb
,
0x49
,
0x0c
,
0x18
,
0xaf
,
0x16
,
0x79
,
0xe7
,
0x98
,
0xf8
,
0x97
,
0xa5
,
0x19
,
0x2d
,
0x28
,
0xde
,
0x02
,
0x28
,
0xec
,
0x90
,
0x96
,
0x96
,
0x72
,
0xae
,
0xb7
,
0xd4
,
0xdf
,
0x6a
,
0xb0
,
0xb6
,
0x93
,
0x30
,
0x9a
,
0xb1
,
0xe3
,
0xf2
,
0x91
,
0x78
,
0x87
,
0x7a
,
0x67
,
0x4c
,
0x6f
,
0xfd
,
0x5b
,
0xb2
,
0xf5
,
0x7f
,
0x08
,
0xe0
,
0x09
,
0x5c
,
0x7e
,
0xaf
,
0x4a
,
0xed
,
0x1a
,
0x84
,
0xfb
,
0x7c
,
0xea
,
0x9f
,
0x86
,
0x62
,
0x57
,
0x6a
,
0xb4
,
0x58
,
0x0b
,
0x1b
,
0x64
,
0x34
,
0x1b
,
0xa6
,
0x2a
,
0x2d
,
0xab
,
0x15
,
0xda
,
0x82
,
0x05
,
0xed
,
0x79
,
0x5a
,
0x35
,
0x19
,
0x28
,
0x1f
,
0x5d
,
0xca
,
0x1d
,
0xa2
,
0xa3
,
0x69
,
0x16
,
0x9d
,
0x35
,
0x2c
,
0xfa
,
0xa1
,
0x54
,
0x68
,
0xd1
,
0x43
,
0xcf
,
0x19
,
0x43
,
0xac
,
0xae
,
0x7b
,
0x62
,
0x20
,
0xa2
,
0xff
,
0xcf
,
0xf5
,
0x35
,
0x2f
,
0x4e
,
0xdc
,
0xb1
,
0xf5
,
0x95
,
0x6a
,
0x06
,
0x2e
,
0x3d
,
0xcd
,
0xb5
,
0x3c
,
0x0d
,
0x77
,
0xc5
,
0x1b
,
0x8a
,
0xd0
,
0xdf
,
0xf1
,
0xe8
,
0x33
,
0x3f
,
0xcd
,
0x2a
,
0x8b
,
0xf1
,
0xb5
,
0xa5
,
0x0d
,
0x7f
,
0x04
,
0x6d
,
0x51
,
0x76
,
0x75
,
0x2a
,
0xef
,
0x41
,
0x3d
,
0x1b
,
0xe5
,
0xc6
,
0xac
,
0xd2
,
0x0e
,
0xdf
,
0xc6
,
0xbf
,
0x80
,
0x3b
,
0xe5
,
0x13
,
0xc4
,
0xb6
,
0xe7
,
0xe5
,
0x5d
,
0xe0
,
0x1b
,
0x76
,
0x03
,
0x1b
,
0xb0
,
0xd0
,
0xf7
,
0xd3
,
0x38
,
0xa0
,
0xe3
,
0x41
,
0xd4
,
0x67
,
0x2a
,
0x6b
,
0xe9
,
0x20
,
0xd3
,
0xbb
,
0x1b
,
0xb6
,
0x77
,
0x7f
,
0x61
,
0x3d
,
0x2c
,
0x28
,
0x06
,
0x70
,
0xe9
,
0x8a
,
0xdc
,
0xb6
,
0x2d
,
0x4d
,
0xb5
,
0x85
,
0x56
,
0x31
,
0x34
,
0x4f
,
0x54
,
0x62
,
0xa9
,
0xc0
,
0x11
,
0x5b
,
0x37
,
0xb3
,
0x87
,
0x5f
,
0x71
,
0x06
,
0x2e
,
0xa4
,
0x3b
,
0x2b
,
0xed
,
0xf1
,
0x3a
,
0x7d
,
0x7d
,
0x72
,
0x58
,
0x87
,
0x39
,
0x1e
,
0xdc
,
0x65
,
0x60
,
0xe5
,
0x4b
,
0xfc
,
0x6f
,
0x07
,
0xee
,
0x69
,
0x4f
,
0x3a
,
0xa5
,
0xb6
,
0x85
,
0x49
,
0xae
,
0xa7
,
0x8a
,
0xa1
,
0xc5
,
0x5d
,
0x92
,
0x30
,
0xef
,
0xf2
,
0x79
,
0x40
,
0x4f
,
0xd5
,
0x78
,
0x6b
,
0xc0
,
0x38
,
0x85
,
0xbe
,
0x9f
,
0x30
,
0xe9
,
0xf8
,
0x52
,
0x9c
,
0x12
,
0x50
,
0x3e
,
0xde
,
0xc8
,
0x78
,
0x69
,
0x16
,
0xd6
,
0x3c
,
0x49
,
0xa2
,
0x41
,
0x3e
,
0x9b
,
0xf0
,
0x6f
,
0x2e
,
0x01
,
0xb7
,
0x2a
,
0x4b
,
0x53
,
0x15
,
0x0d
,
0xf9
,
0x92
,
0x07
,
0x6c
,
0xca
,
0x58
,
0x5f
,
0x25
,
0xb3
,
0x39
,
0x21
,
0x9e
,
0x06
,
0xb9
,
0xe1
,
0x45
,
0xfb
,
0x13
,
0xe1
,
0xcc
,
0x84
,
0xa5
,
0x1e
,
0x0d
,
0x3f
,
0x17
,
0x26
,
0x58
,
0x81
,
0x26
,
0x27
,
0x2d
,
0x1d
,
0xd1
,
0x25
,
0x72
,
0x21
,
0x78
,
0x2a
,
0x65
,
0x14
,
0xdf
,
0xf8
,
0x63
,
0x58
,
0x26
,
0x2c
,
0x96
,
0x67
,
0x09
,
0x4b
,
0x87
,
0x41
,
0xb5
,
0x23
,
0x56
,
0x1d
,
0x3d
,
0xe3
,
0xd7
,
0xc6
,
0xfa
,
0xb5
,
0x39
,
0x96
,
0x53
,
0x62
,
0xa1
,
0x2e
,
0xb4
,
0x13
,
0xf3
,
0x82
,
0xd4
,
0x1a
,
0x64
,
0xad
,
0xfb
,
0xc9
,
0x04
,
0x3e
,
0x7e
,
0xcc
,
0x23
,
0xed
,
0x62
,
0x37
,
0xa4
,
0xbd
,
0x80
,
0xe5
,
0xff
,
0xb5
,
0x14
,
0x22
,
0xd6
,
0x34
,
0x11
,
0xf1
,
0x9e
,
0x78
,
0x8a
,
0xe6
,
0x2d
,
0xf6
,
0xf5
,
0xc2
,
0xec
,
0xa5
,
0x07
,
0xfb
,
0x42
,
0x98
,
0x79
,
0x22
,
0xbe
,
0x79
,
0x12
,
0x1d
,
0xa4
,
0xa7
,
0xaa
,
0xb7
,
0xe6
,
0x9f
,
0xb8
,
0x2b
,
0xc2
,
0xdb
,
0xbc
,
0x74
,
0x13
,
0xe6
,
0x12
,
0x25
,
0x83
,
0xf9
,
0x4a
,
0x66
,
0x5c
,
0x4a
,
0x72
,
0x24
,
0xfc
,
0xc7
,
0x72
,
0xe2
,
0x3d
,
0xf2
,
0x4f
,
0x43
,
0x9a
,
0x0d
,
0x13
,
0x76
,
0x48
,
0x13
,
0x3a
,
0xe0
,
0x16
,
0x97
,
0x3e
,
0x7a
,
0x3c
,
0x8e
,
0x99
,
0x52
,
0x98
,
0x06
,
0x41
,
0x1f
,
0x00
,
0xf0
,
0x88
,
0xeb
,
0x89
,
0x9c
,
0xa6
,
0x14
,
0x56
,
0x91
,
0xec
,
0x34
,
0x24
,
0xf4
,
0x31
,
0x2c
,
0x26
,
0x5a
,
0xe2
,
0x4c
,
0x55
,
0xcd
,
0xae
,
0x4c
,
0xaa
,
0x26
,
0x26
,
0xfe
,
0x83
,
0x03
,
0x2b
,
0x3f
,
0xa4
,
0x41
,
0xc0
,
0x32
,
0x95
,
0x0c
,
0x72
,
0x81
,
0x1f
,
0x02
,
0x5c
,
0xfa
,
0xec
,
0x4a
,
0xf5
,
0x25
,
0xb2
,
0xc4
,
0x68
,
0x10
,
0x1e
,
0xeb
,
0x62
,
0x95
,
0xf8
,
0x97
,
0xfb
,
0x45
,
0x60
,
0xea
,
0x20
,
0x8e
,
0x91
,
0xc6
,
0x2c
,
0xec
,
0x2b
,
0x12
,
0xf2
,
0x3f
,
0x0c
,
0x1d
,
0x24
,
0x42
,
0x50
,
0x2c
,
0x15
,
0x11
,
0xf9
,
0x26
,
0x6e
,
0xc0
,
0xf0
,
0x57
,
0x35
,
0xd1
,
0xfc
,
0xc9
,
0x94
,
0x91
,
0x07
,
0xfa
,
0x4d
,
0xed
,
0x84
,
0xa9
,
0xe3
,
0xda
,
0x84
,
0x8e
,
0xa7
,
0xcd
,
0x26
,
0xf9
,
0x3c
,
0xde
,
0xd0
,
0xe6
,
0xf1
,
0xaa
,
0x78
,
0xb6
,
0xff
,
0xd0
,
0x32
,
0xe7
,
0x40
,
0xb0
,
0xe7
,
0x40
,
0xd5
,
0x6a
,
0xca
,
0x64
,
0xb1
,
0x50
,
0xb4
,
0x9a
,
0x5e
,
0xde
,
0xc9
,
0xa9
,
0x16
,
0xa7
,
0x65
,
0xb4
,
0x38
,
0x46
,
0xe4
,
0x2f
,
0x5a
,
0x91
,
0xff
,
0xe4
,
0x77
,
0x35
,
0x98
,
0xd3
,
0xfe
,
0x93
,
0x3d
,
0x3a
,
0x8b
,
0xae
,
0x94
,
0x72
,
0xb8
,
0xea
,
0xdb
,
0x85
,
0xe5
,
0x2f
,
0x8e
,
0xb2
,
0xc4
,
0x0f
,
0x4f
,
0x3b
,
0xf7
,
0xca
,
0x90
,
0xb3
,
0x86
,
0x5d
,
0x3c
,
0x83
,
0xbe
,
0x07
,
0x0b
,
0x7a
,
0x30
,
0xaf
,
0x96
,
0xa7
,
0x35
,
0x70
,
0x67
,
0xd5
,
0x8e
,
0x5a
,
0x01
,
0xc6
,
0x33
,
0x68
,
0x07
,
0x16
,
0xcd
,
0x60
,
0x79
,
0xa7
,
0x24
,
0x60
,
0x6c
,
0x74
,
0xca
,
0x0d
,
0x33
,
0xbc
,
0xf0
,
0x0c
,
0x7a
,
0x01
,
0x2b
,
0xd2
,
0xc6
,
0x84
,
0x5e
,
0x69
,
0x89
,
0x1c
,
0x95
,
0x8c
,
0xdb
,
0x3e
,
0xd0
,
0xa9
,
0xa8
,
0xb2
,
0x78
,
0xa6
,
0x37
,
0x2b
,
0xfe
,
0x3f
,
0xff
,
0xce
,
0x7f
,
0x02
,
0x00
,
0x00
,
0xff
,
0xff
,
0x60
,
0x83
,
0x9e
,
0xc4
,
0x78
,
0x1f
,
0x00
,
0x00
,
0xf9
,
0xe9
,
0x79
,
0xd8
,
0xee
,
0xcf
,
0x63
,
0x7b
,
0xd2
,
0xb1
,
0xbd
,
0xce
,
0x24
,
0x8a
,
0xfc
,
0xab
,
0x5d
,
0xe5
,
0x17
,
0x16
,
0x64
,
0xb4
,
0x21
,
0xd2
,
0x3e
,
0x08
,
0x5a
,
0x3c
,
0x89
,
0x13
,
0x5b
,
0xde
,
0xc4
,
0xa6
,
0x3c
,
0x2b
,
0x1e
,
0x02
,
0xa4
,
0x9a
,
0x9e
,
0xb2
,
0xdd
,
0x72
,
0x4f
,
0x77
,
0xbb
,
0xbb
,
0xc6
,
0x9e
,
0x39
,
0xa0
,
0xe5
,
0xb4
,
0xe2
,
0xc0
,
0x81
,
0xc3
,
0x0a
,
0x0e
,
0x48
,
0xdc
,
0xe0
,
0x8f
,
0xe0
,
0x0e
,
0x27
,
0xc4
,
0x81
,
0xff
,
0x80
,
0x7f
,
0x80
,
0xff
,
0x00
,
0x09
,
0xd5
,
0xa3
,
0xbb
,
0xab
,
0x6a
,
0x7a
,
0xec
,
0x2c
,
0x31
,
0x97
,
0x51
,
0xd7
,
0x57
,
0x5f
,
0x7d
,
0xf5
,
0xbd
,
0x1f
,
0x35
,
0xb0
,
0x94
,
0xa4
,
0xc1
,
0x05
,
0xf1
,
0x27
,
0x5b
,
0x49
,
0x1a
,
0xb3
,
0xd8
,
0x6b
,
0xb2
,
0x49
,
0x42
,
0xb3
,
0x4e
,
0xcb
,
0x8f
,
0x87
,
0xc3
,
0x38
,
0x92
,
0xc0
,
0xce
,
0x6d
,
0x96
,
0x92
,
0x28
,
0x23
,
0x3e
,
0x0b
,
0x72
,
0x10
,
0xfa
,
0x97
,
0x03
,
0x4b
,
0x87
,
0xf2
,
0xe4
,
0xb6
,
0x80
,
0x7b
,
0x9f
,
0xc2
,
0x72
,
0x32
,
0xea
,
0x87
,
0x81
,
0xff
,
0x58
,
0x51
,
0xdc
,
0x70
,
0x36
,
0x9d
,
0x47
,
0x8b
,
0x8f
,
0xd7
,
0xb6
,
0x04
,
0xc9
,
0xad
,
0x43
,
0xb9
,
0xa9
,
0x0e
,
0xed
,
0xde
,
0xc2
,
0x16
,
0xba
,
0xd7
,
0x85
,
0x15
,
0xf5
,
0x59
,
0x50
,
0xa8
,
0x09
,
0x0a
,
0xeb
,
0x39
,
0x05
,
0xb5
,
0x5b
,
0x92
,
0xb0
,
0x0f
,
0x08
,
0x26
,
0x72
,
0x90
,
0xa0
,
0xbe
,
0x51
,
0x37
,
0x99
,
0xc8
,
0x49
,
0x88
,
0x4d
,
0xc1
,
0x84
,
0x81
,
0xee
,
0x2d
,
0x43
,
0x8d
,
0x4d
,
0x36
,
0x1a
,
0x9b
,
0xce
,
0xa3
,
0x26
,
0xae
,
0xb1
,
0x49
,
0x77
,
0x1e
,
0x9a
,
0x17
,
0x24
,
0x1c
,
0x51
,
0xf4
,
0x27
,
0x07
,
0x96
,
0x4d
,
0x11
,
0xbc
,
0xfb
,
0xe0
,
0xb2
,
0xf8
,
0x8c
,
0x46
,
0x11
,
0x19
,
0x52
,
0x21
,
0xac
,
0x8b
,
0x4b
,
0x80
,
0xb7
,
0x0e
,
0x73
,
0x64
,
0x18
,
0x8f
,
0x22
,
0x26
,
0xa4
,
0xa8
,
0x63
,
0xb5
,
0xf2
,
0x3c
,
0x68
,
0x44
,
0x31
,
0xa3
,
0x1b
,
0x4d
,
0x71
,
0x40
,
0x7c
,
0x7b
,
0xdf
,
0x82
,
0xb9
,
0x78
,
0xc4
,
0x92
,
0x11
,
0xdb
,
0x98
,
0x17
,
0xec
,
0xae
,
0x9a
,
0xec
,
0x1e
,
0x88
,
0x3d
,
0xac
,
0x70
,
0xf8
,
0xbd
,
0x24
,
0xcb
,
0x28
,
0xdb
,
0x19
,
0x53
,
0x7f
,
0x63
,
0x41
,
0xde
,
0x5b
,
0x00
,
0xd0
,
0x3f
,
0x1c
,
0x58
,
0xb1
,
0x34
,
0x75
,
0x83
,
0x9c
,
0x7e
,
0x03
,
0x9a
,
0x41
,
0xc4
,
0x19
,
0x9d
,
0x13
,
0x8c
,
0xde
,
0x31
,
0x19
,
0xdd
,
0xe3
,
0x5b
,
0x58
,
0x62
,
0xdc
,
0xa8
,
0x50
,
0xff
,
0xe4
,
0xda
,
0x37
,
0x6c
,
0xf7
,
0x96
,
0x32
,
0xd5
,
0x35
,
0x99
,
0xb8
,
0xcd
,
0x63
,
0x21
,
0x90
,
0x8b
,
0x6b
,
0x2c
,
0x2e
,
0x65
,
0x6c
,
0x7c
,
0x0d
,
0x19
,
0x9b
,
0x6f
,
0x2d
,
0xe3
,
0x0e
,
0xac
,
0x7c
,
0xde
,
0xfb
,
0xd1
,
0xc1
,
0xcb
,
0x30
,
0xee
,
0x93
,
0x70
,
0x2f
,
0x1a
,
0xd0
,
0x31
,
0x97
,
0x82
,
0x8d
,
0x4f
,
0x49
,
0x76
,
0x2a
,
0xf8
,
0x6d
,
0x61
,
0xb5
,
0xf2
,
0x3a
,
0xb0
,
0x10
,
0x8f
,
0x58
,
0xc0
,
0x71
,
0x94
,
0xaf
,
0x16
,
0x6b
,
0xf4
,
0x4b
,
0x07
,
0x16
,
0xf6
,
0xa9
,
0x64
,
0x53
,
0x53
,
0x83
,
0x63
,
0xa8
,
0xe1
,
0xfb
,
0xb0
,
0x32
,
0x62
,
0xe3
,
0x58
,
0xbb
,
0x6b
,
0xa3
,
0xb6
,
0x59
,
0xd7
,
0x62
,
0xcd
,
0xe2
,
0x04
,
0xdb
,
0xe8
,
0x9c
,
0x85
,
0x33
,
0x3a
,
0xd9
,
0x1b
,
0x92
,
0x13
,
0xaa
,
0x98
,
0x2b
,
0xd6
,
0xe8
,
0xbb
,
0xd0
,
0xd2
,
0x95
,
0xe5
,
0x7d
,
0x53
,
0xe0
,
0x4a
,
0x9d
,
0x3a
,
0xe2
,
0x9a
,
0x15
,
0x75
,
0x4d
,
0xce
,
0x28
,
0x2e
,
0x10
,
0xd0
,
0x1e
,
0xb8
,
0x67
,
0x54
,
0x69
,
0x6e
,
0x26
,
0xff
,
0xef
,
0xc1
,
0x52
,
0x1c
,
0x51
,
0x16
,
0x0c
,
0x69
,
0x32
,
0xea
,
0x9f
,
0x51
,
0x99
,
0x29
,
0x5a
,
0xd8
,
0x04
,
0xa2
,
0x9f
,
0x15
,
0x39
,
0xea
,
0xa0
,
0x30
,
0x00
,
0x4e
,
0x46
,
0xfd
,
0x7d
,
0x3a
,
0x61
,
0x63
,
0x41
,
0xb1
,
0x85
,
0x4b
,
0x80
,
0xb7
,
0x25
,
0x6e
,
0x56
,
0xf6
,
0x94
,
0xea
,
0x68
,
0x2b
,
0x3e
,
0x0b
,
0x8e
,
0x70
,
0x89
,
0x82
,
0x12
,
0x58
,
0x7d
,
0x99
,
0xc6
,
0xa3
,
0xa4
,
0xc2
,
0x6a
,
0xff
,
0x1b
,
0xa5
,
0xa3
,
0xdf
,
0x3b
,
0xb0
,
0xf4
,
0x59
,
0xec
,
0x93
,
0x90
,
0x63
,
0xee
,
0x31
,
0x3a
,
0xe4
,
0x77
,
0x9d
,
0xd2
,
0xe0
,
0xe4
,
0xb4
,
0xb8
,
0x4b
,
0xae
,
0xbc
,
0x0d
,
0x98
,
0x67
,
0xe3
,
0x40
,
0xdd
,
0xc1
,
0x1d
,
0x24
,
0x5f
,
0x1a
,
0xbe
,
0x53
,
0x37
,
0x7d
,
0x47
,
0xf3
,
0xb7
,
0x86
,
0xe1
,
0x6f
,
0x53
,
0xea
,
0x6e
,
0x56
,
0xa9
,
0xfb
,
0x0b
,
0x58
,
0xc6
,
0xf4
,
0x9c
,
0xb3
,
0x76
,
0x28
,
0x54
,
0x9a
,
0x15
,
0x31
,
0xfa
,
0xda
,
0x8e
,
0x51
,
0x0e
,
0xf0
,
0x0e
,
0x60
,
0xf5
,
0xa4
,
0x42
,
0x7f
,
0x4a
,
0x29
,
0xf7
,
0x94
,
0x52
,
0xaa
,
0x54
,
0x8c
,
0x2b
,
0x0f
,
0xa2
,
0x77
,
0x61
,
0x49
,
0x26
,
0x87
,
0x7d
,
0x3a
,
0x79
,
0x4e
,
0x18
,
0xe1
,
0xd1
,
0x3e
,
0x20
,
0x8c
,
0x08
,
0xa7
,
0x6b
,
0x61
,
0xf1
,
0x8d
,
0xb6
,
0x61
,
0xa5
,
0x20
,
0x29
,
0xf9
,
0x9c
,
0x69
,
0xb0
,
0x75
,
0x98
,
0x2b
,
0xdc
,
0x8b
,
0x13
,
0x50
,
0x2b
,
0xd4
,
0xe3
,
0x82
,
0x66
,
0xba
,
0xa0
,
0x5d
,
0x68
,
0x9f
,
0x98
,
0x44
,
0x33
,
0xe5
,
0xe9
,
0xeb
,
0xb6
,
0x18
,
0x72
,
0x1b
,
0x4f
,
0xe1
,
0xa3
,
0x00
,
0x56
,
0x30
,
0x3d
,
0x57
,
0x0e
,
0xdb
,
0xe3
,
0x5a
,
0x32
,
0x13
,
0x86
,
0x63
,
0x25
,
0x0c
,
0x6f
,
0x13
,
0x16
,
0xc5
,
0xe2
,
0x68
,
0x32
,
0xec
,
0xc7
,
0xa1
,
0xb0
,
0xb3
,
0x8b
,
0x75
,
0x90
,
0x26
,
0x58
,
0x5d
,
0x17
,
0x0c
,
0x3d
,
0x85
,
0xd6
,
0xb6
,
0xf8
,
0x7a
,
0x4e
,
0x19
,
0x09
,
0xc2
,
0x99
,
0x0a
,
0x58
,
0x85
,
0xa6
,
0xaf
,
0x25
,
0x51
,
0xb9
,
0x40
,
0xaf
,
0xe1
,
0x0e
,
0xa6
,
0x49
,
0x38
,
0xc9
,
0xeb
,
0xbf
,
0xc0
,
0xcd
,
0xbc
,
0x0f
,
0xa1
,
0x45
,
0x34
,
0xa2
,
0x4a
,
0xfe
,
0x3c
,
0x7b
,
0xea
,
0xf7
,
0x61
,
0x03
,
0x11
,
0x61
,
0xf0
,
0x52
,
0x4e
,
0x8f
,
0x2b
,
0x23
,
0x3b
,
0x38
,
0x96
,
0x98
,
0xde
,
0x53
,
0x58
,
0x0e
,
0x75
,
0x57
,
0xcf
,
0x15
,
0x9a
,
0xa7
,
0x58
,
0x23
,
0x0e
,
0xb0
,
0x85
,
0x8b
,
0xbe
,
0x74
,
0x60
,
0x15
,
0x53
,
0x9f
,
0x06
,
0x09
,
0x9b
,
0x4a
,
0x01
,
0x6f
,
0xa5
,
0x52
,
0x23
,
0x49
,
0xd4
,
0xaf
,
0x4f
,
0x12
,
0xbf
,
0x71
,
0x60
,
0x49
,
0x69
,
0xe8
,
0xe0
,
0x98
,
0xf3
,
0xe7
,
0x6d
,
0x83
,
0x2b
,
0xc5
,
0x7f
,
0x45
,
0x12
,
0x25
,
0xd3
,
0xbb
,
0x86
,
0x92
,
0x14
,
0xa2
,
0x5a
,
0xbd
,
0x22
,
0xc9
,
0x4e
,
0xc4
,
0xd2
,
0x09
,
0x2e
,
0x4f
,
0x75
,
0x9e
,
0xc2
,
0xb2
,
0xb9
,
0xe9
,
0xb5
,
0xa1
,
0xce
,
0xfd
,
0x54
,
0x9a
,
0x8f
,
0x7f
,
0x72
,
0xdb
,
0x89
,
0xce
,
0x25
,
0xb7
,
0x9d
,
0x58
,
0x7c
,
0x52
,
0xfb
,
0xc8
,
0x41
,
0xbf
,
0x75
,
0xa0
,
0xdd
,
0xcb
,
0xa3
,
0x30
,
0xe7
,
0xea
,
0xb9
,
0x0a
,
0xd5
,
0xac
,
0xe4
,
0xea
,
0xa1
,
0xe2
,
0xca
,
0xc6
,
0x95
,
0x80
,
0xac
,
0x64
,
0xac
,
0x38
,
0xc8
,
0x19
,
0x33
,
0x37
,
0x75
,
0xc6
,
0xdc
,
0x0a
,
0xc6
,
0x5c
,
0x9d
,
0xb1
,
0x7d
,
0x58
,
0xb3
,
0x42
,
0xfa
,
0xc9
,
0x61
,
0x1a
,
0xc8
,
0x40
,
0x54
,
0x79
,
0x49
,
0xd2
,
0xa9
,
0xaa
,
0x83
,
0x35
,
0xab
,
0x0e
,
0xfe
,
0xda
,
0x81
,
0xe5
,
0xbc
,
0xbc
,
0x94
,
0x64
,
0x2a
,
0xdd
,
0xfc
,
0xc5
,
0xac
,
0xc4
,
0x7c
,
0xbf
,
0x3a
,
0x31
,
0x4b
,
0x72
,
0xd7
,
0xd7
,
0x44
,
0x57
,
0xab
,
0x89
,
0x07
,
0xb0
,
0x52
,
0xf8
,
0xc7
,
0x35
,
0xec
,
0x54
,
0x16
,
0x37
,
0xd7
,
0xce
,
0xb6
,
0x2f
,
0xc1
,
0xd3
,
0x8b
,
0xac
,
0xa2
,
0xf9
,
0xc1
,
0x54
,
0xa9
,
0x5d
,
0xb3
,
0x4a
,
0xad
,
0x62
,
0xbe
,
0x2c
,
0xb8
,
0x01
,
0xdc
,
0x31
,
0x42
,
0x44
,
0x51
,
0x9a
,
0xaa
,
0x95
,
0xae
,
0x5e
,
0x2b
,
0x9f
,
0x4c
,
0xd7
,
0xca
,
0x75
,
0x3b
,
0x0c
,
0xd4
,
0x4d
,
0x5a
,
0x30
,
0x7c
,
0xe5
,
0xc0
,
0xaa
,
0xd9
,
0x44
,
0x97
,
0x97
,
0xdd
,
0x50
,
0x83
,
0xfa
,
0xd8
,
0xea
,
0x3a
,
0x3b
,
0x55
,
0x1d
,
0x99
,
0xe2
,
0x4c
,
0x61
,
0xa2
,
0xbf
,
0x3a
,
0xb0
,
0x66
,
0xb5
,
0xcc
,
0x37
,
0xce
,
0xd7
,
0xb7
,
0xcd
,
0xc6
,
0xf9
,
0x6e
,
0x45
,
0x53
,
0xa9
,
0xb8
,
0x52
,
0xad
,
0xe5
,
0x7f
,
0x23
,
0xc8
,
0x5f
,
0xb8
,
0x7e
,
0x8d
,
0x36
,
0xf9
,
0x46
,
0xe4
,
0xa8
,
0x57
,
0xc9
,
0xd1
,
0xf8
,
0xda
,
0x72
,
0x34
,
0xdf
,
0x58
,
0x8e
,
0x2f
,
0x6b
,
0x85
,
0x4f
,
0xca
,
0xe9
,
0x52
,
0x89
,
0xb1
,
0x33
,
0x63
,
0xc6
,
0xbc
,
0x57
,
0x39
,
0x63
,
0xca
,
0x43
,
0x15
,
0x93
,
0xe6
,
0xee
,
0xac
,
0x49
,
0xf3
,
0x7e
,
0xf5
,
0xa4
,
0x59
,
0x10
,
0x9a
,
0x9a
,
0x37
,
0x77
,
0x66
,
0xcc
,
0x9b
,
0xf7
,
0x2a
,
0xe7
,
0x4d
,
0x8d
,
0xa1
,
0x37
,
0x9c
,
0x3a
,
0x7f
,
0x0a
,
0x9e
,
0x5e
,
0x6a
,
0x0f
,
0xcf
,
0x0e
,
0x49
,
0x90
,
0x7a
,
0x0f
,
0x61
,
0x39
,
0x3b
,
0x8d
,
0x2f
,
0x8f
,
0x46
,
0xbe
,
0x4f
,
0xb3
,
0xec
,
0x78
,
0x14
,
0x0a
,
0x35
,
0x2c
,
0x60
,
0x0b
,
0xea
,
0x3d
,
0x00
,
0x90
,
0xc9
,
0x22
,
0x21
,
0x41
,
0x2a
,
0xc8
,
0xbb
,
0x58
,
0x83
,
0xa0
,
0x9f
,
0xf3
,
0x1a
,
0x29
,
0x3a
,
0x8e
,
0x2e
,
0x09
,
0x9f
,
0x6c
,
0x0f
,
0x06
,
0xa9
,
0x6c
,
0x3b
,
0x3c
,
0x68
,
0x90
,
0xc1
,
0x20
,
0x55
,
0x8e
,
0x22
,
0xbe
,
0x79
,
0xd6
,
0x16
,
0x0e
,
0x93
,
0x67
,
0x6d
,
0x36
,
0xdd
,
0xa0
,
0xd4
,
0xed
,
0x89
,
0xe6
,
0x07
,
0x66
,
0xa3
,
0xd0
,
0x25
,
0x21
,
0x89
,
0x7c
,
0xca
,
0x8b
,
0xac
,
0x4a
,
0x65
,
0xda
,
0x2d
,
0x3a
,
0x88
,
0x77
,
0xaf
,
0x7d
,
0x89
,
0xac
,
0x3c
,
0x32
,
0x5f
,
0xa2
,
0xbf
,
0xd7
,
0x8a
,
0x41
,
0xf0
,
0x79
,
0xf7
,
0x88
,
0xc5
,
0x29
,
0xb5
,
0x8a
,
0x43
,
0xd9
,
0xb4
,
0x1a
,
0x3e
,
0x5f
,
0x9b
,
0xed
,
0xf3
,
0x46
,
0x6b
,
0xa4
,
0x4a
,
0xca
,
0x9e
,
0x35
,
0x5a
,
0xc9
,
0xfc
,
0x8e
,
0xa0
,
0xc5
,
0xc6
,
0x45
,
0x87
,
0x89
,
0x55
,
0x17
,
0x6c
,
0xc0
,
0xbc
,
0xf7
,
0xa1
,
0xad
,
0x24
,
0x29
,
0x80
,
0x22
,
0xe4
,
0x5b
,
0x78
,
0x0a
,
0xce
,
0x75
,
0x1a
,
0x5f
,
0x46
,
0x34
,
0x15
,
0x11
,
0xee
,
0x62
,
0xb9
,
0xd0
,
0x5a
,
0xfa
,
0x85
,
0x59
,
0x2d
,
0xbd
,
0x6b
,
0xb6
,
0xf4
,
0xf7
,
0xc1
,
0xed
,
0x87
,
0xb1
,
0x7f
,
0x26
,
0x94
,
0x00
,
0x72
,
0xac
,
0x29
,
0x00
,
0xa6
,
0x8d
,
0x16
,
0x6d
,
0x1b
,
0xbd
,
0x86
,
0x86
,
0xa8
,
0xff
,
0xb3
,
0x8a
,
0xd1
,
0x16
,
0xb8
,
0xbc
,
0xcc
,
0x75
,
0x49
,
0x16
,
0xf8
,
0x2a
,
0x4a
,
0xda
,
0x5a
,
0x55
,
0x14
,
0x70
,
0x5c
,
0xa2
,
0xa0
,
0x04
,
0x96
,
0x39
,
0x7c
,
0x97
,
0x5c
,
0xd0
,
0xde
,
0x78
,
0x97
,
0xdf
,
0x7f
,
0x45
,
0x77
,
0xcd
,
0x04
,
0x86
,
0x32
,
0x8e
,
0x5a
,
0x99
,
0x37
,
0xd6
,
0xaf
,
0xbf
,
0xf1
,
0x7d
,
0x68
,
0x8a
,
0xce
,
0xd1
,
0xfb
,
0x3f
,
0x68
,
0x72
,
0x68
,
0xde
,
0x28
,
0x2e
,
0x6a
,
0x87
,
0xb0
,
0xdc
,
0x41
,
0x58
,
0xce
,
0xd8
,
0x25
,
0x77
,
0x99
,
0xf7
,
0xa9
,
0x2c
,
0xfe
,
0x1a
,
0xc8
,
0x2a
,
0x9c
,
0xe6
,
0x01
,
0x6c
,
0x63
,
0xa3
,
0x5f
,
0x39
,
0x3c
,
0x48
,
0xcf
,
0xed
,
0x29
,
0xf0
,
0x6d
,
0x1b
,
0xcd
,
0x0e
,
0x2c
,
0x0c
,
0x83
,
0xf1
,
0xb3
,
0xc2
,
0x45
,
0x9b
,
0xb8
,
0x58
,
0x6b
,
0x2a
,
0x6d
,
0x6c
,
0xd6
,
0xb5
,
0xbe
,
0x3e
,
0x03
,
0xb7
,
0x50
,
0x51
,
0xd5
,
0xb8
,
0xe9
,
0x18
,
0xef
,
0x69
,
0xd7
,
0xce
,
0xf8
,
0x65
,
0x23
,
0x72
,
0x58
,
0x35
,
0x65
,
0x4b
,
0x20
,
0xc2
,
0xd0
,
0x16
,
0x7d
,
0xb7
,
0xe8
,
0x8c
,
0xb6
,
0x87
,
0x16
,
0x83
,
0xa6
,
0xcd
,
0x1f
,
0xe6
,
0x26
,
0x32
,
0xc7
,
0xeb
,
0xd2
,
0xae
,
0xca
,
0x4e
,
0x3f
,
0xe6
,
0x2a
,
0xcd
,
0x6c
,
0x95
,
0x3e
,
0x83
,
0x36
,
0xdf
,
0xd6
,
0x6f
,
0x52
,
0x2d
,
0xf8
,
0x3b
,
0x1a
,
0x21
,
0x7d
,
0x1b
,
0x4f
,
0x1d
,
0x40
,
0x7f
,
0x76
,
0xe0
,
0xf6
,
0x0b
,
0xee
,
0x2f
,
0x47
,
0xfc
,
0x67
,
0x2f
,
0x3a
,
0x88
,
0x68
,
0x6f
,
0x7c
,
0x7d
,
0x81
,
0xcc
,
0x68
,
0x34
,
0xa0
,
0x69
,
0xee
,
0xaa
,
0x72
,
0xc5
,
0xe1
,
0x74
,
0x9c
,
0x04
,
0x29
,
0xcd
,
0x93
,
0x88
,
0x5c
,
0x59
,
0x73
,
0x74
,
0xd9
,
0xaf
,
0x16
,
0x1e
,
0xda
,
0x9c
,
0xe5
,
0xa1
,
0xa6
,
0xdb
,
0xcc
,
0xd9
,
0xd1
,
0xfa
,
0x13
,
0x68
,
0x61
,
0x4a
,
0xc2
,
0xe2
,
0x7d
,
0x07
,
0x41
,
0x2b
,
0xa5
,
0x24
,
0x14
,
0x95
,
0x36
,
0x6f
,
0xb3
,
0x9b
,
0xd8
,
0x80
,
0xf1
,
0x6a
,
0x91
,
0x77
,
0x8e
,
0x69
,
0x70
,
0x51
,
0x9a
,
0xd1
,
0x82
,
0xa2
,
0x27
,
0x00
,
0x85
,
0x1d
,
0xb2
,
0xd2
,
0x52
,
0xce
,
0xd5
,
0x96
,
0xfa
,
0x5b
,
0x0d
,
0xd6
,
0x9f
,
0xa5
,
0x94
,
0x30
,
0xda
,
0x2b
,
0x1f
,
0x89
,
0x9f
,
0x11
,
0xff
,
0x94
,
0xea
,
0xad
,
0x7f
,
0x4b
,
0xb6
,
0xfe
,
0x0f
,
0x00
,
0x7c
,
0x81
,
0xcb
,
0xef
,
0x55
,
0xa9
,
0x5d
,
0x83
,
0x70
,
0x9f
,
0xcf
,
0x82
,
0x93
,
0x48
,
0xec
,
0x4a
,
0x8d
,
0x16
,
0x6b
,
0x61
,
0x03
,
0x46
,
0xd8
,
0x28
,
0x53
,
0x69
,
0x59
,
0xad
,
0xbc
,
0x27
,
0xb0
,
0xa8
,
0x3d
,
0x4f
,
0xab
,
0x26
,
0xc3
,
0xcb
,
0x47
,
0x97
,
0x72
,
0x07
,
0xeb
,
0x68
,
0x9a
,
0x45
,
0xe7
,
0x0c
,
0x8b
,
0x7e
,
0x28
,
0x15
,
0x5a
,
0xf4
,
0xd0
,
0xf3
,
0xc6
,
0x10
,
0xab
,
0xeb
,
0x1e
,
0x1b
,
0x88
,
0xde
,
0xff
,
0xe7
,
0xfa
,
0x5a
,
0x10
,
0x27
,
0x6e
,
0xdb
,
0xfa
,
0xca
,
0x34
,
0x03
,
0x97
,
0x9e
,
0xe6
,
0x5a
,
0x9e
,
0x86
,
0xba
,
0xe2
,
0x0d
,
0x45
,
0xe8
,
0xaf
,
0x37
,
0xfe
,
0x2c
,
0xc8
,
0x58
,
0x65
,
0x31
,
0xbe
,
0xb2
,
0xb4
,
0xa1
,
0x8f
,
0xa0
,
0x2d
,
0xca
,
0xae
,
0x4e
,
0xe5
,
0x3d
,
0xa8
,
0xb3
,
0x71
,
0x6e
,
0xcc
,
0x2a
,
0xed
,
0xf0
,
0x6d
,
0xf4
,
0x0b
,
0xb8
,
0x5d
,
0x3e
,
0x41
,
0x6c
,
0xfb
,
0x7e
,
0xde
,
0x05
,
0xbe
,
0x61
,
0x37
,
0xb0
,
0x09
,
0x8b
,
0x83
,
0x20
,
0x4b
,
0x42
,
0x32
,
0x19
,
0xc6
,
0x03
,
0xaa
,
0xb2
,
0x96
,
0x0e
,
0x32
,
0xbd
,
0xbb
,
0x61
,
0x7b
,
0xf7
,
0x17
,
0xd6
,
0xc3
,
0x82
,
0x62
,
0x00
,
0x95
,
0xae
,
0xc8
,
0x6d
,
0xdb
,
0xd2
,
0x54
,
0x5b
,
0x68
,
0x15
,
0x41
,
0xf3
,
0x58
,
0x25
,
0x96
,
0x0a
,
0x1c
,
0xb1
,
0x75
,
0x3d
,
0x7b
,
0xe8
,
0x15
,
0x67
,
0xe0
,
0x5c
,
0xba
,
0xb3
,
0xd2
,
0x1e
,
0xaf
,
0xd3
,
0x57
,
0x27
,
0x87
,
0x0d
,
0x98
,
0xe7
,
0xc1
,
0x5d
,
0x06
,
0x56
,
0xbe
,
0x44
,
0xff
,
0x76
,
0xe0
,
0xae
,
0xf6
,
0xa4
,
0x53
,
0x6a
,
0x5b
,
0x98
,
0x04
,
0x41
,
0x8b
,
0x3b
,
0x1d
,
0xa6
,
0xfe
,
0xc5
,
0x8b
,
0x90
,
0x9c
,
0xa8
,
0x01
,
0xd6
,
0x80
,
0xf1
,
0x9b
,
0x07
,
0x41
,
0x4a
,
0xa5
,
0x6b
,
0x4b
,
0x86
,
0x4b
,
0x40
,
0xf9
,
0x3c
,
0x23
,
0x23
,
0x42
,
0x2e
,
0x38
,
0x3f
,
0xdc
,
0x46
,
0x34
,
0xcb
,
0x94
,
0x6f
,
0xe7
,
0xcb
,
0xab
,
0xdf
,
0x9f
,
0xed
,
0x92
,
0xe4
,
0x56
,
0xbd
,
0x7d
,
0x78
,
0x19
,
0x23
,
0x29
,
0xeb
,
0x8d
,
0x77
,
0x45
,
0x4b
,
0x22
,
0x8b
,
0x0a
,
0x08
,
0xc4
,
0x8a
,
0x1d
,
0xf4
,
0x89
,
0x70
,
0x66
,
0x4c
,
0x33
,
0x9f
,
0x44
,
0x9f
,
0x0b
,
0x13
,
0xac
,
0x42
,
0x93
,
0x33
,
0x23
,
0x1d
,
0xd1
,
0xc5
,
0x72
,
0xc1
,
0x3d
,
0xec
,
0xb8
,
0xd4
,
0x80
,
0xf8
,
0x46
,
0x1f
,
0xc3
,
0x0a
,
0xa6
,
0x89
,
0x3c
,
0x8b
,
0x69
,
0x36
,
0x0a
,
0xab
,
0x1d
,
0xb1
,
0xea
,
0xe8
,
0x29
,
0xbf
,
0x36
,
0xd1
,
0xaf
,
0xcd
,
0xb1
,
0x9c
,
0x12
,
0xcb
,
0xeb
,
0x42
,
0x3b
,
0x35
,
0x2f
,
0xc8
,
0xac
,
0x41
,
0xd6
,
0xba
,
0x1f
,
0x4f
,
0xe1
,
0xa3
,
0x47
,
0x3c
,
0xd2
,
0xce
,
0x77
,
0x22
,
0xd2
,
0x0f
,
0x69
,
0xfe
,
0x5f
,
0x4b
,
0x21
,
0x62
,
0x4d
,
0x13
,
0x11
,
0xed
,
0x89
,
0xa7
,
0x68
,
0xde
,
0x62
,
0x5f
,
0x2d
,
0xcc
,
0x5e
,
0x76
,
0xb0
,
0x2f
,
0x84
,
0x59
,
0xc0
,
0xe2
,
0x9b
,
0x27
,
0xd1
,
0x61
,
0x76
,
0xa2
,
0x7a
,
0x6b
,
0xfe
,
0x89
,
0xba
,
0x22
,
0xbc
,
0xcd
,
0x4b
,
0xb7
,
0x60
,
0x3e
,
0x55
,
0x32
,
0x98
,
0xaf
,
0x64
,
0xc6
,
0xa5
,
0x38
,
0x47
,
0x42
,
0x7f
,
0x2c
,
0x27
,
0xde
,
0xa3
,
0xe0
,
0x24
,
0x22
,
0x6c
,
0x94
,
0xd2
,
0x43
,
0x92
,
0x92
,
0x21
,
0x4f
,
0xd1
,
0xd2
,
0x47
,
0x7b
,
0x93
,
0x84
,
0x2a
,
0x85
,
0x69
,
0x10
,
0xef
,
0x03
,
0x00
,
0x1e
,
0x71
,
0x7d
,
0x91
,
0xd3
,
0x94
,
0xc2
,
0x2a
,
0x92
,
0x9d
,
0x86
,
0xe4
,
0x7d
,
0x0c
,
0x4b
,
0xa9
,
0x96
,
0x38
,
0x33
,
0x55
,
0xb3
,
0x2b
,
0x93
,
0xaa
,
0x89
,
0x89
,
0xfe
,
0xe0
,
0xc0
,
0xea
,
0x0f
,
0x49
,
0x18
,
0x52
,
0xa6
,
0x92
,
0x41
,
0x2e
,
0xf0
,
0x03
,
0x80
,
0x8b
,
0x80
,
0x5e
,
0xaa
,
0xbe
,
0x44
,
0x96
,
0x18
,
0x0d
,
0xc2
,
0x9d
,
0x59
,
0xac
,
0xd2
,
0xe0
,
0x62
,
0xbf
,
0x08
,
0x4c
,
0x1d
,
0xc4
,
0x31
,
0xb2
,
0x84
,
0x46
,
0x03
,
0x45
,
0x42
,
0xfe
,
0x87
,
0xa1
,
0x83
,
0x44
,
0x80
,
0x8a
,
0xa5
,
0x22
,
0x22
,
0xdf
,
0xc4
,
0x0d
,
0x18
,
0xfa
,
0xaa
,
0x26
,
0x9a
,
0x3f
,
0x99
,
0x32
,
0xf2
,
0x40
,
0xbf
,
0xae
,
0x9d
,
0x30
,
0x75
,
0x5c
,
0x9b
,
0xd2
,
0xf1
,
0xac
,
0xd9
,
0x24
,
0x9f
,
0xc7
,
0x1b
,
0xda
,
0x3c
,
0xce
,
0x5d
,
0x3b
,
0x8d
,
0x87
,
0xf9
,
0x5b
,
0x03
,
0xff
,
0x9e
,
0xfa
,
0x43
,
0xcb
,
0x9c
,
0x03
,
0xc1
,
0x9e
,
0x03
,
0x55
,
0xab
,
0x29
,
0x53
,
0xc9
,
0x62
,
0xd1
,
0x6a
,
0xfa
,
0x79
,
0x27
,
0xa7
,
0x5a
,
0x9c
,
0x96
,
0xd1
,
0xe2
,
0x18
,
0xb9
,
0x64
,
0xc9
,
0xca
,
0x25
,
0x8f
,
0x7f
,
0x57
,
0x83
,
0x79
,
0xed
,
0x3f
,
0xd9
,
0xa3
,
0xd3
,
0xf8
,
0x52
,
0x29
,
0x87
,
0xab
,
0xbe
,
0x5d
,
0x58
,
0xfe
,
0xfc
,
0x88
,
0xa5
,
0x41
,
0x74
,
0xd2
,
0xb9
,
0x5b
,
0x86
,
0x9c
,
0x35
,
0xec
,
0xa2
,
0x5b
,
0xde
,
0xf7
,
0x60
,
0x51
,
0x0f
,
0xe6
,
0xb5
,
0xf2
,
0xb4
,
0x06
,
0xee
,
0xac
,
0xd9
,
0x51
,
0x2b
,
0xc0
,
0xe8
,
0x96
,
0xf7
,
0x0c
,
0x96
,
0xcc
,
0x60
,
0x79
,
0xa7
,
0x24
,
0x60
,
0x6c
,
0x74
,
0xca
,
0x0d
,
0x33
,
0xbc
,
0xd0
,
0x2d
,
0xef
,
0x25
,
0xac
,
0x4a
,
0x1b
,
0x63
,
0x72
,
0xa9
,
0x25
,
0x72
,
0xaf
,
0x64
,
0xdc
,
0xf6
,
0x81
,
0x4e
,
0x45
,
0x95
,
0x45
,
0xb7
,
0xfa
,
0x73
,
0xe2
,
0xff
,
0xf3
,
0xef
,
0xfc
,
0x27
,
0x00
,
0x00
,
0xff
,
0xff
,
0x9a
,
0x6d
,
0x91
,
0x47
,
0x78
,
0x1f
,
0x00
,
0x00
,
}
// Reference imports to suppress errors if they are not otherwise used.
...
...
plugin/dapp/privacy/wallet/keys.go
View file @
f18b8d76
...
...
@@ -107,9 +107,8 @@ func calcFTXOsKeyPrefix(assetExec, token, addr string) []byte {
// calcSendPrivacyTxKey 计算以指定地址作为发送地址的交易信息索引
// addr为发送地址
// key为通过calcTxKey(heightstr)计算出来的值
func
calcSendPrivacyTxKey
(
assetExec
,
tokenname
,
addr
,
key
string
)
[]
byte
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%s-%s-%s-%s"
,
SendPrivacyTx
,
assetExec
,
tokenname
,
addr
,
key
))
func
calcSendPrivacyTxKey
(
assetExec
,
assetSymbol
,
addr
,
txHeightIndex
string
)
[]
byte
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%s-%s-%s-%s"
,
SendPrivacyTx
,
assetExec
,
assetSymbol
,
addr
,
txHeightIndex
))
}
// calcRecvPrivacyTxKey 计算以指定地址作为接收地址的交易信息索引
...
...
plugin/dapp/privacy/wallet/privacybizpolicy_test.go
View file @
f18b8d76
...
...
@@ -457,7 +457,7 @@ func Test_PrivacyTransactionList(t *testing.T) {
},
{
req
:
&
ty
.
ReqPrivacyTransactionList
{
Tokenname
:
types
.
BTY
,
AssetSymbol
:
types
.
BTY
,
SendRecvFlag
:
1
,
Direction
:
0
,
Count
:
10
,
...
...
plugin/dapp/privacy/wallet/privacystore.go
View file @
f18b8d76
...
...
@@ -222,68 +222,46 @@ func (store *privacyStore) getWalletPrivacyTxDetails(param *privacytypes.ReqPriv
bizlog
.
Error
(
"procPrivacyTransactionList"
,
"invalid sendrecvflag "
,
param
.
SendRecvFlag
)
return
nil
,
types
.
ErrInvalidParam
}
var
txbytes
[][]
byte
list
:=
store
.
NewListHelper
()
if
len
(
param
.
Seedtxhash
)
==
0
{
var
txKeyBytes
[][]
byte
if
len
(
param
.
StartTxHeightIndex
)
==
0
{
var
keyPrefix
[]
byte
if
param
.
SendRecvFlag
==
sendTx
{
keyPrefix
=
calcSendPrivacyTxKey
(
param
.
AssetExec
,
param
.
Tokenname
,
param
.
Address
,
""
)
keyPrefix
=
calcSendPrivacyTxKey
(
param
.
AssetExec
,
param
.
AssetSymbol
,
param
.
Address
,
""
)
}
else
{
keyPrefix
=
calcRecvPrivacyTxKey
(
param
.
AssetExec
,
param
.
Tokenname
,
param
.
Address
,
""
)
}
txkeybytes
:=
list
.
IteratorScanFromLast
(
keyPrefix
,
param
.
Count
,
db
.
ListDESC
)
for
_
,
keybyte
:=
range
txkeybytes
{
value
,
err
:=
store
.
Get
(
keybyte
)
if
err
!=
nil
{
bizlog
.
Error
(
"getWalletPrivacyTxDetails"
,
"db Get error"
,
err
)
continue
}
if
nil
==
value
{
continue
}
txbytes
=
append
(
txbytes
,
value
)
keyPrefix
=
calcRecvPrivacyTxKey
(
param
.
AssetExec
,
param
.
AssetSymbol
,
param
.
Address
,
""
)
}
txKeyBytes
=
list
.
IteratorScanFromLast
(
keyPrefix
,
param
.
Count
,
db
.
ListDESC
)
}
else
{
list
:=
store
.
NewListHelper
()
var
txkeybytes
[][]
byte
if
param
.
SendRecvFlag
==
sendTx
{
tx
keybytes
=
list
.
IteratorScan
([]
byte
(
SendPrivacyTx
),
calcSendPrivacyTxKey
(
param
.
AssetExec
,
param
.
Tokenname
,
param
.
Address
,
string
(
param
.
Seedtxhash
)
),
param
.
Count
,
param
.
Direction
)
tx
KeyBytes
=
list
.
IteratorScan
([]
byte
(
SendPrivacyTx
),
calcSendPrivacyTxKey
(
param
.
AssetExec
,
param
.
AssetSymbol
,
param
.
Address
,
param
.
StartTxHeightIndex
),
param
.
Count
,
param
.
Direction
)
}
else
{
tx
keybytes
=
list
.
IteratorScan
([]
byte
(
RecvPrivacyTx
),
calcRecvPrivacyTxKey
(
param
.
AssetExec
,
param
.
Tokenname
,
param
.
Address
,
string
(
param
.
Seedtxhash
)
),
param
.
Count
,
param
.
Direction
)
tx
KeyBytes
=
list
.
IteratorScan
([]
byte
(
RecvPrivacyTx
),
calcRecvPrivacyTxKey
(
param
.
AssetExec
,
param
.
AssetSymbol
,
param
.
Address
,
param
.
StartTxHeightIndex
),
param
.
Count
,
param
.
Direction
)
}
for
_
,
keybyte
:=
range
txkeybytes
{
value
,
err
:=
store
.
Get
(
keybyte
)
if
err
!=
nil
{
bizlog
.
Error
(
"getWalletPrivacyTxDetails"
,
"db Get error"
,
err
)
continue
}
if
nil
==
value
{
txDetails
:=
&
types
.
WalletTxDetails
{}
for
_
,
keyByte
:=
range
txKeyBytes
{
value
,
err
:=
store
.
Get
(
keyByte
)
if
err
!=
nil
||
value
==
nil
{
bizlog
.
Error
(
"getWalletPrivacyTxDetails"
,
"db Get error"
,
err
)
continue
}
txbytes
=
append
(
txbytes
,
value
)
}
}
txDetails
:=
new
(
types
.
WalletTxDetails
)
txDetails
.
TxDetails
=
make
([]
*
types
.
WalletTxDetail
,
len
(
txbytes
))
for
index
,
txdetailbyte
:=
range
txbytes
{
var
txdetail
types
.
WalletTxDetail
err
:=
proto
.
Unmarshal
(
txdetailbyte
,
&
txdetail
)
txDetail
:=
&
types
.
WalletTxDetail
{}
err
=
types
.
Decode
(
value
,
txDetail
)
if
err
!=
nil
{
bizlog
.
Error
(
"getWalletPrivacyTxDetails"
,
"proto.Unmarshal err:"
,
err
)
return
nil
,
types
.
ErrUnmarshal
}
txhash
:=
txdetail
.
GetTx
()
.
Hash
()
txdetail
.
Txhash
=
txhash
if
txdetail
.
GetTx
()
.
IsWithdraw
()
{
txDetail
.
Txhash
=
txDetail
.
GetTx
()
.
Hash
()
if
txDetail
.
GetTx
()
.
IsWithdraw
()
{
//swap from and to
tx
detail
.
Fromaddr
,
txdetail
.
Tx
.
To
=
txdetail
.
Tx
.
To
,
txd
etail
.
Fromaddr
tx
Detail
.
Fromaddr
,
txDetail
.
Tx
.
To
=
txDetail
.
Tx
.
To
,
txD
etail
.
Fromaddr
}
txDetails
.
TxDetails
[
index
]
=
&
txdetail
txDetails
.
TxDetails
=
append
(
txDetails
.
TxDetails
,
txDetail
)
}
return
txDetails
,
nil
}
...
...
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