From 2c2abf666934e573cd02d753ab9195a04cf91967 Mon Sep 17 00:00:00 2001 From: Chase Wright Date: Tue, 3 Mar 2026 17:17:09 -0600 Subject: [PATCH 1/8] debug, schemas: add opcode tracer spec for debug_traceBlockByNumber and debug_traceTransaction Made-with: Cursor --- src/debug/trace.yaml | 205 ++++++++++ src/schemas/opcode-tracer.yaml | 248 ++++++++++++ tools/testgen/generators.go | 2 + tools/testgen/generators_debug_trace.go | 512 ++++++++++++++++++++++++ 4 files changed, 967 insertions(+) create mode 100644 src/debug/trace.yaml create mode 100644 src/schemas/opcode-tracer.yaml create mode 100644 tools/testgen/generators_debug_trace.go diff --git a/src/debug/trace.yaml b/src/debug/trace.yaml new file mode 100644 index 000000000..4a4a29424 --- /dev/null +++ b/src/debug/trace.yaml @@ -0,0 +1,205 @@ +- name: debug_traceBlockByNumber + summary: Replays a block and returns traces for all transactions. + description: >- + Replays the block identified by the given number and returns a trace for + every transaction in the block. The parent block must be present in the + client's database. The genesis block (block 0) cannot be traced because + it has no parent state to replay from; clients MUST return an error for + this input. + + When no tracer is specified (or the tracer field is absent), the opcode + (struct) logger is used and each entry conforms to + OpcodeBlockTransactionTrace, whose result field conforms to + OpcodeTransactionTrace. + + When a named tracer is specified via the tracer field in TraceConfig (e.g. + "callTracer", "prestateTracer"), the result field of each entry contains + tracer-specific output. Defining the output schemas of named tracers is + outside the scope of this specification. + + The response is an array ordered by transaction index within the block. + Each entry includes the transaction hash paired with its trace result. + params: + - name: Block + required: true + schema: + $ref: '#/components/schemas/BlockNumberOrTag' + - name: TraceConfig + required: false + schema: + $ref: '#/components/schemas/TraceConfig' + errors: + - code: 4444 + message: Pruned history unavailable + result: + name: Block trace + schema: + title: Array of per-transaction traces + description: >- + An array of trace entries ordered by transaction index within the block. + When no named tracer is set, each entry conforms to + OpcodeBlockTransactionTrace. When a named tracer is set, the result + field of each entry contains tracer-specific output not defined by this + specification, but the txHash field is always present. + type: array + items: + anyOf: + - title: Opcode tracer entry + description: Returned when no named tracer is specified. + $ref: '#/components/schemas/OpcodeBlockTransactionTrace' + - title: Named tracer entry + description: >- + Returned when a named tracer is specified. The result field + contains tracer-specific output not defined by this specification. + type: object + required: + - txHash + - result + properties: + txHash: + $ref: '#/components/schemas/hash32' + result: + description: >- + Named tracer output. The schema is unspecified and may be + any valid JSON value. + examples: + - name: debug_traceBlockByNumber example (opcode tracer) + params: + - name: Block + value: '0x3' + - name: TraceConfig + value: + disableStack: false + disableStorage: false + enableMemory: false + enableReturnData: false + result: + name: Block trace + value: + - txHash: '0xdd8cf045113754c306ba9ac8ac8786235e33bc5c087678084ef260a2a583f127' + result: + gas: 26916 + failed: false + returnValue: '0x' + structLogs: + - pc: 0 + op: PUSH1 + gas: 68612 + gasCost: 3 + depth: 1 + stack: + - '0x60' + - pc: 2 + op: PUSH1 + gas: 68609 + gasCost: 3 + depth: 1 + stack: + - '0x60' + - '0x40' + - pc: 4 + op: MSTORE + gas: 68606 + gasCost: 12 + depth: 1 + stack: [] + +- name: debug_traceTransaction + summary: Replays a transaction and returns its trace. + description: >- + Executes the transaction identified by the given hash in the exact manner it + was executed on the network, replaying all prior transactions in the same + block as necessary to reconstruct the correct pre-execution state. + + When no tracer is specified (or the tracer field is absent), the opcode + (struct) logger is used and the result conforms to OpcodeTransactionTrace. + + When a named tracer is specified via the tracer field in TraceConfig (e.g. + "callTracer", "prestateTracer"), the result contains tracer-specific output. + Defining the output schemas of named tracers is outside the scope of this + specification. + params: + - name: Transaction hash + required: true + schema: + $ref: '#/components/schemas/hash32' + - name: TraceConfig + required: false + schema: + $ref: '#/components/schemas/TraceConfig' + errors: + - code: 4444 + message: Pruned history unavailable + result: + name: Transaction trace + schema: + title: Transaction trace result + anyOf: + - title: Opcode tracer result + description: Returned when no named tracer is specified. + $ref: '#/components/schemas/OpcodeTransactionTrace' + - title: Named tracer result + description: >- + Returned when a named tracer is specified via the tracer field. + The format is tracer-specific and not defined by this specification. + Named tracers may return any JSON value (object, array, integer, etc.). + examples: + - name: debug_traceTransaction example (opcode tracer) + params: + - name: Transaction hash + value: '0xdd8cf045113754c306ba9ac8ac8786235e33bc5c087678084ef260a2a583f127' + - name: TraceConfig + value: + disableStack: false + disableStorage: false + enableMemory: false + enableReturnData: false + result: + name: Transaction trace + value: + gas: 26916 + failed: false + returnValue: '0x' + structLogs: + - pc: 0 + op: PUSH1 + gas: 68612 + gasCost: 3 + depth: 1 + stack: + - '0x60' + - pc: 2 + op: PUSH1 + gas: 68609 + gasCost: 3 + depth: 1 + stack: + - '0x60' + - '0x40' + - pc: 4 + op: MSTORE + gas: 68606 + gasCost: 12 + depth: 1 + stack: [] + - name: debug_traceTransaction example (callTracer) + params: + - name: Transaction hash + value: '0xdd8cf045113754c306ba9ac8ac8786235e33bc5c087678084ef260a2a583f127' + - name: TraceConfig + value: + tracer: callTracer + tracerConfig: + onlyTopCall: false + withLog: true + result: + name: Transaction trace (callTracer) + value: + type: CALL + from: '0xfe3b557e8fb62b89f4916b721be55ceb828dbd73' + to: '0x0100000000000000000000000000000000000000' + value: '0x0' + gas: '0x1a49e' + gasUsed: '0x1a49e' + input: '0x' + output: '0x' diff --git a/src/schemas/opcode-tracer.yaml b/src/schemas/opcode-tracer.yaml new file mode 100644 index 000000000..e923da62d --- /dev/null +++ b/src/schemas/opcode-tracer.yaml @@ -0,0 +1,248 @@ +TraceConfig: + title: Trace configuration + description: >- + Configuration object accepted by debug_traceBlockByNumber and + debug_traceTransaction. + + When the tracer field is absent or empty, the opcode (struct) logger is + used and the result conforms to OpcodeTransactionTrace. The fields + enableMemory, disableStack, disableStorage, enableReturnData, and limit + only apply to the opcode logger and are ignored when a named tracer is set. + + When the tracer field is set to a named tracer (e.g. "callTracer", + "prestateTracer"), the result format is tracer-specific. Defining the + output schemas of named tracers is outside the scope of this specification. + type: object + properties: + tracer: + title: tracer name + description: >- + The name of a built-in or custom tracer to use. When absent or empty, + the opcode (struct) logger is used. + + Example built-in tracer names in go-ethereum include: + 4byteTracer, callTracer, prestateTracer, noopTracer, bigramTracer, + evmdisTracer, opcountTracer, trigramTracer, unigramTracer. + + Clients may support different sets of named tracers. + + Custom JavaScript tracers may also be supplied as an expression string. + type: string + tracerConfig: + title: tracer configuration + description: >- + An optional tracer-specific configuration object passed to the named + tracer. Only applicable when the tracer field is set. + The fields accepted here depend on the named tracer in use. + type: object + timeout: + title: execution timeout + description: >- + Duration string specifying a timeout for trace execution. Applies to + all tracers. Accepts Go duration strings (e.g. "5s", "300ms", "2m"). + Default: "5s". + type: string + reexec: + title: reexec block count + description: >- + Number of blocks that may be reexecuted to find historical state + required for tracing. Applies to all tracers. + Default: 128. + type: integer + minimum: 0 + disableStorage: + title: disable storage capture + description: >- + Opcode logger only. Setting to true disables storage capture in + structLogs. When true, the storage field is omitted from each StructLog + entry. Ignored when tracer is set. + Default: false. + type: boolean + disableStack: + title: disable stack capture + description: >- + Opcode logger only. Setting to true disables stack capture in + structLogs. When true, the stack field is omitted from each StructLog + entry. Ignored when tracer is set. + Default: false. + type: boolean + enableMemory: + title: enable memory capture + description: >- + Opcode logger only. Setting to true enables memory capture in + structLogs. When false (default), the memory field is omitted from each + StructLog entry. Ignored when tracer is set. + Default: false. + type: boolean + enableReturnData: + title: enable return data capture + description: >- + Opcode logger only. Setting to true enables return data capture in + structLogs. When false (default), the returnData field is omitted from + each StructLog entry. Ignored when tracer is set. + Default: false. + type: boolean + limit: + title: step limit + description: >- + Opcode logger only. Maximum number of opcode steps to capture. Zero + means no limit. When the limit is reached, execution continues but no + further StructLog entries are recorded. Ignored when tracer is set. + Default: 0 (unlimited). + type: integer + minimum: 0 + debug: + title: debug print + description: >- + Opcode logger only. When true, the client may print the trace output + to its internal log during execution. Has no effect on the JSON-RPC + response. Ignored when tracer is set. + Default: false. + type: boolean +StructLog: + title: Opcode execution log entry + description: >- + A single step in the EVM execution trace produced by the opcode (struct) + logger. One entry is emitted per opcode executed. + type: object + required: + - pc + - op + - gas + - gasCost + - depth + properties: + pc: + title: program counter + description: The program counter position of this opcode in the contract bytecode. + type: integer + minimum: 0 + op: + title: opcode name + description: The name of the EVM opcode executed at this step (e.g. "PUSH1", "SSTORE"). + type: string + gas: + title: remaining gas + description: The amount of gas remaining before executing this opcode. + type: integer + minimum: 0 + gasCost: + title: gas cost + description: The gas cost charged for executing this opcode. + type: integer + minimum: 0 + depth: + title: call depth + description: The call stack depth at this execution step. Starts at 1 for the outermost call. + type: integer + minimum: 1 + error: + title: execution error + description: >- + The error encountered during execution of this opcode, if any. + This field MUST be absent when no error occurred. Clients MUST NOT + include this field as null or as an empty string when there is no error. + type: string + refund: + title: gas refund counter + description: >- + The accumulated gas refund counter at this execution step. + Clients MUST include this field at every step when it is non-zero. + Clients SHOULD include this field at every step even when zero. + type: integer + minimum: 0 + stack: + title: EVM stack + description: >- + The contents of the EVM stack at this step, ordered from bottom (index 0) + to top (last element). Each value is a 0x-prefixed uint256 quantity. + This field is absent when disableStack is true. + type: array + items: + $ref: '#/components/schemas/uint256' + memory: + title: EVM memory + description: >- + The contents of EVM memory at this step, divided into 32-byte chunks. + Each element is a 0x-prefixed, zero-padded 32-byte hex word representing + a consecutive 32-byte memory slot starting at offset (index * 32). + This field is absent (not null) when enableMemory is false. + type: array + items: + $ref: '#/components/schemas/bytes32' + returnData: + title: return data + description: >- + The return data from the most recent call at this step. + This field is absent when enableReturnData is false. + $ref: '#/components/schemas/bytes' + storage: + title: contract storage + description: >- + A cumulative snapshot of all storage slots accessed or modified by the + current contract up to and including this step. Keys are 0x-prefixed, + zero-padded 32-byte storage slot indices; values are the 32-byte stored + values reflecting the post-execution state of the opcode at this step + (i.e., for SSTORE, the value reflects the new value just written). + + This field is only populated at SLOAD and SSTORE opcodes. + At all other opcodes, this field MUST be absent (not an empty object). + This field is absent when disableStorage is true. + type: object + additionalProperties: + $ref: '#/components/schemas/bytes32' +OpcodeTransactionTrace: + title: Opcode transaction trace + description: >- + The result of tracing a single transaction using the opcode (struct) logger. + This is the result type of debug_traceTransaction and each element's result + field in the debug_traceBlockByNumber response when no named tracer is used. + type: object + required: + - gas + - failed + - returnValue + - structLogs + properties: + gas: + title: gas used + description: Total amount of gas consumed by the transaction. + type: integer + minimum: 0 + failed: + title: failed + description: Whether the transaction execution failed (reverted or ran out of gas). + type: boolean + returnValue: + title: return value + description: >- + The data returned by the transaction. 0x-prefixed hex-encoded bytes. + MUST be "0x" (not an empty string) when no data was returned. + $ref: '#/components/schemas/bytes' + structLogs: + title: opcode execution logs + description: >- + The ordered sequence of opcode execution steps. Will be empty for simple + ETH transfers between externally owned accounts that execute no EVM code. + type: array + items: + $ref: '#/components/schemas/StructLog' +OpcodeBlockTransactionTrace: + title: Opcode block transaction trace entry + description: >- + A single transaction's opcode trace result within a debug_traceBlockByNumber + response when no named tracer is used. Pairs the transaction hash with its + opcode trace. + type: object + required: + - txHash + - result + properties: + txHash: + title: transaction hash + description: The hash of the transaction this trace entry corresponds to. + $ref: '#/components/schemas/hash32' + result: + title: opcode transaction trace + description: The opcode trace for this transaction. + $ref: '#/components/schemas/OpcodeTransactionTrace' diff --git a/tools/testgen/generators.go b/tools/testgen/generators.go index a7095aa82..efa1b5ca5 100644 --- a/tools/testgen/generators.go +++ b/tools/testgen/generators.go @@ -90,6 +90,8 @@ var AllMethods = []MethodTests{ DebugGetRawBlock, DebugGetRawReceipts, DebugGetRawTransaction, + DebugTraceTransaction, + DebugTraceBlockByNumber, EthBlobBaseFee, NetVersion, TestingBuildBlockV1, diff --git a/tools/testgen/generators_debug_trace.go b/tools/testgen/generators_debug_trace.go new file mode 100644 index 000000000..bc96d3193 --- /dev/null +++ b/tools/testgen/generators_debug_trace.go @@ -0,0 +1,512 @@ +package testgen + +import ( + "context" + "errors" + "fmt" + "math" + "regexp" + "strings" + + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + gethrpc "github.com/ethereum/go-ethereum/rpc" +) + +// bytes32Pattern matches a 0x-prefixed, 32-byte (64 lowercase hex character) value. +var bytes32Pattern = regexp.MustCompile(`^0x[0-9a-f]{64}$`) + +// uint256Pattern matches a 0x-prefixed uint256 quantity in canonical form. +var uint256Pattern = regexp.MustCompile(`^0x(0|[1-9a-f][0-9a-f]{0,63})$`) + +// multiError collects multiple validation errors and formats them as one. +type multiError struct { + errs []string +} + +func (m *multiError) add(format string, args ...interface{}) { + m.errs = append(m.errs, fmt.Sprintf(format, args...)) +} + +func (m *multiError) err() error { + if len(m.errs) == 0 { + return nil + } + return errors.New(strings.Join(m.errs, "\n ")) +} + +func asNonNegativeInteger(v interface{}) (float64, bool) { + n, ok := v.(float64) + if !ok { + return 0, false + } + if n < 0 || math.Trunc(n) != n { + return 0, false + } + return n, true +} + +// validateStructLog validates a single StructLog entry against the opcode tracer spec. +// All violations are collected and returned together. +// +// Key rules enforced: +// - pc, gas, gasCost, depth, op are required +// - error MUST be absent when no error (not null, not "") +// - stack values MUST be canonical 0x-prefixed uint256 hex +// - memory values MUST be 0x-prefixed, 64-char hex (bytes32) +// - storage keys/values MUST be 0x-prefixed, 64-char hex (bytes32) +// - storage MUST be absent (not {}) at non-SLOAD/SSTORE opcodes +func validateStructLog(i int, log map[string]interface{}) error { + var me multiError + prefix := fmt.Sprintf("structLogs[%d]", i) + + // Required integer fields with bounds. + for _, field := range []string{"pc", "gas", "gasCost", "depth"} { + v, ok := log[field] + if !ok { + me.add("%s: missing required field %q", prefix, field) + continue + } + n, ok := asNonNegativeInteger(v) + if !ok { + me.add("%s: field %q must be a non-negative integer, got %v (%T)", prefix, field, v, v) + continue + } + if field == "depth" && n < 1 { + me.add("%s: field %q must be >= 1, got %v", prefix, field, n) + } + } + + // Required string field: op. + opVal, ok := log["op"] + opStr := "" + if !ok { + me.add("%s: missing required field \"op\"", prefix) + } else if s, ok := opVal.(string); !ok { + me.add("%s: field \"op\" must be a string, got %T", prefix, opVal) + } else { + opStr = s + } + + // error: MUST be absent when no error occurred. + // Clients MUST NOT include this field as null or as an empty string. + if errVal, exists := log["error"]; exists { + if errVal == nil { + me.add("%s: \"error\" MUST be absent when no error (got null)", prefix) + } else if errStr, ok := errVal.(string); !ok { + me.add("%s: \"error\" must be a string, got %T", prefix, errVal) + } else if errStr == "" { + me.add("%s: \"error\" MUST be absent when no error (got empty string)", prefix) + } + } + + // stack: if present, each element must be canonical uint256 hex. + if stackVal, exists := log["stack"]; exists { + if stack, ok := stackVal.([]interface{}); !ok { + me.add("%s: \"stack\" must be an array, got %T", prefix, stackVal) + } else { + for j, item := range stack { + s, ok := item.(string) + if !ok { + me.add("%s: stack[%d] must be a string, got %T", prefix, j, item) + } else if !uint256Pattern.MatchString(s) { + me.add("%s: stack[%d] must be canonical 0x-prefixed uint256 hex, got %q", prefix, j, s) + } + } + } + } + + // memory: if present, each element must be a valid bytes32. + if memVal, exists := log["memory"]; exists { + if mem, ok := memVal.([]interface{}); !ok { + me.add("%s: \"memory\" must be an array, got %T", prefix, memVal) + } else { + for j, item := range mem { + s, ok := item.(string) + if !ok { + me.add("%s: memory[%d] must be a string, got %T", prefix, j, item) + } else if !bytes32Pattern.MatchString(s) { + me.add("%s: memory[%d] must be 0x-prefixed 32-byte hex (got %q)", prefix, j, s) + } + } + } + } + + // returnData: if present, must be a 0x-prefixed hex string. + if rdVal, exists := log["returnData"]; exists { + if rd, ok := rdVal.(string); !ok { + me.add("%s: \"returnData\" must be a string, got %T", prefix, rdVal) + } else if _, err := hexutil.Decode(rd); err != nil { + me.add("%s: \"returnData\" must be valid 0x-prefixed hex bytes (got %q): %v", prefix, rd, err) + } + } + + // refund: optional, but must be a non-negative integer when present. + if refundVal, exists := log["refund"]; exists { + if _, ok := asNonNegativeInteger(refundVal); !ok { + me.add("%s: \"refund\" must be a non-negative integer, got %v (%T)", prefix, refundVal, refundVal) + } + } + + // storage: if present, must only appear at SLOAD/SSTORE; must not be empty object; keys/values must be bytes32. + if storageVal, exists := log["storage"]; exists { + if storageVal == nil { + me.add("%s: \"storage\" MUST be absent (not null)", prefix) + } else if storage, ok := storageVal.(map[string]interface{}); !ok { + me.add("%s: \"storage\" must be an object, got %T", prefix, storageVal) + } else { + // An empty storage object must be absent, not present as {}. + if len(storage) == 0 { + me.add("%s: \"storage\" MUST be absent (not {}) when no storage slots have been accessed", prefix) + } + // Storage is only valid at SLOAD and SSTORE opcodes. + if opStr != "" && opStr != "SLOAD" && opStr != "SSTORE" { + me.add("%s: \"storage\" MUST be absent at %q opcode (only SLOAD and SSTORE may populate storage)", prefix, opStr) + } + for k, v := range storage { + if !bytes32Pattern.MatchString(k) { + me.add("%s: storage key %q must be 0x-prefixed 32-byte hex", prefix, k) + } + vs, ok := v.(string) + if !ok { + me.add("%s: storage value for key %q must be a string, got %T", prefix, k, v) + } else if !bytes32Pattern.MatchString(vs) { + me.add("%s: storage value for key %q must be 0x-prefixed 32-byte hex (got %q)", prefix, k, vs) + } + } + } + } + + return me.err() +} + +// validateOpcodeTransactionTrace validates a decoded debug_traceTransaction response +// for compliance with the execution-apis opcode tracer specification. +// All violations across all structLogs are collected and returned together. +// +// Key rules enforced: +// - gas, failed, returnValue, structLogs are required +// - returnValue MUST be "0x" (not "") when empty +// - each structLog is validated by validateStructLog +func validateOpcodeTransactionTrace(result map[string]interface{}) error { + var me multiError + + // Required top-level fields. + for _, field := range []string{"gas", "failed", "returnValue", "structLogs"} { + if _, ok := result[field]; !ok { + me.add("missing required field %q", field) + } + } + // Return early if required fields are absent — remaining checks would panic. + if err := me.err(); err != nil { + return err + } + + // gas: must be a non-negative integer. + if _, ok := asNonNegativeInteger(result["gas"]); !ok { + me.add("\"gas\" must be a non-negative integer, got %v (%T)", result["gas"], result["gas"]) + } + + // failed: must be a boolean. + if _, ok := result["failed"].(bool); !ok { + me.add("\"failed\" must be a boolean, got %T", result["failed"]) + } + + // returnValue: must be a 0x-prefixed hex string. + // Empty return value MUST be "0x", not "". + if rv, ok := result["returnValue"].(string); !ok { + me.add("\"returnValue\" must be a string, got %T", result["returnValue"]) + } else if _, err := hexutil.Decode(rv); err != nil { + me.add("\"returnValue\" must be valid 0x-prefixed hex bytes; empty return value must be \"0x\" not \"\" (got %q): %v", rv, err) + } + + // structLogs: must be an array; validate each entry. + logsVal, ok := result["structLogs"].([]interface{}) + if !ok { + me.add("\"structLogs\" must be an array, got %T", result["structLogs"]) + } else { + for i, logVal := range logsVal { + log, ok := logVal.(map[string]interface{}) + if !ok { + me.add("structLogs[%d] must be an object, got %T", i, logVal) + continue + } + if err := validateStructLog(i, log); err != nil { + me.add("%s", err.Error()) + } + } + } + + return me.err() +} + +func validateOpcodeBlockTraceResult(block *types.Block, result []map[string]interface{}) error { + if len(result) != block.Transactions().Len() { + return fmt.Errorf("expected %d trace entries (one per tx), got %d", block.Transactions().Len(), len(result)) + } + for i, entry := range result { + // txHash must be present and be a valid 32-byte hex hash. + txHashVal, ok := entry["txHash"] + if !ok { + return fmt.Errorf("entry[%d]: missing required field \"txHash\"", i) + } + txHash, ok := txHashVal.(string) + if !ok { + return fmt.Errorf("entry[%d]: \"txHash\" must be a string, got %T", i, txHashVal) + } + if !bytes32Pattern.MatchString(txHash) { + return fmt.Errorf("entry[%d]: \"txHash\" must be 0x-prefixed 32-byte hex (got %q)", i, txHash) + } + // txHash must match the actual transaction in the block. + wantHash := block.Transactions()[i].Hash().Hex() + if !strings.EqualFold(txHash, wantHash) { + return fmt.Errorf("entry[%d]: \"txHash\" mismatch (got %q, want %q)", i, txHash, wantHash) + } + // result must be present and conform to OpcodeTransactionTrace. + resultVal, ok := entry["result"] + if !ok { + return fmt.Errorf("entry[%d]: missing required field \"result\"", i) + } + traceResult, ok := resultVal.(map[string]interface{}) + if !ok { + return fmt.Errorf("entry[%d]: \"result\" must be an object, got %T", i, resultVal) + } + if err := validateOpcodeTransactionTrace(traceResult); err != nil { + return fmt.Errorf("entry[%d]: %w", i, err) + } + } + return nil +} + +func validateReturnDataFieldBehavior(logs []interface{}, expectPresent bool) error { + for i, logVal := range logs { + log, ok := logVal.(map[string]interface{}) + if !ok { + return fmt.Errorf("structLogs[%d] must be an object, got %T", i, logVal) + } + rd, hasReturnData := log["returnData"] + if !expectPresent && hasReturnData { + return fmt.Errorf("structLogs[%d]: \"returnData\" MUST be absent when enableReturnData=false", i) + } + if hasReturnData { + rdStr, ok := rd.(string) + if !ok { + return fmt.Errorf("structLogs[%d]: \"returnData\" must be a string, got %T", i, rd) + } + if _, err := hexutil.Decode(rdStr); err != nil { + return fmt.Errorf("structLogs[%d]: \"returnData\" must be valid 0x-prefixed hex bytes (got %q): %v", i, rdStr, err) + } + } + } + return nil +} + +// DebugTraceTransaction tests the debug_traceTransaction method. +var DebugTraceTransaction = MethodTests{ + "debug_traceTransaction", + []Test{ + { + Name: "trace-legacy-transfer", + About: "traces a legacy EOA-to-EOA value transfer; structLogs must be empty since no EVM code runs", + SpecOnly: true, + Run: func(ctx context.Context, t *T) error { + tx := t.chain.FindTransaction("legacy value transfer", matchLegacyValueTransfer) + var result map[string]interface{} + if err := t.rpc.CallContext(ctx, &result, "debug_traceTransaction", tx.Hash()); err != nil { + return err + } + if err := validateOpcodeTransactionTrace(result); err != nil { + return err + } + // EOA-to-EOA transfers execute no EVM code; structLogs MUST be empty. + logs := result["structLogs"].([]interface{}) + if len(logs) != 0 { + return fmt.Errorf("EOA-to-EOA value transfer must produce 0 structLogs, got %d", len(logs)) + } + return nil + }, + }, + { + Name: "trace-contract-call", + About: "traces a contract call transaction; validates spec compliance of structLogs including stack encoding, error field, and storage rules", + SpecOnly: true, + Run: func(ctx context.Context, t *T) error { + tx := t.chain.FindTransaction("legacy tx with input data", matchLegacyTxWithInput) + var result map[string]interface{} + if err := t.rpc.CallContext(ctx, &result, "debug_traceTransaction", tx.Hash()); err != nil { + return err + } + if err := validateOpcodeTransactionTrace(result); err != nil { + return err + } + // Contract calls execute EVM code and must produce at least one structLog. + logs := result["structLogs"].([]interface{}) + if len(logs) == 0 { + return fmt.Errorf("expected at least one structLog for contract call, got 0") + } + return nil + }, + }, + { + Name: "trace-unknown-tx", + About: "requests a trace for a non-existent transaction hash; the client must return an error", + Run: func(ctx context.Context, t *T) error { + var result map[string]interface{} + err := t.rpc.CallContext(ctx, &result, "debug_traceTransaction", + "0x0000000000000000000000000000000000000000000000000000000000000001") + if err == nil { + return fmt.Errorf("expected error for unknown transaction hash, got result: %v", result) + } + return nil + }, + }, + }, +} + +// DebugTraceBlockByNumber tests the debug_traceBlockByNumber method. +var DebugTraceBlockByNumber = MethodTests{ + "debug_traceBlockByNumber", + []Test{ + { + Name: "trace-block-with-transactions", + About: "traces a block containing transactions; validates that each entry has txHash and a spec-compliant result", + SpecOnly: true, + Run: func(ctx context.Context, t *T) error { + block := t.chain.BlockWithTransactions("", nil) + blockNum := hexutil.EncodeUint64(block.NumberU64()) + + var result []map[string]interface{} + if err := t.rpc.CallContext(ctx, &result, "debug_traceBlockByNumber", blockNum); err != nil { + return err + } + if err := validateOpcodeBlockTraceResult(block, result); err != nil { + return err + } + return nil + }, + }, + { + Name: "trace-block-memory-encoding", + About: "traces block 0x1 with memory enabled; memory chunks must be 0x-prefixed bytes32 values", + SpecOnly: true, + Run: func(ctx context.Context, t *T) error { + traceCfg := map[string]interface{}{ + "disableStack": false, + "disableStorage": false, + "enableMemory": true, + "enableReturnData": true, + } + blockNum := hexutil.EncodeUint64(1) + var result []map[string]interface{} + if err := t.rpc.CallContext(ctx, &result, "debug_traceBlockByNumber", blockNum, traceCfg); err != nil { + return fmt.Errorf("block %s: debug_traceBlockByNumber failed: %w", blockNum, err) + } + block := t.chain.GetBlock(1) + if err := validateOpcodeBlockTraceResult(block, result); err != nil { + return fmt.Errorf("block %s: %w", blockNum, err) + } + return nil + }, + }, + { + Name: "trace-block-storage-encoding", + About: "traces block 0x2 with storage enabled; storage keys and values must be 0x-prefixed bytes32 values", + SpecOnly: true, + Run: func(ctx context.Context, t *T) error { + traceCfg := map[string]interface{}{ + "disableStack": false, + "disableStorage": false, + "enableMemory": false, + "enableReturnData": true, + } + blockNum := hexutil.EncodeUint64(2) + var result []map[string]interface{} + if err := t.rpc.CallContext(ctx, &result, "debug_traceBlockByNumber", blockNum, traceCfg); err != nil { + return fmt.Errorf("block %s: debug_traceBlockByNumber failed: %w", blockNum, err) + } + block := t.chain.GetBlock(2) + if err := validateOpcodeBlockTraceResult(block, result); err != nil { + return fmt.Errorf("block %s: %w", blockNum, err) + } + return nil + }, + }, + { + Name: "trace-block-return-data-behavior", + About: "traces a block with returnData disabled and enabled to validate returnData field gating and encoding", + SpecOnly: true, + Run: func(ctx context.Context, t *T) error { + blockNum := hexutil.EncodeUint64(1) + + disabledCfg := map[string]interface{}{ + "disableStack": false, + "disableStorage": true, + "enableMemory": false, + "enableReturnData": false, + } + var disabledResult []map[string]interface{} + if err := t.rpc.CallContext(ctx, &disabledResult, "debug_traceBlockByNumber", blockNum, disabledCfg); err != nil { + return fmt.Errorf("enableReturnData=false: debug_traceBlockByNumber failed: %w", err) + } + block := t.chain.GetBlock(1) + if err := validateOpcodeBlockTraceResult(block, disabledResult); err != nil { + return fmt.Errorf("enableReturnData=false: %w", err) + } + for entryIdx, entry := range disabledResult { + traceResult, _ := entry["result"].(map[string]interface{}) + logs, _ := traceResult["structLogs"].([]interface{}) + if err := validateReturnDataFieldBehavior(logs, false); err != nil { + return fmt.Errorf("enableReturnData=false, entry[%d]: %w", entryIdx, err) + } + } + + enabledCfg := map[string]interface{}{ + "disableStack": false, + "disableStorage": true, + "enableMemory": false, + "enableReturnData": true, + } + var enabledResult []map[string]interface{} + if err := t.rpc.CallContext(ctx, &enabledResult, "debug_traceBlockByNumber", blockNum, enabledCfg); err != nil { + return fmt.Errorf("enableReturnData=true: debug_traceBlockByNumber failed: %w", err) + } + if err := validateOpcodeBlockTraceResult(block, enabledResult); err != nil { + return fmt.Errorf("enableReturnData=true: %w", err) + } + for entryIdx, entry := range enabledResult { + traceResult, _ := entry["result"].(map[string]interface{}) + logs, _ := traceResult["structLogs"].([]interface{}) + if err := validateReturnDataFieldBehavior(logs, true); err != nil { + return fmt.Errorf("enableReturnData=true, entry[%d]: %w", entryIdx, err) + } + } + return nil + }, + }, + { + Name: "trace-genesis", + About: "requests a trace of the genesis block; must return an error since there is no parent state to replay from", + Run: func(ctx context.Context, t *T) error { + err := t.rpc.CallContext(ctx, nil, "debug_traceBlockByNumber", "0x0") + if err == nil { + return fmt.Errorf("expected error tracing genesis block (no parent state available), got success") + } + return nil + }, + }, + { + Name: "trace-block-invalid-number", + About: "requests a trace with a non-hex block number; the client must return an error", + Run: func(ctx context.Context, t *T) error { + err := t.rpc.CallContext(ctx, nil, "debug_traceBlockByNumber", "3") + if err == nil { + return fmt.Errorf("expected invalid-argument error for non-hex block number, got success") + } + if rpcErr, ok := err.(gethrpc.Error); ok && rpcErr.ErrorCode() != -32602 { + return fmt.Errorf("expected JSON-RPC invalid params (-32602), got code %d: %v", rpcErr.ErrorCode(), err) + } + return nil + }, + }, + }, +} From e7de378aa8cff2adce2d05b41e914c9e577a9eed Mon Sep 17 00:00:00 2001 From: Chase Wright Date: Tue, 3 Mar 2026 17:18:33 -0600 Subject: [PATCH 2/8] wordlist: add SLOAD and SSTORE for spellcheck Made-with: Cursor --- wordlist.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wordlist.txt b/wordlist.txt index ca45f67f0..677f6ade0 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -69,6 +69,8 @@ schemas secp sha simulateV +SLOAD +SSTORE src ssz statev From dfe4f53ba8af72e442e27610cf58c5f19f5a9599 Mon Sep 17 00:00:00 2001 From: Chase Wright Date: Wed, 11 Mar 2026 09:43:53 -0500 Subject: [PATCH 3/8] update --- tools/testgen/generators_debug_trace.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/testgen/generators_debug_trace.go b/tools/testgen/generators_debug_trace.go index bc96d3193..f911249ef 100644 --- a/tools/testgen/generators_debug_trace.go +++ b/tools/testgen/generators_debug_trace.go @@ -84,6 +84,8 @@ func validateStructLog(i int, log map[string]interface{}) error { me.add("%s: missing required field \"op\"", prefix) } else if s, ok := opVal.(string); !ok { me.add("%s: field \"op\" must be a string, got %T", prefix, opVal) + } else if s == "" { + me.add("%s: field \"op\" must not be empty", prefix) } else { opStr = s } @@ -328,7 +330,7 @@ var DebugTraceTransaction = MethodTests{ }, { Name: "trace-contract-call", - About: "traces a contract call transaction; validates spec compliance of structLogs including stack encoding, error field, and storage rules", + About: "traces a contract call transaction; validates spec compliance of structLogs including stack encoding, error field behavior, and optional storage encoding", SpecOnly: true, Run: func(ctx context.Context, t *T) error { tx := t.chain.FindTransaction("legacy tx with input data", matchLegacyTxWithInput) From c91344cffe65813e1a3ed692ea6dc374df5a2d2b Mon Sep 17 00:00:00 2001 From: Chase Wright Date: Thu, 12 Mar 2026 12:08:52 -0500 Subject: [PATCH 4/8] debug: reorder example fields, clarify gasCost description --- src/debug/trace.yaml | 12 ++++++------ src/schemas/opcode-tracer.yaml | 6 +++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/debug/trace.yaml b/src/debug/trace.yaml index 4a4a29424..eca7b6a8e 100644 --- a/src/debug/trace.yaml +++ b/src/debug/trace.yaml @@ -78,9 +78,6 @@ value: - txHash: '0xdd8cf045113754c306ba9ac8ac8786235e33bc5c087678084ef260a2a583f127' result: - gas: 26916 - failed: false - returnValue: '0x' structLogs: - pc: 0 op: PUSH1 @@ -103,6 +100,9 @@ gasCost: 12 depth: 1 stack: [] + gas: 26916 + failed: false + returnValue: '0x' - name: debug_traceTransaction summary: Replays a transaction and returns its trace. @@ -157,9 +157,6 @@ result: name: Transaction trace value: - gas: 26916 - failed: false - returnValue: '0x' structLogs: - pc: 0 op: PUSH1 @@ -182,6 +179,9 @@ gasCost: 12 depth: 1 stack: [] + gas: 26916 + failed: false + returnValue: '0x' - name: debug_traceTransaction example (callTracer) params: - name: Transaction hash diff --git a/src/schemas/opcode-tracer.yaml b/src/schemas/opcode-tracer.yaml index e923da62d..1383c2d1f 100644 --- a/src/schemas/opcode-tracer.yaml +++ b/src/schemas/opcode-tracer.yaml @@ -128,7 +128,11 @@ StructLog: minimum: 0 gasCost: title: gas cost - description: The gas cost charged for executing this opcode. + description: >- + The gas cost computed for this opcode step — the amount that will be + deducted from the remaining gas assuming successful execution. Includes + dynamic costs such as memory expansion and storage access charges + (e.g. cold vs. warm SLOAD/SSTORE). type: integer minimum: 0 depth: From 0131e3f472c573f5d2e0144ec9a634847a4c29d6 Mon Sep 17 00:00:00 2001 From: Chase Wright Date: Thu, 19 Mar 2026 08:58:22 -0500 Subject: [PATCH 5/8] debug: remove reexec from TraceConfig The reexec field is an implementation detail of geth's state reconstruction and does not belong in the standardized trace configuration. --- src/schemas/opcode-tracer.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/schemas/opcode-tracer.yaml b/src/schemas/opcode-tracer.yaml index 1383c2d1f..0e690a33b 100644 --- a/src/schemas/opcode-tracer.yaml +++ b/src/schemas/opcode-tracer.yaml @@ -42,14 +42,6 @@ TraceConfig: all tracers. Accepts Go duration strings (e.g. "5s", "300ms", "2m"). Default: "5s". type: string - reexec: - title: reexec block count - description: >- - Number of blocks that may be reexecuted to find historical state - required for tracing. Applies to all tracers. - Default: 128. - type: integer - minimum: 0 disableStorage: title: disable storage capture description: >- From a4dbaaafb6f123a0291945abe0f7a449122ade9a Mon Sep 17 00:00:00 2001 From: Chase Wright Date: Thu, 26 Mar 2026 10:38:10 -0500 Subject: [PATCH 6/8] tools: point go-ethereum replace to MysticRyuujin fork fix branch Update the replace directive to use the fix-legacy-struct-log-json branch commit (c787778ed44a) from the MysticRyuujin fork, which fixes legacy structLog JSON encoding in the struct logger tracer. --- .../trace-block-invalid-number.io | 3 + .../trace-block-memory-encoding.io | 4 + .../trace-block-return-data-behavior.io | 6 ++ .../trace-block-storage-encoding.io | 4 + .../trace-block-storage-snapshot-timing.io | 4 + .../trace-block-with-transactions.io | 4 + .../debug_traceBlockByNumber/trace-genesis.io | 3 + .../trace-contract-call.io | 4 + .../trace-legacy-transfer.io | 4 + .../trace-unknown-tx.io | 3 + tools/go.mod | 4 +- tools/go.sum | 8 +- tools/testgen/generators_debug_trace.go | 86 +++++++++++++++++++ 13 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 tests/debug_traceBlockByNumber/trace-block-invalid-number.io create mode 100644 tests/debug_traceBlockByNumber/trace-block-memory-encoding.io create mode 100644 tests/debug_traceBlockByNumber/trace-block-return-data-behavior.io create mode 100644 tests/debug_traceBlockByNumber/trace-block-storage-encoding.io create mode 100644 tests/debug_traceBlockByNumber/trace-block-storage-snapshot-timing.io create mode 100644 tests/debug_traceBlockByNumber/trace-block-with-transactions.io create mode 100644 tests/debug_traceBlockByNumber/trace-genesis.io create mode 100644 tests/debug_traceTransaction/trace-contract-call.io create mode 100644 tests/debug_traceTransaction/trace-legacy-transfer.io create mode 100644 tests/debug_traceTransaction/trace-unknown-tx.io diff --git a/tests/debug_traceBlockByNumber/trace-block-invalid-number.io b/tests/debug_traceBlockByNumber/trace-block-invalid-number.io new file mode 100644 index 000000000..4c6367b87 --- /dev/null +++ b/tests/debug_traceBlockByNumber/trace-block-invalid-number.io @@ -0,0 +1,3 @@ +// requests a trace with a non-hex block number; the client must return an error +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByNumber","params":["3"]} +<< {"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"invalid argument 0: hex string without 0x prefix"}} diff --git a/tests/debug_traceBlockByNumber/trace-block-memory-encoding.io b/tests/debug_traceBlockByNumber/trace-block-memory-encoding.io new file mode 100644 index 000000000..c871efa21 --- /dev/null +++ b/tests/debug_traceBlockByNumber/trace-block-memory-encoding.io @@ -0,0 +1,4 @@ +// traces block 0x1 with memory enabled; memory chunks must be 0x-prefixed bytes32 values +// speconly: client response is only checked for schema validity. +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByNumber","params":["0x1",{"disableStack":false,"disableStorage":false,"enableMemory":true,"enableReturnData":true}]} +<< {"jsonrpc":"2.0","id":1,"result":[{"txHash":"0xc1d605c6612a5fe84dc95810030bfe5b1d327652b381bc695e28f50d13b2b09e","result":{"gas":66259,"failed":false,"returnValue":"0x60004381526020014681526020014181526020014881526020014481526020013281526020013481526020016000f3","structLogs":[{"pc":0,"op":"PUSH1","gas":23644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":23641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":23639,"gasCost":3,"depth":1,"stack":["0xd","0x3c"]},{"pc":4,"op":"DUP1","gas":23636,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":5,"op":"PUSH1","gas":23633,"gasCost":3,"depth":1,"stack":["0x2f","0x2f"]},{"pc":7,"op":"PUSH1","gas":23630,"gasCost":3,"depth":1,"stack":["0x2f","0x2f","0xd"]},{"pc":9,"op":"CODECOPY","gas":23627,"gasCost":15,"depth":1,"stack":["0x2f","0x2f","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":23612,"gasCost":3,"depth":1,"stack":["0x2f"],"memory":["0x6000438152602001468152602001418152602001488152602001448152602001","0x3281526020013481526020016000f30000000000000000000000000000000000"]},{"pc":12,"op":"RETURN","gas":23609,"gasCost":0,"depth":1,"stack":["0x2f","0x0"],"memory":["0x6000438152602001468152602001418152602001488152602001448152602001","0x3281526020013481526020016000f30000000000000000000000000000000000"]}]}},{"txHash":"0x1999fb436409e9c2464bd9efc3aa914b2e8a843144fdcc17132fa9da0f15641e","result":{"gas":75785,"failed":false,"returnValue":"0x366002146022577177726f6e672d63616c6c6461746173697a656000526012600efd5b60003560f01c61ff01146047576d77726f6e672d63616c6c64617461600052600e6012fd5b61ffee6000526002601ef3","structLogs":[{"pc":0,"op":"PUSH1","gas":30844,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":30841,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":30839,"gasCost":3,"depth":1,"stack":["0xd","0x60"]},{"pc":4,"op":"DUP1","gas":30836,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":5,"op":"PUSH1","gas":30833,"gasCost":3,"depth":1,"stack":["0x53","0x53"]},{"pc":7,"op":"PUSH1","gas":30830,"gasCost":3,"depth":1,"stack":["0x53","0x53","0xd"]},{"pc":9,"op":"CODECOPY","gas":30827,"gasCost":21,"depth":1,"stack":["0x53","0x53","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":30806,"gasCost":3,"depth":1,"stack":["0x53"],"memory":["0x366002146022577177726f6e672d63616c6c6461746173697a65600052601260","0x0efd5b60003560f01c61ff01146047576d77726f6e672d63616c6c6461746160","0x0052600e6012fd5b61ffee6000526002601ef300000000000000000000000000"]},{"pc":12,"op":"RETURN","gas":30803,"gasCost":0,"depth":1,"stack":["0x53","0x0"],"memory":["0x366002146022577177726f6e672d63616c6c6461746173697a65600052601260","0x0efd5b60003560f01c61ff01146047576d77726f6e672d63616c6c6461746160","0x0052600e6012fd5b61ffee6000526002601ef300000000000000000000000000"]}]}},{"txHash":"0x021ae79aa8821d60291761cfe419b6cbc0ad7dd50d4aa6f14a54e5fc0d62e325","result":{"gas":87893,"failed":false,"returnValue":"0x6000356142ff54501515603b577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f08c379a0000000000000000000000000000000000000000000000000000000006000526020600452600a6024527f75736572206572726f7200000000000000000000000000000000000000000000604452604e6000fd","structLogs":[{"pc":0,"op":"PUSH1","gas":43644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":43641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":43639,"gasCost":3,"depth":1,"stack":["0xd","0xa0"]},{"pc":4,"op":"DUP1","gas":43636,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":5,"op":"PUSH1","gas":43633,"gasCost":3,"depth":1,"stack":["0x93","0x93"]},{"pc":7,"op":"PUSH1","gas":43630,"gasCost":3,"depth":1,"stack":["0x93","0x93","0xd"]},{"pc":9,"op":"CODECOPY","gas":43627,"gasCost":33,"depth":1,"stack":["0x93","0x93","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":43594,"gasCost":3,"depth":1,"stack":["0x93"],"memory":["0x6000356142ff54501515603b577f4e487b710000000000000000000000000000","0x0000000000000000000000000000600052600160045260246000fd5b7f08c379","0xa000000000000000000000000000000000000000000000000000000000600052","0x6020600452600a6024527f75736572206572726f720000000000000000000000","0x0000000000000000000000604452604e6000fd00000000000000000000000000"]},{"pc":12,"op":"RETURN","gas":43591,"gasCost":0,"depth":1,"stack":["0x93","0x0"],"memory":["0x6000356142ff54501515603b577f4e487b710000000000000000000000000000","0x0000000000000000000000000000600052600160045260246000fd5b7f08c379","0xa000000000000000000000000000000000000000000000000000000000600052","0x6020600452600a6024527f75736572206572726f720000000000000000000000","0x0000000000000000000000604452604e6000fd00000000000000000000000000"]}]}},{"txHash":"0x709f12649d057e2ad0a0a41176cc405f80af735df8cf2b89782eb3ab1699e549","result":{"gas":107962,"failed":false,"returnValue":"0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7dcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0a15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054cabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe051471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31b39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","structLogs":[{"pc":0,"op":"NUMBER","gas":60000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"PUSH1","gas":59998,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":3,"op":"MSTORE","gas":59995,"gasCost":6,"depth":1,"stack":["0x1","0x0"]},{"pc":4,"op":"PUSH1","gas":59989,"gasCost":3,"depth":1,"stack":[],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001"]},{"pc":6,"op":"PUSH1","gas":59986,"gasCost":3,"depth":1,"stack":["0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001"]},{"pc":8,"op":"MSTORE","gas":59983,"gasCost":6,"depth":1,"stack":["0x0","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001"]},{"pc":9,"op":"PUSH1","gas":59977,"gasCost":3,"depth":1,"stack":[],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":11,"op":"JUMPDEST","gas":59974,"gasCost":1,"depth":1,"stack":["0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":12,"op":"PUSH1","gas":59973,"gasCost":3,"depth":1,"stack":["0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":14,"op":"PUSH1","gas":59970,"gasCost":3,"depth":1,"stack":["0x40","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":16,"op":"KECCAK256","gas":59967,"gasCost":42,"depth":1,"stack":["0x40","0x40","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":17,"op":"PUSH1","gas":59925,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":19,"op":"DUP1","gas":59922,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":20,"op":"MLOAD","gas":59919,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":21,"op":"PUSH1","gas":59916,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":23,"op":"ADD","gas":59913,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":24,"op":"SWAP1","gas":59910,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":25,"op":"MSTORE","gas":59907,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x1","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000000"]},{"pc":26,"op":"DUP2","gas":59904,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001"]},{"pc":27,"op":"MSTORE","gas":59901,"gasCost":6,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001"]},{"pc":28,"op":"PUSH1","gas":59895,"gasCost":3,"depth":1,"stack":["0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":30,"op":"ADD","gas":59892,"gasCost":3,"depth":1,"stack":["0x40","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":31,"op":"PUSH2","gas":59889,"gasCost":3,"depth":1,"stack":["0x60"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":34,"op":"DUP2","gas":59886,"gasCost":3,"depth":1,"stack":["0x60","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":35,"op":"LT","gas":59883,"gasCost":3,"depth":1,"stack":["0x60","0x140","0x60"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":36,"op":"PUSH1","gas":59880,"gasCost":3,"depth":1,"stack":["0x60","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":38,"op":"JUMPI","gas":59877,"gasCost":10,"depth":1,"stack":["0x60","0x1","0xb"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":11,"op":"JUMPDEST","gas":59867,"gasCost":1,"depth":1,"stack":["0x60"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":12,"op":"PUSH1","gas":59866,"gasCost":3,"depth":1,"stack":["0x60"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":14,"op":"PUSH1","gas":59863,"gasCost":3,"depth":1,"stack":["0x60","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":16,"op":"KECCAK256","gas":59860,"gasCost":42,"depth":1,"stack":["0x60","0x40","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":17,"op":"PUSH1","gas":59818,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":19,"op":"DUP1","gas":59815,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":20,"op":"MLOAD","gas":59812,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":21,"op":"PUSH1","gas":59809,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":23,"op":"ADD","gas":59806,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":24,"op":"SWAP1","gas":59803,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x2"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":25,"op":"MSTORE","gas":59800,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x2","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":26,"op":"DUP2","gas":59797,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":27,"op":"MSTORE","gas":59794,"gasCost":6,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x60"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":28,"op":"PUSH1","gas":59788,"gasCost":3,"depth":1,"stack":["0x60"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":30,"op":"ADD","gas":59785,"gasCost":3,"depth":1,"stack":["0x60","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":31,"op":"PUSH2","gas":59782,"gasCost":3,"depth":1,"stack":["0x80"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":34,"op":"DUP2","gas":59779,"gasCost":3,"depth":1,"stack":["0x80","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":35,"op":"LT","gas":59776,"gasCost":3,"depth":1,"stack":["0x80","0x140","0x80"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":36,"op":"PUSH1","gas":59773,"gasCost":3,"depth":1,"stack":["0x80","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":38,"op":"JUMPI","gas":59770,"gasCost":10,"depth":1,"stack":["0x80","0x1","0xb"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":11,"op":"JUMPDEST","gas":59760,"gasCost":1,"depth":1,"stack":["0x80"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":12,"op":"PUSH1","gas":59759,"gasCost":3,"depth":1,"stack":["0x80"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":14,"op":"PUSH1","gas":59756,"gasCost":3,"depth":1,"stack":["0x80","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":16,"op":"KECCAK256","gas":59753,"gasCost":42,"depth":1,"stack":["0x80","0x40","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":17,"op":"PUSH1","gas":59711,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":19,"op":"DUP1","gas":59708,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":20,"op":"MLOAD","gas":59705,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":21,"op":"PUSH1","gas":59702,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":23,"op":"ADD","gas":59699,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":24,"op":"SWAP1","gas":59696,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x3"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":25,"op":"MSTORE","gas":59693,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x3","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000002","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":26,"op":"DUP2","gas":59690,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":27,"op":"MSTORE","gas":59687,"gasCost":6,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x80"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":28,"op":"PUSH1","gas":59681,"gasCost":3,"depth":1,"stack":["0x80"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":30,"op":"ADD","gas":59678,"gasCost":3,"depth":1,"stack":["0x80","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":31,"op":"PUSH2","gas":59675,"gasCost":3,"depth":1,"stack":["0xa0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":34,"op":"DUP2","gas":59672,"gasCost":3,"depth":1,"stack":["0xa0","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":35,"op":"LT","gas":59669,"gasCost":3,"depth":1,"stack":["0xa0","0x140","0xa0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":36,"op":"PUSH1","gas":59666,"gasCost":3,"depth":1,"stack":["0xa0","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":38,"op":"JUMPI","gas":59663,"gasCost":10,"depth":1,"stack":["0xa0","0x1","0xb"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":11,"op":"JUMPDEST","gas":59653,"gasCost":1,"depth":1,"stack":["0xa0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":12,"op":"PUSH1","gas":59652,"gasCost":3,"depth":1,"stack":["0xa0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":14,"op":"PUSH1","gas":59649,"gasCost":3,"depth":1,"stack":["0xa0","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":16,"op":"KECCAK256","gas":59646,"gasCost":42,"depth":1,"stack":["0xa0","0x40","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":17,"op":"PUSH1","gas":59604,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":19,"op":"DUP1","gas":59601,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":20,"op":"MLOAD","gas":59598,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":21,"op":"PUSH1","gas":59595,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":23,"op":"ADD","gas":59592,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":24,"op":"SWAP1","gas":59589,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x4"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":25,"op":"MSTORE","gas":59586,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x4","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000003","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":26,"op":"DUP2","gas":59583,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":27,"op":"MSTORE","gas":59580,"gasCost":6,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xa0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":28,"op":"PUSH1","gas":59574,"gasCost":3,"depth":1,"stack":["0xa0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":30,"op":"ADD","gas":59571,"gasCost":3,"depth":1,"stack":["0xa0","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":31,"op":"PUSH2","gas":59568,"gasCost":3,"depth":1,"stack":["0xc0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":34,"op":"DUP2","gas":59565,"gasCost":3,"depth":1,"stack":["0xc0","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":35,"op":"LT","gas":59562,"gasCost":3,"depth":1,"stack":["0xc0","0x140","0xc0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":36,"op":"PUSH1","gas":59559,"gasCost":3,"depth":1,"stack":["0xc0","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":38,"op":"JUMPI","gas":59556,"gasCost":10,"depth":1,"stack":["0xc0","0x1","0xb"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":11,"op":"JUMPDEST","gas":59546,"gasCost":1,"depth":1,"stack":["0xc0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":12,"op":"PUSH1","gas":59545,"gasCost":3,"depth":1,"stack":["0xc0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":14,"op":"PUSH1","gas":59542,"gasCost":3,"depth":1,"stack":["0xc0","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":16,"op":"KECCAK256","gas":59539,"gasCost":42,"depth":1,"stack":["0xc0","0x40","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":17,"op":"PUSH1","gas":59497,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":19,"op":"DUP1","gas":59494,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":20,"op":"MLOAD","gas":59491,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":21,"op":"PUSH1","gas":59488,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":23,"op":"ADD","gas":59485,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":24,"op":"SWAP1","gas":59482,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x5"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":25,"op":"MSTORE","gas":59479,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x5","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":26,"op":"DUP2","gas":59476,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":27,"op":"MSTORE","gas":59473,"gasCost":6,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0xc0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":28,"op":"PUSH1","gas":59467,"gasCost":3,"depth":1,"stack":["0xc0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":30,"op":"ADD","gas":59464,"gasCost":3,"depth":1,"stack":["0xc0","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":31,"op":"PUSH2","gas":59461,"gasCost":3,"depth":1,"stack":["0xe0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":34,"op":"DUP2","gas":59458,"gasCost":3,"depth":1,"stack":["0xe0","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":35,"op":"LT","gas":59455,"gasCost":3,"depth":1,"stack":["0xe0","0x140","0xe0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":36,"op":"PUSH1","gas":59452,"gasCost":3,"depth":1,"stack":["0xe0","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":38,"op":"JUMPI","gas":59449,"gasCost":10,"depth":1,"stack":["0xe0","0x1","0xb"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":11,"op":"JUMPDEST","gas":59439,"gasCost":1,"depth":1,"stack":["0xe0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":12,"op":"PUSH1","gas":59438,"gasCost":3,"depth":1,"stack":["0xe0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":14,"op":"PUSH1","gas":59435,"gasCost":3,"depth":1,"stack":["0xe0","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":16,"op":"KECCAK256","gas":59432,"gasCost":42,"depth":1,"stack":["0xe0","0x40","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":17,"op":"PUSH1","gas":59390,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":19,"op":"DUP1","gas":59387,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":20,"op":"MLOAD","gas":59384,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":21,"op":"PUSH1","gas":59381,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":23,"op":"ADD","gas":59378,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":24,"op":"SWAP1","gas":59375,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x6"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":25,"op":"MSTORE","gas":59372,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x6","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":26,"op":"DUP2","gas":59369,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":27,"op":"MSTORE","gas":59366,"gasCost":6,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0xe0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":28,"op":"PUSH1","gas":59360,"gasCost":3,"depth":1,"stack":["0xe0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":30,"op":"ADD","gas":59357,"gasCost":3,"depth":1,"stack":["0xe0","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":31,"op":"PUSH2","gas":59354,"gasCost":3,"depth":1,"stack":["0x100"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":34,"op":"DUP2","gas":59351,"gasCost":3,"depth":1,"stack":["0x100","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":35,"op":"LT","gas":59348,"gasCost":3,"depth":1,"stack":["0x100","0x140","0x100"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":36,"op":"PUSH1","gas":59345,"gasCost":3,"depth":1,"stack":["0x100","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":38,"op":"JUMPI","gas":59342,"gasCost":10,"depth":1,"stack":["0x100","0x1","0xb"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":11,"op":"JUMPDEST","gas":59332,"gasCost":1,"depth":1,"stack":["0x100"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":12,"op":"PUSH1","gas":59331,"gasCost":3,"depth":1,"stack":["0x100"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":14,"op":"PUSH1","gas":59328,"gasCost":3,"depth":1,"stack":["0x100","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":16,"op":"KECCAK256","gas":59325,"gasCost":42,"depth":1,"stack":["0x100","0x40","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":17,"op":"PUSH1","gas":59283,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":19,"op":"DUP1","gas":59280,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":20,"op":"MLOAD","gas":59277,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":21,"op":"PUSH1","gas":59274,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":23,"op":"ADD","gas":59271,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":24,"op":"SWAP1","gas":59268,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x7"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":25,"op":"MSTORE","gas":59265,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x7","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000006","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":26,"op":"DUP2","gas":59262,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":27,"op":"MSTORE","gas":59259,"gasCost":6,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x100"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":28,"op":"PUSH1","gas":59253,"gasCost":3,"depth":1,"stack":["0x100"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":30,"op":"ADD","gas":59250,"gasCost":3,"depth":1,"stack":["0x100","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":31,"op":"PUSH2","gas":59247,"gasCost":3,"depth":1,"stack":["0x120"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":34,"op":"DUP2","gas":59244,"gasCost":3,"depth":1,"stack":["0x120","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":35,"op":"LT","gas":59241,"gasCost":3,"depth":1,"stack":["0x120","0x140","0x120"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":36,"op":"PUSH1","gas":59238,"gasCost":3,"depth":1,"stack":["0x120","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":38,"op":"JUMPI","gas":59235,"gasCost":10,"depth":1,"stack":["0x120","0x1","0xb"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":11,"op":"JUMPDEST","gas":59225,"gasCost":1,"depth":1,"stack":["0x120"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":12,"op":"PUSH1","gas":59224,"gasCost":3,"depth":1,"stack":["0x120"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":14,"op":"PUSH1","gas":59221,"gasCost":3,"depth":1,"stack":["0x120","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":16,"op":"KECCAK256","gas":59218,"gasCost":42,"depth":1,"stack":["0x120","0x40","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":17,"op":"PUSH1","gas":59176,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":19,"op":"DUP1","gas":59173,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":20,"op":"MLOAD","gas":59170,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":21,"op":"PUSH1","gas":59167,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":23,"op":"ADD","gas":59164,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7","0x1"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":24,"op":"SWAP1","gas":59161,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x8"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":25,"op":"MSTORE","gas":59158,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x8","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000007","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":26,"op":"DUP2","gas":59155,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":27,"op":"MSTORE","gas":59152,"gasCost":6,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x120"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":28,"op":"PUSH1","gas":59146,"gasCost":3,"depth":1,"stack":["0x120"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":30,"op":"ADD","gas":59143,"gasCost":3,"depth":1,"stack":["0x120","0x20"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":31,"op":"PUSH2","gas":59140,"gasCost":3,"depth":1,"stack":["0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":34,"op":"DUP2","gas":59137,"gasCost":3,"depth":1,"stack":["0x140","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":35,"op":"LT","gas":59134,"gasCost":3,"depth":1,"stack":["0x140","0x140","0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":36,"op":"PUSH1","gas":59131,"gasCost":3,"depth":1,"stack":["0x140","0x0"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":38,"op":"JUMPI","gas":59128,"gasCost":10,"depth":1,"stack":["0x140","0x0","0xb"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":39,"op":"POP","gas":59118,"gasCost":2,"depth":1,"stack":["0x140"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":40,"op":"PUSH2","gas":59116,"gasCost":3,"depth":1,"stack":[],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":43,"op":"PUSH1","gas":59113,"gasCost":3,"depth":1,"stack":["0x100"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":45,"op":"RETURN","gas":59110,"gasCost":0,"depth":1,"stack":["0x100","0x40"],"memory":["0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000008","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]}]}}]} diff --git a/tests/debug_traceBlockByNumber/trace-block-return-data-behavior.io b/tests/debug_traceBlockByNumber/trace-block-return-data-behavior.io new file mode 100644 index 000000000..2ccbcfe36 --- /dev/null +++ b/tests/debug_traceBlockByNumber/trace-block-return-data-behavior.io @@ -0,0 +1,6 @@ +// traces a block with returnData disabled and enabled to validate returnData field gating and encoding +// speconly: client response is only checked for schema validity. +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByNumber","params":["0x1",{"disableStack":false,"disableStorage":true,"enableMemory":false,"enableReturnData":false}]} +<< {"jsonrpc":"2.0","id":1,"result":[{"txHash":"0xc1d605c6612a5fe84dc95810030bfe5b1d327652b381bc695e28f50d13b2b09e","result":{"gas":66259,"failed":false,"returnValue":"0x60004381526020014681526020014181526020014881526020014481526020013281526020013481526020016000f3","structLogs":[{"pc":0,"op":"PUSH1","gas":23644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":23641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":23639,"gasCost":3,"depth":1,"stack":["0xd","0x3c"]},{"pc":4,"op":"DUP1","gas":23636,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":5,"op":"PUSH1","gas":23633,"gasCost":3,"depth":1,"stack":["0x2f","0x2f"]},{"pc":7,"op":"PUSH1","gas":23630,"gasCost":3,"depth":1,"stack":["0x2f","0x2f","0xd"]},{"pc":9,"op":"CODECOPY","gas":23627,"gasCost":15,"depth":1,"stack":["0x2f","0x2f","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":23612,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":12,"op":"RETURN","gas":23609,"gasCost":0,"depth":1,"stack":["0x2f","0x0"]}]}},{"txHash":"0x1999fb436409e9c2464bd9efc3aa914b2e8a843144fdcc17132fa9da0f15641e","result":{"gas":75785,"failed":false,"returnValue":"0x366002146022577177726f6e672d63616c6c6461746173697a656000526012600efd5b60003560f01c61ff01146047576d77726f6e672d63616c6c64617461600052600e6012fd5b61ffee6000526002601ef3","structLogs":[{"pc":0,"op":"PUSH1","gas":30844,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":30841,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":30839,"gasCost":3,"depth":1,"stack":["0xd","0x60"]},{"pc":4,"op":"DUP1","gas":30836,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":5,"op":"PUSH1","gas":30833,"gasCost":3,"depth":1,"stack":["0x53","0x53"]},{"pc":7,"op":"PUSH1","gas":30830,"gasCost":3,"depth":1,"stack":["0x53","0x53","0xd"]},{"pc":9,"op":"CODECOPY","gas":30827,"gasCost":21,"depth":1,"stack":["0x53","0x53","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":30806,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":12,"op":"RETURN","gas":30803,"gasCost":0,"depth":1,"stack":["0x53","0x0"]}]}},{"txHash":"0x021ae79aa8821d60291761cfe419b6cbc0ad7dd50d4aa6f14a54e5fc0d62e325","result":{"gas":87893,"failed":false,"returnValue":"0x6000356142ff54501515603b577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f08c379a0000000000000000000000000000000000000000000000000000000006000526020600452600a6024527f75736572206572726f7200000000000000000000000000000000000000000000604452604e6000fd","structLogs":[{"pc":0,"op":"PUSH1","gas":43644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":43641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":43639,"gasCost":3,"depth":1,"stack":["0xd","0xa0"]},{"pc":4,"op":"DUP1","gas":43636,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":5,"op":"PUSH1","gas":43633,"gasCost":3,"depth":1,"stack":["0x93","0x93"]},{"pc":7,"op":"PUSH1","gas":43630,"gasCost":3,"depth":1,"stack":["0x93","0x93","0xd"]},{"pc":9,"op":"CODECOPY","gas":43627,"gasCost":33,"depth":1,"stack":["0x93","0x93","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":43594,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":12,"op":"RETURN","gas":43591,"gasCost":0,"depth":1,"stack":["0x93","0x0"]}]}},{"txHash":"0x709f12649d057e2ad0a0a41176cc405f80af735df8cf2b89782eb3ab1699e549","result":{"gas":107962,"failed":false,"returnValue":"0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7dcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0a15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054cabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe051471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31b39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","structLogs":[{"pc":0,"op":"NUMBER","gas":60000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"PUSH1","gas":59998,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":3,"op":"MSTORE","gas":59995,"gasCost":6,"depth":1,"stack":["0x1","0x0"]},{"pc":4,"op":"PUSH1","gas":59989,"gasCost":3,"depth":1,"stack":[]},{"pc":6,"op":"PUSH1","gas":59986,"gasCost":3,"depth":1,"stack":["0x0"]},{"pc":8,"op":"MSTORE","gas":59983,"gasCost":6,"depth":1,"stack":["0x0","0x20"]},{"pc":9,"op":"PUSH1","gas":59977,"gasCost":3,"depth":1,"stack":[]},{"pc":11,"op":"JUMPDEST","gas":59974,"gasCost":1,"depth":1,"stack":["0x40"]},{"pc":12,"op":"PUSH1","gas":59973,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"PUSH1","gas":59970,"gasCost":3,"depth":1,"stack":["0x40","0x40"]},{"pc":16,"op":"KECCAK256","gas":59967,"gasCost":42,"depth":1,"stack":["0x40","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59925,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":19,"op":"DUP1","gas":59922,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20"]},{"pc":20,"op":"MLOAD","gas":59919,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59916,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0"]},{"pc":23,"op":"ADD","gas":59913,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0","0x1"]},{"pc":24,"op":"SWAP1","gas":59910,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x1"]},{"pc":25,"op":"MSTORE","gas":59907,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x1","0x20"]},{"pc":26,"op":"DUP2","gas":59904,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":27,"op":"MSTORE","gas":59901,"gasCost":6,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x40"]},{"pc":28,"op":"PUSH1","gas":59895,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":30,"op":"ADD","gas":59892,"gasCost":3,"depth":1,"stack":["0x40","0x20"]},{"pc":31,"op":"PUSH2","gas":59889,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":34,"op":"DUP2","gas":59886,"gasCost":3,"depth":1,"stack":["0x60","0x140"]},{"pc":35,"op":"LT","gas":59883,"gasCost":3,"depth":1,"stack":["0x60","0x140","0x60"]},{"pc":36,"op":"PUSH1","gas":59880,"gasCost":3,"depth":1,"stack":["0x60","0x1"]},{"pc":38,"op":"JUMPI","gas":59877,"gasCost":10,"depth":1,"stack":["0x60","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59867,"gasCost":1,"depth":1,"stack":["0x60"]},{"pc":12,"op":"PUSH1","gas":59866,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":14,"op":"PUSH1","gas":59863,"gasCost":3,"depth":1,"stack":["0x60","0x40"]},{"pc":16,"op":"KECCAK256","gas":59860,"gasCost":42,"depth":1,"stack":["0x60","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59818,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":19,"op":"DUP1","gas":59815,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20"]},{"pc":20,"op":"MLOAD","gas":59812,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59809,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1"]},{"pc":23,"op":"ADD","gas":59806,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1","0x1"]},{"pc":24,"op":"SWAP1","gas":59803,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x2"]},{"pc":25,"op":"MSTORE","gas":59800,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x2","0x20"]},{"pc":26,"op":"DUP2","gas":59797,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":27,"op":"MSTORE","gas":59794,"gasCost":6,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x60"]},{"pc":28,"op":"PUSH1","gas":59788,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":30,"op":"ADD","gas":59785,"gasCost":3,"depth":1,"stack":["0x60","0x20"]},{"pc":31,"op":"PUSH2","gas":59782,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":34,"op":"DUP2","gas":59779,"gasCost":3,"depth":1,"stack":["0x80","0x140"]},{"pc":35,"op":"LT","gas":59776,"gasCost":3,"depth":1,"stack":["0x80","0x140","0x80"]},{"pc":36,"op":"PUSH1","gas":59773,"gasCost":3,"depth":1,"stack":["0x80","0x1"]},{"pc":38,"op":"JUMPI","gas":59770,"gasCost":10,"depth":1,"stack":["0x80","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59760,"gasCost":1,"depth":1,"stack":["0x80"]},{"pc":12,"op":"PUSH1","gas":59759,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":14,"op":"PUSH1","gas":59756,"gasCost":3,"depth":1,"stack":["0x80","0x40"]},{"pc":16,"op":"KECCAK256","gas":59753,"gasCost":42,"depth":1,"stack":["0x80","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59711,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":19,"op":"DUP1","gas":59708,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20"]},{"pc":20,"op":"MLOAD","gas":59705,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59702,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2"]},{"pc":23,"op":"ADD","gas":59699,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2","0x1"]},{"pc":24,"op":"SWAP1","gas":59696,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x3"]},{"pc":25,"op":"MSTORE","gas":59693,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x3","0x20"]},{"pc":26,"op":"DUP2","gas":59690,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":27,"op":"MSTORE","gas":59687,"gasCost":6,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x80"]},{"pc":28,"op":"PUSH1","gas":59681,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":30,"op":"ADD","gas":59678,"gasCost":3,"depth":1,"stack":["0x80","0x20"]},{"pc":31,"op":"PUSH2","gas":59675,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":34,"op":"DUP2","gas":59672,"gasCost":3,"depth":1,"stack":["0xa0","0x140"]},{"pc":35,"op":"LT","gas":59669,"gasCost":3,"depth":1,"stack":["0xa0","0x140","0xa0"]},{"pc":36,"op":"PUSH1","gas":59666,"gasCost":3,"depth":1,"stack":["0xa0","0x1"]},{"pc":38,"op":"JUMPI","gas":59663,"gasCost":10,"depth":1,"stack":["0xa0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59653,"gasCost":1,"depth":1,"stack":["0xa0"]},{"pc":12,"op":"PUSH1","gas":59652,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":14,"op":"PUSH1","gas":59649,"gasCost":3,"depth":1,"stack":["0xa0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59646,"gasCost":42,"depth":1,"stack":["0xa0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59604,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":19,"op":"DUP1","gas":59601,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20"]},{"pc":20,"op":"MLOAD","gas":59598,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59595,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3"]},{"pc":23,"op":"ADD","gas":59592,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3","0x1"]},{"pc":24,"op":"SWAP1","gas":59589,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x4"]},{"pc":25,"op":"MSTORE","gas":59586,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x4","0x20"]},{"pc":26,"op":"DUP2","gas":59583,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":27,"op":"MSTORE","gas":59580,"gasCost":6,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xa0"]},{"pc":28,"op":"PUSH1","gas":59574,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":30,"op":"ADD","gas":59571,"gasCost":3,"depth":1,"stack":["0xa0","0x20"]},{"pc":31,"op":"PUSH2","gas":59568,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":34,"op":"DUP2","gas":59565,"gasCost":3,"depth":1,"stack":["0xc0","0x140"]},{"pc":35,"op":"LT","gas":59562,"gasCost":3,"depth":1,"stack":["0xc0","0x140","0xc0"]},{"pc":36,"op":"PUSH1","gas":59559,"gasCost":3,"depth":1,"stack":["0xc0","0x1"]},{"pc":38,"op":"JUMPI","gas":59556,"gasCost":10,"depth":1,"stack":["0xc0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59546,"gasCost":1,"depth":1,"stack":["0xc0"]},{"pc":12,"op":"PUSH1","gas":59545,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":14,"op":"PUSH1","gas":59542,"gasCost":3,"depth":1,"stack":["0xc0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59539,"gasCost":42,"depth":1,"stack":["0xc0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59497,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":19,"op":"DUP1","gas":59494,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20"]},{"pc":20,"op":"MLOAD","gas":59491,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59488,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4"]},{"pc":23,"op":"ADD","gas":59485,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4","0x1"]},{"pc":24,"op":"SWAP1","gas":59482,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x5"]},{"pc":25,"op":"MSTORE","gas":59479,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x5","0x20"]},{"pc":26,"op":"DUP2","gas":59476,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":27,"op":"MSTORE","gas":59473,"gasCost":6,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0xc0"]},{"pc":28,"op":"PUSH1","gas":59467,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":30,"op":"ADD","gas":59464,"gasCost":3,"depth":1,"stack":["0xc0","0x20"]},{"pc":31,"op":"PUSH2","gas":59461,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":34,"op":"DUP2","gas":59458,"gasCost":3,"depth":1,"stack":["0xe0","0x140"]},{"pc":35,"op":"LT","gas":59455,"gasCost":3,"depth":1,"stack":["0xe0","0x140","0xe0"]},{"pc":36,"op":"PUSH1","gas":59452,"gasCost":3,"depth":1,"stack":["0xe0","0x1"]},{"pc":38,"op":"JUMPI","gas":59449,"gasCost":10,"depth":1,"stack":["0xe0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59439,"gasCost":1,"depth":1,"stack":["0xe0"]},{"pc":12,"op":"PUSH1","gas":59438,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":14,"op":"PUSH1","gas":59435,"gasCost":3,"depth":1,"stack":["0xe0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59432,"gasCost":42,"depth":1,"stack":["0xe0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59390,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":19,"op":"DUP1","gas":59387,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20"]},{"pc":20,"op":"MLOAD","gas":59384,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59381,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5"]},{"pc":23,"op":"ADD","gas":59378,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5","0x1"]},{"pc":24,"op":"SWAP1","gas":59375,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x6"]},{"pc":25,"op":"MSTORE","gas":59372,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x6","0x20"]},{"pc":26,"op":"DUP2","gas":59369,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":27,"op":"MSTORE","gas":59366,"gasCost":6,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0xe0"]},{"pc":28,"op":"PUSH1","gas":59360,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":30,"op":"ADD","gas":59357,"gasCost":3,"depth":1,"stack":["0xe0","0x20"]},{"pc":31,"op":"PUSH2","gas":59354,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":34,"op":"DUP2","gas":59351,"gasCost":3,"depth":1,"stack":["0x100","0x140"]},{"pc":35,"op":"LT","gas":59348,"gasCost":3,"depth":1,"stack":["0x100","0x140","0x100"]},{"pc":36,"op":"PUSH1","gas":59345,"gasCost":3,"depth":1,"stack":["0x100","0x1"]},{"pc":38,"op":"JUMPI","gas":59342,"gasCost":10,"depth":1,"stack":["0x100","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59332,"gasCost":1,"depth":1,"stack":["0x100"]},{"pc":12,"op":"PUSH1","gas":59331,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":14,"op":"PUSH1","gas":59328,"gasCost":3,"depth":1,"stack":["0x100","0x40"]},{"pc":16,"op":"KECCAK256","gas":59325,"gasCost":42,"depth":1,"stack":["0x100","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59283,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":19,"op":"DUP1","gas":59280,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20"]},{"pc":20,"op":"MLOAD","gas":59277,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59274,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6"]},{"pc":23,"op":"ADD","gas":59271,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6","0x1"]},{"pc":24,"op":"SWAP1","gas":59268,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x7"]},{"pc":25,"op":"MSTORE","gas":59265,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x7","0x20"]},{"pc":26,"op":"DUP2","gas":59262,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":27,"op":"MSTORE","gas":59259,"gasCost":6,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x100"]},{"pc":28,"op":"PUSH1","gas":59253,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":30,"op":"ADD","gas":59250,"gasCost":3,"depth":1,"stack":["0x100","0x20"]},{"pc":31,"op":"PUSH2","gas":59247,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":34,"op":"DUP2","gas":59244,"gasCost":3,"depth":1,"stack":["0x120","0x140"]},{"pc":35,"op":"LT","gas":59241,"gasCost":3,"depth":1,"stack":["0x120","0x140","0x120"]},{"pc":36,"op":"PUSH1","gas":59238,"gasCost":3,"depth":1,"stack":["0x120","0x1"]},{"pc":38,"op":"JUMPI","gas":59235,"gasCost":10,"depth":1,"stack":["0x120","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59225,"gasCost":1,"depth":1,"stack":["0x120"]},{"pc":12,"op":"PUSH1","gas":59224,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":14,"op":"PUSH1","gas":59221,"gasCost":3,"depth":1,"stack":["0x120","0x40"]},{"pc":16,"op":"KECCAK256","gas":59218,"gasCost":42,"depth":1,"stack":["0x120","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59176,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":19,"op":"DUP1","gas":59173,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20"]},{"pc":20,"op":"MLOAD","gas":59170,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59167,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7"]},{"pc":23,"op":"ADD","gas":59164,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7","0x1"]},{"pc":24,"op":"SWAP1","gas":59161,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x8"]},{"pc":25,"op":"MSTORE","gas":59158,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x8","0x20"]},{"pc":26,"op":"DUP2","gas":59155,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":27,"op":"MSTORE","gas":59152,"gasCost":6,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x120"]},{"pc":28,"op":"PUSH1","gas":59146,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":30,"op":"ADD","gas":59143,"gasCost":3,"depth":1,"stack":["0x120","0x20"]},{"pc":31,"op":"PUSH2","gas":59140,"gasCost":3,"depth":1,"stack":["0x140"]},{"pc":34,"op":"DUP2","gas":59137,"gasCost":3,"depth":1,"stack":["0x140","0x140"]},{"pc":35,"op":"LT","gas":59134,"gasCost":3,"depth":1,"stack":["0x140","0x140","0x140"]},{"pc":36,"op":"PUSH1","gas":59131,"gasCost":3,"depth":1,"stack":["0x140","0x0"]},{"pc":38,"op":"JUMPI","gas":59128,"gasCost":10,"depth":1,"stack":["0x140","0x0","0xb"]},{"pc":39,"op":"POP","gas":59118,"gasCost":2,"depth":1,"stack":["0x140"]},{"pc":40,"op":"PUSH2","gas":59116,"gasCost":3,"depth":1,"stack":[]},{"pc":43,"op":"PUSH1","gas":59113,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":45,"op":"RETURN","gas":59110,"gasCost":0,"depth":1,"stack":["0x100","0x40"]}]}}]} +>> {"jsonrpc":"2.0","id":2,"method":"debug_traceBlockByNumber","params":["0x1",{"disableStack":false,"disableStorage":true,"enableMemory":false,"enableReturnData":true}]} +<< {"jsonrpc":"2.0","id":2,"result":[{"txHash":"0xc1d605c6612a5fe84dc95810030bfe5b1d327652b381bc695e28f50d13b2b09e","result":{"gas":66259,"failed":false,"returnValue":"0x60004381526020014681526020014181526020014881526020014481526020013281526020013481526020016000f3","structLogs":[{"pc":0,"op":"PUSH1","gas":23644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":23641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":23639,"gasCost":3,"depth":1,"stack":["0xd","0x3c"]},{"pc":4,"op":"DUP1","gas":23636,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":5,"op":"PUSH1","gas":23633,"gasCost":3,"depth":1,"stack":["0x2f","0x2f"]},{"pc":7,"op":"PUSH1","gas":23630,"gasCost":3,"depth":1,"stack":["0x2f","0x2f","0xd"]},{"pc":9,"op":"CODECOPY","gas":23627,"gasCost":15,"depth":1,"stack":["0x2f","0x2f","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":23612,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":12,"op":"RETURN","gas":23609,"gasCost":0,"depth":1,"stack":["0x2f","0x0"]}]}},{"txHash":"0x1999fb436409e9c2464bd9efc3aa914b2e8a843144fdcc17132fa9da0f15641e","result":{"gas":75785,"failed":false,"returnValue":"0x366002146022577177726f6e672d63616c6c6461746173697a656000526012600efd5b60003560f01c61ff01146047576d77726f6e672d63616c6c64617461600052600e6012fd5b61ffee6000526002601ef3","structLogs":[{"pc":0,"op":"PUSH1","gas":30844,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":30841,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":30839,"gasCost":3,"depth":1,"stack":["0xd","0x60"]},{"pc":4,"op":"DUP1","gas":30836,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":5,"op":"PUSH1","gas":30833,"gasCost":3,"depth":1,"stack":["0x53","0x53"]},{"pc":7,"op":"PUSH1","gas":30830,"gasCost":3,"depth":1,"stack":["0x53","0x53","0xd"]},{"pc":9,"op":"CODECOPY","gas":30827,"gasCost":21,"depth":1,"stack":["0x53","0x53","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":30806,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":12,"op":"RETURN","gas":30803,"gasCost":0,"depth":1,"stack":["0x53","0x0"]}]}},{"txHash":"0x021ae79aa8821d60291761cfe419b6cbc0ad7dd50d4aa6f14a54e5fc0d62e325","result":{"gas":87893,"failed":false,"returnValue":"0x6000356142ff54501515603b577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f08c379a0000000000000000000000000000000000000000000000000000000006000526020600452600a6024527f75736572206572726f7200000000000000000000000000000000000000000000604452604e6000fd","structLogs":[{"pc":0,"op":"PUSH1","gas":43644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":43641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":43639,"gasCost":3,"depth":1,"stack":["0xd","0xa0"]},{"pc":4,"op":"DUP1","gas":43636,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":5,"op":"PUSH1","gas":43633,"gasCost":3,"depth":1,"stack":["0x93","0x93"]},{"pc":7,"op":"PUSH1","gas":43630,"gasCost":3,"depth":1,"stack":["0x93","0x93","0xd"]},{"pc":9,"op":"CODECOPY","gas":43627,"gasCost":33,"depth":1,"stack":["0x93","0x93","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":43594,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":12,"op":"RETURN","gas":43591,"gasCost":0,"depth":1,"stack":["0x93","0x0"]}]}},{"txHash":"0x709f12649d057e2ad0a0a41176cc405f80af735df8cf2b89782eb3ab1699e549","result":{"gas":107962,"failed":false,"returnValue":"0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7dcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0a15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054cabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe051471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31b39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","structLogs":[{"pc":0,"op":"NUMBER","gas":60000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"PUSH1","gas":59998,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":3,"op":"MSTORE","gas":59995,"gasCost":6,"depth":1,"stack":["0x1","0x0"]},{"pc":4,"op":"PUSH1","gas":59989,"gasCost":3,"depth":1,"stack":[]},{"pc":6,"op":"PUSH1","gas":59986,"gasCost":3,"depth":1,"stack":["0x0"]},{"pc":8,"op":"MSTORE","gas":59983,"gasCost":6,"depth":1,"stack":["0x0","0x20"]},{"pc":9,"op":"PUSH1","gas":59977,"gasCost":3,"depth":1,"stack":[]},{"pc":11,"op":"JUMPDEST","gas":59974,"gasCost":1,"depth":1,"stack":["0x40"]},{"pc":12,"op":"PUSH1","gas":59973,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"PUSH1","gas":59970,"gasCost":3,"depth":1,"stack":["0x40","0x40"]},{"pc":16,"op":"KECCAK256","gas":59967,"gasCost":42,"depth":1,"stack":["0x40","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59925,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":19,"op":"DUP1","gas":59922,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20"]},{"pc":20,"op":"MLOAD","gas":59919,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59916,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0"]},{"pc":23,"op":"ADD","gas":59913,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0","0x1"]},{"pc":24,"op":"SWAP1","gas":59910,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x1"]},{"pc":25,"op":"MSTORE","gas":59907,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x1","0x20"]},{"pc":26,"op":"DUP2","gas":59904,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":27,"op":"MSTORE","gas":59901,"gasCost":6,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x40"]},{"pc":28,"op":"PUSH1","gas":59895,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":30,"op":"ADD","gas":59892,"gasCost":3,"depth":1,"stack":["0x40","0x20"]},{"pc":31,"op":"PUSH2","gas":59889,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":34,"op":"DUP2","gas":59886,"gasCost":3,"depth":1,"stack":["0x60","0x140"]},{"pc":35,"op":"LT","gas":59883,"gasCost":3,"depth":1,"stack":["0x60","0x140","0x60"]},{"pc":36,"op":"PUSH1","gas":59880,"gasCost":3,"depth":1,"stack":["0x60","0x1"]},{"pc":38,"op":"JUMPI","gas":59877,"gasCost":10,"depth":1,"stack":["0x60","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59867,"gasCost":1,"depth":1,"stack":["0x60"]},{"pc":12,"op":"PUSH1","gas":59866,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":14,"op":"PUSH1","gas":59863,"gasCost":3,"depth":1,"stack":["0x60","0x40"]},{"pc":16,"op":"KECCAK256","gas":59860,"gasCost":42,"depth":1,"stack":["0x60","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59818,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":19,"op":"DUP1","gas":59815,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20"]},{"pc":20,"op":"MLOAD","gas":59812,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59809,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1"]},{"pc":23,"op":"ADD","gas":59806,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1","0x1"]},{"pc":24,"op":"SWAP1","gas":59803,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x2"]},{"pc":25,"op":"MSTORE","gas":59800,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x2","0x20"]},{"pc":26,"op":"DUP2","gas":59797,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":27,"op":"MSTORE","gas":59794,"gasCost":6,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x60"]},{"pc":28,"op":"PUSH1","gas":59788,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":30,"op":"ADD","gas":59785,"gasCost":3,"depth":1,"stack":["0x60","0x20"]},{"pc":31,"op":"PUSH2","gas":59782,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":34,"op":"DUP2","gas":59779,"gasCost":3,"depth":1,"stack":["0x80","0x140"]},{"pc":35,"op":"LT","gas":59776,"gasCost":3,"depth":1,"stack":["0x80","0x140","0x80"]},{"pc":36,"op":"PUSH1","gas":59773,"gasCost":3,"depth":1,"stack":["0x80","0x1"]},{"pc":38,"op":"JUMPI","gas":59770,"gasCost":10,"depth":1,"stack":["0x80","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59760,"gasCost":1,"depth":1,"stack":["0x80"]},{"pc":12,"op":"PUSH1","gas":59759,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":14,"op":"PUSH1","gas":59756,"gasCost":3,"depth":1,"stack":["0x80","0x40"]},{"pc":16,"op":"KECCAK256","gas":59753,"gasCost":42,"depth":1,"stack":["0x80","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59711,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":19,"op":"DUP1","gas":59708,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20"]},{"pc":20,"op":"MLOAD","gas":59705,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59702,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2"]},{"pc":23,"op":"ADD","gas":59699,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2","0x1"]},{"pc":24,"op":"SWAP1","gas":59696,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x3"]},{"pc":25,"op":"MSTORE","gas":59693,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x3","0x20"]},{"pc":26,"op":"DUP2","gas":59690,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":27,"op":"MSTORE","gas":59687,"gasCost":6,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x80"]},{"pc":28,"op":"PUSH1","gas":59681,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":30,"op":"ADD","gas":59678,"gasCost":3,"depth":1,"stack":["0x80","0x20"]},{"pc":31,"op":"PUSH2","gas":59675,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":34,"op":"DUP2","gas":59672,"gasCost":3,"depth":1,"stack":["0xa0","0x140"]},{"pc":35,"op":"LT","gas":59669,"gasCost":3,"depth":1,"stack":["0xa0","0x140","0xa0"]},{"pc":36,"op":"PUSH1","gas":59666,"gasCost":3,"depth":1,"stack":["0xa0","0x1"]},{"pc":38,"op":"JUMPI","gas":59663,"gasCost":10,"depth":1,"stack":["0xa0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59653,"gasCost":1,"depth":1,"stack":["0xa0"]},{"pc":12,"op":"PUSH1","gas":59652,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":14,"op":"PUSH1","gas":59649,"gasCost":3,"depth":1,"stack":["0xa0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59646,"gasCost":42,"depth":1,"stack":["0xa0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59604,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":19,"op":"DUP1","gas":59601,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20"]},{"pc":20,"op":"MLOAD","gas":59598,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59595,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3"]},{"pc":23,"op":"ADD","gas":59592,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3","0x1"]},{"pc":24,"op":"SWAP1","gas":59589,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x4"]},{"pc":25,"op":"MSTORE","gas":59586,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x4","0x20"]},{"pc":26,"op":"DUP2","gas":59583,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":27,"op":"MSTORE","gas":59580,"gasCost":6,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xa0"]},{"pc":28,"op":"PUSH1","gas":59574,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":30,"op":"ADD","gas":59571,"gasCost":3,"depth":1,"stack":["0xa0","0x20"]},{"pc":31,"op":"PUSH2","gas":59568,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":34,"op":"DUP2","gas":59565,"gasCost":3,"depth":1,"stack":["0xc0","0x140"]},{"pc":35,"op":"LT","gas":59562,"gasCost":3,"depth":1,"stack":["0xc0","0x140","0xc0"]},{"pc":36,"op":"PUSH1","gas":59559,"gasCost":3,"depth":1,"stack":["0xc0","0x1"]},{"pc":38,"op":"JUMPI","gas":59556,"gasCost":10,"depth":1,"stack":["0xc0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59546,"gasCost":1,"depth":1,"stack":["0xc0"]},{"pc":12,"op":"PUSH1","gas":59545,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":14,"op":"PUSH1","gas":59542,"gasCost":3,"depth":1,"stack":["0xc0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59539,"gasCost":42,"depth":1,"stack":["0xc0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59497,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":19,"op":"DUP1","gas":59494,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20"]},{"pc":20,"op":"MLOAD","gas":59491,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59488,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4"]},{"pc":23,"op":"ADD","gas":59485,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4","0x1"]},{"pc":24,"op":"SWAP1","gas":59482,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x5"]},{"pc":25,"op":"MSTORE","gas":59479,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x5","0x20"]},{"pc":26,"op":"DUP2","gas":59476,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":27,"op":"MSTORE","gas":59473,"gasCost":6,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0xc0"]},{"pc":28,"op":"PUSH1","gas":59467,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":30,"op":"ADD","gas":59464,"gasCost":3,"depth":1,"stack":["0xc0","0x20"]},{"pc":31,"op":"PUSH2","gas":59461,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":34,"op":"DUP2","gas":59458,"gasCost":3,"depth":1,"stack":["0xe0","0x140"]},{"pc":35,"op":"LT","gas":59455,"gasCost":3,"depth":1,"stack":["0xe0","0x140","0xe0"]},{"pc":36,"op":"PUSH1","gas":59452,"gasCost":3,"depth":1,"stack":["0xe0","0x1"]},{"pc":38,"op":"JUMPI","gas":59449,"gasCost":10,"depth":1,"stack":["0xe0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59439,"gasCost":1,"depth":1,"stack":["0xe0"]},{"pc":12,"op":"PUSH1","gas":59438,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":14,"op":"PUSH1","gas":59435,"gasCost":3,"depth":1,"stack":["0xe0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59432,"gasCost":42,"depth":1,"stack":["0xe0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59390,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":19,"op":"DUP1","gas":59387,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20"]},{"pc":20,"op":"MLOAD","gas":59384,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59381,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5"]},{"pc":23,"op":"ADD","gas":59378,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5","0x1"]},{"pc":24,"op":"SWAP1","gas":59375,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x6"]},{"pc":25,"op":"MSTORE","gas":59372,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x6","0x20"]},{"pc":26,"op":"DUP2","gas":59369,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":27,"op":"MSTORE","gas":59366,"gasCost":6,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0xe0"]},{"pc":28,"op":"PUSH1","gas":59360,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":30,"op":"ADD","gas":59357,"gasCost":3,"depth":1,"stack":["0xe0","0x20"]},{"pc":31,"op":"PUSH2","gas":59354,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":34,"op":"DUP2","gas":59351,"gasCost":3,"depth":1,"stack":["0x100","0x140"]},{"pc":35,"op":"LT","gas":59348,"gasCost":3,"depth":1,"stack":["0x100","0x140","0x100"]},{"pc":36,"op":"PUSH1","gas":59345,"gasCost":3,"depth":1,"stack":["0x100","0x1"]},{"pc":38,"op":"JUMPI","gas":59342,"gasCost":10,"depth":1,"stack":["0x100","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59332,"gasCost":1,"depth":1,"stack":["0x100"]},{"pc":12,"op":"PUSH1","gas":59331,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":14,"op":"PUSH1","gas":59328,"gasCost":3,"depth":1,"stack":["0x100","0x40"]},{"pc":16,"op":"KECCAK256","gas":59325,"gasCost":42,"depth":1,"stack":["0x100","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59283,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":19,"op":"DUP1","gas":59280,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20"]},{"pc":20,"op":"MLOAD","gas":59277,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59274,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6"]},{"pc":23,"op":"ADD","gas":59271,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6","0x1"]},{"pc":24,"op":"SWAP1","gas":59268,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x7"]},{"pc":25,"op":"MSTORE","gas":59265,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x7","0x20"]},{"pc":26,"op":"DUP2","gas":59262,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":27,"op":"MSTORE","gas":59259,"gasCost":6,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x100"]},{"pc":28,"op":"PUSH1","gas":59253,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":30,"op":"ADD","gas":59250,"gasCost":3,"depth":1,"stack":["0x100","0x20"]},{"pc":31,"op":"PUSH2","gas":59247,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":34,"op":"DUP2","gas":59244,"gasCost":3,"depth":1,"stack":["0x120","0x140"]},{"pc":35,"op":"LT","gas":59241,"gasCost":3,"depth":1,"stack":["0x120","0x140","0x120"]},{"pc":36,"op":"PUSH1","gas":59238,"gasCost":3,"depth":1,"stack":["0x120","0x1"]},{"pc":38,"op":"JUMPI","gas":59235,"gasCost":10,"depth":1,"stack":["0x120","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59225,"gasCost":1,"depth":1,"stack":["0x120"]},{"pc":12,"op":"PUSH1","gas":59224,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":14,"op":"PUSH1","gas":59221,"gasCost":3,"depth":1,"stack":["0x120","0x40"]},{"pc":16,"op":"KECCAK256","gas":59218,"gasCost":42,"depth":1,"stack":["0x120","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59176,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":19,"op":"DUP1","gas":59173,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20"]},{"pc":20,"op":"MLOAD","gas":59170,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59167,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7"]},{"pc":23,"op":"ADD","gas":59164,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7","0x1"]},{"pc":24,"op":"SWAP1","gas":59161,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x8"]},{"pc":25,"op":"MSTORE","gas":59158,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x8","0x20"]},{"pc":26,"op":"DUP2","gas":59155,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":27,"op":"MSTORE","gas":59152,"gasCost":6,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x120"]},{"pc":28,"op":"PUSH1","gas":59146,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":30,"op":"ADD","gas":59143,"gasCost":3,"depth":1,"stack":["0x120","0x20"]},{"pc":31,"op":"PUSH2","gas":59140,"gasCost":3,"depth":1,"stack":["0x140"]},{"pc":34,"op":"DUP2","gas":59137,"gasCost":3,"depth":1,"stack":["0x140","0x140"]},{"pc":35,"op":"LT","gas":59134,"gasCost":3,"depth":1,"stack":["0x140","0x140","0x140"]},{"pc":36,"op":"PUSH1","gas":59131,"gasCost":3,"depth":1,"stack":["0x140","0x0"]},{"pc":38,"op":"JUMPI","gas":59128,"gasCost":10,"depth":1,"stack":["0x140","0x0","0xb"]},{"pc":39,"op":"POP","gas":59118,"gasCost":2,"depth":1,"stack":["0x140"]},{"pc":40,"op":"PUSH2","gas":59116,"gasCost":3,"depth":1,"stack":[]},{"pc":43,"op":"PUSH1","gas":59113,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":45,"op":"RETURN","gas":59110,"gasCost":0,"depth":1,"stack":["0x100","0x40"]}]}}]} diff --git a/tests/debug_traceBlockByNumber/trace-block-storage-encoding.io b/tests/debug_traceBlockByNumber/trace-block-storage-encoding.io new file mode 100644 index 000000000..3e975a3eb --- /dev/null +++ b/tests/debug_traceBlockByNumber/trace-block-storage-encoding.io @@ -0,0 +1,4 @@ +// traces block 0x2 with storage enabled; storage keys and values must be 0x-prefixed bytes32 values +// speconly: client response is only checked for schema validity. +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByNumber","params":["0x2",{"disableStack":false,"disableStorage":false,"enableMemory":false,"enableReturnData":true}]} +<< {"jsonrpc":"2.0","id":1,"result":[{"txHash":"0x25d8b4a27c4578e5de6441f98881cf050ab2d9f28ceb28559ece0b65f555e9d8","result":{"gas":66377,"failed":false,"returnValue":"0x","structLogs":[{"pc":0,"op":"NUMBER","gas":20000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"PUSH1","gas":19998,"gasCost":3,"depth":1,"stack":["0x2"]},{"pc":3,"op":"MSTORE","gas":19995,"gasCost":6,"depth":1,"stack":["0x2","0x0"]},{"pc":4,"op":"PUSH1","gas":19989,"gasCost":3,"depth":1,"stack":[]},{"pc":6,"op":"PUSH1","gas":19986,"gasCost":3,"depth":1,"stack":["0x0"]},{"pc":8,"op":"MSTORE","gas":19983,"gasCost":6,"depth":1,"stack":["0x0","0x20"]},{"pc":9,"op":"JUMPDEST","gas":19977,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":19976,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":19973,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":19970,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":19928,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569"]},{"pc":17,"op":"DUP1","gas":19925,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20"]},{"pc":18,"op":"MLOAD","gas":19922,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":19919,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x0"]},{"pc":21,"op":"ADD","gas":19916,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x0","0x1"]},{"pc":22,"op":"SWAP1","gas":19913,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x1"]},{"pc":23,"op":"MSTORE","gas":19910,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x1","0x20"]},{"pc":24,"op":"PUSH1","gas":19907,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569"]},{"pc":26,"op":"PUSH1","gas":19904,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20"]},{"pc":28,"op":"LOG1","gas":19901,"gasCost":1006,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x20"]},{"pc":29,"op":"GAS","gas":18895,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":18893,"gasCost":3,"depth":1,"stack":["0x49cd"]},{"pc":33,"op":"LT","gas":18890,"gasCost":3,"depth":1,"stack":["0x49cd","0x2710"]},{"pc":34,"op":"PUSH1","gas":18887,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":18884,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":18874,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":18873,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":18870,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":18867,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":18825,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f"]},{"pc":17,"op":"DUP1","gas":18822,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20"]},{"pc":18,"op":"MLOAD","gas":18819,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":18816,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x1"]},{"pc":21,"op":"ADD","gas":18813,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x1","0x1"]},{"pc":22,"op":"SWAP1","gas":18810,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x2"]},{"pc":23,"op":"MSTORE","gas":18807,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x2","0x20"]},{"pc":24,"op":"PUSH1","gas":18804,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f"]},{"pc":26,"op":"PUSH1","gas":18801,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20"]},{"pc":28,"op":"LOG1","gas":18798,"gasCost":1006,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x20"]},{"pc":29,"op":"GAS","gas":17792,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":17790,"gasCost":3,"depth":1,"stack":["0x457e"]},{"pc":33,"op":"LT","gas":17787,"gasCost":3,"depth":1,"stack":["0x457e","0x2710"]},{"pc":34,"op":"PUSH1","gas":17784,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":17781,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":17771,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":17770,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":17767,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":17764,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":17722,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c"]},{"pc":17,"op":"DUP1","gas":17719,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20"]},{"pc":18,"op":"MLOAD","gas":17716,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":17713,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x2"]},{"pc":21,"op":"ADD","gas":17710,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x2","0x1"]},{"pc":22,"op":"SWAP1","gas":17707,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x3"]},{"pc":23,"op":"MSTORE","gas":17704,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x3","0x20"]},{"pc":24,"op":"PUSH1","gas":17701,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c"]},{"pc":26,"op":"PUSH1","gas":17698,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20"]},{"pc":28,"op":"LOG1","gas":17695,"gasCost":1006,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x20"]},{"pc":29,"op":"GAS","gas":16689,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":16687,"gasCost":3,"depth":1,"stack":["0x412f"]},{"pc":33,"op":"LT","gas":16684,"gasCost":3,"depth":1,"stack":["0x412f","0x2710"]},{"pc":34,"op":"PUSH1","gas":16681,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":16678,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":16668,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":16667,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":16664,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":16661,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":16619,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d"]},{"pc":17,"op":"DUP1","gas":16616,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20"]},{"pc":18,"op":"MLOAD","gas":16613,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":16610,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x3"]},{"pc":21,"op":"ADD","gas":16607,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x3","0x1"]},{"pc":22,"op":"SWAP1","gas":16604,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x4"]},{"pc":23,"op":"MSTORE","gas":16601,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x4","0x20"]},{"pc":24,"op":"PUSH1","gas":16598,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d"]},{"pc":26,"op":"PUSH1","gas":16595,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20"]},{"pc":28,"op":"LOG1","gas":16592,"gasCost":1006,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x20"]},{"pc":29,"op":"GAS","gas":15586,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":15584,"gasCost":3,"depth":1,"stack":["0x3ce0"]},{"pc":33,"op":"LT","gas":15581,"gasCost":3,"depth":1,"stack":["0x3ce0","0x2710"]},{"pc":34,"op":"PUSH1","gas":15578,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":15575,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":15565,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":15564,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":15561,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":15558,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":15516,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7"]},{"pc":17,"op":"DUP1","gas":15513,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20"]},{"pc":18,"op":"MLOAD","gas":15510,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":15507,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x4"]},{"pc":21,"op":"ADD","gas":15504,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x4","0x1"]},{"pc":22,"op":"SWAP1","gas":15501,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x5"]},{"pc":23,"op":"MSTORE","gas":15498,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x5","0x20"]},{"pc":24,"op":"PUSH1","gas":15495,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7"]},{"pc":26,"op":"PUSH1","gas":15492,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20"]},{"pc":28,"op":"LOG1","gas":15489,"gasCost":1006,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x20"]},{"pc":29,"op":"GAS","gas":14483,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":14481,"gasCost":3,"depth":1,"stack":["0x3891"]},{"pc":33,"op":"LT","gas":14478,"gasCost":3,"depth":1,"stack":["0x3891","0x2710"]},{"pc":34,"op":"PUSH1","gas":14475,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":14472,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":14462,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":14461,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":14458,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":14455,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":14413,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a"]},{"pc":17,"op":"DUP1","gas":14410,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20"]},{"pc":18,"op":"MLOAD","gas":14407,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":14404,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x5"]},{"pc":21,"op":"ADD","gas":14401,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x5","0x1"]},{"pc":22,"op":"SWAP1","gas":14398,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x6"]},{"pc":23,"op":"MSTORE","gas":14395,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x6","0x20"]},{"pc":24,"op":"PUSH1","gas":14392,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a"]},{"pc":26,"op":"PUSH1","gas":14389,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20"]},{"pc":28,"op":"LOG1","gas":14386,"gasCost":1006,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x20"]},{"pc":29,"op":"GAS","gas":13380,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":13378,"gasCost":3,"depth":1,"stack":["0x3442"]},{"pc":33,"op":"LT","gas":13375,"gasCost":3,"depth":1,"stack":["0x3442","0x2710"]},{"pc":34,"op":"PUSH1","gas":13372,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":13369,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":13359,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":13358,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":13355,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":13352,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":13310,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29"]},{"pc":17,"op":"DUP1","gas":13307,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20"]},{"pc":18,"op":"MLOAD","gas":13304,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":13301,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x6"]},{"pc":21,"op":"ADD","gas":13298,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x6","0x1"]},{"pc":22,"op":"SWAP1","gas":13295,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x7"]},{"pc":23,"op":"MSTORE","gas":13292,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x7","0x20"]},{"pc":24,"op":"PUSH1","gas":13289,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29"]},{"pc":26,"op":"PUSH1","gas":13286,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20"]},{"pc":28,"op":"LOG1","gas":13283,"gasCost":1006,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x20"]},{"pc":29,"op":"GAS","gas":12277,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":12275,"gasCost":3,"depth":1,"stack":["0x2ff3"]},{"pc":33,"op":"LT","gas":12272,"gasCost":3,"depth":1,"stack":["0x2ff3","0x2710"]},{"pc":34,"op":"PUSH1","gas":12269,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":12266,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":12256,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":12255,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":12252,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":12249,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":12207,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d"]},{"pc":17,"op":"DUP1","gas":12204,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20"]},{"pc":18,"op":"MLOAD","gas":12201,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":12198,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x7"]},{"pc":21,"op":"ADD","gas":12195,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x7","0x1"]},{"pc":22,"op":"SWAP1","gas":12192,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x8"]},{"pc":23,"op":"MSTORE","gas":12189,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x8","0x20"]},{"pc":24,"op":"PUSH1","gas":12186,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d"]},{"pc":26,"op":"PUSH1","gas":12183,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20"]},{"pc":28,"op":"LOG1","gas":12180,"gasCost":1006,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x20"]},{"pc":29,"op":"GAS","gas":11174,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":11172,"gasCost":3,"depth":1,"stack":["0x2ba4"]},{"pc":33,"op":"LT","gas":11169,"gasCost":3,"depth":1,"stack":["0x2ba4","0x2710"]},{"pc":34,"op":"PUSH1","gas":11166,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":11163,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":11153,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":11152,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":11149,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":11146,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":11104,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041"]},{"pc":17,"op":"DUP1","gas":11101,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20"]},{"pc":18,"op":"MLOAD","gas":11098,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":11095,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x8"]},{"pc":21,"op":"ADD","gas":11092,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x8","0x1"]},{"pc":22,"op":"SWAP1","gas":11089,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x9"]},{"pc":23,"op":"MSTORE","gas":11086,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x9","0x20"]},{"pc":24,"op":"PUSH1","gas":11083,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041"]},{"pc":26,"op":"PUSH1","gas":11080,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20"]},{"pc":28,"op":"LOG1","gas":11077,"gasCost":1006,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x20"]},{"pc":29,"op":"GAS","gas":10071,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":10069,"gasCost":3,"depth":1,"stack":["0x2755"]},{"pc":33,"op":"LT","gas":10066,"gasCost":3,"depth":1,"stack":["0x2755","0x2710"]},{"pc":34,"op":"PUSH1","gas":10063,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":10060,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":10050,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":10049,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":10046,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":10043,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":10001,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3"]},{"pc":17,"op":"DUP1","gas":9998,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20"]},{"pc":18,"op":"MLOAD","gas":9995,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":9992,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0x9"]},{"pc":21,"op":"ADD","gas":9989,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0x9","0x1"]},{"pc":22,"op":"SWAP1","gas":9986,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0xa"]},{"pc":23,"op":"MSTORE","gas":9983,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0xa","0x20"]},{"pc":24,"op":"PUSH1","gas":9980,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3"]},{"pc":26,"op":"PUSH1","gas":9977,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20"]},{"pc":28,"op":"LOG1","gas":9974,"gasCost":1006,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0x20"]},{"pc":29,"op":"GAS","gas":8968,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":8966,"gasCost":3,"depth":1,"stack":["0x2306"]},{"pc":33,"op":"LT","gas":8963,"gasCost":3,"depth":1,"stack":["0x2306","0x2710"]},{"pc":34,"op":"PUSH1","gas":8960,"gasCost":3,"depth":1,"stack":["0x0"]},{"pc":36,"op":"JUMPI","gas":8957,"gasCost":10,"depth":1,"stack":["0x0","0x9"]},{"pc":37,"op":"STOP","gas":8947,"gasCost":0,"depth":1,"stack":[]}]}},{"txHash":"0xdd2fb1735b4fd6bcc90699a803e930c89c40cf5bd8ee9fe5b357ed3a6fc8554f","result":{"gas":114192,"failed":false,"returnValue":"0x","structLogs":[{"pc":0,"op":"NUMBER","gas":80000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"JUMPDEST","gas":79998,"gasCost":1,"depth":1,"stack":["0x2"]},{"pc":2,"op":"DUP1","gas":79997,"gasCost":3,"depth":1,"stack":["0x2"]},{"pc":3,"op":"DUP1","gas":79994,"gasCost":3,"depth":1,"stack":["0x2","0x2"]},{"pc":4,"op":"SSTORE","gas":79991,"gasCost":20000,"depth":1,"stack":["0x2","0x2","0x2"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000002"}},{"pc":5,"op":"PUSH1","gas":59991,"gasCost":3,"depth":1,"stack":["0x2"]},{"pc":7,"op":"ADD","gas":59988,"gasCost":3,"depth":1,"stack":["0x2","0x1"]},{"pc":8,"op":"GAS","gas":59985,"gasCost":2,"depth":1,"stack":["0x3"]},{"pc":9,"op":"PUSH2","gas":59983,"gasCost":3,"depth":1,"stack":["0x3","0xea4f"]},{"pc":12,"op":"LT","gas":59980,"gasCost":3,"depth":1,"stack":["0x3","0xea4f","0x61a8"]},{"pc":13,"op":"PUSH1","gas":59977,"gasCost":3,"depth":1,"stack":["0x3","0x1"]},{"pc":15,"op":"JUMPI","gas":59974,"gasCost":10,"depth":1,"stack":["0x3","0x1","0x1"]},{"pc":1,"op":"JUMPDEST","gas":59964,"gasCost":1,"depth":1,"stack":["0x3"]},{"pc":2,"op":"DUP1","gas":59963,"gasCost":3,"depth":1,"stack":["0x3"]},{"pc":3,"op":"DUP1","gas":59960,"gasCost":3,"depth":1,"stack":["0x3","0x3"]},{"pc":4,"op":"SSTORE","gas":59957,"gasCost":20000,"depth":1,"stack":["0x3","0x3","0x3"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000003":"0x0000000000000000000000000000000000000000000000000000000000000003"}},{"pc":5,"op":"PUSH1","gas":39957,"gasCost":3,"depth":1,"stack":["0x3"]},{"pc":7,"op":"ADD","gas":39954,"gasCost":3,"depth":1,"stack":["0x3","0x1"]},{"pc":8,"op":"GAS","gas":39951,"gasCost":2,"depth":1,"stack":["0x4"]},{"pc":9,"op":"PUSH2","gas":39949,"gasCost":3,"depth":1,"stack":["0x4","0x9c0d"]},{"pc":12,"op":"LT","gas":39946,"gasCost":3,"depth":1,"stack":["0x4","0x9c0d","0x61a8"]},{"pc":13,"op":"PUSH1","gas":39943,"gasCost":3,"depth":1,"stack":["0x4","0x1"]},{"pc":15,"op":"JUMPI","gas":39940,"gasCost":10,"depth":1,"stack":["0x4","0x1","0x1"]},{"pc":1,"op":"JUMPDEST","gas":39930,"gasCost":1,"depth":1,"stack":["0x4"]},{"pc":2,"op":"DUP1","gas":39929,"gasCost":3,"depth":1,"stack":["0x4"]},{"pc":3,"op":"DUP1","gas":39926,"gasCost":3,"depth":1,"stack":["0x4","0x4"]},{"pc":4,"op":"SSTORE","gas":39923,"gasCost":20000,"depth":1,"stack":["0x4","0x4","0x4"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000003":"0x0000000000000000000000000000000000000000000000000000000000000003","0x0000000000000000000000000000000000000000000000000000000000000004":"0x0000000000000000000000000000000000000000000000000000000000000004"}},{"pc":5,"op":"PUSH1","gas":19923,"gasCost":3,"depth":1,"stack":["0x4"]},{"pc":7,"op":"ADD","gas":19920,"gasCost":3,"depth":1,"stack":["0x4","0x1"]},{"pc":8,"op":"GAS","gas":19917,"gasCost":2,"depth":1,"stack":["0x5"]},{"pc":9,"op":"PUSH2","gas":19915,"gasCost":3,"depth":1,"stack":["0x5","0x4dcb"]},{"pc":12,"op":"LT","gas":19912,"gasCost":3,"depth":1,"stack":["0x5","0x4dcb","0x61a8"]},{"pc":13,"op":"PUSH1","gas":19909,"gasCost":3,"depth":1,"stack":["0x5","0x0"]},{"pc":15,"op":"JUMPI","gas":19906,"gasCost":10,"depth":1,"stack":["0x5","0x0","0x1"]},{"pc":16,"op":"STOP","gas":19896,"gasCost":0,"depth":1,"stack":["0x5"]}]}},{"txHash":"0x5bc704d4eb4ce7fe319705d2f888516961426a177f2799c9f934b5df7466dd33","result":{"gas":48342,"failed":false,"returnValue":"0x","structLogs":[{"pc":0,"op":"CALLDATASIZE","gas":78184,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"DUP1","gas":78182,"gasCost":3,"depth":1,"stack":["0xc"]},{"pc":2,"op":"PUSH1","gas":78179,"gasCost":3,"depth":1,"stack":["0xc","0xc"]},{"pc":4,"op":"DUP1","gas":78176,"gasCost":3,"depth":1,"stack":["0xc","0xc","0x0"]},{"pc":5,"op":"CALLDATACOPY","gas":78173,"gasCost":9,"depth":1,"stack":["0xc","0xc","0x0","0x0"]},{"pc":6,"op":"PUSH1","gas":78164,"gasCost":3,"depth":1,"stack":["0xc"]},{"pc":8,"op":"KECCAK256","gas":78161,"gasCost":36,"depth":1,"stack":["0xc","0x0"]},{"pc":9,"op":"PUSH1","gas":78125,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09"]},{"pc":11,"op":"SLOAD","gas":78122,"gasCost":50,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000000"}},{"pc":12,"op":"DUP1","gas":78072,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0"]},{"pc":13,"op":"DUP3","gas":78069,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0"]},{"pc":14,"op":"SSTORE","gas":78066,"gasCost":5000,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0","0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000000","0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09":"0x0000000000000000000000000000000000000000000000000000000000000000"}},{"pc":15,"op":"DUP1","gas":73066,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0"]},{"pc":16,"op":"PUSH1","gas":73063,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0"]},{"pc":18,"op":"ADD","gas":73060,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0","0x1"]},{"pc":19,"op":"PUSH1","gas":73057,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x1"]},{"pc":21,"op":"SSTORE","gas":73054,"gasCost":20000,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x1","0x0"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09":"0x0000000000000000000000000000000000000000000000000000000000000000"}},{"pc":22,"op":"PUSH1","gas":53054,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0"]},{"pc":24,"op":"MSTORE","gas":53051,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0"]},{"pc":25,"op":"PUSH4","gas":53048,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09"]},{"pc":30,"op":"PUSH1","gas":53045,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x656d6974"]},{"pc":32,"op":"PUSH1","gas":53042,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x656d6974","0x20"]},{"pc":34,"op":"LOG2","gas":53039,"gasCost":1381,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x656d6974","0x20","0x0"]},{"pc":35,"op":"STOP","gas":51658,"gasCost":0,"depth":1,"stack":[]}]}},{"txHash":"0x0d6999c0e9e4bec347945593e97bdcdf7c25be08ca1a1efdc520dbe75be985f3","result":{"gas":21000,"failed":false,"returnValue":"0x","structLogs":[]}}]} diff --git a/tests/debug_traceBlockByNumber/trace-block-storage-snapshot-timing.io b/tests/debug_traceBlockByNumber/trace-block-storage-snapshot-timing.io new file mode 100644 index 000000000..b508e5752 --- /dev/null +++ b/tests/debug_traceBlockByNumber/trace-block-storage-snapshot-timing.io @@ -0,0 +1,4 @@ +// traces block 0x2 and validates cumulative storage snapshots across repeated SSTORE operations +// speconly: client response is only checked for schema validity. +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByNumber","params":["0x2",{"disableStack":false,"disableStorage":false,"enableMemory":false,"enableReturnData":true}]} +<< {"jsonrpc":"2.0","id":1,"result":[{"txHash":"0x25d8b4a27c4578e5de6441f98881cf050ab2d9f28ceb28559ece0b65f555e9d8","result":{"gas":66377,"failed":false,"returnValue":"0x","structLogs":[{"pc":0,"op":"NUMBER","gas":20000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"PUSH1","gas":19998,"gasCost":3,"depth":1,"stack":["0x2"]},{"pc":3,"op":"MSTORE","gas":19995,"gasCost":6,"depth":1,"stack":["0x2","0x0"]},{"pc":4,"op":"PUSH1","gas":19989,"gasCost":3,"depth":1,"stack":[]},{"pc":6,"op":"PUSH1","gas":19986,"gasCost":3,"depth":1,"stack":["0x0"]},{"pc":8,"op":"MSTORE","gas":19983,"gasCost":6,"depth":1,"stack":["0x0","0x20"]},{"pc":9,"op":"JUMPDEST","gas":19977,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":19976,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":19973,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":19970,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":19928,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569"]},{"pc":17,"op":"DUP1","gas":19925,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20"]},{"pc":18,"op":"MLOAD","gas":19922,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":19919,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x0"]},{"pc":21,"op":"ADD","gas":19916,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x0","0x1"]},{"pc":22,"op":"SWAP1","gas":19913,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x1"]},{"pc":23,"op":"MSTORE","gas":19910,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x1","0x20"]},{"pc":24,"op":"PUSH1","gas":19907,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569"]},{"pc":26,"op":"PUSH1","gas":19904,"gasCost":3,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20"]},{"pc":28,"op":"LOG1","gas":19901,"gasCost":1006,"depth":1,"stack":["0xabbb5caa7dda850e60932de0934eb1f9d0f59695050f761dc64e443e5030a569","0x20","0x20"]},{"pc":29,"op":"GAS","gas":18895,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":18893,"gasCost":3,"depth":1,"stack":["0x49cd"]},{"pc":33,"op":"LT","gas":18890,"gasCost":3,"depth":1,"stack":["0x49cd","0x2710"]},{"pc":34,"op":"PUSH1","gas":18887,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":18884,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":18874,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":18873,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":18870,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":18867,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":18825,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f"]},{"pc":17,"op":"DUP1","gas":18822,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20"]},{"pc":18,"op":"MLOAD","gas":18819,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":18816,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x1"]},{"pc":21,"op":"ADD","gas":18813,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x1","0x1"]},{"pc":22,"op":"SWAP1","gas":18810,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x2"]},{"pc":23,"op":"MSTORE","gas":18807,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x2","0x20"]},{"pc":24,"op":"PUSH1","gas":18804,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f"]},{"pc":26,"op":"PUSH1","gas":18801,"gasCost":3,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20"]},{"pc":28,"op":"LOG1","gas":18798,"gasCost":1006,"depth":1,"stack":["0xd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f","0x20","0x20"]},{"pc":29,"op":"GAS","gas":17792,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":17790,"gasCost":3,"depth":1,"stack":["0x457e"]},{"pc":33,"op":"LT","gas":17787,"gasCost":3,"depth":1,"stack":["0x457e","0x2710"]},{"pc":34,"op":"PUSH1","gas":17784,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":17781,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":17771,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":17770,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":17767,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":17764,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":17722,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c"]},{"pc":17,"op":"DUP1","gas":17719,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20"]},{"pc":18,"op":"MLOAD","gas":17716,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":17713,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x2"]},{"pc":21,"op":"ADD","gas":17710,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x2","0x1"]},{"pc":22,"op":"SWAP1","gas":17707,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x3"]},{"pc":23,"op":"MSTORE","gas":17704,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x3","0x20"]},{"pc":24,"op":"PUSH1","gas":17701,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c"]},{"pc":26,"op":"PUSH1","gas":17698,"gasCost":3,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20"]},{"pc":28,"op":"LOG1","gas":17695,"gasCost":1006,"depth":1,"stack":["0x679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c","0x20","0x20"]},{"pc":29,"op":"GAS","gas":16689,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":16687,"gasCost":3,"depth":1,"stack":["0x412f"]},{"pc":33,"op":"LT","gas":16684,"gasCost":3,"depth":1,"stack":["0x412f","0x2710"]},{"pc":34,"op":"PUSH1","gas":16681,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":16678,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":16668,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":16667,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":16664,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":16661,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":16619,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d"]},{"pc":17,"op":"DUP1","gas":16616,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20"]},{"pc":18,"op":"MLOAD","gas":16613,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":16610,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x3"]},{"pc":21,"op":"ADD","gas":16607,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x3","0x1"]},{"pc":22,"op":"SWAP1","gas":16604,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x4"]},{"pc":23,"op":"MSTORE","gas":16601,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x4","0x20"]},{"pc":24,"op":"PUSH1","gas":16598,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d"]},{"pc":26,"op":"PUSH1","gas":16595,"gasCost":3,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20"]},{"pc":28,"op":"LOG1","gas":16592,"gasCost":1006,"depth":1,"stack":["0xc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d","0x20","0x20"]},{"pc":29,"op":"GAS","gas":15586,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":15584,"gasCost":3,"depth":1,"stack":["0x3ce0"]},{"pc":33,"op":"LT","gas":15581,"gasCost":3,"depth":1,"stack":["0x3ce0","0x2710"]},{"pc":34,"op":"PUSH1","gas":15578,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":15575,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":15565,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":15564,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":15561,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":15558,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":15516,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7"]},{"pc":17,"op":"DUP1","gas":15513,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20"]},{"pc":18,"op":"MLOAD","gas":15510,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":15507,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x4"]},{"pc":21,"op":"ADD","gas":15504,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x4","0x1"]},{"pc":22,"op":"SWAP1","gas":15501,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x5"]},{"pc":23,"op":"MSTORE","gas":15498,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x5","0x20"]},{"pc":24,"op":"PUSH1","gas":15495,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7"]},{"pc":26,"op":"PUSH1","gas":15492,"gasCost":3,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20"]},{"pc":28,"op":"LOG1","gas":15489,"gasCost":1006,"depth":1,"stack":["0x91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7","0x20","0x20"]},{"pc":29,"op":"GAS","gas":14483,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":14481,"gasCost":3,"depth":1,"stack":["0x3891"]},{"pc":33,"op":"LT","gas":14478,"gasCost":3,"depth":1,"stack":["0x3891","0x2710"]},{"pc":34,"op":"PUSH1","gas":14475,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":14472,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":14462,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":14461,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":14458,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":14455,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":14413,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a"]},{"pc":17,"op":"DUP1","gas":14410,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20"]},{"pc":18,"op":"MLOAD","gas":14407,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":14404,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x5"]},{"pc":21,"op":"ADD","gas":14401,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x5","0x1"]},{"pc":22,"op":"SWAP1","gas":14398,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x6"]},{"pc":23,"op":"MSTORE","gas":14395,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x6","0x20"]},{"pc":24,"op":"PUSH1","gas":14392,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a"]},{"pc":26,"op":"PUSH1","gas":14389,"gasCost":3,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20"]},{"pc":28,"op":"LOG1","gas":14386,"gasCost":1006,"depth":1,"stack":["0x89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a","0x20","0x20"]},{"pc":29,"op":"GAS","gas":13380,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":13378,"gasCost":3,"depth":1,"stack":["0x3442"]},{"pc":33,"op":"LT","gas":13375,"gasCost":3,"depth":1,"stack":["0x3442","0x2710"]},{"pc":34,"op":"PUSH1","gas":13372,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":13369,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":13359,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":13358,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":13355,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":13352,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":13310,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29"]},{"pc":17,"op":"DUP1","gas":13307,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20"]},{"pc":18,"op":"MLOAD","gas":13304,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":13301,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x6"]},{"pc":21,"op":"ADD","gas":13298,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x6","0x1"]},{"pc":22,"op":"SWAP1","gas":13295,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x7"]},{"pc":23,"op":"MSTORE","gas":13292,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x7","0x20"]},{"pc":24,"op":"PUSH1","gas":13289,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29"]},{"pc":26,"op":"PUSH1","gas":13286,"gasCost":3,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20"]},{"pc":28,"op":"LOG1","gas":13283,"gasCost":1006,"depth":1,"stack":["0x8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29","0x20","0x20"]},{"pc":29,"op":"GAS","gas":12277,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":12275,"gasCost":3,"depth":1,"stack":["0x2ff3"]},{"pc":33,"op":"LT","gas":12272,"gasCost":3,"depth":1,"stack":["0x2ff3","0x2710"]},{"pc":34,"op":"PUSH1","gas":12269,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":12266,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":12256,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":12255,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":12252,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":12249,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":12207,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d"]},{"pc":17,"op":"DUP1","gas":12204,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20"]},{"pc":18,"op":"MLOAD","gas":12201,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":12198,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x7"]},{"pc":21,"op":"ADD","gas":12195,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x7","0x1"]},{"pc":22,"op":"SWAP1","gas":12192,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x8"]},{"pc":23,"op":"MSTORE","gas":12189,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x8","0x20"]},{"pc":24,"op":"PUSH1","gas":12186,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d"]},{"pc":26,"op":"PUSH1","gas":12183,"gasCost":3,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20"]},{"pc":28,"op":"LOG1","gas":12180,"gasCost":1006,"depth":1,"stack":["0xb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d","0x20","0x20"]},{"pc":29,"op":"GAS","gas":11174,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":11172,"gasCost":3,"depth":1,"stack":["0x2ba4"]},{"pc":33,"op":"LT","gas":11169,"gasCost":3,"depth":1,"stack":["0x2ba4","0x2710"]},{"pc":34,"op":"PUSH1","gas":11166,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":11163,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":11153,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":11152,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":11149,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":11146,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":11104,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041"]},{"pc":17,"op":"DUP1","gas":11101,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20"]},{"pc":18,"op":"MLOAD","gas":11098,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":11095,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x8"]},{"pc":21,"op":"ADD","gas":11092,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x8","0x1"]},{"pc":22,"op":"SWAP1","gas":11089,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x9"]},{"pc":23,"op":"MSTORE","gas":11086,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x9","0x20"]},{"pc":24,"op":"PUSH1","gas":11083,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041"]},{"pc":26,"op":"PUSH1","gas":11080,"gasCost":3,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20"]},{"pc":28,"op":"LOG1","gas":11077,"gasCost":1006,"depth":1,"stack":["0x6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041","0x20","0x20"]},{"pc":29,"op":"GAS","gas":10071,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":10069,"gasCost":3,"depth":1,"stack":["0x2755"]},{"pc":33,"op":"LT","gas":10066,"gasCost":3,"depth":1,"stack":["0x2755","0x2710"]},{"pc":34,"op":"PUSH1","gas":10063,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":36,"op":"JUMPI","gas":10060,"gasCost":10,"depth":1,"stack":["0x1","0x9"]},{"pc":9,"op":"JUMPDEST","gas":10050,"gasCost":1,"depth":1,"stack":[]},{"pc":10,"op":"PUSH1","gas":10049,"gasCost":3,"depth":1,"stack":[]},{"pc":12,"op":"PUSH1","gas":10046,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"KECCAK256","gas":10043,"gasCost":42,"depth":1,"stack":["0x40","0x0"]},{"pc":15,"op":"PUSH1","gas":10001,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3"]},{"pc":17,"op":"DUP1","gas":9998,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20"]},{"pc":18,"op":"MLOAD","gas":9995,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0x20"]},{"pc":19,"op":"PUSH1","gas":9992,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0x9"]},{"pc":21,"op":"ADD","gas":9989,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0x9","0x1"]},{"pc":22,"op":"SWAP1","gas":9986,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0xa"]},{"pc":23,"op":"MSTORE","gas":9983,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0xa","0x20"]},{"pc":24,"op":"PUSH1","gas":9980,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3"]},{"pc":26,"op":"PUSH1","gas":9977,"gasCost":3,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20"]},{"pc":28,"op":"LOG1","gas":9974,"gasCost":1006,"depth":1,"stack":["0x6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3","0x20","0x20"]},{"pc":29,"op":"GAS","gas":8968,"gasCost":2,"depth":1,"stack":[]},{"pc":30,"op":"PUSH2","gas":8966,"gasCost":3,"depth":1,"stack":["0x2306"]},{"pc":33,"op":"LT","gas":8963,"gasCost":3,"depth":1,"stack":["0x2306","0x2710"]},{"pc":34,"op":"PUSH1","gas":8960,"gasCost":3,"depth":1,"stack":["0x0"]},{"pc":36,"op":"JUMPI","gas":8957,"gasCost":10,"depth":1,"stack":["0x0","0x9"]},{"pc":37,"op":"STOP","gas":8947,"gasCost":0,"depth":1,"stack":[]}]}},{"txHash":"0xdd2fb1735b4fd6bcc90699a803e930c89c40cf5bd8ee9fe5b357ed3a6fc8554f","result":{"gas":114192,"failed":false,"returnValue":"0x","structLogs":[{"pc":0,"op":"NUMBER","gas":80000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"JUMPDEST","gas":79998,"gasCost":1,"depth":1,"stack":["0x2"]},{"pc":2,"op":"DUP1","gas":79997,"gasCost":3,"depth":1,"stack":["0x2"]},{"pc":3,"op":"DUP1","gas":79994,"gasCost":3,"depth":1,"stack":["0x2","0x2"]},{"pc":4,"op":"SSTORE","gas":79991,"gasCost":20000,"depth":1,"stack":["0x2","0x2","0x2"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000002"}},{"pc":5,"op":"PUSH1","gas":59991,"gasCost":3,"depth":1,"stack":["0x2"]},{"pc":7,"op":"ADD","gas":59988,"gasCost":3,"depth":1,"stack":["0x2","0x1"]},{"pc":8,"op":"GAS","gas":59985,"gasCost":2,"depth":1,"stack":["0x3"]},{"pc":9,"op":"PUSH2","gas":59983,"gasCost":3,"depth":1,"stack":["0x3","0xea4f"]},{"pc":12,"op":"LT","gas":59980,"gasCost":3,"depth":1,"stack":["0x3","0xea4f","0x61a8"]},{"pc":13,"op":"PUSH1","gas":59977,"gasCost":3,"depth":1,"stack":["0x3","0x1"]},{"pc":15,"op":"JUMPI","gas":59974,"gasCost":10,"depth":1,"stack":["0x3","0x1","0x1"]},{"pc":1,"op":"JUMPDEST","gas":59964,"gasCost":1,"depth":1,"stack":["0x3"]},{"pc":2,"op":"DUP1","gas":59963,"gasCost":3,"depth":1,"stack":["0x3"]},{"pc":3,"op":"DUP1","gas":59960,"gasCost":3,"depth":1,"stack":["0x3","0x3"]},{"pc":4,"op":"SSTORE","gas":59957,"gasCost":20000,"depth":1,"stack":["0x3","0x3","0x3"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000003":"0x0000000000000000000000000000000000000000000000000000000000000003"}},{"pc":5,"op":"PUSH1","gas":39957,"gasCost":3,"depth":1,"stack":["0x3"]},{"pc":7,"op":"ADD","gas":39954,"gasCost":3,"depth":1,"stack":["0x3","0x1"]},{"pc":8,"op":"GAS","gas":39951,"gasCost":2,"depth":1,"stack":["0x4"]},{"pc":9,"op":"PUSH2","gas":39949,"gasCost":3,"depth":1,"stack":["0x4","0x9c0d"]},{"pc":12,"op":"LT","gas":39946,"gasCost":3,"depth":1,"stack":["0x4","0x9c0d","0x61a8"]},{"pc":13,"op":"PUSH1","gas":39943,"gasCost":3,"depth":1,"stack":["0x4","0x1"]},{"pc":15,"op":"JUMPI","gas":39940,"gasCost":10,"depth":1,"stack":["0x4","0x1","0x1"]},{"pc":1,"op":"JUMPDEST","gas":39930,"gasCost":1,"depth":1,"stack":["0x4"]},{"pc":2,"op":"DUP1","gas":39929,"gasCost":3,"depth":1,"stack":["0x4"]},{"pc":3,"op":"DUP1","gas":39926,"gasCost":3,"depth":1,"stack":["0x4","0x4"]},{"pc":4,"op":"SSTORE","gas":39923,"gasCost":20000,"depth":1,"stack":["0x4","0x4","0x4"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000002","0x0000000000000000000000000000000000000000000000000000000000000003":"0x0000000000000000000000000000000000000000000000000000000000000003","0x0000000000000000000000000000000000000000000000000000000000000004":"0x0000000000000000000000000000000000000000000000000000000000000004"}},{"pc":5,"op":"PUSH1","gas":19923,"gasCost":3,"depth":1,"stack":["0x4"]},{"pc":7,"op":"ADD","gas":19920,"gasCost":3,"depth":1,"stack":["0x4","0x1"]},{"pc":8,"op":"GAS","gas":19917,"gasCost":2,"depth":1,"stack":["0x5"]},{"pc":9,"op":"PUSH2","gas":19915,"gasCost":3,"depth":1,"stack":["0x5","0x4dcb"]},{"pc":12,"op":"LT","gas":19912,"gasCost":3,"depth":1,"stack":["0x5","0x4dcb","0x61a8"]},{"pc":13,"op":"PUSH1","gas":19909,"gasCost":3,"depth":1,"stack":["0x5","0x0"]},{"pc":15,"op":"JUMPI","gas":19906,"gasCost":10,"depth":1,"stack":["0x5","0x0","0x1"]},{"pc":16,"op":"STOP","gas":19896,"gasCost":0,"depth":1,"stack":["0x5"]}]}},{"txHash":"0x5bc704d4eb4ce7fe319705d2f888516961426a177f2799c9f934b5df7466dd33","result":{"gas":48342,"failed":false,"returnValue":"0x","structLogs":[{"pc":0,"op":"CALLDATASIZE","gas":78184,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"DUP1","gas":78182,"gasCost":3,"depth":1,"stack":["0xc"]},{"pc":2,"op":"PUSH1","gas":78179,"gasCost":3,"depth":1,"stack":["0xc","0xc"]},{"pc":4,"op":"DUP1","gas":78176,"gasCost":3,"depth":1,"stack":["0xc","0xc","0x0"]},{"pc":5,"op":"CALLDATACOPY","gas":78173,"gasCost":9,"depth":1,"stack":["0xc","0xc","0x0","0x0"]},{"pc":6,"op":"PUSH1","gas":78164,"gasCost":3,"depth":1,"stack":["0xc"]},{"pc":8,"op":"KECCAK256","gas":78161,"gasCost":36,"depth":1,"stack":["0xc","0x0"]},{"pc":9,"op":"PUSH1","gas":78125,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09"]},{"pc":11,"op":"SLOAD","gas":78122,"gasCost":50,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000000"}},{"pc":12,"op":"DUP1","gas":78072,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0"]},{"pc":13,"op":"DUP3","gas":78069,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0"]},{"pc":14,"op":"SSTORE","gas":78066,"gasCost":5000,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0","0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000000","0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09":"0x0000000000000000000000000000000000000000000000000000000000000000"}},{"pc":15,"op":"DUP1","gas":73066,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0"]},{"pc":16,"op":"PUSH1","gas":73063,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0"]},{"pc":18,"op":"ADD","gas":73060,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0","0x1"]},{"pc":19,"op":"PUSH1","gas":73057,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x1"]},{"pc":21,"op":"SSTORE","gas":73054,"gasCost":20000,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x1","0x0"],"storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09":"0x0000000000000000000000000000000000000000000000000000000000000000"}},{"pc":22,"op":"PUSH1","gas":53054,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0"]},{"pc":24,"op":"MSTORE","gas":53051,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x0","0x0"]},{"pc":25,"op":"PUSH4","gas":53048,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09"]},{"pc":30,"op":"PUSH1","gas":53045,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x656d6974"]},{"pc":32,"op":"PUSH1","gas":53042,"gasCost":3,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x656d6974","0x20"]},{"pc":34,"op":"LOG2","gas":53039,"gasCost":1381,"depth":1,"stack":["0xf4da19d6c17928e683661a52829cf391d3dc26d581152b81ce595a1207944f09","0x656d6974","0x20","0x0"]},{"pc":35,"op":"STOP","gas":51658,"gasCost":0,"depth":1,"stack":[]}]}},{"txHash":"0x0d6999c0e9e4bec347945593e97bdcdf7c25be08ca1a1efdc520dbe75be985f3","result":{"gas":21000,"failed":false,"returnValue":"0x","structLogs":[]}}]} diff --git a/tests/debug_traceBlockByNumber/trace-block-with-transactions.io b/tests/debug_traceBlockByNumber/trace-block-with-transactions.io new file mode 100644 index 000000000..b6803fc78 --- /dev/null +++ b/tests/debug_traceBlockByNumber/trace-block-with-transactions.io @@ -0,0 +1,4 @@ +// traces a block containing transactions; validates that each entry has txHash and a spec-compliant result +// speconly: client response is only checked for schema validity. +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByNumber","params":["0x1"]} +<< {"jsonrpc":"2.0","id":1,"result":[{"txHash":"0xc1d605c6612a5fe84dc95810030bfe5b1d327652b381bc695e28f50d13b2b09e","result":{"gas":66259,"failed":false,"returnValue":"0x60004381526020014681526020014181526020014881526020014481526020013281526020013481526020016000f3","structLogs":[{"pc":0,"op":"PUSH1","gas":23644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":23641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":23639,"gasCost":3,"depth":1,"stack":["0xd","0x3c"]},{"pc":4,"op":"DUP1","gas":23636,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":5,"op":"PUSH1","gas":23633,"gasCost":3,"depth":1,"stack":["0x2f","0x2f"]},{"pc":7,"op":"PUSH1","gas":23630,"gasCost":3,"depth":1,"stack":["0x2f","0x2f","0xd"]},{"pc":9,"op":"CODECOPY","gas":23627,"gasCost":15,"depth":1,"stack":["0x2f","0x2f","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":23612,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":12,"op":"RETURN","gas":23609,"gasCost":0,"depth":1,"stack":["0x2f","0x0"]}]}},{"txHash":"0x1999fb436409e9c2464bd9efc3aa914b2e8a843144fdcc17132fa9da0f15641e","result":{"gas":75785,"failed":false,"returnValue":"0x366002146022577177726f6e672d63616c6c6461746173697a656000526012600efd5b60003560f01c61ff01146047576d77726f6e672d63616c6c64617461600052600e6012fd5b61ffee6000526002601ef3","structLogs":[{"pc":0,"op":"PUSH1","gas":30844,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":30841,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":30839,"gasCost":3,"depth":1,"stack":["0xd","0x60"]},{"pc":4,"op":"DUP1","gas":30836,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":5,"op":"PUSH1","gas":30833,"gasCost":3,"depth":1,"stack":["0x53","0x53"]},{"pc":7,"op":"PUSH1","gas":30830,"gasCost":3,"depth":1,"stack":["0x53","0x53","0xd"]},{"pc":9,"op":"CODECOPY","gas":30827,"gasCost":21,"depth":1,"stack":["0x53","0x53","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":30806,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":12,"op":"RETURN","gas":30803,"gasCost":0,"depth":1,"stack":["0x53","0x0"]}]}},{"txHash":"0x021ae79aa8821d60291761cfe419b6cbc0ad7dd50d4aa6f14a54e5fc0d62e325","result":{"gas":87893,"failed":false,"returnValue":"0x6000356142ff54501515603b577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f08c379a0000000000000000000000000000000000000000000000000000000006000526020600452600a6024527f75736572206572726f7200000000000000000000000000000000000000000000604452604e6000fd","structLogs":[{"pc":0,"op":"PUSH1","gas":43644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":43641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":43639,"gasCost":3,"depth":1,"stack":["0xd","0xa0"]},{"pc":4,"op":"DUP1","gas":43636,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":5,"op":"PUSH1","gas":43633,"gasCost":3,"depth":1,"stack":["0x93","0x93"]},{"pc":7,"op":"PUSH1","gas":43630,"gasCost":3,"depth":1,"stack":["0x93","0x93","0xd"]},{"pc":9,"op":"CODECOPY","gas":43627,"gasCost":33,"depth":1,"stack":["0x93","0x93","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":43594,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":12,"op":"RETURN","gas":43591,"gasCost":0,"depth":1,"stack":["0x93","0x0"]}]}},{"txHash":"0x709f12649d057e2ad0a0a41176cc405f80af735df8cf2b89782eb3ab1699e549","result":{"gas":107962,"failed":false,"returnValue":"0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7dcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0a15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054cabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe051471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31b39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","structLogs":[{"pc":0,"op":"NUMBER","gas":60000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"PUSH1","gas":59998,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":3,"op":"MSTORE","gas":59995,"gasCost":6,"depth":1,"stack":["0x1","0x0"]},{"pc":4,"op":"PUSH1","gas":59989,"gasCost":3,"depth":1,"stack":[]},{"pc":6,"op":"PUSH1","gas":59986,"gasCost":3,"depth":1,"stack":["0x0"]},{"pc":8,"op":"MSTORE","gas":59983,"gasCost":6,"depth":1,"stack":["0x0","0x20"]},{"pc":9,"op":"PUSH1","gas":59977,"gasCost":3,"depth":1,"stack":[]},{"pc":11,"op":"JUMPDEST","gas":59974,"gasCost":1,"depth":1,"stack":["0x40"]},{"pc":12,"op":"PUSH1","gas":59973,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"PUSH1","gas":59970,"gasCost":3,"depth":1,"stack":["0x40","0x40"]},{"pc":16,"op":"KECCAK256","gas":59967,"gasCost":42,"depth":1,"stack":["0x40","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59925,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":19,"op":"DUP1","gas":59922,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20"]},{"pc":20,"op":"MLOAD","gas":59919,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59916,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0"]},{"pc":23,"op":"ADD","gas":59913,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0","0x1"]},{"pc":24,"op":"SWAP1","gas":59910,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x1"]},{"pc":25,"op":"MSTORE","gas":59907,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x1","0x20"]},{"pc":26,"op":"DUP2","gas":59904,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":27,"op":"MSTORE","gas":59901,"gasCost":6,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x40"]},{"pc":28,"op":"PUSH1","gas":59895,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":30,"op":"ADD","gas":59892,"gasCost":3,"depth":1,"stack":["0x40","0x20"]},{"pc":31,"op":"PUSH2","gas":59889,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":34,"op":"DUP2","gas":59886,"gasCost":3,"depth":1,"stack":["0x60","0x140"]},{"pc":35,"op":"LT","gas":59883,"gasCost":3,"depth":1,"stack":["0x60","0x140","0x60"]},{"pc":36,"op":"PUSH1","gas":59880,"gasCost":3,"depth":1,"stack":["0x60","0x1"]},{"pc":38,"op":"JUMPI","gas":59877,"gasCost":10,"depth":1,"stack":["0x60","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59867,"gasCost":1,"depth":1,"stack":["0x60"]},{"pc":12,"op":"PUSH1","gas":59866,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":14,"op":"PUSH1","gas":59863,"gasCost":3,"depth":1,"stack":["0x60","0x40"]},{"pc":16,"op":"KECCAK256","gas":59860,"gasCost":42,"depth":1,"stack":["0x60","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59818,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":19,"op":"DUP1","gas":59815,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20"]},{"pc":20,"op":"MLOAD","gas":59812,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59809,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1"]},{"pc":23,"op":"ADD","gas":59806,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1","0x1"]},{"pc":24,"op":"SWAP1","gas":59803,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x2"]},{"pc":25,"op":"MSTORE","gas":59800,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x2","0x20"]},{"pc":26,"op":"DUP2","gas":59797,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":27,"op":"MSTORE","gas":59794,"gasCost":6,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x60"]},{"pc":28,"op":"PUSH1","gas":59788,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":30,"op":"ADD","gas":59785,"gasCost":3,"depth":1,"stack":["0x60","0x20"]},{"pc":31,"op":"PUSH2","gas":59782,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":34,"op":"DUP2","gas":59779,"gasCost":3,"depth":1,"stack":["0x80","0x140"]},{"pc":35,"op":"LT","gas":59776,"gasCost":3,"depth":1,"stack":["0x80","0x140","0x80"]},{"pc":36,"op":"PUSH1","gas":59773,"gasCost":3,"depth":1,"stack":["0x80","0x1"]},{"pc":38,"op":"JUMPI","gas":59770,"gasCost":10,"depth":1,"stack":["0x80","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59760,"gasCost":1,"depth":1,"stack":["0x80"]},{"pc":12,"op":"PUSH1","gas":59759,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":14,"op":"PUSH1","gas":59756,"gasCost":3,"depth":1,"stack":["0x80","0x40"]},{"pc":16,"op":"KECCAK256","gas":59753,"gasCost":42,"depth":1,"stack":["0x80","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59711,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":19,"op":"DUP1","gas":59708,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20"]},{"pc":20,"op":"MLOAD","gas":59705,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59702,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2"]},{"pc":23,"op":"ADD","gas":59699,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2","0x1"]},{"pc":24,"op":"SWAP1","gas":59696,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x3"]},{"pc":25,"op":"MSTORE","gas":59693,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x3","0x20"]},{"pc":26,"op":"DUP2","gas":59690,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":27,"op":"MSTORE","gas":59687,"gasCost":6,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x80"]},{"pc":28,"op":"PUSH1","gas":59681,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":30,"op":"ADD","gas":59678,"gasCost":3,"depth":1,"stack":["0x80","0x20"]},{"pc":31,"op":"PUSH2","gas":59675,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":34,"op":"DUP2","gas":59672,"gasCost":3,"depth":1,"stack":["0xa0","0x140"]},{"pc":35,"op":"LT","gas":59669,"gasCost":3,"depth":1,"stack":["0xa0","0x140","0xa0"]},{"pc":36,"op":"PUSH1","gas":59666,"gasCost":3,"depth":1,"stack":["0xa0","0x1"]},{"pc":38,"op":"JUMPI","gas":59663,"gasCost":10,"depth":1,"stack":["0xa0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59653,"gasCost":1,"depth":1,"stack":["0xa0"]},{"pc":12,"op":"PUSH1","gas":59652,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":14,"op":"PUSH1","gas":59649,"gasCost":3,"depth":1,"stack":["0xa0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59646,"gasCost":42,"depth":1,"stack":["0xa0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59604,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":19,"op":"DUP1","gas":59601,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20"]},{"pc":20,"op":"MLOAD","gas":59598,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59595,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3"]},{"pc":23,"op":"ADD","gas":59592,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3","0x1"]},{"pc":24,"op":"SWAP1","gas":59589,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x4"]},{"pc":25,"op":"MSTORE","gas":59586,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x4","0x20"]},{"pc":26,"op":"DUP2","gas":59583,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":27,"op":"MSTORE","gas":59580,"gasCost":6,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xa0"]},{"pc":28,"op":"PUSH1","gas":59574,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":30,"op":"ADD","gas":59571,"gasCost":3,"depth":1,"stack":["0xa0","0x20"]},{"pc":31,"op":"PUSH2","gas":59568,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":34,"op":"DUP2","gas":59565,"gasCost":3,"depth":1,"stack":["0xc0","0x140"]},{"pc":35,"op":"LT","gas":59562,"gasCost":3,"depth":1,"stack":["0xc0","0x140","0xc0"]},{"pc":36,"op":"PUSH1","gas":59559,"gasCost":3,"depth":1,"stack":["0xc0","0x1"]},{"pc":38,"op":"JUMPI","gas":59556,"gasCost":10,"depth":1,"stack":["0xc0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59546,"gasCost":1,"depth":1,"stack":["0xc0"]},{"pc":12,"op":"PUSH1","gas":59545,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":14,"op":"PUSH1","gas":59542,"gasCost":3,"depth":1,"stack":["0xc0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59539,"gasCost":42,"depth":1,"stack":["0xc0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59497,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":19,"op":"DUP1","gas":59494,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20"]},{"pc":20,"op":"MLOAD","gas":59491,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59488,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4"]},{"pc":23,"op":"ADD","gas":59485,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4","0x1"]},{"pc":24,"op":"SWAP1","gas":59482,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x5"]},{"pc":25,"op":"MSTORE","gas":59479,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x5","0x20"]},{"pc":26,"op":"DUP2","gas":59476,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":27,"op":"MSTORE","gas":59473,"gasCost":6,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0xc0"]},{"pc":28,"op":"PUSH1","gas":59467,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":30,"op":"ADD","gas":59464,"gasCost":3,"depth":1,"stack":["0xc0","0x20"]},{"pc":31,"op":"PUSH2","gas":59461,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":34,"op":"DUP2","gas":59458,"gasCost":3,"depth":1,"stack":["0xe0","0x140"]},{"pc":35,"op":"LT","gas":59455,"gasCost":3,"depth":1,"stack":["0xe0","0x140","0xe0"]},{"pc":36,"op":"PUSH1","gas":59452,"gasCost":3,"depth":1,"stack":["0xe0","0x1"]},{"pc":38,"op":"JUMPI","gas":59449,"gasCost":10,"depth":1,"stack":["0xe0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59439,"gasCost":1,"depth":1,"stack":["0xe0"]},{"pc":12,"op":"PUSH1","gas":59438,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":14,"op":"PUSH1","gas":59435,"gasCost":3,"depth":1,"stack":["0xe0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59432,"gasCost":42,"depth":1,"stack":["0xe0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59390,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":19,"op":"DUP1","gas":59387,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20"]},{"pc":20,"op":"MLOAD","gas":59384,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59381,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5"]},{"pc":23,"op":"ADD","gas":59378,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5","0x1"]},{"pc":24,"op":"SWAP1","gas":59375,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x6"]},{"pc":25,"op":"MSTORE","gas":59372,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x6","0x20"]},{"pc":26,"op":"DUP2","gas":59369,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":27,"op":"MSTORE","gas":59366,"gasCost":6,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0xe0"]},{"pc":28,"op":"PUSH1","gas":59360,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":30,"op":"ADD","gas":59357,"gasCost":3,"depth":1,"stack":["0xe0","0x20"]},{"pc":31,"op":"PUSH2","gas":59354,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":34,"op":"DUP2","gas":59351,"gasCost":3,"depth":1,"stack":["0x100","0x140"]},{"pc":35,"op":"LT","gas":59348,"gasCost":3,"depth":1,"stack":["0x100","0x140","0x100"]},{"pc":36,"op":"PUSH1","gas":59345,"gasCost":3,"depth":1,"stack":["0x100","0x1"]},{"pc":38,"op":"JUMPI","gas":59342,"gasCost":10,"depth":1,"stack":["0x100","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59332,"gasCost":1,"depth":1,"stack":["0x100"]},{"pc":12,"op":"PUSH1","gas":59331,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":14,"op":"PUSH1","gas":59328,"gasCost":3,"depth":1,"stack":["0x100","0x40"]},{"pc":16,"op":"KECCAK256","gas":59325,"gasCost":42,"depth":1,"stack":["0x100","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59283,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":19,"op":"DUP1","gas":59280,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20"]},{"pc":20,"op":"MLOAD","gas":59277,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59274,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6"]},{"pc":23,"op":"ADD","gas":59271,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6","0x1"]},{"pc":24,"op":"SWAP1","gas":59268,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x7"]},{"pc":25,"op":"MSTORE","gas":59265,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x7","0x20"]},{"pc":26,"op":"DUP2","gas":59262,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":27,"op":"MSTORE","gas":59259,"gasCost":6,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x100"]},{"pc":28,"op":"PUSH1","gas":59253,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":30,"op":"ADD","gas":59250,"gasCost":3,"depth":1,"stack":["0x100","0x20"]},{"pc":31,"op":"PUSH2","gas":59247,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":34,"op":"DUP2","gas":59244,"gasCost":3,"depth":1,"stack":["0x120","0x140"]},{"pc":35,"op":"LT","gas":59241,"gasCost":3,"depth":1,"stack":["0x120","0x140","0x120"]},{"pc":36,"op":"PUSH1","gas":59238,"gasCost":3,"depth":1,"stack":["0x120","0x1"]},{"pc":38,"op":"JUMPI","gas":59235,"gasCost":10,"depth":1,"stack":["0x120","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59225,"gasCost":1,"depth":1,"stack":["0x120"]},{"pc":12,"op":"PUSH1","gas":59224,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":14,"op":"PUSH1","gas":59221,"gasCost":3,"depth":1,"stack":["0x120","0x40"]},{"pc":16,"op":"KECCAK256","gas":59218,"gasCost":42,"depth":1,"stack":["0x120","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59176,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":19,"op":"DUP1","gas":59173,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20"]},{"pc":20,"op":"MLOAD","gas":59170,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59167,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7"]},{"pc":23,"op":"ADD","gas":59164,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7","0x1"]},{"pc":24,"op":"SWAP1","gas":59161,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x8"]},{"pc":25,"op":"MSTORE","gas":59158,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x8","0x20"]},{"pc":26,"op":"DUP2","gas":59155,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":27,"op":"MSTORE","gas":59152,"gasCost":6,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x120"]},{"pc":28,"op":"PUSH1","gas":59146,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":30,"op":"ADD","gas":59143,"gasCost":3,"depth":1,"stack":["0x120","0x20"]},{"pc":31,"op":"PUSH2","gas":59140,"gasCost":3,"depth":1,"stack":["0x140"]},{"pc":34,"op":"DUP2","gas":59137,"gasCost":3,"depth":1,"stack":["0x140","0x140"]},{"pc":35,"op":"LT","gas":59134,"gasCost":3,"depth":1,"stack":["0x140","0x140","0x140"]},{"pc":36,"op":"PUSH1","gas":59131,"gasCost":3,"depth":1,"stack":["0x140","0x0"]},{"pc":38,"op":"JUMPI","gas":59128,"gasCost":10,"depth":1,"stack":["0x140","0x0","0xb"]},{"pc":39,"op":"POP","gas":59118,"gasCost":2,"depth":1,"stack":["0x140"]},{"pc":40,"op":"PUSH2","gas":59116,"gasCost":3,"depth":1,"stack":[]},{"pc":43,"op":"PUSH1","gas":59113,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":45,"op":"RETURN","gas":59110,"gasCost":0,"depth":1,"stack":["0x100","0x40"]}]}}]} diff --git a/tests/debug_traceBlockByNumber/trace-genesis.io b/tests/debug_traceBlockByNumber/trace-genesis.io new file mode 100644 index 000000000..b4c613e37 --- /dev/null +++ b/tests/debug_traceBlockByNumber/trace-genesis.io @@ -0,0 +1,3 @@ +// requests a trace of the genesis block; must return an error since there is no parent state to replay from +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByNumber","params":["0x0"]} +<< {"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"genesis is not traceable"}} diff --git a/tests/debug_traceTransaction/trace-contract-call.io b/tests/debug_traceTransaction/trace-contract-call.io new file mode 100644 index 000000000..a3a402fca --- /dev/null +++ b/tests/debug_traceTransaction/trace-contract-call.io @@ -0,0 +1,4 @@ +// traces a contract call transaction; validates spec compliance of structLogs including stack encoding, error field behavior, and optional storage encoding +// speconly: client response is only checked for schema validity. +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceTransaction","params":["0xc1d605c6612a5fe84dc95810030bfe5b1d327652b381bc695e28f50d13b2b09e"]} +<< {"jsonrpc":"2.0","id":1,"result":{"gas":66259,"failed":false,"returnValue":"0x60004381526020014681526020014181526020014881526020014481526020013281526020013481526020016000f3","structLogs":[{"pc":0,"op":"PUSH1","gas":23644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":23641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":23639,"gasCost":3,"depth":1,"stack":["0xd","0x3c"]},{"pc":4,"op":"DUP1","gas":23636,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":5,"op":"PUSH1","gas":23633,"gasCost":3,"depth":1,"stack":["0x2f","0x2f"]},{"pc":7,"op":"PUSH1","gas":23630,"gasCost":3,"depth":1,"stack":["0x2f","0x2f","0xd"]},{"pc":9,"op":"CODECOPY","gas":23627,"gasCost":15,"depth":1,"stack":["0x2f","0x2f","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":23612,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":12,"op":"RETURN","gas":23609,"gasCost":0,"depth":1,"stack":["0x2f","0x0"]}]}} diff --git a/tests/debug_traceTransaction/trace-legacy-transfer.io b/tests/debug_traceTransaction/trace-legacy-transfer.io new file mode 100644 index 000000000..9b8d5ada2 --- /dev/null +++ b/tests/debug_traceTransaction/trace-legacy-transfer.io @@ -0,0 +1,4 @@ +// traces a legacy EOA-to-EOA value transfer; structLogs must be empty since no EVM code runs +// speconly: client response is only checked for schema validity. +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceTransaction","params":["0x0d6999c0e9e4bec347945593e97bdcdf7c25be08ca1a1efdc520dbe75be985f3"]} +<< {"jsonrpc":"2.0","id":1,"result":{"gas":21000,"failed":false,"returnValue":"0x","structLogs":[]}} diff --git a/tests/debug_traceTransaction/trace-unknown-tx.io b/tests/debug_traceTransaction/trace-unknown-tx.io new file mode 100644 index 000000000..8463f80c8 --- /dev/null +++ b/tests/debug_traceTransaction/trace-unknown-tx.io @@ -0,0 +1,3 @@ +// requests a trace for a non-existent transaction hash; the client must return an error +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceTransaction","params":["0x0000000000000000000000000000000000000000000000000000000000000001"]} +<< {"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"transaction not found"}} diff --git a/tools/go.mod b/tools/go.mod index ff0d0d6e4..9a257a2ee 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -15,6 +15,8 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) +replace github.com/ethereum/go-ethereum => github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260326153402-c787778ed44a + require ( github.com/DataDog/zstd v1.5.2 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect @@ -75,7 +77,7 @@ require ( github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c // indirect github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect - github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52 // indirect + github.com/karalabe/hid v1.0.1-0.20260315100226-f5d04adeffeb // indirect github.com/kilic/bls12-381 v0.1.0 // indirect github.com/klauspost/compress v1.17.8 // indirect github.com/klauspost/cpuid/v2 v2.0.9 // indirect diff --git a/tools/go.sum b/tools/go.sum index 6f4ea09db..f3b3d55b5 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -2,6 +2,8 @@ github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260326153402-c787778ed44a h1:/DV50Twj+vjFvsIzkycmUXYkOZhy6+OPcw/1s82HANc= +github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260326153402-c787778ed44a/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= @@ -80,8 +82,6 @@ github.com/ethereum/c-kzg-4844/v2 v2.1.6 h1:xQymkKCT5E2Jiaoqf3v4wsNgjZLY0lRSkZn2 github.com/ethereum/c-kzg-4844/v2 v2.1.6/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw= github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk= github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8= -github.com/ethereum/go-ethereum v1.17.2-0.20260311114742-3c20e08cbae9 h1:89gHTCch54TxHJWiFV/ey89Cnxs/5G28Am9gDymq9Jw= -github.com/ethereum/go-ethereum v1.17.2-0.20260311114742-3c20e08cbae9/go.mod h1:Sd+IjBxiG9jLRAA4OBsoq5Y9iz0kWoGkMfjqXHjUjHY= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= @@ -174,8 +174,8 @@ github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7 github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52 h1:msKODTL1m0wigztaqILOtla9HeW1ciscYG4xjLtvk5I= -github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52/go.mod h1:qk1sX/IBgppQNcGCRoj90u6EGC056EBoIc1oEjCWla8= +github.com/karalabe/hid v1.0.1-0.20260315100226-f5d04adeffeb h1:Ag83At00qa4FLkcdMgrwHVSakqky/eZczOlxd4q336E= +github.com/karalabe/hid v1.0.1-0.20260315100226-f5d04adeffeb/go.mod h1:qk1sX/IBgppQNcGCRoj90u6EGC056EBoIc1oEjCWla8= github.com/kilic/bls12-381 v0.1.0 h1:encrdjqKMEvabVQ7qYOKu1OvhqpK4s47wDYtNiPtlp4= github.com/kilic/bls12-381 v0.1.0/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhdmfzw1ig= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/tools/testgen/generators_debug_trace.go b/tools/testgen/generators_debug_trace.go index f911249ef..f0a91698c 100644 --- a/tools/testgen/generators_debug_trace.go +++ b/tools/testgen/generators_debug_trace.go @@ -303,6 +303,63 @@ func validateReturnDataFieldBehavior(logs []interface{}, expectPresent bool) err return nil } +func countOpcodeOccurrences(logs []interface{}, opcode string) int { + count := 0 + for _, logVal := range logs { + log, ok := logVal.(map[string]interface{}) + if !ok { + continue + } + if op, ok := log["op"].(string); ok && op == opcode { + count++ + } + } + return count +} + +func validateStorageSnapshotProgression(logs []interface{}) error { + wantSlots := []string{ + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + } + sstoreSeen := 0 + for i, logVal := range logs { + log, ok := logVal.(map[string]interface{}) + if !ok { + return fmt.Errorf("structLogs[%d] must be an object, got %T", i, logVal) + } + op, _ := log["op"].(string) + if op != "SSTORE" { + continue + } + if sstoreSeen >= len(wantSlots) { + break + } + storage, ok := log["storage"].(map[string]interface{}) + if !ok { + return fmt.Errorf("structLogs[%d]: expected storage object at %s", i, op) + } + if len(storage) != sstoreSeen+1 { + return fmt.Errorf("structLogs[%d]: expected %d storage entries after %dth SSTORE, got %d", i, sstoreSeen+1, sstoreSeen+1, len(storage)) + } + for j := 0; j <= sstoreSeen; j++ { + got, ok := storage[wantSlots[j]].(string) + if !ok { + return fmt.Errorf("structLogs[%d]: missing storage value for slot %s", i, wantSlots[j]) + } + if got != wantSlots[j] { + return fmt.Errorf("structLogs[%d]: storage value mismatch for slot %s (got %s, want %s)", i, wantSlots[j], got, wantSlots[j]) + } + } + sstoreSeen++ + } + if sstoreSeen != len(wantSlots) { + return fmt.Errorf("expected at least %d SSTORE snapshots, got %d", len(wantSlots), sstoreSeen) + } + return nil +} + // DebugTraceTransaction tests the debug_traceTransaction method. var DebugTraceTransaction = MethodTests{ "debug_traceTransaction", @@ -433,6 +490,35 @@ var DebugTraceBlockByNumber = MethodTests{ return nil }, }, + { + Name: "trace-block-storage-snapshot-timing", + About: "traces block 0x2 and validates cumulative storage snapshots across repeated SSTORE operations", + SpecOnly: true, + Run: func(ctx context.Context, t *T) error { + traceCfg := map[string]interface{}{ + "disableStack": false, + "disableStorage": false, + "enableMemory": false, + "enableReturnData": true, + } + var result []map[string]interface{} + if err := t.rpc.CallContext(ctx, &result, "debug_traceBlockByNumber", "0x2", traceCfg); err != nil { + return err + } + for entryIdx, entry := range result { + traceResult, _ := entry["result"].(map[string]interface{}) + logs, _ := traceResult["structLogs"].([]interface{}) + if countOpcodeOccurrences(logs, "SSTORE") < 3 { + continue + } + if err := validateStorageSnapshotProgression(logs); err != nil { + return fmt.Errorf("entry[%d]: %w", entryIdx, err) + } + return nil + } + return fmt.Errorf("expected a traced transaction with repeated SSTORE operations in block 0x2") + }, + }, { Name: "trace-block-return-data-behavior", About: "traces a block with returnData disabled and enabled to validate returnData field gating and encoding", From 5bc226d704aa25400af81acd8c1b6de000494f52 Mon Sep 17 00:00:00 2001 From: Chase Wright Date: Fri, 27 Mar 2026 13:29:02 -0500 Subject: [PATCH 7/8] debug, tools: add debug_traceBlockByHash, clarify timeout behavior, update go-ethereum - Add debug_traceBlockByHash method spec (mirrors debug_traceBlockByNumber but takes a block hash; clients MUST error when block not found) - Add timeout error-on-timeout behavior to TraceConfig and method descriptions - Update OpcodeBlockTransactionTrace description to reference both block trace methods - Add DebugTraceBlockByHash test generator (trace-block-with-transactions, trace-genesis, trace-block-not-found) - Update tools/go.mod replace to MysticRyuujin fork commit 957e1ed413ed (includes gofmt fix for formatMemoryWord) - Regenerate tests/debug_traceBlockByHash/ via make fill Made-with: Cursor --- src/debug/trace.yaml | 112 ++++++++++++++++++ src/schemas/opcode-tracer.yaml | 7 +- .../trace-block-not-found.io | 3 + .../trace-block-with-transactions.io | 4 + tests/debug_traceBlockByHash/trace-genesis.io | 3 + tools/go.mod | 2 +- tools/go.sum | 4 +- tools/testgen/generators.go | 1 + tools/testgen/generators_debug_trace.go | 47 ++++++++ 9 files changed, 177 insertions(+), 6 deletions(-) create mode 100644 tests/debug_traceBlockByHash/trace-block-not-found.io create mode 100644 tests/debug_traceBlockByHash/trace-block-with-transactions.io create mode 100644 tests/debug_traceBlockByHash/trace-genesis.io diff --git a/src/debug/trace.yaml b/src/debug/trace.yaml index eca7b6a8e..c5233d870 100644 --- a/src/debug/trace.yaml +++ b/src/debug/trace.yaml @@ -19,6 +19,8 @@ The response is an array ordered by transaction index within the block. Each entry includes the transaction hash paired with its trace result. + If the execution timeout is reached before tracing completes, the client + MUST return an error; no partial results are returned. params: - name: Block required: true @@ -104,6 +106,116 @@ failed: false returnValue: '0x' +- name: debug_traceBlockByHash + summary: Replays a block and returns traces for all transactions. + description: >- + Replays the block identified by the given hash and returns a trace for + every transaction in the block. The parent block must be present in the + client's database. The genesis block (block 0) cannot be traced because + it has no parent state to replay from; clients MUST return an error for + this input. + + When no tracer is specified (or the tracer field is absent), the opcode + (struct) logger is used and each entry conforms to + OpcodeBlockTransactionTrace, whose result field conforms to + OpcodeTransactionTrace. + + When a named tracer is specified via the tracer field in TraceConfig (e.g. + "callTracer", "prestateTracer"), the result field of each entry contains + tracer-specific output. Defining the output schemas of named tracers is + outside the scope of this specification. + + The response is an array ordered by transaction index within the block. + Each entry includes the transaction hash paired with its trace result. + If the execution timeout is reached before tracing completes, the client + MUST return an error; no partial results are returned. + + Clients MUST return an error if no block with the given hash is found. + params: + - name: Block hash + required: true + schema: + $ref: '#/components/schemas/hash32' + - name: TraceConfig + required: false + schema: + $ref: '#/components/schemas/TraceConfig' + errors: + - code: 4444 + message: Pruned history unavailable + result: + name: Block trace + schema: + title: Array of per-transaction traces + description: >- + An array of trace entries ordered by transaction index within the block. + When no named tracer is set, each entry conforms to + OpcodeBlockTransactionTrace. When a named tracer is set, the result + field of each entry contains tracer-specific output not defined by this + specification, but the txHash field is always present. + type: array + items: + anyOf: + - title: Opcode tracer entry + description: Returned when no named tracer is specified. + $ref: '#/components/schemas/OpcodeBlockTransactionTrace' + - title: Named tracer entry + description: >- + Returned when a named tracer is specified. The result field + contains tracer-specific output not defined by this specification. + type: object + required: + - txHash + - result + properties: + txHash: + $ref: '#/components/schemas/hash32' + result: + description: >- + Named tracer output. The schema is unspecified and may be + any valid JSON value. + examples: + - name: debug_traceBlockByHash example (opcode tracer) + params: + - name: Block hash + value: '0x79ba0368c2c6563a7d263695b583dcc6d1c25d4988daa0105804d38bdd987f2f' + - name: TraceConfig + value: + disableStack: false + disableStorage: false + enableMemory: false + enableReturnData: false + result: + name: Block trace + value: + - txHash: '0xdd8cf045113754c306ba9ac8ac8786235e33bc5c087678084ef260a2a583f127' + result: + structLogs: + - pc: 0 + op: PUSH1 + gas: 68612 + gasCost: 3 + depth: 1 + stack: + - '0x60' + - pc: 2 + op: PUSH1 + gas: 68609 + gasCost: 3 + depth: 1 + stack: + - '0x60' + - '0x40' + - pc: 4 + op: MSTORE + gas: 68606 + gasCost: 12 + depth: 1 + stack: [] + gas: 26916 + failed: false + returnValue: '0x' + - name: debug_traceTransaction summary: Replays a transaction and returns its trace. description: >- diff --git a/src/schemas/opcode-tracer.yaml b/src/schemas/opcode-tracer.yaml index 0e690a33b..b82296f21 100644 --- a/src/schemas/opcode-tracer.yaml +++ b/src/schemas/opcode-tracer.yaml @@ -40,7 +40,8 @@ TraceConfig: description: >- Duration string specifying a timeout for trace execution. Applies to all tracers. Accepts Go duration strings (e.g. "5s", "300ms", "2m"). - Default: "5s". + Default: "5s". When the timeout is reached, the client MUST return an + error; no partial results are returned. type: string disableStorage: title: disable storage capture @@ -227,8 +228,8 @@ OpcodeBlockTransactionTrace: title: Opcode block transaction trace entry description: >- A single transaction's opcode trace result within a debug_traceBlockByNumber - response when no named tracer is used. Pairs the transaction hash with its - opcode trace. + or debug_traceBlockByHash response when no named tracer is used. Pairs the + transaction hash with its opcode trace. type: object required: - txHash diff --git a/tests/debug_traceBlockByHash/trace-block-not-found.io b/tests/debug_traceBlockByHash/trace-block-not-found.io new file mode 100644 index 000000000..003bf1509 --- /dev/null +++ b/tests/debug_traceBlockByHash/trace-block-not-found.io @@ -0,0 +1,3 @@ +// requests a trace for a non-existent block hash; the client must return an error +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByHash","params":["0x0000000000000000000000000000000000000000000000000000000000000001"]} +<< {"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"block 0x0000000000000000000000000000000000000000000000000000000000000001 not found"}} diff --git a/tests/debug_traceBlockByHash/trace-block-with-transactions.io b/tests/debug_traceBlockByHash/trace-block-with-transactions.io new file mode 100644 index 000000000..12a6e8514 --- /dev/null +++ b/tests/debug_traceBlockByHash/trace-block-with-transactions.io @@ -0,0 +1,4 @@ +// traces a block containing transactions by hash; validates that each entry has txHash and a spec-compliant result +// speconly: client response is only checked for schema validity. +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByHash","params":["0x79ba0368c2c6563a7d263695b583dcc6d1c25d4988daa0105804d38bdd987f2f"]} +<< {"jsonrpc":"2.0","id":1,"result":[{"txHash":"0xc1d605c6612a5fe84dc95810030bfe5b1d327652b381bc695e28f50d13b2b09e","result":{"gas":66259,"failed":false,"returnValue":"0x60004381526020014681526020014181526020014881526020014481526020013281526020013481526020016000f3","structLogs":[{"pc":0,"op":"PUSH1","gas":23644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":23641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":23639,"gasCost":3,"depth":1,"stack":["0xd","0x3c"]},{"pc":4,"op":"DUP1","gas":23636,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":5,"op":"PUSH1","gas":23633,"gasCost":3,"depth":1,"stack":["0x2f","0x2f"]},{"pc":7,"op":"PUSH1","gas":23630,"gasCost":3,"depth":1,"stack":["0x2f","0x2f","0xd"]},{"pc":9,"op":"CODECOPY","gas":23627,"gasCost":15,"depth":1,"stack":["0x2f","0x2f","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":23612,"gasCost":3,"depth":1,"stack":["0x2f"]},{"pc":12,"op":"RETURN","gas":23609,"gasCost":0,"depth":1,"stack":["0x2f","0x0"]}]}},{"txHash":"0x1999fb436409e9c2464bd9efc3aa914b2e8a843144fdcc17132fa9da0f15641e","result":{"gas":75785,"failed":false,"returnValue":"0x366002146022577177726f6e672d63616c6c6461746173697a656000526012600efd5b60003560f01c61ff01146047576d77726f6e672d63616c6c64617461600052600e6012fd5b61ffee6000526002601ef3","structLogs":[{"pc":0,"op":"PUSH1","gas":30844,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":30841,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":30839,"gasCost":3,"depth":1,"stack":["0xd","0x60"]},{"pc":4,"op":"DUP1","gas":30836,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":5,"op":"PUSH1","gas":30833,"gasCost":3,"depth":1,"stack":["0x53","0x53"]},{"pc":7,"op":"PUSH1","gas":30830,"gasCost":3,"depth":1,"stack":["0x53","0x53","0xd"]},{"pc":9,"op":"CODECOPY","gas":30827,"gasCost":21,"depth":1,"stack":["0x53","0x53","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":30806,"gasCost":3,"depth":1,"stack":["0x53"]},{"pc":12,"op":"RETURN","gas":30803,"gasCost":0,"depth":1,"stack":["0x53","0x0"]}]}},{"txHash":"0x021ae79aa8821d60291761cfe419b6cbc0ad7dd50d4aa6f14a54e5fc0d62e325","result":{"gas":87893,"failed":false,"returnValue":"0x6000356142ff54501515603b577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f08c379a0000000000000000000000000000000000000000000000000000000006000526020600452600a6024527f75736572206572726f7200000000000000000000000000000000000000000000604452604e6000fd","structLogs":[{"pc":0,"op":"PUSH1","gas":43644,"gasCost":3,"depth":1,"stack":[]},{"pc":2,"op":"CODESIZE","gas":43641,"gasCost":2,"depth":1,"stack":["0xd"]},{"pc":3,"op":"SUB","gas":43639,"gasCost":3,"depth":1,"stack":["0xd","0xa0"]},{"pc":4,"op":"DUP1","gas":43636,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":5,"op":"PUSH1","gas":43633,"gasCost":3,"depth":1,"stack":["0x93","0x93"]},{"pc":7,"op":"PUSH1","gas":43630,"gasCost":3,"depth":1,"stack":["0x93","0x93","0xd"]},{"pc":9,"op":"CODECOPY","gas":43627,"gasCost":33,"depth":1,"stack":["0x93","0x93","0xd","0x0"]},{"pc":10,"op":"PUSH1","gas":43594,"gasCost":3,"depth":1,"stack":["0x93"]},{"pc":12,"op":"RETURN","gas":43591,"gasCost":0,"depth":1,"stack":["0x93","0x0"]}]}},{"txHash":"0x709f12649d057e2ad0a0a41176cc405f80af735df8cf2b89782eb3ab1699e549","result":{"gas":107962,"failed":false,"returnValue":"0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7dcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0a15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054cabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe051471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31b39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","structLogs":[{"pc":0,"op":"NUMBER","gas":60000,"gasCost":2,"depth":1,"stack":[]},{"pc":1,"op":"PUSH1","gas":59998,"gasCost":3,"depth":1,"stack":["0x1"]},{"pc":3,"op":"MSTORE","gas":59995,"gasCost":6,"depth":1,"stack":["0x1","0x0"]},{"pc":4,"op":"PUSH1","gas":59989,"gasCost":3,"depth":1,"stack":[]},{"pc":6,"op":"PUSH1","gas":59986,"gasCost":3,"depth":1,"stack":["0x0"]},{"pc":8,"op":"MSTORE","gas":59983,"gasCost":6,"depth":1,"stack":["0x0","0x20"]},{"pc":9,"op":"PUSH1","gas":59977,"gasCost":3,"depth":1,"stack":[]},{"pc":11,"op":"JUMPDEST","gas":59974,"gasCost":1,"depth":1,"stack":["0x40"]},{"pc":12,"op":"PUSH1","gas":59973,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":14,"op":"PUSH1","gas":59970,"gasCost":3,"depth":1,"stack":["0x40","0x40"]},{"pc":16,"op":"KECCAK256","gas":59967,"gasCost":42,"depth":1,"stack":["0x40","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59925,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":19,"op":"DUP1","gas":59922,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20"]},{"pc":20,"op":"MLOAD","gas":59919,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59916,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0"]},{"pc":23,"op":"ADD","gas":59913,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x0","0x1"]},{"pc":24,"op":"SWAP1","gas":59910,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x20","0x1"]},{"pc":25,"op":"MSTORE","gas":59907,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x1","0x20"]},{"pc":26,"op":"DUP2","gas":59904,"gasCost":3,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d"]},{"pc":27,"op":"MSTORE","gas":59901,"gasCost":6,"depth":1,"stack":["0x40","0xada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d","0x40"]},{"pc":28,"op":"PUSH1","gas":59895,"gasCost":3,"depth":1,"stack":["0x40"]},{"pc":30,"op":"ADD","gas":59892,"gasCost":3,"depth":1,"stack":["0x40","0x20"]},{"pc":31,"op":"PUSH2","gas":59889,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":34,"op":"DUP2","gas":59886,"gasCost":3,"depth":1,"stack":["0x60","0x140"]},{"pc":35,"op":"LT","gas":59883,"gasCost":3,"depth":1,"stack":["0x60","0x140","0x60"]},{"pc":36,"op":"PUSH1","gas":59880,"gasCost":3,"depth":1,"stack":["0x60","0x1"]},{"pc":38,"op":"JUMPI","gas":59877,"gasCost":10,"depth":1,"stack":["0x60","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59867,"gasCost":1,"depth":1,"stack":["0x60"]},{"pc":12,"op":"PUSH1","gas":59866,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":14,"op":"PUSH1","gas":59863,"gasCost":3,"depth":1,"stack":["0x60","0x40"]},{"pc":16,"op":"KECCAK256","gas":59860,"gasCost":42,"depth":1,"stack":["0x60","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59818,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":19,"op":"DUP1","gas":59815,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20"]},{"pc":20,"op":"MLOAD","gas":59812,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59809,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1"]},{"pc":23,"op":"ADD","gas":59806,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x1","0x1"]},{"pc":24,"op":"SWAP1","gas":59803,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x20","0x2"]},{"pc":25,"op":"MSTORE","gas":59800,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x2","0x20"]},{"pc":26,"op":"DUP2","gas":59797,"gasCost":3,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f"]},{"pc":27,"op":"MSTORE","gas":59794,"gasCost":6,"depth":1,"stack":["0x60","0xcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f","0x60"]},{"pc":28,"op":"PUSH1","gas":59788,"gasCost":3,"depth":1,"stack":["0x60"]},{"pc":30,"op":"ADD","gas":59785,"gasCost":3,"depth":1,"stack":["0x60","0x20"]},{"pc":31,"op":"PUSH2","gas":59782,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":34,"op":"DUP2","gas":59779,"gasCost":3,"depth":1,"stack":["0x80","0x140"]},{"pc":35,"op":"LT","gas":59776,"gasCost":3,"depth":1,"stack":["0x80","0x140","0x80"]},{"pc":36,"op":"PUSH1","gas":59773,"gasCost":3,"depth":1,"stack":["0x80","0x1"]},{"pc":38,"op":"JUMPI","gas":59770,"gasCost":10,"depth":1,"stack":["0x80","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59760,"gasCost":1,"depth":1,"stack":["0x80"]},{"pc":12,"op":"PUSH1","gas":59759,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":14,"op":"PUSH1","gas":59756,"gasCost":3,"depth":1,"stack":["0x80","0x40"]},{"pc":16,"op":"KECCAK256","gas":59753,"gasCost":42,"depth":1,"stack":["0x80","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59711,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":19,"op":"DUP1","gas":59708,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20"]},{"pc":20,"op":"MLOAD","gas":59705,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59702,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2"]},{"pc":23,"op":"ADD","gas":59699,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x2","0x1"]},{"pc":24,"op":"SWAP1","gas":59696,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x20","0x3"]},{"pc":25,"op":"MSTORE","gas":59693,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x3","0x20"]},{"pc":26,"op":"DUP2","gas":59690,"gasCost":3,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0"]},{"pc":27,"op":"MSTORE","gas":59687,"gasCost":6,"depth":1,"stack":["0x80","0xe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0","0x80"]},{"pc":28,"op":"PUSH1","gas":59681,"gasCost":3,"depth":1,"stack":["0x80"]},{"pc":30,"op":"ADD","gas":59678,"gasCost":3,"depth":1,"stack":["0x80","0x20"]},{"pc":31,"op":"PUSH2","gas":59675,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":34,"op":"DUP2","gas":59672,"gasCost":3,"depth":1,"stack":["0xa0","0x140"]},{"pc":35,"op":"LT","gas":59669,"gasCost":3,"depth":1,"stack":["0xa0","0x140","0xa0"]},{"pc":36,"op":"PUSH1","gas":59666,"gasCost":3,"depth":1,"stack":["0xa0","0x1"]},{"pc":38,"op":"JUMPI","gas":59663,"gasCost":10,"depth":1,"stack":["0xa0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59653,"gasCost":1,"depth":1,"stack":["0xa0"]},{"pc":12,"op":"PUSH1","gas":59652,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":14,"op":"PUSH1","gas":59649,"gasCost":3,"depth":1,"stack":["0xa0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59646,"gasCost":42,"depth":1,"stack":["0xa0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59604,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":19,"op":"DUP1","gas":59601,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20"]},{"pc":20,"op":"MLOAD","gas":59598,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59595,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3"]},{"pc":23,"op":"ADD","gas":59592,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x3","0x1"]},{"pc":24,"op":"SWAP1","gas":59589,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x20","0x4"]},{"pc":25,"op":"MSTORE","gas":59586,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0x4","0x20"]},{"pc":26,"op":"DUP2","gas":59583,"gasCost":3,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c"]},{"pc":27,"op":"MSTORE","gas":59580,"gasCost":6,"depth":1,"stack":["0xa0","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c","0xa0"]},{"pc":28,"op":"PUSH1","gas":59574,"gasCost":3,"depth":1,"stack":["0xa0"]},{"pc":30,"op":"ADD","gas":59571,"gasCost":3,"depth":1,"stack":["0xa0","0x20"]},{"pc":31,"op":"PUSH2","gas":59568,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":34,"op":"DUP2","gas":59565,"gasCost":3,"depth":1,"stack":["0xc0","0x140"]},{"pc":35,"op":"LT","gas":59562,"gasCost":3,"depth":1,"stack":["0xc0","0x140","0xc0"]},{"pc":36,"op":"PUSH1","gas":59559,"gasCost":3,"depth":1,"stack":["0xc0","0x1"]},{"pc":38,"op":"JUMPI","gas":59556,"gasCost":10,"depth":1,"stack":["0xc0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59546,"gasCost":1,"depth":1,"stack":["0xc0"]},{"pc":12,"op":"PUSH1","gas":59545,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":14,"op":"PUSH1","gas":59542,"gasCost":3,"depth":1,"stack":["0xc0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59539,"gasCost":42,"depth":1,"stack":["0xc0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59497,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":19,"op":"DUP1","gas":59494,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20"]},{"pc":20,"op":"MLOAD","gas":59491,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59488,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4"]},{"pc":23,"op":"ADD","gas":59485,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x4","0x1"]},{"pc":24,"op":"SWAP1","gas":59482,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x20","0x5"]},{"pc":25,"op":"MSTORE","gas":59479,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0x5","0x20"]},{"pc":26,"op":"DUP2","gas":59476,"gasCost":3,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05"]},{"pc":27,"op":"MSTORE","gas":59473,"gasCost":6,"depth":1,"stack":["0xc0","0xabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05","0xc0"]},{"pc":28,"op":"PUSH1","gas":59467,"gasCost":3,"depth":1,"stack":["0xc0"]},{"pc":30,"op":"ADD","gas":59464,"gasCost":3,"depth":1,"stack":["0xc0","0x20"]},{"pc":31,"op":"PUSH2","gas":59461,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":34,"op":"DUP2","gas":59458,"gasCost":3,"depth":1,"stack":["0xe0","0x140"]},{"pc":35,"op":"LT","gas":59455,"gasCost":3,"depth":1,"stack":["0xe0","0x140","0xe0"]},{"pc":36,"op":"PUSH1","gas":59452,"gasCost":3,"depth":1,"stack":["0xe0","0x1"]},{"pc":38,"op":"JUMPI","gas":59449,"gasCost":10,"depth":1,"stack":["0xe0","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59439,"gasCost":1,"depth":1,"stack":["0xe0"]},{"pc":12,"op":"PUSH1","gas":59438,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":14,"op":"PUSH1","gas":59435,"gasCost":3,"depth":1,"stack":["0xe0","0x40"]},{"pc":16,"op":"KECCAK256","gas":59432,"gasCost":42,"depth":1,"stack":["0xe0","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59390,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":19,"op":"DUP1","gas":59387,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20"]},{"pc":20,"op":"MLOAD","gas":59384,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59381,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5"]},{"pc":23,"op":"ADD","gas":59378,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x5","0x1"]},{"pc":24,"op":"SWAP1","gas":59375,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x20","0x6"]},{"pc":25,"op":"MSTORE","gas":59372,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0x6","0x20"]},{"pc":26,"op":"DUP2","gas":59369,"gasCost":3,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b"]},{"pc":27,"op":"MSTORE","gas":59366,"gasCost":6,"depth":1,"stack":["0xe0","0x1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b","0xe0"]},{"pc":28,"op":"PUSH1","gas":59360,"gasCost":3,"depth":1,"stack":["0xe0"]},{"pc":30,"op":"ADD","gas":59357,"gasCost":3,"depth":1,"stack":["0xe0","0x20"]},{"pc":31,"op":"PUSH2","gas":59354,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":34,"op":"DUP2","gas":59351,"gasCost":3,"depth":1,"stack":["0x100","0x140"]},{"pc":35,"op":"LT","gas":59348,"gasCost":3,"depth":1,"stack":["0x100","0x140","0x100"]},{"pc":36,"op":"PUSH1","gas":59345,"gasCost":3,"depth":1,"stack":["0x100","0x1"]},{"pc":38,"op":"JUMPI","gas":59342,"gasCost":10,"depth":1,"stack":["0x100","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59332,"gasCost":1,"depth":1,"stack":["0x100"]},{"pc":12,"op":"PUSH1","gas":59331,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":14,"op":"PUSH1","gas":59328,"gasCost":3,"depth":1,"stack":["0x100","0x40"]},{"pc":16,"op":"KECCAK256","gas":59325,"gasCost":42,"depth":1,"stack":["0x100","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59283,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":19,"op":"DUP1","gas":59280,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20"]},{"pc":20,"op":"MLOAD","gas":59277,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59274,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6"]},{"pc":23,"op":"ADD","gas":59271,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x6","0x1"]},{"pc":24,"op":"SWAP1","gas":59268,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x20","0x7"]},{"pc":25,"op":"MSTORE","gas":59265,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x7","0x20"]},{"pc":26,"op":"DUP2","gas":59262,"gasCost":3,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31"]},{"pc":27,"op":"MSTORE","gas":59259,"gasCost":6,"depth":1,"stack":["0x100","0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31","0x100"]},{"pc":28,"op":"PUSH1","gas":59253,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":30,"op":"ADD","gas":59250,"gasCost":3,"depth":1,"stack":["0x100","0x20"]},{"pc":31,"op":"PUSH2","gas":59247,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":34,"op":"DUP2","gas":59244,"gasCost":3,"depth":1,"stack":["0x120","0x140"]},{"pc":35,"op":"LT","gas":59241,"gasCost":3,"depth":1,"stack":["0x120","0x140","0x120"]},{"pc":36,"op":"PUSH1","gas":59238,"gasCost":3,"depth":1,"stack":["0x120","0x1"]},{"pc":38,"op":"JUMPI","gas":59235,"gasCost":10,"depth":1,"stack":["0x120","0x1","0xb"]},{"pc":11,"op":"JUMPDEST","gas":59225,"gasCost":1,"depth":1,"stack":["0x120"]},{"pc":12,"op":"PUSH1","gas":59224,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":14,"op":"PUSH1","gas":59221,"gasCost":3,"depth":1,"stack":["0x120","0x40"]},{"pc":16,"op":"KECCAK256","gas":59218,"gasCost":42,"depth":1,"stack":["0x120","0x40","0x0"]},{"pc":17,"op":"PUSH1","gas":59176,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":19,"op":"DUP1","gas":59173,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20"]},{"pc":20,"op":"MLOAD","gas":59170,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x20"]},{"pc":21,"op":"PUSH1","gas":59167,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7"]},{"pc":23,"op":"ADD","gas":59164,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x7","0x1"]},{"pc":24,"op":"SWAP1","gas":59161,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x20","0x8"]},{"pc":25,"op":"MSTORE","gas":59158,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x8","0x20"]},{"pc":26,"op":"DUP2","gas":59155,"gasCost":3,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828"]},{"pc":27,"op":"MSTORE","gas":59152,"gasCost":6,"depth":1,"stack":["0x120","0xb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828","0x120"]},{"pc":28,"op":"PUSH1","gas":59146,"gasCost":3,"depth":1,"stack":["0x120"]},{"pc":30,"op":"ADD","gas":59143,"gasCost":3,"depth":1,"stack":["0x120","0x20"]},{"pc":31,"op":"PUSH2","gas":59140,"gasCost":3,"depth":1,"stack":["0x140"]},{"pc":34,"op":"DUP2","gas":59137,"gasCost":3,"depth":1,"stack":["0x140","0x140"]},{"pc":35,"op":"LT","gas":59134,"gasCost":3,"depth":1,"stack":["0x140","0x140","0x140"]},{"pc":36,"op":"PUSH1","gas":59131,"gasCost":3,"depth":1,"stack":["0x140","0x0"]},{"pc":38,"op":"JUMPI","gas":59128,"gasCost":10,"depth":1,"stack":["0x140","0x0","0xb"]},{"pc":39,"op":"POP","gas":59118,"gasCost":2,"depth":1,"stack":["0x140"]},{"pc":40,"op":"PUSH2","gas":59116,"gasCost":3,"depth":1,"stack":[]},{"pc":43,"op":"PUSH1","gas":59113,"gasCost":3,"depth":1,"stack":["0x100"]},{"pc":45,"op":"RETURN","gas":59110,"gasCost":0,"depth":1,"stack":["0x100","0x40"]}]}}]} diff --git a/tests/debug_traceBlockByHash/trace-genesis.io b/tests/debug_traceBlockByHash/trace-genesis.io new file mode 100644 index 000000000..306156995 --- /dev/null +++ b/tests/debug_traceBlockByHash/trace-genesis.io @@ -0,0 +1,3 @@ +// requests a trace of the genesis block by hash; must return an error since there is no parent state to replay from +>> {"jsonrpc":"2.0","id":1,"method":"debug_traceBlockByHash","params":["0x79e0f5ffb6a0c9f54d507dbbadc935603ac1db86d32f7857472180a75ec11f90"]} +<< {"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"genesis is not traceable"}} diff --git a/tools/go.mod b/tools/go.mod index 9a257a2ee..56e6e9fea 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -15,7 +15,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) -replace github.com/ethereum/go-ethereum => github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260326153402-c787778ed44a +replace github.com/ethereum/go-ethereum => github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260327182110-957e1ed413ed require ( github.com/DataDog/zstd v1.5.2 // indirect diff --git a/tools/go.sum b/tools/go.sum index f3b3d55b5..4619fa912 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -2,8 +2,8 @@ github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260326153402-c787778ed44a h1:/DV50Twj+vjFvsIzkycmUXYkOZhy6+OPcw/1s82HANc= -github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260326153402-c787778ed44a/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= +github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260327182110-957e1ed413ed h1:sAZrAjleXUIilgQ8awySnb1cY/Js4V8gCZX3QuqjQqc= +github.com/MysticRyuujin/go-ethereum v1.16.3-0.20260327182110-957e1ed413ed/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= diff --git a/tools/testgen/generators.go b/tools/testgen/generators.go index efa1b5ca5..9c375c97f 100644 --- a/tools/testgen/generators.go +++ b/tools/testgen/generators.go @@ -92,6 +92,7 @@ var AllMethods = []MethodTests{ DebugGetRawTransaction, DebugTraceTransaction, DebugTraceBlockByNumber, + DebugTraceBlockByHash, EthBlobBaseFee, NetVersion, TestingBuildBlockV1, diff --git a/tools/testgen/generators_debug_trace.go b/tools/testgen/generators_debug_trace.go index f0a91698c..2235c4fbb 100644 --- a/tools/testgen/generators_debug_trace.go +++ b/tools/testgen/generators_debug_trace.go @@ -598,3 +598,50 @@ var DebugTraceBlockByNumber = MethodTests{ }, }, } + +// DebugTraceBlockByHash tests the debug_traceBlockByHash method. +var DebugTraceBlockByHash = MethodTests{ + "debug_traceBlockByHash", + []Test{ + { + Name: "trace-block-with-transactions", + About: "traces a block containing transactions by hash; validates that each entry has txHash and a spec-compliant result", + SpecOnly: true, + Run: func(ctx context.Context, t *T) error { + block := t.chain.BlockWithTransactions("", nil) + var result []map[string]interface{} + if err := t.rpc.CallContext(ctx, &result, "debug_traceBlockByHash", block.Hash()); err != nil { + return err + } + if err := validateOpcodeBlockTraceResult(block, result); err != nil { + return err + } + return nil + }, + }, + { + Name: "trace-genesis", + About: "requests a trace of the genesis block by hash; must return an error since there is no parent state to replay from", + Run: func(ctx context.Context, t *T) error { + genesisHash := t.chain.GetBlock(0).Hash() + err := t.rpc.CallContext(ctx, nil, "debug_traceBlockByHash", genesisHash) + if err == nil { + return fmt.Errorf("expected error tracing genesis block (no parent state available), got success") + } + return nil + }, + }, + { + Name: "trace-block-not-found", + About: "requests a trace for a non-existent block hash; the client must return an error", + Run: func(ctx context.Context, t *T) error { + err := t.rpc.CallContext(ctx, nil, "debug_traceBlockByHash", + "0x0000000000000000000000000000000000000000000000000000000000000001") + if err == nil { + return fmt.Errorf("expected error for unknown block hash, got success") + } + return nil + }, + }, + }, +} From e2a1921c5c02cbce85e224f6c5a0f05ced08e646 Mon Sep 17 00:00:00 2001 From: Chase Wright Date: Fri, 27 Mar 2026 13:50:08 -0500 Subject: [PATCH 8/8] debug, schemas: make timeout advisory for streaming clients Clients that do not support execution timeouts (e.g. streaming JSON-RPC implementations) MAY ignore the timeout field. When a timeout is supported and reached, the client MUST still return an error with no partial results. Made-with: Cursor --- src/debug/trace.yaml | 10 ++++++---- src/schemas/opcode-tracer.yaml | 9 +++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/debug/trace.yaml b/src/debug/trace.yaml index c5233d870..a22878a06 100644 --- a/src/debug/trace.yaml +++ b/src/debug/trace.yaml @@ -19,8 +19,9 @@ The response is an array ordered by transaction index within the block. Each entry includes the transaction hash paired with its trace result. - If the execution timeout is reached before tracing completes, the client - MUST return an error; no partial results are returned. + If a timeout is configured and reached before tracing completes, the + client MUST return an error; no partial results are returned. Clients + that do not support execution timeouts MAY ignore the timeout field. params: - name: Block required: true @@ -127,8 +128,9 @@ The response is an array ordered by transaction index within the block. Each entry includes the transaction hash paired with its trace result. - If the execution timeout is reached before tracing completes, the client - MUST return an error; no partial results are returned. + If a timeout is configured and reached before tracing completes, the + client MUST return an error; no partial results are returned. Clients + that do not support execution timeouts MAY ignore the timeout field. Clients MUST return an error if no block with the given hash is found. params: diff --git a/src/schemas/opcode-tracer.yaml b/src/schemas/opcode-tracer.yaml index b82296f21..b48a21c74 100644 --- a/src/schemas/opcode-tracer.yaml +++ b/src/schemas/opcode-tracer.yaml @@ -38,10 +38,11 @@ TraceConfig: timeout: title: execution timeout description: >- - Duration string specifying a timeout for trace execution. Applies to - all tracers. Accepts Go duration strings (e.g. "5s", "300ms", "2m"). - Default: "5s". When the timeout is reached, the client MUST return an - error; no partial results are returned. + Optional duration string specifying a timeout for trace execution. + Clients that do not support execution timeouts (e.g. streaming + implementations) MAY ignore this field. When supported and the timeout + is reached, the client MUST return an error; no partial results are + returned. Accepts Go duration strings (e.g. "5s", "300ms", "2m"). type: string disableStorage: title: disable storage capture