diff --git a/api/debug/debug.go b/api/debug/debug.go index 8ba2486a5..06cf10f64 100644 --- a/api/debug/debug.go +++ b/api/debug/debug.go @@ -45,20 +45,21 @@ func New(repo *chain.Repository, stater *state.Stater, forkConfig thor.ForkConfi } } -func (d *Debug) handleTxEnv(ctx context.Context, blockID thor.Bytes32, txIndex uint64, clauseIndex uint64) (*runtime.Runtime, *runtime.TransactionExecutor, error) { +func (d *Debug) prepareClauseEnv(ctx context.Context, blockID thor.Bytes32, txIndex uint64, clauseIndex uint64) (*runtime.Runtime, *runtime.TransactionExecutor, thor.Bytes32, error) { block, err := d.repo.GetBlock(blockID) if err != nil { if d.repo.IsNotFound(err) { - return nil, nil, utils.Forbidden(errors.New("block not found")) + return nil, nil, thor.Bytes32{}, utils.Forbidden(errors.New("block not found")) } - return nil, nil, err + return nil, nil, thor.Bytes32{}, err } txs := block.Transactions() if txIndex >= uint64(len(txs)) { - return nil, nil, utils.Forbidden(errors.New("tx index out of range")) + return nil, nil, thor.Bytes32{}, utils.Forbidden(errors.New("tx index out of range")) } + txID := txs[txIndex].ID() if clauseIndex >= uint64(len(txs[txIndex].Clauses())) { - return nil, nil, utils.Forbidden(errors.New("clause index out of range")) + return nil, nil, thor.Bytes32{}, utils.Forbidden(errors.New("clause index out of range")) } skipPoA := d.repo.GenesisBlock().Header().ID() == devNetGenesisID rt, err := consensus.New( @@ -67,7 +68,7 @@ func (d *Debug) handleTxEnv(ctx context.Context, blockID thor.Bytes32, txIndex u d.forkConfig, ).NewRuntimeForReplay(block.Header(), skipPoA) if err != nil { - return nil, nil, err + return nil, nil, thor.Bytes32{}, err } for i, tx := range txs { if uint64(i) > txIndex { @@ -75,36 +76,45 @@ func (d *Debug) handleTxEnv(ctx context.Context, blockID thor.Bytes32, txIndex u } txExec, err := rt.PrepareTransaction(tx) if err != nil { - return nil, nil, err + return nil, nil, thor.Bytes32{}, err } clauseCounter := uint64(0) for txExec.HasNextClause() { if txIndex == uint64(i) && clauseIndex == clauseCounter { - return rt, txExec, nil + return rt, txExec, txID, nil } if _, _, err := txExec.NextClause(); err != nil { - return nil, nil, err + return nil, nil, thor.Bytes32{}, err } clauseCounter++ } if _, err := txExec.Finalize(); err != nil { - return nil, nil, err + return nil, nil, thor.Bytes32{}, err } select { case <-ctx.Done(): - return nil, nil, ctx.Err() + return nil, nil, thor.Bytes32{}, ctx.Err() default: } } - return nil, nil, utils.Forbidden(errors.New("early reverted")) + return nil, nil, thor.Bytes32{}, utils.Forbidden(errors.New("early reverted")) } -//trace an existed transaction -func (d *Debug) traceTransaction(ctx context.Context, tracer tracers.Tracer, blockID thor.Bytes32, txIndex uint64, clauseIndex uint64) (interface{}, error) { - rt, txExec, err := d.handleTxEnv(ctx, blockID, txIndex, clauseIndex) +// trace an existed clause +func (d *Debug) traceClause(ctx context.Context, tracer tracers.Tracer, blockID thor.Bytes32, txIndex uint64, clauseIndex uint64) (interface{}, error) { + rt, txExec, txID, err := d.prepareClauseEnv(ctx, blockID, txIndex, clauseIndex) if err != nil { return nil, err } + + tracer.SetContext(&tracers.Context{ + BlockID: blockID, + BlockTime: rt.Context().Time, + TxID: txID, + TxIndex: int(txIndex), + ClauseIndex: int(clauseIndex), + State: rt.State(), + }) rt.SetVMConfig(vm.Config{Debug: true, Tracer: tracer}) _, _, err = txExec.NextClause() if err != nil { @@ -113,7 +123,7 @@ func (d *Debug) traceTransaction(ctx context.Context, tracer tracers.Tracer, blo return tracer.GetResult() } -func (d *Debug) handleTraceTransaction(w http.ResponseWriter, req *http.Request) error { +func (d *Debug) handleTraceClause(w http.ResponseWriter, req *http.Request) error { var opt *TracerOption if err := utils.ParseJSON(req.Body, &opt); err != nil { return utils.BadRequest(errors.WithMessage(err, "body")) @@ -133,7 +143,7 @@ func (d *Debug) handleTraceTransaction(w http.ResponseWriter, req *http.Request) if !strings.HasSuffix(name, "Tracer") { name += "Tracer" } - tr, err := tracers.New(name, nil, opt.Config) + tr, err := tracers.DefaultDirectory.New(name, opt.Config) if err != nil { return err } @@ -143,7 +153,7 @@ func (d *Debug) handleTraceTransaction(w http.ResponseWriter, req *http.Request) if err != nil { return err } - res, err := d.traceTransaction(req.Context(), tracer, blockID, txIndex, clauseIndex) + res, err := d.traceClause(req.Context(), tracer, blockID, txIndex, clauseIndex) if err != nil { return err } @@ -151,7 +161,7 @@ func (d *Debug) handleTraceTransaction(w http.ResponseWriter, req *http.Request) } func (d *Debug) debugStorage(ctx context.Context, contractAddress thor.Address, blockID thor.Bytes32, txIndex uint64, clauseIndex uint64, keyStart []byte, maxResult int) (*StorageRangeResult, error) { - rt, _, err := d.handleTxEnv(ctx, blockID, txIndex, clauseIndex) + rt, _, _, err := d.prepareClauseEnv(ctx, blockID, txIndex, clauseIndex) if err != nil { return nil, err } @@ -250,7 +260,7 @@ func (d *Debug) parseTarget(target string) (blockID thor.Bytes32, txIndex uint64 func (d *Debug) Mount(root *mux.Router, pathPrefix string) { sub := root.PathPrefix(pathPrefix).Subrouter() - sub.Path("/tracers").Methods(http.MethodPost).HandlerFunc(utils.WrapHandlerFunc(d.handleTraceTransaction)) + sub.Path("/tracers").Methods(http.MethodPost).HandlerFunc(utils.WrapHandlerFunc(d.handleTraceClause)) sub.Path("/storage-range").Methods(http.MethodPost).HandlerFunc(utils.WrapHandlerFunc(d.handleDebugStorage)) } diff --git a/tracers/logger/logger.go b/tracers/logger/logger.go index 13cdca95d..57d91e31c 100644 --- a/tracers/logger/logger.go +++ b/tracers/logger/logger.go @@ -1,4 +1,4 @@ -// Copyright 2015 The go-ethereum Authors +// Copyright 2021 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -24,12 +24,13 @@ import ( "math/big" "strings" "sync/atomic" - "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/types" "github.com/holiman/uint256" + "github.com/vechain/thor/tracers" "github.com/vechain/thor/vm" ) @@ -38,7 +39,7 @@ type Storage map[common.Hash]common.Hash // Copy duplicates the current storage. func (s Storage) Copy() Storage { - cpy := make(Storage) + cpy := make(Storage, len(s)) for key, value := range s { cpy[key] = value } @@ -112,8 +113,8 @@ type StructLogger struct { err error usedGas uint64 - interrupt uint32 // Atomic flag to signal execution interruption - reason error // Textual reason for the interruption + interrupt atomic.Value // Atomic flag to signal execution interruption + reason error // Textual reason for the interruption } // NewStructLogger returns a new logger @@ -150,8 +151,7 @@ func (l *StructLogger) CaptureStart(env *vm.EVM, from common.Address, to common. // CaptureState also tracks SLOAD/SSTORE ops to track storage change. func (l *StructLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, rData []byte, depth int, err error) { // If tracing was interrupted, set the error and stop - if atomic.LoadUint32(&l.interrupt) > 0 { - l.env.Cancel() + if stop := l.interrupt.Load(); stop != nil && stop.(bool) { return } // check if already accumulated the specified number of logs @@ -217,12 +217,12 @@ func (l *StructLogger) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, m } // CaptureEnd is called after the call finishes to finalize the tracing. -func (l *StructLogger) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) { +func (l *StructLogger) CaptureEnd(output []byte, gasUsed uint64, err error) { l.output = output l.err = err l.usedGas = gasUsed if l.cfg.Debug { - fmt.Printf("0x%x\n", output) + fmt.Printf("%#x\n", output) if err != nil { fmt.Printf(" error: %v\n", err) } @@ -235,6 +235,9 @@ func (l *StructLogger) CaptureEnter(typ vm.OpCode, from common.Address, to commo func (l *StructLogger) CaptureExit(output []byte, gasUsed uint64, err error) { } +func (l *StructLogger) SetContext(ctx *tracers.Context) { +} + func (l *StructLogger) GetResult() (json.RawMessage, error) { // Tracing aborted if l.reason != nil { @@ -258,7 +261,7 @@ func (l *StructLogger) GetResult() (json.RawMessage, error) { // Stop terminates execution of the tracer at the first opportune moment. func (l *StructLogger) Stop(err error) { l.reason = err - atomic.StoreUint32(&l.interrupt, 1) + l.interrupt.Store(true) } // StructLogs returns the captured log entries. @@ -303,6 +306,20 @@ func WriteTrace(writer io.Writer, logs []StructLog) { } } +// WriteLogs writes vm logs in a readable format to the given writer +func WriteLogs(writer io.Writer, logs []*types.Log) { + for _, log := range logs { + fmt.Fprintf(writer, "LOG%d: %x bn=%d txi=%x\n", len(log.Topics), log.Address, log.BlockNumber, log.TxIndex) + + for i, topic := range log.Topics { + fmt.Fprintf(writer, "%08d %x\n", i, topic) + } + + fmt.Fprint(writer, hex.Dump(log.Data)) + fmt.Fprintln(writer) + } +} + type mdLogger struct { out io.Writer cfg *Config @@ -322,11 +339,11 @@ func NewMarkdownLogger(cfg *Config, writer io.Writer) *mdLogger { func (t *mdLogger) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { t.env = env if !create { - fmt.Fprintf(t.out, "From: `%v`\nTo: `%v`\nData: `0x%x`\nGas: `%d`\nValue `%v` wei\n", + fmt.Fprintf(t.out, "From: `%v`\nTo: `%v`\nData: `%#x`\nGas: `%d`\nValue `%v` wei\n", from.String(), to.String(), input, gas, value) } else { - fmt.Fprintf(t.out, "From: `%v`\nCreate at: `%v`\nData: `0x%x`\nGas: `%d`\nValue `%v` wei\n", + fmt.Fprintf(t.out, "From: `%v`\nCreate at: `%v`\nData: `%#x`\nGas: `%d`\nValue `%v` wei\n", from.String(), to.String(), input, gas, value) } @@ -361,8 +378,8 @@ func (t *mdLogger) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, memor fmt.Fprintf(t.out, "\nError: at pc=%d, op=%v: %v\n", pc, op, err) } -func (t *mdLogger) CaptureEnd(output []byte, gasUsed uint64, tm time.Duration, err error) { - fmt.Fprintf(t.out, "\nOutput: `0x%x`\nConsumed gas: `%d`\nError: `%v`\n", +func (t *mdLogger) CaptureEnd(output []byte, gasUsed uint64, err error) { + fmt.Fprintf(t.out, "\nOutput: `%#x`\nConsumed gas: `%d`\nError: `%v`\n", output, gasUsed, err) } @@ -391,6 +408,7 @@ type StructLogRes struct { Depth int `json:"depth"` Error string `json:"error,omitempty"` Stack *[]string `json:"stack,omitempty"` + ReturnData string `json:"returnData,omitempty"` Memory *[]string `json:"memory,omitempty"` Storage *map[string]string `json:"storage,omitempty"` RefundCounter uint64 `json:"refund,omitempty"` @@ -416,6 +434,9 @@ func formatLogs(logs []StructLog) []StructLogRes { } formatted[index].Stack = &stack } + if trace.ReturnData != nil && len(trace.ReturnData) > 0 { + formatted[index].ReturnData = hexutil.Bytes(trace.ReturnData).String() + } if trace.Memory != nil { memory := make([]string, 0, (len(trace.Memory)+31)/32) for i := 0; i+32 <= len(trace.Memory); i += 32 { diff --git a/tracers/logger/logger_json.go b/tracers/logger/logger_json.go index f563b7eb1..124561501 100644 --- a/tracers/logger/logger_json.go +++ b/tracers/logger/logger_json.go @@ -1,4 +1,4 @@ -// Copyright 2017 The go-ethereum Authors +// Copyright 2021 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -20,7 +20,6 @@ import ( "encoding/json" "io" "math/big" - "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/math" @@ -77,18 +76,17 @@ func (l *JSONLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, mem } // CaptureEnd is triggered at end of execution. -func (l *JSONLogger) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) { +func (l *JSONLogger) CaptureEnd(output []byte, gasUsed uint64, err error) { type endLog struct { Output string `json:"output"` GasUsed math.HexOrDecimal64 `json:"gasUsed"` - Time time.Duration `json:"time"` Err string `json:"error,omitempty"` } var errMsg string if err != nil { errMsg = err.Error() } - l.encoder.Encode(endLog{common.Bytes2Hex(output), math.HexOrDecimal64(gasUsed), t, errMsg}) + l.encoder.Encode(endLog{common.Bytes2Hex(output), math.HexOrDecimal64(gasUsed), errMsg}) } func (l *JSONLogger) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { diff --git a/tracers/logger/logger_test.go b/tracers/logger/logger_test.go index b7b1bbe84..c1bcb9395 100644 --- a/tracers/logger/logger_test.go +++ b/tracers/logger/logger_test.go @@ -1,4 +1,4 @@ -// Copyright 2016 The go-ethereum Authors +// Copyright 2021 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify @@ -18,7 +18,7 @@ package logger import ( "encoding/json" - "fmt" + "errors" "math/big" "testing" @@ -85,7 +85,7 @@ func TestStructLogMarshalingOmitEmpty(t *testing.T) { }{ {"empty err and no fields", &StructLog{}, `{"pc":0,"op":0,"gas":"0x0","gasCost":"0x0","memSize":0,"stack":null,"depth":0,"refund":0,"opName":"STOP"}`}, - {"with err", &StructLog{Err: fmt.Errorf("this failed")}, + {"with err", &StructLog{Err: errors.New("this failed")}, `{"pc":0,"op":0,"gas":"0x0","gasCost":"0x0","memSize":0,"stack":null,"depth":0,"refund":0,"opName":"STOP","error":"this failed"}`}, {"with mem", &StructLog{Memory: make([]byte, 2), MemorySize: 2}, `{"pc":0,"op":0,"gas":"0x0","gasCost":"0x0","memory":"0x0000","memSize":2,"stack":null,"depth":0,"refund":0,"opName":"STOP"}`}, diff --git a/tracers/native/4byte.go b/tracers/native/4byte.go index fe0901ca0..8c217429a 100644 --- a/tracers/native/4byte.go +++ b/tracers/native/4byte.go @@ -21,7 +21,6 @@ import ( "math/big" "strconv" "sync/atomic" - "time" "github.com/ethereum/go-ethereum/common" "github.com/vechain/thor/tracers" @@ -29,7 +28,7 @@ import ( ) func init() { - register("4byteTracer", newFourByteTracer) + tracers.DefaultDirectory.Register("4byteTracer", newFourByteTracer, false) } // fourByteTracer searches for 4byte-identifiers, and collects them for post-processing. @@ -37,25 +36,26 @@ func init() { // a reversed signature can be matched against the size of the data. // // Example: -// > debug.traceTransaction( "0x214e597e35da083692f5386141e69f47e973b2c56e7a8073b1ea08fd7571e9de", {tracer: "4byteTracer"}) -// { -// 0x27dc297e-128: 1, -// 0x38cc4831-0: 2, -// 0x524f3889-96: 1, -// 0xadf59f99-288: 1, -// 0xc281d19e-0: 1 -// } +// +// > debug.traceTransaction( "0x214e597e35da083692f5386141e69f47e973b2c56e7a8073b1ea08fd7571e9de", {tracer: "4byteTracer"}) +// { +// 0x27dc297e-128: 1, +// 0x38cc4831-0: 2, +// 0x524f3889-96: 1, +// 0xadf59f99-288: 1, +// 0xc281d19e-0: 1 +// } type fourByteTracer struct { - env *vm.EVM + noopTracer ids map[string]int // ids aggregates the 4byte ids found - interrupt uint32 // Atomic flag to signal execution interruption + interrupt atomic.Value // Atomic flag to signal execution interruption reason error // Textual reason for the interruption activePrecompiles []common.Address // Updated on CaptureStart based on given rules } // newFourByteTracer returns a native go tracer which collects // 4 byte-identifiers of a tx, and implements vm.EVMLogger. -func newFourByteTracer(ctx *tracers.Context, _ json.RawMessage) (tracers.Tracer, error) { +func newFourByteTracer(_ json.RawMessage) (tracers.Tracer, error) { t := &fourByteTracer{ ids: make(map[string]int), } @@ -80,8 +80,6 @@ func (t *fourByteTracer) store(id []byte, size int) { // CaptureStart implements the EVMLogger interface to initialize the tracing operation. func (t *fourByteTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { - t.env = env - // Update list of precompiles based on current block rules := env.ChainConfig().Rules(env.Context.BlockNumber) t.activePrecompiles = vm.ActivePrecompiles(rules) @@ -92,15 +90,10 @@ func (t *fourByteTracer) CaptureStart(env *vm.EVM, from common.Address, to commo } } -// CaptureState implements the EVMLogger interface to trace a single step of VM execution. -func (t *fourByteTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, rData []byte, depth int, err error) { -} - // CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). func (t *fourByteTracer) CaptureEnter(op vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { // Skip if tracing was interrupted - if atomic.LoadUint32(&t.interrupt) > 0 { - t.env.Cancel() + if stop := t.interrupt.Load(); stop != nil && stop.(bool) { return } if len(input) < 4 { @@ -118,19 +111,6 @@ func (t *fourByteTracer) CaptureEnter(op vm.OpCode, from common.Address, to comm t.store(input[0:4], len(input)-4) } -// CaptureExit is called when EVM exits a scope, even if the scope didn't -// execute any code. -func (t *fourByteTracer) CaptureExit(output []byte, gasUsed uint64, err error) { -} - -// CaptureFault implements the EVMLogger interface to trace an execution fault. -func (t *fourByteTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, depth int, err error) { -} - -// CaptureEnd is called after the call finishes to finalize the tracing. -func (t *fourByteTracer) CaptureEnd(output []byte, gasUsed uint64, _ time.Duration, err error) { -} - // GetResult returns the json-encoded nested list of call traces, and any // error arising from the encoding or forceful termination (via `Stop`). func (t *fourByteTracer) GetResult() (json.RawMessage, error) { @@ -144,5 +124,9 @@ func (t *fourByteTracer) GetResult() (json.RawMessage, error) { // Stop terminates execution of the tracer at the first opportune moment. func (t *fourByteTracer) Stop(err error) { t.reason = err - atomic.StoreUint32(&t.interrupt, 1) + t.interrupt.Store(true) +} + +func bytesToHex(s []byte) string { + return "0x" + common.Bytes2Hex(s) } diff --git a/tracers/native/call.go b/tracers/native/call.go index 4d5fd9e75..c37d2191a 100644 --- a/tracers/native/call.go +++ b/tracers/native/call.go @@ -20,95 +20,170 @@ import ( "encoding/json" "errors" "math/big" - "strconv" - "strings" "sync/atomic" - "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/vechain/thor/tracers" "github.com/vechain/thor/vm" ) +//go:generate go run github.com/fjl/gencodec -type callFrame -field-override callFrameMarshaling -out gen_callframe_json.go + func init() { - register("callTracer", newCallTracer) + tracers.DefaultDirectory.Register("callTracer", newCallTracer, false) +} + +type callLog struct { + Address common.Address `json:"address"` + Topics []common.Hash `json:"topics"` + Data hexutil.Bytes `json:"data"` } type callFrame struct { - Type string `json:"type"` - From string `json:"from"` - To string `json:"to,omitempty"` - Value string `json:"value,omitempty"` - Gas string `json:"gas"` - GasUsed string `json:"gasUsed"` - Input string `json:"input"` - Output string `json:"output,omitempty"` - Error string `json:"error,omitempty"` - Calls []callFrame `json:"calls,omitempty"` + Type vm.OpCode `json:"-"` + From common.Address `json:"from"` + Gas uint64 `json:"gas"` + GasUsed uint64 `json:"gasUsed"` + To *common.Address `json:"to,omitempty" rlp:"optional"` + Input []byte `json:"input" rlp:"optional"` + Output []byte `json:"output,omitempty" rlp:"optional"` + Error string `json:"error,omitempty" rlp:"optional"` + Calls []callFrame `json:"calls,omitempty" rlp:"optional"` + Logs []callLog `json:"logs,omitempty" rlp:"optional"` + // Placed at end on purpose. The RLP will be decoded to 0 instead of + // nil if there are non-empty elements after in the struct. + Value *big.Int `json:"value,omitempty" rlp:"optional"` +} + +func (f callFrame) TypeString() string { + return f.Type.String() +} + +func (f callFrame) failed() bool { + return len(f.Error) > 0 +} + +func (f *callFrame) processOutput(output []byte, err error) { + output = common.CopyBytes(output) + if err == nil { + f.Output = output + return + } + f.Error = err.Error() + if f.Type == vm.CREATE || f.Type == vm.CREATE2 { + f.To = nil + } + if !errors.Is(err, vm.ErrExecutionReverted) || len(output) == 0 { + return + } + f.Output = output +} + +type callFrameMarshaling struct { + TypeString string `json:"type"` + Gas hexutil.Uint64 + GasUsed hexutil.Uint64 + Value *hexutil.Big + Input hexutil.Bytes + Output hexutil.Bytes } type callTracer struct { - env *vm.EVM + noopTracer callstack []callFrame config callTracerConfig - interrupt uint32 // Atomic flag to signal execution interruption - reason error // Textual reason for the interruption + interrupt atomic.Value // Atomic flag to signal execution interruption + reason error // Textual reason for the interruption } type callTracerConfig struct { OnlyTopCall bool `json:"onlyTopCall"` // If true, call tracer won't collect any subcalls + WithLog bool `json:"withLog"` // If true, call tracer will collect event logs } // newCallTracer returns a native go tracer which tracks // call frames of a tx, and implements vm.EVMLogger. -func newCallTracer(ctx *tracers.Context, cfg json.RawMessage) (tracers.Tracer, error) { - // First callframe contains tx context info - // and is populated on start and end. +func newCallTracer(cfg json.RawMessage) (tracers.Tracer, error) { var config callTracerConfig if cfg != nil { if err := json.Unmarshal(cfg, &config); err != nil { return nil, err } } - + // First callframe contains tx context info + // and is populated on start and end. return &callTracer{callstack: make([]callFrame, 1), config: config}, nil } // CaptureStart implements the EVMLogger interface to initialize the tracing operation. func (t *callTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { - t.env = env + toCopy := to t.callstack[0] = callFrame{ - Type: "CALL", - From: addrToHex(from), - To: addrToHex(to), - Input: bytesToHex(input), - Gas: uintToHex(gas), - Value: bigToHex(value), + Type: vm.CALL, + From: from, + To: &toCopy, + Input: common.CopyBytes(input), + Gas: gas, + Value: value, } if create { - t.callstack[0].Type = "CREATE" + t.callstack[0].Type = vm.CREATE } } // CaptureEnd is called after the call finishes to finalize the tracing. -func (t *callTracer) CaptureEnd(output []byte, gasUsed uint64, _ time.Duration, err error) { - t.callstack[0].GasUsed = uintToHex(gasUsed) - if err != nil { - t.callstack[0].Error = err.Error() - if err == vm.ErrExecutionReverted && len(output) > 0 { - t.callstack[0].Output = bytesToHex(output) - } - } else { - t.callstack[0].Output = bytesToHex(output) +func (t *callTracer) CaptureEnd(output []byte, gasUsed uint64, err error) { + t.callstack[0].GasUsed = gasUsed + t.callstack[0].processOutput(output, err) + if t.config.WithLog { + // Logs are not emitted when the call fails + clearFailedLogs(&t.callstack[0], false) } } // CaptureState implements the EVMLogger interface to trace a single step of VM execution. func (t *callTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, rData []byte, depth int, err error) { -} + // skip if the previous op caused an error + if err != nil { + return + } + // Only logs need to be captured via opcode processing + if !t.config.WithLog { + return + } + // Avoid processing nested calls when only caring about top call + if t.config.OnlyTopCall && depth > 0 { + return + } + // Skip if tracing was interrupted + if stop := t.interrupt.Load(); stop != nil && stop.(bool) { + return + } + switch op { + case vm.LOG0, vm.LOG1, vm.LOG2, vm.LOG3, vm.LOG4: + size := int(op - vm.LOG0) + + stackData := stack.Data() -// CaptureFault implements the EVMLogger interface to trace an execution fault. -func (t *callTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, depth int, err error) { + // Don't modify the stack + mStart := stackData[len(stackData)-1] + mSize := stackData[len(stackData)-2] + topics := make([]common.Hash, size) + for i := 0; i < size; i++ { + topic := stackData[len(stackData)-2-(i+1)] + topics[i] = common.Hash(topic.Bytes32()) + } + + data, err := tracers.GetMemoryCopyPadded(memory, int64(mStart.Uint64()), int64(mSize.Uint64())) + if err != nil { + // mSize was unrealistically large + return + } + + log := callLog{Address: contract.Address(), Topics: topics, Data: hexutil.Bytes(data)} + t.callstack[len(t.callstack)-1].Logs = append(t.callstack[len(t.callstack)-1].Logs, log) + } } // CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). @@ -117,18 +192,18 @@ func (t *callTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common. return } // Skip if tracing was interrupted - if atomic.LoadUint32(&t.interrupt) > 0 { - t.env.Cancel() + if stop := t.interrupt.Load(); stop != nil && stop.(bool) { return } + toCopy := to call := callFrame{ - Type: typ.String(), - From: addrToHex(from), - To: addrToHex(to), - Input: bytesToHex(input), - Gas: uintToHex(gas), - Value: bigToHex(value), + Type: typ, + From: from, + To: &toCopy, + Input: common.CopyBytes(input), + Gas: gas, + Value: value, } t.callstack = append(t.callstack, call) } @@ -148,15 +223,8 @@ func (t *callTracer) CaptureExit(output []byte, gasUsed uint64, err error) { t.callstack = t.callstack[:size-1] size -= 1 - call.GasUsed = uintToHex(gasUsed) - if err == nil { - call.Output = bytesToHex(output) - } else { - call.Error = err.Error() - if call.Type == "CREATE" || call.Type == "CREATE2" { - call.To = "" - } - } + call.GasUsed = gasUsed + call.processOutput(output, err) t.callstack[size-1].Calls = append(t.callstack[size-1].Calls, call) } @@ -176,24 +244,18 @@ func (t *callTracer) GetResult() (json.RawMessage, error) { // Stop terminates execution of the tracer at the first opportune moment. func (t *callTracer) Stop(err error) { t.reason = err - atomic.StoreUint32(&t.interrupt, 1) -} - -func bytesToHex(s []byte) string { - return "0x" + common.Bytes2Hex(s) + t.interrupt.Store(true) } -func bigToHex(n *big.Int) string { - if n == nil { - return "" +// clearFailedLogs clears the logs of a callframe and all its children +// in case of execution failure. +func clearFailedLogs(cf *callFrame, parentFailed bool) { + failed := cf.failed() || parentFailed + // Clear own logs + if failed { + cf.Logs = nil + } + for i := range cf.Calls { + clearFailedLogs(&cf.Calls[i], failed) } - return "0x" + n.Text(16) -} - -func uintToHex(n uint64) string { - return "0x" + strconv.FormatUint(n, 16) -} - -func addrToHex(a common.Address) string { - return strings.ToLower(a.Hex()) } diff --git a/tracers/native/gen_account_json.go b/tracers/native/gen_account_json.go new file mode 100644 index 000000000..88acb771c --- /dev/null +++ b/tracers/native/gen_account_json.go @@ -0,0 +1,56 @@ +// Code generated by github.com/fjl/gencodec. DO NOT EDIT. + +package native + +import ( + "encoding/json" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" +) + +var _ = (*accountMarshaling)(nil) + +// MarshalJSON marshals as JSON. +func (a account) MarshalJSON() ([]byte, error) { + type account struct { + Balance *hexutil.Big `json:"balance,omitempty"` + Energy *hexutil.Big `json:"energy,omitempty"` + Code hexutil.Bytes `json:"code,omitempty"` + Storage map[common.Hash]common.Hash `json:"storage,omitempty"` + } + var enc account + enc.Balance = (*hexutil.Big)(a.Balance) + enc.Energy = (*hexutil.Big)(a.Energy) + enc.Code = a.Code + enc.Storage = a.Storage + return json.Marshal(&enc) +} + +// UnmarshalJSON unmarshals from JSON. +func (a *account) UnmarshalJSON(input []byte) error { + type account struct { + Balance *hexutil.Big `json:"balance,omitempty"` + Energy *hexutil.Big `json:"energy,omitempty"` + Code *hexutil.Bytes `json:"code,omitempty"` + Storage map[common.Hash]common.Hash `json:"storage,omitempty"` + } + var dec account + if err := json.Unmarshal(input, &dec); err != nil { + return err + } + if dec.Balance != nil { + a.Balance = (*big.Int)(dec.Balance) + } + if dec.Energy != nil { + a.Energy = (*big.Int)(dec.Energy) + } + if dec.Code != nil { + a.Code = *dec.Code + } + if dec.Storage != nil { + a.Storage = dec.Storage + } + return nil +} diff --git a/tracers/native/gen_callframe_json.go b/tracers/native/gen_callframe_json.go new file mode 100644 index 000000000..fac5a2b9a --- /dev/null +++ b/tracers/native/gen_callframe_json.go @@ -0,0 +1,101 @@ +// Code generated by github.com/fjl/gencodec. DO NOT EDIT. + +package native + +import ( + "encoding/json" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/vechain/thor/vm" +) + +var _ = (*callFrameMarshaling)(nil) + +// MarshalJSON marshals as JSON. +func (c callFrame) MarshalJSON() ([]byte, error) { + type callFrame0 struct { + Type vm.OpCode `json:"-"` + From common.Address `json:"from"` + Gas hexutil.Uint64 `json:"gas"` + GasUsed hexutil.Uint64 `json:"gasUsed"` + To *common.Address `json:"to,omitempty" rlp:"optional"` + Input hexutil.Bytes `json:"input" rlp:"optional"` + Output hexutil.Bytes `json:"output,omitempty" rlp:"optional"` + Error string `json:"error,omitempty" rlp:"optional"` + Calls []callFrame `json:"calls,omitempty" rlp:"optional"` + Logs []callLog `json:"logs,omitempty" rlp:"optional"` + Value *hexutil.Big `json:"value,omitempty" rlp:"optional"` + TypeString string `json:"type"` + } + var enc callFrame0 + enc.Type = c.Type + enc.From = c.From + enc.Gas = hexutil.Uint64(c.Gas) + enc.GasUsed = hexutil.Uint64(c.GasUsed) + enc.To = c.To + enc.Input = c.Input + enc.Output = c.Output + enc.Error = c.Error + enc.Calls = c.Calls + enc.Logs = c.Logs + enc.Value = (*hexutil.Big)(c.Value) + enc.TypeString = c.TypeString() + return json.Marshal(&enc) +} + +// UnmarshalJSON unmarshals from JSON. +func (c *callFrame) UnmarshalJSON(input []byte) error { + type callFrame0 struct { + Type *vm.OpCode `json:"-"` + From *common.Address `json:"from"` + Gas *hexutil.Uint64 `json:"gas"` + GasUsed *hexutil.Uint64 `json:"gasUsed"` + To *common.Address `json:"to,omitempty" rlp:"optional"` + Input *hexutil.Bytes `json:"input" rlp:"optional"` + Output *hexutil.Bytes `json:"output,omitempty" rlp:"optional"` + Error *string `json:"error,omitempty" rlp:"optional"` + Calls []callFrame `json:"calls,omitempty" rlp:"optional"` + Logs []callLog `json:"logs,omitempty" rlp:"optional"` + Value *hexutil.Big `json:"value,omitempty" rlp:"optional"` + } + var dec callFrame0 + if err := json.Unmarshal(input, &dec); err != nil { + return err + } + if dec.Type != nil { + c.Type = *dec.Type + } + if dec.From != nil { + c.From = *dec.From + } + if dec.Gas != nil { + c.Gas = uint64(*dec.Gas) + } + if dec.GasUsed != nil { + c.GasUsed = uint64(*dec.GasUsed) + } + if dec.To != nil { + c.To = dec.To + } + if dec.Input != nil { + c.Input = *dec.Input + } + if dec.Output != nil { + c.Output = *dec.Output + } + if dec.Error != nil { + c.Error = *dec.Error + } + if dec.Calls != nil { + c.Calls = dec.Calls + } + if dec.Logs != nil { + c.Logs = dec.Logs + } + if dec.Value != nil { + c.Value = (*big.Int)(dec.Value) + } + return nil +} diff --git a/tracers/native/noop.go b/tracers/native/noop.go index d1b3c0932..de12d37ed 100644 --- a/tracers/native/noop.go +++ b/tracers/native/noop.go @@ -19,7 +19,6 @@ package native import ( "encoding/json" "math/big" - "time" "github.com/ethereum/go-ethereum/common" "github.com/vechain/thor/tracers" @@ -27,7 +26,7 @@ import ( ) func init() { - register("noopTracer", newNoopTracer) + tracers.DefaultDirectory.Register("noopTracer", newNoopTracer, false) } // noopTracer is a go implementation of the Tracer interface which @@ -35,7 +34,7 @@ func init() { type noopTracer struct{} // newNoopTracer returns a new noop tracer. -func newNoopTracer(ctx *tracers.Context, _ json.RawMessage) (tracers.Tracer, error) { +func newNoopTracer(_ json.RawMessage) (tracers.Tracer, error) { return &noopTracer{}, nil } @@ -44,7 +43,7 @@ func (t *noopTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Ad } // CaptureEnd is called after the call finishes to finalize the tracing. -func (t *noopTracer) CaptureEnd(output []byte, gasUsed uint64, _ time.Duration, err error) { +func (t *noopTracer) CaptureEnd(output []byte, gasUsed uint64, err error) { } // CaptureState implements the EVMLogger interface to trace a single step of VM execution. @@ -64,6 +63,10 @@ func (t *noopTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common. func (t *noopTracer) CaptureExit(output []byte, gasUsed uint64, err error) { } +// SetContext set the tracer context +func (t *noopTracer) SetContext(ctx *tracers.Context) { +} + // GetResult returns an empty json object. func (t *noopTracer) GetResult() (json.RawMessage, error) { return json.RawMessage(`{}`), nil diff --git a/tracers/native/prestate.go b/tracers/native/prestate.go index e42e3b6a7..c8678bae2 100644 --- a/tracers/native/prestate.go +++ b/tracers/native/prestate.go @@ -17,43 +17,78 @@ package native import ( + "bytes" "encoding/json" "math/big" "sync/atomic" - "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/crypto" + "github.com/vechain/thor/thor" "github.com/vechain/thor/tracers" "github.com/vechain/thor/vm" ) +//go:generate go run github.com/fjl/gencodec -type account -field-override accountMarshaling -out gen_account_json.go + func init() { - register("prestateTracer", newPrestateTracer) + tracers.DefaultDirectory.Register("prestateTracer", newPrestateTracer, false) } -type prestate = map[common.Address]*account +type state = map[common.Address]*account + type account struct { - Balance string `json:"balance"` - Nonce uint64 `json:"nonce"` - Code string `json:"code"` - Storage map[common.Hash]common.Hash `json:"storage"` + Balance *big.Int `json:"balance,omitempty"` + Energy *big.Int `json:"energy,omitempty"` + Code []byte `json:"code,omitempty"` + Storage map[common.Hash]common.Hash `json:"storage,omitempty"` +} + +func (a *account) exists() bool { + return len(a.Code) > 0 || len(a.Storage) > 0 || (a.Balance != nil && a.Balance.Sign() != 0) || (a.Energy != nil && a.Energy.Sign() != 0) +} + +type accountMarshaling struct { + Balance *hexutil.Big + Energy *hexutil.Big + Code hexutil.Bytes } type prestateTracer struct { + noopTracer env *vm.EVM - prestate prestate + ctx *tracers.Context + pre state + post state create bool to common.Address - interrupt uint32 // Atomic flag to signal execution interruption - reason error // Textual reason for the interruption + config prestateTracerConfig + interrupt atomic.Value // Atomic flag to signal execution interruption + reason error // Textual reason for the interruption contractCreationCount uint32 + created map[common.Address]bool + deleted map[common.Address]bool +} + +type prestateTracerConfig struct { + DiffMode bool `json:"diffMode"` // If true, this tracer will return state modifications } -func newPrestateTracer(ctx *tracers.Context, _ json.RawMessage) (tracers.Tracer, error) { - // First callframe contains tx context info - // and is populated on start and end. - return &prestateTracer{prestate: prestate{}}, nil +func newPrestateTracer(cfg json.RawMessage) (tracers.Tracer, error) { + var config prestateTracerConfig + if cfg != nil { + if err := json.Unmarshal(cfg, &config); err != nil { + return nil, err + } + } + return &prestateTracer{ + pre: state{}, + post: state{}, + config: config, + created: make(map[common.Address]bool), + deleted: make(map[common.Address]bool), + }, nil } // CaptureStart implements the EVMLogger interface to initialize the tracing operation. @@ -64,65 +99,161 @@ func (t *prestateTracer) CaptureStart(env *vm.EVM, from common.Address, to commo t.lookupAccount(from) t.lookupAccount(to) + // t.lookupAccount(env.Context.Coinbase) + // tracer hooks run before value transfer, no need to touch balance if create { t.contractCreationCount++ + if t.config.DiffMode { + t.created[to] = true + } } } // CaptureEnd is called after the call finishes to finalize the tracing. -func (t *prestateTracer) CaptureEnd(output []byte, gasUsed uint64, _ time.Duration, err error) { - if t.create { - // Exclude created contract. - delete(t.prestate, t.to) +func (t *prestateTracer) CaptureEnd(output []byte, gasUsed uint64, err error) { + if !t.config.DiffMode { + if t.create { + // Keep existing account prior to contract creation at that address + if s := t.pre[t.to]; s != nil && !s.exists() { + // Exclude newly created contract. + delete(t.pre, t.to) + } + } + + return + } + + for addr, state := range t.pre { + // The deleted account's state is pruned from `post` but kept in `pre` + if _, ok := t.deleted[addr]; ok { + continue + } + modified := false + postAccount := &account{Storage: make(map[common.Hash]common.Hash)} + newBalance := t.env.StateDB.GetBalance(addr) + newCode := t.env.StateDB.GetCode(addr) + + energy, err := t.ctx.State.GetEnergy(thor.Address(addr), t.ctx.BlockTime) + if err != nil { + // panic state errors, will be recovered by runtime + panic(err) + } + newEnergy := energy + + if newBalance.Cmp(t.pre[addr].Balance) != 0 { + modified = true + postAccount.Balance = newBalance + } + if newEnergy.Cmp(t.pre[addr].Energy) != 0 { + modified = true + postAccount.Energy = newEnergy + } + if !bytes.Equal(newCode, t.pre[addr].Code) { + modified = true + postAccount.Code = newCode + } + + for key, val := range state.Storage { + // don't include the empty slot + if val == (common.Hash{}) { + delete(t.pre[addr].Storage, key) + } + + newVal := t.env.StateDB.GetState(addr, key) + if val == newVal { + // Omit unchanged slots + delete(t.pre[addr].Storage, key) + } else { + modified = true + if newVal != (common.Hash{}) { + postAccount.Storage[key] = newVal + } + } + } + + if modified { + t.post[addr] = postAccount + } else { + // if state is not modified, then no need to include into the pre state + delete(t.pre, addr) + } + } + // the new created contracts' prestate were empty, so delete them + for a := range t.created { + // the created contract maybe exists in statedb before the creating tx + if s := t.pre[a]; s != nil && !s.exists() { + delete(t.pre, a) + } } } // CaptureState implements the EVMLogger interface to trace a single step of VM execution. func (t *prestateTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, rData []byte, depth int, err error) { + if err != nil { + return + } + // Skip if tracing was interrupted + if stop := t.interrupt.Load(); stop != nil && stop.(bool) { + return + } stackData := stack.Data() stackLen := len(stackData) + caller := contract.Address() switch { case stackLen >= 1 && (op == vm.SLOAD || op == vm.SSTORE): slot := common.Hash(stackData[stackLen-1].Bytes32()) - t.lookupStorage(contract.Address(), slot) + t.lookupStorage(caller, slot) case stackLen >= 1 && (op == vm.EXTCODECOPY || op == vm.EXTCODEHASH || op == vm.EXTCODESIZE || op == vm.BALANCE || op == vm.SELFDESTRUCT): addr := common.Address(stackData[stackLen-1].Bytes20()) t.lookupAccount(addr) + if op == vm.SELFDESTRUCT { + t.deleted[caller] = true + } case stackLen >= 5 && (op == vm.DELEGATECALL || op == vm.CALL || op == vm.STATICCALL || op == vm.CALLCODE): addr := common.Address(stackData[stackLen-2].Bytes20()) t.lookupAccount(addr) case op == vm.CREATE: - t.lookupAccount(t.env.NewContractAddress(t.env, t.contractCreationCount)) + addr := t.env.NewContractAddress(t.env, t.contractCreationCount) t.contractCreationCount++ + t.lookupAccount(addr) + t.created[addr] = true case stackLen >= 4 && op == vm.CREATE2: offset := stackData[stackLen-2] size := stackData[stackLen-3] - init := memory.GetCopy(int64(offset.Uint64()), int64(size.Uint64())) + init, err := tracers.GetMemoryCopyPadded(memory, int64(offset.Uint64()), int64(size.Uint64())) + if err != nil { + return + } inithash := crypto.Keccak256(init) salt := stackData[stackLen-4] - t.lookupAccount(vm.CreateAddress2(contract.Address(), salt.Bytes32(), inithash)) - t.contractCreationCount++ + addr := vm.CreateAddress2(contract.Address(), salt.Bytes32(), inithash) + t.lookupAccount(addr) + t.created[addr] = true } } -// CaptureFault implements the EVMLogger interface to trace an execution fault. -func (t *prestateTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, depth int, err error) { -} - -// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). -func (t *prestateTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { +func (t *prestateTracer) CaptureTxEnd(restGas uint64) { } -// CaptureExit is called when EVM exits a scope, even if the scope didn't -// execute any code. -func (t *prestateTracer) CaptureExit(output []byte, gasUsed uint64, err error) { +// SetContext set the tracer context +func (t *prestateTracer) SetContext(ctx *tracers.Context) { + t.ctx = ctx } // GetResult returns the json-encoded nested list of call traces, and any // error arising from the encoding or forceful termination (via `Stop`). func (t *prestateTracer) GetResult() (json.RawMessage, error) { - res, err := json.Marshal(t.prestate) + var res []byte + var err error + if t.config.DiffMode { + res, err = json.Marshal(struct { + Post state `json:"post"` + Pre state `json:"pre"` + }{t.post, t.pre}) + } else { + res, err = json.Marshal(t.pre) + } if err != nil { return nil, err } @@ -132,19 +263,25 @@ func (t *prestateTracer) GetResult() (json.RawMessage, error) { // Stop terminates execution of the tracer at the first opportune moment. func (t *prestateTracer) Stop(err error) { t.reason = err - atomic.StoreUint32(&t.interrupt, 1) + t.interrupt.Store(true) } // lookupAccount fetches details of an account and adds it to the prestate // if it doesn't exist there. func (t *prestateTracer) lookupAccount(addr common.Address) { - if _, ok := t.prestate[addr]; ok { + if _, ok := t.pre[addr]; ok { return } - t.prestate[addr] = &account{ - Balance: bigToHex(t.env.StateDB.GetBalance(addr)), - Nonce: t.env.StateDB.GetNonce(addr), - Code: bytesToHex(t.env.StateDB.GetCode(addr)), + + energy, err := t.ctx.State.GetEnergy(thor.Address(addr), t.ctx.BlockTime) + if err != nil { + // panic state errors, will be recovered by runtime + panic(err) + } + t.pre[addr] = &account{ + Balance: t.env.StateDB.GetBalance(addr), + Energy: energy, + Code: t.env.StateDB.GetCode(addr), Storage: make(map[common.Hash]common.Hash), } } @@ -153,8 +290,8 @@ func (t *prestateTracer) lookupAccount(addr common.Address) { // it to the prestate of the given contract. It assumes `lookupAccount` // has been performed on the contract before. func (t *prestateTracer) lookupStorage(addr common.Address, key common.Hash) { - if _, ok := t.prestate[addr].Storage[key]; ok { + if _, ok := t.pre[addr].Storage[key]; ok { return } - t.prestate[addr].Storage[key] = t.env.StateDB.GetState(addr, key) + t.pre[addr].Storage[key] = t.env.StateDB.GetState(addr, key) } diff --git a/tracers/native/tracer.go b/tracers/native/tracer.go deleted file mode 100644 index 6ae20d44e..000000000 --- a/tracers/native/tracer.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see . - -/* -Package native is a collection of tracers written in go. - -In order to add a native tracer and have it compiled into the binary, a new -file needs to be added to this folder, containing an implementation of the -`eth.tracers.Tracer` interface. - -Aside from implementing the tracer, it also needs to register itself, using the -`register` method -- and this needs to be done in the package initialization. - -Example: - -```golang -func init() { - register("noopTracerNative", newNoopTracer) -} -``` -*/ -package native - -import ( - "encoding/json" - "errors" - - "github.com/vechain/thor/tracers" -) - -// init registers itself this packages as a lookup for tracers. -func init() { - tracers.RegisterLookup(false, lookup) -} - -// ctorFn is the constructor signature of a native tracer. -type ctorFn = func(*tracers.Context, json.RawMessage) (tracers.Tracer, error) - -/* -ctors is a map of package-local tracer constructors. - -We cannot be certain about the order of init-functions within a package, -The go spec (https://golang.org/ref/spec#Package_initialization) says - -> To ensure reproducible initialization behavior, build systems -> are encouraged to present multiple files belonging to the same -> package in lexical file name order to a compiler. - -Hence, we cannot make the map in init, but must make it upon first use. -*/ -var ctors map[string]ctorFn - -// register is used by native tracers to register their presence. -func register(name string, ctor ctorFn) { - if ctors == nil { - ctors = make(map[string]ctorFn) - } - ctors[name] = ctor -} - -// lookup returns a tracer, if one can be matched to the given name. -func lookup(name string, ctx *tracers.Context, cfg json.RawMessage) (tracers.Tracer, error) { - if ctors == nil { - ctors = make(map[string]ctorFn) - } - if ctor, ok := ctors[name]; ok { - return ctor(ctx, cfg) - } - return nil, errors.New("no tracer found") -} diff --git a/tracers/readme.md b/tracers/readme.md index 722225630..c0db2a94b 100644 --- a/tracers/readme.md +++ b/tracers/readme.md @@ -14,4 +14,16 @@ introduce native tracers, forked from https://github.com/ethereum/go-ethereum/tr + updated vm implementation, added CaptureEnter and CaptureExit + remove CaptureTxStart CaptureTxEnd from Logger interface + update contract create function in `prestate` -+ remove js tracers \ No newline at end of file ++ remove js tracers + +2023-07-12 + +forked from https://github.com/ethereum/go-ethereum/tree/80b7bfe70de59356a547c5a5e1c64f0a69e3873e (v1.12.1-dev) + ++ add OnlyTopCall option to call tracers ++ add WithLogs option to call tracers ++ add DiffMode option to prestate tracers ++ remove nonce from prestate ++ add energy to prestate ++ use gencodec for native tracers, omit serval empty fields ++ removed "time" from all tracer outputs diff --git a/tracers/testdata/call.json b/tracers/testdata/call.json index 80f2556ab..6bbe754e8 100644 --- a/tracers/testdata/call.json +++ b/tracers/testdata/call.json @@ -13,13 +13,11 @@ "state": { "0x048ac268f5818b7ade95f6828ad1e769c1d51bdc": { "balance": "0x94301095758da0e71b4d44", - "nonce": 0, - "code": "0x", - "storage": {} + "energy": "0x0" }, "0x7d6dcd458ef0f587bf3e0f52549a96aa445224c1": { "balance": "0x7b55e8ffcaaa3a0000", - "nonce": 0, + "energy": "0x0", "code": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309ca541b146100eb5780630ac9b108146101dd57806321abdf5c14610218578063470259c3146103f757806358a187ef146104225780635943b64f14610491578063874ec2e7146105835780638da5cb5b146105dc578063a330681914610633578063a82a3d89146107e6578063c55ac4a51461083d578063c6a023e9146109e4578063cfdc9bd614610a29578063d0d41fe114610a67578063da09c72c14610ab8578063f2fde38b14610b0f575b600080fd5b3480156100f757600080fd5b506101db6004803603606081101561010e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561015557600080fd5b82018360208201111561016757600080fd5b8035906020019184600183028401116401000000008311171561018957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b60565b005b3480156101e957600080fd5b506102166004803603602081101561020057600080fd5b8101908080359060200190929190505050611708565b005b34801561022457600080fd5b506103f5600480360361010081101561023c57600080fd5b81019080803560ff169060200190929190803590602001909291908035906020019064010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803567ffffffffffffffff1690602001909291908035906020019064010000000081111561031b57600080fd5b82018360208201111561032d57600080fd5b8035906020019184600183028401116401000000008311171561034f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803567ffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf3565b005b34801561040357600080fd5b5061040c6126bb565b6040518082815260200191505060405180910390f35b34801561042e57600080fd5b5061047b6004803603604081101561044557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c1565b6040518082815260200191505060405180910390f35b34801561049d57600080fd5b506104ca600480360360208110156104b457600080fd5b810190808035906020019092919050505061271f565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018667ffffffffffffffff1667ffffffffffffffff1681526020018567ffffffffffffffff1667ffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b34801561058f57600080fd5b506105da600480360360408110156105a657600080fd5b81019080803567ffffffffffffffff169060200190929190803567ffffffffffffffff1690602001909291905050506127db565b005b3480156105e857600080fd5b506105f1612a03565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561063f57600080fd5b5061066c6004803603602081101561065657600080fd5b8101908080359060200190929190505050612a28565b6040518088600181111561067c57fe5b60ff16815260200187600281111561069057fe5b60ff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018567ffffffffffffffff1667ffffffffffffffff168152602001806020018467ffffffffffffffff1667ffffffffffffffff168152602001838103835287818151815260200191508051906020019080838360005b8381101561073e578082015181840152602081019050610723565b50505050905090810190601f16801561076b5780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156107a4578082015181840152602081019050610789565b50505050905090810190601f1680156107d15780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3480156107f257600080fd5b506107fb612c8a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109e2600480360360c081101561085357600080fd5b81019080803560ff1690602001909291908035906020019064010000000081111561087d57600080fd5b82018360208201111561088f57600080fd5b803590602001918460018302840111640100000000831117156108b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803567ffffffffffffffff1690602001909291908035906020019064010000000081111561092857600080fd5b82018360208201111561093a57600080fd5b8035906020019184600183028401116401000000008311171561095c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803567ffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cb0565b005b3480156109f057600080fd5b50610a2760048036036040811015610a0757600080fd5b810190808035906020019092919080359060200190929190505050613350565b005b348015610a3557600080fd5b50610a6560048036036020811015610a4c57600080fd5b81019080803560ff169060200190929190505050613516565b005b348015610a7357600080fd5b50610ab660048036036020811015610a8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135fd565b005b348015610ac457600080fd5b50610acd613705565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1b57600080fd5b50610b5e60048036036020811015610b3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061372b565b005b82426005600083815260200190815260200160002060040160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16118015610bba575060006005600083815260200190815260200160002060060154115b1515610c2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f746f6f206c61746500000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8383600060056000848152602001908152602001600020600a0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610cfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e6e6f7420636c61696d207477696365000000000000000000000000000081525060200191505060405180910390fd5b600060056000888152602001908152602001600020905060008787604051602001808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051602081830303815290604052805190602001209050610d7b8187613952565b73ffffffffffffffffffffffffffffffffffffffff168260010160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4543445341207369676e6174757265206973206e6f742076616c69642e00000081525060200191505060405180910390fd5b60006111df836101c06040519081016040529081600082015481526020016001820160009054906101000a900460ff166001811115610e7c57fe5b6001811115610e8757fe5b81526020016001820160019054906101000a900460ff166002811115610ea957fe5b6002811115610eb457fe5b81526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ffd5780601f10610fd257610100808354040283529160200191610ffd565b820191906000526020600020905b815481529060010190602001808311610fe057829003601f168201915b505050505081526020016004820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561113b5780601f106111105761010080835404028352916020019161113b565b820191906000526020600020905b81548152906001019060200180831161111e57829003601f168201915b505050505081526020016009820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050613a36565b905060018360090160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508083600a0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550428360090160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506112ae818460060154613b3b90919063ffffffff16565b836006018190555060018360010160016101000a81548160ff021916908360028111156112d757fe5b02179055506000836006015414156113105760028360010160016101000a81548160ff0219169083600281111561130a57fe5b02179055505b6116ae836101c06040519081016040529081600082015481526020016001820160009054906101000a900460ff16600181111561134957fe5b600181111561135457fe5b81526020016001820160019054906101000a900460ff16600281111561137657fe5b600281111561138157fe5b81526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114ca5780601f1061149f576101008083540402835291602001916114ca565b820191906000526020600020905b8154815290600101906020018083116114ad57829003601f168201915b505050505081526020016004820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116085780601f106115dd57610100808354040283529160200191611608565b820191906000526020600020905b8154815290600101906020018083116115eb57829003601f168201915b505050505081526020016009820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508983613b54565b8773ffffffffffffffffffffffffffffffffffffffff16897fc859311bc537fef52b70fbc36471c501efbf87e5a6e8fed2edf60453ddde3d5c836040518082815260200191505060405180910390a3505050505050505050565b80426005600083815260200190815260200160002060040160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16111515156117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f746f6f206c61746500000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816002808111156117c257fe5b6005600083815260200190815260200160002060010160019054906101000a900460ff1660028111156117f157fe5b14151515611867576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420656e76656c6f70652069640000000000000000000000000081525060200191505060405180910390fd5b60006005600085815260200190815260200160002090506000816006015490506000826006018190555060028260010160016101000a81548160ff021916908360028111156118b257fe5b0217905550611c79826101c06040519081016040529081600082015481526020016001820160009054906101000a900460ff1660018111156118f057fe5b60018111156118fb57fe5b81526020016001820160019054906101000a900460ff16600281111561191d57fe5b600281111561192857fe5b81526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a715780601f10611a4657610100808354040283529160200191611a71565b820191906000526020600020905b815481529060010190602001808311611a5457829003601f168201915b505050505081526020016004820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611baf5780601f10611b8457610100808354040283529160200191611baf565b820191906000526020600020905b815481529060010190602001808311611b9257829003601f168201915b505050505081526020016009820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b54565b8160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16857f4dcb6e6a38d712e4e01ab60d4819c3cd51347a99d3c36d78f6e25aa2918e4133836040518082815260200191505060405180910390a35050505050565b6001548710151515611d6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616d6f756e7420746f6f20736d616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b6002548711151515611de7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616d6f756e7420746f6f206c617267650000000000000000000000000000000081525060200191505060405180910390fd5b8467ffffffffffffffff16600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1611158015611e4b5750600360089054906101000a900467ffffffffffffffff1667ffffffffffffffff168567ffffffffffffffff1611155b1515611ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f696e76616c6964206475726174696f6e0000000000000000000000000000000081525060200191505060405180910390fd5b8267ffffffffffffffff16600360109054906101000a900467ffffffffffffffff1667ffffffffffffffff1611158015611f235750600360189054906101000a900467ffffffffffffffff1667ffffffffffffffff168367ffffffffffffffff1611155b1515611f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c696420636c61696d7300000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561203c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207365637265745369676e657200000000000000000000000081525060200191505060405180910390fd5b6000819050878173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561210f57600080fd5b505afa158015612123573d6000803e3d6000fd5b505050506040513d602081101561213957600080fd5b8101908080519060200190929190505050101515156121c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6e6f2073756666696369656e7420616c6c6f77616e636500000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561229757600080fd5b505af11580156122ab573d6000803e3d6000fd5b5050505060016006600082825401925050819055506122c8614006565b60006122d9858b8d8c8c8c8c613d1a565b915091506006548260000181815250508382610120019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050816005600060065481526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083600181111561236657fe5b021790555060408201518160010160016101000a81548160ff0219169083600281111561238f57fe5b021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a082015181600301908051906020019061243e9291906140f6565b5060c08201518160040160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101408201518160080190805190602001906124e89291906140f6565b506101608201518160090160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101808201518160090160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101a08201518160090160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050503373ffffffffffffffffffffffffffffffffffffffff166006547f3162dfdc09b67a736521fc30f04b8f7d2ecaa89d27441b7f350e79251747d13f60405160405180910390a360008111156126ae5781610120015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561269557600080fd5b505af11580156126a9573d6000803e3d6000fd5b505050505b5050505050505050505050565b60065481565b600060056000848152602001908152602001600020600a0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008060008060006005600089815260200190815260200160002090508060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160090160009054906101000a900467ffffffffffffffff168260090160089054906101000a900467ffffffffffffffff16836005015484600601548560010160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169650965096509650965096505091939550919395565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561289f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b8067ffffffffffffffff168267ffffffffffffffff161115151561292b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5f6d696e206d7573742067726561746572207468616e205f6d6178000000000081525060200191505060405180910390fd5b60008167ffffffffffffffff161115156129ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6d7573742067726561746572207468616e207a65726f0000000000000000000081525060200191505060405180910390fd5b81600360106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600360186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600060606000606060006005600089815260200190815260200160002060010160009054906101000a900460ff16600560008a815260200190815260200160002060010160019054906101000a900460ff16600560008b815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008c8152602001908152602001600020600301600560008d815260200190815260200160002060040160009054906101000a900467ffffffffffffffff16600560008e8152602001908152602001600020600801600560008f815260200190815260200160002060090160109054906101000a900467ffffffffffffffff16849450838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bce5780601f10612ba357610100808354040283529160200191612bce565b820191906000526020600020905b815481529060010190602001808311612bb157829003601f168201915b50505050509350818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c6a5780601f10612c3f57610100808354040283529160200191612c6a565b820191906000526020600020905b815481529060010190602001808311612c4d57829003601f168201915b505050505091509650965096509650965096509650919395979092949650565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001543410151515612d2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616d6f756e7420746f6f20736d616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b6002543411151515612da4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616d6f756e7420746f6f206c617267650000000000000000000000000000000081525060200191505060405180910390fd5b8367ffffffffffffffff16600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1611158015612e085750600360089054906101000a900467ffffffffffffffff1667ffffffffffffffff168467ffffffffffffffff1611155b1515612e7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f696e76616c6964206475726174696f6e0000000000000000000000000000000081525060200191505060405180910390fd5b8167ffffffffffffffff16600360109054906101000a900467ffffffffffffffff1667ffffffffffffffff1611158015612ee05750600360189054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff1611155b1515612f54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c696420636c61696d7300000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ff9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207365637265745369676e657200000000000000000000000081525060200191505060405180910390fd5b6001600660008282540192505081905550613012614006565b600061302383348a8a8a8a8a613d1a565b91509150600654826000018181525050816005600060065481526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083600181111561307757fe5b021790555060408201518160010160016101000a81548160ff021916908360028111156130a057fe5b021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a082015181600301908051906020019061314f9291906140f6565b5060c08201518160040160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101408201518160080190805190602001906131f99291906140f6565b506101608201518160090160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101808201518160090160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101a08201518160090160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050503373ffffffffffffffffffffffffffffffffffffffff166006547f3162dfdc09b67a736521fc30f04b8f7d2ecaa89d27441b7f350e79251747d13f60405160405180910390a3600081111561334657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613344573d6000803e3d6000fd5b505b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613414576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b80821115151561348c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5f6d696e206d7573742067726561746572207468616e205f6d6178000000000081525060200191505060405180910390fd5b600081111515613504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6d7573742067726561746572207468616e207a65726f0000000000000000000081525060200191505060405180910390fd5b81600181905550806002819055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b8060ff16600060146101000a81548161ffff021916908361ffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156136c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156137ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806041855114151561396f5760009350505050613a30565b6020850151925060408501519150606085015160001a9050601b8160ff16101561399a57601b810190505b601b8160ff16141580156139b25750601c8160ff1614155b156139c35760009350505050613a30565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613a20573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080826101000151905060018361018001518461016001510367ffffffffffffffff16111515613a6a5780915050613b36565b60006001811115613a7757fe5b83602001516001811115613a8757fe5b1415613abe57613ab68361018001518461016001510367ffffffffffffffff1682613fb890919063ffffffff16565b915050613b36565b600060018461016001510367ffffffffffffffff1690506000606460148385811515613ae657fe5b0402811515613af157fe5b048284811515613afd57fe5b04600143034060019004811515613b1057fe5b06019050600081118015613b245750828111155b1515613b2f57600080fd5b8093505050505b919050565b6000828211151515613b4957fe5b818303905092915050565b60008114151515613bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c696420616d6f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1683610120015173ffffffffffffffffffffffffffffffffffffffff16141515613ccd5782610120015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613cb057600080fd5b505af1158015613cc4573d6000803e3d6000fd5b50505050613d15565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613d13573d6000803e3d6000fd5b505b505050565b613d22614006565b6000613d2c614006565b60008090508a826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f9574c69336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613e2457600080fd5b505afa158015613e38573d6000803e3d6000fd5b505050506040513d6020811015613e4e57600080fd5b81019080805190602001909291905050501515613eb857613ea06103e8613e92600060149054906101000a900461ffff1661ffff168d613fce90919063ffffffff16565b613fb890919063ffffffff16565b9050613eb5818b613b3b90919063ffffffff16565b99505b8882602001906001811115613ec957fe5b90816001811115613ed657fe5b8152505033826080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050878260a001819052508642018260c0019067ffffffffffffffff16908167ffffffffffffffff1681525050898260e00181815250508160e0015182610100018181525050858261014001819052508482610160019067ffffffffffffffff16908167ffffffffffffffff1681525050600082604001906002811115613f9357fe5b90816002811115613fa057fe5b81525050818193509350505097509795505050505050565b60008183811515613fc557fe5b04905092915050565b600080831415613fe15760009050614000565b8183029050818382811515613ff257fe5b04141515613ffc57fe5b8090505b92915050565b6101c060405190810160405280600081526020016000600181111561402757fe5b81526020016000600281111561403957fe5b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600067ffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061413757805160ff1916838001178555614165565b82800160010185558215614165579182015b82811115614164578251825591602001919060010190614149565b5b5090506141729190614176565b5090565b61419891905b8082111561419457600081600090555060010161417c565b5090565b9056fea165627a7a7230582022c67dbc08de2a6090385a8a4ff29a53b67e0b9ba657901ff7e1251ccedfb4b90029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000000000000000000000000000001550f7dca70000", @@ -41,7 +39,7 @@ }, "0xd4dac3a95c741773f093d59256a21ed6fcc768a7": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x6080604052600436106102665763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301921197811461026b57806301ffc9a7146102915780630324529c146102dc57806306fdde031461030057806307fa65f91461038a578063081812fc146103ab578063095ea7b3146103df57806313e7c9d81461040357806318160ddd1461042457806319f373611461044b57806319fa8f501461046c5780631e20363a146104b357806323b872dd146104d3578063287e8495146104fd5780632ad715731461054a5780632ed9b4fd1461055f5780633f4ba83a146105a5578063417c73a7146105ba578063454a2ab3146105db5780634838d165146105e65780634a49ac4c146106075780634d4f6ea9146106285780635c975abb1461064057806360836166146106555780636352211e1461067357806368f162931461068b5780636fbde40d146106bd57806370a08231146106de57806379512513146106ff5780637aaed8991461071a5780638456cb59146107595780638da5cb5b1461076e57806395d89b411461078357806396b5a755146107985780639870d7fe146107b0578063a574cea4146107d1578063a9059cbb14610850578063ac8a584a14610874578063b03e02c214610895578063ba2a954d146108b3578063ba6f2e65146108cb578063bae3e19e146108ed578063bfc206ed1461092d578063c87b56dd14610945578063cd5967db1461095d578063d415614814610981578063e6cbe35114610996578063e729e3a4146109ab578063f2fde38b146109cc578063f7e6e60c146109ed578063f9574c6914610a02575b600080fd5b34801561027757600080fd5b5061028f600435600160a060020a0360243516610a23565b005b34801561029d57600080fd5b506102c87bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610c5a565b604080519115158252519081900360200190f35b3480156102e857600080fd5b5061028f600160a060020a0360043516602435610c8e565b34801561030c57600080fd5b50610315610e14565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034f578181015183820152602001610337565b50505050905090810190601f16801561037c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039657600080fd5b506102c8600160a060020a0360043516610ea2565b3480156103b757600080fd5b506103c3600435610ec5565b60408051600160a060020a039092168252519081900360200190f35b3480156103eb57600080fd5b5061028f600160a060020a0360043516602435610ee0565b34801561040f57600080fd5b506102c8600160a060020a0360043516610ffd565b34801561043057600080fd5b50610439611012565b60408051918252519081900360200190f35b34801561045757600080fd5b506102c8600160a060020a0360043516611039565b34801561047857600080fd5b50610481611089565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b3480156104bf57600080fd5b5061028f60048035602481019101356110ad565b3480156104df57600080fd5b5061028f600160a060020a0360043581169060243516604435611109565b34801561050957600080fd5b5061051860ff6004351661137e565b6040805194855267ffffffffffffffff9384166020860152918316848301529091166060830152519081900360800190f35b34801561055657600080fd5b5061043961140c565b34801561056b57600080fd5b5061028f6004356fffffffffffffffffffffffffffffffff6024351667ffffffffffffffff60443516600160a060020a0360643516611412565b3480156105b157600080fd5b506102c8611796565b3480156105c657600080fd5b5061028f600160a060020a0360043516611895565b61028f600435611997565b3480156105f257600080fd5b506102c8600160a060020a0360043516611b5e565b34801561061357600080fd5b5061028f600160a060020a0360043516611b73565b34801561063457600080fd5b506102c8600435611c71565b34801561064c57600080fd5b506102c8611d42565b34801561066157600080fd5b5061028f60043560ff60243516611d52565b34801561067f57600080fd5b506103c3600435611f4a565b34801561069757600080fd5b506106a0611f65565b6040805167ffffffffffffffff9092168252519081900360200190f35b3480156106c957600080fd5b5061028f600160a060020a0360043516611f7c565b3480156106ea57600080fd5b50610439600160a060020a036004351661206e565b34801561070b57600080fd5b5061028f60ff60043516612090565b34801561072657600080fd5b5061028f600160a060020a036004351660ff60243516604435151567ffffffffffffffff60643581169060843516612452565b34801561076557600080fd5b506102c86126ef565b34801561077a57600080fd5b506103c36127e1565b34801561078f57600080fd5b506103156127f0565b3480156107a457600080fd5b5061028f60043561284b565b3480156107bc57600080fd5b5061028f600160a060020a0360043516612a1b565b3480156107dd57600080fd5b506107e9600435612b18565b604051600160a060020a03881681526020810187600781111561080857fe5b60ff16815295151560208701525092151560408086019190915267ffffffffffffffff92831660608601529082166080850152911660a0830152519081900360c00192509050f35b34801561085c57600080fd5b5061028f600160a060020a0360043516602435612cf5565b34801561088057600080fd5b5061028f600160a060020a0360043516612f13565b3480156108a157600080fd5b5061028f60043560ff60243516613011565b3480156108bf57600080fd5b5061028f6004356133a7565b3480156108d757600080fd5b5061028f67ffffffffffffffff600435166135a5565b3480156108f957600080fd5b5061028f6004356fffffffffffffffffffffffffffffffff6024358116906044351667ffffffffffffffff6064351661363e565b34801561093957600080fd5b506103c3600435613906565b34801561095157600080fd5b50610315600435613921565b34801561096957600080fd5b5061028f600435600160a060020a03602435166139c3565b34801561098d57600080fd5b506106a0613bfa565b3480156109a257600080fd5b506103c3613c16565b3480156109b757600080fd5b50610439600160a060020a0360043516613c25565b3480156109d857600080fd5b5061028f600160a060020a0360043516613c37565b3480156109f957600080fd5b506106a0613d30565b348015610a0e57600080fd5b506102c8600160a060020a0360043516613d40565b6000805460a060020a900460ff1615610a74576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b33610a7e84611f4a565b600160a060020a031614610aca576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b610ad333611039565b1515610b17576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614a8a833981519152604482015290519081900360640190fd5b600354604080517f0192119700000000000000000000000000000000000000000000000000000000815260048101869052600160a060020a03858116602483015291519190921691630192119791604480830192600092919082900301818387803b158015610b8557600080fd5b505af1158015610b99573d6000803e3d6000fd5b50506003546040805160e060020a6378bd7935028152600481018890529051600160a060020a0390921693506378bd7935925060248082019260c0929091908290030181600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d60c0811015610c1857600080fd5b5051604051909150600160a060020a03831690849083907f9bd63f96cf38bbd738ef415c10d8ce738b56b75bbe3b31f6bf2059d35f3a8f3a90600090a4505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000908152600a602052604090205460ff1690565b3360009081526001602052604090205460ff161515610ce5576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b600160a060020a0382161515610d33576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b60008111610d8b576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c696420616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038416600482015260248101839052905165456e657267799163a9059cbb91604480830192600092919082900301818387803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b505050505050565b600b805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b820191906000526020600020905b815481529060010190602001808311610e7d57829003601f168201915b505050505081565b6000610ead82611039565b8015610ebf5750610ebd82613d40565b155b92915050565b600090815260096020526040902054600160a060020a031690565b6000805460a060020a900460ff1615610f31576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b610f3a82611f4a565b9050600160a060020a038381169082161415610fa0576040805160e560020a62461bcd02815260206004820152601d60248201527f63616e6e6f7420617070726f766520796f7572206f776e20746f6b656e000000604482015290519081900360640190fd5b33600160a060020a03821614610fee576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b610ff88284613d92565b505050565b60016020526000908152604090205460ff1681565b60065467ffffffffffffffff80821668010000000000000000909204811691909101165b90565b600160a060020a03811660009081526008602052604081205460058054839290811061106157fe5b600091825260209091200154608860020a900460ff16600781111561108257fe5b1192915050565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600054600160a060020a031633146110fd576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b610ff8600d83836148fb565b60005460a060020a900460ff1615611159576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a03821615156111a7576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b82600160a060020a03166111ba82611f4a565b600160a060020a031614611206576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6112103382613e0a565b1515611254576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b61125d81611c71565b15156112b3576040805160e560020a62461bcd02815260206004820152601a60248201527f63616e6e6f74207472616e73666572207468697320746f6b656e000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018490529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b15801561130457600080fd5b505af1158015611318573d6000803e3d6000fd5b505050506040513d602081101561132e57600080fd5b505115611373576040805160e560020a62461bcd0281526020600482015260146024820152600080516020614a4a833981519152604482015290519081900360640190fd5b610ff8838383613e59565b60008060008061138c614979565b6004600087600781111561139c57fe5b60ff16815260208082019290925260409081016000208151608081018352815480825260019092015467ffffffffffffffff8082169583018690526801000000000000000082048116948301859052608060020a9091041660609091018190529099929850909650945092505050565b600e5481565b60005460a060020a900460ff1615611462576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b3361146c85611f4a565b600160a060020a0316146114b8576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6114c133611039565b1515611505576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614a8a833981519152604482015290519081900360640190fd5b600580548590811061151357fe5b600091825260209091200154608060020a900460ff161561157e576040805160e560020a62461bcd02815260206004820152601660248201527f63616e63656c20757067726164696e6720666972737400000000000000000000604482015290519081900360640190fd5b600354611595908590600160a060020a0316613d92565b600e546115a990600163ffffffff613e6e16565b600e819055600354604080517fe4f9dd2d0000000000000000000000000000000000000000000000000000000081526004810193909352602483018790526fffffffffffffffffffffffffffffffff861660448401819052606484015267ffffffffffffffff8086166084850152421660a48401523360c484015251600160a060020a039091169163e4f9dd2d9160e480830192600092919082900301818387803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b5050600e54604080516fffffffffffffffffffffffffffffffff8816808252602082015267ffffffffffffffff87168183015290518894509192507f50417882ac38f5bd0dd968f4b17f72ab38a7bd228eeec270f01466a5724684b4919081900360600190a3600354604080517fcd5967db00000000000000000000000000000000000000000000000000000000815260048101879052600160a060020a0384811660248301529151919092169163cd5967db91604480830192600092919082900301818387803b15801561173f57600080fd5b505af1158015611753573d6000803e3d6000fd5b5050600e54604051600160a060020a03851693508792507fc42e7df8c9dcd26c4a8b5134e17fa2481ababcb828e3b316b89b63c57b61f3b890600090a450505050565b60008054600160a060020a031633146117e7576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff16151561184a576040805160e560020a62461bcd02815260206004820152601560248201527f6e656564732070726f746f636f6c207061757365640000000000000000000000604482015290519081900360640190fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a150600190565b600054600160a060020a031633146118e5576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615611935576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a038116600081815260026020908152604091829020805460ff1916600190811790915582519384529083015280517f0baadf7b35b83c7d3a00874b5406dca58c60d0ff7d8c825ad02ec55484beb4559281900390910190a150565b600080548190819060a060020a900460ff16156119ec576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b6003546040805160e060020a6378bd7935028152600481018790529051600160a060020a03909216916378bd79359160248082019260c0929091908290030181600087803b158015611a3d57600080fd5b505af1158015611a51573d6000803e3d6000fd5b505050506040513d60c0811015611a6757600080fd5b508051602091820151600354604080517f59d667a5000000000000000000000000000000000000000000000000000000008152336004820152602481018a90529051939750919550600160a060020a0316926359d667a5923492604480820193929182900301818588803b158015611ade57600080fd5b505af1158015611af2573d6000803e3d6000fd5b50505050506040513d6020811015611b0957600080fd5b505160408051338152602081018390528151929350600160a060020a03851692879287927fc2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f929081900390910190a450505050565b60026020526000908152604090205460ff1681565b600054600160a060020a03163314611bc3576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615611c13576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a0381166000818152600260209081526040808320805460ff1916905580519384529083019190915280517f0baadf7b35b83c7d3a00874b5406dca58c60d0ff7d8c825ad02ec55484beb4559281900390910190a150565b6000611c7c82613ec9565b8015611ca957506005805483908110611c9157fe5b600091825260209091200154608060020a900460ff16155b8015611cda5750600082815260076020908152604080832054600160a060020a03168352600290915290205460ff16155b8015610ebf5750600360149054906101000a900467ffffffffffffffff16600583815481101515611d0757fe5b60009182526020909120015467ffffffffffffffff720100000000000000000000000000000000000090910481169190910116421192915050565b60005460a060020a900460ff1681565b3360009081526001602052604090205460ff161515611da9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b806007811115611db557fe5b6005805484908110611dc357fe5b600091825260209091200154608860020a900460ff166007811115611de457fe5b10611e39576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c6964206c6576656c00000000000000000000000000000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018590529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b158015611e8a57600080fd5b505af1158015611e9e573d6000803e3d6000fd5b505050506040513d6020811015611eb457600080fd5b505115611ef9576040805160e560020a62461bcd0281526020600482015260146024820152600080516020614a4a833981519152604482015290519081900360640190fd5b6000600583815481101515611f0a57fe5b60009182526020909120018054911515608060020a0270ff0000000000000000000000000000000019909216919091179055611f468282613ee5565b5050565b600090815260076020526040902054600160a060020a031690565b60035460a060020a900467ffffffffffffffff1681565b600054600160a060020a03163314611fcc576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b600160a060020a038116151561201a576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b60038054600160a060020a038316600160a060020a0319909116811790915560408051918252517fb69d08e828d243d599db935e2be5ce7ed7b0d2f9c9f712ff469a10a27924deb89181900360200190a150565b600061207982611039565b612084576000612087565b60015b60ff1692915050565b60008054819060a060020a900460ff16156120e3576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b33600090815260086020526040902054915081151561210b576121083360008061419d565b91505b600580548390811061211957fe5b60009182526020909120018054909150608060020a900460ff1615612188576040805160e560020a62461bcd02815260206004820152600f60248201527f7374696c6c20757067726164696e670000000000000000000000000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018590529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b1580156121d957600080fd5b505af11580156121ed573d6000803e3d6000fd5b505050506040513d602081101561220357600080fd5b505115612248576040805160e560020a62461bcd0281526020600482015260146024820152600080516020614a4a833981519152604482015290519081900360640190fd5b82600781111561225457fe5b815460ff91821691608860020a90910416600781111561227057fe5b60010160ff1614801561228f5750600483600781111561228c57fe5b14155b80156122a7575060078360078111156122a457fe5b11155b15156122fd576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c6964205f746f4c766c000000000000000000000000000000000000604482015290519081900360640190fd5b6004600084600781111561230d57fe5b60ff16815260208101919091526040016000205433311015612379576040805160e560020a62461bcd02815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b8054608060020a70ff0000000000000000000000000000000019909116176fffffffffffffffff00000000000000001916680100000000000000004267ffffffffffffffff811691909102919091178255604051339184917fe925483a08461d851abfcfd476ed282a68d87b23cc45add5a8dc7f1ad7825ce991879143908084600781111561240457fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a3505050565b3360009081526001602052604081205460ff1615156124a9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6124b2866143a1565b15612507576040805160e560020a62461bcd02815260206004820152601860248201527f796f7520616c726561647920686f6c64206120746f6b656e0000000000000000604482015290519081900360640190fd5b6004600086600781111561251757fe5b60ff168152602081019190915260400160002054600160a060020a03871631101561258c576040805160e560020a62461bcd02815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b61259786868661419d565b90508460078111156125a557fe5b6001111580156125c1575060038560078111156125be57fe5b11155b156125ef576006805467ffffffffffffffff8082166001011667ffffffffffffffff19909116179055612659565b8460078111156125fb57fe5b6004111580156126175750600785600781111561261457fe5b11155b156126595760068054600167ffffffffffffffff6801000000000000000080840482169290920116026fffffffffffffffff0000000000000000199091161790555b8315610e0c5785600160a060020a0316817fe925483a08461d851abfcfd476ed282a68d87b23cc45add5a8dc7f1ad7825ce98786866040518084600781111561269e57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a3505050505050565b60008054600160a060020a03163314612740576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615612790576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a150600190565b600054600160a060020a031681565b600c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b6000805460a060020a900460ff161561289c576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b336128a683611f4a565b600160a060020a0316146128f2576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b60035461290890600160a060020a0316836143bd565b6003546040805160e060020a6378bd7935028152600481018590529051600160a060020a03909216916378bd79359160248082019260c0929091908290030181600087803b15801561295957600080fd5b505af115801561296d573d6000803e3d6000fd5b505050506040513d60c081101561298357600080fd5b5051604051909150829082907fdb9cc99dc874f9afbae71151f737e51547d3d412b52922793437d86607050c3c90600090a3600354604080517f96b5a755000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a03909216916396b5a7559160248082019260009290919082900301818387803b158015610df857600080fd5b600054600160a060020a03163314612a6b576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615612abb576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a038116600081815260016020818152604092839020805460ff191683179055825193845283015280517f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d9281900390910190a150565b6000806000806000806000612b2b6149a0565b612b3489613ec9565b15612ce957600580548a908110612b4757fe5b60009182526020918290206040805160a08101825291909201805467ffffffffffffffff8082168452680100000000000000008204169483019490945260ff608060020a85048116151593830193909352909290916060840191608860020a9004166007811115612bb457fe5b6007811115612bbf57fe5b81526020016000820160129054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600760008a815260200190815260200160002060009054906101000a9004600160a060020a031681606001518260400151600360009054906101000a9004600160a060020a0316600160a060020a03166337e246ad8d6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015612c9f57600080fd5b505af1158015612cb3573d6000803e3d6000fd5b505050506040513d6020811015612cc957600080fd5b5051608085015185516020870151959d50939b5091995097509550935091505b50919395979092949650565b60005460a060020a900460ff1615612d45576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a0382161515612d93576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b33612d9d82611f4a565b600160a060020a031614612de9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b612df281611c71565b1515612e48576040805160e560020a62461bcd02815260206004820152601a60248201527f63616e6e6f74207472616e73666572207468697320746f6b656e000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018490529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b158015612e9957600080fd5b505af1158015612ead573d6000803e3d6000fd5b505050506040513d6020811015612ec357600080fd5b505115612f08576040805160e560020a62461bcd0281526020600482015260146024820152600080516020614a4a833981519152604482015290519081900360640190fd5b611f46338383614412565b600054600160a060020a03163314612f63576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615612fb3576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a0381166000818152600160209081526040808320805460ff1916905580519384529083019190915280517f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d9281900390910190a150565b3360009081526001602052604081205460ff161515613068576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b81600781111561307457fe5b600580548590811061308257fe5b600091825260209091200154608860020a900460ff1660078111156130a357fe5b116130f8576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c6964206c6576656c00000000000000000000000000000000000000604482015290519081900360640190fd5b600360149054906101000a900467ffffffffffffffff1660058481548110151561311e57fe5b60009182526020909120015467ffffffffffffffff72010000000000000000000000000000000000009091048116919091011642116131a7576040805160e560020a62461bcd02815260206004820152601460248201527f746f6b656e206973206f6e20636f6f6c646f776e000000000000000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018690529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b1580156131f857600080fd5b505af115801561320c573d6000803e3d6000fd5b505050506040513d602081101561322257600080fd5b50511561336b5760035461323f90600160a060020a0316846143bd565b6003546040805160e060020a6378bd7935028152600481018690529051600160a060020a03909216916378bd79359160248082019260c0929091908290030181600087803b15801561329057600080fd5b505af11580156132a4573d6000803e3d6000fd5b505050506040513d60c08110156132ba57600080fd5b5051604051909150839082907fdb9cc99dc874f9afbae71151f737e51547d3d412b52922793437d86607050c3c90600090a3600354604080517f96b5a755000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a03909216916396b5a7559160248082019260009290919082900301818387803b15801561335257600080fd5b505af1158015613366573d6000803e3d6000fd5b505050505b600580548490811061337957fe5b600091825260209091200154608060020a900460ff161561339d5761339d836133a7565b610ff88383613ee5565b6000806133b383613ec9565b1515613409576040805160e560020a62461bcd02815260206004820152600f60248201527f746f6b656e206e6f742065786973740000000000000000000000000000000000604482015290519081900360640190fd5b600580548490811061341757fe5b60009182526020808320868452600790915260409092205491018054909350600160a060020a039091169150608060020a900460ff1615156134a3576040805160e560020a62461bcd02815260206004820152601060248201527f6e6f74206f6e20757067726164696e6700000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381163314806134c957503360009081526001602052604090205460ff165b151561350d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b60008254608860020a900460ff16600781111561352657fe5b141561353a57613535836145eb565b61356a565b815470ffffffffffffffffff00000000000000001916680100000000000000004267ffffffffffffffff16021782555b604051600160a060020a0382169084907fddc99f00cc50e9442de66784f25bd218c8c63f4c4103b817692da0a63fb80a9690600090a3505050565b3360009081526001602052604090205460ff1615156135fc576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6003805467ffffffffffffffff90921660a060020a027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60005460a060020a900460ff161561368e576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b3361369885611f4a565b600160a060020a0316146136e4576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6136ed33611039565b1515613731576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614a8a833981519152604482015290519081900360640190fd5b600580548590811061373f57fe5b600091825260209091200154608060020a900460ff16156137aa576040805160e560020a62461bcd02815260206004820152601660248201527f63616e63656c20757067726164696e6720666972737400000000000000000000604482015290519081900360640190fd5b6003546137c1908590600160a060020a0316613d92565b600e546137d590600163ffffffff613e6e16565b600e819055600354604080517fe4f9dd2d0000000000000000000000000000000000000000000000000000000081526004810193909352602483018790526fffffffffffffffffffffffffffffffff80871660448501528516606484015267ffffffffffffffff8085166084850152421660a48401523360c484015251600160a060020a039091169163e4f9dd2d9160e480830192600092919082900301818387803b15801561388457600080fd5b505af1158015613898573d6000803e3d6000fd5b5050600e54604080516fffffffffffffffffffffffffffffffff80891682528716602082015267ffffffffffffffff86168183015290518894509192507f50417882ac38f5bd0dd968f4b17f72ab38a7bd228eeec270f01466a5724684b4919081900360600190a350505050565b600760205260009081526040902054600160a060020a031681565b600d805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152606093610ebf93919290918301828280156139b05780601f10613985576101008083540402835291602001916139b0565b820191906000526020600020905b81548152906001019060200180831161399357829003601f168201915b50505050506139be84614696565b6147a4565b6000805460a060020a900460ff1615613a14576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b33613a1e84611f4a565b600160a060020a031614613a6a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b613a7333611039565b1515613ab7576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614a8a833981519152604482015290519081900360640190fd5b600354604080517fcd5967db00000000000000000000000000000000000000000000000000000000815260048101869052600160a060020a0385811660248301529151919092169163cd5967db91604480830192600092919082900301818387803b158015613b2557600080fd5b505af1158015613b39573d6000803e3d6000fd5b50506003546040805160e060020a6378bd7935028152600481018890529051600160a060020a0390921693506378bd7935925060248082019260c0929091908290030181600087803b158015613b8e57600080fd5b505af1158015613ba2573d6000803e3d6000fd5b505050506040513d60c0811015613bb857600080fd5b5051604051909150600160a060020a03831690849083907fc42e7df8c9dcd26c4a8b5134e17fa2481ababcb828e3b316b89b63c57b61f3b890600090a4505050565b60065468010000000000000000900467ffffffffffffffff1681565b600354600160a060020a031681565b60086020526000908152604090205481565b600054600160a060020a03163314613c87576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b600160a060020a0381161515613cd5576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b60065467ffffffffffffffff1681565b600160a060020a03811660009081526008602052604081205460058054600492908110613d6957fe5b600091825260209091200154608860020a900460ff166007811115613d8a57fe5b101592915050565b60008281526009602052604081208054600160a060020a031916600160a060020a038416179055613dc283611f4a565b90508282600160a060020a031682600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600080613e1683611f4a565b905080600160a060020a031684600160a060020a03161480613e51575083600160a060020a0316613e4684610ec5565b600160a060020a0316145b949350505050565b613e6383826143bd565b610ff8838383614412565b81810182811015610ebf576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b600090815260076020526040812054600160a060020a03161190565b60008281526007602052604081205460058054600160a060020a03909216929182919086908110613f1257fe5b600091825260208220018054909350608860020a900460ff169150846007811115613f3957fe5b1415613f4d57613f48856145eb565b613fad565b81548490839071ff00000000000000000000000000000000001916608860020a836007811115613f7957fe5b021790555081546fffffffffffffffff00000000000000001916680100000000000000004267ffffffffffffffff16021782555b806007811115613fb957fe5b600111158015613fd557506003816007811115613fd257fe5b11155b15614005576006805467ffffffffffffffff19811667ffffffffffffffff91821660001901909116179055614070565b80600781111561401157fe5b60041115801561402d5750600781600781111561402a57fe5b11155b15614070576006805460001967ffffffffffffffff6801000000000000000080840482169290920116026fffffffffffffffff0000000000000000199091161790555b83600781111561407c57fe5b6001111580156140985750600384600781111561409557fe5b11155b156140c6576006805467ffffffffffffffff8082166001011667ffffffffffffffff19909116179055614130565b8360078111156140d257fe5b6004111580156140ee575060078460078111156140eb57fe5b11155b156141305760068054600167ffffffffffffffff6801000000000000000080840482169290920116026fffffffffffffffff0000000000000000199091161790555b82600160a060020a0316857fb6fd4b2356bc13ccc82da8b790e9bf9bdcfd4743d32dd10aa48189ec53f6bc0083876040518083600781111561416e57fe5b60ff16815260200182600781111561418257fe5b60ff1681526020019250505060405180910390a35050505050565b60006141a76149a0565b600060a0604051908101604052804267ffffffffffffffff1681526020014267ffffffffffffffff16815260200185151581526020018660078111156141e957fe5b815267ffffffffffffffff42811660209283015260058054600181810180845560009390935285517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090920180549587015160408801511515608060020a0270ff000000000000000000000000000000001991871668010000000000000000026fffffffffffffffff0000000000000000199590971667ffffffffffffffff19909816979097179390931694909417919091169390931780835560608501519496509293909286929190829071ff00000000000000000000000000000000001916608860020a8360078111156142db57fe5b021790555060809190910151815467ffffffffffffffff90911672010000000000000000000000000000000000000279ffffffffffffffff00000000000000000000000000000000000019909116179055600160a060020a03881660008181526008602090815260408083209590940394859055848252600790528281208054600160a060020a03191683179055915192935083929091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a495945050505050565b600160a060020a03166000908152600860205260408120541190565b6000818152600960205260408082208054600160a060020a031916905551829190600160a060020a038516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925908390a45050565b61441b826143a1565b15614470576040805160e560020a62461bcd02815260206004820152601860248201527f5f746f20616c726561647920686f6c64206120746f6b656e0000000000000000604482015290519081900360640190fd5b614479826148f3565b156144ce576040805160e560020a62461bcd02815260206004820152601660248201527f5f746f206d7573746e2774206120636f6e747261637400000000000000000000604482015290519081900360640190fd5b426005828154811015156144de57fe5b9060005260206000200160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055504260058281548110151561452157fe5b60009182526020808320909101805467ffffffffffffffff9490941672010000000000000000000000000000000000000279ffffffffffffffff0000000000000000000000000000000000001990941693909317909255600160a060020a0380861680835260088085526040808520859055868552600786528085208054948916600160a060020a03199095168517905583855294528383208590559251849391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008181526007602090815260408083208054600160a060020a03198116909155600160a060020a03168084526008909252822091909155600580548390811061463157fe5b60009182526020822001805479ffffffffffffffffffffffffffffffffffffffffffffffffffff19169055604051839190600160a060020a038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606060008082818515156146df5760408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152945061479b565b8593505b83156146fa57600190920191600a840493506146e3565b859350826040519080825280601f01601f19166020018201604052801561472b578160200160208202803883390190505b5091505060001982015b831561479757815160001982019160f860020a6030600a8806010291849190811061475c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350614735565b8194505b50505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f1916602001820160405280156147e7578160200160208202803883390190505b50935083925060009150600090505b855181101561486c57858181518110151561480d57fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561483457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001016147f6565b5060005b84518110156148e657848181518110151561488757fe5b90602001015160f860020a900460f860020a0283838060010194508151811015156148ae57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101614870565b5090979650505050505050565b6000903b1190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061493c5782800160ff19823516178555614969565b82800160010185558215614969579182015b8281111561496957823582559160200191906001019061494e565b506149759291506149cf565b5090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160a0810182526000808252602082018190529181018290529060608201908152600060209091015290565b61103691905b8082111561497557600081556001016149d5560070726f746f636f6c206861732070617573656400000000000000000000000000696e76616c6964206164647265737300000000000000000000000000000000006f6e6c79206f776e65720000000000000000000000000000000000000000000063616e63656c2061756374696f6e2066697273740000000000000000000000007065726d697373696f6e2064656e6965640000000000000000000000000000006973206e6f74206120746f6b656e000000000000000000000000000000000000a165627a7a72305820614408d6b8cb8ec89a81a4a01cb1424113af0ea8b7211d7ba20233cfba32f68c0029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000005": "0x00000000000000000000000000000000000000000000000000000000000000d6", @@ -58,7 +56,6 @@ "gas": "0x6fc38", "gasUsed": "0x2fb97", "input": "0xc55ac4a5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000001a642015b3737c5e97978f4cf2bd1a27dd5a24d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", "calls": [ { "type": "STATICCALL", diff --git a/tracers/testdata/call_only_top.json b/tracers/testdata/call_only_top.json index 402c88332..aaeda5e3e 100644 --- a/tracers/testdata/call_only_top.json +++ b/tracers/testdata/call_only_top.json @@ -13,21 +13,17 @@ "state": { "0x7567d83b7b8d80addcb281a71d54fc7b3364ffed": { "balance": "0x152d02c7e14af6800000", - "nonce": 0, - "code": "0x", - "storage": {} + "energy":"0x0" }, "0xa1118c817b44c2ad154229a34f00b1af5ba48394": { "balance": "0x0", - "nonce": 0, - "code": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063967e6e651461005c578063f518904814610087578063f9ea5e79146100ca575b600080fd5b34801561006857600080fd5b50610071610151565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061015a565b005b3480156100d657600080fd5b5061013b600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506101df565b6040518082815260200191505060405180910390f35b60008054905090565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663416ad2b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156101c357600080fd5b505af11580156101d7573d6000803e3d6000fd5b505050505050565b600080600081546001019190508190559050929150505600a165627a7a7230582072a3a4f41df2e25405f0df2b19c07fa43c91df02a01d7ad7a66bf7deed99c6860029", - "storage": {} + "energy":"0x0", + "code": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063967e6e651461005c578063f518904814610087578063f9ea5e79146100ca575b600080fd5b34801561006857600080fd5b50610071610151565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061015a565b005b3480156100d657600080fd5b5061013b600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506101df565b6040518082815260200191505060405180910390f35b60008054905090565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663416ad2b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156101c357600080fd5b505af11580156101d7573d6000803e3d6000fd5b505050505050565b600080600081546001019190508190559050929150505600a165627a7a7230582072a3a4f41df2e25405f0df2b19c07fa43c91df02a01d7ad7a66bf7deed99c6860029" }, "0xd73a9b349dc06b12301d5968ac333f69d112841a": { "balance": "0x0", - "nonce": 0, - "code": "0x608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063416ad2b51461007d578063a92100cb14610094578063d11f17ad146100ab578063d9f51ebf14610106578063f8a8fd6d1461016f578063fc32d7371461019a575b600080fd5b34801561008957600080fd5b506100926101b1565b005b3480156100a057600080fd5b506100a9610285565b005b3480156100b757600080fd5b506100ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b3565b604051808215151515815260200191505060405180910390f35b34801561011257600080fd5b5061011b6103a5565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561017b57600080fd5b506101846103e7565b6040518082815260200191505060405180910390f35b3480156101a657600080fd5b506101af6103f5565b005b60008073a1118c817b44c2ad154229a34f00b1af5ba4839491508190508073ffffffffffffffffffffffffffffffffffffffff1663f5189048306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561026957600080fd5b505af115801561027d573d6000803e3d6000fd5b505050505050565b60008090505b60648110156102b057600a818115156102a057fe5b069050808060010191505061028b565b50565b60008060405180807f696e63726561736541676528737472696e672c75696e74323536290000000000815250601b019050604051809103902090508273ffffffffffffffffffffffffffffffffffffffff16817c0100000000000000000000000000000000000000000000000000000000900460016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180807f6a61636b000000000000000000000000000000000000000000000000000000008152506020018260ff1681526020019150506000604051808303816000875af192505050915050919050565b60008033905060405180807f696e63726561736541676528737472696e672c75696e74323536290000000000815250601b019050604051809103902091505090565b600080606490508091505090565b6103fd6103f5565b5600a165627a7a723058203554e9ce6726c60f2bf8e3d902a21ffdf86dde6478513a220ef475b6cbc104060029", - "storage": {} + "energy":"0x0", + "code": "0x608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063416ad2b51461007d578063a92100cb14610094578063d11f17ad146100ab578063d9f51ebf14610106578063f8a8fd6d1461016f578063fc32d7371461019a575b600080fd5b34801561008957600080fd5b506100926101b1565b005b3480156100a057600080fd5b506100a9610285565b005b3480156100b757600080fd5b506100ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b3565b604051808215151515815260200191505060405180910390f35b34801561011257600080fd5b5061011b6103a5565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561017b57600080fd5b506101846103e7565b6040518082815260200191505060405180910390f35b3480156101a657600080fd5b506101af6103f5565b005b60008073a1118c817b44c2ad154229a34f00b1af5ba4839491508190508073ffffffffffffffffffffffffffffffffffffffff1663f5189048306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561026957600080fd5b505af115801561027d573d6000803e3d6000fd5b505050505050565b60008090505b60648110156102b057600a818115156102a057fe5b069050808060010191505061028b565b50565b60008060405180807f696e63726561736541676528737472696e672c75696e74323536290000000000815250601b019050604051809103902090508273ffffffffffffffffffffffffffffffffffffffff16817c0100000000000000000000000000000000000000000000000000000000900460016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180807f6a61636b000000000000000000000000000000000000000000000000000000008152506020018260ff1681526020019150506000604051808303816000875af192505050915050919050565b60008033905060405180807f696e63726561736541676528737472696e672c75696e74323536290000000000815250601b019050604051809103902091505090565b600080606490508091505090565b6103fd6103f5565b5600a165627a7a723058203554e9ce6726c60f2bf8e3d902a21ffdf86dde6478513a220ef475b6cbc104060029" } }, "calls": { diff --git a/tracers/testdata/calls.json b/tracers/testdata/calls.json index 5046dc4e7..7b184ad60 100644 --- a/tracers/testdata/calls.json +++ b/tracers/testdata/calls.json @@ -13,7 +13,7 @@ "state": { "0x018f4199ff26c0cb06bf0ccfc00995c05c9e5c04": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x6080604052600436106101a05763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663031e3f9981146101a5578063075496a7146101cb57806309cea2551461020257806322928d6b14610295578063273d7ed1146102bc57806329ba7bb2146102ec5780632d88af4a146103015780633187ecb1146103225780633659f8ed146103995780633871a9fb146103c05780633f4ba83a146103e757806354fd4d50146103fc57806359d453e0146104275780635c975abb1461044e57806364c6907014610463578063702053b014610487578063747c53bd146104a25780637bc3a733146104c05780638456cb59146104d55780638ca3b448146104ea5780638da5cb5b1461051157806391f4ee97146105265780639d7cf1561461054a5780639fd0506d1461056b578063a22a7b5d14610580578063aecb29bf146105a7578063cd10c04b146105c8578063e0f4ae87146105dd578063e604e4c914610640578063e6ec812914610661578063eb96aa06146106cc578063eee4a04c14610707578063f2fde38b14610728575b600080fd5b3480156101b157600080fd5b506101c9600160a060020a0360043516602435610749565b005b3480156101d757600080fd5b506101e660ff6004351661086b565b60408051600160a060020a039092168252519081900360200190f35b34801561020e57600080fd5b5061022060ff60043516602435610889565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025a578181015183820152602001610242565b50505050905090810190601f1680156102875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a157600080fd5b506101c9600160a060020a036004358116906024351661098c565b3480156102c857600080fd5b506102da60ff60043516602435610a82565b60408051918252519081900360200190f35b3480156102f857600080fd5b506101e6610b27565b34801561030d57600080fd5b506101c9600160a060020a0360043516610b36565b34801561032e57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261038594823560ff16946024803595369594606494920191908190840183828082843750949750610c2a9650505050505050565b604080519115158252519081900360200190f35b3480156103a557600080fd5b506101c9600160a060020a0360043516602435604435610e68565b3480156103cc57600080fd5b506101c9600160a060020a0360043581169060243516610f6d565b3480156103f357600080fd5b506101c961104f565b34801561040857600080fd5b5061041161115b565b6040805160ff9092168252519081900360200190f35b34801561043357600080fd5b506101c960ff60043516600160a060020a036024351661117d565b34801561045a57600080fd5b50610385611293565b34801561046f57600080fd5b506101c9600160a060020a036004351660243561129c565b34801561049357600080fd5b506101c960ff600435166113a2565b3480156104ae57600080fd5b506102da60ff60043516602435611459565b3480156104cc57600080fd5b506102da6114cb565b3480156104e157600080fd5b506101c96114d1565b3480156104f657600080fd5b506101c9600160a060020a03600435811690602435166115cd565b34801561051d57600080fd5b506101e66116af565b34801561053257600080fd5b506101c9600435600160a060020a03602435166116be565b34801561055657600080fd5b506102da600160a060020a03600435166117a9565b34801561057757600080fd5b506101e66117c4565b34801561058c57600080fd5b506101c960ff60043516600160a060020a03602435166117d8565b3480156105b357600080fd5b506101c960ff6004351660243560443561191e565b3480156105d457600080fd5b506101e6611ab5565b3480156105e957600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101c994823560ff16946024803595369594606494920191908190840183828082843750949750611ac49650505050505050565b34801561064c57600080fd5b506101c960ff60043516602435604435611d72565b34801561066d57600080fd5b5061067c60ff60043516611f0a565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106b85781810151838201526020016106a0565b505050509050019250505060405180910390f35b3480156106d857600080fd5b506101c9600160a060020a0360043581169060243590604435151590606435906084351660a43560c435611f7a565b34801561071357600080fd5b506101c9600160a060020a036004351661219a565b34801561073457600080fd5b506101c9600160a060020a0360043516612361565b600160a060020a0382161515610797576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206125bb833981519152604482015290519081900360640190fd5b8015156107ee576040805160e560020a62461bcd02815260206004820152601060248201527f696e76616c6964206f70657261746f7200000000000000000000000000000000604482015290519081900360640190fd5b604080517f66259e7f000000000000000000000000000000000000000000000000000000008152600481018390529051600160a060020a038416916366259e7f91602480830192600092919082900301818387803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b505050505050565b60ff16600090815260066020526040902054600160a060020a031690565b60ff82166000908152600660205260408082205481517fc031a180000000000000000000000000000000000000000000000000000000008152600481018590529151606093600160a060020a039092169263c031a18092602480830193919282900301818387803b1580156108fd57600080fd5b505af1158015610911573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561093a57600080fd5b81019080805164010000000081111561095257600080fd5b8201602081018481111561096557600080fd5b815164010000000081118282018710171561097f57600080fd5b5090979650505050505050565b600054600160a060020a03163314806109af5750600054600160a060020a031632145b15156109f3576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b604080517f22928d6b000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916322928d6b916044808301926000929190829003018186803b158015610a6e57600080fd5b505af4158015610863573d6000803e3d6000fd5b60ff821660009081526006602090815260408083205481517f709ccbe3000000000000000000000000000000000000000000000000000000008152600481018690529151600160a060020a039091169263709ccbe3926024808201939182900301818787803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b505050506040513d6020811015610b1e57600080fd5b50519392505050565b600154600160a060020a031681565b6003546101009004600160a060020a0316321480610b6357506003546101009004600160a060020a031633145b1515610ba7576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b600160a060020a0381161515610bf5576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206125bb833981519152604482015290519081900360640190fd5b60038054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6000805460609082908190600160a060020a0316331415610c4e5760019350610e5e565b60ff871660009081526007602090815260409182902080548351818402810184019094528084529091830182828015610cb057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610c92575b50505050509250825160001480610cc5575085155b80610cdd575033600090815260026020526040902054155b15610ceb5760009350610e5e565b600091505b8251821015610e59578282815181101515610d0757fe5b602090810290910181015160ff8916600090815260068352604080822054338352600285528183205491517f84c9f8f6000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820181815260248301859052604483018e90526080606484019081528d5160848501528d51979950938916976384c9f8f69792968f958f959394909360a401928601918190849084905b83811015610dc4578181015183820152602001610dac565b50505050905090810190601f168015610df15780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b505050506040513d6020811015610e3d57600080fd5b50511515610e4e5760009350610e5e565b600190910190610cf0565b600193505b5050509392505050565b600054600160a060020a0316331480610e8b5750600054600160a060020a031632145b1515610ecf576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b604080517f3659f8ed000000000000000000000000000000000000000000000000000000008152600160a060020a0385166004820152602481018490526044810183905290517337896a421adad56be1abe02fc45773b5625c280a91633659f8ed916064808301926000929190829003018186803b158015610f5057600080fd5b505af4158015610f64573d6000803e3d6000fd5b50505050505050565b600054600160a060020a0316331480610f905750600054600160a060020a031632145b1515610fd4576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b604080517f3871a9fb000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91633871a9fb916044808301926000929190829003018186803b158015610a6e57600080fd5b6003546101009004600160a060020a031632148061107c57506003546101009004600160a060020a031633145b15156110c0576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b60035460ff16151561111c576040805160e560020a62461bcd02815260206004820152601360248201527f70726f746f636f6c2069732072756e6e696e6700000000000000000000000000604482015290519081900360640190fd5b6003805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6003547501000000000000000000000000000000000000000000900460ff1681565b600554600160a060020a031633146111cd576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b600160a060020a038116151561121b576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206125bb833981519152604482015290519081900360640190fd5b60ff8216600081815260066020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03861690811790915582519384529083015280517f30575d399fa8818f999e723f867adb4a8bafd4ff3096400ccd0cc6228ba9b0fa9281900390910190a15050565b60035460ff1681565b600160a060020a03821615156112ea576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206125bb833981519152604482015290519081900360640190fd5b801515611341576040805160e560020a62461bcd02815260206004820152601060248201527f696e76616c6964206f70657261746f7200000000000000000000000000000000604482015290519081900360640190fd5b604080517f6f78c7cd000000000000000000000000000000000000000000000000000000008152600481018390529051600160a060020a03841691636f78c7cd91602480830192600092919082900301818387803b15801561084f57600080fd5b600554600160a060020a031633146113f2576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b60ff8116600090815260076020526040812061140d91612578565b3360009081526002602090815260409182902054825160ff85168152925190927fd1b2a2ee8fd7b288028b2f73b4ca8a502d640c701e23f312274e9e58a5cd536292908290030190a250565b60ff821660009081526006602090815260408083205481517fa6ed563e000000000000000000000000000000000000000000000000000000008152600481018690529151600160a060020a039091169263a6ed563e926024808201939182900301818787803b158015610af457600080fd5b60045481565b6003546101009004600160a060020a03163214806114fe57506003546101009004600160a060020a031633145b1515611542576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b60035460ff161561158b576040805160e560020a62461bcd02815260206004820152601660248201526000805160206125fb833981519152604482015290519081900360640190fd5b6003805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b600054600160a060020a03163314806115f05750600054600160a060020a031632145b1515611634576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b604080517f8ca3b448000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91638ca3b448916044808301926000929190829003018186803b158015610a6e57600080fd5b600054600160a060020a031681565b600054600160a060020a03163314806116e15750600054600160a060020a031632145b1515611725576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b81151561177c576040805160e560020a62461bcd02815260206004820152600b60248201527f696e76616c696420756964000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561179b57611796828261247e565b6117a5565b6117a582826124c4565b5050565b600160a060020a031660009081526002602052604090205490565b6003546101009004600160a060020a031681565b600554600160a060020a03163314611828576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b60ff8216600090815260066020526040902054600160a060020a03161515611888576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206125bb833981519152604482015290519081900360640190fd5b60ff82166000818152600760209081526040808320805460018101825590845282842001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716908117909155338452600283529281902054815194855291840192909252815190927f20eec64f279e01261ebdb3fa38d5f0005cf627f0b9ed5f9536bc42db0b67223f92908290030190a25050565b60035460ff1615611967576040805160e560020a62461bcd02815260206004820152601660248201526000805160206125fb833981519152604482015290519081900360640190fd5b604080516020808201849052825180830390910181529082019091526119909084908490610c2a565b15156119d4576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b60ff83166000908152600660205260408082205481517f4e91db0800000000000000000000000000000000000000000000000000000000815260048101869052602481018590529151600160a060020a0390911692634e91db08926044808201939182900301818387803b158015611a4b57600080fd5b505af1158015611a5f573d6000803e3d6000fd5b505033600090815260026020908152604091829020548251868152925187955090935060ff8816927fec7c88986ebe0008ab11b3856b7e7963a907c417a7e0362bd682d2c08cb68d6992908290030190a4505050565b600554600160a060020a031681565b60035460ff1615611b0d576040805160e560020a62461bcd02815260206004820152601660248201526000805160206125fb833981519152604482015290519081900360640190fd5b611b7e8383836040516020018082805190602001908083835b60208310611b455780518252601f199092019160209182019101611b26565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052610c2a565b1515611bc2576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b60ff831660009081526006602090815260408083205481517f2e28d0840000000000000000000000000000000000000000000000000000000081526004810187815260248201938452865160448301528651600160a060020a0390931695632e28d084958995899593949093606490910192918601918190849084905b83811015611c57578181015183820152602001611c3f565b50505050905090810190601f168015611c845780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611ca457600080fd5b505af1158015611cb8573d6000803e3d6000fd5b5050336000908152600260209081526040808320548151838152875181850152875189975091955060ff8a16947faaa3b0797f62a4969c6227da8bb6ff6694a29a356bbcc87079bf4d5e686a182f94899492938493840192918601918190849084905b83811015611d33578181015183820152602001611d1b565b50505050905090810190601f168015611d605780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505050565b60035460ff1615611dbb576040805160e560020a62461bcd02815260206004820152601660248201526000805160206125fb833981519152604482015290519081900360640190fd5b611de583838360405160200180828152602001915050604051602081830303815290604052610c2a565b1515611e29576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b60ff83166000908152600660205260408082205481517f4a094ea600000000000000000000000000000000000000000000000000000000815260048101869052602481018590529151600160a060020a0390911692634a094ea6926044808201939182900301818387803b158015611ea057600080fd5b505af1158015611eb4573d6000803e3d6000fd5b505033600090815260026020908152604091829020548251868152925187955090935060ff8816927f03a15c2f5b777ffb77adc765ead10adc210b55b0e9bf30d2e82fbdc518df12e692908290030190a4505050565b60ff8116600090815260076020908152604091829020805483518184028101840190945280845260609392830182828015611f6e57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611f50575b50505050509050919050565b60045415611fd2576040805160e560020a62461bcd02815260206004820152600e60248201527f6f6e6c7920696e6974206f6e6365000000000000000000000000000000000000604482015290519081900360640190fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0389161790556004869055841561218757600160a060020a0383161515612065576040805160e560020a62461bcd02815260206004820152601460248201527f696e76616c696420757365722061646472657373000000000000000000000000604482015290519081900360640190fd5b604080517f3659f8ed000000000000000000000000000000000000000000000000000000008152306004820152602481018490526044810183905290517337896a421adad56be1abe02fc45773b5625c280a91633659f8ed916064808301926000929190829003018186803b1580156120dd57600080fd5b505af41580156120f1573d6000803e3d6000fd5b5050604080517f8ca3b448000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a038716602482015290517337896a421adad56be1abe02fc45773b5625c280a9350638ca3b44892506044808301926000929190829003018186803b15801561216e57600080fd5b505af4158015612182573d6000803e3d6000fd5b505050505b61219184846116be565b610f6483612361565b6003546000906101009004600160a060020a03163214806121ca57506003546101009004600160a060020a031633145b151561220e576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b60035460ff1615612257576040805160e560020a62461bcd02815260206004820152601660248201526000805160206125fb833981519152604482015290519081900360640190fd5b61225f6114d1565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905165456e65726779916370a082319160248083019260209291908290030181600087803b1580156122bd57600080fd5b505af11580156122d1573d6000803e3d6000fd5b505050506040513d60208110156122e757600080fd5b5051905060008111156117a557604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038416600482015260248101839052905165456e657267799163a9059cbb91604480830192600092919082900301818387803b15801561084f57600080fd5b600054600160a060020a03163314806123845750600054600160a060020a031632145b15156123c8576040805160e560020a62461bcd02815260206004820152601160248201526000805160206125db833981519152604482015290519081900360640190fd5b600160a060020a0381161515612416576040805160e560020a62461bcd02815260206004820152600f60248201526000805160206125bb833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0381166000818152600260205260408082208290555184917fe87454f4febbdec7791639e212aa0b6c7179180ca2d615b35676d33adbd9c45191a35050565b600160a060020a03811660009081526002602052604090205415612532576040805160e560020a62461bcd02815260206004820152600960248201527f7569642065786973740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381166000818152600260205260408082208590555184917f7bbaafe20bea023575f7f016c919997f2ecf373e1b345dfab6596382e973509191a35050565b50805460008255906000526020600020908101906125969190612599565b50565b6125b791905b808211156125b3576000815560010161259f565b5090565b905600696e76616c6964206164647265737300000000000000000000000000000000007065726d697373696f6e2064656e69656400000000000000000000000000000070726f746f636f6c206973206e6f742072756e696e6700000000000000000000a165627a7a7230582046f7e27e9fd9704a88b677dabf62a5a01e632e9569021e3e531b915e1b7a51f20029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000005": "0x00000000000000000000000089d7526f9a16e1f808fa706232d130459ec59af2", @@ -25,14 +25,12 @@ }, "0x2303b0589661987be623becfc3a9a419326ece5d": { "balance": "0x0", - "nonce": 0, - "code": "0x6080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301378b58811461009d57806322928d6b146100c657806329ba7bb2146100ed5780633659f8ed1461011e5780633871a9fb146101455780638ca3b4481461016c5780638da5cb5b146101935780638e1a55fc146101a8578063f2fde38b146101bd575b600080fd5b3480156100a957600080fd5b506100c4600160a060020a03600435811690602435166101de565b005b3480156100d257600080fd5b506100c4600160a060020a03600435811690602435166102dc565b3480156100f957600080fd5b506101026103be565b60408051600160a060020a039092168252519081900360200190f35b34801561012a57600080fd5b506100c4600160a060020a03600435166024356044356103cd565b34801561015157600080fd5b506100c4600160a060020a03600435811690602435166104d2565b34801561017857600080fd5b506100c4600160a060020a03600435811690602435166105b4565b34801561019f57600080fd5b50610102610696565b3480156101b457600080fd5b506101026106a5565b3480156101c957600080fd5b506100c4600160a060020a03600435166106d1565b600054600160a060020a03163314806102015750600054600160a060020a031632145b1515610245576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f01378b58000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916301378b58916044808301926000929190829003018186803b1580156102c057600080fd5b505af41580156102d4573d6000803e3d6000fd5b505050505050565b600054600160a060020a03163314806102ff5750600054600160a060020a031632145b1515610343576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f22928d6b000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916322928d6b916044808301926000929190829003018186803b1580156102c057600080fd5b600154600160a060020a031681565b600054600160a060020a03163314806103f05750600054600160a060020a031632145b1515610434576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f3659f8ed000000000000000000000000000000000000000000000000000000008152600160a060020a0385166004820152602481018490526044810183905290517337896a421adad56be1abe02fc45773b5625c280a91633659f8ed916064808301926000929190829003018186803b1580156104b557600080fd5b505af41580156104c9573d6000803e3d6000fd5b50505050505050565b600054600160a060020a03163314806104f55750600054600160a060020a031632145b1515610539576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f3871a9fb000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91633871a9fb916044808301926000929190829003018186803b1580156102c057600080fd5b600054600160a060020a03163314806105d75750600054600160a060020a031632145b151561061b576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f8ca3b448000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91638ca3b448916044808301926000929190829003018186803b1580156102c057600080fd5b600054600160a060020a031681565b60006106af610800565b604051809103906000f0801580156106cb573d6000803e3d6000fd5b50905090565b600054600160a060020a03163314806106f45750600054600160a060020a031632145b1515610738576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b600160a060020a0381161515610798576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040516107d18061081183390190560060c0604052601360808181527f416363657373506f6c696379436c61737369630000000000000000000000000060a0908152909161003f91600091610068565b50506001805432600160a060020a03199182168117909255600280549091169091179055610103565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a957805160ff19168380011785556100d6565b828001600101855582156100d6579182015b828111156100d65782518255916020019190600101906100bb565b506100e29291506100e6565b5090565b61010091905b808211156100e257600081556001016100ec565b90565b6106bf806101126000396000f3006080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166329ba7bb2811461009d5780632aa71e24146100ce57806366259e7f146100f45780636f78c7cd1461010c57806384c9f8f6146101245780638da5cb5b146101a4578063e14c9e2e146101b9578063e55cb3d414610243578063f2fde38b1461025b575b600080fd5b3480156100a957600080fd5b506100b261027c565b60408051600160a060020a039092168252519081900360200190f35b3480156100da57600080fd5b506100f2600435600160a060020a036024351661028b565b005b34801561010057600080fd5b506100f2600435610309565b34801561011857600080fd5b506100f26004356103c2565b34801561013057600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261019094600160a060020a03813516946024803595604435953695608494930191819084018382808284375094975061047e9650505050505050565b604080519115158252519081900360200190f35b3480156101b057600080fd5b506100b2610497565b3480156101c557600080fd5b506101ce6104a6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102085781810151838201526020016101f0565b50505050905090810190601f1680156102355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024f57600080fd5b5061019060043561053c565b34801561026757600080fd5b506100f2600160a060020a0360043516610551565b600254600160a060020a031681565b60045460ff16156102e6576040805160e560020a62461bcd02815260206004820152600e60248201527f6f6e6c7920696e6974206f6e6365000000000000000000000000000000000000604482015290519081900360640190fd5b6004805460ff191660011790556102fc826103c2565b61030581610551565b5050565b600154600160a060020a031633148061032c5750600154600160a060020a031632145b1515610382576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600081815260036020526040808220805460ff191690555182917f87ed60f85ca9455ddc75377b551f6e9345e1191987f08d339604ebbd4d274c3c91a250565b600154600160a060020a03163314806103e55750600154600160a060020a031632145b151561043b576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600081815260036020526040808220805460ff191660011790555182917f564472207cf6697287aa046e48d6a90a31d9be632c632a96785adf57c79e6fa491a250565b505060009081526003602052604090205460ff16919050565b600154600160a060020a031681565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105325780601f1061050757610100808354040283529160200191610532565b820191906000526020600020905b81548152906001019060200180831161051557829003601f168201915b5050505050905090565b60036020526000908152604090205460ff1681565b600154600160a060020a03163314806105745750600154600160a060020a031632145b15156105ca576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561062a576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b600154604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820cb8cd44a087ec93943acb1f88c01f7125eb473f3afd9a7cd6275acdbbc68790000297065726d697373696f6e2064656e696564000000000000000000000000000000a165627a7a723058201f6a09dc3dfe22edf1a11ee5204801a972552581fcfe2ae30943bb6c97df5b240029", - "storage": {} + "energy": "0x0", + "code": "0x6080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301378b58811461009d57806322928d6b146100c657806329ba7bb2146100ed5780633659f8ed1461011e5780633871a9fb146101455780638ca3b4481461016c5780638da5cb5b146101935780638e1a55fc146101a8578063f2fde38b146101bd575b600080fd5b3480156100a957600080fd5b506100c4600160a060020a03600435811690602435166101de565b005b3480156100d257600080fd5b506100c4600160a060020a03600435811690602435166102dc565b3480156100f957600080fd5b506101026103be565b60408051600160a060020a039092168252519081900360200190f35b34801561012a57600080fd5b506100c4600160a060020a03600435166024356044356103cd565b34801561015157600080fd5b506100c4600160a060020a03600435811690602435166104d2565b34801561017857600080fd5b506100c4600160a060020a03600435811690602435166105b4565b34801561019f57600080fd5b50610102610696565b3480156101b457600080fd5b506101026106a5565b3480156101c957600080fd5b506100c4600160a060020a03600435166106d1565b600054600160a060020a03163314806102015750600054600160a060020a031632145b1515610245576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f01378b58000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916301378b58916044808301926000929190829003018186803b1580156102c057600080fd5b505af41580156102d4573d6000803e3d6000fd5b505050505050565b600054600160a060020a03163314806102ff5750600054600160a060020a031632145b1515610343576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f22928d6b000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916322928d6b916044808301926000929190829003018186803b1580156102c057600080fd5b600154600160a060020a031681565b600054600160a060020a03163314806103f05750600054600160a060020a031632145b1515610434576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f3659f8ed000000000000000000000000000000000000000000000000000000008152600160a060020a0385166004820152602481018490526044810183905290517337896a421adad56be1abe02fc45773b5625c280a91633659f8ed916064808301926000929190829003018186803b1580156104b557600080fd5b505af41580156104c9573d6000803e3d6000fd5b50505050505050565b600054600160a060020a03163314806104f55750600054600160a060020a031632145b1515610539576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f3871a9fb000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91633871a9fb916044808301926000929190829003018186803b1580156102c057600080fd5b600054600160a060020a03163314806105d75750600054600160a060020a031632145b151561061b576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b604080517f8ca3b448000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91638ca3b448916044808301926000929190829003018186803b1580156102c057600080fd5b600054600160a060020a031681565b60006106af610800565b604051809103906000f0801580156106cb573d6000803e3d6000fd5b50905090565b600054600160a060020a03163314806106f45750600054600160a060020a031632145b1515610738576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610fe2833981519152604482015290519081900360640190fd5b600160a060020a0381161515610798576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040516107d18061081183390190560060c0604052601360808181527f416363657373506f6c696379436c61737369630000000000000000000000000060a0908152909161003f91600091610068565b50506001805432600160a060020a03199182168117909255600280549091169091179055610103565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a957805160ff19168380011785556100d6565b828001600101855582156100d6579182015b828111156100d65782518255916020019190600101906100bb565b506100e29291506100e6565b5090565b61010091905b808211156100e257600081556001016100ec565b90565b6106bf806101126000396000f3006080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166329ba7bb2811461009d5780632aa71e24146100ce57806366259e7f146100f45780636f78c7cd1461010c57806384c9f8f6146101245780638da5cb5b146101a4578063e14c9e2e146101b9578063e55cb3d414610243578063f2fde38b1461025b575b600080fd5b3480156100a957600080fd5b506100b261027c565b60408051600160a060020a039092168252519081900360200190f35b3480156100da57600080fd5b506100f2600435600160a060020a036024351661028b565b005b34801561010057600080fd5b506100f2600435610309565b34801561011857600080fd5b506100f26004356103c2565b34801561013057600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261019094600160a060020a03813516946024803595604435953695608494930191819084018382808284375094975061047e9650505050505050565b604080519115158252519081900360200190f35b3480156101b057600080fd5b506100b2610497565b3480156101c557600080fd5b506101ce6104a6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102085781810151838201526020016101f0565b50505050905090810190601f1680156102355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024f57600080fd5b5061019060043561053c565b34801561026757600080fd5b506100f2600160a060020a0360043516610551565b600254600160a060020a031681565b60045460ff16156102e6576040805160e560020a62461bcd02815260206004820152600e60248201527f6f6e6c7920696e6974206f6e6365000000000000000000000000000000000000604482015290519081900360640190fd5b6004805460ff191660011790556102fc826103c2565b61030581610551565b5050565b600154600160a060020a031633148061032c5750600154600160a060020a031632145b1515610382576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600081815260036020526040808220805460ff191690555182917f87ed60f85ca9455ddc75377b551f6e9345e1191987f08d339604ebbd4d274c3c91a250565b600154600160a060020a03163314806103e55750600154600160a060020a031632145b151561043b576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600081815260036020526040808220805460ff191660011790555182917f564472207cf6697287aa046e48d6a90a31d9be632c632a96785adf57c79e6fa491a250565b505060009081526003602052604090205460ff16919050565b600154600160a060020a031681565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105325780601f1061050757610100808354040283529160200191610532565b820191906000526020600020905b81548152906001019060200180831161051557829003601f168201915b5050505050905090565b60036020526000908152604090205460ff1681565b600154600160a060020a03163314806105745750600154600160a060020a031632145b15156105ca576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561062a576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b600154604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820cb8cd44a087ec93943acb1f88c01f7125eb473f3afd9a7cd6275acdbbc68790000297065726d697373696f6e2064656e696564000000000000000000000000000000a165627a7a723058201f6a09dc3dfe22edf1a11ee5204801a972552581fcfe2ae30943bb6c97df5b240029" }, "0x6a561b5a6a8f14724de26c3bf922c9e884fa3df2": { "balance": "0x0", - "nonce": 0, - "code": "0x", + "energy": "0x0", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -40,14 +38,11 @@ }, "0x731f7ffa916a24049457f959b8c160191666c58e": { "balance": "0x0", - "nonce": 0, - "code": "0x", - "storage": {} + "energy": "0x0" }, "0x7b2493d3ef8b32de6fe0e17e1dedb0ca10743a76": { "balance": "0x0", - "nonce": 0, - "code": "0x", + "energy": "0x0", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -58,13 +53,12 @@ }, "0x7c6d059078bb5034e4f74f02a6ab0db99f5b0bdb": { "balance": "0x0", - "nonce": 0, - "code": "0x6080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301378b58811461009d57806322928d6b146100c657806329ba7bb2146100ed5780633659f8ed1461011e5780633871a9fb146101455780638ca3b4481461016c5780638da5cb5b146101935780638e1a55fc146101a8578063f2fde38b146101bd575b600080fd5b3480156100a957600080fd5b506100c4600160a060020a03600435811690602435166101de565b005b3480156100d257600080fd5b506100c4600160a060020a03600435811690602435166102dc565b3480156100f957600080fd5b506101026103be565b60408051600160a060020a039092168252519081900360200190f35b34801561012a57600080fd5b506100c4600160a060020a03600435166024356044356103cd565b34801561015157600080fd5b506100c4600160a060020a03600435811690602435166104d2565b34801561017857600080fd5b506100c4600160a060020a03600435811690602435166105b4565b34801561019f57600080fd5b50610102610696565b3480156101b457600080fd5b506101026106a5565b3480156101c957600080fd5b506100c4600160a060020a03600435166106d1565b600054600160a060020a03163314806102015750600054600160a060020a031632145b1515610245576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f01378b58000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916301378b58916044808301926000929190829003018186803b1580156102c057600080fd5b505af41580156102d4573d6000803e3d6000fd5b505050505050565b600054600160a060020a03163314806102ff5750600054600160a060020a031632145b1515610343576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f22928d6b000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916322928d6b916044808301926000929190829003018186803b1580156102c057600080fd5b600154600160a060020a031681565b600054600160a060020a03163314806103f05750600054600160a060020a031632145b1515610434576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f3659f8ed000000000000000000000000000000000000000000000000000000008152600160a060020a0385166004820152602481018490526044810183905290517337896a421adad56be1abe02fc45773b5625c280a91633659f8ed916064808301926000929190829003018186803b1580156104b557600080fd5b505af41580156104c9573d6000803e3d6000fd5b50505050505050565b600054600160a060020a03163314806104f55750600054600160a060020a031632145b1515610539576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f3871a9fb000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91633871a9fb916044808301926000929190829003018186803b1580156102c057600080fd5b600054600160a060020a03163314806105d75750600054600160a060020a031632145b151561061b576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f8ca3b448000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91638ca3b448916044808301926000929190829003018186803b1580156102c057600080fd5b600054600160a060020a031681565b60006106af610800565b604051809103906000f0801580156106cb573d6000803e3d6000fd5b50905090565b600054600160a060020a03163314806106f45750600054600160a060020a031632145b1515610738576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b600160a060020a0381161515610798576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040516104e98061081183390190560060806040526000805460ff1916600217905534801561001d57600080fd5b506104bc8061002d6000396000f3006080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306661abd811461009d5780634d9431ea146100c45780634e91db08146100fa57806354fd4d50146101155780638eaa6ac014610140578063a6ed563e14610158578063af640d0f14610170578063c031a18014610185578063cd10c04b14610212575b600080fd5b3480156100a957600080fd5b506100b2610250565b60408051918252519081900360200190f35b3480156100d057600080fd5b506100f873ffffffffffffffffffffffffffffffffffffffff6004351660ff60243516610256565b005b34801561010657600080fd5b506100f8600435602435610333565b34801561012157600080fd5b5061012a61040c565b6040805160ff9092168252519081900360200190f35b34801561014c57600080fd5b506100b2600435610415565b34801561016457600080fd5b506100b2600435610426565b34801561017c57600080fd5b5061012a610438565b34801561019157600080fd5b5061019d600435610446565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d75781810151838201526020016101bf565b50505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021e57600080fd5b50610227610474565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60015481565b60025473ffffffffffffffffffffffffffffffffffffffff16156102db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616e2062652063616c6c6564206f6e6c79206f6e6365000000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff90931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091556000805460ff9092166101000261ff0019909216919091179055565b60025460009073ffffffffffffffffffffffffffffffffffffffff1633146103bc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b506000828152600360205260409020548115156103e95780156103e457600180546000190190555b6103f9565b8015156103f95760018054810190555b5060009182526003602052604090912055565b60005460ff1681565b600061042082610426565b92915050565b60009081526003602052604090205490565b600054610100900460ff1681565b6000908152600360209081526040918290205482518083019190915282518082039092018252820190915290565b60025473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820f02148b8813fd7cf89e5d30a415e72b869409ec83d5adaa7155dd359d0189aa400297065726d697373696f6e2064656e696564000000000000000000000000000000a165627a7a7230582089581a9051afb38a6fcb634e4f19452d65b75bd163d854d39d87e451c4699faf0029", - "storage": {} + "energy": "0x0", + "code": "0x6080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301378b58811461009d57806322928d6b146100c657806329ba7bb2146100ed5780633659f8ed1461011e5780633871a9fb146101455780638ca3b4481461016c5780638da5cb5b146101935780638e1a55fc146101a8578063f2fde38b146101bd575b600080fd5b3480156100a957600080fd5b506100c4600160a060020a03600435811690602435166101de565b005b3480156100d257600080fd5b506100c4600160a060020a03600435811690602435166102dc565b3480156100f957600080fd5b506101026103be565b60408051600160a060020a039092168252519081900360200190f35b34801561012a57600080fd5b506100c4600160a060020a03600435166024356044356103cd565b34801561015157600080fd5b506100c4600160a060020a03600435811690602435166104d2565b34801561017857600080fd5b506100c4600160a060020a03600435811690602435166105b4565b34801561019f57600080fd5b50610102610696565b3480156101b457600080fd5b506101026106a5565b3480156101c957600080fd5b506100c4600160a060020a03600435166106d1565b600054600160a060020a03163314806102015750600054600160a060020a031632145b1515610245576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f01378b58000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916301378b58916044808301926000929190829003018186803b1580156102c057600080fd5b505af41580156102d4573d6000803e3d6000fd5b505050505050565b600054600160a060020a03163314806102ff5750600054600160a060020a031632145b1515610343576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f22928d6b000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a916322928d6b916044808301926000929190829003018186803b1580156102c057600080fd5b600154600160a060020a031681565b600054600160a060020a03163314806103f05750600054600160a060020a031632145b1515610434576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f3659f8ed000000000000000000000000000000000000000000000000000000008152600160a060020a0385166004820152602481018490526044810183905290517337896a421adad56be1abe02fc45773b5625c280a91633659f8ed916064808301926000929190829003018186803b1580156104b557600080fd5b505af41580156104c9573d6000803e3d6000fd5b50505050505050565b600054600160a060020a03163314806104f55750600054600160a060020a031632145b1515610539576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f3871a9fb000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91633871a9fb916044808301926000929190829003018186803b1580156102c057600080fd5b600054600160a060020a03163314806105d75750600054600160a060020a031632145b151561061b576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b604080517f8ca3b448000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301528316602482015290517337896a421adad56be1abe02fc45773b5625c280a91638ca3b448916044808301926000929190829003018186803b1580156102c057600080fd5b600054600160a060020a031681565b60006106af610800565b604051809103906000f0801580156106cb573d6000803e3d6000fd5b50905090565b600054600160a060020a03163314806106f45750600054600160a060020a031632145b1515610738576040805160e560020a62461bcd0281526020600482015260116024820152600080516020610cfa833981519152604482015290519081900360640190fd5b600160a060020a0381161515610798576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6040516104e98061081183390190560060806040526000805460ff1916600217905534801561001d57600080fd5b506104bc8061002d6000396000f3006080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306661abd811461009d5780634d9431ea146100c45780634e91db08146100fa57806354fd4d50146101155780638eaa6ac014610140578063a6ed563e14610158578063af640d0f14610170578063c031a18014610185578063cd10c04b14610212575b600080fd5b3480156100a957600080fd5b506100b2610250565b60408051918252519081900360200190f35b3480156100d057600080fd5b506100f873ffffffffffffffffffffffffffffffffffffffff6004351660ff60243516610256565b005b34801561010657600080fd5b506100f8600435602435610333565b34801561012157600080fd5b5061012a61040c565b6040805160ff9092168252519081900360200190f35b34801561014c57600080fd5b506100b2600435610415565b34801561016457600080fd5b506100b2600435610426565b34801561017c57600080fd5b5061012a610438565b34801561019157600080fd5b5061019d600435610446565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d75781810151838201526020016101bf565b50505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021e57600080fd5b50610227610474565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60015481565b60025473ffffffffffffffffffffffffffffffffffffffff16156102db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616e2062652063616c6c6564206f6e6c79206f6e6365000000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff90931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091556000805460ff9092166101000261ff0019909216919091179055565b60025460009073ffffffffffffffffffffffffffffffffffffffff1633146103bc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b506000828152600360205260409020548115156103e95780156103e457600180546000190190555b6103f9565b8015156103f95760018054810190555b5060009182526003602052604090912055565b60005460ff1681565b600061042082610426565b92915050565b60009081526003602052604090205490565b600054610100900460ff1681565b6000908152600360209081526040918290205482518083019190915282518082039092018252820190915290565b60025473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820f02148b8813fd7cf89e5d30a415e72b869409ec83d5adaa7155dd359d0189aa400297065726d697373696f6e2064656e696564000000000000000000000000000000a165627a7a7230582089581a9051afb38a6fcb634e4f19452d65b75bd163d854d39d87e451c4699faf0029" }, "0x89d7526f9a16e1f808fa706232d130459ec59af2": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x60806040526004361061010e5763ffffffff60e060020a6000350416630888c2d1811461011357806319e6bc881461014757806329ba7bb21461016e5780632d88af4a14610183578063327942a2146101a657806335543f3e146101c15780633f4ba83a146101f8578063485fef7b1461020d57806354fd4d501461022557806358f28c5b146102505780635c975abb1461026e578063706e3506146102975780638456cb591461031457806389483a9a146103295780638da5cb5b146103535780639a210542146103685780639fd0506d146103e8578063cd10c04b146103fd578063d34122b514610412578063e2cee54414610433578063eee4a04c14610448578063f2fde38b14610469575b600080fd5b34801561011f57600080fd5b5061012b60043561048a565b60408051600160a060020a039092168252519081900360200190f35b34801561015357600080fd5b5061015c6104a5565b60408051918252519081900360200190f35b34801561017a57600080fd5b5061012b6104ab565b34801561018f57600080fd5b506101a4600160a060020a03600435166104ba565b005b3480156101b257600080fd5b506101a46004356024356105b0565b3480156101cd57600080fd5b506101a4600160a060020a03600435811690602435906044351515906064351660843560a43561084a565b34801561020457600080fd5b506101a4610a68565b34801561021957600080fd5b506101a4600435610b85565b34801561023157600080fd5b5061023a610db5565b6040805160ff9092168252519081900360200190f35b34801561025c57600080fd5b506101a460043560ff60243516610dc5565b34801561027a57600080fd5b50610283610f70565b604080519115158252519081900360200190f35b3480156102a357600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261012b9583359536956044949193909101919081908401838280828437509497505050833560ff169450505050602081013515159060408101359060600135600160a060020a0316610f80565b34801561032057600080fd5b506101a4611446565b34801561033557600080fd5b506101a460043560ff60243516600160a060020a0360443516611556565b34801561035f57600080fd5b5061012b611724565b34801561037457600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261012b9583359536956044949193909101919081908401838280828437509497505050508235151593505050602081013590600160a060020a036040820135169060608101359060800135611733565b3480156103f457600080fd5b5061012b611a70565b34801561040957600080fd5b5061012b611a7f565b34801561041e57600080fd5b5061015c600160a060020a0360043516611a8e565b34801561043f57600080fd5b5061015c611aa9565b34801561045457600080fd5b506101a4600160a060020a0360043516611aaf565b34801561047557600080fd5b506101a4600160a060020a0360043516611c73565b600090815260066020526040902054600160a060020a031690565b60055481565b600154600160a060020a031681565b600254600160a060020a03163214806104dd5750600254600160a060020a031633145b1515610521576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b600160a060020a0381161515610581576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080548190600160a060020a03163314806105d65750600054600160a060020a031632145b151561061a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff161561066a576040805160e560020a62461bcd0281526020600482015260166024820152600080516020611e8f833981519152604482015290519081900360640190fd5b600084815260066020526040902054600160a060020a031691508115156106db576040805160e560020a62461bcd02815260206004820152601160248201527f636f6d70616e79206e6f74206578697374000000000000000000000000000000604482015290519081900360640190fd5b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905165456e65726779916370a082319160248083019260209291908290030181600087803b15801561073957600080fd5b505af115801561074d573d6000803e3d6000fd5b505050506040513d602081101561076357600080fd5b50519050828110156107bf576040805160e560020a62461bcd02815260206004820152601660248201527f656e6572677920697320696e73756666696369656e7400000000000000000000604482015290519081900360640190fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038416600482015260248101859052905165456e657267799163a9059cbb91604480830192600092919082900301818387803b15801561082c57600080fd5b505af1158015610840573d6000803e3d6000fd5b5050505050505050565b600454156108a2576040805160e560020a62461bcd02815260206004820152600e60248201527f6f6e6c7920696e6974206f6e6365000000000000000000000000000000000000604482015290519081900360640190fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03881617905560048590558315610a5757600160a060020a0383161515610935576040805160e560020a62461bcd02815260206004820152601460248201527f696e76616c696420757365722061646472657373000000000000000000000000604482015290519081900360640190fd5b604080517f3659f8ed000000000000000000000000000000000000000000000000000000008152306004820152602481018490526044810183905290517337896a421adad56be1abe02fc45773b5625c280a91633659f8ed916064808301926000929190829003018186803b1580156109ad57600080fd5b505af41580156109c1573d6000803e3d6000fd5b5050604080517f8ca3b448000000000000000000000000000000000000000000000000000000008152306004820152600160a060020a038716602482015290517337896a421adad56be1abe02fc45773b5625c280a9350638ca3b44892506044808301926000929190829003018186803b158015610a3e57600080fd5b505af4158015610a52573d6000803e3d6000fd5b505050505b610a6083611c73565b505050505050565b600254600160a060020a0316321480610a8b5750600254600160a060020a031633145b1515610acf576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff161515610b32576040805160e560020a62461bcd02815260206004820152601360248201527f70726f746f636f6c2069732072756e6e696e6700000000000000000000000000604482015290519081900360640190fd5b6001805474ff0000000000000000000000000000000000000000191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60008054600160a060020a0316331480610ba95750600054600160a060020a031632145b1515610bed576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff1615610c3d576040805160e560020a62461bcd0281526020600482015260166024820152600080516020611e8f833981519152604482015290519081900360640190fd5b600082815260066020526040902054600160a060020a03161515610cab576040805160e560020a62461bcd02815260206004820152601160248201527f636f6d70616e79206e6f74206578697374000000000000000000000000000000604482015290519081900360640190fd5b506000818152600660205260408082205481517feee4a04c0000000000000000000000000000000000000000000000000000000081523060048201529151600160a060020a0390911692839263eee4a04c926024808301939282900301818387803b158015610d1957600080fd5b505af1158015610d2d573d6000803e3d6000fd5b5050506000838152600660209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19169055600160a060020a0385168084526007835281842093909355600580546000190190558051928352518593507fd0c0f2fcfc42f8992ee028132e0d4d85beeef861b7e8dc855ec7e9854d3ad3df9281900390910190a25050565b60025460a060020a900460ff1681565b600054600160a060020a0316331480610de85750600054600160a060020a031632145b1515610e2c576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff1615610e7c576040805160e560020a62461bcd0281526020600482015260166024820152600080516020611e8f833981519152604482015290519081900360640190fd5b600082815260066020526040902054600160a060020a03161515610eea576040805160e560020a62461bcd02815260206004820152601160248201527f636f6d70616e79206e6f74206578697374000000000000000000000000000000604482015290519081900360640190fd5b6000828152600660205260408082205481517f702053b000000000000000000000000000000000000000000000000000000000815260ff851660048201529151600160a060020a039091169263702053b0926024808201939182900301818387803b158015610f5857600080fd5b505af1158015610a60573d6000803e3d6000fd5b5050565b60015460a060020a900460ff1681565b60008054819081908190600160a060020a0316331480610faa5750600054600160a060020a031632145b1515610fee576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff161561103e576040805160e560020a62461bcd0281526020600482015260166024820152600080516020611e8f833981519152604482015290519081900360640190fd5b60008a815260066020526040902054600160a060020a031615156110ac576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b6110b4611da2565b600160a060020a0316638ef6e7fe8a6040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111125781810151838201526020016110fa565b50505050905090810190601f16801561113f5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561115e57600080fd5b505af1158015611172573d6000803e3d6000fd5b505050506040513d602081101561118857600080fd5b505160008b8152600660205260408082205481517f4d9431ea000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260ff8d1660248201529151939650861692634d9431ea9260448084019391929182900301818387803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b50505060008b8152600660205260408082205481517f59d453e000000000000000000000000000000000000000000000000000000000815260ff8d166004820152600160a060020a03888116602483015292519290911695508593506359d453e092604480830193919282900301818387803b15801561129757600080fd5b505af11580156112ab573d6000803e3d6000fd5b5050505086156113f3576112bd611da2565b600160a060020a0316638ef6e7fe6040518163ffffffff1660e060020a02815260040180806020018281038252600e8152602001807f636c61737369632d706f6c696379000000000000000000000000000000000000815250602001915050602060405180830381600087803b15801561133657600080fd5b505af115801561134a573d6000803e3d6000fd5b505050506040513d602081101561136057600080fd5b5051604080517f2aa71e2400000000000000000000000000000000000000000000000000000000815260048101899052600160a060020a038881166024830152915192935090831691632aa71e249160448082019260009290919082900301818387803b1580156113d057600080fd5b505af11580156113e4573d6000803e3d6000fd5b505050506113f38a8983611556565b6040805160ff8a168152600160a060020a038516602082015281518c927f1443dedef98a1fa143f735326218daf48733adc921845d80a802dc5a26bcd5f7928290030190a2509098975050505050505050565b600254600160a060020a03163214806114695750600254600160a060020a031633145b15156114ad576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff16156114fd576040805160e560020a62461bcd0281526020600482015260166024820152600080516020611e8f833981519152604482015290519081900360640190fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b600054600160a060020a03163314806115795750600054600160a060020a031632145b15156115bd576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff161561160d576040805160e560020a62461bcd0281526020600482015260166024820152600080516020611e8f833981519152604482015290519081900360640190fd5b600083815260066020526040902054600160a060020a03161580159061163b5750600160a060020a03811615155b1515611691576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c696420696e70757400000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152600660205260408082205481517fa22a7b5d00000000000000000000000000000000000000000000000000000000815260ff86166004820152600160a060020a0385811660248301529251929091169263a22a7b5d9260448084019382900301818387803b15801561170757600080fd5b505af115801561171b573d6000803e3d6000fd5b50505050505050565b600054600160a060020a031681565b600080548190600160a060020a03163314806117595750600054600160a060020a031632145b151561179d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff16156117ed576040805160e560020a62461bcd0281526020600482015260166024820152600080516020611e8f833981519152604482015290519081900360640190fd5b600089815260066020526040902054600160a060020a03161561185a576040805160e560020a62461bcd02815260206004820152601560248201527f61206475706c696361746520636f6d70616e7949640000000000000000000000604482015290519081900360640190fd5b611862611da2565b600160a060020a0316638ef6e7fe896040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118c05781810151838201526020016118a8565b50505050905090810190601f1680156118ed5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561190c57600080fd5b505af1158015611920573d6000803e3d6000fd5b505050506040513d602081101561193657600080fd5b5051604080517feb96aa06000000000000000000000000000000000000000000000000000000008152306004820152602481018c9052891515604482015260648101899052600160a060020a03888116608483015260a4820188905260c4820187905291519293509083169163eb96aa069160e48082019260009290919082900301818387803b1580156119c957600080fd5b505af11580156119dd573d6000803e3d6000fd5b50505060008a8152600660209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03871690811790915580845260078352928190208d90556005805460010190558051928352518c93507f0d535cb7feb34d86bfc1b7c7310b856c729022d6f23a4bf858bc3cbce5e50d6c9281900390910190a298975050505050505050565b600254600160a060020a031681565b600354600160a060020a031681565b600160a060020a031660009081526007602052604090205490565b60045481565b600254600090600160a060020a0316321480611ad55750600254600160a060020a031633145b1515611b19576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b60015460a060020a900460ff1615611b69576040805160e560020a62461bcd0281526020600482015260166024820152600080516020611e8f833981519152604482015290519081900360640190fd5b611b71611446565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905165456e65726779916370a082319160248083019260209291908290030181600087803b158015611bcf57600080fd5b505af1158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b505190506000811115610f6c57604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038416600482015260248101839052905165456e657267799163a9059cbb91604480830192600092919082900301818387803b158015610f5857600080fd5b600054600160a060020a0316331480611c965750600054600160a060020a031632145b1515611cda576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611e6f833981519152604482015290519081900360640190fd5b600160a060020a0381161515611d3a576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000611dac611e56565b600160a060020a031663693ec85e6040518163ffffffff1660e060020a02815260040180806020018281038252601a8152602001807f636f6d2e7665636861696e2e7769646765742d666163746f7279000000000000815250602001915050602060405180830381600087803b158015611e2557600080fd5b505af1158015611e39573d6000803e3d6000fd5b505050506040513d6020811015611e4f57600080fd5b5051905090565b73ce092f78d97d81a352c4c1d811d44245f95a27dd9056007065726d697373696f6e2064656e69656400000000000000000000000000000070726f746f636f6c206973206e6f742072756e696e6700000000000000000000a165627a7a7230582017368c30ea26178b98b89fe0bc083135718320cd73ce4e94d5bbfd6053cff1800029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000731f7ffa916a24049457f959b8c160191666c58e", @@ -74,7 +68,7 @@ }, "0xce092f78d97d81a352c4c1d811d44245f95a27dd": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x60806040526004361061006c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166329ba7bb281146100c9578063693ec85e146100fa5780638da5cb5b14610153578063a815ff1514610168578063f2fde38b146101ce575b34801561007857600080fd5b506040805160e560020a62461bcd02815260206004820152600c60248201527f696c6c6567616c2063616c6c0000000000000000000000000000000000000000604482015290519081900360640190fd5b3480156100d557600080fd5b506100de6101ef565b60408051600160a060020a039092168252519081900360200190f35b34801561010657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100de9436949293602493928401919081908401838280828437509497506101fe9650505050505050565b34801561015f57600080fd5b506100de61026f565b34801561017457600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101cc94369492936024939284019190819084018382808284375094975050509235600160a060020a0316935061027e92505050565b005b3480156101da57600080fd5b506101cc600160a060020a0360043516610423565b600154600160a060020a031681565b60006002826040518082805190602001908083835b602083106102325780518252601f199092019160209182019101610213565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316949350505050565b600054600160a060020a031681565b600054600160a060020a03163314806102a15750600054600160a060020a031632145b15156102f7576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b806002836040518082805190602001908083835b6020831061032a5780518252601f19909201916020918201910161030b565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0397881617905594861684820152848452865194840194909452505083517ffb61c28e210c57f5ca20724afa35c1dbda662f286bd8d214606c6cfbdc41f439928592859290918291606083019186019080838360005b838110156103e45781810151838201526020016103cc565b50505050905090810190601f1680156104115780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b600054600160a060020a03163314806104465750600054600160a060020a031632145b151561049c576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03811615156104fc576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058202750e8e751b701acc8bff8e93a7f856d3dd4ca2dee3d679e7b12f280168841eb0029", "storage": { "0x4ff56e803f9f1e356bae4c49c68a6a6a441588bc045317821503065a0141269f": "0x000000000000000000000000e2bd2067f91c86e97c178f707f7f9899336a789e" @@ -82,7 +76,7 @@ }, "0xe2bd2067f91c86e97c178f707f7f9899336a789e": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x6080604052600436106100775763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166329ba7bb2811461007c57806365490bb3146100ad5780638da5cb5b146101065780638ef6e7fe1461011b578063ecf15ab414610174578063f2fde38b146101ec575b600080fd5b34801561008857600080fd5b5061009161020f565b60408051600160a060020a039092168252519081900360200190f35b3480156100b957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261009194369492936024939284019190819084018382808284375094975061021e9650505050505050565b34801561011257600080fd5b5061009161028f565b34801561012757600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261009194369492936024939284019190819084018382808284375094975061029e9650505050505050565b34801561018057600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101d894369492936024939284019190819084018382808284375094975050509235600160a060020a031693506104a292505050565b604080519115158252519081900360200190f35b3480156101f857600080fd5b5061020d600160a060020a036004351661064d565b005b600154600160a060020a031681565b60006002826040518082805190602001908083835b602083106102525780518252601f199092019160209182019101610233565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a0316949350505050565b600054600160a060020a031681565b60008060006002846040518082805190602001908083835b602083106102d55780518252601f1990920191602091820191016102b6565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054600160a060020a031693505050811515610365576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b81600160a060020a0316638e1a55fc6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156103bc57600080fd5b505af11580156103d0573d6000803e3d6000fd5b505050506040513d60208110156103e657600080fd5b505160408051600160a060020a03831660208281019190915282825287519282019290925286519293507f1119821a9d90d962bfe0a2c5927b59e67208d9dca94f9c00580c398dd8f6f388928792859291829160608301919086019080838360005b83811015610460578181015183820152602001610448565b50505050905090810190601f16801561048d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a19392505050565b60008054600160a060020a03163314806104c65750600054600160a060020a031632145b151561051c576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b816002846040518082805190602001908083835b6020831061054f5780518252601f199092019160209182019101610530565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0397881617905594871684820152848452875194840194909452505084517f3e776bd5365b47943b2d3d1de6965ae8d42611531f858817d7fbfd1aaa8a48ec928692869290918291606083019186019080838360005b838110156106095781810151838201526020016105f1565b50505050905090810190601f1680156106365780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150600192915050565b600054600160a060020a03163314806106705750600054600160a060020a031632145b15156106c6576040805160e560020a62461bcd02815260206004820152601160248201527f7065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610726576040805160e560020a62461bcd02815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820f30cdc9a4f04550469b791350416b101107f78f8cbf8ff8f0606659eb34408860029", "storage": { "0x1288946fa38588e2af860936057d51148d5aea61088de7ac7b494b0639eb5da7": "0x0000000000000000000000002303b0589661987be623becfc3a9a419326ece5d", @@ -151,8 +145,7 @@ "value": "0x0", "gas": "0x454b87", "gasUsed": "0x6535", - "input": "0x4d9431ea000000000000000000000000018f4199ff26c0cb06bf0ccfc00995c05c9e5c040000000000000000000000000000000000000000000000000000000000000001", - "output": "0x" + "input": "0x4d9431ea000000000000000000000000018f4199ff26c0cb06bf0ccfc00995c05c9e5c040000000000000000000000000000000000000000000000000000000000000001" }, { "type": "CALL", @@ -161,8 +154,7 @@ "value": "0x0", "gas": "0x44e072", "gasUsed": "0x5854", - "input": "0x59d453e000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006a561b5a6a8f14724de26c3bf922c9e884fa3df2", - "output": "0x" + "input": "0x59d453e000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006a561b5a6a8f14724de26c3bf922c9e884fa3df2" }, { "type": "CALL", @@ -215,8 +207,7 @@ "value": "0x0", "gas": "0x3dc2ad", "gasUsed": "0xc5b7", - "input": "0x2aa71e248a270dbf282455df83cf65859a5715b85c4784e380312b0f05926e0d6809ce020000000000000000000000002626d6855f3fbb2edf7a852eabccf1ab128310c5", - "output": "0x" + "input": "0x2aa71e248a270dbf282455df83cf65859a5715b85c4784e380312b0f05926e0d6809ce020000000000000000000000002626d6855f3fbb2edf7a852eabccf1ab128310c5" }, { "type": "CALL", @@ -225,8 +216,7 @@ "value": "0x0", "gas": "0x3cf457", "gasUsed": "0xac28", - "input": "0xa22a7b5d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000007b2493d3ef8b32de6fe0e17e1dedb0ca10743a76", - "output": "0x" + "input": "0xa22a7b5d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000007b2493d3ef8b32de6fe0e17e1dedb0ca10743a76" } ] } diff --git a/tracers/testdata/create_inside.json b/tracers/testdata/create_inside.json index ba7262533..81a4dfe79 100644 --- a/tracers/testdata/create_inside.json +++ b/tracers/testdata/create_inside.json @@ -13,7 +13,7 @@ "state": { "0x31af8335efbba7aaed29aeadeb47ea86f586ceb9": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023f4147146101d05780630c3f6acf146101fb5780630cefa4de146102345780630d392cd91461025f5780630e8c4f2c146102ae5780632023c8b2146102dd57806323548b8b14610334578063237819fe1461035f57806326a4e8d2146103cb578063329749511461040e578063370158ea146104655780633a6a4d2e146105a35780633cb5d100146105ba5780633ccfd60b14610627578063412753581461063e57806342e94c901461069557806354fd4d50146106ec578063611b409514610717578063630ad834146107465780636560f8db1461075d57806373e888fd146107cf5780637fa4cacb146108055780639b19251a146108485780639d76ea58146108a3578063b48309da146108fa578063b9c76c1b14610911578063c5b208ff1461097a578063ca325469146109d8578063ea8a1af014610a2f578063f08e258114610a46578063f2624b5d14610a71578063f851a44014610a9c575b600060038111156101a357fe5b600a60009054906101000a900460ff1660038111156101be57fe5b14156101ce576101cd33610af3565b5b005b3480156101dc57600080fd5b506101e56110f0565b6040518082815260200191505060405180910390f35b34801561020757600080fd5b506102106110f6565b6040518082600381111561022057fe5b60ff16815260200191505060405180910390f35b34801561024057600080fd5b50610249611109565b6040518082815260200191505060405180910390f35b34801561026b57600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061110f565b005b3480156102ba57600080fd5b506102c3611346565b604051808215151515815260200191505060405180910390f35b3480156102e957600080fd5b506102f2611359565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034057600080fd5b5061034961137f565b6040518082815260200191505060405180910390f35b34801561036b57600080fd5b50610374611385565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103b757808201518184015260208101905061039c565b505050509050019250505060405180910390f35b3480156103d757600080fd5b5061040c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611413565b005b34801561041a57600080fd5b50610423611634565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047157600080fd5b5061047a61165a565b604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001891515151581526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186600381111561053c57fe5b60ff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019c5050505050505050505050505060405180910390f35b3480156105af57600080fd5b506105b8611770565b005b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611efe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561063357600080fd5b5061063c611f3c565b005b34801561064a57600080fd5b50610653612070565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106a157600080fd5b506106d6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612096565b6040518082815260200191505060405180910390f35b3480156106f857600080fd5b506107016120ae565b6040518082815260200191505060405180910390f35b34801561072357600080fd5b5061072c6120b7565b604051808215151515815260200191505060405180910390f35b34801561075257600080fd5b5061075b6120ca565b005b34801561076957600080fd5b506107cd600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291905050506122d4565b005b610803600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af3565b005b34801561081157600080fd5b50610846600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612401565b005b34801561085457600080fd5b50610889600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125b4565b604051808215151515815260200191505060405180910390f35b3480156108af57600080fd5b506108b86125d4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561090657600080fd5b5061090f6125fa565b005b34801561091d57600080fd5b50610978600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506128e7565b005b34801561098657600080fd5b506109bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b4e565b604051808381526020018281526020019250505060405180910390f35b3480156109e457600080fd5b506109ed612cb3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3b57600080fd5b50610a44612cd9565b005b348015610a5257600080fd5b50610a5b612e92565b6040518082815260200191505060405180910390f35b348015610a7d57600080fd5b50610a86612e98565b6040518082815260200191505060405180910390f35b348015610aa857600080fd5b50610ab1612e9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000806000806003811115610b0457fe5b600a60009054906101000a900460ff166003811115610b1f57fe5b141515610bba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f506f6f6c206973206e6f74206f70656e20666f7220636f6e747269627574696f81526020017f6e7300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760159054906101000a900460ff161580610c1f5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f57686974656c697374206973206d616e6461746f72790000000000000000000081525060200191505060405180910390fd5b349250610c9f83612ec3565b9150610cab8383612ef5565b1515610d1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4578636565647320746865206d6178436170206f662074686520706f6f6c000081525060200191505060405180910390fd5b6002548310151515610d99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f436f6e747269627574696f6e20746f6f206c6f7700000000000000000000000081525060200191505060405180910390fd5b610dac8284612f2b90919063ffffffff16565b9050610dc381600d54612f4490919063ffffffff16565b600d819055506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610e7857600c8490806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b610eca81600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f4490919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf0a23a785306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015610ffe57600080fd5b505af1158015611012573d6000803e3d6000fd5b50505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561107e573d6000803e3d6000fd5b507f62722348256371b5147820d6cad90c40fd2da1ccee18c3ed52c0bca5a61dbbab8482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b600d5481565b600a60009054906101000a900460ff1681565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b8080156112505750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112725761126b6001600954612f4490919063ffffffff16565b6009819055505b801580156112c95750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156112eb576112e46001600954612f2b90919063ffffffff16565b6009819055505b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760149054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b6060600c80548060200260200160405190810160405280929190818152602001828054801561140957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116113bf575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b6000600381111561150a57fe5b600a60009054906101000a900460ff16600381111561152557fe5b148061155657506002600381111561153957fe5b600a60009054906101000a900460ff16600381111561155457fe5b145b15156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f546f6b656e20616464726573732063616e206f6e6c792062652073657420776881526020017f656e206f70656e206f72207472616e736665727265640000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154600254600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760149054906101000a900460ff16600554600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900460ff16600d54611717600d54600154612f2b90919063ffffffff16565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760159054906101000a900460ff169b509b509b509b509b509b509b509b509b509b509b509b50909192939495969798999a9b565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e2061646472657373206e6f7420736574000000000000000000000081525060200191505060405180910390fd5b6002600381111561193357fe5b600a60009054906101000a900460ff16600381111561194e57fe5b148061197e575060038081111561196157fe5b600a60009054906101000a900460ff16600381111561197c57fe5b145b15156119f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496c6c6567616c2073746174650000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b0857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a7461320d565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015611ac6573d6000803e3d6000fd5b50600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b3073ffffffffffffffffffffffffffffffffffffffff163192506000831115611bcb57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f45debf4846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b158015611bb157600080fd5b505af1158015611bc5573d6000803e3d6000fd5b50505050505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611c8b57600080fd5b505af1158015611c9f573d6000803e3d6000fd5b505050506040513d6020811015611cb557600080fd5b810190808051906020019092919050505090506000811115611eef578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d9657600080fd5b505af1158015611daa573d6000803e3d6000fd5b505050506040513d6020811015611dc057600080fd5b81019080805190602001909291905050501515611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7472616e73666572206f662074686520746f6b656e206661696c65640000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6ed8990826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015611ed657600080fd5b505af1158015611eea573d6000803e3d6000fd5b505050505b611ef96003612f62565b505050565b600c81815481101515611f0d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080339150611f8d600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54612ff8565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3fef3a383836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561205457600080fd5b505af1158015612068573d6000803e3d6000fd5b505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915090505481565b60006001905090565b600760159054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b6121bc613029565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16316122226113885a612f2b90919063ffffffff16565b90604051600060405180830381858888f1935050505015156122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4572726f72207768656e207472616e7366657272696e6720706f6f6c2066756e81526020017f647300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b600090505b82518110156123fc576123ef83828151811015156123df57fe5b906020019060200201518361110f565b80806001019150506123c5565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b600760149054906101000a900460ff16151515612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f44657374696e6174696f6e2061646472657373206973206c6f636b656400000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506001600381111561260d57fe5b600a60009054906101000a900460ff16600381111561262857fe5b148061265957506000600381111561263c57fe5b600a60009054906101000a900460ff16600381111561265757fe5b145b15156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f506f6f6c206e6565647320746f206265206f70656e206f722063616e63656c6c81526020017f656400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115156127d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f546865726520617265206e6f20636f6e747269627574696f6e7320666f72207481526020017f686973206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b6127e881600d54612f2b90919063ffffffff16565b600d81905550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612877573d6000803e3d6000fd5b507f713b90881ad62c4fa8ab6bd9197fa86481fc0c11b2edba60026514281b2dbac48282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b6129d9613029565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1631612a3f6113885a612f2b90919063ffffffff16565b908360405180828051906020019080838360005b83811015612a6e578082015181840152602081019050612a53565b50505050905090810190601f168015612a9b5780820380516001836020036101000a031916815260200191505b50915050600060405180830381858888f193505050501515612b4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4572726f72207768656e207472616e7366657272696e6720706f6f6c2066756e81526020017f647300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b50565b6000806000612b9e600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54612ff8565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0d8bf1185836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b158015612c6457600080fd5b505af1158015612c78573d6000803e3d6000fd5b505050506040513d6040811015612c8e57600080fd5b8101908080519060200190929190805190602001909291905050509250925050915091565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612dc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b60006003811115612dd057fe5b600a60009054906101000a900460ff166003811115612deb57fe5b141515612e86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4f6e6c7920616e206f70656e20504f4f4c2063616e2062652063616e63656c6c81526020017f656400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b612e906001612f62565b565b60055481565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612eee600554612ee06103e8856131bf90919063ffffffff16565b6131da90919063ffffffff16565b9050919050565b6000600154612f2183612f1386600d54612f4490919063ffffffff16565b612f2b90919063ffffffff16565b1115905092915050565b6000828211151515612f3957fe5b818303905092915050565b6000808284019050838110151515612f5857fe5b8091505092915050565b6000600a60009054906101000a900460ff16905081600a60006101000a81548160ff02191690836003811115612f9457fe5b02179055507fe8a97ea87e4388fa22d496b95a8ed5ced6717f49790318de2b928aaf37a021d8818360405180836003811115612fcc57fe5b60ff168152602001826003811115612fe057fe5b60ff1681526020019250505060405180910390a15050565b60008161301768056bc75e2d63100000856131da90919063ffffffff16565b81151561302057fe5b04905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f44657374696e6174696f6e20616464726573732063616e6e6f7420626520656d81526020017f707479000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000600381111561312357fe5b600a60009054906101000a900460ff16600381111561313e57fe5b1415156131b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43757272656e74207374617465206d757374206265206f70656e00000000000081525060200191505060405180910390fd5b6131bd6002612f62565b565b60008082848115156131cd57fe5b0490508091505092915050565b600080828402905060008414806131fb57508284828115156131f857fe5b04145b151561320357fe5b8091505092915050565b604051610e6b8061321e833901905600608060405234801561001057600080fd5b50604051602080610e6b83398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610da7806100c46000396000f3006080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680636d98e9fc146100b45780637e1c0c09146100df5780638da5cb5b1461010a5780639679529814610161578063a6f9dae1146101b8578063c6ed8990146101fb578063d0d8bf1114610228578063e092985a14610290578063f3fef3a3146102e7578063f45debf414610334578063fc0c546a1461033e575b600080fd5b3480156100c057600080fd5b506100c9610395565b6040518082815260200191505060405180910390f35b3480156100eb57600080fd5b506100f461039b565b6040518082815260200191505060405180910390f35b34801561011657600080fd5b5061011f6103a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016d57600080fd5b506101a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103c6565b6040518082815260200191505060405180910390f35b3480156101c457600080fd5b506101f9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103de565b005b34801561020757600080fd5b506102266004803603810190808035906020019092919050505061050b565b005b34801561023457600080fd5b50610273600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610613565b604051808381526020018281526020019250505060405180910390f35b34801561029c57600080fd5b506102d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a1565b6040518082815260200191505060405180910390f35b3480156102f357600080fd5b50610332600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b9565b005b61033c610bb3565b005b34801561034a57600080fd5b50610353610cba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60035481565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e657220697320616c6c6f77656420746f2065786581526020017f637574652074686973000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e657220697320616c6c6f77656420746f2065786581526020017f637574652074686973000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61060a81600254610ce090919063ffffffff16565b60028190555050565b600080600080600080600093506000925061063060025488610cfe565b91506000821180156106805750600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482115b156106da576106d7600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610d2f90919063ffffffff16565b93505b6106e660035488610cfe565b90506000811180156107365750600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481115b156107905761078d600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610d2f90919063ffffffff16565b92505b838395509550505050509250929050565b60056020528060005260406000206000915090505481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e657220697320616c6c6f77656420746f2065786581526020017f637574652074686973000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6108b08484610613565b915091506000821115610ac757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561098257600080fd5b505af1158015610996573d6000803e3d6000fd5b505050506040513d60208110156109ac57600080fd5b81019080805190602001909291905050501515610a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7472616e73666572206f662074686520746f6b656e206661696c65640000000081525060200191505060405180910390fd5b610a8382600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ce090919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000811115610bad578373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b16573d6000803e3d6000fd5b50610b6981600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ce090919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e657220697320616c6c6f77656420746f2065786581526020017f637574652074686973000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610cb234600354610ce090919063ffffffff16565b600381905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284019050838110151515610cf457fe5b8091505092915050565b600068056bc75e2d63100000610d1d8385610d4890919063ffffffff16565b811515610d2657fe5b04905092915050565b6000828211151515610d3d57fe5b818303905092915050565b60008082840290506000841480610d695750828482811515610d6657fe5b04145b1515610d7157fe5b80915050929150505600a165627a7a72305820e32f75d4de7a5c6c6e044469c88d9deb772ff8deacbb05ac91ae23e8df0da8700029a165627a7a723058206d98b99793d2af0938939bb6bc8d1398977ddf2fb324a0e733e8989b95d59fab0029", "storage": { "0x000000000000000000000000000000000000000000000000000000000000000a": "0x0000000000000000000000000000000000000000000000000000000000000003" @@ -21,7 +21,7 @@ }, "0xb43e7351735eb19c4e7d4ffdde41427a8b9f8885": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023f4147146101d05780630c3f6acf146101fb5780630cefa4de146102345780630d392cd91461025f5780630e8c4f2c146102ae5780632023c8b2146102dd57806323548b8b14610334578063237819fe1461035f57806326a4e8d2146103cb578063329749511461040e578063370158ea146104655780633a6a4d2e146105a35780633cb5d100146105ba5780633ccfd60b14610627578063412753581461063e57806342e94c901461069557806354fd4d50146106ec578063611b409514610717578063630ad834146107465780636560f8db1461075d57806373e888fd146107cf5780637fa4cacb146108055780639b19251a146108485780639d76ea58146108a3578063b48309da146108fa578063b9c76c1b14610911578063c5b208ff1461097a578063ca325469146109d8578063ea8a1af014610a2f578063f08e258114610a46578063f2624b5d14610a71578063f851a44014610a9c575b600060038111156101a357fe5b600a60009054906101000a900460ff1660038111156101be57fe5b14156101ce576101cd33610af3565b5b005b3480156101dc57600080fd5b506101e56110f0565b6040518082815260200191505060405180910390f35b34801561020757600080fd5b506102106110f6565b6040518082600381111561022057fe5b60ff16815260200191505060405180910390f35b34801561024057600080fd5b50610249611109565b6040518082815260200191505060405180910390f35b34801561026b57600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061110f565b005b3480156102ba57600080fd5b506102c3611346565b604051808215151515815260200191505060405180910390f35b3480156102e957600080fd5b506102f2611359565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034057600080fd5b5061034961137f565b6040518082815260200191505060405180910390f35b34801561036b57600080fd5b50610374611385565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103b757808201518184015260208101905061039c565b505050509050019250505060405180910390f35b3480156103d757600080fd5b5061040c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611413565b005b34801561041a57600080fd5b50610423611634565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047157600080fd5b5061047a61165a565b604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001891515151581526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186600381111561053c57fe5b60ff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019c5050505050505050505050505060405180910390f35b3480156105af57600080fd5b506105b8611770565b005b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050611efe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561063357600080fd5b5061063c611f3c565b005b34801561064a57600080fd5b50610653612070565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106a157600080fd5b506106d6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612096565b6040518082815260200191505060405180910390f35b3480156106f857600080fd5b506107016120ae565b6040518082815260200191505060405180910390f35b34801561072357600080fd5b5061072c6120b7565b604051808215151515815260200191505060405180910390f35b34801561075257600080fd5b5061075b6120ca565b005b34801561076957600080fd5b506107cd600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035151590602001909291905050506122d4565b005b610803600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af3565b005b34801561081157600080fd5b50610846600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612401565b005b34801561085457600080fd5b50610889600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125b4565b604051808215151515815260200191505060405180910390f35b3480156108af57600080fd5b506108b86125d4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561090657600080fd5b5061090f6125fa565b005b34801561091d57600080fd5b50610978600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506128e7565b005b34801561098657600080fd5b506109bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b4e565b604051808381526020018281526020019250505060405180910390f35b3480156109e457600080fd5b506109ed612cb3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3b57600080fd5b50610a44612cd9565b005b348015610a5257600080fd5b50610a5b612e92565b6040518082815260200191505060405180910390f35b348015610a7d57600080fd5b50610a86612e98565b6040518082815260200191505060405180910390f35b348015610aa857600080fd5b50610ab1612e9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000806000806003811115610b0457fe5b600a60009054906101000a900460ff166003811115610b1f57fe5b141515610bba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f506f6f6c206973206e6f74206f70656e20666f7220636f6e747269627574696f81526020017f6e7300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760159054906101000a900460ff161580610c1f5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f57686974656c697374206973206d616e6461746f72790000000000000000000081525060200191505060405180910390fd5b349250610c9f83612ec3565b9150610cab8383612ef5565b1515610d1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4578636565647320746865206d6178436170206f662074686520706f6f6c000081525060200191505060405180910390fd5b6002548310151515610d99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f436f6e747269627574696f6e20746f6f206c6f7700000000000000000000000081525060200191505060405180910390fd5b610dac8284612f2b90919063ffffffff16565b9050610dc381600d54612f4490919063ffffffff16565b600d819055506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610e7857600c8490806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b610eca81600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f4490919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf0a23a785306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015610ffe57600080fd5b505af1158015611012573d6000803e3d6000fd5b50505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561107e573d6000803e3d6000fd5b507f62722348256371b5147820d6cad90c40fd2da1ccee18c3ed52c0bca5a61dbbab8482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b600d5481565b600a60009054906101000a900460ff1681565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b8080156112505750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112725761126b6001600954612f4490919063ffffffff16565b6009819055505b801580156112c95750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156112eb576112e46001600954612f2b90919063ffffffff16565b6009819055505b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760149054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b6060600c80548060200260200160405190810160405280929190818152602001828054801561140957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116113bf575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b6000600381111561150a57fe5b600a60009054906101000a900460ff16600381111561152557fe5b148061155657506002600381111561153957fe5b600a60009054906101000a900460ff16600381111561155457fe5b145b15156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f546f6b656e20616464726573732063616e206f6e6c792062652073657420776881526020017f656e206f70656e206f72207472616e736665727265640000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154600254600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760149054906101000a900460ff16600554600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900460ff16600d54611717600d54600154612f2b90919063ffffffff16565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760159054906101000a900460ff169b509b509b509b509b509b509b509b509b509b509b509b50909192939495969798999a9b565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e2061646472657373206e6f7420736574000000000000000000000081525060200191505060405180910390fd5b6002600381111561193357fe5b600a60009054906101000a900460ff16600381111561194e57fe5b148061197e575060038081111561196157fe5b600a60009054906101000a900460ff16600381111561197c57fe5b145b15156119f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f496c6c6567616c2073746174650000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b0857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a7461320d565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015611ac6573d6000803e3d6000fd5b50600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b3073ffffffffffffffffffffffffffffffffffffffff163192506000831115611bcb57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f45debf4846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b158015611bb157600080fd5b505af1158015611bc5573d6000803e3d6000fd5b50505050505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611c8b57600080fd5b505af1158015611c9f573d6000803e3d6000fd5b505050506040513d6020811015611cb557600080fd5b810190808051906020019092919050505090506000811115611eef578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d9657600080fd5b505af1158015611daa573d6000803e3d6000fd5b505050506040513d6020811015611dc057600080fd5b81019080805190602001909291905050501515611e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7472616e73666572206f662074686520746f6b656e206661696c65640000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c6ed8990826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b158015611ed657600080fd5b505af1158015611eea573d6000803e3d6000fd5b505050505b611ef96003612f62565b505050565b600c81815481101515611f0d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080339150611f8d600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54612ff8565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3fef3a383836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561205457600080fd5b505af1158015612068573d6000803e3d6000fd5b505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915090505481565b60006001905090565b600760159054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b6121bc613029565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16316122226113885a612f2b90919063ffffffff16565b90604051600060405180830381858888f1935050505015156122d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4572726f72207768656e207472616e7366657272696e6720706f6f6c2066756e81526020017f647300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b600090505b82518110156123fc576123ef83828151811015156123df57fe5b906020019060200201518361110f565b80806001019150506123c5565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b600760149054906101000a900460ff16151515612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f44657374696e6174696f6e2061646472657373206973206c6f636b656400000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803391506001600381111561260d57fe5b600a60009054906101000a900460ff16600381111561262857fe5b148061265957506000600381111561263c57fe5b600a60009054906101000a900460ff16600381111561265757fe5b145b15156126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f506f6f6c206e6565647320746f206265206f70656e206f722063616e63656c6c81526020017f656400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115156127d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f546865726520617265206e6f20636f6e747269627574696f6e7320666f72207481526020017f686973206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b6127e881600d54612f2b90919063ffffffff16565b600d81905550600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612877573d6000803e3d6000fd5b507f713b90881ad62c4fa8ab6bd9197fa86481fc0c11b2edba60026514281b2dbac48282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b6129d9613029565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1631612a3f6113885a612f2b90919063ffffffff16565b908360405180828051906020019080838360005b83811015612a6e578082015181840152602081019050612a53565b50505050905090810190601f168015612a9b5780820380516001836020036101000a031916815260200191505b50915050600060405180830381858888f193505050501515612b4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4572726f72207768656e207472616e7366657272696e6720706f6f6c2066756e81526020017f647300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b50565b6000806000612b9e600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54612ff8565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0d8bf1185836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040805180830381600087803b158015612c6457600080fd5b505af1158015612c78573d6000803e3d6000fd5b505050506040513d6040811015612c8e57600080fd5b8101908080519060200190929190805190602001909291905050509250925050915091565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612dc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f4f6e6c792074686520706f6f6c2061646d696e20697320616c6c6f776564207481526020017f6f2065786563757465207468697300000000000000000000000000000000000081525060400191505060405180910390fd5b60006003811115612dd057fe5b600a60009054906101000a900460ff166003811115612deb57fe5b141515612e86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4f6e6c7920616e206f70656e20504f4f4c2063616e2062652063616e63656c6c81526020017f656400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b612e906001612f62565b565b60055481565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612eee600554612ee06103e8856131bf90919063ffffffff16565b6131da90919063ffffffff16565b9050919050565b6000600154612f2183612f1386600d54612f4490919063ffffffff16565b612f2b90919063ffffffff16565b1115905092915050565b6000828211151515612f3957fe5b818303905092915050565b6000808284019050838110151515612f5857fe5b8091505092915050565b6000600a60009054906101000a900460ff16905081600a60006101000a81548160ff02191690836003811115612f9457fe5b02179055507fe8a97ea87e4388fa22d496b95a8ed5ced6717f49790318de2b928aaf37a021d8818360405180836003811115612fcc57fe5b60ff168152602001826003811115612fe057fe5b60ff1681526020019250505060405180910390a15050565b60008161301768056bc75e2d63100000856131da90919063ffffffff16565b81151561302057fe5b04905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f44657374696e6174696f6e20616464726573732063616e6e6f7420626520656d81526020017f707479000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000600381111561312357fe5b600a60009054906101000a900460ff16600381111561313e57fe5b1415156131b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43757272656e74207374617465206d757374206265206f70656e00000000000081525060200191505060405180910390fd5b6131bd6002612f62565b565b60008082848115156131cd57fe5b0490508091505092915050565b600080828402905060008414806131fb57508284828115156131f857fe5b04145b151561320357fe5b8091505092915050565b604051610e6b8061321e833901905600608060405234801561001057600080fd5b50604051602080610e6b83398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610da7806100c46000396000f3006080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680636d98e9fc146100b45780637e1c0c09146100df5780638da5cb5b1461010a5780639679529814610161578063a6f9dae1146101b8578063c6ed8990146101fb578063d0d8bf1114610228578063e092985a14610290578063f3fef3a3146102e7578063f45debf414610334578063fc0c546a1461033e575b600080fd5b3480156100c057600080fd5b506100c9610395565b6040518082815260200191505060405180910390f35b3480156100eb57600080fd5b506100f461039b565b6040518082815260200191505060405180910390f35b34801561011657600080fd5b5061011f6103a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016d57600080fd5b506101a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103c6565b6040518082815260200191505060405180910390f35b3480156101c457600080fd5b506101f9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103de565b005b34801561020757600080fd5b506102266004803603810190808035906020019092919050505061050b565b005b34801561023457600080fd5b50610273600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610613565b604051808381526020018281526020019250505060405180910390f35b34801561029c57600080fd5b506102d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a1565b6040518082815260200191505060405180910390f35b3480156102f357600080fd5b50610332600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b9565b005b61033c610bb3565b005b34801561034a57600080fd5b50610353610cba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60035481565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e657220697320616c6c6f77656420746f2065786581526020017f637574652074686973000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e657220697320616c6c6f77656420746f2065786581526020017f637574652074686973000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61060a81600254610ce090919063ffffffff16565b60028190555050565b600080600080600080600093506000925061063060025488610cfe565b91506000821180156106805750600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482115b156106da576106d7600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610d2f90919063ffffffff16565b93505b6106e660035488610cfe565b90506000811180156107365750600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481115b156107905761078d600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610d2f90919063ffffffff16565b92505b838395509550505050509250929050565b60056020528060005260406000206000915090505481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e657220697320616c6c6f77656420746f2065786581526020017f637574652074686973000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6108b08484610613565b915091506000821115610ac757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561098257600080fd5b505af1158015610996573d6000803e3d6000fd5b505050506040513d60208110156109ac57600080fd5b81019080805190602001909291905050501515610a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7472616e73666572206f662074686520746f6b656e206661696c65640000000081525060200191505060405180910390fd5b610a8382600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ce090919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000811115610bad578373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b16573d6000803e3d6000fd5b50610b6981600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ce090919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e657220697320616c6c6f77656420746f2065786581526020017f637574652074686973000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610cb234600354610ce090919063ffffffff16565b600381905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284019050838110151515610cf457fe5b8091505092915050565b600068056bc75e2d63100000610d1d8385610d4890919063ffffffff16565b811515610d2657fe5b04905092915050565b6000828211151515610d3d57fe5b818303905092915050565b60008082840290506000841480610d695750828482811515610d6657fe5b04145b1515610d7157fe5b80915050929150505600a165627a7a72305820e32f75d4de7a5c6c6e044469c88d9deb772ff8deacbb05ac91ae23e8df0da8700029a165627a7a723058206d98b99793d2af0938939bb6bc8d1398977ddf2fb324a0e733e8989b95d59fab0029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000b8c73790e4fbfdc3e879af1b43fadc2a9d43a1e1", @@ -32,8 +32,7 @@ }, "0xb57e5eec21ba71fd62a56c79f1ed3196ea6059a5": { "balance": "0x0", - "nonce": 0, - "code": "0x", + "energy": "0x0", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -41,9 +40,7 @@ }, "0xb8c73790e4fbfdc3e879af1b43fadc2a9d43a1e1": { "balance": "0x1fbe36d444739472d28", - "nonce": 0, - "code": "0x", - "storage": {} + "energy": "0x0" } }, "calls": { @@ -73,8 +70,7 @@ "value": "0x0", "gas": "0xa3b84", "gasUsed": "0x439", - "input": "0x70a08231000000000000000000000000b43e7351735eb19c4e7d4ffdde41427a8b9f8885", - "output": "0x" + "input": "0x70a08231000000000000000000000000b43e7351735eb19c4e7d4ffdde41427a8b9f8885" } ] } diff --git a/tracers/testdata/create_oog.json b/tracers/testdata/create_oog.json index ed50ae2a4..9d38dbdcf 100644 --- a/tracers/testdata/create_oog.json +++ b/tracers/testdata/create_oog.json @@ -11,17 +11,21 @@ "data": "0x60806040523480156200001157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600581526020017f4649584544000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000221565b506040805190810160405280601a81526020017f4578616d706c6520466978656420537570706c7920546f6b656e00000000000081525060039080519060200190620000ed92919062000221565b506012600460006101000a81548160ff021916908360ff160217905550600460009054906101000a900460ff1660ff16600a0a620f424002600581905550600554600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a3620002d0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026457805160ff191683800117855562000295565b8280016001018555821562000295579182015b828111156200029457825182559160200191906001019062000277565b5b509050620002a49190620002a8565b5090565b620002cd91905b80821115620002c9576000816000905550600101620002af565b5090565b90565b6114e380620002e06000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101d557806323b872dd14610200578063313ce5671461028557806370a08231146102b657806379ba50971461030d5780638da5cb5b1461032457806395d89b411461037b578063a9059cbb1461040b578063cae9ca5114610470578063d4ee1d901461051b578063dc39d06d14610572578063dd62ed3e146105d7578063f2fde38b1461064e575b600080fd5b3480156100ec57600080fd5b506100f5610691565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061072f565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b506101ea610821565b6040518082815260200191505060405180910390f35b34801561020c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061087c565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b5061029a610b27565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102c257600080fd5b506102f7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b3a565b6040518082815260200191505060405180910390f35b34801561031957600080fd5b50610322610b83565b005b34801561033057600080fd5b50610339610d22565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038757600080fd5b50610390610d47565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d05780820151818401526020810190506103b5565b50505050905090810190601f1680156103fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041757600080fd5b50610456600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de5565b604051808215151515815260200191505060405180910390f35b34801561047c57600080fd5b50610501600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610f80565b604051808215151515815260200191505060405180910390f35b34801561052757600080fd5b506105306111cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561057e57600080fd5b506105bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f5565b604051808215151515815260200191505060405180910390f35b3480156105e357600080fd5b50610638600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611359565b6040518082815260200191505060405180910390f35b34801561065a57600080fd5b5061068f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e0565b005b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610877600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055461147f90919063ffffffff16565b905090565b60006108d082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109a282600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a7482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461149b90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdf57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b505050505081565b6000610e3982600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147f90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ece82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461149b90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600082600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115d578082015181840152602081019050611142565b50505050905090810190601f16801561118a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125257600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b505050506040513d602081101561134057600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143b57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115151561149057600080fd5b818303905092915050565b600081830190508281101515156114b157600080fd5b929150505600a165627a7a7230582050797796a1ac7ff35050479b3b14b482b627fd1a62831046c7a73e228b4ad4de0029" }, "state": { + "0x62084b5efbda519edf3dd011d5860e8e99f02a8e":{ + "balance":"0x0", + "energy":"0x0", + "storage":{ + "0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000003":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000004":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000005":"0x0000000000000000000000000000000000000000000000000000000000000000","0x419f0f163f951c09f36e9648a123c0d007bc0bd9316bc982404f01cf91a28ef6":"0x0000000000000000000000000000000000000000000000000000000000000000" + } + }, "0x7567d83b7b8d80addcb281a71d54fc7b3364ffed": { "balance": "0x850802dba604c9a04e2a", - "nonce": 0, - "code": "0x", - "storage": {} + "energy": "0x0" } }, "calls": { "type": "CREATE", "from": "0x7567d83b7b8d80addcb281a71d54fc7b3364ffed", - "to": "0x62084b5efbda519edf3dd011d5860e8e99f02a8e", "value": "0x0", "gas": "0x100dcc", "gasUsed": "0x100dcc", diff --git a/tracers/testdata/deep.json b/tracers/testdata/deep.json index cba2771ad..6838f5975 100644 --- a/tracers/testdata/deep.json +++ b/tracers/testdata/deep.json @@ -13,21 +13,17 @@ "state": { "0x7567d83b7b8d80addcb281a71d54fc7b3364ffed": { "balance": "0x152d02c7e14af6800000", - "nonce": 0, - "code": "0x", - "storage": {} + "energy":"0x0" }, "0xa1118c817b44c2ad154229a34f00b1af5ba48394": { "balance": "0x0", - "nonce": 0, - "code": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063967e6e651461005c578063f518904814610087578063f9ea5e79146100ca575b600080fd5b34801561006857600080fd5b50610071610151565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061015a565b005b3480156100d657600080fd5b5061013b600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506101df565b6040518082815260200191505060405180910390f35b60008054905090565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663416ad2b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156101c357600080fd5b505af11580156101d7573d6000803e3d6000fd5b505050505050565b600080600081546001019190508190559050929150505600a165627a7a7230582072a3a4f41df2e25405f0df2b19c07fa43c91df02a01d7ad7a66bf7deed99c6860029", - "storage": {} + "energy":"0x0", + "code": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063967e6e651461005c578063f518904814610087578063f9ea5e79146100ca575b600080fd5b34801561006857600080fd5b50610071610151565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061015a565b005b3480156100d657600080fd5b5061013b600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506101df565b6040518082815260200191505060405180910390f35b60008054905090565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663416ad2b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156101c357600080fd5b505af11580156101d7573d6000803e3d6000fd5b505050505050565b600080600081546001019190508190559050929150505600a165627a7a7230582072a3a4f41df2e25405f0df2b19c07fa43c91df02a01d7ad7a66bf7deed99c6860029" }, "0xd73a9b349dc06b12301d5968ac333f69d112841a": { "balance": "0x0", - "nonce": 0, - "code": "0x608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063416ad2b51461007d578063a92100cb14610094578063d11f17ad146100ab578063d9f51ebf14610106578063f8a8fd6d1461016f578063fc32d7371461019a575b600080fd5b34801561008957600080fd5b506100926101b1565b005b3480156100a057600080fd5b506100a9610285565b005b3480156100b757600080fd5b506100ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b3565b604051808215151515815260200191505060405180910390f35b34801561011257600080fd5b5061011b6103a5565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561017b57600080fd5b506101846103e7565b6040518082815260200191505060405180910390f35b3480156101a657600080fd5b506101af6103f5565b005b60008073a1118c817b44c2ad154229a34f00b1af5ba4839491508190508073ffffffffffffffffffffffffffffffffffffffff1663f5189048306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561026957600080fd5b505af115801561027d573d6000803e3d6000fd5b505050505050565b60008090505b60648110156102b057600a818115156102a057fe5b069050808060010191505061028b565b50565b60008060405180807f696e63726561736541676528737472696e672c75696e74323536290000000000815250601b019050604051809103902090508273ffffffffffffffffffffffffffffffffffffffff16817c0100000000000000000000000000000000000000000000000000000000900460016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180807f6a61636b000000000000000000000000000000000000000000000000000000008152506020018260ff1681526020019150506000604051808303816000875af192505050915050919050565b60008033905060405180807f696e63726561736541676528737472696e672c75696e74323536290000000000815250601b019050604051809103902091505090565b600080606490508091505090565b6103fd6103f5565b5600a165627a7a723058203554e9ce6726c60f2bf8e3d902a21ffdf86dde6478513a220ef475b6cbc104060029", - "storage": {} + "energy":"0x0", + "code": "0x608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063416ad2b51461007d578063a92100cb14610094578063d11f17ad146100ab578063d9f51ebf14610106578063f8a8fd6d1461016f578063fc32d7371461019a575b600080fd5b34801561008957600080fd5b506100926101b1565b005b3480156100a057600080fd5b506100a9610285565b005b3480156100b757600080fd5b506100ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b3565b604051808215151515815260200191505060405180910390f35b34801561011257600080fd5b5061011b6103a5565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561017b57600080fd5b506101846103e7565b6040518082815260200191505060405180910390f35b3480156101a657600080fd5b506101af6103f5565b005b60008073a1118c817b44c2ad154229a34f00b1af5ba4839491508190508073ffffffffffffffffffffffffffffffffffffffff1663f5189048306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561026957600080fd5b505af115801561027d573d6000803e3d6000fd5b505050505050565b60008090505b60648110156102b057600a818115156102a057fe5b069050808060010191505061028b565b50565b60008060405180807f696e63726561736541676528737472696e672c75696e74323536290000000000815250601b019050604051809103902090508273ffffffffffffffffffffffffffffffffffffffff16817c0100000000000000000000000000000000000000000000000000000000900460016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180807f6a61636b000000000000000000000000000000000000000000000000000000008152506020018260ff1681526020019150506000604051808303816000875af192505050915050919050565b60008033905060405180807f696e63726561736541676528737472696e672c75696e74323536290000000000815250601b019050604051809103902091505090565b600080606490508091505090565b6103fd6103f5565b5600a165627a7a723058203554e9ce6726c60f2bf8e3d902a21ffdf86dde6478513a220ef475b6cbc104060029" } }, "calls": { diff --git a/tracers/testdata/insufficient_balance.json b/tracers/testdata/insufficient_balance.json index 5436c973e..ca7e5c083 100644 --- a/tracers/testdata/insufficient_balance.json +++ b/tracers/testdata/insufficient_balance.json @@ -13,15 +13,11 @@ "state": { "0x9e9732322b301b489f2d8bd28443cf2599024a92": { "balance": "0x7f0e22963fbc9d737000", - "nonce": 0, - "code": "0x", - "storage": {} + "energy":"0x0" }, "0xa7df76f0b8e0d191c5f27563720d1edcd76876db": { "balance": "0x853a9ea7faea000", - "nonce": 0, - "code": "0x", - "storage": {} + "energy":"0x0" } }, "calls": { diff --git a/tracers/testdata/out_of_gas.json b/tracers/testdata/out_of_gas.json index 439ba4777..fd3dceb5b 100644 --- a/tracers/testdata/out_of_gas.json +++ b/tracers/testdata/out_of_gas.json @@ -13,13 +13,11 @@ "state": { "0x008aeeda4d805471df9b2a5b0f38a0c3bcba786b": { "balance": "0x8ac7230489e80000", - "nonce": 0, - "code": "0x", - "storage": {} + "energy":"0x0" }, "0x05297dc631818f77e2a5dbaf5e0143a16d492f82": { "balance": "0x0", - "nonce": 0, + "energy":"0x0", "code": "0x6080604052600436106100985763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632c4e722e81146100a25780633ba0b9a9146100c95780634bb278f3146100de578063521eb273146100f35780638da5cb5b146101245780639106d7ba14610139578063d0febe4c14610098578063f2fde38b1461014e578063fc0c546a1461016f575b6100a0610184565b005b3480156100ae57600080fd5b506100b76103cc565b60408051918252519081900360200190f35b3480156100d557600080fd5b506100b76103d2565b3480156100ea57600080fd5b506100a06103d8565b3480156100ff57600080fd5b506101086104bb565b60408051600160a060020a039092168252519081900360200190f35b34801561013057600080fd5b506101086104ca565b34801561014557600080fd5b506100b76104d9565b34801561015a57600080fd5b506100a0600160a060020a03600435166104df565b34801561017b57600080fd5b50610108610573565b600080808033803b80156101f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736f7272792068756d616e73206f6e6c79000000000000000000000000000000604482015290519081900360640190fd5b662386f26fc1000034101561020d57600080fd5b6102156103d2565b955034935068056bc75e2d6310000034111561024e5768056bc75e2d631000009350610247848763ffffffff61058216565b9450610261565b61025e348763ffffffff61058216565b94505b600085111561036457600254604080517f79c65068000000000000000000000000000000000000000000000000000000008152336004820152602481018890529051600160a060020a03909216916379c650689160448082019260009290919082900301818387803b1580156102d657600080fd5b505af11580156102ea573d6000803e3d6000fd5b5050600354604051600160a060020a03909116925086156108fc02915086906000818181858888f19350505050158015610328573d6000803e3d6000fd5b506040805186815260208101869052815133927f4d1636c3e75537f2cbca3bdf3cf2c7825eb501463bc634e6923119dee5d1cc43928290030190a25b600154610377908563ffffffff6105b116565b60015561038a348563ffffffff6105be16565b925060008311156103c457604051339084156108fc029085906000818181858888f193505050501580156103c2573d6000803e3d6000fd5b505b505050505050565b60045481565b60045490565b600054600160a060020a031633146103ef57600080fd5b60055460ff16156103ff57600080fd5b600260009054906101000a9004600160a060020a0316600160a060020a0316633fb27b856040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561046b57600080fd5b505af115801561047f573d6000803e3d6000fd5b50506005805460ff1916600117905550506040517f6c750432a9907ef296a47d6b38305b8ad777291aefc349e462a0a3285799425490600090a1565b600354600160a060020a031681565b600054600160a060020a031681565b60015481565b600054600160a060020a031633146104f657600080fd5b600160a060020a038116151561050b57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b6000821515610593575060006105ab565b508181028183828115156105a357fe5b04146105ab57fe5b92915050565b818101828110156105ab57fe5b6000828211156105ca57fe5b509003905600a165627a7a723058208fb007b2ef25f92b4385dcdf8e2b330975aae1b3b44228393963f3e9d4259e0c0029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000006ed27401a3ba04958a6085c3b7cb77c3871e1dc3", @@ -29,19 +27,13 @@ }, "0x6ed27401a3ba04958a6085c3b7cb77c3871e1dc3": { "balance": "0x0", - "nonce": 0, + "energy":"0x0", "code": "0x6080604052600436106100da5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100df578063095ea7b3146101695780630e7801c3146101a157806318160ddd146101b657806323b872dd146101dd5780632ff2e9dc14610207578063313ce5671461021c5780633fb27b851461024757806370a082311461025e57806379c650681461027f5780638da5cb5b146102a357806395d89b41146102d4578063a9059cbb146102e9578063dd62ed3e1461030d578063f2fde38b14610334575b600080fd5b3480156100eb57600080fd5b506100f4610355565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b5061018d600160a060020a036004351660243561038c565b604080519115158252519081900360200190f35b3480156101ad57600080fd5b5061018d6103f2565b3480156101c257600080fd5b506101cb610402565b60408051918252519081900360200190f35b3480156101e957600080fd5b5061018d600160a060020a0360043581169060243516604435610408565b34801561021357600080fd5b506101cb610660565b34801561022857600080fd5b5061023161066e565b6040805160ff9092168252519081900360200190f35b34801561025357600080fd5b5061025c610673565b005b34801561026a57600080fd5b506101cb600160a060020a03600435166106a9565b34801561028b57600080fd5b5061025c600160a060020a03600435166024356106c4565b3480156102af57600080fd5b506102b861078a565b60408051600160a060020a039092168252519081900360200190f35b3480156102e057600080fd5b506100f4610799565b3480156102f557600080fd5b5061018d600160a060020a03600435166024356107d0565b34801561031957600080fd5b506101cb600160a060020a0360043581169060243516610947565b34801561034057600080fd5b5061025c600160a060020a0360043516610972565b60408051808201909152601381527f54657374205472616e7366657220546f6b656e00000000000000000000000000602082015281565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600054600160a060020a03161590565b60035490565b600160a060020a038316600090815260016020526040812054821115610478576040805160e560020a62461bcd02815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526002602090815260408083203384529091529020548211156104f3576040805160e560020a62461bcd02815260206004820152601260248201527f6578636565642074686520616c6c6f7765640000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383161515610553576040805160e560020a62461bcd02815260206004820152601660248201527f696e76616c696420746172676574206164647265737300000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526001602052604090205461057c908363ffffffff610a0616565b600160a060020a0380861660009081526001602052604080822093909355908516815220546105b1908363ffffffff610a1816565b600160a060020a0380851660009081526001602090815260408083209490945591871681526002825282812033825290915220546105f5908363ffffffff610a0616565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b69d3c21bcecceda100000081565b601281565b600054600160a060020a0316331461068a57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600160a060020a031660009081526001602052604090205490565b600054600160a060020a031633146106db57600080fd5b6106e36103f2565b156106ed57600080fd5b600160a060020a038216600090815260016020526040902054610716908263ffffffff610a1816565b600160a060020a038316600090815260016020526040902055600354610742908263ffffffff610a1816565b600355604080518281529051600160a060020a038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600054600160a060020a031681565b60408051808201909152600381527f5446540000000000000000000000000000000000000000000000000000000000602082015281565b33600090815260016020526040812054821115610837576040805160e560020a62461bcd02815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383161515610897576040805160e560020a62461bcd02815260206004820152601660248201527f696e76616c696420746172676574206164647265737300000000000000000000604482015290519081900360640190fd5b336000908152600160205260409020546108b7908363ffffffff610a0616565b3360009081526001602052604080822092909255600160a060020a038516815220546108e9908363ffffffff610a1816565b600160a060020a0384166000818152600160209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600054600160a060020a0316331461098957600080fd5b600160a060020a038116151561099e57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600082821115610a1257fe5b50900390565b81810182811015610a2557fe5b929150505600a165627a7a72305820266893e5999bc50142c712801c35c829f016f8813839c0c643c09c6a87246c9e0029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000005297dc631818f77e2a5dbaf5e0143a16d492f82", "0x0000000000000000000000000000000000000000000000000000000000000003": "0x00000000000000000000000000000000000000000000da1c69712a1db7c00000", "0x99637815de1294f0a9be32b5b12cd4b483fe8bf0a06a07878f7433d526c4ca4c": "0x0000000000000000000000000000000000000000000000000000000000000000" } - }, - "0xd3ae78222beadb038203be21ed5ce7c9b1bff602": { - "balance": "0xccf436e92a99f0fc7a", - "nonce": 0, - "code": "0x", - "storage": {} } }, "calls": { @@ -61,8 +53,7 @@ "value": "0x0", "gas": "0x8a10", "gasUsed": "0x7080", - "input": "0x79c65068000000000000000000000000008aeeda4d805471df9b2a5b0f38a0c3bcba786b0000000000000000000000000000000000000000000000000de0b6b3a7640000", - "output": "0x" + "input": "0x79c65068000000000000000000000000008aeeda4d805471df9b2a5b0f38a0c3bcba786b0000000000000000000000000000000000000000000000000de0b6b3a7640000" } ] } diff --git a/tracers/testdata/revert.json b/tracers/testdata/revert.json index b1438e4d1..0007eadaa 100644 --- a/tracers/testdata/revert.json +++ b/tracers/testdata/revert.json @@ -13,13 +13,12 @@ "state": { "0x53769b0ac8b16955feb09f8e2f23d904a9660a32": { "balance": "0x0", - "nonce": 0, - "code": "0x6080604052600436106102d35760003560e01c806301ffc9a7146102d857806306fdde031461030d578063081812fc1461032f578063095ea7b31461035c578063096c490c1461037e578063098c9d3e146103c85780630db70368146103e85780630e51d8bd146104095780630f8edad61461041e57806314b1c4e61461043e57806318160ddd1461045e5780631ca92613146104735780631e356fda146104935780631ec71c45146104b35780631fb05fca146104d357806323b872dd146104f35780632f745c591461051357806334bfce7f146105335780633659cfe6146105535780633c4a206f146105735780633c7e47cb146105935780633cbad60b146105b35780633d1e7b26146105d357806342842e0e146105f357806342966c68146106135780634ae3a23f146106335780634f1ef286146106625780634f6ccce71461067557806354fd4d50146106955780636352211e146106ac5780636530735e146106cc57806365d65a14146106f957806368794b87146107265780636a51c955146107465780636ac8e35b1461075d57806370a082311461078d578063715018a6146107ad57806372271de9146107c25780637c31407b146107d75780637fca72b9146107f757806387cea7771461081757806389dc8c8c146108375780638da5cb5b1461084e57806395d89b4114610863578063971582351461087857806397ed07a0146108985780639bdb458e146108b8578063a22cb465146108d8578063a5d7827e146108f8578063af7acc6114610918578063b88d4fde14610938578063bf78696e14610958578063c19d93fb14610978578063c4d66de81461098d578063c87b56dd146109ad578063c9418de1146109cd578063c943e0f2146109ed578063d492589314610a02578063de97632914610a22578063e08fc5a414610a42578063e64853c414610a62578063e985e9c514610a87578063f2c78e4914610aa7578063f2fde38b14610ad4575b600080fd5b3480156102e457600080fd5b506102f86102f3366004615263565b610af4565b60405190151581526020015b60405180910390f35b34801561031957600080fd5b50610322610b05565b60405161030491906158e5565b34801561033b57600080fd5b5061034f61034a366004615440565b610b97565b6040516103049190615785565b34801561036857600080fd5b5061037c610377366004615026565b610c24565b005b34801561038a57600080fd5b506103ba6103993660046154fc565b600090815261019d6020908152604080832093835260099093019052205490565b604051908152602001610304565b3480156103d457600080fd5b5061037c6103e336600461551d565b610d35565b3480156103f457600080fd5b506101985461034f906001600160a01b031681565b34801561041557600080fd5b50610322610de9565b34801561042a57600080fd5b506103226104393660046153fe565b610e78565b34801561044a57600080fd5b5061037c610459366004615560565b610ec0565b34801561046a57600080fd5b506099546103ba565b34801561047f57600080fd5b5061037c61048e3660046154fc565b611233565b34801561049f57600080fd5b5061037c6104ae3660046154ce565b61139f565b3480156104bf57600080fd5b5061037c6104ce366004615307565b611430565b3480156104df57600080fd5b506103226104ee366004615440565b61149a565b3480156104ff57600080fd5b5061037c61050e366004614f12565b61153d565b34801561051f57600080fd5b506103ba61052e366004615026565b61156f565b34801561053f57600080fd5b5061037c61054e366004615440565b611605565b34801561055f57600080fd5b5061037c61056e366004614ec6565b61168f565b34801561057f57600080fd5b5061037c61058e3660046154ac565b611758565b34801561059f57600080fd5b5061037c6105ae366004615224565b61184e565b3480156105bf57600080fd5b5061037c6105ce366004615169565b6119f5565b3480156105df57600080fd5b5061037c6105ee366004615307565b611afe565b3480156105ff57600080fd5b5061037c61060e366004614f12565b611b5d565b34801561061f57600080fd5b5061037c61062e366004615440565b611b78565b34801561063f57600080fd5b5061065361064e366004615440565b611bef565b60405161030493929190615bec565b61037c610670366004614fdb565b611d6c565b34801561068157600080fd5b506103ba610690366004615440565b611e26565b3480156106a157600080fd5b506103ba6101975481565b3480156106b857600080fd5b5061034f6106c7366004615440565b611ec7565b3480156106d857600080fd5b506106ec6106e7366004615440565b611f3e565b60405161030491906157e9565b34801561070557600080fd5b5061019f546101a05460ff1660408051928352901515602083015201610304565b34801561073257600080fd5b5061037c610741366004615307565b611fa0565b34801561075257600080fd5b506103ba6101935481565b34801561076957600080fd5b5061077d610778366004615440565b6120d4565b6040516103049493929190615854565b34801561079957600080fd5b506103ba6107a8366004614ec6565b6124c0565b3480156107b957600080fd5b5061037c612547565b3480156107ce57600080fd5b50610322612582565b3480156107e357600080fd5b506103ba6107f2366004615307565b612590565b34801561080357600080fd5b5061037c61081236600461504f565b612670565b34801561082357600080fd5b5061037c6108323660046154ce565b612752565b34801561084357600080fd5b506103ba6101925481565b34801561085a57600080fd5b5061034f6127a3565b34801561086f57600080fd5b506103226127b2565b34801561088457600080fd5b506103ba61089336600461529b565b6127c1565b3480156108a457600080fd5b5061037c6108b33660046154fc565b6127ed565b3480156108c457600080fd5b5061037c6108d3366004615470565b612889565b3480156108e457600080fd5b5061037c6108f3366004614fb2565b612a44565b34801561090457600080fd5b506103ba610913366004614ec6565b612a4f565b34801561092457600080fd5b5061037c610933366004615307565b612ada565b34801561094457600080fd5b5061037c610953366004614f4d565b612b39565b34801561096457600080fd5b5061037c61097336600461537b565b612b6b565b34801561098457600080fd5b50610322612c03565b34801561099957600080fd5b5061037c6109a8366004614ec6565b612c11565b3480156109b957600080fd5b506103226109c8366004615440565b613035565b3480156109d957600080fd5b5061037c6109e8366004615339565b61310c565b3480156109f957600080fd5b50610322613213565b348015610a0e57600080fd5b5061037c610a1d3660046154ce565b613221565b348015610a2e57600080fd5b5061037c610a3d3660046154fc565b61332d565b348015610a4e57600080fd5b5061037c610a5d3660046151ce565b613366565b348015610a6e57600080fd5b50610a77613402565b60405161030494939291906157fc565b348015610a9357600080fd5b506102f8610aa2366004614ee0565b613828565b348015610ab357600080fd5b50610ac7610ac236600461504f565b613856565b60405161030491906157d6565b348015610ae057600080fd5b5061037c610aef366004614ec6565b6138e8565b6000610aff8261398b565b92915050565b606060658054610b1490615e11565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4090615e11565b8015610b8d5780601f10610b6257610100808354040283529160200191610b8d565b820191906000526020600020905b815481529060010190602001808311610b7057829003601f168201915b5050505050905090565b6000610ba2826139b0565b610c085760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152606960205260409020546001600160a01b031690565b6000610c2f82611ec7565b9050806001600160a01b0316836001600160a01b03161415610c9d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610bff565b336001600160a01b0382161480610cb95750610cb98133613828565b610d265760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b6064820152608401610bff565b610d3083836139cd565b505050565b61019954610d4233612a4f565b1015610d605760405162461bcd60e51b8152600401610bff90615a89565b600083815261019d6020908152604080832085845260070182529091208251610d9192600190920191840190614b96565b50600083815261019d602090815260408083208054868552600790910190925291829020805460028201549351600080516020615f7b83398151915294610ddc949360010191615ce1565b60405180910390a1505050565b6101958054610df790615e11565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2390615e11565b8015610e705780601f10610e4557610100808354040283529160200191610e70565b820191906000526020600020905b815481529060010190602001808311610e5357829003601f168201915b505050505081565b815160208184018101805161019c825292820191850191909120919052805482908110610ea457600080fd5b90600052602060002001600091509150508054610df790615e11565b610ec9836139b0565b610f075760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081d1bdad95b9259608a1b6044820152606401610bff565b610f1083611ec7565b6001600160a01b0316336001600160a01b031614610f605760405162461bcd60e51b815260206004820152600d60248201526c6e6f7420796f757220766f746560981b6044820152606401610bff565b61019e548210610f825760405162461bcd60e51b8152600401610bff906159be565b600082815261019d602052604090206004015460ff1615610fb55760405162461bcd60e51b8152600401610bff90615b2a565b600082815261019d602052604090206005015481106110075760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21030b739bbb2b960911b6044820152606401610bff565b600082815261019d6020908152604080832084845260070190915290206004015460ff16156110695760405162461bcd60e51b815260206004820152600e60248201526d3932b6b7bb32b21030b739bbb2b960911b6044820152606401610bff565b8161019f54146110ad5760405162461bcd60e51b815260206004820152600f60248201526e706f6c6c206e6f742061637469766560881b6044820152606401610bff565b6101a05460ff166110f65760405162461bcd60e51b81526020600482015260136024820152726e6f7420616363657074696e6720766f74657360681b6044820152606401610bff565b600082815261019d6020908152604080832086845260080190915290205460ff16156111545760405162461bcd60e51b815260206004820152600d60248201526c185b1c9958591e481d9bdd1959609a1b6044820152606401610bff565b600082815261019d60208181526040808420878552600881018352818520805460ff1916600117905560098101835290842085905585845291905260060180549161119e83615e4c565b9091555050600082815261019d6020908152604080832084845260070190915281206003018054916111cf83615e4c565b909155505060008381526101a460209081526040822080546001810182559083529120018290557fb00b8ad5b5df5ff78c51394c15bb8917e8a0c1595bfaeab935fffb075d91dffa836112218161149a565b8484604051610ddc9493929190615c17565b6101995461124033612a4f565b101561125e5760405162461bcd60e51b8152600401610bff90615a89565b61019e5481106112c75760405162461bcd60e51b815260206004820152602e60248201527f6f726465722063616e206e6f7420626520686967686572207468616e206e756d60448201526d626572206f66206f7074696f6e7360901b6064820152608401610bff565b60005b61019e5481101561135057600081815261019d602052604090206002015482118015906113155750600083815261019d60205260408082206002908101548484529190922090910154105b1561133e57600081815261019d6020526040812060020180549161133883615e4c565b91905055505b8061134881615e4c565b9150506112ca565b50600082815261019d6020526040908190206002810183905580549151600080516020615f14833981519152926113939290916001820191600301908690615c5c565b60405180910390a15050565b610199546113ac33612a4f565b10156113ca5760405162461bcd60e51b8152600401610bff90615a89565b600082815261019d6020908152604090912082516113f092600390920191840190614b96565b50600082815261019d602052604090819020805460028201549251600080516020615f148339815191529361139393600181019260039091019190615c5c565b6101995461143d33612a4f565b101561145b5760405162461bcd60e51b8152600401610bff90615a89565b805161146f90610196906020840190614b96565b50600080516020615f9b83398151915261019660405161148f9190615984565b60405180910390a150565b60008181526101a3602052604090208054606091906114b890615e11565b80601f01602080910402602001604051908101604052809291908181526020018280546114e490615e11565b80156115315780601f1061150657610100808354040283529160200191611531565b820191906000526020600020905b81548152906001019060200180831161151457829003601f168201915b50505050509050919050565b611548335b82613a3b565b6115645760405162461bcd60e51b8152600401610bff90615b50565b610d30838383613b05565b600061157a836124c0565b82106115dc5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610bff565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6101995461161233612a4f565b10156116305760405162461bcd60e51b8152600401610bff90615a89565b600081815261019d60205260409081902060048101805460ff191660019081179091558154600283015493517f27e287a04e8befec97809c62380f0a300b68d9febe3485dbb08ac346001339949461148f949293929092019190615c99565b306001600160a01b037f00000000000000000000000053769b0ac8b16955feb09f8e2f23d904a9660a321614156116d85760405162461bcd60e51b8152600401610bff9061594a565b7f00000000000000000000000053769b0ac8b16955feb09f8e2f23d904a9660a326001600160a01b031661170a613c9e565b6001600160a01b0316146117305760405162461bcd60e51b8152600401610bff906159e4565b61173981613cba565b6040805160008082526020820190925261175591839190613ce9565b50565b6101995461176533612a4f565b10156117835760405162461bcd60e51b8152600401610bff90615a89565b61019e5482106117a55760405162461bcd60e51b8152600401610bff906159be565b600082815261019d602052604090206004015460ff16156117fb5760405162461bcd60e51b815260206004820152601060248201526f1c1bdb1b081dd85cc81c995b5bdd995960821b6044820152606401610bff565b61019f8290556101a0805460ff19168215159081179091556040805184815260ff909216151560208301527fe49485c76c12f1318b4a8bd0ac3db6d55b9b0ac0d57ba933b1f71ca817c581199101611393565b6101995461185b33612a4f565b10156118795760405162461bcd60e51b8152600401610bff90615a89565b60005b81811015610d30578061019d60008585858181106118aa57634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060020181905550600080516020615f1483398151915261019d60008585858181106118fa57634e487b7160e01b600052603260045260246000fd5b9050602002013581526020019081526020016000206000015461019d600086868681811061193857634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060010161019d600087878781811061197557634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060030161019d60008888888181106119b257634e487b7160e01b600052603260045260246000fd5b905060200201358152602001908152602001600020600201546040516119db9493929190615c5c565b60405180910390a1806119ed81615e4c565b91505061187c565b61019a54611a0233612a4f565b1015611a205760405162461bcd60e51b8152600401610bff90615a89565b82518114611a7a5760405162461bcd60e51b815260206004820152602160248201527f6c6973742073686f756c6420686176652073616d6520656e7472792d636f756e6044820152601d60fa1b6064820152608401610bff565b60005b8351811015611af857611ae6848281518110611aa957634e487b7160e01b600052603260045260246000fd5b6020026020010151848484818110611ad157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906109e89190614ec6565b80611af081615e4c565b915050611a7d565b50505050565b61019954611b0b33612a4f565b1015611b295760405162461bcd60e51b8152600401610bff90615a89565b8051611b3d90610195906020840190614b96565b50600080516020615f9b83398151915261019560405161148f9190615a4d565b610d3083838360405180602001604052806000815250612b39565b611b8133611542565b611be65760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b6064820152608401610bff565b61175581613e29565b600060608061019e548410611c165760405162461bcd60e51b8152600401610bff906159be565b600084815261019d602052604090206004015460ff1615611c495760405162461bcd60e51b8152600401610bff90615b2a565b6060611c54856120d4565b5050815191925060009190506001600160401b03811115611c8557634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611cae578160200160208202803683370190505b50905060005b8251811015611d4d5761019d60008881526020019081526020016000206007016000848381518110611cf657634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060030154828281518110611d3057634e487b7160e01b600052603260045260246000fd5b6020908102919091010152611d46600182615d8b565b9050611cb4565b50600095865261019d6020526040909520600601549590949350915050565b306001600160a01b037f00000000000000000000000053769b0ac8b16955feb09f8e2f23d904a9660a32161415611db55760405162461bcd60e51b8152600401610bff9061594a565b7f00000000000000000000000053769b0ac8b16955feb09f8e2f23d904a9660a326001600160a01b0316611de7613c9e565b6001600160a01b031614611e0d5760405162461bcd60e51b8152600401610bff906159e4565b611e1682613cba565b611e2282826001613ce9565b5050565b6000611e3160995490565b8210611e945760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610bff565b60998281548110611eb557634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000818152606760205260408120546001600160a01b031680610aff5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610bff565b60008181526101a4602090815260409182902080548351818402810184019094528084526060939283018282801561153157602002820191906000526020600020905b815481526020019060010190808311611f815750505050509050919050565b61019954611fad33612a4f565b1015611fcb5760405162461bcd60e51b8152600401610bff90615a89565b6120606101918054611fdc90615e11565b80601f016020809104026020016040519081016040528092919081815260200182805461200890615e11565b80156120555780601f1061202a57610100808354040283529160200191612055565b820191906000526020600020905b81548152906001019060200180831161203857829003601f168201915b505050505082613ebe565b6120a05760405162461bcd60e51b81526020600482015260116024820152701cdd185d19481b9bdd08185b1b1bddd959607a1b6044820152606401610bff565b80516120b490610191906020840190614b96565b50600080516020615f9b83398151915261019160405161148f9190615a1e565b600081815261019d6020526040812060050154606091829182918291815b8181101561214257600088815261019d6020908152604080832084845260070190915290206004015460ff16612130578261212c81615e4c565b9350505b8061213a81615e4c565b9150506120f2565b506000826001600160401b0381111561216b57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612194578160200160208202803683370190505b5090506000836001600160401b038111156121bf57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156121f257816020015b60608152602001906001900390816121dd5790505b5090506000846001600160401b0381111561221d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612246578160200160208202803683370190505b5090506000856001600160401b0381111561227157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561229a578160200160208202803683370190505b50905060005b858110156124ae5760008c815261019d6020908152604080832084845260070190915290206004015460ff1661249c57866122da81615dfa565b60008e815261019d602090815260408083208684526007019091529020548751919950915086908990811061231f57634e487b7160e01b600052603260045260246000fd5b60209081029190910181019190915260008d815261019d8252604080822084835260070190925220600101805461235590615e11565b80601f016020809104026020016040519081016040528092919081815260200182805461238190615e11565b80156123ce5780601f106123a3576101008083540402835291602001916123ce565b820191906000526020600020905b8154815290600101906020018083116123b157829003601f168201915b50505050508488815181106123f357634e487b7160e01b600052603260045260246000fd5b60209081029190910181019190915260008d815261019d825260408082208483526007019092522060020154835184908990811061244157634e487b7160e01b600052603260045260246000fd5b60209081029190910181019190915260008d815261019d825260408082208483526007019092522060030154825183908990811061248f57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b806124a681615e4c565b9150506122a0565b50929a91995097509095509350505050565b60006001600160a01b03821661252b5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610bff565b506001600160a01b031660009081526068602052604090205490565b336125506127a3565b6001600160a01b0316146125765760405162461bcd60e51b8152600401610bff90615ac0565b6125806000614007565b565b6101948054610df790615e11565b60006101995461259f33612a4f565b10156125bd5760405162461bcd60e51b8152600401610bff90615a89565b61019e54600081815261019d6020908152604090912082815584516125ea92600190920191860190614b96565b50600081815261019d6020526040908190206002810183905560048101805460ff19169055805491517fcd741d2d461c4fee0f259e59c0981bcde3c47a31123dd8a63a58ac86541de52c92612646929091600190910190615c43565b60405180910390a1600161019e60008282546126629190615d8b565b90915550909150505b919050565b61019a5461267d33612a4f565b101561269b5760405162461bcd60e51b8152600401610bff90615a89565b60005b8151811015611e22576126f66101a28383815181106126cd57634e487b7160e01b600052603260045260246000fd5b60200260200101516040516126e2919061572a565b908152602001604051809103902054613e29565b60006101a283838151811061271b57634e487b7160e01b600052603260045260246000fd5b6020026020010151604051612730919061572a565b9081526040519081900360200190205561274b600182615d8b565b905061269e565b6101995461275f33612a4f565b101561277d5760405162461bcd60e51b8152600401610bff90615a89565b600082815261019d6020908152604090912082516113f092600190920191840190614b96565b60c9546001600160a01b031690565b606060668054610b1490615e11565b60006101a283836040516127d6929190615746565b908152602001604051809103902054905092915050565b610199546127fa33612a4f565b10156128185760405162461bcd60e51b8152600401610bff90615a89565b600082815261019d60209081526040808320848452600781019092529182902060048101805460ff1916600190811790915591548154600283015494517f6d9e2a94f822af2b1b82f26088d84bf902197089414f34a9d9ad8101f962485c9561139395939492939092019190615ce1565b6101995461289633612a4f565b10156128b45760405162461bcd60e51b8152600401610bff90615a89565b60005b81811015611af857600084815261019d6020526040812082916007909101908585848181106128f657634e487b7160e01b600052603260045260246000fd5b6020908102929092013583525081810192909252604090810160009081206002019390935586835261019d90915281208054600080516020615f7b8339815191529290916007019086868681811061295e57634e487b7160e01b600052603260045260246000fd5b9050602002013581526020019081526020016000206000015461019d600088815260200190815260200160002060070160008787878181106129b057634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060010161019d60008981526020019081526020016000206007016000888888818110612a0157634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060020154604051612a2a9493929190615ce1565b60405180910390a180612a3c81615e4c565b9150506128b7565b611e22338383614059565b610198546040516352ebc13f60e11b81526000916001600160a01b031690819063a5d7827e90612a83908690600401615785565b60206040518083038186803b158015612a9b57600080fd5b505afa158015612aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad39190615458565b9392505050565b61019954612ae733612a4f565b1015612b055760405162461bcd60e51b8152600401610bff90615a89565b8051612b1990610194906020840190614b96565b50600080516020615f9b83398151915261019460405161148f9190615af5565b612b433383613a3b565b612b5f5760405162461bcd60e51b8152600401610bff90615b50565b611af884848484614124565b61019954612b7833612a4f565b1015612b965760405162461bcd60e51b8152600401610bff90615a89565b6000612ba184612590565b9050612bad818461139f565b60005b8251811015612bfc57612bea82848381518110612bdd57634e487b7160e01b600052603260045260246000fd5b6020026020010151613221565b80612bf481615e4c565b915050612bb0565b5050505050565b6101918054610df790615e11565b600054610100900460ff16612c2c5760005460ff1615612c30565b303b155b612c935760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bff565b600054610100900460ff16158015612cb5576000805461ffff19166101011790555b612cfd6040518060400160405280600a815260200169766f74656f732e636f6d60b01b81525060405180604001604052806004815260200163564f544560e01b815250614157565b612d05614198565b612d0d6141d7565b612d15614198565b612d1d61420e565b600a61019955601461019a556006610197556040805180820190915260078082526618dc99585d195960ca1b6020909201918252612d5e9161019191614b96565b5061019880546001600160a01b0384166001600160a01b0319909116179055604080516080810182526006818301908152651bdc195b995960d21b606083015281528151808301835260078152661c995b5bdd995960ca1b602082810191909152820152905161019c90612ddf906618dc99585d195960ca1b815260070190565b908152604051908190036020019020612df9916002614c1a565b506040805160a081018252600760608201818152661cdd185c9d195960ca1b6080840152825282518084018452600981526818d85b98d95b1b195960ba1b6020808301919091528084019190915283518085018552918252661c995b5bdd995960ca1b90820152818301529051651bdc195b995960d21b815261019c90600601908152604051908190036020019020612e93916003614c73565b506040805160808101825260098183019081526818d85b98d95b1b195960ba1b60608301528152815180830183526005815264195b99195960da1b6020808301919091528201529051661cdd185c9d195960ca1b815261019c90600701908152604051908190036020019020612f0a916002614c1a565b5060408051606081018252600760208201908152661c995b5bdd995960ca1b82840152815290516818d85b98d95b1b195960ba1b815261019c90600901908152604051908190036020019020612f61916001614cc0565b5060408051606081018252600760208201908152661c995b5bdd995960ca1b828401528152905164195b99195960da1b815261019c90600501908152604051908190036020019020612fb4916001614cc0565b5060408051606081018252600760208201908152661c995b5bdd995960ca1b828401528152905161019c90612ff690661c995b5bdd995960ca1b815260070190565b908152604051908190036020019020613010916001614cc0565b506130206101a180546001019055565b8015611e22576000805461ff00191690555050565b6060613040826139b0565b6130a45760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610bff565b60006130bb60408051602081019091526000815290565b905060008151116130db5760405180602001604052806000815250612ad3565b806130e584614235565b6040516020016130f6929190615756565b6040516020818303038152906040529392505050565b61019a5461311933612a4f565b10156131375760405162461bcd60e51b8152600401610bff90615a89565b61315f6101a28360405161314b919061572a565b9081526020016040518091039020546139b0565b156131a95760405162461bcd60e51b815260206004820152601a602482015279766f746572496420616c726561647920686173206120766f746560301b6044820152606401610bff565b60006131b56101a15490565b90506131c66101a180546001019055565b6131d0828261434e565b806101a2846040516131e2919061572a565b90815260408051602092819003830190209290925560008381526101a38252919091208451611af892860190614b96565b6101968054610df790615e11565b6101995461322e33612a4f565b101561324c5760405162461bcd60e51b8152600401610bff90615a89565b600082815261019d60209081526040808320600581015480855260079091018352922091825582516132849260010191840190614b96565b50600082815261019d6020908152604080832060058101805480865260079092019093528184206002810191909155600401805460ff191690559054825290819020805491517fb3195bc367c77b97f6ac197202b7dbd50d797b6483ec23b93039dac027a6bb51926132fe92869260019190910190615cc2565b60405180910390a1600082815261019d6020526040812060050180549161332483615e4c565b91905055505050565b60005b613339336124c0565b811015610d305761335461334d338361156f565b8484610ec0565b61335f600182615d8b565b9050613330565b6101995461337333612a4f565b10156133915760405162461bcd60e51b8152600401610bff90615a89565b60405163804b2e9960e01b8152735b0ea5d91f64441d125caae993a59be7e30513339063804b2e99906133ce9061019b90869086906004016158ba565b60006040518083038186803b1580156133e657600080fd5b505af41580156133fa573d6000803e3d6000fd5b505050505050565b6060806060806000805b61019e5481101561345157600081815261019d602052604090206004015460ff1661343f578161343b81615e4c565b9250505b8061344981615e4c565b91505061340c565b506000816001600160401b0381111561347a57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156134a3578160200160208202803683370190505b5090506000826001600160401b038111156134ce57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561350157816020015b60608152602001906001900390816134ec5790505b5090506000836001600160401b0381111561352c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015613555578160200160208202803683370190505b5090506000846001600160401b0381111561358057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156135b357816020015b606081526020019060019003908161359e5790505b50905060005b61019e5481101561381857600081815261019d602052604090206004015460ff1661380657856135e881615dfa565b600083815261019d60205260409020548751919850915086908890811061361f57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505061019d6000828152602001908152602001600020600101805461364d90615e11565b80601f016020809104026020016040519081016040528092919081815260200182805461367990615e11565b80156136c65780601f1061369b576101008083540402835291602001916136c6565b820191906000526020600020905b8154815290600101906020018083116136a957829003601f168201915b50505050508487815181106136eb57634e487b7160e01b600052603260045260246000fd5b602002602001018190525061019d60008281526020019081526020016000206002015483878151811061372e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505061019d6000828152602001908152602001600020600301805461375c90615e11565b80601f016020809104026020016040519081016040528092919081815260200182805461378890615e11565b80156137d55780601f106137aa576101008083540402835291602001916137d5565b820191906000526020600020905b8154815290600101906020018083116137b857829003601f168201915b50505050508287815181106137fa57634e487b7160e01b600052603260045260246000fd5b60200260200101819052505b8061381081615e4c565b9150506135b9565b5092989197509550909350915050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6040516352c4289f60e01b8152606090735b0ea5d91f64441d125caae993a59be7e3051333906352c4289f906138949061019b9086906004016158a1565b60006040518083038186803b1580156138ac57600080fd5b505af41580156138c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aff9190810190615081565b336138f16127a3565b6001600160a01b0316146139175760405162461bcd60e51b8152600401610bff90615ac0565b6001600160a01b03811661397c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bff565b61175581614007565b3b151590565b60006001600160e01b0319821663780e9d6360e01b1480610aff5750610aff82614368565b6000908152606760205260409020546001600160a01b0316151590565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613a0282611ec7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000613a46826139b0565b613aa75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610bff565b6000613ab283611ec7565b9050806001600160a01b0316846001600160a01b03161480613aed5750836001600160a01b0316613ae284610b97565b6001600160a01b0316145b80613afd5750613afd8185613828565b949350505050565b826001600160a01b0316613b1882611ec7565b6001600160a01b031614613b805760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610bff565b6001600160a01b038216613be25760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610bff565b613bed8383836143b8565b613bf86000826139cd565b6001600160a01b0383166000908152606860205260408120805460019290613c21908490615db7565b90915550506001600160a01b0382166000908152606860205260408120805460019290613c4f908490615d8b565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020615f5b83398151915291a4505050565b600080516020615ef4833981519152546001600160a01b031690565b33613cc36127a3565b6001600160a01b0316146117555760405162461bcd60e51b8152600401610bff90615ac0565b6000613cf3613c9e565b9050613cfe846143c3565b600083511180613d0b5750815b15613d1c57613d1a8484614456565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff16612bfc57805460ff19166001178155604051613d97908690613d68908590602401615785565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052614456565b50805460ff19168155613da8613c9e565b6001600160a01b0316826001600160a01b031614613e205760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610bff565b612bfc85614541565b6000613e3482611ec7565b9050613e42816000846143b8565b613e4d6000836139cd565b6001600160a01b0381166000908152606860205260408120805460019290613e76908490615db7565b909155505060008281526067602052604080822080546001600160a01b0319169055518391906001600160a01b03841690600080516020615f5b833981519152908390a45050565b6000613eca8383614581565b15613ed757506001610aff565b60005b61019c84604051613eeb919061572a565b90815260405190819003602001902054811015613ffd57613fdc8361019c86604051613f17919061572a565b90815260200160405180910390208381548110613f4457634e487b7160e01b600052603260045260246000fd5b906000526020600020018054613f5990615e11565b80601f0160208091040260200160405190810160405280929190818152602001828054613f8590615e11565b8015613fd25780601f10613fa757610100808354040283529160200191613fd2565b820191906000526020600020905b815481529060010190602001808311613fb557829003601f168201915b5050505050614581565b15613feb576001915050610aff565b80613ff581615e4c565b915050613eda565b5060009392505050565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156140b75760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610bff565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61412f848484613b05565b61413b848484846145da565b611af85760405162461bcd60e51b8152600401610bff906158f8565b600054610100900460ff1661417e5760405162461bcd60e51b8152600401610bff90615ba1565b6141866146e7565b61418e6146e7565b611e22828261470e565b600054610100900460ff166141bf5760405162461bcd60e51b8152600401610bff90615ba1565b6141c76146e7565b6141cf6146e7565b6125806146e7565b600054610100900460ff166141fe5760405162461bcd60e51b8152600401610bff90615ba1565b6142066146e7565b61258061475c565b600054610100900460ff166141c75760405162461bcd60e51b8152600401610bff90615ba1565b6060816142595750506040805180820190915260018152600360fc1b602082015290565b8160005b8115614283578061426d81615e4c565b915061427c9050600a83615da3565b915061425d565b6000816001600160401b038111156142ab57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156142d5576020820181803683370190505b5090505b8415613afd576142ea600183615db7565b91506142f7600a86615e67565b614302906030615d8b565b60f81b81838151811061432557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350614347600a86615da3565b94506142d9565b611e2282826040518060200160405280600081525061478c565b60006001600160e01b031982166380ac58cd60e01b148061439957506001600160e01b03198216635b5e139f60e01b145b80610aff57506301ffc9a760e01b6001600160e01b0319831614610aff565b610d308383836147bf565b803b6144275760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bff565b600080516020615ef483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6144b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610bff565b600080846001600160a01b0316846040516144d0919061572a565b600060405180830381855af49150503d806000811461450b576040519150601f19603f3d011682016040523d82523d6000602084013e614510565b606091505b50915091506145388282604051806060016040528060278152602001615f3460279139614877565b95945050505050565b61454a816143c3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600081604051602001614594919061572a565b60405160208183030381529060405280519060200120836040516020016145bb919061572a565b6040516020818303038152906040528051906020012014905092915050565b60006001600160a01b0384163b156146dc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061461e903390899088908890600401615799565b602060405180830381600087803b15801561463857600080fd5b505af1925050508015614668575060408051601f3d908101601f191682019092526146659181019061527f565b60015b6146c2573d808015614696576040519150601f19603f3d011682016040523d82523d6000602084013e61469b565b606091505b5080516146ba5760405162461bcd60e51b8152600401610bff906158f8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613afd565b506001949350505050565b600054610100900460ff166125805760405162461bcd60e51b8152600401610bff90615ba1565b600054610100900460ff166147355760405162461bcd60e51b8152600401610bff90615ba1565b8151614748906065906020850190614b96565b508051610d30906066906020840190614b96565b600054610100900460ff166147835760405162461bcd60e51b8152600401610bff90615ba1565b61258033614007565b61479683836148b0565b6147a360008484846145da565b610d305760405162461bcd60e51b8152600401610bff906158f8565b6001600160a01b03831661481a5761481581609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b61483d565b816001600160a01b0316836001600160a01b03161461483d5761483d83826149dc565b6001600160a01b03821661485457610d3081614a79565b826001600160a01b0316826001600160a01b031614610d3057610d308282614b52565b60608315614886575081612ad3565b8251156148965782518084602001fd5b8160405162461bcd60e51b8152600401610bff91906158e5565b6001600160a01b0382166149065760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610bff565b61490f816139b0565b1561495b5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610bff565b614967600083836143b8565b6001600160a01b0382166000908152606860205260408120805460019290614990908490615d8b565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020615f5b833981519152908290a45050565b600060016149e9846124c0565b6149f39190615db7565b600083815260986020526040902054909150808214614a46576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b609954600090614a8b90600190615db7565b6000838152609a602052604081205460998054939450909284908110614ac157634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060998381548110614af057634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480614b3657634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000614b5d836124c0565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b828054614ba290615e11565b90600052602060002090601f016020900481019282614bc45760008555614c0a565b82601f10614bdd57805160ff1916838001178555614c0a565b82800160010185558215614c0a579182015b82811115614c0a578251825591602001919060010190614bef565b50614c16929150614d0d565b5090565b828054828255906000526020600020908101928215614c67579160200282015b82811115614c675782518051614c57918491602090910190614b96565b5091602001919060010190614c3a565b50614c16929150614d22565b828054828255906000526020600020908101928215614c67579160200282015b82811115614c675782518051614cb0918491602090910190614b96565b5091602001919060010190614c93565b828054828255906000526020600020908101928215614c67579160200282015b82811115614c675782518051614cfd918491602090910190614b96565b5091602001919060010190614ce0565b5b80821115614c165760008155600101614d0e565b80821115614c16576000614d368282614d3f565b50600101614d22565b508054614d4b90615e11565b6000825580601f10614d5b575050565b601f0160209004906000526020600020908101906117559190614d0d565b80356001600160a01b038116811461266b57600080fd5b60008083601f840112614da1578182fd5b5081356001600160401b03811115614db7578182fd5b6020830191508360208260051b8501011115614dd257600080fd5b9250929050565b600082601f830112614de9578081fd5b81356020614dfe614df983615d41565b615d11565b80838252828201915082860187848660051b8901011115614e1d578586fd5b855b85811015614e5d5781356001600160401b03811115614e3c578788fd5b614e4a8a87838c0101614e7a565b8552509284019290840190600101614e1f565b5090979650505050505050565b8035801515811461266b57600080fd5b600082601f830112614e8a578081fd5b8135614e98614df982615d64565b818152846020838601011115614eac578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215614ed7578081fd5b612ad382614d79565b60008060408385031215614ef2578081fd5b614efb83614d79565b9150614f0960208401614d79565b90509250929050565b600080600060608486031215614f26578081fd5b614f2f84614d79565b9250614f3d60208501614d79565b9150604084013590509250925092565b60008060008060808587031215614f62578081fd5b614f6b85614d79565b9350614f7960208601614d79565b92506040850135915060608501356001600160401b03811115614f9a578182fd5b614fa687828801614e7a565b91505092959194509250565b60008060408385031215614fc4578182fd5b614fcd83614d79565b9150614f0960208401614e6a565b60008060408385031215614fed578182fd5b614ff683614d79565b915060208301356001600160401b03811115615010578182fd5b61501c85828601614e7a565b9150509250929050565b60008060408385031215615038578182fd5b61504183614d79565b946020939093013593505050565b600060208284031215615060578081fd5b81356001600160401b03811115615075578182fd5b613afd84828501614dd9565b60006020808385031215615093578182fd5b82516001600160401b03808211156150a9578384fd5b818501915085601f8301126150bc578384fd5b81516150ca614df982615d41565b80828252858201915085850189878560051b88010111156150e9578788fd5b875b8481101561515a5781518681111561510157898afd5b8701603f81018c1361511157898afd5b888101516040615123614df983615d64565b8281528e82848601011115615136578c8dfd5b615145838d8301848701615dce565b875250505092870192908701906001016150eb565b50909998505050505050505050565b60008060006040848603121561517d578081fd5b83356001600160401b0380821115615193578283fd5b61519f87838801614dd9565b945060208601359150808211156151b4578283fd5b506151c186828701614d90565b9497909650939450505050565b600080604083850312156151e0578182fd5b82356001600160401b03808211156151f6578384fd5b61520286838701614dd9565b93506020850135915080821115615217578283fd5b5061501c85828601614dd9565b60008060208385031215615236578182fd5b82356001600160401b0381111561524b578283fd5b61525785828601614d90565b90969095509350505050565b600060208284031215615274578081fd5b8135612ad381615ebd565b600060208284031215615290578081fd5b8151612ad381615ebd565b600080602083850312156152ad578182fd5b82356001600160401b03808211156152c3578384fd5b818501915085601f8301126152d6578384fd5b8135818111156152e4578485fd5b8660208285010111156152f5578485fd5b60209290920196919550909350505050565b600060208284031215615318578081fd5b81356001600160401b0381111561532d578182fd5b613afd84828501614e7a565b6000806040838503121561534b578182fd5b82356001600160401b03811115615360578283fd5b61536c85828601614e7a565b925050614f0960208401614d79565b60008060006060848603121561538f578081fd5b83356001600160401b03808211156153a5578283fd5b6153b187838801614e7a565b945060208601359150808211156153c6578283fd5b6153d287838801614e7a565b935060408601359150808211156153e7578283fd5b506153f486828701614dd9565b9150509250925092565b60008060408385031215615410578182fd5b82356001600160401b03811115615425578283fd5b61543185828601614e7a565b95602094909401359450505050565b600060208284031215615451578081fd5b5035919050565b600060208284031215615469578081fd5b5051919050565b600080600060408486031215615484578081fd5b8335925060208401356001600160401b038111156154a0578182fd5b6151c186828701614d90565b600080604083850312156154be578182fd5b82359150614f0960208401614e6a565b600080604083850312156154e0578182fd5b8235915060208301356001600160401b03811115615010578182fd5b6000806040838503121561550e578182fd5b50508035926020909101359150565b600080600060608486031215615531578081fd5b833592506020840135915060408401356001600160401b03811115615554578182fd5b6153f486828701614e7a565b600080600060608486031215615574578081fd5b505081359360208301359350604090920135919050565b600081518084526020808501808196508360051b81019150828601855b858110156155d25782840389526155c0848351615660565b988501989350908401906001016155a8565b5091979650505050505050565b600081518084526020808501808196508360051b81019150828601855b858110156155d2578284038952615614848351615660565b988501989350908401906001016155fc565b6000815180845260208085019450808401835b8381101561565557815187529582019590820190600101615639565b509495945050505050565b60008151808452615678816020860160208601615dce565b601f01601f19169290920160200192915050565b8054600090600181811c90808316806156a657607f831692505b60208084108214156156c657634e487b7160e01b86526022600452602486fd5b838852602088018280156156e157600181146156f25761571d565b60ff1987168252828201975061571d565b60008981526020902060005b87811015615717578154848201529086019084016156fe565b83019850505b5050505050505092915050565b6000825161573c818460208701615dce565b9190910192915050565b8183823760009101908152919050565b60008351615768818460208801615dce565b83519083019061577c818360208801615dce565b01949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906157cc90830184615660565b9695505050505050565b602081526000612ad3602083018461558b565b602081526000612ad36020830184615626565b60808152600061580f6080830187615626565b8281036020840152615821818761558b565b905082810360408401526158358186615626565b90508281036060840152615849818561558b565b979650505050505050565b6080815260006158676080830187615626565b8281036020840152615879818761558b565b9050828103604084015261588d8186615626565b905082810360608401526158498185615626565b828152604060208201526000613afd60408301846155df565b8381526060602082015260006158d360608301856155df565b82810360408401526157cc81856155df565b602081526000612ad36020830184615660565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602c90820152600080516020615ed483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60408152601060408201526f757269566f746572526567697374727960801b6060820152608060208201526000612ad3608083018461568c565b6020808252600c908201526b1a5b9d985b1a59081c1bdb1b60a21b604082015260600190565b6020808252602c90820152600080516020615ed483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b604081526005604082015264737461746560d81b6060820152608060208201526000612ad3608083018461568c565b604081526012604082015271757269507269766174654d6574616461746160701b6060820152608060208201526000612ad3608083018461568c565b6020808252601f908201527f757365722068617320696e76616c6964206f7267616e697a657220726f6c6500604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60408152600b60408201526a7572694d6574616461746160a81b6060820152608060208201526000612ad3608083018461568c565b6020808252600c908201526b1c995b5bdd9959081c1bdb1b60a21b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b838152606060208201526000615c056060830185615626565b82810360408401526157cc8185615626565b848152608060208201526000615c306080830186615660565b6040830194909452506060015292915050565b828152604060208201526000613afd604083018461568c565b848152608060208201526000615c75608083018661568c565b8281036040840152615c87818661568c565b91505082606083015295945050505050565b838152606060208201526000615cb2606083018561568c565b9050826040830152949350505050565b838152826020820152606060408201526000614538606083018461568c565b848152836020820152608060408201526000615d00608083018561568c565b905082606083015295945050505050565b604051601f8201601f191681016001600160401b0381118282101715615d3957615d39615ea7565b604052919050565b60006001600160401b03821115615d5a57615d5a615ea7565b5060051b60200190565b60006001600160401b03821115615d7d57615d7d615ea7565b50601f01601f191660200190565b60008219821115615d9e57615d9e615e7b565b500190565b600082615db257615db2615e91565b500490565b600082821015615dc957615dc9615e7b565b500390565b60005b83811015615de9578181015183820152602001615dd1565b83811115611af85750506000910152565b600081615e0957615e09615e7b565b506000190190565b600181811c90821680615e2557607f821691505b60208210811415615e4657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615e6057615e60615e7b565b5060010190565b600082615e7657615e76615e91565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461175557600080fdfe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcd84487b653f8ac649590c7448e4f3c75619bfea916ec87fa65acc2f4836386ff416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef608e229dcea3d7ffffba95e0156bb81278a99d8c8369b4a93106b6f4d6f56a0f469de3b344361a973cff6fdeebc9d7c0ce4b5407c4810694199b73f2f9d3f74da26469706673582212202f3d7c164cc4bdc00ea055563ebef0bc3ffea885aa3905bb18519b474fd077cf64736f6c63430008040033", - "storage": {} + "energy": "0x0", + "code": "0x6080604052600436106102d35760003560e01c806301ffc9a7146102d857806306fdde031461030d578063081812fc1461032f578063095ea7b31461035c578063096c490c1461037e578063098c9d3e146103c85780630db70368146103e85780630e51d8bd146104095780630f8edad61461041e57806314b1c4e61461043e57806318160ddd1461045e5780631ca92613146104735780631e356fda146104935780631ec71c45146104b35780631fb05fca146104d357806323b872dd146104f35780632f745c591461051357806334bfce7f146105335780633659cfe6146105535780633c4a206f146105735780633c7e47cb146105935780633cbad60b146105b35780633d1e7b26146105d357806342842e0e146105f357806342966c68146106135780634ae3a23f146106335780634f1ef286146106625780634f6ccce71461067557806354fd4d50146106955780636352211e146106ac5780636530735e146106cc57806365d65a14146106f957806368794b87146107265780636a51c955146107465780636ac8e35b1461075d57806370a082311461078d578063715018a6146107ad57806372271de9146107c25780637c31407b146107d75780637fca72b9146107f757806387cea7771461081757806389dc8c8c146108375780638da5cb5b1461084e57806395d89b4114610863578063971582351461087857806397ed07a0146108985780639bdb458e146108b8578063a22cb465146108d8578063a5d7827e146108f8578063af7acc6114610918578063b88d4fde14610938578063bf78696e14610958578063c19d93fb14610978578063c4d66de81461098d578063c87b56dd146109ad578063c9418de1146109cd578063c943e0f2146109ed578063d492589314610a02578063de97632914610a22578063e08fc5a414610a42578063e64853c414610a62578063e985e9c514610a87578063f2c78e4914610aa7578063f2fde38b14610ad4575b600080fd5b3480156102e457600080fd5b506102f86102f3366004615263565b610af4565b60405190151581526020015b60405180910390f35b34801561031957600080fd5b50610322610b05565b60405161030491906158e5565b34801561033b57600080fd5b5061034f61034a366004615440565b610b97565b6040516103049190615785565b34801561036857600080fd5b5061037c610377366004615026565b610c24565b005b34801561038a57600080fd5b506103ba6103993660046154fc565b600090815261019d6020908152604080832093835260099093019052205490565b604051908152602001610304565b3480156103d457600080fd5b5061037c6103e336600461551d565b610d35565b3480156103f457600080fd5b506101985461034f906001600160a01b031681565b34801561041557600080fd5b50610322610de9565b34801561042a57600080fd5b506103226104393660046153fe565b610e78565b34801561044a57600080fd5b5061037c610459366004615560565b610ec0565b34801561046a57600080fd5b506099546103ba565b34801561047f57600080fd5b5061037c61048e3660046154fc565b611233565b34801561049f57600080fd5b5061037c6104ae3660046154ce565b61139f565b3480156104bf57600080fd5b5061037c6104ce366004615307565b611430565b3480156104df57600080fd5b506103226104ee366004615440565b61149a565b3480156104ff57600080fd5b5061037c61050e366004614f12565b61153d565b34801561051f57600080fd5b506103ba61052e366004615026565b61156f565b34801561053f57600080fd5b5061037c61054e366004615440565b611605565b34801561055f57600080fd5b5061037c61056e366004614ec6565b61168f565b34801561057f57600080fd5b5061037c61058e3660046154ac565b611758565b34801561059f57600080fd5b5061037c6105ae366004615224565b61184e565b3480156105bf57600080fd5b5061037c6105ce366004615169565b6119f5565b3480156105df57600080fd5b5061037c6105ee366004615307565b611afe565b3480156105ff57600080fd5b5061037c61060e366004614f12565b611b5d565b34801561061f57600080fd5b5061037c61062e366004615440565b611b78565b34801561063f57600080fd5b5061065361064e366004615440565b611bef565b60405161030493929190615bec565b61037c610670366004614fdb565b611d6c565b34801561068157600080fd5b506103ba610690366004615440565b611e26565b3480156106a157600080fd5b506103ba6101975481565b3480156106b857600080fd5b5061034f6106c7366004615440565b611ec7565b3480156106d857600080fd5b506106ec6106e7366004615440565b611f3e565b60405161030491906157e9565b34801561070557600080fd5b5061019f546101a05460ff1660408051928352901515602083015201610304565b34801561073257600080fd5b5061037c610741366004615307565b611fa0565b34801561075257600080fd5b506103ba6101935481565b34801561076957600080fd5b5061077d610778366004615440565b6120d4565b6040516103049493929190615854565b34801561079957600080fd5b506103ba6107a8366004614ec6565b6124c0565b3480156107b957600080fd5b5061037c612547565b3480156107ce57600080fd5b50610322612582565b3480156107e357600080fd5b506103ba6107f2366004615307565b612590565b34801561080357600080fd5b5061037c61081236600461504f565b612670565b34801561082357600080fd5b5061037c6108323660046154ce565b612752565b34801561084357600080fd5b506103ba6101925481565b34801561085a57600080fd5b5061034f6127a3565b34801561086f57600080fd5b506103226127b2565b34801561088457600080fd5b506103ba61089336600461529b565b6127c1565b3480156108a457600080fd5b5061037c6108b33660046154fc565b6127ed565b3480156108c457600080fd5b5061037c6108d3366004615470565b612889565b3480156108e457600080fd5b5061037c6108f3366004614fb2565b612a44565b34801561090457600080fd5b506103ba610913366004614ec6565b612a4f565b34801561092457600080fd5b5061037c610933366004615307565b612ada565b34801561094457600080fd5b5061037c610953366004614f4d565b612b39565b34801561096457600080fd5b5061037c61097336600461537b565b612b6b565b34801561098457600080fd5b50610322612c03565b34801561099957600080fd5b5061037c6109a8366004614ec6565b612c11565b3480156109b957600080fd5b506103226109c8366004615440565b613035565b3480156109d957600080fd5b5061037c6109e8366004615339565b61310c565b3480156109f957600080fd5b50610322613213565b348015610a0e57600080fd5b5061037c610a1d3660046154ce565b613221565b348015610a2e57600080fd5b5061037c610a3d3660046154fc565b61332d565b348015610a4e57600080fd5b5061037c610a5d3660046151ce565b613366565b348015610a6e57600080fd5b50610a77613402565b60405161030494939291906157fc565b348015610a9357600080fd5b506102f8610aa2366004614ee0565b613828565b348015610ab357600080fd5b50610ac7610ac236600461504f565b613856565b60405161030491906157d6565b348015610ae057600080fd5b5061037c610aef366004614ec6565b6138e8565b6000610aff8261398b565b92915050565b606060658054610b1490615e11565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4090615e11565b8015610b8d5780601f10610b6257610100808354040283529160200191610b8d565b820191906000526020600020905b815481529060010190602001808311610b7057829003601f168201915b5050505050905090565b6000610ba2826139b0565b610c085760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152606960205260409020546001600160a01b031690565b6000610c2f82611ec7565b9050806001600160a01b0316836001600160a01b03161415610c9d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610bff565b336001600160a01b0382161480610cb95750610cb98133613828565b610d265760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b6064820152608401610bff565b610d3083836139cd565b505050565b61019954610d4233612a4f565b1015610d605760405162461bcd60e51b8152600401610bff90615a89565b600083815261019d6020908152604080832085845260070182529091208251610d9192600190920191840190614b96565b50600083815261019d602090815260408083208054868552600790910190925291829020805460028201549351600080516020615f7b83398151915294610ddc949360010191615ce1565b60405180910390a1505050565b6101958054610df790615e11565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2390615e11565b8015610e705780601f10610e4557610100808354040283529160200191610e70565b820191906000526020600020905b815481529060010190602001808311610e5357829003601f168201915b505050505081565b815160208184018101805161019c825292820191850191909120919052805482908110610ea457600080fd5b90600052602060002001600091509150508054610df790615e11565b610ec9836139b0565b610f075760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081d1bdad95b9259608a1b6044820152606401610bff565b610f1083611ec7565b6001600160a01b0316336001600160a01b031614610f605760405162461bcd60e51b815260206004820152600d60248201526c6e6f7420796f757220766f746560981b6044820152606401610bff565b61019e548210610f825760405162461bcd60e51b8152600401610bff906159be565b600082815261019d602052604090206004015460ff1615610fb55760405162461bcd60e51b8152600401610bff90615b2a565b600082815261019d602052604090206005015481106110075760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21030b739bbb2b960911b6044820152606401610bff565b600082815261019d6020908152604080832084845260070190915290206004015460ff16156110695760405162461bcd60e51b815260206004820152600e60248201526d3932b6b7bb32b21030b739bbb2b960911b6044820152606401610bff565b8161019f54146110ad5760405162461bcd60e51b815260206004820152600f60248201526e706f6c6c206e6f742061637469766560881b6044820152606401610bff565b6101a05460ff166110f65760405162461bcd60e51b81526020600482015260136024820152726e6f7420616363657074696e6720766f74657360681b6044820152606401610bff565b600082815261019d6020908152604080832086845260080190915290205460ff16156111545760405162461bcd60e51b815260206004820152600d60248201526c185b1c9958591e481d9bdd1959609a1b6044820152606401610bff565b600082815261019d60208181526040808420878552600881018352818520805460ff1916600117905560098101835290842085905585845291905260060180549161119e83615e4c565b9091555050600082815261019d6020908152604080832084845260070190915281206003018054916111cf83615e4c565b909155505060008381526101a460209081526040822080546001810182559083529120018290557fb00b8ad5b5df5ff78c51394c15bb8917e8a0c1595bfaeab935fffb075d91dffa836112218161149a565b8484604051610ddc9493929190615c17565b6101995461124033612a4f565b101561125e5760405162461bcd60e51b8152600401610bff90615a89565b61019e5481106112c75760405162461bcd60e51b815260206004820152602e60248201527f6f726465722063616e206e6f7420626520686967686572207468616e206e756d60448201526d626572206f66206f7074696f6e7360901b6064820152608401610bff565b60005b61019e5481101561135057600081815261019d602052604090206002015482118015906113155750600083815261019d60205260408082206002908101548484529190922090910154105b1561133e57600081815261019d6020526040812060020180549161133883615e4c565b91905055505b8061134881615e4c565b9150506112ca565b50600082815261019d6020526040908190206002810183905580549151600080516020615f14833981519152926113939290916001820191600301908690615c5c565b60405180910390a15050565b610199546113ac33612a4f565b10156113ca5760405162461bcd60e51b8152600401610bff90615a89565b600082815261019d6020908152604090912082516113f092600390920191840190614b96565b50600082815261019d602052604090819020805460028201549251600080516020615f148339815191529361139393600181019260039091019190615c5c565b6101995461143d33612a4f565b101561145b5760405162461bcd60e51b8152600401610bff90615a89565b805161146f90610196906020840190614b96565b50600080516020615f9b83398151915261019660405161148f9190615984565b60405180910390a150565b60008181526101a3602052604090208054606091906114b890615e11565b80601f01602080910402602001604051908101604052809291908181526020018280546114e490615e11565b80156115315780601f1061150657610100808354040283529160200191611531565b820191906000526020600020905b81548152906001019060200180831161151457829003601f168201915b50505050509050919050565b611548335b82613a3b565b6115645760405162461bcd60e51b8152600401610bff90615b50565b610d30838383613b05565b600061157a836124c0565b82106115dc5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610bff565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6101995461161233612a4f565b10156116305760405162461bcd60e51b8152600401610bff90615a89565b600081815261019d60205260409081902060048101805460ff191660019081179091558154600283015493517f27e287a04e8befec97809c62380f0a300b68d9febe3485dbb08ac346001339949461148f949293929092019190615c99565b306001600160a01b037f00000000000000000000000053769b0ac8b16955feb09f8e2f23d904a9660a321614156116d85760405162461bcd60e51b8152600401610bff9061594a565b7f00000000000000000000000053769b0ac8b16955feb09f8e2f23d904a9660a326001600160a01b031661170a613c9e565b6001600160a01b0316146117305760405162461bcd60e51b8152600401610bff906159e4565b61173981613cba565b6040805160008082526020820190925261175591839190613ce9565b50565b6101995461176533612a4f565b10156117835760405162461bcd60e51b8152600401610bff90615a89565b61019e5482106117a55760405162461bcd60e51b8152600401610bff906159be565b600082815261019d602052604090206004015460ff16156117fb5760405162461bcd60e51b815260206004820152601060248201526f1c1bdb1b081dd85cc81c995b5bdd995960821b6044820152606401610bff565b61019f8290556101a0805460ff19168215159081179091556040805184815260ff909216151560208301527fe49485c76c12f1318b4a8bd0ac3db6d55b9b0ac0d57ba933b1f71ca817c581199101611393565b6101995461185b33612a4f565b10156118795760405162461bcd60e51b8152600401610bff90615a89565b60005b81811015610d30578061019d60008585858181106118aa57634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060020181905550600080516020615f1483398151915261019d60008585858181106118fa57634e487b7160e01b600052603260045260246000fd5b9050602002013581526020019081526020016000206000015461019d600086868681811061193857634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060010161019d600087878781811061197557634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060030161019d60008888888181106119b257634e487b7160e01b600052603260045260246000fd5b905060200201358152602001908152602001600020600201546040516119db9493929190615c5c565b60405180910390a1806119ed81615e4c565b91505061187c565b61019a54611a0233612a4f565b1015611a205760405162461bcd60e51b8152600401610bff90615a89565b82518114611a7a5760405162461bcd60e51b815260206004820152602160248201527f6c6973742073686f756c6420686176652073616d6520656e7472792d636f756e6044820152601d60fa1b6064820152608401610bff565b60005b8351811015611af857611ae6848281518110611aa957634e487b7160e01b600052603260045260246000fd5b6020026020010151848484818110611ad157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906109e89190614ec6565b80611af081615e4c565b915050611a7d565b50505050565b61019954611b0b33612a4f565b1015611b295760405162461bcd60e51b8152600401610bff90615a89565b8051611b3d90610195906020840190614b96565b50600080516020615f9b83398151915261019560405161148f9190615a4d565b610d3083838360405180602001604052806000815250612b39565b611b8133611542565b611be65760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b6064820152608401610bff565b61175581613e29565b600060608061019e548410611c165760405162461bcd60e51b8152600401610bff906159be565b600084815261019d602052604090206004015460ff1615611c495760405162461bcd60e51b8152600401610bff90615b2a565b6060611c54856120d4565b5050815191925060009190506001600160401b03811115611c8557634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611cae578160200160208202803683370190505b50905060005b8251811015611d4d5761019d60008881526020019081526020016000206007016000848381518110611cf657634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060030154828281518110611d3057634e487b7160e01b600052603260045260246000fd5b6020908102919091010152611d46600182615d8b565b9050611cb4565b50600095865261019d6020526040909520600601549590949350915050565b306001600160a01b037f00000000000000000000000053769b0ac8b16955feb09f8e2f23d904a9660a32161415611db55760405162461bcd60e51b8152600401610bff9061594a565b7f00000000000000000000000053769b0ac8b16955feb09f8e2f23d904a9660a326001600160a01b0316611de7613c9e565b6001600160a01b031614611e0d5760405162461bcd60e51b8152600401610bff906159e4565b611e1682613cba565b611e2282826001613ce9565b5050565b6000611e3160995490565b8210611e945760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610bff565b60998281548110611eb557634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000818152606760205260408120546001600160a01b031680610aff5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610bff565b60008181526101a4602090815260409182902080548351818402810184019094528084526060939283018282801561153157602002820191906000526020600020905b815481526020019060010190808311611f815750505050509050919050565b61019954611fad33612a4f565b1015611fcb5760405162461bcd60e51b8152600401610bff90615a89565b6120606101918054611fdc90615e11565b80601f016020809104026020016040519081016040528092919081815260200182805461200890615e11565b80156120555780601f1061202a57610100808354040283529160200191612055565b820191906000526020600020905b81548152906001019060200180831161203857829003601f168201915b505050505082613ebe565b6120a05760405162461bcd60e51b81526020600482015260116024820152701cdd185d19481b9bdd08185b1b1bddd959607a1b6044820152606401610bff565b80516120b490610191906020840190614b96565b50600080516020615f9b83398151915261019160405161148f9190615a1e565b600081815261019d6020526040812060050154606091829182918291815b8181101561214257600088815261019d6020908152604080832084845260070190915290206004015460ff16612130578261212c81615e4c565b9350505b8061213a81615e4c565b9150506120f2565b506000826001600160401b0381111561216b57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612194578160200160208202803683370190505b5090506000836001600160401b038111156121bf57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156121f257816020015b60608152602001906001900390816121dd5790505b5090506000846001600160401b0381111561221d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612246578160200160208202803683370190505b5090506000856001600160401b0381111561227157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561229a578160200160208202803683370190505b50905060005b858110156124ae5760008c815261019d6020908152604080832084845260070190915290206004015460ff1661249c57866122da81615dfa565b60008e815261019d602090815260408083208684526007019091529020548751919950915086908990811061231f57634e487b7160e01b600052603260045260246000fd5b60209081029190910181019190915260008d815261019d8252604080822084835260070190925220600101805461235590615e11565b80601f016020809104026020016040519081016040528092919081815260200182805461238190615e11565b80156123ce5780601f106123a3576101008083540402835291602001916123ce565b820191906000526020600020905b8154815290600101906020018083116123b157829003601f168201915b50505050508488815181106123f357634e487b7160e01b600052603260045260246000fd5b60209081029190910181019190915260008d815261019d825260408082208483526007019092522060020154835184908990811061244157634e487b7160e01b600052603260045260246000fd5b60209081029190910181019190915260008d815261019d825260408082208483526007019092522060030154825183908990811061248f57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b806124a681615e4c565b9150506122a0565b50929a91995097509095509350505050565b60006001600160a01b03821661252b5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610bff565b506001600160a01b031660009081526068602052604090205490565b336125506127a3565b6001600160a01b0316146125765760405162461bcd60e51b8152600401610bff90615ac0565b6125806000614007565b565b6101948054610df790615e11565b60006101995461259f33612a4f565b10156125bd5760405162461bcd60e51b8152600401610bff90615a89565b61019e54600081815261019d6020908152604090912082815584516125ea92600190920191860190614b96565b50600081815261019d6020526040908190206002810183905560048101805460ff19169055805491517fcd741d2d461c4fee0f259e59c0981bcde3c47a31123dd8a63a58ac86541de52c92612646929091600190910190615c43565b60405180910390a1600161019e60008282546126629190615d8b565b90915550909150505b919050565b61019a5461267d33612a4f565b101561269b5760405162461bcd60e51b8152600401610bff90615a89565b60005b8151811015611e22576126f66101a28383815181106126cd57634e487b7160e01b600052603260045260246000fd5b60200260200101516040516126e2919061572a565b908152602001604051809103902054613e29565b60006101a283838151811061271b57634e487b7160e01b600052603260045260246000fd5b6020026020010151604051612730919061572a565b9081526040519081900360200190205561274b600182615d8b565b905061269e565b6101995461275f33612a4f565b101561277d5760405162461bcd60e51b8152600401610bff90615a89565b600082815261019d6020908152604090912082516113f092600190920191840190614b96565b60c9546001600160a01b031690565b606060668054610b1490615e11565b60006101a283836040516127d6929190615746565b908152602001604051809103902054905092915050565b610199546127fa33612a4f565b10156128185760405162461bcd60e51b8152600401610bff90615a89565b600082815261019d60209081526040808320848452600781019092529182902060048101805460ff1916600190811790915591548154600283015494517f6d9e2a94f822af2b1b82f26088d84bf902197089414f34a9d9ad8101f962485c9561139395939492939092019190615ce1565b6101995461289633612a4f565b10156128b45760405162461bcd60e51b8152600401610bff90615a89565b60005b81811015611af857600084815261019d6020526040812082916007909101908585848181106128f657634e487b7160e01b600052603260045260246000fd5b6020908102929092013583525081810192909252604090810160009081206002019390935586835261019d90915281208054600080516020615f7b8339815191529290916007019086868681811061295e57634e487b7160e01b600052603260045260246000fd5b9050602002013581526020019081526020016000206000015461019d600088815260200190815260200160002060070160008787878181106129b057634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060010161019d60008981526020019081526020016000206007016000888888818110612a0157634e487b7160e01b600052603260045260246000fd5b90506020020135815260200190815260200160002060020154604051612a2a9493929190615ce1565b60405180910390a180612a3c81615e4c565b9150506128b7565b611e22338383614059565b610198546040516352ebc13f60e11b81526000916001600160a01b031690819063a5d7827e90612a83908690600401615785565b60206040518083038186803b158015612a9b57600080fd5b505afa158015612aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad39190615458565b9392505050565b61019954612ae733612a4f565b1015612b055760405162461bcd60e51b8152600401610bff90615a89565b8051612b1990610194906020840190614b96565b50600080516020615f9b83398151915261019460405161148f9190615af5565b612b433383613a3b565b612b5f5760405162461bcd60e51b8152600401610bff90615b50565b611af884848484614124565b61019954612b7833612a4f565b1015612b965760405162461bcd60e51b8152600401610bff90615a89565b6000612ba184612590565b9050612bad818461139f565b60005b8251811015612bfc57612bea82848381518110612bdd57634e487b7160e01b600052603260045260246000fd5b6020026020010151613221565b80612bf481615e4c565b915050612bb0565b5050505050565b6101918054610df790615e11565b600054610100900460ff16612c2c5760005460ff1615612c30565b303b155b612c935760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bff565b600054610100900460ff16158015612cb5576000805461ffff19166101011790555b612cfd6040518060400160405280600a815260200169766f74656f732e636f6d60b01b81525060405180604001604052806004815260200163564f544560e01b815250614157565b612d05614198565b612d0d6141d7565b612d15614198565b612d1d61420e565b600a61019955601461019a556006610197556040805180820190915260078082526618dc99585d195960ca1b6020909201918252612d5e9161019191614b96565b5061019880546001600160a01b0384166001600160a01b0319909116179055604080516080810182526006818301908152651bdc195b995960d21b606083015281528151808301835260078152661c995b5bdd995960ca1b602082810191909152820152905161019c90612ddf906618dc99585d195960ca1b815260070190565b908152604051908190036020019020612df9916002614c1a565b506040805160a081018252600760608201818152661cdd185c9d195960ca1b6080840152825282518084018452600981526818d85b98d95b1b195960ba1b6020808301919091528084019190915283518085018552918252661c995b5bdd995960ca1b90820152818301529051651bdc195b995960d21b815261019c90600601908152604051908190036020019020612e93916003614c73565b506040805160808101825260098183019081526818d85b98d95b1b195960ba1b60608301528152815180830183526005815264195b99195960da1b6020808301919091528201529051661cdd185c9d195960ca1b815261019c90600701908152604051908190036020019020612f0a916002614c1a565b5060408051606081018252600760208201908152661c995b5bdd995960ca1b82840152815290516818d85b98d95b1b195960ba1b815261019c90600901908152604051908190036020019020612f61916001614cc0565b5060408051606081018252600760208201908152661c995b5bdd995960ca1b828401528152905164195b99195960da1b815261019c90600501908152604051908190036020019020612fb4916001614cc0565b5060408051606081018252600760208201908152661c995b5bdd995960ca1b828401528152905161019c90612ff690661c995b5bdd995960ca1b815260070190565b908152604051908190036020019020613010916001614cc0565b506130206101a180546001019055565b8015611e22576000805461ff00191690555050565b6060613040826139b0565b6130a45760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610bff565b60006130bb60408051602081019091526000815290565b905060008151116130db5760405180602001604052806000815250612ad3565b806130e584614235565b6040516020016130f6929190615756565b6040516020818303038152906040529392505050565b61019a5461311933612a4f565b10156131375760405162461bcd60e51b8152600401610bff90615a89565b61315f6101a28360405161314b919061572a565b9081526020016040518091039020546139b0565b156131a95760405162461bcd60e51b815260206004820152601a602482015279766f746572496420616c726561647920686173206120766f746560301b6044820152606401610bff565b60006131b56101a15490565b90506131c66101a180546001019055565b6131d0828261434e565b806101a2846040516131e2919061572a565b90815260408051602092819003830190209290925560008381526101a38252919091208451611af892860190614b96565b6101968054610df790615e11565b6101995461322e33612a4f565b101561324c5760405162461bcd60e51b8152600401610bff90615a89565b600082815261019d60209081526040808320600581015480855260079091018352922091825582516132849260010191840190614b96565b50600082815261019d6020908152604080832060058101805480865260079092019093528184206002810191909155600401805460ff191690559054825290819020805491517fb3195bc367c77b97f6ac197202b7dbd50d797b6483ec23b93039dac027a6bb51926132fe92869260019190910190615cc2565b60405180910390a1600082815261019d6020526040812060050180549161332483615e4c565b91905055505050565b60005b613339336124c0565b811015610d305761335461334d338361156f565b8484610ec0565b61335f600182615d8b565b9050613330565b6101995461337333612a4f565b10156133915760405162461bcd60e51b8152600401610bff90615a89565b60405163804b2e9960e01b8152735b0ea5d91f64441d125caae993a59be7e30513339063804b2e99906133ce9061019b90869086906004016158ba565b60006040518083038186803b1580156133e657600080fd5b505af41580156133fa573d6000803e3d6000fd5b505050505050565b6060806060806000805b61019e5481101561345157600081815261019d602052604090206004015460ff1661343f578161343b81615e4c565b9250505b8061344981615e4c565b91505061340c565b506000816001600160401b0381111561347a57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156134a3578160200160208202803683370190505b5090506000826001600160401b038111156134ce57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561350157816020015b60608152602001906001900390816134ec5790505b5090506000836001600160401b0381111561352c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015613555578160200160208202803683370190505b5090506000846001600160401b0381111561358057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156135b357816020015b606081526020019060019003908161359e5790505b50905060005b61019e5481101561381857600081815261019d602052604090206004015460ff1661380657856135e881615dfa565b600083815261019d60205260409020548751919850915086908890811061361f57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505061019d6000828152602001908152602001600020600101805461364d90615e11565b80601f016020809104026020016040519081016040528092919081815260200182805461367990615e11565b80156136c65780601f1061369b576101008083540402835291602001916136c6565b820191906000526020600020905b8154815290600101906020018083116136a957829003601f168201915b50505050508487815181106136eb57634e487b7160e01b600052603260045260246000fd5b602002602001018190525061019d60008281526020019081526020016000206002015483878151811061372e57634e487b7160e01b600052603260045260246000fd5b60200260200101818152505061019d6000828152602001908152602001600020600301805461375c90615e11565b80601f016020809104026020016040519081016040528092919081815260200182805461378890615e11565b80156137d55780601f106137aa576101008083540402835291602001916137d5565b820191906000526020600020905b8154815290600101906020018083116137b857829003601f168201915b50505050508287815181106137fa57634e487b7160e01b600052603260045260246000fd5b60200260200101819052505b8061381081615e4c565b9150506135b9565b5092989197509550909350915050565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6040516352c4289f60e01b8152606090735b0ea5d91f64441d125caae993a59be7e3051333906352c4289f906138949061019b9086906004016158a1565b60006040518083038186803b1580156138ac57600080fd5b505af41580156138c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aff9190810190615081565b336138f16127a3565b6001600160a01b0316146139175760405162461bcd60e51b8152600401610bff90615ac0565b6001600160a01b03811661397c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bff565b61175581614007565b3b151590565b60006001600160e01b0319821663780e9d6360e01b1480610aff5750610aff82614368565b6000908152606760205260409020546001600160a01b0316151590565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613a0282611ec7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000613a46826139b0565b613aa75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610bff565b6000613ab283611ec7565b9050806001600160a01b0316846001600160a01b03161480613aed5750836001600160a01b0316613ae284610b97565b6001600160a01b0316145b80613afd5750613afd8185613828565b949350505050565b826001600160a01b0316613b1882611ec7565b6001600160a01b031614613b805760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610bff565b6001600160a01b038216613be25760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610bff565b613bed8383836143b8565b613bf86000826139cd565b6001600160a01b0383166000908152606860205260408120805460019290613c21908490615db7565b90915550506001600160a01b0382166000908152606860205260408120805460019290613c4f908490615d8b565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020615f5b83398151915291a4505050565b600080516020615ef4833981519152546001600160a01b031690565b33613cc36127a3565b6001600160a01b0316146117555760405162461bcd60e51b8152600401610bff90615ac0565b6000613cf3613c9e565b9050613cfe846143c3565b600083511180613d0b5750815b15613d1c57613d1a8484614456565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff16612bfc57805460ff19166001178155604051613d97908690613d68908590602401615785565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052614456565b50805460ff19168155613da8613c9e565b6001600160a01b0316826001600160a01b031614613e205760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610bff565b612bfc85614541565b6000613e3482611ec7565b9050613e42816000846143b8565b613e4d6000836139cd565b6001600160a01b0381166000908152606860205260408120805460019290613e76908490615db7565b909155505060008281526067602052604080822080546001600160a01b0319169055518391906001600160a01b03841690600080516020615f5b833981519152908390a45050565b6000613eca8383614581565b15613ed757506001610aff565b60005b61019c84604051613eeb919061572a565b90815260405190819003602001902054811015613ffd57613fdc8361019c86604051613f17919061572a565b90815260200160405180910390208381548110613f4457634e487b7160e01b600052603260045260246000fd5b906000526020600020018054613f5990615e11565b80601f0160208091040260200160405190810160405280929190818152602001828054613f8590615e11565b8015613fd25780601f10613fa757610100808354040283529160200191613fd2565b820191906000526020600020905b815481529060010190602001808311613fb557829003601f168201915b5050505050614581565b15613feb576001915050610aff565b80613ff581615e4c565b915050613eda565b5060009392505050565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156140b75760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610bff565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61412f848484613b05565b61413b848484846145da565b611af85760405162461bcd60e51b8152600401610bff906158f8565b600054610100900460ff1661417e5760405162461bcd60e51b8152600401610bff90615ba1565b6141866146e7565b61418e6146e7565b611e22828261470e565b600054610100900460ff166141bf5760405162461bcd60e51b8152600401610bff90615ba1565b6141c76146e7565b6141cf6146e7565b6125806146e7565b600054610100900460ff166141fe5760405162461bcd60e51b8152600401610bff90615ba1565b6142066146e7565b61258061475c565b600054610100900460ff166141c75760405162461bcd60e51b8152600401610bff90615ba1565b6060816142595750506040805180820190915260018152600360fc1b602082015290565b8160005b8115614283578061426d81615e4c565b915061427c9050600a83615da3565b915061425d565b6000816001600160401b038111156142ab57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156142d5576020820181803683370190505b5090505b8415613afd576142ea600183615db7565b91506142f7600a86615e67565b614302906030615d8b565b60f81b81838151811061432557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350614347600a86615da3565b94506142d9565b611e2282826040518060200160405280600081525061478c565b60006001600160e01b031982166380ac58cd60e01b148061439957506001600160e01b03198216635b5e139f60e01b145b80610aff57506301ffc9a760e01b6001600160e01b0319831614610aff565b610d308383836147bf565b803b6144275760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bff565b600080516020615ef483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6144b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610bff565b600080846001600160a01b0316846040516144d0919061572a565b600060405180830381855af49150503d806000811461450b576040519150601f19603f3d011682016040523d82523d6000602084013e614510565b606091505b50915091506145388282604051806060016040528060278152602001615f3460279139614877565b95945050505050565b61454a816143c3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600081604051602001614594919061572a565b60405160208183030381529060405280519060200120836040516020016145bb919061572a565b6040516020818303038152906040528051906020012014905092915050565b60006001600160a01b0384163b156146dc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061461e903390899088908890600401615799565b602060405180830381600087803b15801561463857600080fd5b505af1925050508015614668575060408051601f3d908101601f191682019092526146659181019061527f565b60015b6146c2573d808015614696576040519150601f19603f3d011682016040523d82523d6000602084013e61469b565b606091505b5080516146ba5760405162461bcd60e51b8152600401610bff906158f8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613afd565b506001949350505050565b600054610100900460ff166125805760405162461bcd60e51b8152600401610bff90615ba1565b600054610100900460ff166147355760405162461bcd60e51b8152600401610bff90615ba1565b8151614748906065906020850190614b96565b508051610d30906066906020840190614b96565b600054610100900460ff166147835760405162461bcd60e51b8152600401610bff90615ba1565b61258033614007565b61479683836148b0565b6147a360008484846145da565b610d305760405162461bcd60e51b8152600401610bff906158f8565b6001600160a01b03831661481a5761481581609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b61483d565b816001600160a01b0316836001600160a01b03161461483d5761483d83826149dc565b6001600160a01b03821661485457610d3081614a79565b826001600160a01b0316826001600160a01b031614610d3057610d308282614b52565b60608315614886575081612ad3565b8251156148965782518084602001fd5b8160405162461bcd60e51b8152600401610bff91906158e5565b6001600160a01b0382166149065760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610bff565b61490f816139b0565b1561495b5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610bff565b614967600083836143b8565b6001600160a01b0382166000908152606860205260408120805460019290614990908490615d8b565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020615f5b833981519152908290a45050565b600060016149e9846124c0565b6149f39190615db7565b600083815260986020526040902054909150808214614a46576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b609954600090614a8b90600190615db7565b6000838152609a602052604081205460998054939450909284908110614ac157634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060998381548110614af057634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480614b3657634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000614b5d836124c0565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b828054614ba290615e11565b90600052602060002090601f016020900481019282614bc45760008555614c0a565b82601f10614bdd57805160ff1916838001178555614c0a565b82800160010185558215614c0a579182015b82811115614c0a578251825591602001919060010190614bef565b50614c16929150614d0d565b5090565b828054828255906000526020600020908101928215614c67579160200282015b82811115614c675782518051614c57918491602090910190614b96565b5091602001919060010190614c3a565b50614c16929150614d22565b828054828255906000526020600020908101928215614c67579160200282015b82811115614c675782518051614cb0918491602090910190614b96565b5091602001919060010190614c93565b828054828255906000526020600020908101928215614c67579160200282015b82811115614c675782518051614cfd918491602090910190614b96565b5091602001919060010190614ce0565b5b80821115614c165760008155600101614d0e565b80821115614c16576000614d368282614d3f565b50600101614d22565b508054614d4b90615e11565b6000825580601f10614d5b575050565b601f0160209004906000526020600020908101906117559190614d0d565b80356001600160a01b038116811461266b57600080fd5b60008083601f840112614da1578182fd5b5081356001600160401b03811115614db7578182fd5b6020830191508360208260051b8501011115614dd257600080fd5b9250929050565b600082601f830112614de9578081fd5b81356020614dfe614df983615d41565b615d11565b80838252828201915082860187848660051b8901011115614e1d578586fd5b855b85811015614e5d5781356001600160401b03811115614e3c578788fd5b614e4a8a87838c0101614e7a565b8552509284019290840190600101614e1f565b5090979650505050505050565b8035801515811461266b57600080fd5b600082601f830112614e8a578081fd5b8135614e98614df982615d64565b818152846020838601011115614eac578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215614ed7578081fd5b612ad382614d79565b60008060408385031215614ef2578081fd5b614efb83614d79565b9150614f0960208401614d79565b90509250929050565b600080600060608486031215614f26578081fd5b614f2f84614d79565b9250614f3d60208501614d79565b9150604084013590509250925092565b60008060008060808587031215614f62578081fd5b614f6b85614d79565b9350614f7960208601614d79565b92506040850135915060608501356001600160401b03811115614f9a578182fd5b614fa687828801614e7a565b91505092959194509250565b60008060408385031215614fc4578182fd5b614fcd83614d79565b9150614f0960208401614e6a565b60008060408385031215614fed578182fd5b614ff683614d79565b915060208301356001600160401b03811115615010578182fd5b61501c85828601614e7a565b9150509250929050565b60008060408385031215615038578182fd5b61504183614d79565b946020939093013593505050565b600060208284031215615060578081fd5b81356001600160401b03811115615075578182fd5b613afd84828501614dd9565b60006020808385031215615093578182fd5b82516001600160401b03808211156150a9578384fd5b818501915085601f8301126150bc578384fd5b81516150ca614df982615d41565b80828252858201915085850189878560051b88010111156150e9578788fd5b875b8481101561515a5781518681111561510157898afd5b8701603f81018c1361511157898afd5b888101516040615123614df983615d64565b8281528e82848601011115615136578c8dfd5b615145838d8301848701615dce565b875250505092870192908701906001016150eb565b50909998505050505050505050565b60008060006040848603121561517d578081fd5b83356001600160401b0380821115615193578283fd5b61519f87838801614dd9565b945060208601359150808211156151b4578283fd5b506151c186828701614d90565b9497909650939450505050565b600080604083850312156151e0578182fd5b82356001600160401b03808211156151f6578384fd5b61520286838701614dd9565b93506020850135915080821115615217578283fd5b5061501c85828601614dd9565b60008060208385031215615236578182fd5b82356001600160401b0381111561524b578283fd5b61525785828601614d90565b90969095509350505050565b600060208284031215615274578081fd5b8135612ad381615ebd565b600060208284031215615290578081fd5b8151612ad381615ebd565b600080602083850312156152ad578182fd5b82356001600160401b03808211156152c3578384fd5b818501915085601f8301126152d6578384fd5b8135818111156152e4578485fd5b8660208285010111156152f5578485fd5b60209290920196919550909350505050565b600060208284031215615318578081fd5b81356001600160401b0381111561532d578182fd5b613afd84828501614e7a565b6000806040838503121561534b578182fd5b82356001600160401b03811115615360578283fd5b61536c85828601614e7a565b925050614f0960208401614d79565b60008060006060848603121561538f578081fd5b83356001600160401b03808211156153a5578283fd5b6153b187838801614e7a565b945060208601359150808211156153c6578283fd5b6153d287838801614e7a565b935060408601359150808211156153e7578283fd5b506153f486828701614dd9565b9150509250925092565b60008060408385031215615410578182fd5b82356001600160401b03811115615425578283fd5b61543185828601614e7a565b95602094909401359450505050565b600060208284031215615451578081fd5b5035919050565b600060208284031215615469578081fd5b5051919050565b600080600060408486031215615484578081fd5b8335925060208401356001600160401b038111156154a0578182fd5b6151c186828701614d90565b600080604083850312156154be578182fd5b82359150614f0960208401614e6a565b600080604083850312156154e0578182fd5b8235915060208301356001600160401b03811115615010578182fd5b6000806040838503121561550e578182fd5b50508035926020909101359150565b600080600060608486031215615531578081fd5b833592506020840135915060408401356001600160401b03811115615554578182fd5b6153f486828701614e7a565b600080600060608486031215615574578081fd5b505081359360208301359350604090920135919050565b600081518084526020808501808196508360051b81019150828601855b858110156155d25782840389526155c0848351615660565b988501989350908401906001016155a8565b5091979650505050505050565b600081518084526020808501808196508360051b81019150828601855b858110156155d2578284038952615614848351615660565b988501989350908401906001016155fc565b6000815180845260208085019450808401835b8381101561565557815187529582019590820190600101615639565b509495945050505050565b60008151808452615678816020860160208601615dce565b601f01601f19169290920160200192915050565b8054600090600181811c90808316806156a657607f831692505b60208084108214156156c657634e487b7160e01b86526022600452602486fd5b838852602088018280156156e157600181146156f25761571d565b60ff1987168252828201975061571d565b60008981526020902060005b87811015615717578154848201529086019084016156fe565b83019850505b5050505050505092915050565b6000825161573c818460208701615dce565b9190910192915050565b8183823760009101908152919050565b60008351615768818460208801615dce565b83519083019061577c818360208801615dce565b01949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906157cc90830184615660565b9695505050505050565b602081526000612ad3602083018461558b565b602081526000612ad36020830184615626565b60808152600061580f6080830187615626565b8281036020840152615821818761558b565b905082810360408401526158358186615626565b90508281036060840152615849818561558b565b979650505050505050565b6080815260006158676080830187615626565b8281036020840152615879818761558b565b9050828103604084015261588d8186615626565b905082810360608401526158498185615626565b828152604060208201526000613afd60408301846155df565b8381526060602082015260006158d360608301856155df565b82810360408401526157cc81856155df565b602081526000612ad36020830184615660565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602c90820152600080516020615ed483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60408152601060408201526f757269566f746572526567697374727960801b6060820152608060208201526000612ad3608083018461568c565b6020808252600c908201526b1a5b9d985b1a59081c1bdb1b60a21b604082015260600190565b6020808252602c90820152600080516020615ed483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b604081526005604082015264737461746560d81b6060820152608060208201526000612ad3608083018461568c565b604081526012604082015271757269507269766174654d6574616461746160701b6060820152608060208201526000612ad3608083018461568c565b6020808252601f908201527f757365722068617320696e76616c6964206f7267616e697a657220726f6c6500604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60408152600b60408201526a7572694d6574616461746160a81b6060820152608060208201526000612ad3608083018461568c565b6020808252600c908201526b1c995b5bdd9959081c1bdb1b60a21b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b838152606060208201526000615c056060830185615626565b82810360408401526157cc8185615626565b848152608060208201526000615c306080830186615660565b6040830194909452506060015292915050565b828152604060208201526000613afd604083018461568c565b848152608060208201526000615c75608083018661568c565b8281036040840152615c87818661568c565b91505082606083015295945050505050565b838152606060208201526000615cb2606083018561568c565b9050826040830152949350505050565b838152826020820152606060408201526000614538606083018461568c565b848152836020820152608060408201526000615d00608083018561568c565b905082606083015295945050505050565b604051601f8201601f191681016001600160401b0381118282101715615d3957615d39615ea7565b604052919050565b60006001600160401b03821115615d5a57615d5a615ea7565b5060051b60200190565b60006001600160401b03821115615d7d57615d7d615ea7565b50601f01601f191660200190565b60008219821115615d9e57615d9e615e7b565b500190565b600082615db257615db2615e91565b500490565b600082821015615dc957615dc9615e7b565b500390565b60005b83811015615de9578181015183820152602001615dd1565b83811115611af85750506000910152565b600081615e0957615e09615e7b565b506000190190565b600181811c90821680615e2557607f821691505b60208210811415615e4657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615e6057615e60615e7b565b5060010190565b600082615e7657615e76615e91565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461175557600080fdfe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcd84487b653f8ac649590c7448e4f3c75619bfea916ec87fa65acc2f4836386ff416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef608e229dcea3d7ffffba95e0156bb81278a99d8c8369b4a93106b6f4d6f56a0f469de3b344361a973cff6fdeebc9d7c0ce4b5407c4810694199b73f2f9d3f74da26469706673582212202f3d7c164cc4bdc00ea055563ebef0bc3ffea885aa3905bb18519b474fd077cf64736f6c63430008040033" }, "0x7df66c8458bf9d46ebda38ad8c189c29456c4b67": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b602081526000825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220365cbf48ddf4e49fd01aa1ec509fdddeec21e28d954bf01a271d40be2668bde064736f6c63430008040033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000198": "0x000000000000000000000000f0218538d5d6dd9f7e8aeb93873f5ee633f823a6", @@ -29,19 +28,16 @@ }, "0xa96f26a25e7ee5f42f533930cce991ccaa92b784": { "balance": "0x0", - "nonce": 0, - "code": "0x60806040526004361061017e5760003560e01c80630e51d8bd1461018357806318a962dc146101ae57806335ac6ec6146101c55780633659cfe6146101e75780633d1e7b261461020757806349068c71146102275780634ea89f5c1461024a5780634f1ef2861461026a57806354fd4d501461027d57806356be7d22146102935780635f72cb7f146102b3578063694b98ce146102c8578063715018a6146102e857806372271de9146102fd5780637ef09bca146103125780638129fc1c1461034257806386a01aac146103575780638da5cb5b1461036c5780639395d8481461038e578063a15db0ff146103ae578063a1c83c6a146103ce578063a5d7827e146103ee578063af640d0f1461040e578063af7acc6114610423578063bba1005414610443578063c80c073814610463578063c89c188b14610478578063d4093c071461048d578063e08fc5a4146104ad578063edb7b3dc146104cd578063f2c78e49146104ed578063f2fde38b1461051a578063fc26e7e11461053a575b600080fd5b34801561018f57600080fd5b5061019861054f565b6040516101a591906124e9565b60405180910390f35b3480156101ba57600080fd5b506101c36105dd565b005b3480156101d157600080fd5b506101da61067b565b6040516101a591906123ed565b3480156101f357600080fd5b506101c3610202366004611f65565b61068c565b34801561021357600080fd5b506101c361022236600461220c565b610755565b34801561023357600080fd5b5061023c600081565b6040519081526020016101a5565b34801561025657600080fd5b506101c3610265366004611f65565b6107e4565b6101c3610278366004611f7f565b6108bf565b34801561028957600080fd5b5061023c60d35481565b34801561029f57600080fd5b506101c36102ae366004612034565b610979565b3480156102bf57600080fd5b5061023c600181565b3480156102d457600080fd5b506101c36102e3366004611f65565b610aca565b3480156102f457600080fd5b506101c3610b27565b34801561030957600080fd5b50610198610b60565b34801561031e57600080fd5b5061033261032d366004611f65565b610b6d565b60405190151581526020016101a5565b34801561034e57600080fd5b506101c3610b80565b34801561036357600080fd5b506101da610c80565b34801561037857600080fd5b50610381610c8c565b6040516101a591906123c0565b34801561039a57600080fd5b506101c36103a9366004611f65565b610c9b565b3480156103ba57600080fd5b506101986103c9366004611f65565b610d9e565b3480156103da57600080fd5b5061023c6103e9366004611f65565b610e4d565b3480156103fa57600080fd5b5061023c610409366004611f65565b610e83565b34801561041a57600080fd5b50610198610ec9565b34801561042f57600080fd5b506101c361043e36600461220c565b610ed6565b34801561044f57600080fd5b5061023c61045e3660046121cd565b610f5a565b34801561046f57600080fd5b5061023c600381565b34801561048457600080fd5b506101c3610f9b565b34801561049957600080fd5b506101c36104a8366004611fdd565b610fe8565b3480156104b957600080fd5b506101c36104c8366004612177565b611164565b3480156104d957600080fd5b506101c36104e8366004611f65565b611226565b3480156104f957600080fd5b5061050d61050836600461205d565b611283565b6040516101a5919061243a565b34801561052657600080fd5b506101c3610535366004611f65565b611314565b34801561054657600080fd5b5061023c600281565b60d2805461055c906127be565b80601f0160208091040260200160405190810160405280929190818152602001828054610588906127be565b80156105d55780601f106105aa576101008083540402835291602001916105d5565b820191906000526020600020905b8154815290600101906020018083116105b857829003601f168201915b505050505081565b6105e633610b6d565b61060b5760405162461bcd60e51b8152600401610602906124fc565b60405180910390fd5b600361061633610e4d565b1461066e5760405162461bcd60e51b815260206004820152602260248201527f6d656d62657273686970206d75737420626520696e2061637469766520737461604482015261746560f01b6064820152608401610602565b6106793360026113b7565b565b60606106876065611401565b905090565b306001600160a01b037f000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b7841614156106d55760405162461bcd60e51b815260040161060290612561565b7f000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b7846001600160a01b0316610707611415565b6001600160a01b03161461072d5760405162461bcd60e51b8152600401610602906125de565b61073681611431565b6040805160008082526020820190925261075291839190611460565b50565b60695461076133610e83565b101561077f5760405162461bcd60e51b815260040161060290612654565b600361078a33610e4d565b146107a75760405162461bcd60e51b81526004016106029061252a565b80516107ba9060d2906020840190611cd0565b506000805160206128b783398151915260d26040516107d99190612618565b60405180910390a150565b6107ed33610b6d565b6108095760405162461bcd60e51b8152600401610602906124fc565b336001600160a01b0382161480610826575061082481610b6d565b155b6108725760405162461bcd60e51b815260206004820181905260248201527f757365722063616e206e6f742068617665206d756c7469706c6520726f6c65736044820152606401610602565b600161087d33610e4d565b1461089a5760405162461bcd60e51b81526004016106029061259b565b336001600160a01b038216146108b4576108b433826115a7565b6107528160036113b7565b306001600160a01b037f000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b7841614156109085760405162461bcd60e51b815260040161060290612561565b7f000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b7846001600160a01b031661093a611415565b6001600160a01b0316146109605760405162461bcd60e51b8152600401610602906125de565b61096982611431565b61097582826001611460565b5050565b606a5461098533610e83565b10156109a35760405162461bcd60e51b815260040161060290612654565b60036109ae33610e4d565b146109cb5760405162461bcd60e51b81526004016106029061252a565b6109d482610b6d565b6109f05760405162461bcd60e51b8152600401610602906124fc565b336001600160a01b0383161415610a455760405162461bcd60e51b8152602060048201526019602482015278757365722063616e206e6f7420736574206f776e20726f6c6560381b6044820152606401610602565b6003610a5083610e4d565b1480610a6457506001610a6283610e4d565b145b610ac05760405162461bcd60e51b815260206004820152602760248201527f6d656d626572736869702063616e206e6f7420626520696e20696e61637469766044820152666520737461746560c81b6064820152608401610602565b61097582826116a4565b606a54610ad633610e83565b1015610af45760405162461bcd60e51b815260040161060290612654565b6003610aff33610e4d565b14610b1c5760405162461bcd60e51b81526004016106029061252a565b61097560d5826116f1565b33610b30610c8c565b6001600160a01b031614610b565760405162461bcd60e51b81526004016106029061268b565b6106796000611706565b60d1805461055c906127be565b6000610b7a606583611758565b92915050565b600054610100900460ff16610b9b5760005460ff1615610b9f565b303b155b610c025760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610602565b600054610100900460ff16158015610c24576000805461ffff19166101011790555b610c2e600a606955565b610c386014606a55565b610c6733604051806040016040528060088152602001673232b83637bcb2b960c11b815250610100600361176d565b600360d3558015610752576000805461ff001916905550565b606061068760d5611401565b6033546001600160a01b031690565b606a54610ca733610e83565b1015610cc55760405162461bcd60e51b815260040161060290612654565b6003610cd033610e4d565b14610ced5760405162461bcd60e51b81526004016106029061252a565b610cf681610b6d565b610d125760405162461bcd60e51b8152600401610602906124fc565b6003610d1d82610e4d565b1480610d3157506001610d2f82610e4d565b145b610d935760405162461bcd60e51b815260206004820152602d60248201527f6d656d62657273686970206d75737420626520696e2070656e64696e67206f7260448201526c2061637469766520737461746560981b6064820152608401610602565b6107528160026113b7565b6001600160a01b0381166000908152606760205260409020600301805460609190610dc8906127be565b80601f0160208091040260200160405190810160405280929190818152602001828054610df4906127be565b8015610e415780601f10610e1657610100808354040283529160200191610e41565b820191906000526020600020905b815481529060010190602001808311610e2457829003601f168201915b50505050509050919050565b6000610e5882610b6d565b610e6457506000919050565b506001600160a01b031660009081526067602052604090206001015490565b6000610e8e82610b6d565b610eaa5760405162461bcd60e51b8152600401610602906124fc565b506001600160a01b031660009081526067602052604090206002015490565b60d0805461055c906127be565b606954610ee233610e83565b1015610f005760405162461bcd60e51b815260040161060290612654565b6003610f0b33610e4d565b14610f285760405162461bcd60e51b81526004016106029061252a565b8051610f3b9060d1906020840190611cd0565b506000805160206128b783398151915260d16040516107d991906126c0565b60008060688484604051610f6f929190612341565b908152604051908190036020019020546001600160a01b03169050610f9381610e4d565b949350505050565b610fa433610b6d565b610fc05760405162461bcd60e51b8152600401610602906124fc565b6001610fcb33610e4d565b1461066e5760405162461bcd60e51b81526004016106029061259b565b606a54610ff433610e83565b10156110125760405162461bcd60e51b815260040161060290612654565b600361101d33610e4d565b1461103a5760405162461bcd60e51b81526004016106029061252a565b61104384610b6d565b1561108f5760405162461bcd60e51b815260206004820152601c60248201527b3ab9b2b91034b99030b63932b0b23c9030b71037b933b0b734bd32b960211b6044820152606401610602565b600061109b8484610f5a565b14806110b0575060026110ae8484610f5a565b145b6111195760405162461bcd60e51b815260206004820152603460248201527f6578697374696e67206d656d6265727368697020696473206e65656420746f20604482015273626520696e20696e61637469766520737461746560601b6064820152608401610602565b61115e8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506001915061176d9050565b50505050565b606a5461117033610e83565b101561118e5760405162461bcd60e51b815260040161060290612654565b600361119933610e4d565b146111b65760405162461bcd60e51b81526004016106029061252a565b60405163804b2e9960e01b8152735b0ea5d91f64441d125caae993a59be7e30513339063804b2e99906111f29060d490869086906004016124b4565b60006040518083038186803b15801561120a57600080fd5b505af415801561121e573d6000803e3d6000fd5b505050505050565b606a5461123233610e83565b10156112505760405162461bcd60e51b815260040161060290612654565b600361125b33610e4d565b146112785760405162461bcd60e51b81526004016106029061252a565b61097560d5826118ea565b6040516352c4289f60e01b8152606090735b0ea5d91f64441d125caae993a59be7e3051333906352c4289f906112c09060d490869060040161249b565b60006040518083038186803b1580156112d857600080fd5b505af41580156112ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b7a919081019061208f565b3361131d610c8c565b6001600160a01b0316146113435760405162461bcd60e51b81526004016106029061268b565b6001600160a01b0381166113a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610602565b61075281611706565b3b151590565b6001600160a01b0382166000908152606760205260409081902060010182905551600080516020612830833981519152906113f590849084906123d4565b60405180910390a15050565b6060600061140e836118ff565b9392505050565b600080516020612870833981519152546001600160a01b031690565b3361143a610c8c565b6001600160a01b0316146107525760405162461bcd60e51b81526004016106029061268b565b600061146a611415565b90506114758461195a565b6000835111806114825750815b156114935761149184846119ed565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff166115a057805460ff1916600117815560405161150e9086906114df9085906024016123c0565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b1790526119ed565b50805460ff1916815561151f611415565b6001600160a01b0316826001600160a01b0316146115975760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610602565b6115a085611ad8565b5050505050565b6001600160a01b038083166000908152606760205260408082209284168252902081548155600180830154908201556002808301549082015560038083018054918301916115f4906127be565b6115ff929190611d54565b5061160f915060659050836118ea565b5061161b6065826116f1565b506001600160a01b038116600090815260676020526040908190209051829160689161164a9160030190612351565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b039485161790559184166000908152606790915290812081815560018101829055600281018290559061115e6003830182611dcf565b6001600160a01b03821660009081526067602052604090819020600281018390559051600080516020612810833981519152906116e490859085906123d4565b60405180910390a1505050565b600061140e836001600160a01b038416611b18565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061140e836001600160a01b038416611b62565b600060688460405161177f9190612325565b908152604051908190036020019020546001600160a01b031690506117a56065826118ea565b506001600160a01b03811660009081526067602052604081208181556001810182905560028101829055906117dd6003830182611dcf565b5050606b546040516001600160a01b03909116906068906117ff908790612325565b52506001600160a01b038516600090815260676020908152604090912060028101859055600181018490558551909161183f916003840191880190611cd0565b50856068866040516118519190612325565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b031990921691909117905561188b6065876116f1565b506000805160206128108339815191528682600201546040516118af9291906123d4565b60405180910390a16000805160206128308339815191528682600101546040516118da9291906123d4565b60405180910390a1505050505050565b600061140e836001600160a01b038416611b7a565b606081600001805480602002602001604051908101604052809291908181526020018280548015610e4157602002820191906000526020600020905b81548152602001906001019080831161193b5750505050509050919050565b803b6119be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610602565b60008051602061287083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b611a4c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610602565b600080846001600160a01b031684604051611a679190612325565b600060405180830381855af49150503d8060008114611aa2576040519150601f19603f3d011682016040523d82523d6000602084013e611aa7565b606091505b5091509150611acf828260405180606001604052806027815260200161289060279139611c97565b95945050505050565b611ae18161195a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000611b248383611b62565b611b5a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b7a565b506000610b7a565b60009081526001919091016020526040902054151590565b60008181526001830160205260408120548015611c8d576000611b9e60018361276f565b8554909150600090611bb29060019061276f565b9050818114611c33576000866000018281548110611be057634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611c1157634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c5257634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b7a565b6000915050610b7a565b60608315611ca657508161140e565b825115611cb65782518084602001fd5b8160405162461bcd60e51b815260040161060291906124e9565b828054611cdc906127be565b90600052602060002090601f016020900481019282611cfe5760008555611d44565b82601f10611d1757805160ff1916838001178555611d44565b82800160010185558215611d44579182015b82811115611d44578251825591602001919060010190611d29565b50611d50929150611e05565b5090565b828054611d60906127be565b90600052602060002090601f016020900481019282611d825760008555611d44565b82601f10611d935780548555611d44565b82800160010185558215611d4457600052602060002091601f016020900482015b82811115611d44578254825591600101919060010190611db4565b508054611ddb906127be565b6000825580601f10611deb575050565b601f01602090049060005260206000209081019061075291905b5b80821115611d505760008155600101611e06565b6000611e2d611e2884612748565b6126f5565b9050828152838383011115611e4157600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114611e6f57600080fd5b919050565b600082601f830112611e84578081fd5b81356020611e94611e2883612725565b80838252828201915082860187848660051b8901011115611eb3578586fd5b855b85811015611ef35781356001600160401b03811115611ed2578788fd5b611ee08a87838c0101611f46565b8552509284019290840190600101611eb5565b5090979650505050505050565b60008083601f840112611f11578182fd5b5081356001600160401b03811115611f27578182fd5b602083019150836020828501011115611f3f57600080fd5b9250929050565b600082601f830112611f56578081fd5b61140e83833560208501611e1a565b600060208284031215611f76578081fd5b61140e82611e58565b60008060408385031215611f91578081fd5b611f9a83611e58565b915060208301356001600160401b03811115611fb4578182fd5b8301601f81018513611fc4578182fd5b611fd385823560208401611e1a565b9150509250929050565b60008060008060608587031215611ff2578182fd5b611ffb85611e58565b935060208501356001600160401b03811115612015578283fd5b61202187828801611f00565b9598909750949560400135949350505050565b60008060408385031215612046578182fd5b61204f83611e58565b946020939093013593505050565b60006020828403121561206e578081fd5b81356001600160401b03811115612083578182fd5b610f9384828501611e74565b600060208083850312156120a1578182fd5b82516001600160401b03808211156120b7578384fd5b818501915085601f8301126120ca578384fd5b81516120d8611e2882612725565b80828252858201915085850189878560051b88010111156120f7578788fd5b875b848110156121685781518681111561210f57898afd5b8701603f81018c1361211f57898afd5b888101516040612131611e2883612748565b8281528e82848601011115612144578c8dfd5b612153838d8301848701612792565b875250505092870192908701906001016120f9565b50909998505050505050505050565b60008060408385031215612189578182fd5b82356001600160401b038082111561219f578384fd5b6121ab86838701611e74565b935060208501359150808211156121c0578283fd5b50611fd385828601611e74565b600080602083850312156121df578182fd5b82356001600160401b038111156121f4578283fd5b61220085828601611f00565b90969095509350505050565b60006020828403121561221d578081fd5b81356001600160401b03811115612232578182fd5b610f9384828501611f46565b6000815180845260208085019450848260051b8601828601855b85811015611ef3578383038952612270838351612282565b98850198925090840190600101612258565b6000815180845261229a816020860160208601612792565b601f01601f19169290920160200192915050565b600081546122bb816127be565b8085526020600183811680156122d857600181146122ec5761231a565b60ff1985168884015260408801955061231a565b866000528260002060005b858110156123125781548a82018601529083019084016122f7565b890184019650505b505050505092915050565b60008251612337818460208701612792565b9190910192915050565b8183823760009101908152919050565b600080835461235f816127be565b600182811680156123775760018114612388576123b4565b60ff198416875282870194506123b4565b8786526020808720875b858110156123ab5781548a820152908401908201612392565b50505082870194505b50929695505050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561242e5783516001600160a01b031683529284019291840191600101612409565b50909695505050505050565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b8281101561248e57603f1988860301845261247c858351612282565b94509285019290850190600101612460565b5092979650505050505050565b828152604060208201526000610f93604083018461223e565b8381526060602082015260006124cd606083018561223e565b82810360408401526124df818561223e565b9695505050505050565b60208152600061140e6020830184612282565b6020808252601490820152733ab9b2b91034b99037379037b933b0b734bd32b960611b604082015260600190565b6020808252601f908201527f757365722068617320616e20696e616374697665206d656d6265727368697000604082015260600190565b6020808252602c9082015260008051602061285083398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60208082526023908201527f6d656d62657273686970206d75737420626520696e2070656e64696e6720737460408201526261746560e81b606082015260800190565b6020808252602c9082015260008051602061285083398151915260408201526b6163746976652070726f787960a01b606082015260800190565b604081526012604082015271757269507269766174654d6574616461746160701b606082015260806020820152600061140e60808301846122ae565b6020808252601f908201527f757365722068617320696e76616c6964206f7267616e697a657220726f6c6500604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60408152600b60408201526a7572694d6574616461746160a81b606082015260806020820152600061140e60808301846122ae565b604051601f8201601f191681016001600160401b038111828210171561271d5761271d6127f9565b604052919050565b60006001600160401b0382111561273e5761273e6127f9565b5060051b60200190565b60006001600160401b03821115612761576127616127f9565b50601f01601f191660200190565b60008282101561278d57634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156127ad578181015183820152602001612795565b8381111561115e5750506000910152565b600181811c908216806127d257607f821691505b602082108114156127f357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fdfeaf6cbd088e77f7f0305956d537058ebce2dda08960628863f43154012aec6ddb8f08df50ee1bcbe3d629fa930c1bbff31b0c53c5b0e22303c027b464e2b808f246756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564469de3b344361a973cff6fdeebc9d7c0ce4b5407c4810694199b73f2f9d3f74da2646970667358221220ccddd5def20ebfbc88605768a355daea6488c0e2cae7a0efa412c1a9e99a7cc064736f6c63430008040033", - "storage": {} + "energy": "0x0", + "code": "0x60806040526004361061017e5760003560e01c80630e51d8bd1461018357806318a962dc146101ae57806335ac6ec6146101c55780633659cfe6146101e75780633d1e7b261461020757806349068c71146102275780634ea89f5c1461024a5780634f1ef2861461026a57806354fd4d501461027d57806356be7d22146102935780635f72cb7f146102b3578063694b98ce146102c8578063715018a6146102e857806372271de9146102fd5780637ef09bca146103125780638129fc1c1461034257806386a01aac146103575780638da5cb5b1461036c5780639395d8481461038e578063a15db0ff146103ae578063a1c83c6a146103ce578063a5d7827e146103ee578063af640d0f1461040e578063af7acc6114610423578063bba1005414610443578063c80c073814610463578063c89c188b14610478578063d4093c071461048d578063e08fc5a4146104ad578063edb7b3dc146104cd578063f2c78e49146104ed578063f2fde38b1461051a578063fc26e7e11461053a575b600080fd5b34801561018f57600080fd5b5061019861054f565b6040516101a591906124e9565b60405180910390f35b3480156101ba57600080fd5b506101c36105dd565b005b3480156101d157600080fd5b506101da61067b565b6040516101a591906123ed565b3480156101f357600080fd5b506101c3610202366004611f65565b61068c565b34801561021357600080fd5b506101c361022236600461220c565b610755565b34801561023357600080fd5b5061023c600081565b6040519081526020016101a5565b34801561025657600080fd5b506101c3610265366004611f65565b6107e4565b6101c3610278366004611f7f565b6108bf565b34801561028957600080fd5b5061023c60d35481565b34801561029f57600080fd5b506101c36102ae366004612034565b610979565b3480156102bf57600080fd5b5061023c600181565b3480156102d457600080fd5b506101c36102e3366004611f65565b610aca565b3480156102f457600080fd5b506101c3610b27565b34801561030957600080fd5b50610198610b60565b34801561031e57600080fd5b5061033261032d366004611f65565b610b6d565b60405190151581526020016101a5565b34801561034e57600080fd5b506101c3610b80565b34801561036357600080fd5b506101da610c80565b34801561037857600080fd5b50610381610c8c565b6040516101a591906123c0565b34801561039a57600080fd5b506101c36103a9366004611f65565b610c9b565b3480156103ba57600080fd5b506101986103c9366004611f65565b610d9e565b3480156103da57600080fd5b5061023c6103e9366004611f65565b610e4d565b3480156103fa57600080fd5b5061023c610409366004611f65565b610e83565b34801561041a57600080fd5b50610198610ec9565b34801561042f57600080fd5b506101c361043e36600461220c565b610ed6565b34801561044f57600080fd5b5061023c61045e3660046121cd565b610f5a565b34801561046f57600080fd5b5061023c600381565b34801561048457600080fd5b506101c3610f9b565b34801561049957600080fd5b506101c36104a8366004611fdd565b610fe8565b3480156104b957600080fd5b506101c36104c8366004612177565b611164565b3480156104d957600080fd5b506101c36104e8366004611f65565b611226565b3480156104f957600080fd5b5061050d61050836600461205d565b611283565b6040516101a5919061243a565b34801561052657600080fd5b506101c3610535366004611f65565b611314565b34801561054657600080fd5b5061023c600281565b60d2805461055c906127be565b80601f0160208091040260200160405190810160405280929190818152602001828054610588906127be565b80156105d55780601f106105aa576101008083540402835291602001916105d5565b820191906000526020600020905b8154815290600101906020018083116105b857829003601f168201915b505050505081565b6105e633610b6d565b61060b5760405162461bcd60e51b8152600401610602906124fc565b60405180910390fd5b600361061633610e4d565b1461066e5760405162461bcd60e51b815260206004820152602260248201527f6d656d62657273686970206d75737420626520696e2061637469766520737461604482015261746560f01b6064820152608401610602565b6106793360026113b7565b565b60606106876065611401565b905090565b306001600160a01b037f000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b7841614156106d55760405162461bcd60e51b815260040161060290612561565b7f000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b7846001600160a01b0316610707611415565b6001600160a01b03161461072d5760405162461bcd60e51b8152600401610602906125de565b61073681611431565b6040805160008082526020820190925261075291839190611460565b50565b60695461076133610e83565b101561077f5760405162461bcd60e51b815260040161060290612654565b600361078a33610e4d565b146107a75760405162461bcd60e51b81526004016106029061252a565b80516107ba9060d2906020840190611cd0565b506000805160206128b783398151915260d26040516107d99190612618565b60405180910390a150565b6107ed33610b6d565b6108095760405162461bcd60e51b8152600401610602906124fc565b336001600160a01b0382161480610826575061082481610b6d565b155b6108725760405162461bcd60e51b815260206004820181905260248201527f757365722063616e206e6f742068617665206d756c7469706c6520726f6c65736044820152606401610602565b600161087d33610e4d565b1461089a5760405162461bcd60e51b81526004016106029061259b565b336001600160a01b038216146108b4576108b433826115a7565b6107528160036113b7565b306001600160a01b037f000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b7841614156109085760405162461bcd60e51b815260040161060290612561565b7f000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b7846001600160a01b031661093a611415565b6001600160a01b0316146109605760405162461bcd60e51b8152600401610602906125de565b61096982611431565b61097582826001611460565b5050565b606a5461098533610e83565b10156109a35760405162461bcd60e51b815260040161060290612654565b60036109ae33610e4d565b146109cb5760405162461bcd60e51b81526004016106029061252a565b6109d482610b6d565b6109f05760405162461bcd60e51b8152600401610602906124fc565b336001600160a01b0383161415610a455760405162461bcd60e51b8152602060048201526019602482015278757365722063616e206e6f7420736574206f776e20726f6c6560381b6044820152606401610602565b6003610a5083610e4d565b1480610a6457506001610a6283610e4d565b145b610ac05760405162461bcd60e51b815260206004820152602760248201527f6d656d626572736869702063616e206e6f7420626520696e20696e61637469766044820152666520737461746560c81b6064820152608401610602565b61097582826116a4565b606a54610ad633610e83565b1015610af45760405162461bcd60e51b815260040161060290612654565b6003610aff33610e4d565b14610b1c5760405162461bcd60e51b81526004016106029061252a565b61097560d5826116f1565b33610b30610c8c565b6001600160a01b031614610b565760405162461bcd60e51b81526004016106029061268b565b6106796000611706565b60d1805461055c906127be565b6000610b7a606583611758565b92915050565b600054610100900460ff16610b9b5760005460ff1615610b9f565b303b155b610c025760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610602565b600054610100900460ff16158015610c24576000805461ffff19166101011790555b610c2e600a606955565b610c386014606a55565b610c6733604051806040016040528060088152602001673232b83637bcb2b960c11b815250610100600361176d565b600360d3558015610752576000805461ff001916905550565b606061068760d5611401565b6033546001600160a01b031690565b606a54610ca733610e83565b1015610cc55760405162461bcd60e51b815260040161060290612654565b6003610cd033610e4d565b14610ced5760405162461bcd60e51b81526004016106029061252a565b610cf681610b6d565b610d125760405162461bcd60e51b8152600401610602906124fc565b6003610d1d82610e4d565b1480610d3157506001610d2f82610e4d565b145b610d935760405162461bcd60e51b815260206004820152602d60248201527f6d656d62657273686970206d75737420626520696e2070656e64696e67206f7260448201526c2061637469766520737461746560981b6064820152608401610602565b6107528160026113b7565b6001600160a01b0381166000908152606760205260409020600301805460609190610dc8906127be565b80601f0160208091040260200160405190810160405280929190818152602001828054610df4906127be565b8015610e415780601f10610e1657610100808354040283529160200191610e41565b820191906000526020600020905b815481529060010190602001808311610e2457829003601f168201915b50505050509050919050565b6000610e5882610b6d565b610e6457506000919050565b506001600160a01b031660009081526067602052604090206001015490565b6000610e8e82610b6d565b610eaa5760405162461bcd60e51b8152600401610602906124fc565b506001600160a01b031660009081526067602052604090206002015490565b60d0805461055c906127be565b606954610ee233610e83565b1015610f005760405162461bcd60e51b815260040161060290612654565b6003610f0b33610e4d565b14610f285760405162461bcd60e51b81526004016106029061252a565b8051610f3b9060d1906020840190611cd0565b506000805160206128b783398151915260d16040516107d991906126c0565b60008060688484604051610f6f929190612341565b908152604051908190036020019020546001600160a01b03169050610f9381610e4d565b949350505050565b610fa433610b6d565b610fc05760405162461bcd60e51b8152600401610602906124fc565b6001610fcb33610e4d565b1461066e5760405162461bcd60e51b81526004016106029061259b565b606a54610ff433610e83565b10156110125760405162461bcd60e51b815260040161060290612654565b600361101d33610e4d565b1461103a5760405162461bcd60e51b81526004016106029061252a565b61104384610b6d565b1561108f5760405162461bcd60e51b815260206004820152601c60248201527b3ab9b2b91034b99030b63932b0b23c9030b71037b933b0b734bd32b960211b6044820152606401610602565b600061109b8484610f5a565b14806110b0575060026110ae8484610f5a565b145b6111195760405162461bcd60e51b815260206004820152603460248201527f6578697374696e67206d656d6265727368697020696473206e65656420746f20604482015273626520696e20696e61637469766520737461746560601b6064820152608401610602565b61115e8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508692506001915061176d9050565b50505050565b606a5461117033610e83565b101561118e5760405162461bcd60e51b815260040161060290612654565b600361119933610e4d565b146111b65760405162461bcd60e51b81526004016106029061252a565b60405163804b2e9960e01b8152735b0ea5d91f64441d125caae993a59be7e30513339063804b2e99906111f29060d490869086906004016124b4565b60006040518083038186803b15801561120a57600080fd5b505af415801561121e573d6000803e3d6000fd5b505050505050565b606a5461123233610e83565b10156112505760405162461bcd60e51b815260040161060290612654565b600361125b33610e4d565b146112785760405162461bcd60e51b81526004016106029061252a565b61097560d5826118ea565b6040516352c4289f60e01b8152606090735b0ea5d91f64441d125caae993a59be7e3051333906352c4289f906112c09060d490869060040161249b565b60006040518083038186803b1580156112d857600080fd5b505af41580156112ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b7a919081019061208f565b3361131d610c8c565b6001600160a01b0316146113435760405162461bcd60e51b81526004016106029061268b565b6001600160a01b0381166113a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610602565b61075281611706565b3b151590565b6001600160a01b0382166000908152606760205260409081902060010182905551600080516020612830833981519152906113f590849084906123d4565b60405180910390a15050565b6060600061140e836118ff565b9392505050565b600080516020612870833981519152546001600160a01b031690565b3361143a610c8c565b6001600160a01b0316146107525760405162461bcd60e51b81526004016106029061268b565b600061146a611415565b90506114758461195a565b6000835111806114825750815b156114935761149184846119ed565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff166115a057805460ff1916600117815560405161150e9086906114df9085906024016123c0565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b1790526119ed565b50805460ff1916815561151f611415565b6001600160a01b0316826001600160a01b0316146115975760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610602565b6115a085611ad8565b5050505050565b6001600160a01b038083166000908152606760205260408082209284168252902081548155600180830154908201556002808301549082015560038083018054918301916115f4906127be565b6115ff929190611d54565b5061160f915060659050836118ea565b5061161b6065826116f1565b506001600160a01b038116600090815260676020526040908190209051829160689161164a9160030190612351565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b039485161790559184166000908152606790915290812081815560018101829055600281018290559061115e6003830182611dcf565b6001600160a01b03821660009081526067602052604090819020600281018390559051600080516020612810833981519152906116e490859085906123d4565b60405180910390a1505050565b600061140e836001600160a01b038416611b18565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061140e836001600160a01b038416611b62565b600060688460405161177f9190612325565b908152604051908190036020019020546001600160a01b031690506117a56065826118ea565b506001600160a01b03811660009081526067602052604081208181556001810182905560028101829055906117dd6003830182611dcf565b5050606b546040516001600160a01b03909116906068906117ff908790612325565b52506001600160a01b038516600090815260676020908152604090912060028101859055600181018490558551909161183f916003840191880190611cd0565b50856068866040516118519190612325565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b031990921691909117905561188b6065876116f1565b506000805160206128108339815191528682600201546040516118af9291906123d4565b60405180910390a16000805160206128308339815191528682600101546040516118da9291906123d4565b60405180910390a1505050505050565b600061140e836001600160a01b038416611b7a565b606081600001805480602002602001604051908101604052809291908181526020018280548015610e4157602002820191906000526020600020905b81548152602001906001019080831161193b5750505050509050919050565b803b6119be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610602565b60008051602061287083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b611a4c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610602565b600080846001600160a01b031684604051611a679190612325565b600060405180830381855af49150503d8060008114611aa2576040519150601f19603f3d011682016040523d82523d6000602084013e611aa7565b606091505b5091509150611acf828260405180606001604052806027815260200161289060279139611c97565b95945050505050565b611ae18161195a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000611b248383611b62565b611b5a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b7a565b506000610b7a565b60009081526001919091016020526040902054151590565b60008181526001830160205260408120548015611c8d576000611b9e60018361276f565b8554909150600090611bb29060019061276f565b9050818114611c33576000866000018281548110611be057634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611c1157634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c5257634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b7a565b6000915050610b7a565b60608315611ca657508161140e565b825115611cb65782518084602001fd5b8160405162461bcd60e51b815260040161060291906124e9565b828054611cdc906127be565b90600052602060002090601f016020900481019282611cfe5760008555611d44565b82601f10611d1757805160ff1916838001178555611d44565b82800160010185558215611d44579182015b82811115611d44578251825591602001919060010190611d29565b50611d50929150611e05565b5090565b828054611d60906127be565b90600052602060002090601f016020900481019282611d825760008555611d44565b82601f10611d935780548555611d44565b82800160010185558215611d4457600052602060002091601f016020900482015b82811115611d44578254825591600101919060010190611db4565b508054611ddb906127be565b6000825580601f10611deb575050565b601f01602090049060005260206000209081019061075291905b5b80821115611d505760008155600101611e06565b6000611e2d611e2884612748565b6126f5565b9050828152838383011115611e4157600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114611e6f57600080fd5b919050565b600082601f830112611e84578081fd5b81356020611e94611e2883612725565b80838252828201915082860187848660051b8901011115611eb3578586fd5b855b85811015611ef35781356001600160401b03811115611ed2578788fd5b611ee08a87838c0101611f46565b8552509284019290840190600101611eb5565b5090979650505050505050565b60008083601f840112611f11578182fd5b5081356001600160401b03811115611f27578182fd5b602083019150836020828501011115611f3f57600080fd5b9250929050565b600082601f830112611f56578081fd5b61140e83833560208501611e1a565b600060208284031215611f76578081fd5b61140e82611e58565b60008060408385031215611f91578081fd5b611f9a83611e58565b915060208301356001600160401b03811115611fb4578182fd5b8301601f81018513611fc4578182fd5b611fd385823560208401611e1a565b9150509250929050565b60008060008060608587031215611ff2578182fd5b611ffb85611e58565b935060208501356001600160401b03811115612015578283fd5b61202187828801611f00565b9598909750949560400135949350505050565b60008060408385031215612046578182fd5b61204f83611e58565b946020939093013593505050565b60006020828403121561206e578081fd5b81356001600160401b03811115612083578182fd5b610f9384828501611e74565b600060208083850312156120a1578182fd5b82516001600160401b03808211156120b7578384fd5b818501915085601f8301126120ca578384fd5b81516120d8611e2882612725565b80828252858201915085850189878560051b88010111156120f7578788fd5b875b848110156121685781518681111561210f57898afd5b8701603f81018c1361211f57898afd5b888101516040612131611e2883612748565b8281528e82848601011115612144578c8dfd5b612153838d8301848701612792565b875250505092870192908701906001016120f9565b50909998505050505050505050565b60008060408385031215612189578182fd5b82356001600160401b038082111561219f578384fd5b6121ab86838701611e74565b935060208501359150808211156121c0578283fd5b50611fd385828601611e74565b600080602083850312156121df578182fd5b82356001600160401b038111156121f4578283fd5b61220085828601611f00565b90969095509350505050565b60006020828403121561221d578081fd5b81356001600160401b03811115612232578182fd5b610f9384828501611f46565b6000815180845260208085019450848260051b8601828601855b85811015611ef3578383038952612270838351612282565b98850198925090840190600101612258565b6000815180845261229a816020860160208601612792565b601f01601f19169290920160200192915050565b600081546122bb816127be565b8085526020600183811680156122d857600181146122ec5761231a565b60ff1985168884015260408801955061231a565b866000528260002060005b858110156123125781548a82018601529083019084016122f7565b890184019650505b505050505092915050565b60008251612337818460208701612792565b9190910192915050565b8183823760009101908152919050565b600080835461235f816127be565b600182811680156123775760018114612388576123b4565b60ff198416875282870194506123b4565b8786526020808720875b858110156123ab5781548a820152908401908201612392565b50505082870194505b50929695505050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561242e5783516001600160a01b031683529284019291840191600101612409565b50909695505050505050565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b8281101561248e57603f1988860301845261247c858351612282565b94509285019290850190600101612460565b5092979650505050505050565b828152604060208201526000610f93604083018461223e565b8381526060602082015260006124cd606083018561223e565b82810360408401526124df818561223e565b9695505050505050565b60208152600061140e6020830184612282565b6020808252601490820152733ab9b2b91034b99037379037b933b0b734bd32b960611b604082015260600190565b6020808252601f908201527f757365722068617320616e20696e616374697665206d656d6265727368697000604082015260600190565b6020808252602c9082015260008051602061285083398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60208082526023908201527f6d656d62657273686970206d75737420626520696e2070656e64696e6720737460408201526261746560e81b606082015260800190565b6020808252602c9082015260008051602061285083398151915260408201526b6163746976652070726f787960a01b606082015260800190565b604081526012604082015271757269507269766174654d6574616461746160701b606082015260806020820152600061140e60808301846122ae565b6020808252601f908201527f757365722068617320696e76616c6964206f7267616e697a657220726f6c6500604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60408152600b60408201526a7572694d6574616461746160a81b606082015260806020820152600061140e60808301846122ae565b604051601f8201601f191681016001600160401b038111828210171561271d5761271d6127f9565b604052919050565b60006001600160401b0382111561273e5761273e6127f9565b5060051b60200190565b60006001600160401b03821115612761576127616127f9565b50601f01601f191660200190565b60008282101561278d57634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156127ad578181015183820152602001612795565b8381111561115e5750506000910152565b600181811c908216806127d257607f821691505b602082108114156127f357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fdfeaf6cbd088e77f7f0305956d537058ebce2dda08960628863f43154012aec6ddb8f08df50ee1bcbe3d629fa930c1bbff31b0c53c5b0e22303c027b464e2b808f246756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564469de3b344361a973cff6fdeebc9d7c0ce4b5407c4810694199b73f2f9d3f74da2646970667358221220ccddd5def20ebfbc88605768a355daea6488c0e2cae7a0efa412c1a9e99a7cc064736f6c63430008040033" }, "0xaf00aaa58368d3a4381707f0d8f69c466edbf64e": { "balance": "0x0", - "nonce": 0, - "code": "0x", - "storage": {} + "energy": "0x0" }, "0xf0218538d5d6dd9f7e8aeb93873f5ee633f823a6": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b602081526000825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220365cbf48ddf4e49fd01aa1ec509fdddeec21e28d954bf01a271d40be2668bde064736f6c63430008040033", "storage": { "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000a96f26a25e7ee5f42f533930cce991ccaa92b784", @@ -67,6 +63,7 @@ "gas": "0x95dd4b", "gasUsed": "0x1457", "input": "0x3c4a206f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001475736572206973206e6f206f7267616e697a6572000000000000000000000000", "error": "execution reverted", "calls": [ { @@ -76,6 +73,7 @@ "gas": "0x937b57", "gasUsed": "0x97b", "input": "0xa5d7827e000000000000000000000000af00aaa58368d3a4381707f0d8f69c466edbf64e", + "output": "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001475736572206973206e6f206f7267616e697a6572000000000000000000000000", "error": "execution reverted", "calls": [ { @@ -85,6 +83,7 @@ "gas": "0x91295a", "gasUsed": "0x524", "input": "0xa5d7827e000000000000000000000000af00aaa58368d3a4381707f0d8f69c466edbf64e", + "output": "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001475736572206973206e6f206f7267616e697a6572000000000000000000000000", "error": "execution reverted" } ] diff --git a/tracers/testdata/simple.json b/tracers/testdata/simple.json index 80f2556ab..6bbe754e8 100644 --- a/tracers/testdata/simple.json +++ b/tracers/testdata/simple.json @@ -13,13 +13,11 @@ "state": { "0x048ac268f5818b7ade95f6828ad1e769c1d51bdc": { "balance": "0x94301095758da0e71b4d44", - "nonce": 0, - "code": "0x", - "storage": {} + "energy": "0x0" }, "0x7d6dcd458ef0f587bf3e0f52549a96aa445224c1": { "balance": "0x7b55e8ffcaaa3a0000", - "nonce": 0, + "energy": "0x0", "code": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806309ca541b146100eb5780630ac9b108146101dd57806321abdf5c14610218578063470259c3146103f757806358a187ef146104225780635943b64f14610491578063874ec2e7146105835780638da5cb5b146105dc578063a330681914610633578063a82a3d89146107e6578063c55ac4a51461083d578063c6a023e9146109e4578063cfdc9bd614610a29578063d0d41fe114610a67578063da09c72c14610ab8578063f2fde38b14610b0f575b600080fd5b3480156100f757600080fd5b506101db6004803603606081101561010e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561015557600080fd5b82018360208201111561016757600080fd5b8035906020019184600183028401116401000000008311171561018957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b60565b005b3480156101e957600080fd5b506102166004803603602081101561020057600080fd5b8101908080359060200190929190505050611708565b005b34801561022457600080fd5b506103f5600480360361010081101561023c57600080fd5b81019080803560ff169060200190929190803590602001909291908035906020019064010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803567ffffffffffffffff1690602001909291908035906020019064010000000081111561031b57600080fd5b82018360208201111561032d57600080fd5b8035906020019184600183028401116401000000008311171561034f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803567ffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cf3565b005b34801561040357600080fd5b5061040c6126bb565b6040518082815260200191505060405180910390f35b34801561042e57600080fd5b5061047b6004803603604081101561044557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c1565b6040518082815260200191505060405180910390f35b34801561049d57600080fd5b506104ca600480360360208110156104b457600080fd5b810190808035906020019092919050505061271f565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018667ffffffffffffffff1667ffffffffffffffff1681526020018567ffffffffffffffff1667ffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b34801561058f57600080fd5b506105da600480360360408110156105a657600080fd5b81019080803567ffffffffffffffff169060200190929190803567ffffffffffffffff1690602001909291905050506127db565b005b3480156105e857600080fd5b506105f1612a03565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561063f57600080fd5b5061066c6004803603602081101561065657600080fd5b8101908080359060200190929190505050612a28565b6040518088600181111561067c57fe5b60ff16815260200187600281111561069057fe5b60ff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018567ffffffffffffffff1667ffffffffffffffff168152602001806020018467ffffffffffffffff1667ffffffffffffffff168152602001838103835287818151815260200191508051906020019080838360005b8381101561073e578082015181840152602081019050610723565b50505050905090810190601f16801561076b5780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156107a4578082015181840152602081019050610789565b50505050905090810190601f1680156107d15780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3480156107f257600080fd5b506107fb612c8a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109e2600480360360c081101561085357600080fd5b81019080803560ff1690602001909291908035906020019064010000000081111561087d57600080fd5b82018360208201111561088f57600080fd5b803590602001918460018302840111640100000000831117156108b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803567ffffffffffffffff1690602001909291908035906020019064010000000081111561092857600080fd5b82018360208201111561093a57600080fd5b8035906020019184600183028401116401000000008311171561095c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803567ffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cb0565b005b3480156109f057600080fd5b50610a2760048036036040811015610a0757600080fd5b810190808035906020019092919080359060200190929190505050613350565b005b348015610a3557600080fd5b50610a6560048036036020811015610a4c57600080fd5b81019080803560ff169060200190929190505050613516565b005b348015610a7357600080fd5b50610ab660048036036020811015610a8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135fd565b005b348015610ac457600080fd5b50610acd613705565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1b57600080fd5b50610b5e60048036036020811015610b3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061372b565b005b82426005600083815260200190815260200160002060040160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16118015610bba575060006005600083815260200190815260200160002060060154115b1515610c2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f746f6f206c61746500000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8383600060056000848152602001908152602001600020600a0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610cfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e6e6f7420636c61696d207477696365000000000000000000000000000081525060200191505060405180910390fd5b600060056000888152602001908152602001600020905060008787604051602001808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051602081830303815290604052805190602001209050610d7b8187613952565b73ffffffffffffffffffffffffffffffffffffffff168260010160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4543445341207369676e6174757265206973206e6f742076616c69642e00000081525060200191505060405180910390fd5b60006111df836101c06040519081016040529081600082015481526020016001820160009054906101000a900460ff166001811115610e7c57fe5b6001811115610e8757fe5b81526020016001820160019054906101000a900460ff166002811115610ea957fe5b6002811115610eb457fe5b81526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ffd5780601f10610fd257610100808354040283529160200191610ffd565b820191906000526020600020905b815481529060010190602001808311610fe057829003601f168201915b505050505081526020016004820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561113b5780601f106111105761010080835404028352916020019161113b565b820191906000526020600020905b81548152906001019060200180831161111e57829003601f168201915b505050505081526020016009820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050613a36565b905060018360090160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508083600a0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550428360090160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506112ae818460060154613b3b90919063ffffffff16565b836006018190555060018360010160016101000a81548160ff021916908360028111156112d757fe5b02179055506000836006015414156113105760028360010160016101000a81548160ff0219169083600281111561130a57fe5b02179055505b6116ae836101c06040519081016040529081600082015481526020016001820160009054906101000a900460ff16600181111561134957fe5b600181111561135457fe5b81526020016001820160019054906101000a900460ff16600281111561137657fe5b600281111561138157fe5b81526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114ca5780601f1061149f576101008083540402835291602001916114ca565b820191906000526020600020905b8154815290600101906020018083116114ad57829003601f168201915b505050505081526020016004820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116085780601f106115dd57610100808354040283529160200191611608565b820191906000526020600020905b8154815290600101906020018083116115eb57829003601f168201915b505050505081526020016009820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508983613b54565b8773ffffffffffffffffffffffffffffffffffffffff16897fc859311bc537fef52b70fbc36471c501efbf87e5a6e8fed2edf60453ddde3d5c836040518082815260200191505060405180910390a3505050505050505050565b80426005600083815260200190815260200160002060040160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16111515156117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f746f6f206c61746500000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b816002808111156117c257fe5b6005600083815260200190815260200160002060010160019054906101000a900460ff1660028111156117f157fe5b14151515611867576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e76616c696420656e76656c6f70652069640000000000000000000000000081525060200191505060405180910390fd5b60006005600085815260200190815260200160002090506000816006015490506000826006018190555060028260010160016101000a81548160ff021916908360028111156118b257fe5b0217905550611c79826101c06040519081016040529081600082015481526020016001820160009054906101000a900460ff1660018111156118f057fe5b60018111156118fb57fe5b81526020016001820160019054906101000a900460ff16600281111561191d57fe5b600281111561192857fe5b81526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a715780601f10611a4657610100808354040283529160200191611a71565b820191906000526020600020905b815481529060010190602001808311611a5457829003601f168201915b505050505081526020016004820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611baf5780601f10611b8457610100808354040283529160200191611baf565b820191906000526020600020905b815481529060010190602001808311611b9257829003601f168201915b505050505081526020016009820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016009820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b54565b8160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16857f4dcb6e6a38d712e4e01ab60d4819c3cd51347a99d3c36d78f6e25aa2918e4133836040518082815260200191505060405180910390a35050505050565b6001548710151515611d6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616d6f756e7420746f6f20736d616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b6002548711151515611de7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616d6f756e7420746f6f206c617267650000000000000000000000000000000081525060200191505060405180910390fd5b8467ffffffffffffffff16600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1611158015611e4b5750600360089054906101000a900467ffffffffffffffff1667ffffffffffffffff168567ffffffffffffffff1611155b1515611ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f696e76616c6964206475726174696f6e0000000000000000000000000000000081525060200191505060405180910390fd5b8267ffffffffffffffff16600360109054906101000a900467ffffffffffffffff1667ffffffffffffffff1611158015611f235750600360189054906101000a900467ffffffffffffffff1667ffffffffffffffff168367ffffffffffffffff1611155b1515611f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c696420636c61696d7300000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561203c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207365637265745369676e657200000000000000000000000081525060200191505060405180910390fd5b6000819050878173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561210f57600080fd5b505afa158015612123573d6000803e3d6000fd5b505050506040513d602081101561213957600080fd5b8101908080519060200190929190505050101515156121c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6e6f2073756666696369656e7420616c6c6f77616e636500000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561229757600080fd5b505af11580156122ab573d6000803e3d6000fd5b5050505060016006600082825401925050819055506122c8614006565b60006122d9858b8d8c8c8c8c613d1a565b915091506006548260000181815250508382610120019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050816005600060065481526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083600181111561236657fe5b021790555060408201518160010160016101000a81548160ff0219169083600281111561238f57fe5b021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a082015181600301908051906020019061243e9291906140f6565b5060c08201518160040160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101408201518160080190805190602001906124e89291906140f6565b506101608201518160090160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101808201518160090160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101a08201518160090160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050503373ffffffffffffffffffffffffffffffffffffffff166006547f3162dfdc09b67a736521fc30f04b8f7d2ecaa89d27441b7f350e79251747d13f60405160405180910390a360008111156126ae5781610120015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561269557600080fd5b505af11580156126a9573d6000803e3d6000fd5b505050505b5050505050505050505050565b60065481565b600060056000848152602001908152602001600020600a0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008060008060006005600089815260200190815260200160002090508060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160090160009054906101000a900467ffffffffffffffff168260090160089054906101000a900467ffffffffffffffff16836005015484600601548560010160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169650965096509650965096505091939550919395565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561289f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b8067ffffffffffffffff168267ffffffffffffffff161115151561292b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5f6d696e206d7573742067726561746572207468616e205f6d6178000000000081525060200191505060405180910390fd5b60008167ffffffffffffffff161115156129ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6d7573742067726561746572207468616e207a65726f0000000000000000000081525060200191505060405180910390fd5b81600360106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600360186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600060606000606060006005600089815260200190815260200160002060010160009054906101000a900460ff16600560008a815260200190815260200160002060010160019054906101000a900460ff16600560008b815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008c8152602001908152602001600020600301600560008d815260200190815260200160002060040160009054906101000a900467ffffffffffffffff16600560008e8152602001908152602001600020600801600560008f815260200190815260200160002060090160109054906101000a900467ffffffffffffffff16849450838054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612bce5780601f10612ba357610100808354040283529160200191612bce565b820191906000526020600020905b815481529060010190602001808311612bb157829003601f168201915b50505050509350818054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c6a5780601f10612c3f57610100808354040283529160200191612c6a565b820191906000526020600020905b815481529060010190602001808311612c4d57829003601f168201915b505050505091509650965096509650965096509650919395979092949650565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001543410151515612d2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616d6f756e7420746f6f20736d616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b6002543411151515612da4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f616d6f756e7420746f6f206c617267650000000000000000000000000000000081525060200191505060405180910390fd5b8367ffffffffffffffff16600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1611158015612e085750600360089054906101000a900467ffffffffffffffff1667ffffffffffffffff168467ffffffffffffffff1611155b1515612e7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f696e76616c6964206475726174696f6e0000000000000000000000000000000081525060200191505060405180910390fd5b8167ffffffffffffffff16600360109054906101000a900467ffffffffffffffff1667ffffffffffffffff1611158015612ee05750600360189054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff1611155b1515612f54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c696420636c61696d7300000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ff9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c6964207365637265745369676e657200000000000000000000000081525060200191505060405180910390fd5b6001600660008282540192505081905550613012614006565b600061302383348a8a8a8a8a613d1a565b91509150600654826000018181525050816005600060065481526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083600181111561307757fe5b021790555060408201518160010160016101000a81548160ff021916908360028111156130a057fe5b021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a082015181600301908051906020019061314f9291906140f6565b5060c08201518160040160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101408201518160080190805190602001906131f99291906140f6565b506101608201518160090160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101808201518160090160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101a08201518160090160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050503373ffffffffffffffffffffffffffffffffffffffff166006547f3162dfdc09b67a736521fc30f04b8f7d2ecaa89d27441b7f350e79251747d13f60405160405180910390a3600081111561334657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613344573d6000803e3d6000fd5b505b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613414576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b80821115151561348c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5f6d696e206d7573742067726561746572207468616e205f6d6178000000000081525060200191505060405180910390fd5b600081111515613504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6d7573742067726561746572207468616e207a65726f0000000000000000000081525060200191505060405180910390fd5b81600181905550806002819055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b8060ff16600060146101000a81548161ffff021916908361ffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156136c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156137ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7065726d697373696f6e2064656e69656400000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806041855114151561396f5760009350505050613a30565b6020850151925060408501519150606085015160001a9050601b8160ff16101561399a57601b810190505b601b8160ff16141580156139b25750601c8160ff1614155b156139c35760009350505050613a30565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613a20573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080826101000151905060018361018001518461016001510367ffffffffffffffff16111515613a6a5780915050613b36565b60006001811115613a7757fe5b83602001516001811115613a8757fe5b1415613abe57613ab68361018001518461016001510367ffffffffffffffff1682613fb890919063ffffffff16565b915050613b36565b600060018461016001510367ffffffffffffffff1690506000606460148385811515613ae657fe5b0402811515613af157fe5b048284811515613afd57fe5b04600143034060019004811515613b1057fe5b06019050600081118015613b245750828111155b1515613b2f57600080fd5b8093505050505b919050565b6000828211151515613b4957fe5b818303905092915050565b60008114151515613bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c696420616d6f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1683610120015173ffffffffffffffffffffffffffffffffffffffff16141515613ccd5782610120015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613cb057600080fd5b505af1158015613cc4573d6000803e3d6000fd5b50505050613d15565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613d13573d6000803e3d6000fd5b505b505050565b613d22614006565b6000613d2c614006565b60008090508a826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f9574c69336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613e2457600080fd5b505afa158015613e38573d6000803e3d6000fd5b505050506040513d6020811015613e4e57600080fd5b81019080805190602001909291905050501515613eb857613ea06103e8613e92600060149054906101000a900461ffff1661ffff168d613fce90919063ffffffff16565b613fb890919063ffffffff16565b9050613eb5818b613b3b90919063ffffffff16565b99505b8882602001906001811115613ec957fe5b90816001811115613ed657fe5b8152505033826080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050878260a001819052508642018260c0019067ffffffffffffffff16908167ffffffffffffffff1681525050898260e00181815250508160e0015182610100018181525050858261014001819052508482610160019067ffffffffffffffff16908167ffffffffffffffff1681525050600082604001906002811115613f9357fe5b90816002811115613fa057fe5b81525050818193509350505097509795505050505050565b60008183811515613fc557fe5b04905092915050565b600080831415613fe15760009050614000565b8183029050818382811515613ff257fe5b04141515613ffc57fe5b8090505b92915050565b6101c060405190810160405280600081526020016000600181111561402757fe5b81526020016000600281111561403957fe5b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600067ffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061413757805160ff1916838001178555614165565b82800160010185558215614165579182015b82811115614164578251825591602001919060010190614149565b5b5090506141729190614176565b5090565b61419891905b8082111561419457600081600090555060010161417c565b5090565b9056fea165627a7a7230582022c67dbc08de2a6090385a8a4ff29a53b67e0b9ba657901ff7e1251ccedfb4b90029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000000000000000000000000000001550f7dca70000", @@ -41,7 +39,7 @@ }, "0xd4dac3a95c741773f093d59256a21ed6fcc768a7": { "balance": "0x0", - "nonce": 0, + "energy": "0x0", "code": "0x6080604052600436106102665763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301921197811461026b57806301ffc9a7146102915780630324529c146102dc57806306fdde031461030057806307fa65f91461038a578063081812fc146103ab578063095ea7b3146103df57806313e7c9d81461040357806318160ddd1461042457806319f373611461044b57806319fa8f501461046c5780631e20363a146104b357806323b872dd146104d3578063287e8495146104fd5780632ad715731461054a5780632ed9b4fd1461055f5780633f4ba83a146105a5578063417c73a7146105ba578063454a2ab3146105db5780634838d165146105e65780634a49ac4c146106075780634d4f6ea9146106285780635c975abb1461064057806360836166146106555780636352211e1461067357806368f162931461068b5780636fbde40d146106bd57806370a08231146106de57806379512513146106ff5780637aaed8991461071a5780638456cb59146107595780638da5cb5b1461076e57806395d89b411461078357806396b5a755146107985780639870d7fe146107b0578063a574cea4146107d1578063a9059cbb14610850578063ac8a584a14610874578063b03e02c214610895578063ba2a954d146108b3578063ba6f2e65146108cb578063bae3e19e146108ed578063bfc206ed1461092d578063c87b56dd14610945578063cd5967db1461095d578063d415614814610981578063e6cbe35114610996578063e729e3a4146109ab578063f2fde38b146109cc578063f7e6e60c146109ed578063f9574c6914610a02575b600080fd5b34801561027757600080fd5b5061028f600435600160a060020a0360243516610a23565b005b34801561029d57600080fd5b506102c87bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1960043516610c5a565b604080519115158252519081900360200190f35b3480156102e857600080fd5b5061028f600160a060020a0360043516602435610c8e565b34801561030c57600080fd5b50610315610e14565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034f578181015183820152602001610337565b50505050905090810190601f16801561037c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039657600080fd5b506102c8600160a060020a0360043516610ea2565b3480156103b757600080fd5b506103c3600435610ec5565b60408051600160a060020a039092168252519081900360200190f35b3480156103eb57600080fd5b5061028f600160a060020a0360043516602435610ee0565b34801561040f57600080fd5b506102c8600160a060020a0360043516610ffd565b34801561043057600080fd5b50610439611012565b60408051918252519081900360200190f35b34801561045757600080fd5b506102c8600160a060020a0360043516611039565b34801561047857600080fd5b50610481611089565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b3480156104bf57600080fd5b5061028f60048035602481019101356110ad565b3480156104df57600080fd5b5061028f600160a060020a0360043581169060243516604435611109565b34801561050957600080fd5b5061051860ff6004351661137e565b6040805194855267ffffffffffffffff9384166020860152918316848301529091166060830152519081900360800190f35b34801561055657600080fd5b5061043961140c565b34801561056b57600080fd5b5061028f6004356fffffffffffffffffffffffffffffffff6024351667ffffffffffffffff60443516600160a060020a0360643516611412565b3480156105b157600080fd5b506102c8611796565b3480156105c657600080fd5b5061028f600160a060020a0360043516611895565b61028f600435611997565b3480156105f257600080fd5b506102c8600160a060020a0360043516611b5e565b34801561061357600080fd5b5061028f600160a060020a0360043516611b73565b34801561063457600080fd5b506102c8600435611c71565b34801561064c57600080fd5b506102c8611d42565b34801561066157600080fd5b5061028f60043560ff60243516611d52565b34801561067f57600080fd5b506103c3600435611f4a565b34801561069757600080fd5b506106a0611f65565b6040805167ffffffffffffffff9092168252519081900360200190f35b3480156106c957600080fd5b5061028f600160a060020a0360043516611f7c565b3480156106ea57600080fd5b50610439600160a060020a036004351661206e565b34801561070b57600080fd5b5061028f60ff60043516612090565b34801561072657600080fd5b5061028f600160a060020a036004351660ff60243516604435151567ffffffffffffffff60643581169060843516612452565b34801561076557600080fd5b506102c86126ef565b34801561077a57600080fd5b506103c36127e1565b34801561078f57600080fd5b506103156127f0565b3480156107a457600080fd5b5061028f60043561284b565b3480156107bc57600080fd5b5061028f600160a060020a0360043516612a1b565b3480156107dd57600080fd5b506107e9600435612b18565b604051600160a060020a03881681526020810187600781111561080857fe5b60ff16815295151560208701525092151560408086019190915267ffffffffffffffff92831660608601529082166080850152911660a0830152519081900360c00192509050f35b34801561085c57600080fd5b5061028f600160a060020a0360043516602435612cf5565b34801561088057600080fd5b5061028f600160a060020a0360043516612f13565b3480156108a157600080fd5b5061028f60043560ff60243516613011565b3480156108bf57600080fd5b5061028f6004356133a7565b3480156108d757600080fd5b5061028f67ffffffffffffffff600435166135a5565b3480156108f957600080fd5b5061028f6004356fffffffffffffffffffffffffffffffff6024358116906044351667ffffffffffffffff6064351661363e565b34801561093957600080fd5b506103c3600435613906565b34801561095157600080fd5b50610315600435613921565b34801561096957600080fd5b5061028f600435600160a060020a03602435166139c3565b34801561098d57600080fd5b506106a0613bfa565b3480156109a257600080fd5b506103c3613c16565b3480156109b757600080fd5b50610439600160a060020a0360043516613c25565b3480156109d857600080fd5b5061028f600160a060020a0360043516613c37565b3480156109f957600080fd5b506106a0613d30565b348015610a0e57600080fd5b506102c8600160a060020a0360043516613d40565b6000805460a060020a900460ff1615610a74576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b33610a7e84611f4a565b600160a060020a031614610aca576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b610ad333611039565b1515610b17576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614a8a833981519152604482015290519081900360640190fd5b600354604080517f0192119700000000000000000000000000000000000000000000000000000000815260048101869052600160a060020a03858116602483015291519190921691630192119791604480830192600092919082900301818387803b158015610b8557600080fd5b505af1158015610b99573d6000803e3d6000fd5b50506003546040805160e060020a6378bd7935028152600481018890529051600160a060020a0390921693506378bd7935925060248082019260c0929091908290030181600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d60c0811015610c1857600080fd5b5051604051909150600160a060020a03831690849083907f9bd63f96cf38bbd738ef415c10d8ce738b56b75bbe3b31f6bf2059d35f3a8f3a90600090a4505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000908152600a602052604090205460ff1690565b3360009081526001602052604090205460ff161515610ce5576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b600160a060020a0382161515610d33576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b60008111610d8b576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c696420616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038416600482015260248101839052905165456e657267799163a9059cbb91604480830192600092919082900301818387803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b505050505050565b600b805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b820191906000526020600020905b815481529060010190602001808311610e7d57829003601f168201915b505050505081565b6000610ead82611039565b8015610ebf5750610ebd82613d40565b155b92915050565b600090815260096020526040902054600160a060020a031690565b6000805460a060020a900460ff1615610f31576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b610f3a82611f4a565b9050600160a060020a038381169082161415610fa0576040805160e560020a62461bcd02815260206004820152601d60248201527f63616e6e6f7420617070726f766520796f7572206f776e20746f6b656e000000604482015290519081900360640190fd5b33600160a060020a03821614610fee576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b610ff88284613d92565b505050565b60016020526000908152604090205460ff1681565b60065467ffffffffffffffff80821668010000000000000000909204811691909101165b90565b600160a060020a03811660009081526008602052604081205460058054839290811061106157fe5b600091825260209091200154608860020a900460ff16600781111561108257fe5b1192915050565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600054600160a060020a031633146110fd576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b610ff8600d83836148fb565b60005460a060020a900460ff1615611159576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a03821615156111a7576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b82600160a060020a03166111ba82611f4a565b600160a060020a031614611206576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6112103382613e0a565b1515611254576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b61125d81611c71565b15156112b3576040805160e560020a62461bcd02815260206004820152601a60248201527f63616e6e6f74207472616e73666572207468697320746f6b656e000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018490529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b15801561130457600080fd5b505af1158015611318573d6000803e3d6000fd5b505050506040513d602081101561132e57600080fd5b505115611373576040805160e560020a62461bcd0281526020600482015260146024820152600080516020614a4a833981519152604482015290519081900360640190fd5b610ff8838383613e59565b60008060008061138c614979565b6004600087600781111561139c57fe5b60ff16815260208082019290925260409081016000208151608081018352815480825260019092015467ffffffffffffffff8082169583018690526801000000000000000082048116948301859052608060020a9091041660609091018190529099929850909650945092505050565b600e5481565b60005460a060020a900460ff1615611462576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b3361146c85611f4a565b600160a060020a0316146114b8576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6114c133611039565b1515611505576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614a8a833981519152604482015290519081900360640190fd5b600580548590811061151357fe5b600091825260209091200154608060020a900460ff161561157e576040805160e560020a62461bcd02815260206004820152601660248201527f63616e63656c20757067726164696e6720666972737400000000000000000000604482015290519081900360640190fd5b600354611595908590600160a060020a0316613d92565b600e546115a990600163ffffffff613e6e16565b600e819055600354604080517fe4f9dd2d0000000000000000000000000000000000000000000000000000000081526004810193909352602483018790526fffffffffffffffffffffffffffffffff861660448401819052606484015267ffffffffffffffff8086166084850152421660a48401523360c484015251600160a060020a039091169163e4f9dd2d9160e480830192600092919082900301818387803b15801561165757600080fd5b505af115801561166b573d6000803e3d6000fd5b5050600e54604080516fffffffffffffffffffffffffffffffff8816808252602082015267ffffffffffffffff87168183015290518894509192507f50417882ac38f5bd0dd968f4b17f72ab38a7bd228eeec270f01466a5724684b4919081900360600190a3600354604080517fcd5967db00000000000000000000000000000000000000000000000000000000815260048101879052600160a060020a0384811660248301529151919092169163cd5967db91604480830192600092919082900301818387803b15801561173f57600080fd5b505af1158015611753573d6000803e3d6000fd5b5050600e54604051600160a060020a03851693508792507fc42e7df8c9dcd26c4a8b5134e17fa2481ababcb828e3b316b89b63c57b61f3b890600090a450505050565b60008054600160a060020a031633146117e7576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff16151561184a576040805160e560020a62461bcd02815260206004820152601560248201527f6e656564732070726f746f636f6c207061757365640000000000000000000000604482015290519081900360640190fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a150600190565b600054600160a060020a031633146118e5576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615611935576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a038116600081815260026020908152604091829020805460ff1916600190811790915582519384529083015280517f0baadf7b35b83c7d3a00874b5406dca58c60d0ff7d8c825ad02ec55484beb4559281900390910190a150565b600080548190819060a060020a900460ff16156119ec576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b6003546040805160e060020a6378bd7935028152600481018790529051600160a060020a03909216916378bd79359160248082019260c0929091908290030181600087803b158015611a3d57600080fd5b505af1158015611a51573d6000803e3d6000fd5b505050506040513d60c0811015611a6757600080fd5b508051602091820151600354604080517f59d667a5000000000000000000000000000000000000000000000000000000008152336004820152602481018a90529051939750919550600160a060020a0316926359d667a5923492604480820193929182900301818588803b158015611ade57600080fd5b505af1158015611af2573d6000803e3d6000fd5b50505050506040513d6020811015611b0957600080fd5b505160408051338152602081018390528151929350600160a060020a03851692879287927fc2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f929081900390910190a450505050565b60026020526000908152604090205460ff1681565b600054600160a060020a03163314611bc3576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615611c13576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a0381166000818152600260209081526040808320805460ff1916905580519384529083019190915280517f0baadf7b35b83c7d3a00874b5406dca58c60d0ff7d8c825ad02ec55484beb4559281900390910190a150565b6000611c7c82613ec9565b8015611ca957506005805483908110611c9157fe5b600091825260209091200154608060020a900460ff16155b8015611cda5750600082815260076020908152604080832054600160a060020a03168352600290915290205460ff16155b8015610ebf5750600360149054906101000a900467ffffffffffffffff16600583815481101515611d0757fe5b60009182526020909120015467ffffffffffffffff720100000000000000000000000000000000000090910481169190910116421192915050565b60005460a060020a900460ff1681565b3360009081526001602052604090205460ff161515611da9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b806007811115611db557fe5b6005805484908110611dc357fe5b600091825260209091200154608860020a900460ff166007811115611de457fe5b10611e39576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c6964206c6576656c00000000000000000000000000000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018590529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b158015611e8a57600080fd5b505af1158015611e9e573d6000803e3d6000fd5b505050506040513d6020811015611eb457600080fd5b505115611ef9576040805160e560020a62461bcd0281526020600482015260146024820152600080516020614a4a833981519152604482015290519081900360640190fd5b6000600583815481101515611f0a57fe5b60009182526020909120018054911515608060020a0270ff0000000000000000000000000000000019909216919091179055611f468282613ee5565b5050565b600090815260076020526040902054600160a060020a031690565b60035460a060020a900467ffffffffffffffff1681565b600054600160a060020a03163314611fcc576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b600160a060020a038116151561201a576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b60038054600160a060020a038316600160a060020a0319909116811790915560408051918252517fb69d08e828d243d599db935e2be5ce7ed7b0d2f9c9f712ff469a10a27924deb89181900360200190a150565b600061207982611039565b612084576000612087565b60015b60ff1692915050565b60008054819060a060020a900460ff16156120e3576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b33600090815260086020526040902054915081151561210b576121083360008061419d565b91505b600580548390811061211957fe5b60009182526020909120018054909150608060020a900460ff1615612188576040805160e560020a62461bcd02815260206004820152600f60248201527f7374696c6c20757067726164696e670000000000000000000000000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018590529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b1580156121d957600080fd5b505af11580156121ed573d6000803e3d6000fd5b505050506040513d602081101561220357600080fd5b505115612248576040805160e560020a62461bcd0281526020600482015260146024820152600080516020614a4a833981519152604482015290519081900360640190fd5b82600781111561225457fe5b815460ff91821691608860020a90910416600781111561227057fe5b60010160ff1614801561228f5750600483600781111561228c57fe5b14155b80156122a7575060078360078111156122a457fe5b11155b15156122fd576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c6964205f746f4c766c000000000000000000000000000000000000604482015290519081900360640190fd5b6004600084600781111561230d57fe5b60ff16815260208101919091526040016000205433311015612379576040805160e560020a62461bcd02815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b8054608060020a70ff0000000000000000000000000000000019909116176fffffffffffffffff00000000000000001916680100000000000000004267ffffffffffffffff811691909102919091178255604051339184917fe925483a08461d851abfcfd476ed282a68d87b23cc45add5a8dc7f1ad7825ce991879143908084600781111561240457fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a3505050565b3360009081526001602052604081205460ff1615156124a9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6124b2866143a1565b15612507576040805160e560020a62461bcd02815260206004820152601860248201527f796f7520616c726561647920686f6c64206120746f6b656e0000000000000000604482015290519081900360640190fd5b6004600086600781111561251757fe5b60ff168152602081019190915260400160002054600160a060020a03871631101561258c576040805160e560020a62461bcd02815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b61259786868661419d565b90508460078111156125a557fe5b6001111580156125c1575060038560078111156125be57fe5b11155b156125ef576006805467ffffffffffffffff8082166001011667ffffffffffffffff19909116179055612659565b8460078111156125fb57fe5b6004111580156126175750600785600781111561261457fe5b11155b156126595760068054600167ffffffffffffffff6801000000000000000080840482169290920116026fffffffffffffffff0000000000000000199091161790555b8315610e0c5785600160a060020a0316817fe925483a08461d851abfcfd476ed282a68d87b23cc45add5a8dc7f1ad7825ce98786866040518084600781111561269e57fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a3505050505050565b60008054600160a060020a03163314612740576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615612790576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a150600190565b600054600160a060020a031681565b600c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e9a5780601f10610e6f57610100808354040283529160200191610e9a565b6000805460a060020a900460ff161561289c576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b336128a683611f4a565b600160a060020a0316146128f2576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b60035461290890600160a060020a0316836143bd565b6003546040805160e060020a6378bd7935028152600481018590529051600160a060020a03909216916378bd79359160248082019260c0929091908290030181600087803b15801561295957600080fd5b505af115801561296d573d6000803e3d6000fd5b505050506040513d60c081101561298357600080fd5b5051604051909150829082907fdb9cc99dc874f9afbae71151f737e51547d3d412b52922793437d86607050c3c90600090a3600354604080517f96b5a755000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a03909216916396b5a7559160248082019260009290919082900301818387803b158015610df857600080fd5b600054600160a060020a03163314612a6b576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615612abb576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a038116600081815260016020818152604092839020805460ff191683179055825193845283015280517f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d9281900390910190a150565b6000806000806000806000612b2b6149a0565b612b3489613ec9565b15612ce957600580548a908110612b4757fe5b60009182526020918290206040805160a08101825291909201805467ffffffffffffffff8082168452680100000000000000008204169483019490945260ff608060020a85048116151593830193909352909290916060840191608860020a9004166007811115612bb457fe5b6007811115612bbf57fe5b81526020016000820160129054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600760008a815260200190815260200160002060009054906101000a9004600160a060020a031681606001518260400151600360009054906101000a9004600160a060020a0316600160a060020a03166337e246ad8d6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015612c9f57600080fd5b505af1158015612cb3573d6000803e3d6000fd5b505050506040513d6020811015612cc957600080fd5b5051608085015185516020870151959d50939b5091995097509550935091505b50919395979092949650565b60005460a060020a900460ff1615612d45576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a0382161515612d93576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b33612d9d82611f4a565b600160a060020a031614612de9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b612df281611c71565b1515612e48576040805160e560020a62461bcd02815260206004820152601a60248201527f63616e6e6f74207472616e73666572207468697320746f6b656e000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018490529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b158015612e9957600080fd5b505af1158015612ead573d6000803e3d6000fd5b505050506040513d6020811015612ec357600080fd5b505115612f08576040805160e560020a62461bcd0281526020600482015260146024820152600080516020614a4a833981519152604482015290519081900360640190fd5b611f46338383614412565b600054600160a060020a03163314612f63576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b60005460a060020a900460ff1615612fb3576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b600160a060020a0381166000818152600160209081526040808320805460ff1916905580519384529083019190915280517f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d9281900390910190a150565b3360009081526001602052604081205460ff161515613068576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b81600781111561307457fe5b600580548590811061308257fe5b600091825260209091200154608860020a900460ff1660078111156130a357fe5b116130f8576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c6964206c6576656c00000000000000000000000000000000000000604482015290519081900360640190fd5b600360149054906101000a900467ffffffffffffffff1660058481548110151561311e57fe5b60009182526020909120015467ffffffffffffffff72010000000000000000000000000000000000009091048116919091011642116131a7576040805160e560020a62461bcd02815260206004820152601460248201527f746f6b656e206973206f6e20636f6f6c646f776e000000000000000000000000604482015290519081900360640190fd5b6003546040805160e060020a6337e246ad028152600481018690529051600160a060020a03909216916337e246ad916024808201926020929091908290030181600087803b1580156131f857600080fd5b505af115801561320c573d6000803e3d6000fd5b505050506040513d602081101561322257600080fd5b50511561336b5760035461323f90600160a060020a0316846143bd565b6003546040805160e060020a6378bd7935028152600481018690529051600160a060020a03909216916378bd79359160248082019260c0929091908290030181600087803b15801561329057600080fd5b505af11580156132a4573d6000803e3d6000fd5b505050506040513d60c08110156132ba57600080fd5b5051604051909150839082907fdb9cc99dc874f9afbae71151f737e51547d3d412b52922793437d86607050c3c90600090a3600354604080517f96b5a755000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a03909216916396b5a7559160248082019260009290919082900301818387803b15801561335257600080fd5b505af1158015613366573d6000803e3d6000fd5b505050505b600580548490811061337957fe5b600091825260209091200154608060020a900460ff161561339d5761339d836133a7565b610ff88383613ee5565b6000806133b383613ec9565b1515613409576040805160e560020a62461bcd02815260206004820152600f60248201527f746f6b656e206e6f742065786973740000000000000000000000000000000000604482015290519081900360640190fd5b600580548490811061341757fe5b60009182526020808320868452600790915260409092205491018054909350600160a060020a039091169150608060020a900460ff1615156134a3576040805160e560020a62461bcd02815260206004820152601060248201527f6e6f74206f6e20757067726164696e6700000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381163314806134c957503360009081526001602052604090205460ff165b151561350d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b60008254608860020a900460ff16600781111561352657fe5b141561353a57613535836145eb565b61356a565b815470ffffffffffffffffff00000000000000001916680100000000000000004267ffffffffffffffff16021782555b604051600160a060020a0382169084907fddc99f00cc50e9442de66784f25bd218c8c63f4c4103b817692da0a63fb80a9690600090a3505050565b3360009081526001602052604090205460ff1615156135fc576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6003805467ffffffffffffffff90921660a060020a027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60005460a060020a900460ff161561368e576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b3361369885611f4a565b600160a060020a0316146136e4576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b6136ed33611039565b1515613731576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614a8a833981519152604482015290519081900360640190fd5b600580548590811061373f57fe5b600091825260209091200154608060020a900460ff16156137aa576040805160e560020a62461bcd02815260206004820152601660248201527f63616e63656c20757067726164696e6720666972737400000000000000000000604482015290519081900360640190fd5b6003546137c1908590600160a060020a0316613d92565b600e546137d590600163ffffffff613e6e16565b600e819055600354604080517fe4f9dd2d0000000000000000000000000000000000000000000000000000000081526004810193909352602483018790526fffffffffffffffffffffffffffffffff80871660448501528516606484015267ffffffffffffffff8085166084850152421660a48401523360c484015251600160a060020a039091169163e4f9dd2d9160e480830192600092919082900301818387803b15801561388457600080fd5b505af1158015613898573d6000803e3d6000fd5b5050600e54604080516fffffffffffffffffffffffffffffffff80891682528716602082015267ffffffffffffffff86168183015290518894509192507f50417882ac38f5bd0dd968f4b17f72ab38a7bd228eeec270f01466a5724684b4919081900360600190a350505050565b600760205260009081526040902054600160a060020a031681565b600d805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152606093610ebf93919290918301828280156139b05780601f10613985576101008083540402835291602001916139b0565b820191906000526020600020905b81548152906001019060200180831161399357829003601f168201915b50505050506139be84614696565b6147a4565b6000805460a060020a900460ff1615613a14576040805160e560020a62461bcd02815260206004820152601360248201526000805160206149ea833981519152604482015290519081900360640190fd5b33613a1e84611f4a565b600160a060020a031614613a6a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020614a6a833981519152604482015290519081900360640190fd5b613a7333611039565b1515613ab7576040805160e560020a62461bcd02815260206004820152600e6024820152600080516020614a8a833981519152604482015290519081900360640190fd5b600354604080517fcd5967db00000000000000000000000000000000000000000000000000000000815260048101869052600160a060020a0385811660248301529151919092169163cd5967db91604480830192600092919082900301818387803b158015613b2557600080fd5b505af1158015613b39573d6000803e3d6000fd5b50506003546040805160e060020a6378bd7935028152600481018890529051600160a060020a0390921693506378bd7935925060248082019260c0929091908290030181600087803b158015613b8e57600080fd5b505af1158015613ba2573d6000803e3d6000fd5b505050506040513d60c0811015613bb857600080fd5b5051604051909150600160a060020a03831690849083907fc42e7df8c9dcd26c4a8b5134e17fa2481ababcb828e3b316b89b63c57b61f3b890600090a4505050565b60065468010000000000000000900467ffffffffffffffff1681565b600354600160a060020a031681565b60086020526000908152604090205481565b600054600160a060020a03163314613c87576040805160e560020a62461bcd02815260206004820152600a6024820152600080516020614a2a833981519152604482015290519081900360640190fd5b600160a060020a0381161515613cd5576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020614a0a833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b60065467ffffffffffffffff1681565b600160a060020a03811660009081526008602052604081205460058054600492908110613d6957fe5b600091825260209091200154608860020a900460ff166007811115613d8a57fe5b101592915050565b60008281526009602052604081208054600160a060020a031916600160a060020a038416179055613dc283611f4a565b90508282600160a060020a031682600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600080613e1683611f4a565b905080600160a060020a031684600160a060020a03161480613e51575083600160a060020a0316613e4684610ec5565b600160a060020a0316145b949350505050565b613e6383826143bd565b610ff8838383614412565b81810182811015610ebf576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b600090815260076020526040812054600160a060020a03161190565b60008281526007602052604081205460058054600160a060020a03909216929182919086908110613f1257fe5b600091825260208220018054909350608860020a900460ff169150846007811115613f3957fe5b1415613f4d57613f48856145eb565b613fad565b81548490839071ff00000000000000000000000000000000001916608860020a836007811115613f7957fe5b021790555081546fffffffffffffffff00000000000000001916680100000000000000004267ffffffffffffffff16021782555b806007811115613fb957fe5b600111158015613fd557506003816007811115613fd257fe5b11155b15614005576006805467ffffffffffffffff19811667ffffffffffffffff91821660001901909116179055614070565b80600781111561401157fe5b60041115801561402d5750600781600781111561402a57fe5b11155b15614070576006805460001967ffffffffffffffff6801000000000000000080840482169290920116026fffffffffffffffff0000000000000000199091161790555b83600781111561407c57fe5b6001111580156140985750600384600781111561409557fe5b11155b156140c6576006805467ffffffffffffffff8082166001011667ffffffffffffffff19909116179055614130565b8360078111156140d257fe5b6004111580156140ee575060078460078111156140eb57fe5b11155b156141305760068054600167ffffffffffffffff6801000000000000000080840482169290920116026fffffffffffffffff0000000000000000199091161790555b82600160a060020a0316857fb6fd4b2356bc13ccc82da8b790e9bf9bdcfd4743d32dd10aa48189ec53f6bc0083876040518083600781111561416e57fe5b60ff16815260200182600781111561418257fe5b60ff1681526020019250505060405180910390a35050505050565b60006141a76149a0565b600060a0604051908101604052804267ffffffffffffffff1681526020014267ffffffffffffffff16815260200185151581526020018660078111156141e957fe5b815267ffffffffffffffff42811660209283015260058054600181810180845560009390935285517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090920180549587015160408801511515608060020a0270ff000000000000000000000000000000001991871668010000000000000000026fffffffffffffffff0000000000000000199590971667ffffffffffffffff19909816979097179390931694909417919091169390931780835560608501519496509293909286929190829071ff00000000000000000000000000000000001916608860020a8360078111156142db57fe5b021790555060809190910151815467ffffffffffffffff90911672010000000000000000000000000000000000000279ffffffffffffffff00000000000000000000000000000000000019909116179055600160a060020a03881660008181526008602090815260408083209590940394859055848252600790528281208054600160a060020a03191683179055915192935083929091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a495945050505050565b600160a060020a03166000908152600860205260408120541190565b6000818152600960205260408082208054600160a060020a031916905551829190600160a060020a038516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925908390a45050565b61441b826143a1565b15614470576040805160e560020a62461bcd02815260206004820152601860248201527f5f746f20616c726561647920686f6c64206120746f6b656e0000000000000000604482015290519081900360640190fd5b614479826148f3565b156144ce576040805160e560020a62461bcd02815260206004820152601660248201527f5f746f206d7573746e2774206120636f6e747261637400000000000000000000604482015290519081900360640190fd5b426005828154811015156144de57fe5b9060005260206000200160000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055504260058281548110151561452157fe5b60009182526020808320909101805467ffffffffffffffff9490941672010000000000000000000000000000000000000279ffffffffffffffff0000000000000000000000000000000000001990941693909317909255600160a060020a0380861680835260088085526040808520859055868552600786528085208054948916600160a060020a03199095168517905583855294528383208590559251849391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008181526007602090815260408083208054600160a060020a03198116909155600160a060020a03168084526008909252822091909155600580548390811061463157fe5b60009182526020822001805479ffffffffffffffffffffffffffffffffffffffffffffffffffff19169055604051839190600160a060020a038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606060008082818515156146df5760408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152945061479b565b8593505b83156146fa57600190920191600a840493506146e3565b859350826040519080825280601f01601f19166020018201604052801561472b578160200160208202803883390190505b5091505060001982015b831561479757815160001982019160f860020a6030600a8806010291849190811061475c57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350614735565b8194505b50505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f1916602001820160405280156147e7578160200160208202803883390190505b50935083925060009150600090505b855181101561486c57858181518110151561480d57fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561483457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001016147f6565b5060005b84518110156148e657848181518110151561488757fe5b90602001015160f860020a900460f860020a0283838060010194508151811015156148ae57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101614870565b5090979650505050505050565b6000903b1190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061493c5782800160ff19823516178555614969565b82800160010185558215614969579182015b8281111561496957823582559160200191906001019061494e565b506149759291506149cf565b5090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160a0810182526000808252602082018190529181018290529060608201908152600060209091015290565b61103691905b8082111561497557600081556001016149d5560070726f746f636f6c206861732070617573656400000000000000000000000000696e76616c6964206164647265737300000000000000000000000000000000006f6e6c79206f776e65720000000000000000000000000000000000000000000063616e63656c2061756374696f6e2066697273740000000000000000000000007065726d697373696f6e2064656e6965640000000000000000000000000000006973206e6f74206120746f6b656e000000000000000000000000000000000000a165627a7a72305820614408d6b8cb8ec89a81a4a01cb1424113af0ea8b7211d7ba20233cfba32f68c0029", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000005": "0x00000000000000000000000000000000000000000000000000000000000000d6", @@ -58,7 +56,6 @@ "gas": "0x6fc38", "gasUsed": "0x2fb97", "input": "0xc55ac4a5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000001a642015b3737c5e97978f4cf2bd1a27dd5a24d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", "calls": [ { "type": "STATICCALL", diff --git a/tracers/tracers.go b/tracers/tracers.go index 5dbc7797c..4ff14a0d8 100644 --- a/tracers/tracers.go +++ b/tracers/tracers.go @@ -20,7 +20,9 @@ package tracers import ( "encoding/json" "errors" + "fmt" + "github.com/vechain/thor/state" "github.com/vechain/thor/thor" "github.com/vechain/thor/vm" ) @@ -28,45 +30,97 @@ import ( // Context contains some contextual infos for a transaction execution that is not // available from within the EVM object. type Context struct { - BlockID thor.Bytes32 // Hash of the block the tx is contained within (zero if dangling tx or call) - TxIndex int // Index of the transaction within a block (zero if dangling tx or call) - TxID thor.Bytes32 // Hash of the transaction being traced (zero if dangling call) + BlockID thor.Bytes32 // Hash of the block the tx is contained within (zero if dangling tx or call) + BlockTime uint64 // Timestamp of the block the tx is contained within + TxIndex int // Index of the transaction within a block (zero if dangling tx or call) + TxID thor.Bytes32 // ID of the transaction being traced (zero if dangling call) + ClauseIndex int // Index of the clause within a transaction (zero if dangling call) + State *state.State } // Tracer interface extends vm.EVMLogger and additionally // allows collecting the tracing result. type Tracer interface { vm.Logger + SetContext(*Context) GetResult() (json.RawMessage, error) // Stop terminates execution of the tracer at the first opportune moment. Stop(err error) } -type lookupFunc func(string, *Context, json.RawMessage) (Tracer, error) +type ctorFn func(json.RawMessage) (Tracer, error) +type jsCtorFn func(string, json.RawMessage) (Tracer, error) -var ( - lookups []lookupFunc -) +type elem struct { + ctor ctorFn + isJS bool +} -// RegisterLookup registers a method as a lookup for tracers, meaning that -// users can invoke a named tracer through that lookup. If 'wildcard' is true, -// then the lookup will be placed last. This is typically meant for interpreted -// engines (js) which can evaluate dynamic user-supplied code. -func RegisterLookup(wildcard bool, lookup lookupFunc) { - if wildcard { - lookups = append(lookups, lookup) - } else { - lookups = append([]lookupFunc{lookup}, lookups...) - } +// DefaultDirectory is the collection of tracers bundled by default. +var DefaultDirectory = directory{elems: make(map[string]elem)} + +// directory provides functionality to lookup a tracer by name +// and a function to instantiate it. It falls back to a JS code evaluator +// if no tracer of the given name exists. +type directory struct { + elems map[string]elem + jsEval jsCtorFn +} + +// Register registers a method as a lookup for tracers, meaning that +// users can invoke a named tracer through that lookup. +func (d *directory) Register(name string, f ctorFn, isJS bool) { + d.elems[name] = elem{ctor: f, isJS: isJS} +} + +// RegisterJSEval registers a tracer that is able to parse +// dynamic user-provided JS code. +func (d *directory) RegisterJSEval(f jsCtorFn) { + d.jsEval = f } // New returns a new instance of a tracer, by iterating through the -// registered lookups. -func New(code string, ctx *Context, cfg json.RawMessage) (Tracer, error) { - for _, lookup := range lookups { - if tracer, err := lookup(code, ctx, cfg); err == nil { - return tracer, nil - } +// registered lookups. Name is either name of an existing tracer +// or an arbitrary JS code. +func (d *directory) New(name string, cfg json.RawMessage) (Tracer, error) { + if elem, ok := d.elems[name]; ok { + return elem.ctor(cfg) + } + // Assume JS code + return d.jsEval(name, cfg) +} + +// IsJS will return true if the given tracer will evaluate +// JS code. Because code evaluation has high overhead, this +// info will be used in determining fast and slow code paths. +func (d *directory) IsJS(name string) bool { + if elem, ok := d.elems[name]; ok { + return elem.isJS + } + // JS eval will execute JS code + return true +} + +const ( + memoryPadLimit = 1024 * 1024 +) + +// GetMemoryCopyPadded returns offset + size as a new slice. +// It zero-pads the slice if it extends beyond memory bounds. +func GetMemoryCopyPadded(m *vm.Memory, offset, size int64) ([]byte, error) { + if offset < 0 || size < 0 { + return nil, errors.New("offset or size must not be negative") + } + if int(offset+size) < m.Len() { // slice fully inside memory + return m.GetCopy(offset, size), nil + } + paddingNeeded := int(offset+size) - m.Len() + if paddingNeeded > memoryPadLimit { + return nil, fmt.Errorf("reached limit for padding memory slice: %d", paddingNeeded) + } + cpy := make([]byte, size) + if overlap := int64(m.Len()) - offset; overlap > 0 { + copy(cpy, m.GetPtr(offset, overlap)) } - return nil, errors.New("tracer not found") + return cpy, nil } diff --git a/tracers/tracers_test.go b/tracers/tracers_test.go index ba427a1d0..0d2952f7f 100644 --- a/tracers/tracers_test.go +++ b/tracers/tracers_test.go @@ -65,8 +65,8 @@ type clause struct { type account struct { Balance *math.HexOrDecimal256 `json:"balance"` + Energy *math.HexOrDecimal256 `json:"energy"` Code hexutil.Bytes `json:"code"` - Nonce uint64 `json:"nonce"` Storage map[common.Hash]thor.Bytes32 `json:"storage"` } @@ -114,7 +114,7 @@ func RunTracerTest(t *testing.T, data *traceTest, tracerName string) json.RawMes var tr tracers.Tracer if len(tracerName) > 0 { - tr, err = tracers.New(tracerName, nil, data.Config) + tr, err = tracers.DefaultDirectory.New(tracerName, data.Config) assert.Nil(t, err) } else { cfg, _ := json.Marshal(logger.Config{ @@ -124,6 +124,10 @@ func RunTracerTest(t *testing.T, data *traceTest, tracerName string) json.RawMes tr, _ = logger.NewStructLogger(cfg) } + tr.SetContext(&tracers.Context{ + BlockTime: rt.Context().Time, + State: rt.State(), + }) rt.SetVMConfig(vm.Config{ Debug: true, Tracer: tr, @@ -142,7 +146,7 @@ func RunTracerTest(t *testing.T, data *traceTest, tracerName string) json.RawMes } func TestNewTracer(t *testing.T) { - _, err := tracers.New("callTracer", nil, nil) + _, err := tracers.DefaultDirectory.New("callTracer", nil) assert.Nil(t, err) } diff --git a/vm/evm.go b/vm/evm.go index 0775ce479..4b0c99d1a 100644 --- a/vm/evm.go +++ b/vm/evm.go @@ -19,7 +19,6 @@ package vm import ( "math/big" "sync/atomic" - "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" @@ -168,11 +167,10 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas if evm.vmConfig.Debug { // Capture the tracer start/end events in debug mode if evm.depth == 0 { - start := time.Now() evm.vmConfig.Tracer.CaptureStart(evm, caller.Address(), addr, false, input, gas, value) defer func() { // Lazy evaluation of the parameters - evm.vmConfig.Tracer.CaptureEnd(ret, gas-leftOverGas, time.Since(start), err) + evm.vmConfig.Tracer.CaptureEnd(ret, gas-leftOverGas, err) }() } else { // Handle tracer events for entering and exiting a call frame @@ -385,11 +383,10 @@ func (evm *EVM) Create(caller ContractRef, code []byte, gas uint64, value *big.I if evm.vmConfig.Debug { // Capture the tracer start/end events in debug mode if evm.depth == 0 { - start := time.Now() evm.vmConfig.Tracer.CaptureStart(evm, caller.Address(), contractAddr, true, code, gas, value) defer func() { // Lazy evaluation of the parameters - evm.vmConfig.Tracer.CaptureEnd(ret, gas-leftOverGas, time.Since(start), err) + evm.vmConfig.Tracer.CaptureEnd(ret, gas-leftOverGas, err) }() } else { // Handle tracer events for entering and exiting a call frame diff --git a/vm/logger.go b/vm/logger.go index 9741b8866..0b62faada 100644 --- a/vm/logger.go +++ b/vm/logger.go @@ -2,7 +2,6 @@ package vm import ( "math/big" - "time" "github.com/ethereum/go-ethereum/common" ) @@ -15,10 +14,10 @@ import ( type Logger interface { // Top call frame CaptureStart(env *EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) - CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) + CaptureEnd(output []byte, gasUsed uint64, err error) // Rest of call frames - CaptureEnter(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) // !! - CaptureExit(output []byte, gasUsed uint64, err error) // !! + CaptureEnter(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) + CaptureExit(output []byte, gasUsed uint64, err error) // Opcode level CaptureState(pc uint64, op OpCode, gas, cost uint64, memory *Memory, stack *Stack, contract *Contract, rData []byte, depth int, err error) CaptureFault(pc uint64, op OpCode, gas, cost uint64, memory *Memory, stack *Stack, contract *Contract, depth int, err error)