Proof uses uint64 for blockHeight

This commit is contained in:
Ethan Frey
2017-01-17 17:22:34 +01:00
parent e0309007ad
commit fdc047ae7a
14 changed files with 193 additions and 194 deletions

View File

@ -4,8 +4,8 @@ import (
"fmt" "fmt"
"sync" "sync"
. "github.com/tendermint/go-common"
"github.com/tendermint/abci/types" "github.com/tendermint/abci/types"
. "github.com/tendermint/go-common"
) )
type Client interface { type Client interface {
@ -21,7 +21,7 @@ type Client interface {
DeliverTxAsync(tx []byte) *ReqRes DeliverTxAsync(tx []byte) *ReqRes
CheckTxAsync(tx []byte) *ReqRes CheckTxAsync(tx []byte) *ReqRes
QueryAsync(tx []byte) *ReqRes QueryAsync(tx []byte) *ReqRes
ProofAsync(key []byte, blockHeight int64) *ReqRes ProofAsync(key []byte, blockHeight uint64) *ReqRes
CommitAsync() *ReqRes CommitAsync() *ReqRes
FlushSync() error FlushSync() error
@ -31,7 +31,7 @@ type Client interface {
DeliverTxSync(tx []byte) (res types.Result) DeliverTxSync(tx []byte) (res types.Result)
CheckTxSync(tx []byte) (res types.Result) CheckTxSync(tx []byte) (res types.Result)
QuerySync(tx []byte) (res types.Result) QuerySync(tx []byte) (res types.Result)
ProofSync(key []byte, blockHeight int64) (res types.Result) ProofSync(key []byte, blockHeight uint64) (res types.Result)
CommitSync() (res types.Result) CommitSync() (res types.Result)
InitChainAsync(validators []*types.Validator) *ReqRes InitChainAsync(validators []*types.Validator) *ReqRes

View File

@ -8,8 +8,8 @@ import (
context "golang.org/x/net/context" context "golang.org/x/net/context"
grpc "google.golang.org/grpc" grpc "google.golang.org/grpc"
. "github.com/tendermint/go-common"
"github.com/tendermint/abci/types" "github.com/tendermint/abci/types"
. "github.com/tendermint/go-common"
) )
// A stripped copy of the remoteClient that makes // A stripped copy of the remoteClient that makes
@ -182,7 +182,7 @@ func (cli *grpcClient) QueryAsync(query []byte) *ReqRes {
return cli.finishAsyncCall(req, &types.Response{&types.Response_Query{res}}) return cli.finishAsyncCall(req, &types.Response{&types.Response_Query{res}})
} }
func (cli *grpcClient) ProofAsync(key []byte, blockHeight int64) *ReqRes { func (cli *grpcClient) ProofAsync(key []byte, blockHeight uint64) *ReqRes {
req := types.ToRequestProof(key, blockHeight) req := types.ToRequestProof(key, blockHeight)
res, err := cli.client.Proof(context.Background(), req.GetProof(), grpc.FailFast(true)) res, err := cli.client.Proof(context.Background(), req.GetProof(), grpc.FailFast(true))
if err != nil { if err != nil {
@ -310,7 +310,7 @@ func (cli *grpcClient) CheckTxSync(tx []byte) (res types.Result) {
return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log} return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log}
} }
func (cli *grpcClient) ProofSync(key []byte, blockHeight int64) (res types.Result) { func (cli *grpcClient) ProofSync(key []byte, blockHeight uint64) (res types.Result) {
reqres := cli.ProofAsync(key, blockHeight) reqres := cli.ProofAsync(key, blockHeight)
if res := cli.checkErrGetResult(); res.IsErr() { if res := cli.checkErrGetResult(); res.IsErr() {
return res return res

View File

@ -3,8 +3,8 @@ package abcicli
import ( import (
"sync" "sync"
. "github.com/tendermint/go-common"
types "github.com/tendermint/abci/types" types "github.com/tendermint/abci/types"
. "github.com/tendermint/go-common"
) )
type localClient struct { type localClient struct {
@ -99,7 +99,7 @@ func (app *localClient) QueryAsync(tx []byte) *ReqRes {
) )
} }
func (app *localClient) ProofAsync(key []byte, blockHeight int64) *ReqRes { func (app *localClient) ProofAsync(key []byte, blockHeight uint64) *ReqRes {
app.mtx.Lock() app.mtx.Lock()
res := app.Application.Proof(key, blockHeight) res := app.Application.Proof(key, blockHeight)
app.mtx.Unlock() app.mtx.Unlock()
@ -202,7 +202,7 @@ func (app *localClient) QuerySync(query []byte) (res types.Result) {
return res return res
} }
func (app *localClient) ProofSync(key []byte, blockHeight int64) (res types.Result) { func (app *localClient) ProofSync(key []byte, blockHeight uint64) (res types.Result) {
app.mtx.Lock() app.mtx.Lock()
res = app.Application.Proof(key, blockHeight) res = app.Application.Proof(key, blockHeight)
app.mtx.Unlock() app.mtx.Unlock()

View File

@ -10,8 +10,8 @@ import (
"sync" "sync"
"time" "time"
. "github.com/tendermint/go-common"
"github.com/tendermint/abci/types" "github.com/tendermint/abci/types"
. "github.com/tendermint/go-common"
) )
const ( const (
@ -255,7 +255,7 @@ func (cli *socketClient) QueryAsync(query []byte) *ReqRes {
return cli.queueRequest(types.ToRequestQuery(query)) return cli.queueRequest(types.ToRequestQuery(query))
} }
func (cli *socketClient) ProofAsync(key []byte, blockHeight int64) *ReqRes { func (cli *socketClient) ProofAsync(key []byte, blockHeight uint64) *ReqRes {
return cli.queueRequest(types.ToRequestProof(key, blockHeight)) return cli.queueRequest(types.ToRequestProof(key, blockHeight))
} }
@ -349,7 +349,7 @@ func (cli *socketClient) QuerySync(query []byte) (res types.Result) {
return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log} return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log}
} }
func (cli *socketClient) ProofSync(key []byte, blockHeight int64) (res types.Result) { func (cli *socketClient) ProofSync(key []byte, blockHeight uint64) (res types.Result) {
reqres := cli.queueRequest(types.ToRequestProof(key, blockHeight)) reqres := cli.queueRequest(types.ToRequestProof(key, blockHeight))
cli.FlushSync() cli.FlushSync()
if err := cli.Error(); err != nil { if err := cli.Error(); err != nil {

View File

@ -324,9 +324,9 @@ func cmdProof(c *cli.Context) error {
return err return err
} }
var height int64 var height uint64
if len(args) == 2 { if len(args) == 2 {
height, _ = strconv.ParseInt(args[1], 10, 0) height, _ = strconv.ParseUint(args[1], 10, 0)
} }
res := client.ProofSync(keyBytes, height) res := client.ProofSync(keyBytes, height)
rsp := newResponse(res, string(res.Data), true) rsp := newResponse(res, string(res.Data), true)

View File

@ -3,9 +3,9 @@ package main
import ( import (
"flag" "flag"
. "github.com/tendermint/go-common"
"github.com/tendermint/abci/server" "github.com/tendermint/abci/server"
"github.com/tendermint/abci/types" "github.com/tendermint/abci/types"
. "github.com/tendermint/go-common"
) )
func main() { func main() {
@ -61,7 +61,7 @@ func (app *ChainAwareApplication) Query(query []byte) types.Result {
return types.NewResultOK([]byte(Fmt("%d,%d", app.beginCount, app.endCount)), "") return types.NewResultOK([]byte(Fmt("%d,%d", app.beginCount, app.endCount)), "")
} }
func (app *ChainAwareApplication) Proof(key []byte, blockHeight int64) types.Result { func (app *ChainAwareApplication) Proof(key []byte, blockHeight uint64) types.Result {
return types.NewResultOK(nil, Fmt("Proof is not supported")) return types.NewResultOK(nil, Fmt("Proof is not supported"))
} }

View File

@ -3,8 +3,8 @@ package counter
import ( import (
"encoding/binary" "encoding/binary"
. "github.com/tendermint/go-common"
"github.com/tendermint/abci/types" "github.com/tendermint/abci/types"
. "github.com/tendermint/go-common"
) )
type CounterApplication struct { type CounterApplication struct {
@ -84,6 +84,6 @@ func (app *CounterApplication) Query(query []byte) types.Result {
return types.ErrUnknownRequest.SetLog(Fmt("Invalid nonce. Expected hash or tx, got %v", queryStr)) return types.ErrUnknownRequest.SetLog(Fmt("Invalid nonce. Expected hash or tx, got %v", queryStr))
} }
func (app *CounterApplication) Proof(key []byte, blockHeight int64) types.Result { func (app *CounterApplication) Proof(key []byte, blockHeight uint64) types.Result {
return types.NewResultOK(nil, Fmt("Proof is not supported")) return types.NewResultOK(nil, Fmt("Proof is not supported"))
} }

View File

@ -54,7 +54,7 @@ func (app *DummyApplication) Query(query []byte) types.Result {
return types.NewResultOK(wire.JSONBytes(queryResult), "") return types.NewResultOK(wire.JSONBytes(queryResult), "")
} }
func (app *DummyApplication) Proof(key []byte, blockHeight int64) types.Result { func (app *DummyApplication) Proof(key []byte, blockHeight uint64) types.Result {
// TODO: when go-merkle supports querying older blocks without possible panics, // TODO: when go-merkle supports querying older blocks without possible panics,
// we should store a cache and allow a query. But for now it is impossible. // we should store a cache and allow a query. But for now it is impossible.
// And this is just a Dummy application anyway, what do you expect? ;) // And this is just a Dummy application anyway, what do you expect? ;)

View File

@ -6,11 +6,11 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/tendermint/abci/types"
. "github.com/tendermint/go-common" . "github.com/tendermint/go-common"
dbm "github.com/tendermint/go-db" dbm "github.com/tendermint/go-db"
"github.com/tendermint/go-merkle" "github.com/tendermint/go-merkle"
"github.com/tendermint/go-wire" "github.com/tendermint/go-wire"
"github.com/tendermint/abci/types"
) )
const ( const (
@ -93,7 +93,7 @@ func (app *PersistentDummyApplication) Query(query []byte) types.Result {
return app.app.Query(query) return app.app.Query(query)
} }
func (app *PersistentDummyApplication) Proof(key []byte, blockHeight int64) types.Result { func (app *PersistentDummyApplication) Proof(key []byte, blockHeight uint64) types.Result {
return app.app.Proof(key, blockHeight) return app.app.Proof(key, blockHeight)
} }

View File

@ -35,6 +35,6 @@ func (app *NilApplication) Query(query []byte) types.Result {
return types.NewResultOK(nil, "") return types.NewResultOK(nil, "")
} }
func (app *NilApplication) Proof(key []byte, blockHeight int64) types.Result { func (app *NilApplication) Proof(key []byte, blockHeight uint64) types.Result {
return types.NewResultOK(nil, "") return types.NewResultOK(nil, "")
} }

View File

@ -23,7 +23,7 @@ type Application interface {
Query(query []byte) Result Query(query []byte) Result
// Get proof for state // Get proof for state
Proof(key []byte, blockHeight int64) Result Proof(key []byte, blockHeight uint64) Result
// Return the application Merkle root hash // Return the application Merkle root hash
Commit() Result Commit() Result

View File

@ -55,7 +55,7 @@ func ToRequestQuery(queryBytes []byte) *Request {
} }
} }
func ToRequestProof(key []byte, blockHeight int64) *Request { func ToRequestProof(key []byte, blockHeight uint64) *Request {
return &Request{ return &Request{
Value: &Request_Proof{&RequestProof{key, blockHeight}}, Value: &Request_Proof{&RequestProof{key, blockHeight}},
} }

View File

@ -769,7 +769,7 @@ func (m *RequestQuery) GetQuery() []byte {
type RequestProof struct { type RequestProof struct {
Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Height int64 `protobuf:"varint,2,opt,name=height" json:"height,omitempty"` Height uint64 `protobuf:"varint,2,opt,name=height" json:"height,omitempty"`
} }
func (m *RequestProof) Reset() { *m = RequestProof{} } func (m *RequestProof) Reset() { *m = RequestProof{} }
@ -784,7 +784,7 @@ func (m *RequestProof) GetKey() []byte {
return nil return nil
} }
func (m *RequestProof) GetHeight() int64 { func (m *RequestProof) GetHeight() uint64 {
if m != nil { if m != nil {
return m.Height return m.Height
} }
@ -2231,113 +2231,112 @@ var _ABCIApplication_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("types/types.proto", fileDescriptor0) } func init() { proto.RegisterFile("types/types.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 1714 bytes of a gzipped FileDescriptorProto // 1710 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x58, 0x5b, 0x6f, 0xe4, 0x48, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x58, 0x5b, 0x6f, 0xe4, 0x48,
0x15, 0x8e, 0xfb, 0xde, 0xa7, 0x93, 0x4e, 0xe5, 0xe4, 0xe6, 0x34, 0x3c, 0x8c, 0x0c, 0xcb, 0x66, 0x15, 0x8e, 0x3b, 0x7d, 0x3d, 0x9d, 0x74, 0x2a, 0x27, 0x37, 0xa7, 0xe1, 0x61, 0x64, 0x58, 0x36,
0x86, 0x61, 0x06, 0x65, 0xb5, 0x68, 0xc2, 0x22, 0xa4, 0x64, 0x26, 0x9b, 0xb4, 0x56, 0x3b, 0x13, 0x33, 0x0c, 0x33, 0x28, 0xab, 0x45, 0x13, 0x16, 0x21, 0x25, 0x33, 0xd9, 0xa4, 0xb5, 0xda, 0x99,
0xbc, 0xb3, 0xfb, 0x00, 0x88, 0x96, 0xd3, 0xae, 0xee, 0x36, 0x71, 0x6c, 0x8f, 0x2f, 0xd9, 0x84, 0xe0, 0x9d, 0xdd, 0x07, 0x40, 0xb4, 0x9c, 0x76, 0x75, 0xb7, 0x89, 0xdb, 0xf6, 0xf8, 0x92, 0x4d,
0x3f, 0xc2, 0x4f, 0xe0, 0x17, 0xf0, 0xc2, 0x13, 0x4f, 0x48, 0xdc, 0x2f, 0x7f, 0x85, 0x3f, 0x80, 0xf8, 0x23, 0xfc, 0x04, 0x7e, 0x01, 0x2f, 0x3c, 0xf1, 0x84, 0xc4, 0xfd, 0xf2, 0x57, 0xf8, 0x03,
0x4e, 0x55, 0xf9, 0x1a, 0x9b, 0xa7, 0xd9, 0x97, 0x96, 0xeb, 0xdc, 0xaa, 0x4e, 0xd5, 0x77, 0xbe, 0xe8, 0x54, 0x95, 0xaf, 0xb1, 0x79, 0x9a, 0x7d, 0x69, 0xb9, 0xce, 0xad, 0xea, 0x54, 0x7d, 0xe7,
0x3a, 0x5d, 0xb0, 0x15, 0xdf, 0x07, 0x3c, 0x7a, 0x2e, 0x7e, 0x9f, 0x05, 0xa1, 0x1f, 0xfb, 0xd8, 0xab, 0xd3, 0x05, 0xdb, 0xf1, 0x7d, 0xc0, 0xa3, 0xe7, 0xe2, 0xf7, 0x59, 0x10, 0xfa, 0xb1, 0x8f,
0x15, 0x03, 0xe3, 0xbf, 0x1d, 0xe8, 0x9b, 0xfc, 0x5d, 0xc2, 0xa3, 0x18, 0x0f, 0xa1, 0xc3, 0xe7, 0x1d, 0x31, 0x30, 0xfe, 0xdb, 0x86, 0x9e, 0xc9, 0xdf, 0x25, 0x3c, 0x8a, 0xf1, 0x08, 0xda, 0x7c,
0x2b, 0x5f, 0xd7, 0x1e, 0x69, 0x87, 0xa3, 0x23, 0x7c, 0x26, 0xcd, 0x95, 0xf6, 0x6c, 0xbe, 0xf2, 0xb6, 0xf4, 0x75, 0xed, 0x91, 0x76, 0x34, 0x3c, 0xc6, 0x67, 0xd2, 0x5c, 0x69, 0xcf, 0x67, 0x4b,
0x2f, 0xd6, 0x4c, 0x61, 0x81, 0xdf, 0x87, 0xee, 0xc2, 0x4d, 0xa2, 0x95, 0xde, 0x12, 0xa6, 0xdb, 0xff, 0x72, 0xcd, 0x14, 0x16, 0xf8, 0x7d, 0xe8, 0xcc, 0xdd, 0x24, 0x5a, 0xea, 0x2d, 0x61, 0xba,
0x65, 0xd3, 0x4f, 0x49, 0x75, 0xb1, 0x66, 0x4a, 0x1b, 0x0a, 0xeb, 0x78, 0x0b, 0x5f, 0x6f, 0xd7, 0x53, 0x36, 0xfd, 0x94, 0x54, 0x97, 0x6b, 0xa6, 0xb4, 0xa1, 0xb0, 0x8e, 0x37, 0xf7, 0xf5, 0xf5,
0x85, 0x9d, 0x7a, 0x0b, 0x11, 0x96, 0x2c, 0xf0, 0x05, 0x40, 0xc4, 0xe3, 0x99, 0x1f, 0xc4, 0x8e, 0xba, 0xb0, 0x13, 0x6f, 0x2e, 0xc2, 0x92, 0x05, 0xbe, 0x00, 0x88, 0x78, 0x3c, 0xf5, 0x83, 0xd8,
0xef, 0xe9, 0x1d, 0x61, 0xbf, 0x5f, 0xb6, 0xff, 0x82, 0xc7, 0x6f, 0x84, 0xfa, 0x62, 0xcd, 0x1c, 0xf1, 0x3d, 0xbd, 0x2d, 0xec, 0x0f, 0xca, 0xf6, 0x5f, 0xf0, 0xf8, 0x8d, 0x50, 0x5f, 0xae, 0x99,
0x46, 0xe9, 0x80, 0x3c, 0x6d, 0xee, 0x3a, 0xb7, 0x3c, 0x9c, 0xc5, 0x77, 0x7a, 0xb7, 0xce, 0xf3, 0x83, 0x28, 0x1d, 0x90, 0xa7, 0xcd, 0x5d, 0xe7, 0x96, 0x87, 0xd3, 0xf8, 0x4e, 0xef, 0xd4, 0x79,
0x95, 0xd4, 0xbf, 0xbd, 0x23, 0x4f, 0x3b, 0x1d, 0xe0, 0x11, 0x0c, 0xe6, 0x2b, 0x3e, 0xbf, 0x26, 0xbe, 0x92, 0xfa, 0xb7, 0x77, 0xe4, 0x69, 0xa7, 0x03, 0x3c, 0x86, 0xfe, 0x6c, 0xc9, 0x67, 0x37,
0xbf, 0x9e, 0xf0, 0xdb, 0x2d, 0xfb, 0xbd, 0x24, 0xad, 0xf0, 0xea, 0xcf, 0xe5, 0x27, 0x3e, 0x83, 0xe4, 0xd7, 0x15, 0x7e, 0x7b, 0x65, 0xbf, 0x97, 0xa4, 0x15, 0x5e, 0xbd, 0x99, 0xfc, 0xc4, 0x67,
0xde, 0xdc, 0xbf, 0xb9, 0x71, 0x62, 0xbd, 0x2f, 0x3c, 0x76, 0x2a, 0x1e, 0x42, 0x77, 0xb1, 0x66, 0xd0, 0x9d, 0xf9, 0xab, 0x95, 0x13, 0xeb, 0x3d, 0xe1, 0xb1, 0x5b, 0xf1, 0x10, 0xba, 0xcb, 0x35,
0x2a, 0x2b, 0xda, 0xae, 0x77, 0x09, 0x0f, 0xef, 0xf5, 0x41, 0xdd, 0x76, 0xfd, 0x8c, 0x54, 0xb4, 0x53, 0x59, 0xd1, 0x76, 0xbd, 0x4b, 0x78, 0x78, 0xaf, 0xf7, 0xeb, 0xb6, 0xeb, 0x67, 0xa4, 0xa2,
0x5d, 0xc2, 0x86, 0x52, 0x71, 0x3c, 0x27, 0x9e, 0xcd, 0x57, 0x96, 0xe3, 0xe9, 0xc3, 0xba, 0x54, 0xed, 0x12, 0x36, 0x94, 0x8a, 0xe3, 0x39, 0xf1, 0x74, 0xb6, 0xb4, 0x1c, 0x4f, 0x1f, 0xd4, 0xa5,
0xa6, 0x9e, 0x13, 0xbf, 0x24, 0x35, 0xa5, 0xe2, 0xa4, 0x03, 0xfc, 0x04, 0x46, 0x57, 0x7c, 0xe9, 0x32, 0xf1, 0x9c, 0xf8, 0x25, 0xa9, 0x29, 0x15, 0x27, 0x1d, 0xe0, 0x27, 0x30, 0xbc, 0xe6, 0x0b,
0x78, 0xb3, 0x2b, 0xd7, 0x9f, 0x5f, 0xeb, 0x20, 0x5c, 0xf5, 0xb2, 0xeb, 0x29, 0x19, 0x9c, 0x92, 0xc7, 0x9b, 0x5e, 0xbb, 0xfe, 0xec, 0x46, 0x07, 0xe1, 0xaa, 0x97, 0x5d, 0xcf, 0xc8, 0xe0, 0x8c,
0xfe, 0x62, 0xcd, 0x84, 0xab, 0x6c, 0x84, 0x1f, 0xc3, 0x90, 0x7b, 0xb6, 0x72, 0x1d, 0x09, 0xd7, 0xf4, 0x97, 0x6b, 0x26, 0x5c, 0x67, 0x23, 0xfc, 0x18, 0x06, 0xdc, 0xb3, 0x95, 0xeb, 0x50, 0xb8,
0xbd, 0x0a, 0x02, 0x3c, 0x3b, 0x75, 0x1c, 0x70, 0xf5, 0x4d, 0xa9, 0x05, 0xa1, 0xef, 0x2f, 0xf4, 0xee, 0x57, 0x10, 0xe0, 0xd9, 0xa9, 0x63, 0x9f, 0xab, 0x6f, 0x4a, 0x2d, 0x08, 0x7d, 0x7f, 0xae,
0xf5, 0xba, 0xd4, 0x2e, 0x49, 0x45, 0xa9, 0x09, 0x9b, 0xd3, 0x3e, 0x74, 0x6f, 0x2d, 0x37, 0xe1, 0x6f, 0xd4, 0xa5, 0x76, 0x45, 0x2a, 0x4a, 0x4d, 0xd8, 0x9c, 0xf5, 0xa0, 0x73, 0x6b, 0xb9, 0x09,
0xc6, 0x87, 0x30, 0x2a, 0xc0, 0x0a, 0x75, 0xe8, 0xdf, 0xf0, 0x28, 0xb2, 0x96, 0x5c, 0x60, 0x6f, 0x37, 0x3e, 0x84, 0x61, 0x01, 0x56, 0xa8, 0x43, 0x6f, 0xc5, 0xa3, 0xc8, 0x5a, 0x70, 0x81, 0xbd,
0x68, 0xa6, 0x43, 0x63, 0x0c, 0xeb, 0x45, 0x50, 0x19, 0x1b, 0x99, 0x23, 0x01, 0xc7, 0xf8, 0x31, 0x81, 0x99, 0x0e, 0x8d, 0x11, 0x6c, 0x14, 0x41, 0x65, 0x6c, 0x66, 0x8e, 0x04, 0x1c, 0xe3, 0xc7,
0xb0, 0x2a, 0x2e, 0x90, 0x41, 0xfb, 0x9a, 0xdf, 0xab, 0x40, 0xf4, 0x89, 0x3b, 0x6a, 0x5a, 0x81, 0xc0, 0xaa, 0xb8, 0x40, 0x06, 0xeb, 0x37, 0xfc, 0x5e, 0x05, 0xa2, 0x4f, 0xdc, 0x55, 0xd3, 0x0a,
0xd6, 0xa1, 0xa9, 0xd6, 0x60, 0x64, 0xbe, 0x19, 0x32, 0x70, 0x0c, 0xad, 0xf8, 0x4e, 0xb8, 0xae, 0xb4, 0x0e, 0x4c, 0xb5, 0x06, 0x23, 0xf3, 0xcd, 0x90, 0x81, 0x23, 0x68, 0xc5, 0x77, 0xc2, 0x75,
0x9b, 0xad, 0xf8, 0xce, 0x78, 0x04, 0xe3, 0x32, 0x0a, 0x1e, 0x58, 0x7c, 0x37, 0x5b, 0xa0, 0x38, 0xc3, 0x6c, 0xc5, 0x77, 0xc6, 0x23, 0x18, 0x95, 0x51, 0xf0, 0xc0, 0xe2, 0xbb, 0xd9, 0x02, 0xc5,
0x46, 0x9a, 0x4b, 0x1e, 0xb5, 0x34, 0x91, 0x03, 0xe3, 0x45, 0x66, 0x25, 0x76, 0xa4, 0xb8, 0xc6, 0x31, 0xd2, 0x5c, 0xf2, 0xa8, 0xa5, 0x89, 0x1c, 0x18, 0x2f, 0x32, 0x2b, 0xb1, 0x23, 0xc5, 0x35,
0x75, 0xb9, 0xc6, 0x3d, 0xe8, 0xad, 0xb8, 0xb3, 0x5c, 0xc5, 0x62, 0x91, 0x6d, 0x53, 0x8d, 0x8c, 0x6e, 0xc8, 0x35, 0xee, 0x43, 0x77, 0xc9, 0x9d, 0xc5, 0x32, 0x16, 0x8b, 0x6c, 0x9b, 0x6a, 0x64,
0x4d, 0xd8, 0x28, 0xa1, 0xca, 0x78, 0x95, 0x2d, 0x3b, 0x43, 0x01, 0xfe, 0x10, 0xe0, 0xd6, 0x72, 0x6c, 0xc1, 0x66, 0x09, 0x55, 0xc6, 0xab, 0x6c, 0xd9, 0x19, 0x0a, 0xf0, 0x87, 0x00, 0xb7, 0x96,
0x1d, 0xdb, 0x8a, 0xfd, 0x30, 0xd2, 0xb5, 0x47, 0xed, 0xc3, 0xd1, 0x11, 0x53, 0x27, 0xf1, 0x55, 0xeb, 0xd8, 0x56, 0xec, 0x87, 0x91, 0xae, 0x3d, 0x5a, 0x3f, 0x1a, 0x1e, 0x33, 0x75, 0x12, 0x5f,
0xaa, 0x30, 0x0b, 0x36, 0xc6, 0x6b, 0xd8, 0x7a, 0x00, 0x08, 0x44, 0xe8, 0xac, 0xac, 0x68, 0xa5, 0xa5, 0x0a, 0xb3, 0x60, 0x63, 0xbc, 0x86, 0xed, 0x07, 0x80, 0x40, 0x84, 0xf6, 0xd2, 0x8a, 0x96,
0x96, 0x25, 0xbe, 0xf1, 0x03, 0x5a, 0x97, 0x65, 0xf3, 0x50, 0x95, 0xfa, 0x86, 0x0a, 0x7b, 0x21, 0x6a, 0x59, 0xe2, 0x1b, 0x3f, 0xa0, 0x75, 0x59, 0x36, 0x0f, 0x55, 0xa9, 0x6f, 0xaa, 0xb0, 0x97,
0x84, 0xa6, 0x52, 0x1a, 0x8f, 0x61, 0xb3, 0x82, 0x92, 0x42, 0x46, 0x14, 0xaf, 0x93, 0x65, 0xf4, 0x42, 0x68, 0x2a, 0xa5, 0xf1, 0x18, 0xb6, 0x2a, 0x28, 0x29, 0x64, 0xa4, 0x95, 0x32, 0xfa, 0x43,
0x87, 0x2e, 0x0c, 0x4c, 0x1e, 0x05, 0xbe, 0x17, 0x71, 0x7c, 0x01, 0x43, 0x7e, 0x37, 0xe7, 0xb2, 0x07, 0xfa, 0x26, 0x8f, 0x02, 0xdf, 0x8b, 0x38, 0xbe, 0x80, 0x01, 0xbf, 0x9b, 0x71, 0x59, 0xf0,
0xe0, 0xb5, 0x0a, 0x60, 0xa5, 0xcd, 0x59, 0xaa, 0x27, 0xb0, 0x67, 0xc6, 0xf8, 0x58, 0x91, 0x55, 0x5a, 0x05, 0xb0, 0xd2, 0xe6, 0x3c, 0xd5, 0x13, 0xd8, 0x33, 0x63, 0x7c, 0xac, 0xc8, 0xaa, 0xca,
0x95, 0x81, 0x94, 0x53, 0x91, 0xad, 0x9e, 0xa6, 0x6c, 0xd5, 0xae, 0x54, 0xab, 0xb4, 0xad, 0xd0, 0x40, 0xca, 0xa9, 0xc8, 0x56, 0x4f, 0x53, 0xb6, 0x5a, 0xaf, 0x54, 0xab, 0xb4, 0xad, 0xd0, 0xd5,
0xd5, 0x63, 0x45, 0x57, 0x9d, 0xda, 0xc0, 0x25, 0xbe, 0x3a, 0x2e, 0xf1, 0x55, 0xb7, 0x76, 0xf9, 0x63, 0x45, 0x57, 0xed, 0xda, 0xc0, 0x25, 0xbe, 0x3a, 0x29, 0xf1, 0x55, 0xa7, 0x76, 0xf9, 0x0d,
0x0d, 0x84, 0x75, 0x5c, 0x22, 0xac, 0x5e, 0xad, 0x6b, 0x03, 0x63, 0x7d, 0x54, 0x60, 0xac, 0x7e, 0x84, 0x75, 0x52, 0x22, 0xac, 0x6e, 0xad, 0x6b, 0x03, 0x63, 0x7d, 0x54, 0x60, 0xac, 0x5e, 0xa5,
0xa5, 0x50, 0xa5, 0x63, 0x0d, 0x65, 0x3d, 0xcf, 0x28, 0x6b, 0x50, 0x21, 0x39, 0xe5, 0x52, 0xe5, 0x50, 0xa5, 0x63, 0x0d, 0x65, 0x3d, 0xcf, 0x28, 0xab, 0x5f, 0x21, 0x39, 0xe5, 0x52, 0xe5, 0xac,
0xac, 0xa7, 0x29, 0x90, 0x87, 0xb5, 0x9b, 0x56, 0x21, 0xad, 0xe3, 0x12, 0x69, 0x41, 0x6d, 0x3a, 0xa7, 0x29, 0x90, 0x07, 0xb5, 0x9b, 0x56, 0x21, 0xad, 0x93, 0x12, 0x69, 0x41, 0x6d, 0x3a, 0x0d,
0x0d, 0xac, 0xf5, 0x93, 0x32, 0x6b, 0x49, 0xea, 0x39, 0xa8, 0xf8, 0x36, 0xd2, 0xd6, 0x8f, 0x8a, 0xac, 0xf5, 0x93, 0x32, 0x6b, 0x49, 0xea, 0x39, 0xac, 0xf8, 0x36, 0xd2, 0xd6, 0x8f, 0x8a, 0xb4,
0xb4, 0xb5, 0x5e, 0x21, 0x4b, 0x85, 0x85, 0x3a, 0xde, 0x7a, 0x9a, 0xf2, 0xd6, 0x46, 0x6d, 0x7a, 0xb5, 0x51, 0x21, 0x4b, 0x85, 0x85, 0x3a, 0xde, 0x7a, 0x9a, 0xf2, 0xd6, 0x66, 0x6d, 0x7a, 0x4d,
0x4d, 0xc4, 0xf5, 0x98, 0xea, 0xa6, 0x82, 0x4b, 0xaa, 0x79, 0x1e, 0x86, 0x7e, 0xa8, 0x38, 0x47, 0xc4, 0xf5, 0x98, 0xea, 0xa6, 0x82, 0x4b, 0xaa, 0x79, 0x1e, 0x86, 0x7e, 0xa8, 0x38, 0x47, 0x0e,
0x0e, 0x8c, 0x43, 0xaa, 0xf9, 0x1c, 0x8d, 0xff, 0x87, 0xe4, 0x44, 0x8d, 0x17, 0xb0, 0x68, 0xfc, 0x8c, 0x23, 0xaa, 0xf9, 0x1c, 0x8d, 0xff, 0x87, 0xe4, 0x44, 0x8d, 0x17, 0xb0, 0x68, 0xfc, 0x56,
0x56, 0xcb, 0x7d, 0x09, 0x70, 0x54, 0x99, 0xb6, 0x15, 0x5b, 0xca, 0x51, 0x7c, 0x53, 0xbc, 0x5b, 0xcb, 0x7d, 0x09, 0x70, 0x54, 0x99, 0xb6, 0x15, 0x5b, 0xca, 0x51, 0x7c, 0x53, 0xbc, 0x5b, 0x1e,
0x1e, 0x46, 0x84, 0x3c, 0xc9, 0x6b, 0xe9, 0x10, 0x9f, 0xc0, 0x96, 0x6b, 0x45, 0xb1, 0xdc, 0x94, 0x46, 0x84, 0x3c, 0xc9, 0x6b, 0xe9, 0x10, 0x9f, 0xc0, 0xb6, 0x6b, 0x45, 0xb1, 0xdc, 0x94, 0xa9,
0x99, 0x2a, 0xc2, 0xb6, 0x28, 0xc2, 0x4d, 0x52, 0xc8, 0xdd, 0x10, 0x62, 0xfc, 0x01, 0x6c, 0x17, 0x2a, 0xc2, 0x75, 0x51, 0x84, 0x5b, 0xa4, 0x90, 0xbb, 0x21, 0xc4, 0xf8, 0x03, 0xd8, 0x29, 0xd8,
0x6c, 0xad, 0x20, 0x98, 0x09, 0x0a, 0xe8, 0x08, 0x0a, 0x60, 0x99, 0xf5, 0x49, 0x10, 0x5c, 0x58, 0x5a, 0x41, 0x30, 0x15, 0x14, 0xd0, 0x16, 0x14, 0xc0, 0x32, 0xeb, 0xd3, 0x20, 0xb8, 0xb4, 0xa2,
0xd1, 0xca, 0xf8, 0x20, 0xcf, 0xbf, 0xc4, 0xb8, 0xae, 0xbf, 0x4c, 0x19, 0xd7, 0xf5, 0x97, 0xc6, 0xa5, 0xf1, 0x41, 0x9e, 0x7f, 0x89, 0x71, 0x5d, 0x7f, 0x91, 0x32, 0xae, 0xeb, 0x2f, 0x8c, 0x5f,
0xaf, 0x72, 0xb3, 0x9c, 0x5c, 0xbf, 0x03, 0x9d, 0xb9, 0x6f, 0xcb, 0xec, 0xc7, 0x47, 0x9b, 0x6a, 0xe5, 0x66, 0x39, 0xb9, 0x7e, 0x07, 0xda, 0x33, 0xdf, 0x96, 0xd9, 0x8f, 0x8e, 0xb7, 0xd4, 0x8e,
0xc7, 0x5f, 0xfa, 0x36, 0x7f, 0x7b, 0x1f, 0x70, 0x53, 0x28, 0xb3, 0x4c, 0x5b, 0x92, 0x83, 0x44, 0xbf, 0xf4, 0x6d, 0xfe, 0xf6, 0x3e, 0xe0, 0xa6, 0x50, 0x66, 0x99, 0xb6, 0x24, 0x07, 0x89, 0x4c,
0xa6, 0x2a, 0x7e, 0x3b, 0x8f, 0xff, 0x4b, 0xa2, 0x9b, 0x12, 0xd6, 0xdf, 0x67, 0xf4, 0x9f, 0xe7, 0x55, 0xfc, 0xf5, 0x3c, 0xfe, 0x2f, 0x89, 0x6e, 0x4a, 0x58, 0x7f, 0x9f, 0xd1, 0x7f, 0x9e, 0x9f,
0xe7, 0x21, 0x49, 0xfd, 0x9b, 0x89, 0x2d, 0xaf, 0x82, 0xf7, 0x18, 0xfb, 0x17, 0x74, 0x5b, 0x15, 0x87, 0x24, 0xf5, 0x6f, 0x26, 0xb6, 0xbc, 0x0a, 0xde, 0x63, 0xec, 0x5f, 0xd0, 0x6d, 0x55, 0x2c,
0xcb, 0xf9, 0x7d, 0x06, 0xdf, 0xce, 0x8f, 0x34, 0x2b, 0x64, 0x63, 0x07, 0xf0, 0x61, 0x85, 0xca, 0xe7, 0xf7, 0x19, 0x7c, 0x27, 0x3f, 0xd2, 0xac, 0x90, 0x8d, 0x5d, 0xc0, 0x87, 0x15, 0x2a, 0x6f,
0x5b, 0xb9, 0x5c, 0x7b, 0xf8, 0x3d, 0xe8, 0xda, 0xce, 0x62, 0x11, 0xe9, 0x9d, 0x86, 0xdb, 0x49, 0xe5, 0x72, 0xed, 0xe1, 0xf7, 0xa0, 0x63, 0x3b, 0xf3, 0x79, 0xa4, 0xb7, 0x1b, 0x6e, 0x27, 0xa9,
0xaa, 0x8d, 0xdf, 0xb5, 0xa0, 0x27, 0xef, 0x16, 0x3c, 0x20, 0x9e, 0xb3, 0x1c, 0x6f, 0xe6, 0xd8, 0x36, 0x7e, 0xd7, 0x82, 0xae, 0xbc, 0x5b, 0xf0, 0x90, 0x78, 0xce, 0x72, 0xbc, 0xa9, 0x63, 0xa7,
0x69, 0xc5, 0x88, 0xf1, 0xd4, 0xae, 0xdc, 0x96, 0xd9, 0xdd, 0x42, 0xa9, 0xc4, 0xce, 0x0d, 0x57, 0x15, 0x23, 0xc6, 0x13, 0xbb, 0xe9, 0xb6, 0xa4, 0x54, 0x62, 0x67, 0xc5, 0x15, 0xd8, 0xc5, 0x37,
0x60, 0x17, 0xdf, 0xb8, 0x0f, 0x7d, 0x2f, 0xb9, 0x99, 0xc5, 0x77, 0x91, 0x40, 0x75, 0xc7, 0xec, 0x1e, 0x40, 0xcf, 0x4b, 0x56, 0xd3, 0xf8, 0x2e, 0x12, 0xa8, 0x6e, 0x9b, 0x5d, 0x2f, 0x59, 0xbd,
0x79, 0xc9, 0xcd, 0xdb, 0xbb, 0x08, 0x8f, 0x60, 0xa3, 0x00, 0x7d, 0xc7, 0x56, 0x04, 0x3e, 0x56, 0xbd, 0x8b, 0xf0, 0x18, 0x36, 0x0b, 0xd0, 0x77, 0x6c, 0x45, 0xe0, 0x23, 0xb5, 0x34, 0xb1, 0xee,
0x4b, 0x13, 0xeb, 0x9e, 0xbe, 0x32, 0x47, 0x59, 0x11, 0x4c, 0x6d, 0x3c, 0x04, 0x51, 0x13, 0x33, 0xc9, 0x2b, 0x73, 0x98, 0x15, 0xc1, 0xc4, 0xc6, 0x23, 0x10, 0x35, 0x31, 0x95, 0x24, 0x29, 0x6b,
0x49, 0x92, 0xb2, 0x56, 0x7a, 0x62, 0xdf, 0xc6, 0x24, 0x57, 0x2c, 0x4a, 0x17, 0xe7, 0xb7, 0x60, 0xa5, 0x2b, 0xf6, 0x6d, 0x44, 0x72, 0xc5, 0xa2, 0x74, 0x71, 0x7e, 0x0b, 0x06, 0xb4, 0x93, 0xd2,
0x48, 0x3b, 0x29, 0x4d, 0xfa, 0xc2, 0x64, 0x40, 0x02, 0xa1, 0xfc, 0x10, 0x36, 0xf3, 0xcb, 0x58, 0xa4, 0x27, 0x4c, 0xfa, 0x24, 0x10, 0xca, 0x0f, 0x61, 0x2b, 0xbf, 0x8c, 0xa5, 0x49, 0x5f, 0x46,
0x9a, 0x0c, 0x64, 0x94, 0x5c, 0x2c, 0x0c, 0x0f, 0x60, 0x90, 0xd5, 0xe4, 0x50, 0x58, 0xf4, 0x2d, 0xc9, 0xc5, 0xc2, 0xf0, 0x10, 0xfa, 0x59, 0x4d, 0x0e, 0x84, 0x45, 0xcf, 0x52, 0xa5, 0x38, 0x81,
0x55, 0x8a, 0x53, 0xe8, 0xab, 0x25, 0xd6, 0x5e, 0xdc, 0x4f, 0xa0, 0x1b, 0x58, 0x61, 0x1c, 0xa9, 0x9e, 0x5a, 0x62, 0xed, 0xc5, 0xfd, 0x04, 0x3a, 0x81, 0x15, 0xc6, 0x91, 0xba, 0x20, 0x53, 0x82,
0x0b, 0x32, 0x25, 0xb8, 0x4b, 0x2b, 0xa4, 0x5e, 0x49, 0x5d, 0xdf, 0xd2, 0xc4, 0x38, 0x86, 0x8d, 0xbb, 0xb2, 0x42, 0xea, 0x95, 0xd4, 0xf5, 0x2d, 0x4d, 0x8c, 0x13, 0xd8, 0x2c, 0xc9, 0x89, 0xd1,
0x92, 0x9c, 0x18, 0x2d, 0xf6, 0x63, 0xcb, 0x55, 0x57, 0xb7, 0x1c, 0x64, 0xd3, 0xb4, 0xf2, 0x69, 0x62, 0x3f, 0xb6, 0x5c, 0x75, 0x75, 0xcb, 0x41, 0x36, 0x4d, 0x2b, 0x9f, 0xc6, 0x38, 0x81, 0x41,
0x8c, 0x63, 0x18, 0x66, 0x67, 0x48, 0xc7, 0x12, 0x24, 0x57, 0x9f, 0x65, 0x9d, 0x8d, 0x1a, 0x51, 0x76, 0x86, 0x74, 0x2c, 0x41, 0x72, 0xfd, 0x59, 0xd6, 0xd9, 0xa8, 0x11, 0x85, 0x0b, 0xfc, 0xaf,
0xb8, 0xc0, 0xff, 0x5a, 0xf5, 0x10, 0x1d, 0x53, 0x0e, 0x9e, 0xfc, 0x49, 0x83, 0xd1, 0xe7, 0x92, 0x55, 0x0f, 0xd1, 0x36, 0xe5, 0xe0, 0xc9, 0x9f, 0x34, 0x18, 0x7e, 0x2e, 0x29, 0x90, 0xd0, 0x88,
0x02, 0x09, 0x8d, 0xb8, 0x09, 0xa3, 0xd7, 0x89, 0xeb, 0x2a, 0x11, 0x5b, 0xc3, 0x01, 0x74, 0x88, 0x5b, 0x30, 0x7c, 0x9d, 0xb8, 0xae, 0x12, 0xb1, 0x35, 0xec, 0x43, 0x9b, 0x98, 0x93, 0x69, 0x38,
0x39, 0x99, 0x86, 0x43, 0xe8, 0x0a, 0x66, 0x64, 0x2d, 0x12, 0x12, 0x25, 0xb2, 0x36, 0x6e, 0xc0, 0x80, 0x8e, 0x60, 0x46, 0xd6, 0x22, 0x21, 0x51, 0x22, 0x5b, 0xc7, 0x4d, 0x18, 0x64, 0x1c, 0xc4,
0x30, 0xe3, 0x20, 0xd6, 0xa1, 0x61, 0x46, 0xc9, 0xac, 0x4b, 0xc3, 0x8c, 0x7a, 0xd8, 0x16, 0x8e, 0xda, 0x34, 0xcc, 0x28, 0x99, 0x75, 0x68, 0x98, 0x51, 0x0f, 0xdb, 0xc6, 0x21, 0xf4, 0x14, 0x53,
0xa0, 0xaf, 0x98, 0x82, 0x21, 0x02, 0xf4, 0xe4, 0x49, 0xb1, 0x6d, 0x0a, 0x2d, 0x8a, 0x9c, 0xed, 0x30, 0x44, 0x80, 0xae, 0x3c, 0x29, 0xb6, 0x43, 0xa1, 0x45, 0x91, 0xb3, 0x5d, 0x72, 0xc9, 0xa0,
0x90, 0x4b, 0x06, 0x6d, 0xb6, 0x8b, 0x63, 0x80, 0x1c, 0xd4, 0x6c, 0x0f, 0xd7, 0x61, 0x90, 0xc2, 0xcd, 0xf6, 0x70, 0x04, 0x90, 0x83, 0x9a, 0xed, 0xe3, 0x06, 0xf4, 0x53, 0x38, 0xb3, 0x03, 0xf2,
0x99, 0xed, 0x93, 0x9f, 0x28, 0x60, 0xa6, 0x3f, 0xf9, 0x7d, 0x17, 0x06, 0x69, 0x4d, 0x61, 0x0f, 0x13, 0x05, 0xcc, 0xf4, 0x27, 0xbf, 0xef, 0x40, 0x3f, 0xad, 0x29, 0xec, 0x42, 0xeb, 0xcd, 0x67,
0x5a, 0x6f, 0x3e, 0x63, 0x6b, 0xb8, 0x05, 0x1b, 0x53, 0x2f, 0xe6, 0xa1, 0x67, 0xb9, 0x67, 0x74, 0x6c, 0x0d, 0xb7, 0x61, 0x73, 0xe2, 0xc5, 0x3c, 0xf4, 0x2c, 0xf7, 0x9c, 0xee, 0x03, 0xa6, 0x91,
0x1f, 0x30, 0x8d, 0x44, 0x67, 0xde, 0xdc, 0xb7, 0x1d, 0x6f, 0x29, 0x45, 0x2d, 0x8a, 0x79, 0x6a, 0xe8, 0xdc, 0x9b, 0xf9, 0xb6, 0xe3, 0x2d, 0xa4, 0xa8, 0x45, 0x31, 0xcf, 0x2c, 0xfb, 0xb5, 0xef,
0xd9, 0xaf, 0x7d, 0x6f, 0xce, 0x59, 0x1b, 0x19, 0xac, 0x7f, 0xe9, 0x59, 0x49, 0xbc, 0xf2, 0x43, 0xcd, 0x38, 0x5b, 0x47, 0x06, 0x1b, 0x5f, 0x7a, 0x56, 0x12, 0x2f, 0xfd, 0xd0, 0xf9, 0x0d, 0xb7,
0xe7, 0x37, 0xdc, 0x66, 0x1d, 0xdc, 0x85, 0xad, 0xa9, 0x17, 0x25, 0x8b, 0x85, 0x33, 0x77, 0xb8, 0x59, 0x1b, 0xf7, 0x60, 0x7b, 0xe2, 0x45, 0xc9, 0x7c, 0xee, 0xcc, 0x1c, 0xee, 0xc5, 0x9f, 0x26,
0x17, 0x7f, 0x9a, 0x78, 0x76, 0xc4, 0xba, 0x88, 0x30, 0xfe, 0xd2, 0xbb, 0xf6, 0xfc, 0xaf, 0x3d, 0x9e, 0x1d, 0xb1, 0x0e, 0x22, 0x8c, 0xbe, 0xf4, 0x6e, 0x3c, 0xff, 0x6b, 0x4f, 0x75, 0x5d, 0xac,
0xd5, 0x75, 0xb1, 0x1e, 0xea, 0xb0, 0x73, 0x6a, 0x45, 0xfc, 0x55, 0x12, 0xb8, 0xce, 0xdc, 0x8a, 0x8b, 0x3a, 0xec, 0x9e, 0x59, 0x11, 0x7f, 0x95, 0x04, 0xae, 0x33, 0xb3, 0x62, 0x7e, 0x6a, 0xdb,
0xf9, 0x89, 0x6d, 0x87, 0x3c, 0x8a, 0x18, 0xa7, 0x20, 0xa4, 0x29, 0xcf, 0xbd, 0x48, 0x1d, 0x4a, 0x21, 0x8f, 0x22, 0xc6, 0x29, 0x08, 0x69, 0xca, 0x73, 0xcf, 0x53, 0x87, 0x52, 0x7c, 0xce, 0x23,
0xf1, 0x39, 0x8f, 0xd8, 0x12, 0x0f, 0x60, 0xf7, 0x81, 0x46, 0xcc, 0xbc, 0xc2, 0x6f, 0x83, 0x5e, 0xb6, 0xc0, 0x43, 0xd8, 0x7b, 0xa0, 0x11, 0x33, 0x2f, 0xf1, 0xdb, 0xa0, 0x57, 0x55, 0x17, 0x56,
0x55, 0x9d, 0x5b, 0xd1, 0x65, 0xe8, 0xcc, 0x39, 0x73, 0x70, 0x07, 0x98, 0xd4, 0x0a, 0x18, 0x4f, 0x74, 0x15, 0x3a, 0x33, 0xce, 0x1c, 0xdc, 0x05, 0x26, 0xb5, 0x02, 0xc6, 0x13, 0x2f, 0x48, 0x62,
0xbd, 0x20, 0x89, 0xd9, 0xaf, 0xd3, 0xf9, 0x95, 0xf4, 0x4d, 0x12, 0x93, 0xf8, 0xba, 0x22, 0xbe, 0xf6, 0xeb, 0x74, 0x7e, 0x25, 0x7d, 0x93, 0xc4, 0x24, 0xbe, 0xa9, 0x88, 0xaf, 0x04, 0x54, 0x98,
0x14, 0x50, 0x61, 0x2e, 0xee, 0xc3, 0x76, 0x41, 0xfc, 0x05, 0xe5, 0x47, 0xbb, 0x73, 0x93, 0xaf, 0x8b, 0x07, 0xb0, 0x53, 0x10, 0x7f, 0x41, 0xf9, 0xd1, 0xee, 0xac, 0xf2, 0xf5, 0x4a, 0x85, 0xb3,
0x57, 0x2a, 0x9c, 0xa5, 0x67, 0xc5, 0x49, 0xc8, 0x99, 0x87, 0x7b, 0x80, 0xa4, 0x51, 0x5b, 0x92, 0xf0, 0xac, 0x38, 0x09, 0x39, 0xf3, 0x70, 0x1f, 0x90, 0x34, 0x6a, 0x4b, 0xd2, 0xc4, 0xfd, 0x74,
0x26, 0xee, 0xa7, 0x33, 0x28, 0xb9, 0x9a, 0x21, 0xa8, 0x8a, 0xdd, 0x64, 0xe9, 0x78, 0xec, 0x1d, 0x06, 0x25, 0x57, 0x33, 0x04, 0x55, 0xb1, 0x9b, 0x2c, 0x1c, 0x8f, 0xbd, 0xc3, 0x3d, 0x60, 0x17,
0xee, 0x02, 0x3b, 0xf7, 0x6f, 0x95, 0xf4, 0xcc, 0x8b, 0x9d, 0xf8, 0x9e, 0xfd, 0x59, 0xc3, 0x1d, 0xfe, 0xad, 0x92, 0x9e, 0x7b, 0xb1, 0x13, 0xdf, 0xb3, 0x3f, 0x6b, 0xb8, 0x0b, 0x5b, 0xb9, 0xf8,
0xd8, 0xcc, 0xc5, 0xe7, 0xa1, 0x9f, 0x04, 0xec, 0x2f, 0x1a, 0xee, 0x03, 0xe6, 0xd2, 0xcb, 0xd0, 0x22, 0xf4, 0x93, 0x80, 0xfd, 0x45, 0xc3, 0x03, 0xc0, 0x5c, 0x7a, 0x15, 0xfa, 0x81, 0x1f, 0x59,
0x0f, 0xfc, 0xc8, 0x72, 0xd9, 0x5f, 0x35, 0xdc, 0x83, 0xad, 0x73, 0xff, 0x36, 0x3b, 0x05, 0xe9, 0x2e, 0xfb, 0xab, 0x86, 0xfb, 0xb0, 0x7d, 0xe1, 0xdf, 0x66, 0xa7, 0x20, 0x1d, 0xfe, 0x96, 0x3a,
0xf0, 0xb7, 0xd4, 0x21, 0x93, 0x7f, 0xce, 0x6f, 0xae, 0x78, 0xc8, 0xfe, 0xae, 0xe1, 0x01, 0xec, 0x64, 0xf2, 0xcf, 0xf9, 0xea, 0x9a, 0x87, 0xec, 0xef, 0x1a, 0x1e, 0xc2, 0x6e, 0x51, 0x91, 0xc5,
0x14, 0x15, 0x59, 0xac, 0x7f, 0x68, 0x6a, 0x45, 0x99, 0xea, 0x2b, 0x3f, 0xe6, 0xec, 0x9f, 0xa9, 0xfa, 0x87, 0xa6, 0x56, 0x94, 0xa9, 0xbe, 0xf2, 0x63, 0xce, 0xfe, 0x99, 0x8a, 0xd5, 0x3e, 0xa8,
0x58, 0xed, 0x83, 0x0a, 0xf4, 0x2f, 0x0d, 0xb7, 0x61, 0x9c, 0x8b, 0x85, 0xed, 0xbf, 0x35, 0x9c, 0x40, 0xff, 0xd2, 0x70, 0x07, 0x46, 0xb9, 0x58, 0xd8, 0xfe, 0x5b, 0xc3, 0x31, 0xec, 0x95, 0x84,
0xc0, 0x6e, 0x49, 0xe8, 0x78, 0xcb, 0x4b, 0xaa, 0x3e, 0xf6, 0x1f, 0xed, 0xe8, 0x8f, 0x5d, 0xd8, 0x8e, 0xb7, 0xb8, 0xa2, 0xea, 0x63, 0xff, 0xd1, 0x8e, 0xff, 0xd8, 0x81, 0xad, 0xd3, 0xb3, 0x97,
0x3c, 0x39, 0x7d, 0x39, 0x3d, 0x09, 0xe4, 0x04, 0x74, 0x97, 0x3f, 0x97, 0x35, 0x87, 0x35, 0xff, 0x93, 0xd3, 0x40, 0x4e, 0x40, 0x77, 0xf9, 0x73, 0x59, 0x73, 0x58, 0xf3, 0xef, 0x7f, 0x5c, 0xd7,
0xfe, 0x27, 0x75, 0x4d, 0x36, 0x1e, 0xa9, 0xd2, 0xc4, 0xba, 0x47, 0x80, 0x49, 0x6d, 0xaf, 0x4d, 0x64, 0xe3, 0xb1, 0x2a, 0x4d, 0xac, 0x7b, 0x04, 0x18, 0xd7, 0xf6, 0xda, 0x34, 0x89, 0x6c, 0x6b,
0x93, 0xc8, 0xb6, 0xe6, 0xe1, 0x5b, 0xc0, 0xa4, 0xae, 0xe1, 0xc6, 0x9f, 0x16, 0x4a, 0x1d, 0x9b, 0x1e, 0xbe, 0x05, 0x8c, 0xeb, 0x1a, 0x6e, 0xfc, 0x69, 0xa1, 0xd4, 0xb1, 0xe9, 0x45, 0x60, 0xdc,
0x5e, 0x04, 0x26, 0x8d, 0xad, 0x37, 0xf9, 0xe7, 0x7d, 0x48, 0xd3, 0xbb, 0xc0, 0xa4, 0xb1, 0xff, 0xd8, 0x7a, 0x93, 0x7f, 0xde, 0x87, 0x34, 0xbd, 0x0b, 0x8c, 0x1b, 0xfb, 0x6f, 0x7c, 0x91, 0xb1,
0xc6, 0x17, 0x19, 0x7b, 0x60, 0xfd, 0xeb, 0xc0, 0xa4, 0xa1, 0x05, 0xa7, 0xed, 0x91, 0x3d, 0x44, 0x07, 0xd6, 0xbf, 0x0e, 0x8c, 0x1b, 0x5a, 0x70, 0xda, 0x1e, 0xd9, 0x43, 0xd4, 0xfd, 0xe9, 0x1f,
0xdd, 0x9f, 0xfe, 0x49, 0x6d, 0x57, 0x4d, 0x3e, 0xb2, 0x37, 0xa8, 0xfb, 0x37, 0x3d, 0xa9, 0x6d, 0xd7, 0x76, 0xd5, 0xe4, 0x23, 0x7b, 0x83, 0xba, 0x7f, 0xd3, 0xe3, 0xda, 0x56, 0x15, 0x3f, 0x4e,
0x55, 0xf1, 0xe3, 0x94, 0xd2, 0xb0, 0xf6, 0x31, 0x62, 0x52, 0xdf, 0xef, 0xd3, 0xc6, 0xe4, 0x7f, 0x29, 0x0d, 0x6b, 0x1f, 0x23, 0xc6, 0xf5, 0xfd, 0x3e, 0x6d, 0x4c, 0xfe, 0x37, 0xb2, 0xe9, 0x95,
0x23, 0x9b, 0x5e, 0x19, 0x26, 0x8d, 0x9d, 0x3c, 0x9e, 0x14, 0x39, 0x12, 0x1b, 0xdf, 0x1a, 0x26, 0x61, 0xdc, 0xd8, 0xc9, 0xe3, 0x69, 0x91, 0x23, 0xb1, 0xf1, 0xad, 0x61, 0xdc, 0xdc, 0xcf, 0xe3,
0xcd, 0xfd, 0x3c, 0x7e, 0x92, 0xd3, 0x2a, 0x36, 0xbc, 0x38, 0x4c, 0x9a, 0x5a, 0xfa, 0xab, 0x9e, 0x27, 0x39, 0xad, 0x62, 0xc3, 0x8b, 0xc3, 0xb8, 0xa9, 0xa5, 0xbf, 0xee, 0x8a, 0xc7, 0xac, 0x8f,
0x78, 0xcc, 0xfa, 0xe8, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xce, 0x8c, 0x71, 0x92, 0xe1, 0x12, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x2e, 0xe2, 0x17, 0xe1, 0x12, 0x00, 0x00,
0x00, 0x00,
} }

View File

@ -120,7 +120,7 @@ message RequestQuery{
message RequestProof{ message RequestProof{
bytes key = 1; bytes key = 1;
int64 height = 2; uint64 height = 2;
} }
message RequestCommit{ message RequestCommit{