forked from cerc-io/laconicd-deprecated
rpc, evm: debug_traceTransaction endpoint (#506)
* fix typo * Added tracers package to debug API * Add GetTransactionByHash function to backend package * first version * traceTransaction first version * clean PR * revert debug changes * Update proto/ethermint/evm/v1/query.proto Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * remove unnecesary panic * remove internal debug api * trace transaction javascript tracer * add support for custom logConfig * added comment * traceTransactions tests * fix linter * remove unused * add comments to traceConfig * update dependencies * updated endpoints md * Apply suggestions from code review * Update x/evm/keeper/grpc_query.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * Update x/evm/keeper/grpc_query.go Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
This commit is contained in:
co-authored by
Federico Kunze Küllmer
parent
6794daf014
commit
c7554e96aa
@@ -5,6 +5,10 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"math/big"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/eth/tracers"
|
||||
|
||||
"github.com/palantir/stacktrace"
|
||||
"google.golang.org/grpc/codes"
|
||||
@@ -28,6 +32,10 @@ import (
|
||||
|
||||
var _ types.QueryServer = Keeper{}
|
||||
|
||||
const (
|
||||
defaultTraceTimeout = 5 * time.Second
|
||||
)
|
||||
|
||||
// Account implements the Query/Account gRPC method
|
||||
func (k Keeper) Account(c context.Context, req *types.QueryAccountRequest) (*types.QueryAccountResponse, error) {
|
||||
if req == nil {
|
||||
@@ -449,3 +457,115 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type
|
||||
}
|
||||
return &types.EstimateGasResponse{Gas: hi}, nil
|
||||
}
|
||||
|
||||
// TraceTx configures a new tracer according to the provided configuration, and
|
||||
// executes the given message in the provided environment. The return value will
|
||||
// be tracer dependent.
|
||||
func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*types.QueryTraceTxResponse, error) {
|
||||
// Assemble the structured logger or the JavaScript tracer
|
||||
var (
|
||||
tracer vm.Tracer
|
||||
err error
|
||||
resultData []byte
|
||||
)
|
||||
|
||||
ctx := sdk.UnwrapSDKContext(c)
|
||||
k.WithContext(ctx)
|
||||
params := k.GetParams(ctx)
|
||||
|
||||
coinbase, err := k.GetCoinbaseAddress(ctx)
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
ethCfg := params.ChainConfig.EthereumConfig(k.eip155ChainID)
|
||||
signer := ethtypes.MakeSigner(ethCfg, big.NewInt(ctx.BlockHeight()))
|
||||
coreMessage, err := req.Msg.AsMessage(signer)
|
||||
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
switch {
|
||||
case req.TraceConfig != nil && req.TraceConfig.Tracer != "":
|
||||
timeout := defaultTraceTimeout
|
||||
//TODO change timeout to time.duration
|
||||
//Used string to comply with go ethereum
|
||||
if req.TraceConfig.Timeout != "" {
|
||||
if timeout, err = time.ParseDuration(req.TraceConfig.Timeout); err != nil {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "timeout value: %s", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
txContext := core.NewEVMTxContext(coreMessage)
|
||||
// Constuct the JavaScript tracer to execute with
|
||||
if tracer, err = tracers.New(req.TraceConfig.Tracer, txContext); err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
// Handle timeouts and RPC cancellations
|
||||
deadlineCtx, cancel := context.WithTimeout(c, timeout)
|
||||
go func() {
|
||||
<-deadlineCtx.Done()
|
||||
if deadlineCtx.Err() == context.DeadlineExceeded {
|
||||
tracer.(*tracers.Tracer).Stop(errors.New("execution timeout"))
|
||||
}
|
||||
}()
|
||||
defer cancel()
|
||||
case req.TraceConfig != nil && req.TraceConfig.LogConfig != nil:
|
||||
logConfig := vm.LogConfig{
|
||||
DisableMemory: req.TraceConfig.LogConfig.DisableMemory,
|
||||
Debug: req.TraceConfig.LogConfig.Debug,
|
||||
DisableStorage: req.TraceConfig.LogConfig.DisableStorage,
|
||||
DisableStack: req.TraceConfig.LogConfig.DisableStack,
|
||||
}
|
||||
tracer = vm.NewStructLogger(&logConfig)
|
||||
default:
|
||||
tracer = types.NewTracer(types.TracerStruct, coreMessage, ethCfg, ctx.BlockHeight(), true)
|
||||
}
|
||||
|
||||
evm := k.NewEVM(coreMessage, ethCfg, params, coinbase, tracer)
|
||||
|
||||
k.SetTxHashTransient(common.HexToHash(req.Msg.Hash))
|
||||
k.SetTxIndexTransient(uint64(req.TxIndex))
|
||||
|
||||
res, err := k.ApplyMessage(evm, coreMessage, ethCfg, true)
|
||||
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
// Depending on the tracer type, format and return the trace result data.
|
||||
switch tracer := tracer.(type) {
|
||||
case *vm.StructLogger:
|
||||
//TODO Return proper returnValue
|
||||
result := types.ExecutionResult{
|
||||
Gas: res.GasUsed,
|
||||
Failed: res.Failed(),
|
||||
ReturnValue: "",
|
||||
StructLogs: types.FormatLogs(tracer.StructLogs()),
|
||||
}
|
||||
|
||||
resultData, err = json.Marshal(result)
|
||||
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
case *tracers.Tracer:
|
||||
result, err := tracer.GetResult()
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
resultData, err = json.Marshal(result)
|
||||
if err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
}
|
||||
default:
|
||||
return nil, status.Error(codes.InvalidArgument, "invalid tracer type")
|
||||
}
|
||||
|
||||
return &types.QueryTraceTxResponse{
|
||||
Data: resultData,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -758,3 +758,65 @@ func (suite *KeeperTestSuite) TestEstimateGas() {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (suite *KeeperTestSuite) TestTraceTx() {
|
||||
ctx := sdk.WrapSDKContext(suite.ctx)
|
||||
//TODO deploy contract that triggers internal transactions
|
||||
var (
|
||||
txMsg *types.MsgEthereumTx
|
||||
traceConfig *types.TraceConfig
|
||||
)
|
||||
|
||||
testCases := []struct {
|
||||
msg string
|
||||
malleate func()
|
||||
expPass bool
|
||||
traceResponse []byte
|
||||
}{
|
||||
{
|
||||
msg: "default trace",
|
||||
malleate: func() {
|
||||
traceConfig = nil
|
||||
},
|
||||
expPass: true,
|
||||
traceResponse: []byte{0x7b, 0x22, 0x67, 0x61, 0x73, 0x22, 0x3a, 0x33, 0x34, 0x38, 0x32, 0x38, 0x2c, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0x3a, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x22, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3a, 0x22, 0x22, 0x2c, 0x22, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x3a, 0x5b, 0x5d, 0x7d},
|
||||
}, {
|
||||
msg: "javascript tracer",
|
||||
malleate: func() {
|
||||
traceConfig = &types.TraceConfig{
|
||||
Tracer: "{data: [], fault: function(log) {}, step: function(log) { if(log.op.toString() == \"CALL\") this.data.push(log.stack.peek(0)); }, result: function() { return this.data; }}",
|
||||
}
|
||||
},
|
||||
expPass: true,
|
||||
traceResponse: []byte{0x5b, 0x5d},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
|
||||
suite.SetupTest()
|
||||
//Deploy contract
|
||||
contractAddr := suite.DeployTestContract(suite.T(), suite.address, sdk.NewIntWithDecimal(1000, 18).BigInt())
|
||||
suite.Commit()
|
||||
//Generate token transfer transaction
|
||||
txMsg = suite.TransferERC20Token(suite.T(), contractAddr, suite.address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), sdk.NewIntWithDecimal(1, 18).BigInt())
|
||||
suite.Commit()
|
||||
|
||||
tc.malleate()
|
||||
traceReq := types.QueryTraceTxRequest{
|
||||
Msg: txMsg,
|
||||
TraceConfig: traceConfig,
|
||||
TxIndex: 1, // Can be hardcoded as this will be the only tx included in the block
|
||||
}
|
||||
res, err := suite.queryClient.TraceTx(ctx, &traceReq)
|
||||
|
||||
if tc.expPass {
|
||||
suite.Require().NoError(err)
|
||||
suite.Require().Equal(tc.traceResponse, res.Data)
|
||||
} else {
|
||||
suite.Require().Error(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -200,6 +200,12 @@ func (k Keeper) SetTxHashTransient(hash common.Hash) {
|
||||
store.Set(types.KeyPrefixTransientTxHash, hash.Bytes())
|
||||
}
|
||||
|
||||
// SetTxIndexTransient set the index of processing transaction
|
||||
func (k Keeper) SetTxIndexTransient(index uint64) {
|
||||
store := k.Ctx().TransientStore(k.transientKey)
|
||||
store.Set(types.KeyPrefixTransientTxIndex, sdk.Uint64ToBigEndian(index))
|
||||
}
|
||||
|
||||
// GetTxIndexTransient returns EVM transaction index on the current block.
|
||||
func (k Keeper) GetTxIndexTransient() uint64 {
|
||||
store := k.Ctx().TransientStore(k.transientKey)
|
||||
@@ -215,8 +221,7 @@ func (k Keeper) GetTxIndexTransient() uint64 {
|
||||
// value by one and then sets the new index back to the transient store.
|
||||
func (k Keeper) IncreaseTxIndexTransient() {
|
||||
txIndex := k.GetTxIndexTransient()
|
||||
store := k.Ctx().TransientStore(k.transientKey)
|
||||
store.Set(types.KeyPrefixTransientTxIndex, sdk.Uint64ToBigEndian(txIndex+1))
|
||||
k.SetTxIndexTransient(txIndex + 1)
|
||||
}
|
||||
|
||||
// ResetRefundTransient resets the available refund amount to 0
|
||||
|
||||
@@ -215,6 +215,40 @@ func (suite *KeeperTestSuite) DeployTestContract(t require.TestingT, owner commo
|
||||
return crypto.CreateAddress(suite.address, nonce)
|
||||
}
|
||||
|
||||
func (suite *KeeperTestSuite) TransferERC20Token(t require.TestingT, contractAddr common.Address, from common.Address, to common.Address, amount *big.Int) *types.MsgEthereumTx {
|
||||
ctx := sdk.WrapSDKContext(suite.ctx)
|
||||
chainID := suite.app.EvmKeeper.ChainID()
|
||||
|
||||
transferData, err := ContractABI.Pack("transfer", to, amount)
|
||||
require.NoError(t, err)
|
||||
args, err := json.Marshal(&types.CallArgs{To: &contractAddr, From: &from, Data: (*hexutil.Bytes)(&transferData)})
|
||||
require.NoError(t, err)
|
||||
res, err := suite.queryClient.EstimateGas(ctx, &types.EthCallRequest{
|
||||
Args: args,
|
||||
GasCap: 25_000_000,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
nonce := suite.app.EvmKeeper.GetNonce(suite.address)
|
||||
ercTransferTx := types.NewTx(
|
||||
chainID,
|
||||
nonce,
|
||||
&contractAddr,
|
||||
nil,
|
||||
res.Gas,
|
||||
nil,
|
||||
transferData,
|
||||
nil,
|
||||
)
|
||||
ercTransferTx.From = suite.address.Hex()
|
||||
err = ercTransferTx.Sign(ethtypes.LatestSignerForChainID(chainID), suite.signer)
|
||||
require.NoError(t, err)
|
||||
rsp, err := suite.app.EvmKeeper.EthereumTx(ctx, ercTransferTx)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, rsp.VmError)
|
||||
return ercTransferTx
|
||||
}
|
||||
|
||||
func TestKeeperTestSuite(t *testing.T) {
|
||||
suite.Run(t, new(KeeperTestSuite))
|
||||
}
|
||||
|
||||
+840
-80
@@ -512,6 +512,179 @@ func (m *AccessTuple) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_AccessTuple proto.InternalMessageInfo
|
||||
|
||||
// TraceConfig holds extra parameters to trace functions.
|
||||
type TraceConfig struct {
|
||||
// custom javascript tracer
|
||||
Tracer string `protobuf:"bytes,1,opt,name=tracer,proto3" json:"tracer,omitempty"`
|
||||
// overrides the default timeout of 5 seconds for JavaScript-based tracing calls
|
||||
Timeout string `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
|
||||
// number of blocks the tracer is willing to go back
|
||||
Reexec uint64 `protobuf:"varint,3,opt,name=reexec,proto3" json:"reexec,omitempty"`
|
||||
// configuration options for structured logger the EVM
|
||||
LogConfig *LogConfig `protobuf:"bytes,4,opt,name=log_config,json=logConfig,proto3" json:"logConfig"`
|
||||
}
|
||||
|
||||
func (m *TraceConfig) Reset() { *m = TraceConfig{} }
|
||||
func (m *TraceConfig) String() string { return proto.CompactTextString(m) }
|
||||
func (*TraceConfig) ProtoMessage() {}
|
||||
func (*TraceConfig) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_d21ecc92c8c8583e, []int{7}
|
||||
}
|
||||
func (m *TraceConfig) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
}
|
||||
func (m *TraceConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
if deterministic {
|
||||
return xxx_messageInfo_TraceConfig.Marshal(b, m, deterministic)
|
||||
} else {
|
||||
b = b[:cap(b)]
|
||||
n, err := m.MarshalToSizedBuffer(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return b[:n], nil
|
||||
}
|
||||
}
|
||||
func (m *TraceConfig) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_TraceConfig.Merge(m, src)
|
||||
}
|
||||
func (m *TraceConfig) XXX_Size() int {
|
||||
return m.Size()
|
||||
}
|
||||
func (m *TraceConfig) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_TraceConfig.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_TraceConfig proto.InternalMessageInfo
|
||||
|
||||
func (m *TraceConfig) GetTracer() string {
|
||||
if m != nil {
|
||||
return m.Tracer
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetTimeout() string {
|
||||
if m != nil {
|
||||
return m.Timeout
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetReexec() uint64 {
|
||||
if m != nil {
|
||||
return m.Reexec
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetLogConfig() *LogConfig {
|
||||
if m != nil {
|
||||
return m.LogConfig
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// LogConfig are the configuration options for structured logger the EVM
|
||||
type LogConfig struct {
|
||||
// disable memory capture
|
||||
DisableMemory bool `protobuf:"varint,1,opt,name=disable_memory,json=disableMemory,proto3" json:"disableMemory"`
|
||||
// disable stack capture
|
||||
DisableStack bool `protobuf:"varint,2,opt,name=disable_stack,json=disableStack,proto3" json:"disableStack"`
|
||||
// disable storage capture
|
||||
DisableStorage bool `protobuf:"varint,3,opt,name=disable_storage,json=disableStorage,proto3" json:"disableStorage"`
|
||||
// disable return data capture
|
||||
DisableReturnData bool `protobuf:"varint,4,opt,name=disable_return_data,json=disableReturnData,proto3" json:"disableReturnData"`
|
||||
// print output during capture end
|
||||
Debug bool `protobuf:"varint,5,opt,name=debug,proto3" json:"debug,omitempty"`
|
||||
// maximum length of output, but zero means unlimited
|
||||
Limit int32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"`
|
||||
// Chain overrides, can be used to execute a trace using future fork rules
|
||||
Overrides *ChainConfig `protobuf:"bytes,7,opt,name=overrides,proto3" json:"overrides,omitempty"`
|
||||
}
|
||||
|
||||
func (m *LogConfig) Reset() { *m = LogConfig{} }
|
||||
func (m *LogConfig) String() string { return proto.CompactTextString(m) }
|
||||
func (*LogConfig) ProtoMessage() {}
|
||||
func (*LogConfig) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_d21ecc92c8c8583e, []int{8}
|
||||
}
|
||||
func (m *LogConfig) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
}
|
||||
func (m *LogConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
if deterministic {
|
||||
return xxx_messageInfo_LogConfig.Marshal(b, m, deterministic)
|
||||
} else {
|
||||
b = b[:cap(b)]
|
||||
n, err := m.MarshalToSizedBuffer(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return b[:n], nil
|
||||
}
|
||||
}
|
||||
func (m *LogConfig) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_LogConfig.Merge(m, src)
|
||||
}
|
||||
func (m *LogConfig) XXX_Size() int {
|
||||
return m.Size()
|
||||
}
|
||||
func (m *LogConfig) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_LogConfig.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_LogConfig proto.InternalMessageInfo
|
||||
|
||||
func (m *LogConfig) GetDisableMemory() bool {
|
||||
if m != nil {
|
||||
return m.DisableMemory
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *LogConfig) GetDisableStack() bool {
|
||||
if m != nil {
|
||||
return m.DisableStack
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *LogConfig) GetDisableStorage() bool {
|
||||
if m != nil {
|
||||
return m.DisableStorage
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *LogConfig) GetDisableReturnData() bool {
|
||||
if m != nil {
|
||||
return m.DisableReturnData
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *LogConfig) GetDebug() bool {
|
||||
if m != nil {
|
||||
return m.Debug
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *LogConfig) GetLimit() int32 {
|
||||
if m != nil {
|
||||
return m.Limit
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *LogConfig) GetOverrides() *ChainConfig {
|
||||
if m != nil {
|
||||
return m.Overrides
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*Params)(nil), "ethermint.evm.v1.Params")
|
||||
proto.RegisterType((*ChainConfig)(nil), "ethermint.evm.v1.ChainConfig")
|
||||
@@ -520,91 +693,105 @@ func init() {
|
||||
proto.RegisterType((*Log)(nil), "ethermint.evm.v1.Log")
|
||||
proto.RegisterType((*TxResult)(nil), "ethermint.evm.v1.TxResult")
|
||||
proto.RegisterType((*AccessTuple)(nil), "ethermint.evm.v1.AccessTuple")
|
||||
proto.RegisterType((*TraceConfig)(nil), "ethermint.evm.v1.TraceConfig")
|
||||
proto.RegisterType((*LogConfig)(nil), "ethermint.evm.v1.LogConfig")
|
||||
}
|
||||
|
||||
func init() { proto.RegisterFile("ethermint/evm/v1/evm.proto", fileDescriptor_d21ecc92c8c8583e) }
|
||||
|
||||
var fileDescriptor_d21ecc92c8c8583e = []byte{
|
||||
// 1249 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x96, 0x4f, 0x6f, 0xdb, 0xb6,
|
||||
0x1b, 0xc7, 0xe3, 0xd8, 0x49, 0x64, 0x4a, 0xb6, 0x55, 0xd6, 0xcd, 0xcf, 0x6d, 0xf1, 0x8b, 0x32,
|
||||
0x1e, 0x06, 0x0f, 0x68, 0xe3, 0x26, 0x45, 0xb0, 0xa2, 0xc0, 0x0e, 0x71, 0x9a, 0x76, 0xe9, 0x8a,
|
||||
0x2d, 0x60, 0x3b, 0x0c, 0x18, 0x30, 0x08, 0xb4, 0xc4, 0xca, 0x5a, 0x24, 0xd1, 0x10, 0x69, 0xcf,
|
||||
0x1e, 0xf6, 0x02, 0x06, 0xec, 0xb2, 0xe3, 0x0e, 0x3b, 0xec, 0xe5, 0x14, 0x3b, 0xf5, 0x38, 0x6c,
|
||||
0x80, 0x30, 0xb8, 0xb7, 0x1c, 0xfd, 0x0a, 0x06, 0x91, 0xf4, 0xdf, 0x14, 0xc3, 0x92, 0x93, 0xf8,
|
||||
0x3c, 0x7c, 0xf8, 0xfd, 0x90, 0x0f, 0x1f, 0x91, 0x04, 0x77, 0xa8, 0xe8, 0xd2, 0x34, 0x0e, 0x13,
|
||||
0xd1, 0xa2, 0x83, 0xb8, 0x35, 0xd8, 0xcf, 0x3f, 0x7b, 0xbd, 0x94, 0x09, 0x06, 0xed, 0x59, 0xdf,
|
||||
0x5e, 0xee, 0x1c, 0xec, 0xdf, 0xa9, 0x07, 0x2c, 0x60, 0xb2, 0xb3, 0x95, 0xb7, 0x54, 0x1c, 0xfa,
|
||||
0x6b, 0x1d, 0x6c, 0x9e, 0x91, 0x94, 0xc4, 0x1c, 0xee, 0x83, 0x32, 0x1d, 0xc4, 0xae, 0x4f, 0x13,
|
||||
0x16, 0x37, 0x0a, 0xbb, 0x85, 0x66, 0xb9, 0x5d, 0x9f, 0x64, 0x8e, 0x3d, 0x22, 0x71, 0xf4, 0x18,
|
||||
0xcd, 0xba, 0x10, 0x36, 0xe8, 0x20, 0x7e, 0x92, 0x37, 0xe1, 0x27, 0xa0, 0x42, 0x13, 0xd2, 0x89,
|
||||
0xa8, 0xeb, 0xa5, 0x94, 0x08, 0xda, 0x58, 0xdf, 0x2d, 0x34, 0x8d, 0x76, 0x63, 0x92, 0x39, 0x75,
|
||||
0x3d, 0x6c, 0xb1, 0x1b, 0x61, 0x4b, 0xd9, 0xc7, 0xd2, 0x84, 0x1f, 0x03, 0x73, 0xda, 0x4f, 0xa2,
|
||||
0xa8, 0x51, 0x94, 0x83, 0xb7, 0x27, 0x99, 0x03, 0x97, 0x07, 0x93, 0x28, 0x42, 0x18, 0xe8, 0xa1,
|
||||
0x24, 0x8a, 0xe0, 0x11, 0x00, 0x74, 0x28, 0x52, 0xe2, 0xd2, 0xb0, 0xc7, 0x1b, 0xa5, 0xdd, 0x62,
|
||||
0xb3, 0xd8, 0x46, 0xe3, 0xcc, 0x29, 0x9f, 0xe4, 0xde, 0x93, 0xd3, 0x33, 0x3e, 0xc9, 0x9c, 0x1b,
|
||||
0x5a, 0x64, 0x16, 0x88, 0x70, 0x59, 0x1a, 0x27, 0x61, 0x8f, 0xc3, 0x6f, 0x80, 0xe5, 0x75, 0x49,
|
||||
0x98, 0xb8, 0x1e, 0x4b, 0x5e, 0x87, 0x41, 0x63, 0x63, 0xb7, 0xd0, 0x34, 0x0f, 0xfe, 0xbf, 0xb7,
|
||||
0x9a, 0xb7, 0xbd, 0xe3, 0x3c, 0xea, 0x58, 0x06, 0xb5, 0xef, 0xbe, 0xc9, 0x9c, 0xb5, 0x49, 0xe6,
|
||||
0xdc, 0x54, 0xd2, 0x8b, 0x02, 0x08, 0x9b, 0xde, 0x3c, 0xf2, 0x71, 0xe9, 0x97, 0xdf, 0x9c, 0x35,
|
||||
0xf4, 0x6b, 0x05, 0x98, 0x0b, 0xe3, 0x61, 0x0c, 0x6a, 0x5d, 0x16, 0x53, 0x2e, 0x28, 0xf1, 0xdd,
|
||||
0x4e, 0xc4, 0xbc, 0x73, 0x9d, 0xe8, 0x27, 0x7f, 0x66, 0xce, 0x87, 0x41, 0x28, 0xba, 0xfd, 0xce,
|
||||
0x9e, 0xc7, 0xe2, 0x96, 0xc7, 0x78, 0xcc, 0xb8, 0xfe, 0xdc, 0xe7, 0xfe, 0x79, 0x4b, 0x8c, 0x7a,
|
||||
0x94, 0xef, 0x9d, 0x26, 0x62, 0x92, 0x39, 0xdb, 0x0a, 0xbf, 0x22, 0x85, 0x70, 0x75, 0xe6, 0x69,
|
||||
0xe7, 0x0e, 0x38, 0x02, 0x55, 0x9f, 0x30, 0xf7, 0x35, 0x4b, 0xcf, 0x35, 0x6d, 0x5d, 0xd2, 0x5e,
|
||||
0xfe, 0x77, 0xda, 0x38, 0x73, 0xac, 0x27, 0x47, 0x5f, 0x3c, 0x65, 0xe9, 0xb9, 0xd4, 0x9c, 0x64,
|
||||
0xce, 0x2d, 0x45, 0x5f, 0x56, 0x46, 0xd8, 0xf2, 0x09, 0x9b, 0x85, 0xc1, 0xaf, 0x80, 0x3d, 0x0b,
|
||||
0xe0, 0xfd, 0x5e, 0x8f, 0xa5, 0x42, 0xef, 0xef, 0xfd, 0x71, 0xe6, 0x54, 0xb5, 0xe4, 0x4b, 0xd5,
|
||||
0x33, 0xc9, 0x9c, 0xff, 0xad, 0x88, 0xea, 0x31, 0x08, 0x57, 0xb5, 0xac, 0x0e, 0x85, 0x1c, 0x58,
|
||||
0x34, 0xec, 0xed, 0x1f, 0x3e, 0xd0, 0x2b, 0x2a, 0xc9, 0x15, 0x9d, 0x5d, 0x69, 0x45, 0xe6, 0xc9,
|
||||
0xe9, 0xd9, 0xfe, 0xe1, 0x83, 0xe9, 0x82, 0xf4, 0x6e, 0x2e, 0xca, 0x22, 0x6c, 0x2a, 0x53, 0xad,
|
||||
0xe6, 0x14, 0x68, 0xd3, 0xed, 0x12, 0xde, 0x95, 0xb5, 0x52, 0x6e, 0x37, 0xc7, 0x99, 0x03, 0x94,
|
||||
0xd2, 0xa7, 0x84, 0x77, 0xe7, 0xfb, 0xd2, 0x19, 0x7d, 0x4f, 0x12, 0x11, 0xf6, 0xe3, 0xa9, 0x16,
|
||||
0x50, 0x83, 0xf3, 0xa8, 0xd9, 0xfc, 0x0f, 0xf5, 0xfc, 0x37, 0xaf, 0x3d, 0xff, 0xc3, 0xf7, 0xcd,
|
||||
0xff, 0x70, 0x79, 0xfe, 0x2a, 0x66, 0x06, 0x7d, 0xa4, 0xa1, 0x5b, 0xd7, 0x86, 0x3e, 0x7a, 0x1f,
|
||||
0xf4, 0xd1, 0x32, 0x54, 0xc5, 0xe4, 0xc5, 0xbe, 0x92, 0x89, 0x86, 0x71, 0xfd, 0x62, 0xbf, 0x94,
|
||||
0xd4, 0xea, 0xcc, 0xa3, 0x70, 0x3f, 0x80, 0xba, 0xc7, 0x12, 0x2e, 0x72, 0x5f, 0xc2, 0x7a, 0x11,
|
||||
0xd5, 0xcc, 0xb2, 0x64, 0x9e, 0x5e, 0x89, 0x79, 0x57, 0xff, 0xdf, 0xef, 0xd1, 0x43, 0xf8, 0xe6,
|
||||
0xb2, 0x5b, 0xd1, 0x7b, 0xc0, 0xee, 0x51, 0x41, 0x53, 0xde, 0xe9, 0xa7, 0x81, 0x26, 0x03, 0x49,
|
||||
0x3e, 0xb9, 0x12, 0x59, 0xff, 0x07, 0xab, 0x5a, 0x08, 0xd7, 0xe6, 0x2e, 0x45, 0xfc, 0x16, 0x54,
|
||||
0xc3, 0x7c, 0x1a, 0x9d, 0x7e, 0xa4, 0x79, 0xa6, 0xe4, 0x1d, 0x5f, 0x89, 0xa7, 0x7f, 0xe6, 0x65,
|
||||
0x25, 0x84, 0x2b, 0x53, 0x87, 0x62, 0xf5, 0x01, 0x8c, 0xfb, 0x61, 0xea, 0x06, 0x11, 0xf1, 0x42,
|
||||
0x9a, 0x6a, 0x9e, 0x25, 0x79, 0xcf, 0xae, 0xc4, 0xbb, 0xad, 0x78, 0x97, 0xd5, 0x10, 0xb6, 0x73,
|
||||
0xe7, 0x33, 0xe5, 0x53, 0x58, 0x1f, 0x58, 0x1d, 0x9a, 0x46, 0x61, 0xa2, 0x81, 0x15, 0x09, 0x3c,
|
||||
0xba, 0x12, 0x50, 0xd7, 0xe9, 0xa2, 0x0e, 0xc2, 0xa6, 0x32, 0x67, 0x89, 0xf4, 0x88, 0x20, 0xd1,
|
||||
0x88, 0x0b, 0xcd, 0xb1, 0xaf, 0x9f, 0xc8, 0x65, 0x25, 0x84, 0x2b, 0x53, 0xc7, 0x6c, 0x45, 0x11,
|
||||
0x4b, 0x7c, 0x36, 0x5d, 0xd1, 0x8d, 0xeb, 0xaf, 0x68, 0x51, 0x07, 0x61, 0x53, 0x99, 0x92, 0xf2,
|
||||
0xbc, 0x64, 0x54, 0xed, 0xda, 0xf3, 0x92, 0x51, 0xb3, 0x6d, 0x5c, 0x19, 0xb1, 0x88, 0xb9, 0x83,
|
||||
0x87, 0x2a, 0x10, 0x9b, 0xf4, 0x3b, 0xc2, 0xa7, 0xff, 0x50, 0x0b, 0x6c, 0xbc, 0x14, 0xf9, 0x45,
|
||||
0x6c, 0x83, 0xe2, 0x39, 0x1d, 0xa9, 0xbb, 0x08, 0xe7, 0x4d, 0x58, 0x07, 0x1b, 0x03, 0x12, 0xf5,
|
||||
0xd5, 0x8d, 0x5e, 0xc6, 0xca, 0x40, 0x67, 0xa0, 0xf6, 0x2a, 0x25, 0x09, 0x27, 0x9e, 0x08, 0x59,
|
||||
0xf2, 0x82, 0x05, 0x1c, 0x42, 0x50, 0x92, 0x67, 0xa2, 0x1a, 0x2b, 0xdb, 0xf0, 0x23, 0x50, 0x8a,
|
||||
0x58, 0xc0, 0x1b, 0xeb, 0xbb, 0xc5, 0xa6, 0x79, 0x70, 0xeb, 0xf2, 0x9d, 0xfa, 0x82, 0x05, 0x58,
|
||||
0x86, 0xa0, 0xdf, 0xd7, 0x41, 0xf1, 0x05, 0x0b, 0x60, 0x03, 0x6c, 0x11, 0xdf, 0x4f, 0x29, 0xe7,
|
||||
0x5a, 0x69, 0x6a, 0xc2, 0x6d, 0xb0, 0x29, 0x58, 0x2f, 0xf4, 0x94, 0x5c, 0x19, 0x6b, 0x2b, 0x07,
|
||||
0xfb, 0x44, 0x10, 0x79, 0xab, 0x58, 0x58, 0xb6, 0xe1, 0x01, 0xb0, 0xe4, 0xca, 0xdc, 0xa4, 0x1f,
|
||||
0x77, 0x68, 0x2a, 0x2f, 0x87, 0x52, 0xbb, 0x76, 0x91, 0x39, 0xa6, 0xf4, 0x7f, 0x2e, 0xdd, 0x78,
|
||||
0xd1, 0x80, 0xf7, 0xc0, 0x96, 0x18, 0x2e, 0x9e, 0xeb, 0x37, 0x2f, 0x32, 0xa7, 0x26, 0xe6, 0xcb,
|
||||
0xcc, 0x8f, 0x6d, 0xbc, 0x29, 0x86, 0xf2, 0xf8, 0x6e, 0x01, 0x43, 0x0c, 0xdd, 0x30, 0xf1, 0xe9,
|
||||
0x50, 0x1e, 0xdd, 0xa5, 0x76, 0xfd, 0x22, 0x73, 0xec, 0x85, 0xf0, 0xd3, 0xbc, 0x0f, 0x6f, 0x89,
|
||||
0xa1, 0x6c, 0xc0, 0x7b, 0x00, 0xa8, 0x29, 0x49, 0x82, 0x3a, 0x78, 0x2b, 0x17, 0x99, 0x53, 0x96,
|
||||
0x5e, 0xa9, 0x3d, 0x6f, 0x42, 0x04, 0x36, 0x94, 0xb6, 0x21, 0xb5, 0xad, 0x8b, 0xcc, 0x31, 0x22,
|
||||
0x16, 0x28, 0x4d, 0xd5, 0x95, 0xa7, 0x2a, 0xa5, 0x31, 0x1b, 0x50, 0x5f, 0x9e, 0x6d, 0x06, 0x9e,
|
||||
0x9a, 0xe8, 0xa7, 0x75, 0x60, 0xbc, 0x1a, 0x62, 0xca, 0xfb, 0x91, 0x80, 0x4f, 0x81, 0xed, 0xb1,
|
||||
0x44, 0xa4, 0xc4, 0x13, 0xee, 0x52, 0x6a, 0xdb, 0x77, 0xe7, 0xe7, 0xcc, 0x6a, 0x04, 0xc2, 0xb5,
|
||||
0xa9, 0xeb, 0x48, 0xe7, 0xbf, 0x0e, 0x36, 0x3a, 0x11, 0x63, 0xb1, 0xac, 0x04, 0x0b, 0x2b, 0x03,
|
||||
0x62, 0x99, 0x35, 0xb9, 0xcb, 0x45, 0xf9, 0x72, 0xfa, 0xe0, 0xf2, 0x2e, 0xaf, 0x94, 0x4a, 0x7b,
|
||||
0x5b, 0xbf, 0x9e, 0xaa, 0x8a, 0xad, 0xc7, 0xa3, 0x3c, 0xb7, 0xb2, 0x94, 0x6c, 0x50, 0x4c, 0xa9,
|
||||
0x90, 0x9b, 0x66, 0xe1, 0xbc, 0x09, 0xef, 0x00, 0x23, 0xa5, 0x03, 0x9a, 0x0a, 0xea, 0xcb, 0xcd,
|
||||
0x31, 0xf0, 0xcc, 0x86, 0xb7, 0x81, 0x11, 0x10, 0xee, 0xf6, 0x39, 0xf5, 0xd5, 0x4e, 0xe0, 0xad,
|
||||
0x80, 0xf0, 0x2f, 0x39, 0xf5, 0x1f, 0x97, 0x7e, 0xcc, 0x1f, 0x5f, 0x04, 0x98, 0x47, 0x9e, 0x47,
|
||||
0x39, 0x7f, 0xd5, 0xef, 0x45, 0xf4, 0x5f, 0x2a, 0xec, 0x00, 0x58, 0x5c, 0xb0, 0x94, 0x04, 0xd4,
|
||||
0x3d, 0xa7, 0x23, 0x5d, 0x67, 0xaa, 0x6a, 0xb4, 0xff, 0x33, 0x3a, 0xe2, 0x78, 0xd1, 0x50, 0x88,
|
||||
0x76, 0xfb, 0xcd, 0x78, 0xa7, 0xf0, 0x76, 0xbc, 0x53, 0xf8, 0x7b, 0xbc, 0x53, 0xf8, 0xf9, 0xdd,
|
||||
0xce, 0xda, 0xdb, 0x77, 0x3b, 0x6b, 0x7f, 0xbc, 0xdb, 0x59, 0xfb, 0xba, 0xb9, 0xf0, 0x3b, 0x8b,
|
||||
0x2e, 0x49, 0x79, 0xc8, 0x5b, 0xf3, 0xe7, 0xfa, 0x50, 0x3e, 0xd8, 0xe5, 0x4f, 0xdd, 0xd9, 0x94,
|
||||
0x0f, 0xf1, 0x87, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x5c, 0x6d, 0xc5, 0xce, 0x0b, 0x00,
|
||||
0x00,
|
||||
// 1455 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4d, 0x6f, 0x1b, 0x37,
|
||||
0x1a, 0xb6, 0x2c, 0xd9, 0x1e, 0x51, 0x9f, 0xa6, 0x1d, 0xaf, 0x12, 0x63, 0x3d, 0xde, 0x39, 0x2c,
|
||||
0xbc, 0x40, 0x62, 0xc5, 0x0e, 0x8c, 0x35, 0x12, 0xec, 0xc1, 0xb2, 0x9d, 0xac, 0xb3, 0xd9, 0x5d,
|
||||
0x83, 0xf6, 0x62, 0x81, 0x02, 0xc5, 0x80, 0x9a, 0x61, 0x46, 0x53, 0xcf, 0x0c, 0x05, 0x92, 0xa3,
|
||||
0x4a, 0x45, 0x7f, 0x40, 0x81, 0x5e, 0x7a, 0xec, 0xa1, 0x87, 0xa2, 0xbf, 0x26, 0xe8, 0x29, 0xc7,
|
||||
0xa2, 0x05, 0x06, 0x85, 0x73, 0xaa, 0x8e, 0xfa, 0x05, 0xc5, 0x90, 0x1c, 0x7d, 0xd9, 0x68, 0x6b,
|
||||
0x9f, 0xc4, 0xe7, 0xfd, 0x78, 0x1e, 0xf2, 0xe5, 0x4b, 0x0e, 0x05, 0x1e, 0x11, 0xd1, 0x21, 0x2c,
|
||||
0xf4, 0x23, 0xd1, 0x24, 0xbd, 0xb0, 0xd9, 0xdb, 0x4b, 0x7f, 0x76, 0xbb, 0x8c, 0x0a, 0x0a, 0xeb,
|
||||
0x63, 0xdf, 0x6e, 0x6a, 0xec, 0xed, 0x3d, 0x5a, 0xf7, 0xa8, 0x47, 0xa5, 0xb3, 0x99, 0x8e, 0x54,
|
||||
0x9c, 0xf5, 0xd3, 0x22, 0x58, 0x3e, 0xc7, 0x0c, 0x87, 0x1c, 0xee, 0x81, 0x22, 0xe9, 0x85, 0xb6,
|
||||
0x4b, 0x22, 0x1a, 0x36, 0x72, 0xdb, 0xb9, 0x9d, 0x62, 0x6b, 0x7d, 0x94, 0x98, 0xf5, 0x01, 0x0e,
|
||||
0x83, 0xe7, 0xd6, 0xd8, 0x65, 0x21, 0x83, 0xf4, 0xc2, 0x93, 0x74, 0x08, 0xff, 0x01, 0x2a, 0x24,
|
||||
0xc2, 0xed, 0x80, 0xd8, 0x0e, 0x23, 0x58, 0x90, 0xc6, 0xe2, 0x76, 0x6e, 0xc7, 0x68, 0x35, 0x46,
|
||||
0x89, 0xb9, 0xae, 0xd3, 0xa6, 0xdd, 0x16, 0x2a, 0x2b, 0x7c, 0x2c, 0x21, 0xfc, 0x3b, 0x28, 0x65,
|
||||
0x7e, 0x1c, 0x04, 0x8d, 0xbc, 0x4c, 0xde, 0x18, 0x25, 0x26, 0x9c, 0x4d, 0xc6, 0x41, 0x60, 0x21,
|
||||
0xa0, 0x53, 0x71, 0x10, 0xc0, 0x23, 0x00, 0x48, 0x5f, 0x30, 0x6c, 0x13, 0xbf, 0xcb, 0x1b, 0x85,
|
||||
0xed, 0xfc, 0x4e, 0xbe, 0x65, 0x5d, 0x27, 0x66, 0xf1, 0x34, 0xb5, 0x9e, 0x9e, 0x9d, 0xf3, 0x51,
|
||||
0x62, 0xae, 0x6a, 0x92, 0x71, 0xa0, 0x85, 0x8a, 0x12, 0x9c, 0xfa, 0x5d, 0x0e, 0x3f, 0x06, 0x65,
|
||||
0xa7, 0x83, 0xfd, 0xc8, 0x76, 0x68, 0xf4, 0xd6, 0xf7, 0x1a, 0x4b, 0xdb, 0xb9, 0x9d, 0xd2, 0xfe,
|
||||
0x9f, 0x77, 0xe7, 0xeb, 0xb6, 0x7b, 0x9c, 0x46, 0x1d, 0xcb, 0xa0, 0xd6, 0xe6, 0xbb, 0xc4, 0x5c,
|
||||
0x18, 0x25, 0xe6, 0x9a, 0xa2, 0x9e, 0x26, 0xb0, 0x50, 0xc9, 0x99, 0x44, 0x3e, 0x2f, 0x7c, 0xfd,
|
||||
0xad, 0xb9, 0x60, 0x7d, 0x53, 0x01, 0xa5, 0xa9, 0x7c, 0x18, 0x82, 0x5a, 0x87, 0x86, 0x84, 0x0b,
|
||||
0x82, 0x5d, 0xbb, 0x1d, 0x50, 0xe7, 0x4a, 0x17, 0xfa, 0xe4, 0xc7, 0xc4, 0xfc, 0xab, 0xe7, 0x8b,
|
||||
0x4e, 0xdc, 0xde, 0x75, 0x68, 0xd8, 0x74, 0x28, 0x0f, 0x29, 0xd7, 0x3f, 0x4f, 0xb8, 0x7b, 0xd5,
|
||||
0x14, 0x83, 0x2e, 0xe1, 0xbb, 0x67, 0x91, 0x18, 0x25, 0xe6, 0x86, 0x92, 0x9f, 0xa3, 0xb2, 0x50,
|
||||
0x75, 0x6c, 0x69, 0xa5, 0x06, 0x38, 0x00, 0x55, 0x17, 0x53, 0xfb, 0x2d, 0x65, 0x57, 0x5a, 0x6d,
|
||||
0x51, 0xaa, 0x5d, 0xfc, 0x71, 0xb5, 0xeb, 0xc4, 0x2c, 0x9f, 0x1c, 0xfd, 0xf7, 0x25, 0x65, 0x57,
|
||||
0x92, 0x73, 0x94, 0x98, 0x0f, 0x94, 0xfa, 0x2c, 0xb3, 0x85, 0xca, 0x2e, 0xa6, 0xe3, 0x30, 0xf8,
|
||||
0x7f, 0x50, 0x1f, 0x07, 0xf0, 0xb8, 0xdb, 0xa5, 0x4c, 0xe8, 0xfd, 0x7d, 0x72, 0x9d, 0x98, 0x55,
|
||||
0x4d, 0x79, 0xa1, 0x3c, 0xa3, 0xc4, 0xfc, 0xd3, 0x1c, 0xa9, 0xce, 0xb1, 0x50, 0x55, 0xd3, 0xea,
|
||||
0x50, 0xc8, 0x41, 0x99, 0xf8, 0xdd, 0xbd, 0x83, 0xa7, 0x7a, 0x45, 0x05, 0xb9, 0xa2, 0xf3, 0x3b,
|
||||
0xad, 0xa8, 0x74, 0x7a, 0x76, 0xbe, 0x77, 0xf0, 0x34, 0x5b, 0x90, 0xde, 0xcd, 0x69, 0x5a, 0x0b,
|
||||
0x95, 0x14, 0x54, 0xab, 0x39, 0x03, 0x1a, 0xda, 0x1d, 0xcc, 0x3b, 0xb2, 0x57, 0x8a, 0xad, 0x9d,
|
||||
0xeb, 0xc4, 0x04, 0x8a, 0xe9, 0x9f, 0x98, 0x77, 0x26, 0xfb, 0xd2, 0x1e, 0x7c, 0x86, 0x23, 0xe1,
|
||||
0xc7, 0x61, 0xc6, 0x05, 0x54, 0x72, 0x1a, 0x35, 0x9e, 0xff, 0x81, 0x9e, 0xff, 0xf2, 0xbd, 0xe7,
|
||||
0x7f, 0x70, 0xdb, 0xfc, 0x0f, 0x66, 0xe7, 0xaf, 0x62, 0xc6, 0xa2, 0x87, 0x5a, 0x74, 0xe5, 0xde,
|
||||
0xa2, 0x87, 0xb7, 0x89, 0x1e, 0xce, 0x8a, 0xaa, 0x98, 0xb4, 0xd9, 0xe7, 0x2a, 0xd1, 0x30, 0xee,
|
||||
0xdf, 0xec, 0x37, 0x8a, 0x5a, 0x1d, 0x5b, 0x94, 0xdc, 0xe7, 0x60, 0xdd, 0xa1, 0x11, 0x17, 0xa9,
|
||||
0x2d, 0xa2, 0xdd, 0x80, 0x68, 0xcd, 0xa2, 0xd4, 0x3c, 0xbb, 0x93, 0xe6, 0xa6, 0x3e, 0xdf, 0xb7,
|
||||
0xf0, 0x59, 0x68, 0x6d, 0xd6, 0xac, 0xd4, 0xbb, 0xa0, 0xde, 0x25, 0x82, 0x30, 0xde, 0x8e, 0x99,
|
||||
0xa7, 0x95, 0x81, 0x54, 0x3e, 0xbd, 0x93, 0xb2, 0x3e, 0x07, 0xf3, 0x5c, 0x16, 0xaa, 0x4d, 0x4c,
|
||||
0x4a, 0xf1, 0x13, 0x50, 0xf5, 0xd3, 0x69, 0xb4, 0xe3, 0x40, 0xeb, 0x95, 0xa4, 0xde, 0xf1, 0x9d,
|
||||
0xf4, 0xf4, 0x61, 0x9e, 0x65, 0xb2, 0x50, 0x25, 0x33, 0x28, 0xad, 0x18, 0xc0, 0x30, 0xf6, 0x99,
|
||||
0xed, 0x05, 0xd8, 0xf1, 0x09, 0xd3, 0x7a, 0x65, 0xa9, 0xf7, 0xea, 0x4e, 0x7a, 0x0f, 0x95, 0xde,
|
||||
0x4d, 0x36, 0x0b, 0xd5, 0x53, 0xe3, 0x2b, 0x65, 0x53, 0xb2, 0x2e, 0x28, 0xb7, 0x09, 0x0b, 0xfc,
|
||||
0x48, 0x0b, 0x56, 0xa4, 0xe0, 0xd1, 0x9d, 0x04, 0x75, 0x9f, 0x4e, 0xf3, 0x58, 0xa8, 0xa4, 0xe0,
|
||||
0xb8, 0x90, 0x0e, 0x16, 0x38, 0x18, 0x70, 0xa1, 0x75, 0xea, 0xf7, 0x2f, 0xe4, 0x2c, 0x93, 0x85,
|
||||
0x2a, 0x99, 0x61, 0xbc, 0xa2, 0x80, 0x46, 0x2e, 0xcd, 0x56, 0xb4, 0x7a, 0xff, 0x15, 0x4d, 0xf3,
|
||||
0x58, 0xa8, 0xa4, 0xa0, 0x54, 0x79, 0x5d, 0x30, 0xaa, 0xf5, 0xda, 0xeb, 0x82, 0x51, 0xab, 0xd7,
|
||||
0x51, 0x65, 0x40, 0x03, 0x6a, 0xf7, 0x9e, 0xa9, 0x40, 0x54, 0x22, 0x9f, 0x62, 0x9e, 0x9d, 0xa1,
|
||||
0x26, 0x58, 0xba, 0x10, 0xe9, 0x87, 0xb8, 0x0e, 0xf2, 0x57, 0x64, 0xa0, 0xbe, 0x45, 0x28, 0x1d,
|
||||
0xc2, 0x75, 0xb0, 0xd4, 0xc3, 0x41, 0xac, 0xbe, 0xe8, 0x45, 0xa4, 0x80, 0x75, 0x0e, 0x6a, 0x97,
|
||||
0x0c, 0x47, 0x1c, 0x3b, 0xc2, 0xa7, 0xd1, 0x1b, 0xea, 0x71, 0x08, 0x41, 0x41, 0xde, 0x89, 0x2a,
|
||||
0x57, 0x8e, 0xe1, 0xdf, 0x40, 0x21, 0xa0, 0x1e, 0x6f, 0x2c, 0x6e, 0xe7, 0x77, 0x4a, 0xfb, 0x0f,
|
||||
0x6e, 0x7e, 0x53, 0xdf, 0x50, 0x0f, 0xc9, 0x10, 0xeb, 0xfb, 0x45, 0x90, 0x7f, 0x43, 0x3d, 0xd8,
|
||||
0x00, 0x2b, 0xd8, 0x75, 0x19, 0xe1, 0x5c, 0x33, 0x65, 0x10, 0x6e, 0x80, 0x65, 0x41, 0xbb, 0xbe,
|
||||
0xa3, 0xe8, 0x8a, 0x48, 0xa3, 0x54, 0xd8, 0xc5, 0x02, 0xcb, 0xaf, 0x4a, 0x19, 0xc9, 0x31, 0xdc,
|
||||
0x07, 0x65, 0xb9, 0x32, 0x3b, 0x8a, 0xc3, 0x36, 0x61, 0xf2, 0xe3, 0x50, 0x68, 0xd5, 0x86, 0x89,
|
||||
0x59, 0x92, 0xf6, 0xff, 0x48, 0x33, 0x9a, 0x06, 0xf0, 0x31, 0x58, 0x11, 0xfd, 0xe9, 0x7b, 0x7d,
|
||||
0x6d, 0x98, 0x98, 0x35, 0x31, 0x59, 0x66, 0x7a, 0x6d, 0xa3, 0x65, 0xd1, 0x97, 0xd7, 0x77, 0x13,
|
||||
0x18, 0xa2, 0x6f, 0xfb, 0x91, 0x4b, 0xfa, 0xf2, 0xea, 0x2e, 0xb4, 0xd6, 0x87, 0x89, 0x59, 0x9f,
|
||||
0x0a, 0x3f, 0x4b, 0x7d, 0x68, 0x45, 0xf4, 0xe5, 0x00, 0x3e, 0x06, 0x40, 0x4d, 0x49, 0x2a, 0xa8,
|
||||
0x8b, 0xb7, 0x32, 0x4c, 0xcc, 0xa2, 0xb4, 0x4a, 0xee, 0xc9, 0x10, 0x5a, 0x60, 0x49, 0x71, 0x1b,
|
||||
0x92, 0xbb, 0x3c, 0x4c, 0x4c, 0x23, 0xa0, 0x9e, 0xe2, 0x54, 0xae, 0xb4, 0x54, 0x8c, 0x84, 0xb4,
|
||||
0x47, 0x5c, 0x79, 0xb7, 0x19, 0x28, 0x83, 0xd6, 0x97, 0x8b, 0xc0, 0xb8, 0xec, 0x23, 0xc2, 0xe3,
|
||||
0x40, 0xc0, 0x97, 0xa0, 0xee, 0xd0, 0x48, 0x30, 0xec, 0x08, 0x7b, 0xa6, 0xb4, 0xad, 0xcd, 0xc9,
|
||||
0x3d, 0x33, 0x1f, 0x61, 0xa1, 0x5a, 0x66, 0x3a, 0xd2, 0xf5, 0x5f, 0x07, 0x4b, 0xed, 0x80, 0xd2,
|
||||
0x50, 0x76, 0x42, 0x19, 0x29, 0x00, 0x91, 0xac, 0x9a, 0xdc, 0xe5, 0xbc, 0x7c, 0x39, 0xfd, 0xe5,
|
||||
0xe6, 0x2e, 0xcf, 0xb5, 0x4a, 0x6b, 0x43, 0xbf, 0x9e, 0xaa, 0x4a, 0x5b, 0xe7, 0x5b, 0x69, 0x6d,
|
||||
0x65, 0x2b, 0xd5, 0x41, 0x9e, 0x11, 0x21, 0x37, 0xad, 0x8c, 0xd2, 0x21, 0x7c, 0x04, 0x0c, 0x46,
|
||||
0x7a, 0x84, 0x09, 0xe2, 0xca, 0xcd, 0x31, 0xd0, 0x18, 0xc3, 0x87, 0xc0, 0xf0, 0x30, 0xb7, 0x63,
|
||||
0x4e, 0x5c, 0xb5, 0x13, 0x68, 0xc5, 0xc3, 0xfc, 0x7f, 0x9c, 0xb8, 0xcf, 0x0b, 0x5f, 0xa4, 0x8f,
|
||||
0x2f, 0x0c, 0x4a, 0x47, 0x8e, 0x43, 0x38, 0xbf, 0x8c, 0xbb, 0x01, 0xf9, 0x8d, 0x0e, 0xdb, 0x07,
|
||||
0x65, 0x2e, 0x28, 0xc3, 0x1e, 0xb1, 0xaf, 0xc8, 0x40, 0xf7, 0x99, 0xea, 0x1a, 0x6d, 0xff, 0x17,
|
||||
0x19, 0x70, 0x34, 0x0d, 0xb4, 0xc4, 0x77, 0x39, 0x50, 0xba, 0x64, 0xd8, 0x21, 0xfa, 0x7d, 0x97,
|
||||
0xf6, 0x6a, 0x0a, 0x99, 0x96, 0xd0, 0x28, 0xd5, 0x16, 0x7e, 0x48, 0x68, 0x2c, 0xf4, 0x79, 0xca,
|
||||
0x60, 0x9a, 0xc1, 0x08, 0xe9, 0x13, 0x47, 0x96, 0xb1, 0x80, 0x34, 0x82, 0x67, 0x00, 0x04, 0xd4,
|
||||
0xcb, 0x1e, 0xa7, 0x05, 0x59, 0xe2, 0xcd, 0x5b, 0x0f, 0x92, 0x7e, 0x9a, 0xca, 0x9e, 0x0a, 0x32,
|
||||
0x88, 0x26, 0x43, 0xeb, 0x97, 0x45, 0x50, 0x1c, 0xc7, 0xc1, 0x43, 0x50, 0x75, 0x7d, 0x2e, 0xdf,
|
||||
0xd5, 0x21, 0x09, 0x29, 0x53, 0xa7, 0xde, 0x68, 0xad, 0x0e, 0x13, 0xb3, 0xa2, 0x3d, 0xff, 0x96,
|
||||
0x0e, 0x34, 0x0b, 0xe1, 0x01, 0xc8, 0x0c, 0x36, 0x17, 0x58, 0x3f, 0x26, 0x8d, 0x56, 0x7d, 0x98,
|
||||
0x98, 0x65, 0xed, 0xb8, 0x48, 0xed, 0x68, 0x06, 0xc1, 0x17, 0xa0, 0x36, 0x49, 0x93, 0x05, 0xd4,
|
||||
0x0f, 0x41, 0x38, 0x4c, 0xcc, 0xea, 0x38, 0x54, 0x7a, 0xd0, 0x1c, 0x86, 0xa7, 0x60, 0x2d, 0x4b,
|
||||
0x66, 0x44, 0xc4, 0x2c, 0xb2, 0xe5, 0x99, 0x2f, 0x48, 0x82, 0x07, 0xc3, 0xc4, 0x5c, 0xd5, 0x6e,
|
||||
0x24, 0xbd, 0x27, 0x58, 0x60, 0x74, 0xd3, 0x94, 0xf6, 0xb0, 0x4b, 0xda, 0xb1, 0xa7, 0x9b, 0x48,
|
||||
0x81, 0xd4, 0x1a, 0xf8, 0xa1, 0x2f, 0x64, 0xfb, 0x2c, 0x21, 0x05, 0xe0, 0x0b, 0x50, 0xa4, 0x3d,
|
||||
0xc2, 0x98, 0xef, 0x12, 0x2e, 0xcf, 0xeb, 0xef, 0xfd, 0x2b, 0x40, 0x93, 0xf8, 0x56, 0xeb, 0xdd,
|
||||
0xf5, 0x56, 0xee, 0xfd, 0xf5, 0x56, 0xee, 0xe7, 0xeb, 0xad, 0xdc, 0x57, 0x1f, 0xb6, 0x16, 0xde,
|
||||
0x7f, 0xd8, 0x5a, 0xf8, 0xe1, 0xc3, 0xd6, 0xc2, 0x47, 0x3b, 0x53, 0xf7, 0xbb, 0xe8, 0x60, 0xc6,
|
||||
0x7d, 0xde, 0x9c, 0xfc, 0x7f, 0xeb, 0xcb, 0x7f, 0x70, 0xf2, 0x96, 0x6f, 0x2f, 0xcb, 0x7f, 0x66,
|
||||
0xcf, 0x7e, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x36, 0x8e, 0x02, 0xc1, 0xdf, 0x0d, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func (m *Params) Marshal() (dAtA []byte, err error) {
|
||||
@@ -1160,6 +1347,150 @@ func (m *AccessTuple) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *TraceConfig) Marshal() (dAtA []byte, err error) {
|
||||
size := m.Size()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *TraceConfig) MarshalTo(dAtA []byte) (int, error) {
|
||||
size := m.Size()
|
||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *TraceConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.LogConfig != nil {
|
||||
{
|
||||
size, err := m.LogConfig.MarshalToSizedBuffer(dAtA[:i])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i -= size
|
||||
i = encodeVarintEvm(dAtA, i, uint64(size))
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x22
|
||||
}
|
||||
if m.Reexec != 0 {
|
||||
i = encodeVarintEvm(dAtA, i, uint64(m.Reexec))
|
||||
i--
|
||||
dAtA[i] = 0x18
|
||||
}
|
||||
if len(m.Timeout) > 0 {
|
||||
i -= len(m.Timeout)
|
||||
copy(dAtA[i:], m.Timeout)
|
||||
i = encodeVarintEvm(dAtA, i, uint64(len(m.Timeout)))
|
||||
i--
|
||||
dAtA[i] = 0x12
|
||||
}
|
||||
if len(m.Tracer) > 0 {
|
||||
i -= len(m.Tracer)
|
||||
copy(dAtA[i:], m.Tracer)
|
||||
i = encodeVarintEvm(dAtA, i, uint64(len(m.Tracer)))
|
||||
i--
|
||||
dAtA[i] = 0xa
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *LogConfig) Marshal() (dAtA []byte, err error) {
|
||||
size := m.Size()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *LogConfig) MarshalTo(dAtA []byte) (int, error) {
|
||||
size := m.Size()
|
||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *LogConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.Overrides != nil {
|
||||
{
|
||||
size, err := m.Overrides.MarshalToSizedBuffer(dAtA[:i])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i -= size
|
||||
i = encodeVarintEvm(dAtA, i, uint64(size))
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x3a
|
||||
}
|
||||
if m.Limit != 0 {
|
||||
i = encodeVarintEvm(dAtA, i, uint64(m.Limit))
|
||||
i--
|
||||
dAtA[i] = 0x30
|
||||
}
|
||||
if m.Debug {
|
||||
i--
|
||||
if m.Debug {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x28
|
||||
}
|
||||
if m.DisableReturnData {
|
||||
i--
|
||||
if m.DisableReturnData {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x20
|
||||
}
|
||||
if m.DisableStorage {
|
||||
i--
|
||||
if m.DisableStorage {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x18
|
||||
}
|
||||
if m.DisableStack {
|
||||
i--
|
||||
if m.DisableStack {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x10
|
||||
}
|
||||
if m.DisableMemory {
|
||||
i--
|
||||
if m.DisableMemory {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x8
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func encodeVarintEvm(dAtA []byte, offset int, v uint64) int {
|
||||
offset -= sovEvm(v)
|
||||
base := offset
|
||||
@@ -1394,6 +1725,61 @@ func (m *AccessTuple) Size() (n int) {
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *TraceConfig) Size() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
l = len(m.Tracer)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovEvm(uint64(l))
|
||||
}
|
||||
l = len(m.Timeout)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovEvm(uint64(l))
|
||||
}
|
||||
if m.Reexec != 0 {
|
||||
n += 1 + sovEvm(uint64(m.Reexec))
|
||||
}
|
||||
if m.LogConfig != nil {
|
||||
l = m.LogConfig.Size()
|
||||
n += 1 + l + sovEvm(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *LogConfig) Size() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
if m.DisableMemory {
|
||||
n += 2
|
||||
}
|
||||
if m.DisableStack {
|
||||
n += 2
|
||||
}
|
||||
if m.DisableStorage {
|
||||
n += 2
|
||||
}
|
||||
if m.DisableReturnData {
|
||||
n += 2
|
||||
}
|
||||
if m.Debug {
|
||||
n += 2
|
||||
}
|
||||
if m.Limit != 0 {
|
||||
n += 1 + sovEvm(uint64(m.Limit))
|
||||
}
|
||||
if m.Overrides != nil {
|
||||
l = m.Overrides.Size()
|
||||
n += 1 + l + sovEvm(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func sovEvm(x uint64) (n int) {
|
||||
return (math_bits.Len64(x|1) + 6) / 7
|
||||
}
|
||||
@@ -3056,6 +3442,380 @@ func (m *AccessTuple) Unmarshal(dAtA []byte) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *TraceConfig) Unmarshal(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
for iNdEx < l {
|
||||
preIndex := iNdEx
|
||||
var wire uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
wire |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
fieldNum := int32(wire >> 3)
|
||||
wireType := int(wire & 0x7)
|
||||
if wireType == 4 {
|
||||
return fmt.Errorf("proto: TraceConfig: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: TraceConfig: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
case 1:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Tracer", wireType)
|
||||
}
|
||||
var stringLen uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
stringLen |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
intStringLen := int(stringLen)
|
||||
if intStringLen < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
postIndex := iNdEx + intStringLen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.Tracer = string(dAtA[iNdEx:postIndex])
|
||||
iNdEx = postIndex
|
||||
case 2:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType)
|
||||
}
|
||||
var stringLen uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
stringLen |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
intStringLen := int(stringLen)
|
||||
if intStringLen < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
postIndex := iNdEx + intStringLen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.Timeout = string(dAtA[iNdEx:postIndex])
|
||||
iNdEx = postIndex
|
||||
case 3:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Reexec", wireType)
|
||||
}
|
||||
m.Reexec = 0
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
m.Reexec |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
case 4:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field LogConfig", wireType)
|
||||
}
|
||||
var msglen int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
msglen |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
if msglen < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
postIndex := iNdEx + msglen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.LogConfig == nil {
|
||||
m.LogConfig = &LogConfig{}
|
||||
}
|
||||
if err := m.LogConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipEvm(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *LogConfig) Unmarshal(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
for iNdEx < l {
|
||||
preIndex := iNdEx
|
||||
var wire uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
wire |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
fieldNum := int32(wire >> 3)
|
||||
wireType := int(wire & 0x7)
|
||||
if wireType == 4 {
|
||||
return fmt.Errorf("proto: LogConfig: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: LogConfig: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
case 1:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field DisableMemory", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.DisableMemory = bool(v != 0)
|
||||
case 2:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field DisableStack", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.DisableStack = bool(v != 0)
|
||||
case 3:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field DisableStorage", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.DisableStorage = bool(v != 0)
|
||||
case 4:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field DisableReturnData", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.DisableReturnData = bool(v != 0)
|
||||
case 5:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Debug", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.Debug = bool(v != 0)
|
||||
case 6:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Limit", wireType)
|
||||
}
|
||||
m.Limit = 0
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
m.Limit |= int32(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
case 7:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Overrides", wireType)
|
||||
}
|
||||
var msglen int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowEvm
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
msglen |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
if msglen < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
postIndex := iNdEx + msglen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.Overrides == nil {
|
||||
m.Overrides = &ChainConfig{}
|
||||
}
|
||||
if err := m.Overrides.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipEvm(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||
return ErrInvalidLengthEvm
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func skipEvm(dAtA []byte) (n int, err error) {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
||||
)
|
||||
|
||||
// UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces
|
||||
func (m QueryTraceTxRequest) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
|
||||
return m.Msg.UnpackInterfaces(unpacker)
|
||||
}
|
||||
+576
-80
@@ -1186,6 +1186,116 @@ func (m *EstimateGasResponse) GetGas() uint64 {
|
||||
return 0
|
||||
}
|
||||
|
||||
// QueryTraceTxRequest defines TraceTx request
|
||||
type QueryTraceTxRequest struct {
|
||||
// msgEthereumTx for the requested transaction
|
||||
Msg *MsgEthereumTx `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
|
||||
// transaction index
|
||||
TxIndex uint32 `protobuf:"varint,2,opt,name=tx_index,json=txIndex,proto3" json:"tx_index,omitempty"`
|
||||
// TraceConfig holds extra parameters to trace functions.
|
||||
TraceConfig *TraceConfig `protobuf:"bytes,3,opt,name=trace_config,json=traceConfig,proto3" json:"trace_config,omitempty"`
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxRequest) Reset() { *m = QueryTraceTxRequest{} }
|
||||
func (m *QueryTraceTxRequest) String() string { return proto.CompactTextString(m) }
|
||||
func (*QueryTraceTxRequest) ProtoMessage() {}
|
||||
func (*QueryTraceTxRequest) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_e15a877459347994, []int{25}
|
||||
}
|
||||
func (m *QueryTraceTxRequest) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
}
|
||||
func (m *QueryTraceTxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
if deterministic {
|
||||
return xxx_messageInfo_QueryTraceTxRequest.Marshal(b, m, deterministic)
|
||||
} else {
|
||||
b = b[:cap(b)]
|
||||
n, err := m.MarshalToSizedBuffer(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return b[:n], nil
|
||||
}
|
||||
}
|
||||
func (m *QueryTraceTxRequest) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_QueryTraceTxRequest.Merge(m, src)
|
||||
}
|
||||
func (m *QueryTraceTxRequest) XXX_Size() int {
|
||||
return m.Size()
|
||||
}
|
||||
func (m *QueryTraceTxRequest) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_QueryTraceTxRequest.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_QueryTraceTxRequest proto.InternalMessageInfo
|
||||
|
||||
func (m *QueryTraceTxRequest) GetMsg() *MsgEthereumTx {
|
||||
if m != nil {
|
||||
return m.Msg
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxRequest) GetTxIndex() uint32 {
|
||||
if m != nil {
|
||||
return m.TxIndex
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxRequest) GetTraceConfig() *TraceConfig {
|
||||
if m != nil {
|
||||
return m.TraceConfig
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// QueryTraceTxResponse defines TraceTx response
|
||||
type QueryTraceTxResponse struct {
|
||||
// response serialized in bytes
|
||||
Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxResponse) Reset() { *m = QueryTraceTxResponse{} }
|
||||
func (m *QueryTraceTxResponse) String() string { return proto.CompactTextString(m) }
|
||||
func (*QueryTraceTxResponse) ProtoMessage() {}
|
||||
func (*QueryTraceTxResponse) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_e15a877459347994, []int{26}
|
||||
}
|
||||
func (m *QueryTraceTxResponse) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
}
|
||||
func (m *QueryTraceTxResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
if deterministic {
|
||||
return xxx_messageInfo_QueryTraceTxResponse.Marshal(b, m, deterministic)
|
||||
} else {
|
||||
b = b[:cap(b)]
|
||||
n, err := m.MarshalToSizedBuffer(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return b[:n], nil
|
||||
}
|
||||
}
|
||||
func (m *QueryTraceTxResponse) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_QueryTraceTxResponse.Merge(m, src)
|
||||
}
|
||||
func (m *QueryTraceTxResponse) XXX_Size() int {
|
||||
return m.Size()
|
||||
}
|
||||
func (m *QueryTraceTxResponse) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_QueryTraceTxResponse.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_QueryTraceTxResponse proto.InternalMessageInfo
|
||||
|
||||
func (m *QueryTraceTxResponse) GetData() []byte {
|
||||
if m != nil {
|
||||
return m.Data
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*QueryAccountRequest)(nil), "ethermint.evm.v1.QueryAccountRequest")
|
||||
proto.RegisterType((*QueryAccountResponse)(nil), "ethermint.evm.v1.QueryAccountResponse")
|
||||
@@ -1212,91 +1322,99 @@ func init() {
|
||||
proto.RegisterType((*QueryStaticCallResponse)(nil), "ethermint.evm.v1.QueryStaticCallResponse")
|
||||
proto.RegisterType((*EthCallRequest)(nil), "ethermint.evm.v1.EthCallRequest")
|
||||
proto.RegisterType((*EstimateGasResponse)(nil), "ethermint.evm.v1.EstimateGasResponse")
|
||||
proto.RegisterType((*QueryTraceTxRequest)(nil), "ethermint.evm.v1.QueryTraceTxRequest")
|
||||
proto.RegisterType((*QueryTraceTxResponse)(nil), "ethermint.evm.v1.QueryTraceTxResponse")
|
||||
}
|
||||
|
||||
func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) }
|
||||
|
||||
var fileDescriptor_e15a877459347994 = []byte{
|
||||
// 1260 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcf, 0x6f, 0x13, 0xc7,
|
||||
0x17, 0xf7, 0x12, 0x63, 0x87, 0x17, 0xc2, 0x37, 0xdf, 0x21, 0x40, 0xd8, 0x06, 0xc7, 0x0c, 0x24,
|
||||
0x71, 0x20, 0xec, 0x12, 0xb7, 0x42, 0x2a, 0x52, 0x55, 0xe2, 0x28, 0x50, 0x04, 0x54, 0xd4, 0x44,
|
||||
0x3d, 0xf4, 0x62, 0x8d, 0xd7, 0xd3, 0xb5, 0x15, 0x7b, 0xc7, 0x78, 0xd6, 0xae, 0xd3, 0x28, 0xad,
|
||||
0x84, 0x54, 0x84, 0xc4, 0xa5, 0x52, 0xef, 0x15, 0x52, 0xff, 0x80, 0xfe, 0x1b, 0x1c, 0x91, 0x7a,
|
||||
0xa9, 0x7a, 0x40, 0x55, 0xd2, 0x43, 0xff, 0x8c, 0x6a, 0x7e, 0xac, 0xbd, 0xeb, 0xf5, 0xe2, 0x50,
|
||||
0xf5, 0x94, 0x9d, 0x37, 0xef, 0xbd, 0xcf, 0xe7, 0xbd, 0x37, 0x33, 0x9f, 0x18, 0x16, 0xa9, 0x5f,
|
||||
0xa7, 0x9d, 0x56, 0xc3, 0xf3, 0x6d, 0xda, 0x6b, 0xd9, 0xbd, 0x0d, 0xfb, 0x69, 0x97, 0x76, 0xf6,
|
||||
0xac, 0x76, 0x87, 0xf9, 0x0c, 0xcd, 0x0d, 0x76, 0x2d, 0xda, 0x6b, 0x59, 0xbd, 0x0d, 0x73, 0xde,
|
||||
0x65, 0x2e, 0x93, 0x9b, 0xb6, 0xf8, 0x52, 0x7e, 0xe6, 0x35, 0x87, 0xf1, 0x16, 0xe3, 0x76, 0x95,
|
||||
0x70, 0xaa, 0x12, 0xd8, 0xbd, 0x8d, 0x2a, 0xf5, 0xc9, 0x86, 0xdd, 0x26, 0x6e, 0xc3, 0x23, 0x7e,
|
||||
0x83, 0x79, 0xda, 0x77, 0xd1, 0x65, 0xcc, 0x6d, 0x52, 0x9b, 0xb4, 0x1b, 0x36, 0xf1, 0x3c, 0xe6,
|
||||
0xcb, 0x4d, 0xae, 0x77, 0xcd, 0x18, 0x1f, 0x01, 0xac, 0xf6, 0x2e, 0xc6, 0xf6, 0xfc, 0xbe, 0xda,
|
||||
0xc2, 0x1f, 0xc3, 0xd9, 0x2f, 0x04, 0xec, 0xa6, 0xe3, 0xb0, 0xae, 0xe7, 0x97, 0xe9, 0xd3, 0x2e,
|
||||
0xe5, 0x3e, 0x5a, 0x80, 0x2c, 0xa9, 0xd5, 0x3a, 0x94, 0xf3, 0x05, 0x23, 0x6f, 0x14, 0x4e, 0x95,
|
||||
0x83, 0xe5, 0xed, 0xe9, 0x17, 0xaf, 0x96, 0x52, 0x7f, 0xbf, 0x5a, 0x4a, 0x61, 0x07, 0xe6, 0xa3,
|
||||
0xa1, 0xbc, 0xcd, 0x3c, 0x4e, 0x45, 0x6c, 0x95, 0x34, 0x89, 0xe7, 0xd0, 0x20, 0x56, 0x2f, 0xd1,
|
||||
0x07, 0x70, 0xca, 0x61, 0x35, 0x5a, 0xa9, 0x13, 0x5e, 0x5f, 0x38, 0x21, 0xf7, 0xa6, 0x85, 0xe1,
|
||||
0x33, 0xc2, 0xeb, 0x68, 0x1e, 0x4e, 0x7a, 0x4c, 0x04, 0x4d, 0xe5, 0x8d, 0x42, 0xba, 0xac, 0x16,
|
||||
0xf8, 0x53, 0xb8, 0x28, 0x41, 0xb6, 0x64, 0x9f, 0xfe, 0x05, 0xcb, 0xe7, 0x06, 0x98, 0xe3, 0x32,
|
||||
0x68, 0xb2, 0xcb, 0x70, 0x46, 0x8d, 0xa0, 0x12, 0xcd, 0x34, 0xab, 0xac, 0x9b, 0xca, 0x88, 0x4c,
|
||||
0x98, 0xe6, 0x02, 0x54, 0xf0, 0x3b, 0x21, 0xf9, 0x0d, 0xd6, 0x22, 0x05, 0x51, 0x59, 0x2b, 0x5e,
|
||||
0xb7, 0x55, 0xa5, 0x1d, 0x5d, 0xc1, 0xac, 0xb6, 0x7e, 0x2e, 0x8d, 0xf8, 0x01, 0x2c, 0x4a, 0x1e,
|
||||
0x5f, 0x92, 0x66, 0xa3, 0x46, 0x7c, 0xd6, 0x19, 0x29, 0xe6, 0x32, 0x9c, 0x76, 0x98, 0x37, 0xca,
|
||||
0x63, 0x46, 0xd8, 0x36, 0x63, 0x55, 0xbd, 0x34, 0xe0, 0x52, 0x42, 0x36, 0x5d, 0xd8, 0x2a, 0xfc,
|
||||
0x2f, 0x60, 0x15, 0xcd, 0x18, 0x90, 0xfd, 0x0f, 0x4b, 0x0b, 0x0e, 0x51, 0x49, 0xcd, 0xf9, 0x7d,
|
||||
0xc6, 0x73, 0x53, 0x1f, 0xa2, 0x41, 0xe8, 0xa4, 0x43, 0x84, 0x1f, 0x68, 0xb0, 0x27, 0x3e, 0xeb,
|
||||
0x10, 0x77, 0x32, 0x18, 0x9a, 0x83, 0xa9, 0x5d, 0xba, 0xa7, 0xcf, 0x9b, 0xf8, 0x0c, 0xc1, 0xaf,
|
||||
0x6b, 0xf8, 0x41, 0x32, 0x0d, 0x3f, 0x0f, 0x27, 0x7b, 0xa4, 0xd9, 0x0d, 0xc0, 0xd5, 0x02, 0xdf,
|
||||
0x82, 0x39, 0x7d, 0x94, 0x6a, 0xef, 0x55, 0xe4, 0x2a, 0xfc, 0x3f, 0x14, 0xa7, 0x21, 0x10, 0xa4,
|
||||
0xc5, 0xd9, 0x97, 0x51, 0xa7, 0xcb, 0xf2, 0x1b, 0x17, 0x01, 0x49, 0xc7, 0x9d, 0xfe, 0x43, 0xe6,
|
||||
0xf2, 0x00, 0x02, 0x41, 0x5a, 0xde, 0x18, 0x95, 0x5f, 0x7e, 0x87, 0x92, 0xdf, 0xd1, 0xfd, 0x08,
|
||||
0x62, 0x74, 0xfa, 0x35, 0x48, 0x37, 0x99, 0x2b, 0x48, 0x4d, 0x15, 0x66, 0x8a, 0xe7, 0xac, 0xd1,
|
||||
0x07, 0xc9, 0x7a, 0xc8, 0xdc, 0xb2, 0x74, 0xc1, 0x07, 0x70, 0x4e, 0xcd, 0xa0, 0xc9, 0x9c, 0xdd,
|
||||
0x09, 0xc0, 0xe8, 0x2e, 0xc0, 0xf0, 0x65, 0x92, 0x4d, 0x9d, 0x29, 0xae, 0x58, 0xea, 0xb6, 0x58,
|
||||
0xe2, 0x19, 0xb3, 0xd4, 0x3b, 0xa8, 0x9f, 0x31, 0xeb, 0xf1, 0x70, 0x46, 0xe5, 0x50, 0x64, 0xa8,
|
||||
0x80, 0x5f, 0x0c, 0x38, 0x3f, 0x8a, 0xaf, 0x8b, 0xb8, 0x03, 0x59, 0xbf, 0x5f, 0x09, 0xd5, 0x71,
|
||||
0x39, 0x5e, 0xc7, 0x4e, 0x87, 0x78, 0x9c, 0x38, 0x22, 0xa9, 0x88, 0x2d, 0xa5, 0x5f, 0xbf, 0x5d,
|
||||
0x4a, 0x95, 0x33, 0xbe, 0x6c, 0x07, 0xba, 0x37, 0x86, 0xee, 0xea, 0x44, 0xba, 0x0a, 0x3e, 0xcc,
|
||||
0x17, 0xdf, 0x0c, 0x93, 0x2c, 0x35, 0x19, 0x6b, 0x05, 0x5d, 0x3a, 0x0f, 0x99, 0x3a, 0x6d, 0xb8,
|
||||
0x75, 0x5f, 0xf6, 0x69, 0xaa, 0xac, 0x57, 0xd8, 0x86, 0x0b, 0xb1, 0x88, 0xe1, 0xf1, 0xaa, 0x0a,
|
||||
0x83, 0x1e, 0xbe, 0x5a, 0xe0, 0x79, 0x3d, 0xfd, 0xc7, 0xa4, 0x43, 0x5a, 0xc1, 0x10, 0xf0, 0x23,
|
||||
0x3d, 0xdf, 0xc0, 0xaa, 0x53, 0xdc, 0x82, 0x4c, 0x5b, 0x5a, 0x64, 0x8e, 0x99, 0xe2, 0x42, 0xbc,
|
||||
0x33, 0x2a, 0x22, 0x68, 0x88, 0xf2, 0xc6, 0xe7, 0x06, 0x77, 0x95, 0xd3, 0xbb, 0x34, 0x18, 0x0d,
|
||||
0x26, 0x83, 0x7b, 0xa8, 0xcd, 0x1a, 0xe6, 0x3e, 0x4c, 0x8b, 0x2e, 0x55, 0xbe, 0xa6, 0xfa, 0x2e,
|
||||
0x94, 0x2c, 0x91, 0xee, 0x8f, 0xb7, 0x4b, 0x2b, 0x6e, 0xc3, 0xaf, 0x77, 0xab, 0x96, 0xc3, 0x5a,
|
||||
0xb6, 0x56, 0x31, 0xf5, 0xe7, 0x06, 0xaf, 0xed, 0xda, 0xfe, 0x5e, 0x9b, 0x72, 0xeb, 0xbe, 0xe7,
|
||||
0x8b, 0x8b, 0x2b, 0x53, 0xe2, 0x1b, 0xba, 0x1f, 0x4f, 0x84, 0x70, 0x39, 0x5b, 0xa4, 0xd9, 0x0c,
|
||||
0xdf, 0x85, 0x1a, 0xf1, 0x49, 0x70, 0x17, 0xc4, 0x37, 0xfe, 0x04, 0xce, 0x6c, 0xfb, 0x75, 0xe5,
|
||||
0x36, 0x38, 0x8e, 0xa4, 0xe3, 0xf2, 0xc0, 0x4b, 0x7c, 0xa3, 0x0b, 0x90, 0x75, 0x09, 0xaf, 0x38,
|
||||
0xa4, 0xad, 0x1f, 0xaf, 0x8c, 0x4b, 0xf8, 0x16, 0x69, 0xe3, 0x55, 0x38, 0xbb, 0xcd, 0xfd, 0x46,
|
||||
0x8b, 0xf8, 0xf4, 0x1e, 0x19, 0xb6, 0x6d, 0x0e, 0xa6, 0x5c, 0xa2, 0x52, 0xa4, 0xcb, 0xe2, 0xb3,
|
||||
0xf8, 0x6c, 0x16, 0x4e, 0x4a, 0x5e, 0xe8, 0x07, 0x03, 0xb2, 0xfa, 0x19, 0x45, 0xcb, 0xf1, 0x76,
|
||||
0x8e, 0xd1, 0x49, 0x73, 0x65, 0x92, 0x9b, 0x82, 0xc5, 0xd7, 0x9f, 0xfd, 0xf6, 0xd7, 0x4f, 0x27,
|
||||
0x96, 0xd1, 0x15, 0x3b, 0x26, 0xc5, 0xfa, 0x29, 0xb5, 0xf7, 0xf5, 0xbb, 0x71, 0x80, 0x7e, 0x36,
|
||||
0x60, 0x36, 0xa2, 0x56, 0xe8, 0x7a, 0x02, 0xcc, 0x38, 0x55, 0x34, 0xd7, 0x8f, 0xe7, 0xac, 0x99,
|
||||
0x15, 0x25, 0xb3, 0x75, 0x74, 0x2d, 0xce, 0x2c, 0x10, 0xc6, 0x18, 0xc1, 0x5f, 0x0d, 0x98, 0x1b,
|
||||
0x15, 0x1e, 0x64, 0x25, 0xc0, 0x26, 0xe8, 0x9d, 0x69, 0x1f, 0xdb, 0x5f, 0x33, 0xbd, 0x2d, 0x99,
|
||||
0x7e, 0x84, 0x8a, 0x71, 0xa6, 0xbd, 0x20, 0x66, 0x48, 0x36, 0xac, 0xa5, 0x07, 0xe8, 0xb9, 0x01,
|
||||
0x59, 0x2d, 0x31, 0x89, 0xa3, 0x8d, 0xaa, 0x57, 0xe2, 0x68, 0x47, 0x94, 0x0a, 0xaf, 0x4b, 0x5a,
|
||||
0x2b, 0xe8, 0x6a, 0x9c, 0x96, 0x96, 0x2c, 0x1e, 0x6a, 0xdd, 0x4b, 0x03, 0xb2, 0x5a, 0x6c, 0x12,
|
||||
0x89, 0x44, 0x95, 0x2d, 0x91, 0xc8, 0x88, 0x66, 0xe1, 0x0d, 0x49, 0xe4, 0x3a, 0x5a, 0x8b, 0x13,
|
||||
0xe1, 0xca, 0x75, 0xc8, 0xc3, 0xde, 0xdf, 0xa5, 0x7b, 0x07, 0xe8, 0x5b, 0x48, 0x0b, 0x4d, 0x42,
|
||||
0x38, 0xf1, 0xc8, 0x0c, 0x84, 0xce, 0xbc, 0xf2, 0x4e, 0x1f, 0xcd, 0x61, 0x4d, 0x72, 0xb8, 0x82,
|
||||
0x2e, 0x8f, 0x3b, 0x4d, 0xb5, 0x48, 0x27, 0xbe, 0x87, 0x8c, 0x92, 0x2c, 0x74, 0x35, 0x21, 0x73,
|
||||
0x44, 0x05, 0xcd, 0xe5, 0x09, 0x5e, 0x9a, 0x41, 0x41, 0x32, 0xc0, 0x28, 0x6f, 0x8f, 0xf9, 0xa7,
|
||||
0x57, 0x4a, 0x89, 0xbd, 0x2f, 0x84, 0x4c, 0x8e, 0xe2, 0xd4, 0x40, 0x72, 0xd0, 0x6a, 0xd2, 0xb8,
|
||||
0x47, 0x44, 0xd1, 0x2c, 0x4c, 0x76, 0x9c, 0x7c, 0xe9, 0xab, 0xc2, 0x39, 0xc2, 0xe6, 0x85, 0x01,
|
||||
0x30, 0x54, 0x0a, 0xf4, 0x4e, 0x94, 0xb0, 0xfc, 0x98, 0x6b, 0xc7, 0xf0, 0xd4, 0x84, 0x96, 0x25,
|
||||
0xa1, 0x25, 0x74, 0x29, 0x89, 0x90, 0xd4, 0x21, 0xf4, 0x0d, 0x64, 0x94, 0x74, 0x24, 0x4e, 0x26,
|
||||
0xa2, 0x50, 0x89, 0x93, 0x89, 0x2a, 0x16, 0xce, 0x4b, 0x74, 0x13, 0x2d, 0xc4, 0xd1, 0x95, 0x36,
|
||||
0xa1, 0x3e, 0x64, 0xf5, 0x93, 0x8f, 0xf2, 0xf1, 0x9c, 0x51, 0x35, 0x30, 0xc7, 0x0c, 0xec, 0x11,
|
||||
0x77, 0xb7, 0x85, 0x8d, 0x76, 0x5b, 0x3b, 0xfd, 0x01, 0x2e, 0x96, 0xb8, 0x8b, 0xc8, 0x8c, 0xe3,
|
||||
0x52, 0xbf, 0x5e, 0x71, 0x04, 0xdc, 0x77, 0x30, 0x13, 0x52, 0x8b, 0x63, 0xa0, 0x8f, 0xa9, 0x79,
|
||||
0x8c, 0xdc, 0xe0, 0x15, 0x89, 0x9d, 0x47, 0xb9, 0x31, 0xd8, 0xda, 0xbd, 0xe2, 0x12, 0x5e, 0x2a,
|
||||
0xbd, 0x3e, 0xcc, 0x19, 0x6f, 0x0e, 0x73, 0xc6, 0x9f, 0x87, 0x39, 0xe3, 0xc7, 0xa3, 0x5c, 0xea,
|
||||
0xcd, 0x51, 0x2e, 0xf5, 0xfb, 0x51, 0x2e, 0xf5, 0x55, 0x21, 0x24, 0xb3, 0x7e, 0x9d, 0x74, 0x78,
|
||||
0x83, 0x87, 0x72, 0xf5, 0x65, 0x36, 0x29, 0xb6, 0xd5, 0x8c, 0xfc, 0x45, 0xf7, 0xe1, 0x3f, 0x01,
|
||||
0x00, 0x00, 0xff, 0xff, 0xa4, 0x91, 0x34, 0x9c, 0x9a, 0x0e, 0x00, 0x00,
|
||||
// 1360 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcd, 0x6f, 0x13, 0x47,
|
||||
0x14, 0xcf, 0x12, 0x63, 0x87, 0x67, 0x42, 0xd3, 0x21, 0x40, 0xd8, 0x06, 0x27, 0x0c, 0xe4, 0x0b,
|
||||
0xc2, 0x2e, 0x71, 0x2b, 0xa4, 0x22, 0x55, 0x85, 0x44, 0x40, 0x11, 0x50, 0x51, 0x13, 0xf5, 0xd0,
|
||||
0x8b, 0x35, 0x5e, 0x0f, 0x6b, 0x2b, 0xf6, 0x8e, 0xf1, 0x8c, 0x5d, 0xa7, 0x34, 0x6d, 0x55, 0xa9,
|
||||
0x08, 0x89, 0x4b, 0xa5, 0xde, 0x2b, 0xa4, 0xaa, 0xe7, 0xfe, 0x1b, 0x1c, 0x91, 0x7a, 0xa9, 0x7a,
|
||||
0x40, 0x15, 0xf4, 0xd0, 0x3f, 0xa3, 0x9a, 0x8f, 0xb5, 0x77, 0xbd, 0xde, 0x38, 0x54, 0x3d, 0x79,
|
||||
0x3e, 0xde, 0x7b, 0xbf, 0xdf, 0x7b, 0x6f, 0x66, 0x7e, 0x6b, 0x98, 0xa7, 0xa2, 0x46, 0xdb, 0xcd,
|
||||
0x7a, 0x20, 0x5c, 0xda, 0x6d, 0xba, 0xdd, 0x0d, 0xf7, 0x51, 0x87, 0xb6, 0x77, 0x9d, 0x56, 0x9b,
|
||||
0x09, 0x86, 0x66, 0xfa, 0xbb, 0x0e, 0xed, 0x36, 0x9d, 0xee, 0x86, 0x3d, 0xeb, 0x33, 0x9f, 0xa9,
|
||||
0x4d, 0x57, 0x8e, 0xb4, 0x9d, 0x7d, 0xc1, 0x63, 0xbc, 0xc9, 0xb8, 0x5b, 0x21, 0x9c, 0xea, 0x00,
|
||||
0x6e, 0x77, 0xa3, 0x42, 0x05, 0xd9, 0x70, 0x5b, 0xc4, 0xaf, 0x07, 0x44, 0xd4, 0x59, 0x60, 0x6c,
|
||||
0xe7, 0x7d, 0xc6, 0xfc, 0x06, 0x75, 0x49, 0xab, 0xee, 0x92, 0x20, 0x60, 0x42, 0x6d, 0x72, 0xb3,
|
||||
0x6b, 0x27, 0xf8, 0x48, 0x60, 0xbd, 0x77, 0x3a, 0xb1, 0x27, 0x7a, 0x7a, 0x0b, 0x7f, 0x08, 0xc7,
|
||||
0x3f, 0x93, 0xb0, 0xd7, 0x3d, 0x8f, 0x75, 0x02, 0x51, 0xa2, 0x8f, 0x3a, 0x94, 0x0b, 0x34, 0x07,
|
||||
0x39, 0x52, 0xad, 0xb6, 0x29, 0xe7, 0x73, 0xd6, 0xa2, 0xb5, 0x7a, 0xa4, 0x14, 0x4e, 0xaf, 0x4e,
|
||||
0x3d, 0x7d, 0xbe, 0x30, 0xf1, 0xcf, 0xf3, 0x85, 0x09, 0xec, 0xc1, 0x6c, 0xdc, 0x95, 0xb7, 0x58,
|
||||
0xc0, 0xa9, 0xf4, 0xad, 0x90, 0x06, 0x09, 0x3c, 0x1a, 0xfa, 0x9a, 0x29, 0x7a, 0x0f, 0x8e, 0x78,
|
||||
0xac, 0x4a, 0xcb, 0x35, 0xc2, 0x6b, 0x73, 0x87, 0xd4, 0xde, 0x94, 0x5c, 0xf8, 0x84, 0xf0, 0x1a,
|
||||
0x9a, 0x85, 0xc3, 0x01, 0x93, 0x4e, 0x93, 0x8b, 0xd6, 0x6a, 0xa6, 0xa4, 0x27, 0xf8, 0x63, 0x38,
|
||||
0xad, 0x40, 0xb6, 0x54, 0x9d, 0xfe, 0x03, 0xcb, 0x27, 0x16, 0xd8, 0xa3, 0x22, 0x18, 0xb2, 0x4b,
|
||||
0x70, 0x4c, 0xb7, 0xa0, 0x1c, 0x8f, 0x34, 0xad, 0x57, 0xaf, 0xeb, 0x45, 0x64, 0xc3, 0x14, 0x97,
|
||||
0xa0, 0x92, 0xdf, 0x21, 0xc5, 0xaf, 0x3f, 0x97, 0x21, 0x88, 0x8e, 0x5a, 0x0e, 0x3a, 0xcd, 0x0a,
|
||||
0x6d, 0x9b, 0x0c, 0xa6, 0xcd, 0xea, 0xa7, 0x6a, 0x11, 0xdf, 0x81, 0x79, 0xc5, 0xe3, 0x73, 0xd2,
|
||||
0xa8, 0x57, 0x89, 0x60, 0xed, 0xa1, 0x64, 0xce, 0xc2, 0x51, 0x8f, 0x05, 0xc3, 0x3c, 0xf2, 0x72,
|
||||
0xed, 0x7a, 0x22, 0xab, 0x67, 0x16, 0x9c, 0x49, 0x89, 0x66, 0x12, 0x5b, 0x81, 0x77, 0x42, 0x56,
|
||||
0xf1, 0x88, 0x21, 0xd9, 0xff, 0x31, 0xb5, 0xf0, 0x10, 0x6d, 0xea, 0x3e, 0xbf, 0x4d, 0x7b, 0x2e,
|
||||
0x9b, 0x43, 0xd4, 0x77, 0x1d, 0x77, 0x88, 0xf0, 0x1d, 0x03, 0xf6, 0x40, 0xb0, 0x36, 0xf1, 0xc7,
|
||||
0x83, 0xa1, 0x19, 0x98, 0xdc, 0xa1, 0xbb, 0xe6, 0xbc, 0xc9, 0x61, 0x04, 0x7e, 0xdd, 0xc0, 0xf7,
|
||||
0x83, 0x19, 0xf8, 0x59, 0x38, 0xdc, 0x25, 0x8d, 0x4e, 0x08, 0xae, 0x27, 0xf8, 0x0a, 0xcc, 0x98,
|
||||
0xa3, 0x54, 0x7d, 0xab, 0x24, 0x57, 0xe0, 0xdd, 0x88, 0x9f, 0x81, 0x40, 0x90, 0x91, 0x67, 0x5f,
|
||||
0x79, 0x1d, 0x2d, 0xa9, 0x31, 0x2e, 0x02, 0x52, 0x86, 0xdb, 0xbd, 0xbb, 0xcc, 0xe7, 0x21, 0x04,
|
||||
0x82, 0x8c, 0xba, 0x31, 0x3a, 0xbe, 0x1a, 0x47, 0x82, 0x5f, 0x33, 0xf5, 0x08, 0x7d, 0x4c, 0xf8,
|
||||
0x35, 0xc8, 0x34, 0x98, 0x2f, 0x49, 0x4d, 0xae, 0xe6, 0x8b, 0x27, 0x9c, 0xe1, 0x07, 0xc9, 0xb9,
|
||||
0xcb, 0xfc, 0x92, 0x32, 0xc1, 0x7b, 0x70, 0x42, 0xf7, 0xa0, 0xc1, 0xbc, 0x9d, 0x31, 0xc0, 0xe8,
|
||||
0x26, 0xc0, 0xe0, 0x65, 0x52, 0x45, 0xcd, 0x17, 0x97, 0x1d, 0x7d, 0x5b, 0x1c, 0xf9, 0x8c, 0x39,
|
||||
0xfa, 0x1d, 0x34, 0xcf, 0x98, 0x73, 0x7f, 0xd0, 0xa3, 0x52, 0xc4, 0x33, 0x92, 0xc0, 0x2f, 0x16,
|
||||
0x9c, 0x1c, 0xc6, 0x37, 0x49, 0x5c, 0x83, 0x9c, 0xe8, 0x95, 0x23, 0x79, 0x9c, 0x4d, 0xe6, 0xb1,
|
||||
0xdd, 0x26, 0x01, 0x27, 0x9e, 0x0c, 0x2a, 0x7d, 0x37, 0x33, 0x2f, 0x5e, 0x2d, 0x4c, 0x94, 0xb2,
|
||||
0x42, 0x95, 0x03, 0xdd, 0x1a, 0x41, 0x77, 0x65, 0x2c, 0x5d, 0x0d, 0x1f, 0xe5, 0x8b, 0x2f, 0x47,
|
||||
0x49, 0x6e, 0x36, 0x18, 0x6b, 0x86, 0x55, 0x3a, 0x09, 0xd9, 0x1a, 0xad, 0xfb, 0x35, 0xa1, 0xea,
|
||||
0x34, 0x59, 0x32, 0x33, 0xec, 0xc2, 0xa9, 0x84, 0xc7, 0xe0, 0x78, 0x55, 0xe4, 0x82, 0x69, 0xbe,
|
||||
0x9e, 0xe0, 0x59, 0xd3, 0xfd, 0xfb, 0xa4, 0x4d, 0x9a, 0x61, 0x13, 0xf0, 0x3d, 0xd3, 0xdf, 0x70,
|
||||
0xd5, 0x84, 0xb8, 0x02, 0xd9, 0x96, 0x5a, 0x51, 0x31, 0xf2, 0xc5, 0xb9, 0x64, 0x65, 0xb4, 0x47,
|
||||
0x58, 0x10, 0x6d, 0x8d, 0x4f, 0xf4, 0xef, 0x2a, 0xa7, 0x37, 0x69, 0xd8, 0x1a, 0x4c, 0xfa, 0xf7,
|
||||
0xd0, 0x2c, 0x1b, 0x98, 0xdb, 0x30, 0x25, 0xab, 0x54, 0x7e, 0x48, 0xcd, 0x5d, 0xd8, 0x74, 0x64,
|
||||
0xb8, 0x3f, 0x5f, 0x2d, 0x2c, 0xfb, 0x75, 0x51, 0xeb, 0x54, 0x1c, 0x8f, 0x35, 0x5d, 0xa3, 0x62,
|
||||
0xfa, 0xe7, 0x12, 0xaf, 0xee, 0xb8, 0x62, 0xb7, 0x45, 0xb9, 0x73, 0x3b, 0x10, 0xf2, 0xe2, 0xaa,
|
||||
0x90, 0xf8, 0x92, 0xa9, 0xc7, 0x03, 0x29, 0x5c, 0xde, 0x16, 0x69, 0x34, 0xa2, 0x77, 0xa1, 0x4a,
|
||||
0x04, 0x09, 0xef, 0x82, 0x1c, 0xe3, 0x8f, 0xe0, 0xd8, 0x0d, 0x51, 0xd3, 0x66, 0xfd, 0xe3, 0x48,
|
||||
0xda, 0x3e, 0x0f, 0xad, 0xe4, 0x18, 0x9d, 0x82, 0x9c, 0x4f, 0x78, 0xd9, 0x23, 0x2d, 0xf3, 0x78,
|
||||
0x65, 0x7d, 0xc2, 0xb7, 0x48, 0x0b, 0xaf, 0xc0, 0xf1, 0x1b, 0x5c, 0xd4, 0x9b, 0x44, 0xd0, 0x5b,
|
||||
0x64, 0x50, 0xb6, 0x19, 0x98, 0xf4, 0x89, 0x0e, 0x91, 0x29, 0xc9, 0x21, 0xfe, 0xd5, 0x0a, 0x2f,
|
||||
0x50, 0x9b, 0x78, 0x74, 0xbb, 0x17, 0xa2, 0x6d, 0xc0, 0x64, 0x93, 0xfb, 0xa6, 0xba, 0x0b, 0xc9,
|
||||
0xea, 0xde, 0xe3, 0xfe, 0x0d, 0xb9, 0x46, 0x3b, 0xcd, 0xed, 0x5e, 0x49, 0xda, 0xa2, 0xd3, 0x30,
|
||||
0x25, 0x7a, 0xe5, 0x7a, 0x50, 0xa5, 0x3d, 0xc5, 0x66, 0xba, 0x94, 0x13, 0xbd, 0xdb, 0x72, 0x8a,
|
||||
0xae, 0xc1, 0x51, 0x21, 0xe3, 0x97, 0x3d, 0x16, 0x3c, 0xac, 0xfb, 0xea, 0x1d, 0xcd, 0x17, 0xcf,
|
||||
0x8c, 0x3c, 0xce, 0x1e, 0xdd, 0x52, 0x46, 0xa5, 0xbc, 0x18, 0x4c, 0xf0, 0x05, 0xd3, 0xa1, 0x3e,
|
||||
0xcd, 0xf4, 0xda, 0x15, 0xbf, 0x3b, 0x06, 0x87, 0x95, 0x31, 0xfa, 0xc1, 0x82, 0x9c, 0x91, 0x06,
|
||||
0xb4, 0x94, 0x44, 0x1b, 0xa1, 0xfd, 0xf6, 0xf2, 0x38, 0x33, 0x0d, 0x8c, 0x2f, 0x7e, 0xff, 0xfb,
|
||||
0xdf, 0x3f, 0x1d, 0x5a, 0x42, 0xe7, 0xdc, 0xc4, 0xe7, 0x85, 0x91, 0x07, 0xf7, 0xb1, 0x79, 0x0b,
|
||||
0xf7, 0xd0, 0xcf, 0x16, 0x4c, 0xc7, 0x14, 0x18, 0x5d, 0x4c, 0x81, 0x19, 0xa5, 0xf4, 0xf6, 0xfa,
|
||||
0xc1, 0x8c, 0x0d, 0xb3, 0xa2, 0x62, 0xb6, 0x8e, 0x2e, 0x24, 0x99, 0x85, 0x62, 0x9f, 0x20, 0xf8,
|
||||
0x9b, 0x05, 0x33, 0xc3, 0x62, 0x8a, 0x9c, 0x14, 0xd8, 0x14, 0x0d, 0xb7, 0xdd, 0x03, 0xdb, 0x1b,
|
||||
0xa6, 0x57, 0x15, 0xd3, 0x0f, 0x50, 0x31, 0xc9, 0xb4, 0x1b, 0xfa, 0x0c, 0xc8, 0x46, 0xbf, 0x0f,
|
||||
0xf6, 0xd0, 0x13, 0x0b, 0x72, 0x46, 0x36, 0x53, 0x5b, 0x1b, 0x57, 0xe4, 0xd4, 0xd6, 0x0e, 0xa9,
|
||||
0x2f, 0x5e, 0x57, 0xb4, 0x96, 0xd1, 0xf9, 0x24, 0x2d, 0x23, 0xc3, 0x3c, 0x52, 0xba, 0x67, 0x16,
|
||||
0xe4, 0x8c, 0x80, 0xa6, 0x12, 0x89, 0xab, 0x75, 0x2a, 0x91, 0x21, 0x1d, 0xc6, 0x1b, 0x8a, 0xc8,
|
||||
0x45, 0xb4, 0x96, 0x24, 0xc2, 0xb5, 0xe9, 0x80, 0x87, 0xfb, 0x78, 0x87, 0xee, 0xee, 0xa1, 0xaf,
|
||||
0x20, 0x23, 0x75, 0x16, 0xe1, 0xd4, 0x23, 0xd3, 0x17, 0x6f, 0xfb, 0xdc, 0xbe, 0x36, 0x86, 0xc3,
|
||||
0x9a, 0xe2, 0x70, 0x0e, 0x9d, 0x1d, 0x75, 0x9a, 0xaa, 0xb1, 0x4a, 0x7c, 0x0b, 0x59, 0x2d, 0xc3,
|
||||
0xe8, 0x7c, 0x4a, 0xe4, 0x98, 0xb2, 0xdb, 0x4b, 0x63, 0xac, 0x0c, 0x83, 0x55, 0xc5, 0x00, 0xa3,
|
||||
0x45, 0x77, 0xc4, 0x87, 0xbc, 0x92, 0x47, 0xf7, 0xb1, 0x14, 0x67, 0xd5, 0x8a, 0x23, 0x7d, 0x19,
|
||||
0x45, 0x2b, 0x69, 0xed, 0x1e, 0x12, 0x7a, 0x7b, 0x75, 0xbc, 0xe1, 0xf8, 0x4b, 0x5f, 0x91, 0xc6,
|
||||
0x31, 0x36, 0x4f, 0x2d, 0x80, 0x81, 0xfa, 0xa1, 0x7d, 0x51, 0xa2, 0x92, 0x6a, 0xaf, 0x1d, 0xc0,
|
||||
0xd2, 0x10, 0x5a, 0x52, 0x84, 0x16, 0xd0, 0x99, 0x34, 0x42, 0x4a, 0x5b, 0xd1, 0x97, 0x90, 0xd5,
|
||||
0x72, 0x98, 0xda, 0x99, 0x98, 0xea, 0xa6, 0x76, 0x26, 0xae, 0xc2, 0x78, 0x51, 0xa1, 0xdb, 0x68,
|
||||
0x2e, 0x89, 0xae, 0xf5, 0x16, 0xf5, 0x20, 0x67, 0x64, 0x0c, 0x2d, 0x26, 0x63, 0xc6, 0x15, 0xce,
|
||||
0x5e, 0x19, 0x27, 0x33, 0x21, 0x2e, 0x56, 0xb8, 0xf3, 0xc8, 0x4e, 0xe2, 0x52, 0x51, 0x2b, 0x7b,
|
||||
0x12, 0xee, 0x1b, 0xc8, 0x47, 0x14, 0xf0, 0x00, 0xe8, 0x23, 0x72, 0x1e, 0x21, 0xa1, 0x78, 0x59,
|
||||
0x61, 0x2f, 0xa2, 0xc2, 0x08, 0x6c, 0x63, 0x5e, 0xf6, 0x09, 0x47, 0x5f, 0x43, 0xce, 0x68, 0x55,
|
||||
0xea, 0xab, 0x10, 0x97, 0xdc, 0xd4, 0x57, 0x61, 0x48, 0xf2, 0xf6, 0xcb, 0x5e, 0x8b, 0xac, 0xe8,
|
||||
0x6d, 0x6e, 0xbe, 0x78, 0x5d, 0xb0, 0x5e, 0xbe, 0x2e, 0x58, 0x7f, 0xbd, 0x2e, 0x58, 0x3f, 0xbe,
|
||||
0x29, 0x4c, 0xbc, 0x7c, 0x53, 0x98, 0xf8, 0xe3, 0x4d, 0x61, 0xe2, 0x8b, 0xd5, 0xc8, 0x87, 0x8b,
|
||||
0xa8, 0x91, 0x36, 0xaf, 0xf3, 0x48, 0x9c, 0x9e, 0x8a, 0xa4, 0x3e, 0x5f, 0x2a, 0x59, 0xf5, 0x1f,
|
||||
0xf9, 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xca, 0x68, 0xb3, 0x71, 0xec, 0x0f, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
@@ -1337,6 +1455,8 @@ type QueryClient interface {
|
||||
EthCall(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*MsgEthereumTxResponse, error)
|
||||
// EstimateGas implements the `eth_estimateGas` rpc api
|
||||
EstimateGas(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*EstimateGasResponse, error)
|
||||
// TraceTx implements the `debug_traceTransaction` rpc api
|
||||
TraceTx(ctx context.Context, in *QueryTraceTxRequest, opts ...grpc.CallOption) (*QueryTraceTxResponse, error)
|
||||
}
|
||||
|
||||
type queryClient struct {
|
||||
@@ -1455,6 +1575,15 @@ func (c *queryClient) EstimateGas(ctx context.Context, in *EthCallRequest, opts
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *queryClient) TraceTx(ctx context.Context, in *QueryTraceTxRequest, opts ...grpc.CallOption) (*QueryTraceTxResponse, error) {
|
||||
out := new(QueryTraceTxResponse)
|
||||
err := c.cc.Invoke(ctx, "/ethermint.evm.v1.Query/TraceTx", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// QueryServer is the server API for Query service.
|
||||
type QueryServer interface {
|
||||
// Account queries an Ethereum account.
|
||||
@@ -1483,6 +1612,8 @@ type QueryServer interface {
|
||||
EthCall(context.Context, *EthCallRequest) (*MsgEthereumTxResponse, error)
|
||||
// EstimateGas implements the `eth_estimateGas` rpc api
|
||||
EstimateGas(context.Context, *EthCallRequest) (*EstimateGasResponse, error)
|
||||
// TraceTx implements the `debug_traceTransaction` rpc api
|
||||
TraceTx(context.Context, *QueryTraceTxRequest) (*QueryTraceTxResponse, error)
|
||||
}
|
||||
|
||||
// UnimplementedQueryServer can be embedded to have forward compatible implementations.
|
||||
@@ -1525,6 +1656,9 @@ func (*UnimplementedQueryServer) EthCall(ctx context.Context, req *EthCallReques
|
||||
func (*UnimplementedQueryServer) EstimateGas(ctx context.Context, req *EthCallRequest) (*EstimateGasResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method EstimateGas not implemented")
|
||||
}
|
||||
func (*UnimplementedQueryServer) TraceTx(ctx context.Context, req *QueryTraceTxRequest) (*QueryTraceTxResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method TraceTx not implemented")
|
||||
}
|
||||
|
||||
func RegisterQueryServer(s grpc1.Server, srv QueryServer) {
|
||||
s.RegisterService(&_Query_serviceDesc, srv)
|
||||
@@ -1746,6 +1880,24 @@ func _Query_EstimateGas_Handler(srv interface{}, ctx context.Context, dec func(i
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Query_TraceTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(QueryTraceTxRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(QueryServer).TraceTx(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/ethermint.evm.v1.Query/TraceTx",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(QueryServer).TraceTx(ctx, req.(*QueryTraceTxRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
var _Query_serviceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "ethermint.evm.v1.Query",
|
||||
HandlerType: (*QueryServer)(nil),
|
||||
@@ -1798,6 +1950,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{
|
||||
MethodName: "EstimateGas",
|
||||
Handler: _Query_EstimateGas_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "TraceTx",
|
||||
Handler: _Query_TraceTx_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "ethermint/evm/v1/query.proto",
|
||||
@@ -2623,6 +2779,88 @@ func (m *EstimateGasResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxRequest) Marshal() (dAtA []byte, err error) {
|
||||
size := m.Size()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxRequest) MarshalTo(dAtA []byte) (int, error) {
|
||||
size := m.Size()
|
||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.TraceConfig != nil {
|
||||
{
|
||||
size, err := m.TraceConfig.MarshalToSizedBuffer(dAtA[:i])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i -= size
|
||||
i = encodeVarintQuery(dAtA, i, uint64(size))
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x1a
|
||||
}
|
||||
if m.TxIndex != 0 {
|
||||
i = encodeVarintQuery(dAtA, i, uint64(m.TxIndex))
|
||||
i--
|
||||
dAtA[i] = 0x10
|
||||
}
|
||||
if m.Msg != nil {
|
||||
{
|
||||
size, err := m.Msg.MarshalToSizedBuffer(dAtA[:i])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i -= size
|
||||
i = encodeVarintQuery(dAtA, i, uint64(size))
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0xa
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxResponse) Marshal() (dAtA []byte, err error) {
|
||||
size := m.Size()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxResponse) MarshalTo(dAtA []byte) (int, error) {
|
||||
size := m.Size()
|
||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if len(m.Data) > 0 {
|
||||
i -= len(m.Data)
|
||||
copy(dAtA[i:], m.Data)
|
||||
i = encodeVarintQuery(dAtA, i, uint64(len(m.Data)))
|
||||
i--
|
||||
dAtA[i] = 0xa
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func encodeVarintQuery(dAtA []byte, offset int, v uint64) int {
|
||||
offset -= sovQuery(v)
|
||||
base := offset
|
||||
@@ -2983,6 +3221,39 @@ func (m *EstimateGasResponse) Size() (n int) {
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxRequest) Size() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
if m.Msg != nil {
|
||||
l = m.Msg.Size()
|
||||
n += 1 + l + sovQuery(uint64(l))
|
||||
}
|
||||
if m.TxIndex != 0 {
|
||||
n += 1 + sovQuery(uint64(m.TxIndex))
|
||||
}
|
||||
if m.TraceConfig != nil {
|
||||
l = m.TraceConfig.Size()
|
||||
n += 1 + l + sovQuery(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *QueryTraceTxResponse) Size() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
l = len(m.Data)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovQuery(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
func sovQuery(x uint64) (n int) {
|
||||
return (math_bits.Len64(x|1) + 6) / 7
|
||||
}
|
||||
@@ -5214,6 +5485,231 @@ func (m *EstimateGasResponse) Unmarshal(dAtA []byte) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *QueryTraceTxRequest) Unmarshal(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
for iNdEx < l {
|
||||
preIndex := iNdEx
|
||||
var wire uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowQuery
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
wire |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
fieldNum := int32(wire >> 3)
|
||||
wireType := int(wire & 0x7)
|
||||
if wireType == 4 {
|
||||
return fmt.Errorf("proto: QueryTraceTxRequest: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: QueryTraceTxRequest: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
case 1:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType)
|
||||
}
|
||||
var msglen int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowQuery
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
msglen |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
if msglen < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
postIndex := iNdEx + msglen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.Msg == nil {
|
||||
m.Msg = &MsgEthereumTx{}
|
||||
}
|
||||
if err := m.Msg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
case 2:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field TxIndex", wireType)
|
||||
}
|
||||
m.TxIndex = 0
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowQuery
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
m.TxIndex |= uint32(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
case 3:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field TraceConfig", wireType)
|
||||
}
|
||||
var msglen int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowQuery
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
msglen |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
if msglen < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
postIndex := iNdEx + msglen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.TraceConfig == nil {
|
||||
m.TraceConfig = &TraceConfig{}
|
||||
}
|
||||
if err := m.TraceConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipQuery(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *QueryTraceTxResponse) Unmarshal(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
for iNdEx < l {
|
||||
preIndex := iNdEx
|
||||
var wire uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowQuery
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
wire |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
fieldNum := int32(wire >> 3)
|
||||
wireType := int(wire & 0x7)
|
||||
if wireType == 4 {
|
||||
return fmt.Errorf("proto: QueryTraceTxResponse: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: QueryTraceTxResponse: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
case 1:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
|
||||
}
|
||||
var byteLen int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowQuery
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
byteLen |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
if byteLen < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
postIndex := iNdEx + byteLen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
|
||||
if m.Data == nil {
|
||||
m.Data = []byte{}
|
||||
}
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipQuery(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if (skippy < 0) || (iNdEx+skippy) < 0 {
|
||||
return ErrInvalidLengthQuery
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func skipQuery(dAtA []byte) (n int, err error) {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
|
||||
@@ -629,6 +629,42 @@ func local_request_Query_EstimateGas_0(ctx context.Context, marshaler runtime.Ma
|
||||
|
||||
}
|
||||
|
||||
var (
|
||||
filter_Query_TraceTx_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
|
||||
)
|
||||
|
||||
func request_Query_TraceTx_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq QueryTraceTxRequest
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_TraceTx_0); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := client.TraceTx(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func local_request_Query_TraceTx_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq QueryTraceTxRequest
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
if err := req.ParseForm(); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_TraceTx_0); err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
msg, err := server.TraceTx(ctx, &protoReq)
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
// RegisterQueryHandlerServer registers the http handlers for service Query to "mux".
|
||||
// UnaryRPC :call QueryServer directly.
|
||||
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
|
||||
@@ -875,6 +911,26 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Query_TraceTx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := local_request_Query_TraceTx_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Query_TraceTx_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1156,6 +1212,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_Query_TraceTx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_Query_TraceTx_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_Query_TraceTx_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1183,6 +1259,8 @@ var (
|
||||
pattern_Query_EthCall_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "eth_call"}, "", runtime.AssumeColonVerbOpt(true)))
|
||||
|
||||
pattern_Query_EstimateGas_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "estimate_gas"}, "", runtime.AssumeColonVerbOpt(true)))
|
||||
|
||||
pattern_Query_TraceTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "trace_tx"}, "", runtime.AssumeColonVerbOpt(true)))
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -1209,4 +1287,6 @@ var (
|
||||
forward_Query_EthCall_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Query_EstimateGas_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_Query_TraceTx_0 = runtime.ForwardResponseMessage
|
||||
)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/big"
|
||||
"os"
|
||||
|
||||
@@ -38,3 +39,64 @@ func NewTracer(tracer string, msg core.Message, cfg *params.ChainConfig, height
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// ExecutionResult groups all structured logs emitted by the EVM
|
||||
// while replaying a transaction in debug mode as well as transaction
|
||||
// execution status, the amount of gas used and the return value
|
||||
type ExecutionResult struct {
|
||||
Gas uint64 `json:"gas"`
|
||||
Failed bool `json:"failed"`
|
||||
ReturnValue string `json:"returnValue"`
|
||||
StructLogs []StructLogRes `json:"structLogs"`
|
||||
}
|
||||
|
||||
// StructLogRes stores a structured log emitted by the EVM while replaying a
|
||||
// transaction in debug mode. Taken from go-ethereum
|
||||
type StructLogRes struct {
|
||||
Pc uint64 `json:"pc"`
|
||||
Op string `json:"op"`
|
||||
Gas uint64 `json:"gas"`
|
||||
GasCost uint64 `json:"gasCost"`
|
||||
Depth int `json:"depth"`
|
||||
Error string `json:"error,omitempty"`
|
||||
Stack *[]string `json:"stack,omitempty"`
|
||||
Memory *[]string `json:"memory,omitempty"`
|
||||
Storage *map[string]string `json:"storage,omitempty"`
|
||||
}
|
||||
|
||||
// FormatLogs formats EVM returned structured logs for json output
|
||||
func FormatLogs(logs []vm.StructLog) []StructLogRes {
|
||||
formatted := make([]StructLogRes, len(logs))
|
||||
for index, trace := range logs {
|
||||
formatted[index] = StructLogRes{
|
||||
Pc: trace.Pc,
|
||||
Op: trace.Op.String(),
|
||||
Gas: trace.Gas,
|
||||
GasCost: trace.GasCost,
|
||||
Depth: trace.Depth,
|
||||
Error: trace.ErrorString(),
|
||||
}
|
||||
if trace.Stack != nil {
|
||||
stack := make([]string, len(trace.Stack))
|
||||
for i, stackValue := range trace.Stack {
|
||||
stack[i] = fmt.Sprintf("%x", stackValue)
|
||||
}
|
||||
formatted[index].Stack = &stack
|
||||
}
|
||||
if trace.Memory != nil {
|
||||
memory := make([]string, 0, (len(trace.Memory)+31)/32)
|
||||
for i := 0; i+32 <= len(trace.Memory); i += 32 {
|
||||
memory = append(memory, fmt.Sprintf("%x", trace.Memory[i:i+32]))
|
||||
}
|
||||
formatted[index].Memory = &memory
|
||||
}
|
||||
if trace.Storage != nil {
|
||||
storage := make(map[string]string)
|
||||
for i, storageValue := range trace.Storage {
|
||||
storage[fmt.Sprintf("%x", i)] = fmt.Sprintf("%x", storageValue)
|
||||
}
|
||||
formatted[index].Storage = &storage
|
||||
}
|
||||
}
|
||||
return formatted
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user