32a97564-7bf6-471b-b139-f8c4b61428d3
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 30591 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 104405 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 104406 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 104407 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 104408 | capability.graph | complete | 1 / 3 | 1 week ago |
| 104409 | detector.run | complete | 1 / 3 | 1 week ago |
| 104410 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1058158] OpenAI Codex v0.77.0 (research preview)
[codex:1058158] --------
[codex:1058158] workdir: /tmp/codex-multi-45ghe9u9
[codex:1058158] model: gpt-5.2-codex
[codex:1058158] provider: openai
[codex:1058158] approval: never
[codex:1058158] sandbox: read-only
[codex:1058158] reasoning effort: xhigh
[codex:1058158] reasoning summaries: auto
[codex:1058158] session id: 019b6c2c-0fe6-7031-88be-84a8d41d1aa3
[codex:1058158] --------
[codex:1058158] user
[codex:1058158] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1058158] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1058158] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1058158]
[codex:1058158] Scope rules:
[codex:1058158] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1058158] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1058158]
[codex:1058158] Output MUST be valid JSON matching the provided schema.
[codex:1058158] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1058158] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1058158]
[codex:1058158] Output constraints (IMPORTANT):
[codex:1058158] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1058158] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1058158] mcp startup: no servers
[codex:1058158]
[codex:1058158] thinking
[codex:1058158] **Reading skill instructions**
[codex:1058158] exec
[codex:1058158] /bin/bash -lc ls in /tmp/codex-multi-45ghe9u9 succeeded in 6ms:
[codex:1058158] AUDIT_BUNDLE.txt
[codex:1058158] codex-output-schema.json
[codex:1058158] contracts
[codex:1058158] exec
[codex:1058158] /bin/bash -lc 'rg --files' in /tmp/codex-multi-45ghe9u9 succeeded in 9ms:
[codex:1058158] AUDIT_BUNDLE.txt
[codex:1058158] codex-output-schema.json
[codex:1058158] contracts/Contract.sol
[codex:1058158]
[codex:1058158] thinking
[codex:1058158] **Reading AUDIT_BUNDLE**
[codex:1058158] exec
[codex:1058158] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-45ghe9u9 succeeded in 6ms:
[codex:1058158] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1058158]
[codex:1058158] ================================================================================
[codex:1058158] FILE: contracts/Contract.sol
[codex:1058158] ================================================================================
[codex:1058158] // SPDX-License-Identifier: MIT
[codex:1058158] // File: @openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1058158]
[codex:1058158] pragma solidity ^0.7.0;
[codex:1058158]
[codex:1058158] interface IERC20Legacy {
[codex:1058158] // For Tether
[codex:1058158] function transfer(address recipient, uint256 amount) external;
[codex:1058158] }
[codex:1058158]
[codex:1058158] /**
[codex:1058158] * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:1058158] */
[codex:1058158] interface IERC20 {
[codex:1058158] /**
[codex:1058158]
[codex:1058158]
[codex:1058158]
[codex:1058158] thinking
[codex:1058158] **Analyzing contract TimelockSecurityWalletV1 for vulnerabilities**
[codex:1058158]
[codex:1058158] I'm auditing TimelockSecurityWalletV1, focusing on critical areas like timelock logic, quorum checks, and token transfers. There are some risky design choices—especially lack of parameter binding in quorum withdrawals allowing majority signers to retract arbitrary amounts—and unchecked token transfer returns. Reentrancy seems mitigated by setting state before external calls, but potential edge cases exist if authorized users overlap with contracts. The timelock and quorum timing checks have subtle behavioral quirks worth noting, including using minTimelock for expiry and possibility of resetting action timers by the primary user. Overall, there are interesting design and security trade-offs here I'm carefully considering.
[codex:1058158] thinking
[codex:1058158] **Detailing authorization and parameter-binding flaws**
[codex:1058158]
[codex:1058158] I'm focusing on how signers implicitly approve actions without binding parameters, letting the final signer dictate withdrawals or timelock changes regardless of earlier consent. There’s also careful consideration of timing logic, signers list management, and unchecked token transfer return values. Reentrancy risks appear low due to state updates before external calls, but token contracts included as authorized users could pose subtle edge cases. The analysis highlights how these design choices create logical and authorization weaknesses in the multisig flows.
[codex:1058158] thinking
[codex:1058158] **Evaluating unchecked ERC20 returns and parameter validation issues**
[codex:1058158]
[codex:1058158] I'm considering how non-standard tokens without return data cause ABI decode failures unless the legacy flag is used, but importantly, the lack of checking the transfer return value can lead to silent failures and potential stuck funds. Additionally, I note the lack of input validation around timelock parameters may cause denial-of-service scenarios if minTimelock exceeds maxTimelock, and the quorum logic permits withdrawals without binding parameters tightly, reinforcing prior concerns about authorization and invariant breaks. I'll next map these observations to precise code line numbers for the audit report.
[codex:1058158] exec
[codex:1058158] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-45ghe9u9 succeeded in 5ms:
[codex:1058158] 1 // SPDX-License-Identifier: MIT
[codex:1058158] 2 // File: @openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1058158] 3
[codex:1058158] 4 pragma solidity ^0.7.0;
[codex:1058158] 5
[codex:1058158] 6 interface IERC20Legacy {
[codex:1058158] 7 // For Tether
[codex:1058158] 8 function transfer(address recipient, uint256 amount) external;
[codex:1058158] 9 }
[codex:1058158] 10
[codex:1058158] 11 /**
[codex:1058158] 12 * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:1058158] 13 */
[codex:1058158] 14 interface IERC20 {
[codex:1058158] 15 /**
[codex:1058158] 16 * @dev Returns the amount of tokens in existence.
[codex:1058158] 17 */
[codex:1058158] 18 function totalSupply() external view returns (uint256);
[codex:1058158] 19
[codex:1058158] 20 function decimals() external view returns (uint8);
[codex:1058158]
[codex:1058158] thinking
[codex:1058158] **Preparing structured JSON report**
[codex:1058158]
[codex:1058158] I'll create a JSON output summarizing the audit findings with severity, categories, evidence, and precise code locations, ensuring compliance with the schema and proper string escaping.
[codex:1058158] codex
[codex:1058158] {"no_findings":false,"summary":"Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.","findings":[{"severity":"medium","category":"auth","title":"Quorum approvals do not bind action parameters, allowing last signer to choose arbitrary values","exploit_scenario":"With 3 authorized users (A, B, C), A and B call quorumWithdrawToken expecting to approve a small withdrawal. C then calls quorumWithdrawToken with a much larger amount and their own token choice. Because the contract ignores stored parameters and uses the last call’s inputs, C’s transaction executes and transfers the larger amount to C even though A and B never approved those parameters. The same pattern applies to quorumWithdrawBase and quorumChangeTimelocks, letting the last signer set arbitrary timelock values.","recommendation":"Store the proposed action parameters in the Action on the first signer (or store a hash of the full parameters) and require every subsequent signer to confirm the exact same parameters before execution. Alternatively, require off-chain signatures over the action payload (e.g., EIP-712) and verify them on-chain.","evidence":"Quorum paths explicitly note that “parameters are valid for the last signer” and then execute using the last call’s arguments without checking stored action data.","locations":["contracts/Contract.sol:217","contracts/Contract.sol:241","contracts/Contract.sol:261"]},{"severity":"low","category":"other","title":"ERC20 transfer return values are unchecked","exploit_scenario":"If a token returns false instead of reverting (non-compliant ERC20s), the contract will mark the action as used and continue even though no tokens were transferred. This can silently fail withdrawals and make it appear that funds were moved when they were not.","recommendation":"Use SafeERC20 and check return values for standard tokens; keep the legacy path for non-standard tokens but handle failures explicitly.","evidence":"Token transfers are invoked without checking the returned boolean in both the timelock and quorum withdrawal paths.","locations":["contracts/Contract.sol:164","contracts/Contract.sol:234"]}]}
[codex:1058158] tokens used
[codex:1058158] 21,750
[codex:1058158] {"no_findings":false,"summary":"Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.","findings":[{"severity":"medium","category":"auth","title":"Quorum approvals do not bind action parameters, allowing last signer to choose arbitrary values","exploit_scenario":"With 3 authorized users (A, B, C), A and B call quorumWithdrawToken expecting to approve a small withdrawal. C then calls quorumWithdrawToken with a much larger amount and their own token choice. Because the contract ignores stored parameters and uses the last call’s inputs, C’s transaction executes and transfers the larger amount to C even though A and B never approved those parameters. The same pattern applies to quorumWithdrawBase and quorumChangeTimelocks, letting the last signer set arbitrary timelock values.","recommendation":"Store the proposed action parameters in the Action on the first signer (or store a hash of the full parameters) and require every subsequent signer to confirm the exact same parameters before execution. Alternatively, require off-chain signatures over the action payload (e.g., EIP-712) and verify them on-chain.","evidence":"Quorum paths explicitly note that “parameters are valid for the last signer” and then execute using the last call’s arguments without checking stored action data.","locations":["contracts/Contract.sol:217","contracts/Contract.sol:241","contracts/Contract.sol:261"]},{"severity":"low","category":"other","title":"ERC20 transfer return values are unchecked","exploit_scenario":"If a token returns false instead of reverting (non-compliant ERC20s), the contract will mark the action as used and continue even though no tokens were transferred. This can silently fail withdrawals and make it appear that funds were moved when they were not.","recommendation":"Use SafeERC20 and check return values for standard tokens; keep the legacy path for non-standard tokens but handle failures explicitly.","evidence":"Token transfers are invoked without checking the returned boolean in both the timelock and quorum withdrawal paths.","locations":["contracts/Contract.sol:164","contracts/Contract.sol:234"]}]}
{
"codex": {
"ran_at": "2025-12-29T22:16:27.278539+00:00",
"returncode": 0
},
"summary": "Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.",
"raw_final": {
"summary": "Found 2 issues: quorum approvals are not parameter-bound (last signer controls action details), and ERC20 transfer return values are not checked.",
"findings": [
{
"title": "Quorum approvals do not bind action parameters, allowing last signer to choose arbitrary values",
"category": "auth",
"evidence": "Quorum paths explicitly note that \u201cparameters are valid for the last signer\u201d and then execute using the last call\u2019s arguments without checking stored action data.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:217",
"contracts/Contract.sol:241",
"contracts/Contract.sol:261"
],
"recommendation": "Store the proposed action parameters in the Action on the first signer (or store a hash of the full parameters) and require every subsequent signer to confirm the exact same parameters before execution. Alternatively, require off-chain signatures over the action payload (e.g., EIP-712) and verify them on-chain.",
"exploit_scenario": "With 3 authorized users (A, B, C), A and B call quorumWithdrawToken expecting to approve a small withdrawal. C then calls quorumWithdrawToken with a much larger amount and their own token choice. Because the contract ignores stored parameters and uses the last call\u2019s inputs, C\u2019s transaction executes and transfers the larger amount to C even though A and B never approved those parameters. The same pattern applies to quorumWithdrawBase and quorumChangeTimelocks, letting the last signer set arbitrary timelock values."
},
{
"title": "ERC20 transfer return values are unchecked",
"category": "other",
"evidence": "Token transfers are invoked without checking the returned boolean in both the timelock and quorum withdrawal paths.",
"severity": "low",
"locations": [
"contracts/Contract.sol:164",
"contracts/Contract.sol:234"
],
"recommendation": "Use SafeERC20 and check return values for standard tokens; keep the legacy path for non-standard tokens but handle failures explicitly.",
"exploit_scenario": "If a token returns false instead of reverting (non-compliant ERC20s), the contract will mark the action as used and continue even though no tokens were transferred. This can silently fail withdrawals and make it appear that funds were moved when they were not."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00a0 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x8bf7e74d 00000019: GT 0000001a: PUSH2 0x0064 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x8bf7e74d 00000024: EQ 00000025: PUSH2 0x01eb 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xbc1fd34b 0000002f: EQ 00000030: PUSH2 0x0246 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xd8e7d36a 0000003a: EQ 0000003b: PUSH2 0x0271 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe0d8e525 00000045: EQ 00000046: PUSH2 0x02d6 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xe9a5b9f8 00000050: EQ 00000051: PUSH2 0x033d 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf3b1e6f5 0000005b: EQ 0000005c: PUSH2 0x0378 0000005f: JUMPI 00000060: PUSH2 0x00a7 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0x03a4d4c8 0000006b: EQ 0000006c: PUSH2 0x00ac 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x0a615b74 00000076: EQ 00000077: PUSH2 0x00c3 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x22653ee6 00000081: EQ 00000082: PUSH2 0x0100 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0x25429e7d 0000008c: EQ 0000008d: PUSH2 0x0145 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0x491eb2e2 00000097: EQ 00000098: PUSH2 0x0170 0000009b: JUMPI 0000009c: PUSH2 0x00a7 0000009f: JUMP 000000a0: JUMPDEST 000000a1: CALLDATASIZE 000000a2: PUSH2 0x00a7 000000a5: JUMPI 000000a6: STOP 000000a7: JUMPDEST 000000a8: PUSH1 0x00 000000aa: DUP1 000000ab: REVERT 000000ac: JUMPDEST 000000ad: CALLVALUE 000000ae: DUP1 000000af: ISZERO 000000b0: PUSH2 0x00b8 000000b3: JUMPI 000000b4: PUSH1 0x00 000000b6: DUP1 000000b7: REVERT 000000b8: JUMPDEST 000000b9: POP 000000ba: PUSH2 0x00c1 000000bd: PUSH2 0x0408 000000c0: JUMP 000000c1: JUMPDEST 000000c2: STOP 000000c3: JUMPDEST 000000c4: CALLVALUE 000000c5: DUP1 000000c6: ISZERO 000000c7: PUSH2 0x00cf 000000ca: JUMPI 000000cb: PUSH1 0x00 000000cd: DUP1 000000ce: REVERT 000000cf: JUMPDEST 000000d0: POP 000000d1: PUSH2 0x00fe 000000d4: PUSH1 0x04 000000d6: DUP1 000000d7: CALLDATASIZE 000000d8: SUB 000000d9: PUSH1 0x20 000000db: DUP2 000000dc: LT 000000dd: ISZERO 000000de: PUSH2 0x00e6 000000e1: JUMPI 000000e2: PUSH1 0x00 000000e4: DUP1 000000e5: REVERT 000000e6: JUMPDEST 000000e7: DUP2 000000e8: ADD 000000e9: SWAP1 000000ea: DUP1 000000eb: DUP1 000000ec: CALLDATALOAD 000000ed: ISZERO 000000ee: ISZERO 000000ef: SWAP1 000000f0: PUSH1 0x20 000000f2: ADD 000000f3: SWAP1 000000f4: SWAP3 000000f5: SWAP2 000000f6: SWAP1 000000f7: POP 000000f8: POP 000000f9: POP 000000fa: PUSH2 0x04b3 000000fd: JUMP 000000fe: JUMPDEST 000000ff: STOP 00000100: JUMPDEST 00000101: CALLVALUE 00000102: DUP1 00000103: ISZERO 00000104: PUSH2 0x010c 00000107: JUMPI 00000108: PUSH1 0x00 0000010a: DUP1 0000010b: REVERT 0000010c: JUMPDEST 0000010d: POP 0000010e: PUSH2 0x0143 00000111: PUSH1 0x04 00000113: DUP1 00000114: CALLDATASIZE 00000115: SUB 00000116: PUSH1 0x40 00000118: DUP2 00000119: LT 0000011a: ISZERO 0000011b: PUSH2 0x0123 0000011e: JUMPI 0000011f: PUSH1 0x00 00000121: DUP1 00000122: REVERT 00000123: JUMPDEST 00000124: DUP2 00000125: ADD 00000126: SWAP1 00000127: DUP1 00000128: DUP1 00000129: CALLDATALOAD 0000012a: SWAP1 0000012b: PUSH1 0x20 0000012d: ADD 0000012e: SWAP1 0000012f: SWAP3 00000130: SWAP2 00000131: SWAP1 00000132: DUP1 00000133: CALLDATALOAD 00000134: SWAP1 00000135: PUSH1 0x20 00000137: ADD 00000138: SWAP1 00000139: SWAP3 0000013a: SWAP2 0000013b: SWAP1 0000013c: POP 0000013d: POP 0000013e: POP 0000013f: PUSH2 0x06cd 00000142: JUMP 00000143: JUMPDEST 00000144: STOP 00000145: JUMPDEST 00000146: CALLVALUE 00000147: DUP1 00000148: ISZERO 00000149: PUSH2 0x0151 0000014c: JUMPI 0000014d: PUSH1 0x00 0000014f: DUP1 00000150: REVERT 00000151: JUMPDEST 00000152: POP 00000153: PUSH2 0x015a 00000156: PUSH2 0x090b 00000159: JUMP 0000015a: JUMPDEST 0000015b: PUSH1 0x40 0000015d: MLOAD 0000015e: DUP1 0000015f: DUP3 00000160: DUP2 00000161: MSTORE 00000162: PUSH1 0x20 00000164: ADD 00000165: SWAP2 00000166: POP 00000167: POP 00000168: PUSH1 0x40 0000016a: MLOAD 0000016b: DUP1 0000016c: SWAP2 0000016d: SUB 0000016e: SWAP1 0000016f: RETURN 00000170: JUMPDEST 00000171: CALLVALUE 00000172: DUP1 00000173: ISZERO 00000174: PUSH2 0x017c 00000177: JUMPI 00000178: PUSH1 0x00 0000017a: DUP1 0000017b: REVERT 0000017c: JUMPDEST 0000017d: POP 0000017e: PUSH2 0x01e9 00000181: PUSH1 0x04 00000183: DUP1 00000184: CALLDATASIZE 00000185: SUB 00000186: PUSH1 0x60 00000188: DUP2 00000189: LT 0000018a: ISZERO 0000018b: PUSH2 0x0193 0000018e: JUMPI 0000018f: PUSH1 0x00 00000191: DUP1 00000192: REVERT 00000193: JUMPDEST 00000194: DUP2 00000195: ADD 00000196: SWAP1 00000197: DUP1 00000198: DUP1 00000199: CALLDATALOAD 0000019a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001af: AND 000001b0: SWAP1 000001b1: PUSH1 0x20 000001b3: ADD 000001b4: SWAP1 000001b5: SWAP3 000001b6: SWAP2 000001b7: SWAP1 000001b8: DUP1 000001b9: CALLDATALOAD 000001ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001cf: AND 000001d0: SWAP1 000001d1: PUSH1 0x20 000001d3: ADD 000001d4: SWAP1 000001d5: SWAP3 000001d6: SWAP2 000001d7: SWAP1 000001d8: DUP1 000001d9: CALLDATALOAD 000001da: SWAP1 000001db: PUSH1 0x20 000001dd: ADD 000001de: SWAP1 000001df: SWAP3 000001e0: SWAP2 000001e1: SWAP1 000001e2: POP 000001e3: POP 000001e4: POP 000001e5: PUSH2 0x0911 000001e8: JUMP 000001e9: JUMPDEST 000001ea: STOP 000001eb: JUMPDEST 000001ec: CALLVALUE 000001ed: DUP1 000001ee: ISZERO 000001ef: PUSH2 0x01f7 000001f2: JUMPI 000001f3: PUSH1 0x00 000001f5: DUP1 000001f6: REVERT 000001f7: JUMPDEST 000001f8: POP 000001f9: PUSH2 0x0244 000001fc: PUSH1 0x04 000001fe: DUP1 000001ff: CALLDATASIZE 00000200: SUB 00000201: PUSH1 0x40 00000203: DUP2 00000204: LT 00000205: ISZERO 00000206: PUSH2 0x020e 00000209: JUMPI 0000020a: PUSH1 0x00 0000020c: DUP1 0000020d: REVERT 0000020e: JUMPDEST 0000020f: DUP2 00000210: ADD 00000211: SWAP1 00000212: DUP1 00000213: DUP1 00000214: CALLDATALOAD 00000215: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000022a: AND 0000022b: SWAP1 0000022c: PUSH1 0x20 0000022e: ADD 0000022f: SWAP1 00000230: SWAP3 00000231: SWAP2 00000232: SWAP1 00000233: DUP1 00000234: CALLDATALOAD 00000235: SWAP1 00000236: PUSH1 0x20 00000238: ADD 00000239: SWAP1 0000023a: SWAP3 0000023b: SWAP2 0000023c: SWAP1 0000023d: POP 0000023e: POP 0000023f: POP 00000240: PUSH2 0x0bc2 00000243: JUMP 00000244: JUMPDEST 00000245: STOP 00000246: JUMPDEST 00000247: CALLVALUE 00000248: DUP1 00000249: ISZERO 0000024a: PUSH2 0x0252 0000024d: JUMPI 0000024e: PUSH1 0x00 00000250: DUP1 00000251: REVERT 00000252: JUMPDEST 00000253: POP 00000254: PUSH2 0x025b 00000257: PUSH2 0x0e77 0000025a: JUMP 0000025b: JUMPDEST 0000025c: PUSH1 0x40 0000025e: MLOAD 0000025f: DUP1 00000260: DUP3 00000261: DUP2 00000262: MSTORE 00000263: PUSH1 0x20 00000265: ADD 00000266: SWAP2 00000267: POP 00000268: POP 00000269: PUSH1 0x40 0000026b: MLOAD 0000026c: DUP1 0000026d: SWAP2 0000026e: SUB 0000026f: SWAP1 00000270: RETURN 00000271: JUMPDEST 00000272: CALLVALUE 00000273: DUP1 00000274: ISZERO 00000275: PUSH2 0x027d 00000278: JUMPI 00000279: PUSH1 0x00 0000027b: DUP1 0000027c: REVERT 0000027d: JUMPDEST 0000027e: POP 0000027f: PUSH2 0x02aa 00000282: PUSH1 0x04 00000284: DUP1 00000285: CALLDATASIZE 00000286: SUB 00000287: PUSH1 0x20 00000289: DUP2 0000028a: LT 0000028b: ISZERO 0000028c: PUSH2 0x0294 0000028f: JUMPI 00000290: PUSH1 0x00 00000292: DUP1 00000293: REVERT 00000294: JUMPDEST 00000295: DUP2 00000296: ADD 00000297: SWAP1 00000298: DUP1 00000299: DUP1 0000029a: CALLDATALOAD 0000029b: SWAP1 0000029c: PUSH1 0x20 0000029e: ADD 0000029f: SWAP1 000002a0: SWAP3 000002a1: SWAP2 000002a2: SWAP1 000002a3: POP 000002a4: POP 000002a5: POP 000002a6: PUSH2 0x0e7d 000002a9: JUMP 000002aa: JUMPDEST 000002ab: PUSH1 0x40 000002ad: MLOAD 000002ae: DUP1 000002af: DUP3 000002b0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002c5: AND 000002c6: DUP2 000002c7: MSTORE 000002c8: PUSH1 0x20 000002ca: ADD 000002cb: SWAP2 000002cc: POP 000002cd: POP 000002ce: PUSH1 0x40 000002d0: MLOAD 000002d1: DUP1 000002d2: SWAP2 000002d3: SUB 000002d4: SWAP1 000002d5: RETURN 000002d6: JUMPDEST 000002d7: CALLVALUE 000002d8: DUP1 000002d9: ISZERO 000002da: PUSH2 0x02e2 000002dd: JUMPI 000002de: PUSH1 0x00 000002e0: DUP1 000002e1: REVERT 000002e2: JUMPDEST 000002e3: POP 000002e4: PUSH2 0x033b 000002e7: PUSH1 0x04 000002e9: DUP1 000002ea: CALLDATASIZE 000002eb: SUB 000002ec: PUSH1 0x60 000002ee: DUP2 000002ef: LT 000002f0: ISZERO 000002f1: PUSH2 0x02f9 000002f4: JUMPI 000002f5: PUSH1 0x00 000002f7: DUP1 000002f8: REVERT 000002f9: JUMPDEST 000002fa: DUP2 000002fb: ADD 000002fc: SWAP1 000002fd: DUP1 000002fe: DUP1 000002ff: CALLDATALOAD 00000300: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000315: AND 00000316: SWAP1 00000317: PUSH1 0x20 00000319: ADD 0000031a: SWAP1 0000031b: SWAP3 0000031c: SWAP2 0000031d: SWAP1 0000031e: DUP1 0000031f: CALLDATALOAD 00000320: SWAP1 00000321: PUSH1 0x20 00000323: ADD 00000324: SWAP1 00000325: SWAP3 00000326: SWAP2 00000327: SWAP1 00000328: DUP1 00000329: CALLDATALOAD 0000032a: ISZERO 0000032b: ISZERO 0000032c: SWAP1 0000032d: PUSH1 0x20 0000032f: ADD 00000330: SWAP1 00000331: SWAP3 00000332: SWAP2 00000333: SWAP1 00000334: POP 00000335: POP 00000336: POP 00000337: PUSH2 0x0eb9 0000033a: JUMP 0000033b: JUMPDEST 0000033c: STOP 0000033d: JUMPDEST 0000033e: CALLVALUE 0000033f: DUP1 00000340: ISZERO 00000341: PUSH2 0x0349 00000344: JUMPI 00000345: PUSH1 0x00 00000347: DUP1 00000348: REVERT 00000349: JUMPDEST 0000034a: POP 0000034b: PUSH2 0x0376 0000034e: PUSH1 0x04 00000350: DUP1 00000351: CALLDATASIZE 00000352: SUB 00000353: PUSH1 0x20 00000355: DUP2 00000356: LT 00000357: ISZERO 00000358: PUSH2 0x0360 0000035b: JUMPI 0000035c: PUSH1 0x00 0000035e: DUP1 0000035f: REVERT 00000360: JUMPDEST 00000361: DUP2 00000362: ADD 00000363: SWAP1 00000364: DUP1 00000365: DUP1 00000366: CALLDATALOAD 00000367: SWAP1 00000368: PUSH1 0x20 0000036a: ADD 0000036b: SWAP1 0000036c: SWAP3 0000036d: SWAP2 0000036e: SWAP1 0000036f: POP 00000370: POP 00000371: POP 00000372: PUSH2 0x1233 00000375: JUMP 00000376: JUMPDEST 00000377: STOP 00000378: JUMPDEST 00000379: CALLVALUE 0000037a: DUP1 0000037b: ISZERO 0000037c: PUSH2 0x0384 0000037f: JUMPI 00000380: PUSH1 0x00 00000382: DUP1 00000383: REVERT 00000384: JUMPDEST 00000385: POP 00000386: PUSH2 0x03b1 00000389: PUSH1 0x04 0000038b: DUP1 0000038c: CALLDATASIZE 0000038d: SUB 0000038e: PUSH1 0x20 00000390: DUP2 00000391: LT 00000392: ISZERO 00000393: PUSH2 0x039b 00000396: JUMPI 00000397: PUSH1 0x00 00000399: DUP1 0000039a: REVERT 0000039b: JUMPDEST 0000039c: DUP2 0000039d: ADD 0000039e: SWAP1 0000039f: DUP1 000003a0: DUP1 000003a1: CALLDATALOAD 000003a2: SWAP1 000003a3: PUSH1 0x20 000003a5: ADD 000003a6: SWAP1 000003a7: SWAP3 000003a8: SWAP2 000003a9: SWAP1 000003aa: POP 000003ab: POP 000003ac: POP 000003ad: PUSH2 0x14a9 000003b0: JUMP 000003b1: JUMPDEST 000003b2: PUSH1 0x40 000003b4: MLOAD 000003b5: DUP1 000003b6: DUP6 000003b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003cc: AND 000003cd: DUP2 000003ce: MSTORE 000003cf: PUSH1 0x20 000003d1: ADD 000003d2: DUP5 000003d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003e8: AND 000003e9: DUP2 000003ea: MSTORE 000003eb: PUSH1 0x20 000003ed: ADD 000003ee: DUP4 000003ef: DUP2 000003f0: MSTORE 000003f1: PUSH1 0x20 000003f3: ADD 000003f4: DUP3 000003f5: DUP2 000003f6: MSTORE 000003f7: PUSH1 0x20 000003f9: ADD 000003fa: SWAP5 000003fb: POP 000003fc: POP 000003fd: POP 000003fe: POP 000003ff: POP 00000400: PUSH1 0x40 00000402: MLOAD 00000403: DUP1 00000404: SWAP2 00000405: SUB 00000406: SWAP1 00000407: RETURN 00000408: JUMPDEST 00000409: PUSH2 0x0410 0000040c: PUSH2 0x1519 0000040f: JUMP 00000410: JUMPDEST 00000411: PUSH1 0x00 00000413: PUSH1 0x01 00000415: SWAP1 00000416: POP 00000417: PUSH2 0x041f 0000041a: DUP2 0000041b: PUSH2 0x1629 0000041e: JUMP 0000041f: JUMPDEST 00000420: PUSH1 0x00 00000422: PUSH1 0x03 00000424: PUSH1 0x00 00000426: DUP4 00000427: DUP2 00000428: MSTORE 00000429: PUSH1 0x20 0000042b: ADD 0000042c: SWAP1 0000042d: DUP2 0000042e: MSTORE 0000042f: PUSH1 0x20 00000431: ADD 00000432: PUSH1 0x00 00000434: KECCAK256 00000435: SWAP1 00000436: POP 00000437: PUSH1 0x00 00000439: DUP2 0000043a: PUSH1 0x04 0000043c: ADD 0000043d: DUP2 0000043e: SWAP1 0000043f: SSTORE 00000440: POP 00000441: DUP1 00000442: PUSH1 0x01 00000444: ADD 00000445: PUSH1 0x00 00000447: SWAP1 00000448: SLOAD 00000449: SWAP1 0000044a: PUSH2 0x0100 0000044d: EXP 0000044e: SWAP1 0000044f: DIV 00000450: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000465: AND 00000466: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000047b: AND 0000047c: PUSH2 0x08fc 0000047f: DUP3 00000480: PUSH1 0x03 00000482: ADD 00000483: SLOAD 00000484: SWAP1 00000485: DUP2 00000486: ISZERO 00000487: MUL 00000488: SWAP1 00000489: PUSH1 0x40 0000048b: MLOAD 0000048c: PUSH1 0x00 0000048e: PUSH1 0x40 00000490: MLOAD 00000491: DUP1 00000492: DUP4 00000493: SUB 00000494: DUP2 00000495: DUP6 00000496: DUP9 00000497: DUP9 00000498: CALL 00000499: SWAP4 0000049a: POP 0000049b: POP 0000049c: POP 0000049d: POP 0000049e: ISZERO 0000049f: DUP1 000004a0: ISZERO 000004a1: PUSH2 0x04ae 000004a4: JUMPI 000004a5: RETURNDATASIZE 000004a6: PUSH1 0x00 000004a8: DUP1 000004a9: RETURNDATACOPY 000004aa: RETURNDATASIZE 000004ab: PUSH1 0x00 000004ad: REVERT 000004ae: JUMPDEST 000004af: POP 000004b0: POP 000004b1: POP 000004b2: JUMP 000004b3: JUMPDEST 000004b4: PUSH1 0x00 000004b6: PUSH2 0x04bd 000004b9: PUSH2 0x1519 000004bc: JUMP 000004bd: JUMPDEST 000004be: PUSH2 0x04c6 000004c1: DUP2 000004c2: PUSH2 0x1629 000004c5: JUMP 000004c6: JUMPDEST 000004c7: PUSH1 0x00 000004c9: PUSH1 0x03 000004cb: PUSH1 0x00 000004cd: DUP4 000004ce: DUP2 000004cf: MSTORE 000004d0: PUSH1 0x20 000004d2: ADD 000004d3: SWAP1 000004d4: DUP2 000004d5: MSTORE 000004d6: PUSH1 0x20 000004d8: ADD 000004d9: PUSH1 0x00 000004db: KECCAK256 000004dc: SWAP1 000004dd: POP 000004de: PUSH1 0x00 000004e0: DUP2 000004e1: PUSH1 0x04 000004e3: ADD 000004e4: DUP2 000004e5: SWAP1 000004e6: SSTORE 000004e7: POP 000004e8: PUSH1 0x00 000004ea: ISZERO 000004eb: ISZERO 000004ec: DUP4 000004ed: ISZERO 000004ee: ISZERO 000004ef: EQ 000004f0: ISZERO 000004f1: PUSH2 0x05f2 000004f4: JUMPI 000004f5: DUP1 000004f6: PUSH1 0x02 000004f8: ADD 000004f9: PUSH1 0x00 000004fb: SWAP1 000004fc: SLOAD 000004fd: SWAP1 000004fe: PUSH2 0x0100 00000501: EXP 00000502: SWAP1 00000503: DIV 00000504: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000519: AND 0000051a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000052f: AND 00000530: PUSH4 0xa9059cbb 00000535: DUP3 00000536: PUSH1 0x01 00000538: ADD 00000539: PUSH1 0x00 0000053b: SWAP1 0000053c: SLOAD 0000053d: SWAP1 0000053e: PUSH2 0x0100 00000541: EXP 00000542: SWAP1 00000543: DIV 00000544: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000559: AND 0000055a: DUP4 0000055b: PUSH1 0x03 0000055d: ADD 0000055e: SLOAD 0000055f: PUSH1 0x40 00000561: MLOAD 00000562: DUP4 00000563: PUSH4 0xffffffff 00000568: AND 00000569: PUSH1 0xe0 0000056b: SHL 0000056c: DUP2 0000056d: MSTORE 0000056e: PUSH1 0x04 00000570: ADD 00000571: DUP1 00000572: DUP4 00000573: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000588: AND 00000589: DUP2 0000058a: MSTORE 0000058b: PUSH1 0x20 0000058d: ADD 0000058e: DUP3 0000058f: DUP2 00000590: MSTORE 00000591: PUSH1 0x20 00000593: ADD 00000594: SWAP3 00000595: POP 00000596: POP 00000597: POP 00000598: PUSH1 0x20 0000059a: PUSH1 0x40 0000059c: MLOAD 0000059d: DUP1 0000059e: DUP4 0000059f: SUB 000005a0: DUP2 000005a1: PUSH1 0x00 000005a3: DUP8 000005a4: DUP1 000005a5: EXTCODESIZE 000005a6: ISZERO 000005a7: DUP1 000005a8: ISZERO 000005a9: PUSH2 0x05b1 000005ac: JUMPI 000005ad: PUSH1 0x00 000005af: DUP1 000005b0: REVERT 000005b1: JUMPDEST 000005b2: POP 000005b3: GAS 000005b4: CALL 000005b5: ISZERO 000005b6: DUP1 000005b7: ISZERO 000005b8: PUSH2 0x05c5 000005bb: JUMPI 000005bc: RETURNDATASIZE 000005bd: PUSH1 0x00 000005bf: DUP1 000005c0: RETURNDATACOPY 000005c1: RETURNDATASIZE 000005c2: PUSH1 0x00 000005c4: REVERT 000005c5: JUMPDEST 000005c6: POP 000005c7: POP 000005c8: POP 000005c9: POP 000005ca: PUSH1 0x40 000005cc: MLOAD 000005cd: RETURNDATASIZE 000005ce: PUSH1 0x20 000005d0: DUP2 000005d1: LT 000005d2: ISZERO 000005d3: PUSH2 0x05db 000005d6: JUMPI 000005d7: PUSH1 0x00 000005d9: DUP1 000005da: REVERT 000005db: JUMPDEST 000005dc: DUP2 000005dd: ADD 000005de: SWAP1 000005df: DUP1 000005e0: DUP1 000005e1: MLOAD 000005e2: SWAP1 000005e3: PUSH1 0x20 000005e5: ADD 000005e6: SWAP1 000005e7: SWAP3 000005e8: SWAP2 000005e9: SWAP1 000005ea: POP 000005eb: POP 000005ec: POP 000005ed: POP 000005ee: PUSH2 0x06c8 000005f1: JUMP 000005f2: JUMPDEST 000005f3: DUP1 000005f4: PUSH1 0x02 000005f6: ADD 000005f7: PUSH1 0x00 000005f9: SWAP1 000005fa: SLOAD 000005fb: SWAP1 000005fc: PUSH2 0x0100 000005ff: EXP 00000600: SWAP1 00000601: DIV 00000602: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000617: AND 00000618: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000062d: AND 0000062e: PUSH4 0xa9059cbb 00000633: DUP3 00000634: PUSH1 0x01 00000636: ADD 00000637: PUSH1 0x00 00000639: SWAP1 0000063a: SLOAD 0000063b: SWAP1 0000063c: PUSH2 0x0100 0000063f: EXP 00000640: SWAP1 00000641: DIV 00000642: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000657: AND 00000658: DUP4 00000659: PUSH1 0x03 0000065b: ADD 0000065c: SLOAD 0000065d: PUSH1 0x40 0000065f: MLOAD 00000660: DUP4 00000661: PUSH4 0xffffffff 00000666: AND 00000667: PUSH1 0xe0 00000669: SHL 0000066a: DUP2 0000066b: MSTORE 0000066c: PUSH1 0x04 0000066e: ADD 0000066f: DUP1 00000670: DUP4 00000671: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000686: AND 00000687: DUP2 00000688: MSTORE 00000689: PUSH1 0x20 0000068b: ADD 0000068c: DUP3 0000068d: DUP2 0000068e: MSTORE 0000068f: PUSH1 0x20 00000691: ADD 00000692: SWAP3 00000693: POP 00000694: POP 00000695: POP 00000696: PUSH1 0x00 00000698: PUSH1 0x40 0000069a: MLOAD 0000069b: DUP1 0000069c: DUP4 0000069d: SUB 0000069e: DUP2 0000069f: PUSH1 0x00 000006a1: DUP8 000006a2: DUP1 000006a3: EXTCODESIZE 000006a4: ISZERO 000006a5: DUP1 000006a6: ISZERO 000006a7: PUSH2 0x06af 000006aa: JUMPI 000006ab: PUSH1 0x00 000006ad: DUP1 000006ae: REVERT 000006af: JUMPDEST 000006b0: POP 000006b1: GAS 000006b2: CALL 000006b3: ISZERO 000006b4: DUP1 000006b5: ISZERO 000006b6: PUSH2 0x06c3 000006b9: JUMPI 000006ba: RETURNDATASIZE 000006bb: PUSH1 0x00 000006bd: DUP1 000006be: RETURNDATACOPY 000006bf: RETURNDATASIZE 000006c0: PUSH1 0x00 000006c2: REVERT 000006c3: JUMPDEST 000006c4: POP 000006c5: POP 000006c6: POP 000006c7: POP 000006c8: JUMPDEST 000006c9: POP 000006ca: POP 000006cb: POP 000006cc: JUMP 000006cd: JUMPDEST 000006ce: PUSH2 0x06d5 000006d1: PUSH2 0x1519 000006d4: JUMP 000006d5: JUMPDEST 000006d6: PUSH1 0x00 000006d8: PUSH1 0x04 000006da: SWAP1 000006db: POP 000006dc: PUSH1 0x00 000006de: PUSH2 0x06e6 000006e1: DUP3 000006e2: PUSH2 0x1953 000006e5: JUMP 000006e6: JUMPDEST 000006e7: SWAP1 000006e8: POP 000006e9: PUSH1 0x00 000006eb: DUP2 000006ec: EQ 000006ed: ISZERO 000006ee: PUSH2 0x08c4 000006f1: JUMPI 000006f2: PUSH1 0x60 000006f4: PUSH1 0x01 000006f6: PUSH8 0xffffffffffffffff 000006ff: DUP2 00000700: GT 00000701: DUP1 00000702: ISZERO 00000703: PUSH2 0x070b 00000706: JUMPI 00000707: PUSH1 0x00 00000709: DUP1 0000070a: REVERT 0000070b: JUMPDEST 0000070c: POP 0000070d: PUSH1 0x40 0000070f: MLOAD 00000710: SWAP1 00000711: DUP1 00000712: DUP3 00000713: MSTORE 00000714: DUP1 00000715: PUSH1 0x20 00000717: MUL 00000718: PUSH1 0x20 0000071a: ADD 0000071b: DUP3 0000071c: ADD 0000071d: PUSH1 0x40 0000071f: MSTORE 00000720: DUP1 00000721: ISZERO 00000722: PUSH2 0x073a 00000725: JUMPI 00000726: DUP2 00000727: PUSH1 0x20 00000729: ADD 0000072a: PUSH1 0x20 0000072c: DUP3 0000072d: MUL 0000072e: DUP1 0000072f: CALLDATASIZE 00000730: DUP4 00000731: CALLDATACOPY 00000732: DUP1 00000733: DUP3 00000734: ADD 00000735: SWAP2 00000736: POP 00000737: POP 00000738: SWAP1 00000739: POP 0000073a: JUMPDEST 0000073b: POP 0000073c: SWAP1 0000073d: POP 0000073e: CALLER 0000073f: DUP2 00000740: PUSH1 0x00 00000742: DUP2 00000743: MLOAD 00000744: DUP2 00000745: LT 00000746: PUSH2 0x074b 00000749: JUMPI 0000074a: INVALID 0000074b: JUMPDEST 0000074c: PUSH1 0x20 0000074e: MUL 0000074f: PUSH1 0x20 00000751: ADD 00000752: ADD 00000753: SWAP1 00000754: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000769: AND 0000076a: SWAP1 0000076b: DUP2 0000076c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000781: AND 00000782: DUP2 00000783: MSTORE 00000784: POP 00000785: POP 00000786: PUSH2 0x078d 00000789: PUSH2 0x1b2b 0000078c: JUMP 0000078d: JUMPDEST 0000078e: PUSH1 0x40 00000790: MLOAD 00000791: DUP1 00000792: PUSH1 0xa0 00000794: ADD 00000795: PUSH1 0x40 00000797: MSTORE 00000798: DUP1 00000799: DUP4 0000079a: DUP2 0000079b: MSTORE 0000079c: PUSH1 0x20 0000079e: ADD 0000079f: PUSH1 0x00 000007a1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007b6: AND 000007b7: DUP2 000007b8: MSTORE 000007b9: PUSH1 0x20 000007bb: ADD 000007bc: PUSH1 0x00 000007be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007d3: AND 000007d4: DUP2 000007d5: MSTORE 000007d6: PUSH1 0x20 000007d8: ADD 000007d9: PUSH1 0x00 000007db: DUP2 000007dc: MSTORE 000007dd: PUSH1 0x20 000007df: ADD 000007e0: TIMESTAMP 000007e1: DUP2 000007e2: MSTORE 000007e3: POP 000007e4: SWAP1 000007e5: POP 000007e6: DUP1 000007e7: PUSH1 0x03 000007e9: PUSH1 0x00 000007eb: DUP7 000007ec: DUP2 000007ed: MSTORE 000007ee: PUSH1 0x20 000007f0: ADD 000007f1: SWAP1 000007f2: DUP2 000007f3: MSTORE 000007f4: PUSH1 0x20 000007f6: ADD 000007f7: PUSH1 0x00 000007f9: KECCAK256 000007fa: PUSH1 0x00 000007fc: DUP3 000007fd: ADD 000007fe: MLOAD 000007ff: DUP2 00000800: PUSH1 0x00 00000802: ADD 00000803: SWAP1 00000804: DUP1 00000805: MLOAD 00000806: SWAP1 00000807: PUSH1 0x20 00000809: ADD 0000080a: SWAP1 0000080b: PUSH2 0x0815 0000080e: SWAP3 0000080f: SWAP2 00000810: SWAP1 00000811: PUSH2 0x1b86 00000814: JUMP 00000815: JUMPDEST 00000816: POP 00000817: PUSH1 0x20 00000819: DUP3 0000081a: ADD 0000081b: MLOAD 0000081c: DUP2 0000081d: PUSH1 0x01 0000081f: ADD 00000820: PUSH1 0x00 00000822: PUSH2 0x0100 00000825: EXP 00000826: DUP2 00000827: SLOAD 00000828: DUP2 00000829: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000083e: MUL 0000083f: NOT 00000840: AND 00000841: SWAP1 00000842: DUP4 00000843: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000858: AND 00000859: MUL 0000085a: OR 0000085b: SWAP1 0000085c: SSTORE 0000085d: POP 0000085e: PUSH1 0x40 00000860: DUP3 00000861: ADD 00000862: MLOAD 00000863: DUP2 00000864: PUSH1 0x02 00000866: ADD 00000867: PUSH1 0x00 00000869: PUSH2 0x0100 0000086c: EXP 0000086d: DUP2 0000086e: SLOAD 0000086f: DUP2 00000870: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000885: MUL 00000886: NOT 00000887: AND 00000888: SWAP1 00000889: DUP4 0000088a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000089f: AND 000008a0: MUL 000008a1: OR 000008a2: SWAP1 000008a3: SSTORE 000008a4: POP 000008a5: PUSH1 0x60 000008a7: DUP3 000008a8: ADD 000008a9: MLOAD 000008aa: DUP2 000008ab: PUSH1 0x03 000008ad: ADD 000008ae: SSTORE 000008af: PUSH1 0x80 000008b1: DUP3 000008b2: ADD 000008b3: MLOAD 000008b4: DUP2 000008b5: PUSH1 0x04 000008b7: ADD 000008b8: SSTORE 000008b9: SWAP1 000008ba: POP 000008bb: POP 000008bc: POP 000008bd: POP 000008be: POP 000008bf: POP 000008c0: PUSH2 0x0907 000008c3: JUMP 000008c4: JUMPDEST 000008c5: PUSH1 0x02 000008c7: DUP2 000008c8: EQ 000008c9: ISZERO 000008ca: PUSH2 0x08d4 000008cd: JUMPI 000008ce: POP 000008cf: POP 000008d0: PUSH2 0x0907 000008d3: JUMP 000008d4: JUMPDEST 000008d5: PUSH1 0x00 000008d7: PUSH1 0x03 000008d9: PUSH1 0x00 000008db: DUP5 000008dc: DUP2 000008dd: MSTORE 000008de: PUSH1 0x20 000008e0: ADD 000008e1: SWAP1 000008e2: DUP2 000008e3: MSTORE 000008e4: PUSH1 0x20 000008e6: ADD 000008e7: PUSH1 0x00 000008e9: KECCAK256 000008ea: SWAP1 000008eb: POP 000008ec: PUSH1 0x00 000008ee: DUP2 000008ef: PUSH1 0x04 000008f1: ADD 000008f2: DUP2 000008f3: SWAP1 000008f4: SSTORE 000008f5: POP 000008f6: DUP5 000008f7: PUSH1 0x01 000008f9: DUP2 000008fa: SWAP1 000008fb: SSTORE 000008fc: POP 000008fd: DUP4 000008fe: PUSH1 0x02 00000900: DUP2 00000901: SWAP1 00000902: SSTORE 00000903: POP 00000904: POP 00000905: POP 00000906: POP 00000907: JUMPDEST 00000908: POP 00000909: POP 0000090a: JUMP 0000090b: JUMPDEST 0000090c: PUSH1 0x01 0000090e: SLOAD 0000090f: DUP2 00000910: JUMP 00000911: JUMPDEST 00000912: PUSH2 0x0919 00000915: PUSH2 0x1519 00000918: JUMP 00000919: JUMPDEST 0000091a: PUSH1 0x00 0000091c: DUP1 0000091d: DUP2 0000091e: SLOAD 0000091f: DUP2 00000920: LT 00000921: PUSH2 0x0926 00000924: JUMPI 00000925: INVALID 00000926: JUMPDEST 00000927: SWAP1 00000928: PUSH1 0x00 0000092a: MSTORE 0000092b: PUSH1 0x20 0000092d: PUSH1 0x00 0000092f: KECCAK256 00000930: ADD 00000931: PUSH1 0x00 00000933: SWAP1 00000934: SLOAD 00000935: SWAP1 00000936: PUSH2 0x0100 00000939: EXP 0000093a: SWAP1 0000093b: DIV 0000093c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000951: AND 00000952: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000967: AND 00000968: CALLER 00000969: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000097e: AND 0000097f: EQ 00000980: PUSH2 0x09f1 00000983: JUMPI 00000984: PUSH1 0x40 00000986: MLOAD 00000987: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009a8: DUP2 000009a9: MSTORE 000009aa: PUSH1 0x04 000009ac: ADD 000009ad: DUP1 000009ae: DUP1 000009af: PUSH1 0x20 000009b1: ADD 000009b2: DUP3 000009b3: DUP2 000009b4: SUB 000009b5: DUP3 000009b6: MSTORE 000009b7: PUSH1 0x10 000009b9: DUP2 000009ba: MSTORE 000009bb: PUSH1 0x20 000009bd: ADD 000009be: DUP1 000009bf: PUSH32 0x4e6f74207072696d617279207573657200000000000000000000000000000000 000009e0: DUP2 000009e1: MSTORE 000009e2: POP 000009e3: PUSH1 0x20 000009e5: ADD 000009e6: SWAP2 000009e7: POP 000009e8: POP 000009e9: PUSH1 0x40 000009eb: MLOAD 000009ec: DUP1 000009ed: SWAP2 000009ee: SUB 000009ef: SWAP1 000009f0: REVERT 000009f1: JUMPDEST 000009f2: PUSH1 0x00 000009f4: PUSH1 0x60 000009f6: PUSH1 0x01 000009f8: PUSH8 0xffffffffffffffff 00000a01: DUP2 00000a02: GT 00000a03: DUP1 00000a04: ISZERO 00000a05: PUSH2 0x0a0d 00000a08: JUMPI 00000a09: PUSH1 0x00 00000a0b: DUP1 00000a0c: REVERT 00000a0d: JUMPDEST 00000a0e: POP 00000a0f: PUSH1 0x40 00000a11: MLOAD 00000a12: SWAP1 00000a13: DUP1 00000a14: DUP3 00000a15: MSTORE 00000a16: DUP1 00000a17: PUSH1 0x20 00000a19: MUL 00000a1a: PUSH1 0x20 00000a1c: ADD 00000a1d: DUP3 00000a1e: ADD 00000a1f: PUSH1 0x40 00000a21: MSTORE 00000a22: DUP1 00000a23: ISZERO 00000a24: PUSH2 0x0a3c 00000a27: JUMPI 00000a28: DUP2 00000a29: PUSH1 0x20 00000a2b: ADD 00000a2c: PUSH1 0x20 00000a2e: DUP3 00000a2f: MUL 00000a30: DUP1 00000a31: CALLDATASIZE 00000a32: DUP4 00000a33: CALLDATACOPY 00000a34: DUP1 00000a35: DUP3 00000a36: ADD 00000a37: SWAP2 00000a38: POP 00000a39: POP 00000a3a: SWAP1 00000a3b: POP 00000a3c: JUMPDEST 00000a3d: POP 00000a3e: SWAP1 00000a3f: POP 00000a40: CALLER 00000a41: DUP2 00000a42: PUSH1 0x00 00000a44: DUP2 00000a45: MLOAD 00000a46: DUP2 00000a47: LT 00000a48: PUSH2 0x0a4d 00000a4b: JUMPI 00000a4c: INVALID 00000a4d: JUMPDEST 00000a4e: PUSH1 0x20 00000a50: MUL 00000a51: PUSH1 0x20 00000a53: ADD 00000a54: ADD 00000a55: SWAP1 00000a56: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a6b: AND 00000a6c: SWAP1 00000a6d: DUP2 00000a6e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a83: AND 00000a84: DUP2 00000a85: MSTORE 00000a86: POP 00000a87: POP 00000a88: PUSH2 0x0a8f 00000a8b: PUSH2 0x1b2b 00000a8e: JUMP 00000a8f: JUMPDEST 00000a90: PUSH1 0x40 00000a92: MLOAD 00000a93: DUP1 00000a94: PUSH1 0xa0 00000a96: ADD 00000a97: PUSH1 0x40 00000a99: MSTORE 00000a9a: DUP1 00000a9b: DUP4 00000a9c: DUP2 00000a9d: MSTORE 00000a9e: PUSH1 0x20 00000aa0: ADD 00000aa1: DUP7 00000aa2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ab7: AND 00000ab8: DUP2 00000ab9: MSTORE 00000aba: PUSH1 0x20 00000abc: ADD 00000abd: DUP8 00000abe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ad3: AND 00000ad4: DUP2 00000ad5: MSTORE 00000ad6: PUSH1 0x20 00000ad8: ADD 00000ad9: DUP6 00000ada: DUP2 00000adb: MSTORE 00000adc: PUSH1 0x20 00000ade: ADD 00000adf: TIMESTAMP 00000ae0: DUP2 00000ae1: MSTORE 00000ae2: POP 00000ae3: SWAP1 00000ae4: POP 00000ae5: DUP1 00000ae6: PUSH1 0x03 00000ae8: PUSH1 0x00 00000aea: DUP6 00000aeb: DUP2 00000aec: MSTORE 00000aed: PUSH1 0x20 00000aef: ADD 00000af0: SWAP1 00000af1: DUP2 00000af2: MSTORE 00000af3: PUSH1 0x20 00000af5: ADD 00000af6: PUSH1 0x00 00000af8: KECCAK256 00000af9: PUSH1 0x00 00000afb: DUP3 00000afc: ADD 00000afd: MLOAD 00000afe: DUP2 00000aff: PUSH1 0x00 00000b01: ADD 00000b02: SWAP1 00000b03: DUP1 00000b04: MLOAD 00000b05: SWAP1 00000b06: PUSH1 0x20 00000b08: ADD 00000b09: SWAP1 00000b0a: PUSH2 0x0b14 00000b0d: SWAP3 00000b0e: SWAP2 00000b0f: SWAP1 00000b10: PUSH2 0x1b86 00000b13: JUMP 00000b14: JUMPDEST 00000b15: POP 00000b16: PUSH1 0x20 00000b18: DUP3 00000b19: ADD 00000b1a: MLOAD 00000b1b: DUP2 00000b1c: PUSH1 0x01 00000b1e: ADD 00000b1f: PUSH1 0x00 00000b21: PUSH2 0x0100 00000b24: EXP 00000b25: DUP2 00000b26: SLOAD 00000b27: DUP2 00000b28: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b3d: MUL 00000b3e: NOT 00000b3f: AND 00000b40: SWAP1 00000b41: DUP4 00000b42: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b57: AND 00000b58: MUL 00000b59: OR 00000b5a: SWAP1 00000b5b: SSTORE 00000b5c: POP 00000b5d: PUSH1 0x40 00000b5f: DUP3 00000b60: ADD 00000b61: MLOAD 00000b62: DUP2 00000b63: PUSH1 0x02 00000b65: ADD 00000b66: PUSH1 0x00 00000b68: PUSH2 0x0100 00000b6b: EXP 00000b6c: DUP2 00000b6d: SLOAD 00000b6e: DUP2 00000b6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b84: MUL 00000b85: NOT 00000b86: AND 00000b87: SWAP1 00000b88: DUP4 00000b89: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b9e: AND 00000b9f: MUL 00000ba0: OR 00000ba1: SWAP1 00000ba2: SSTORE 00000ba3: POP 00000ba4: PUSH1 0x60 00000ba6: DUP3 00000ba7: ADD 00000ba8: MLOAD 00000ba9: DUP2 00000baa: PUSH1 0x03 00000bac: ADD 00000bad: SSTORE 00000bae: PUSH1 0x80 00000bb0: DUP3 00000bb1: ADD 00000bb2: MLOAD 00000bb3: DUP2 00000bb4: PUSH1 0x04 00000bb6: ADD 00000bb7: SSTORE 00000bb8: SWAP1 00000bb9: POP 00000bba: POP 00000bbb: POP 00000bbc: POP 00000bbd: POP 00000bbe: POP 00000bbf: POP 00000bc0: POP 00000bc1: JUMP 00000bc2: JUMPDEST 00000bc3: PUSH2 0x0bca 00000bc6: PUSH2 0x1519 00000bc9: JUMP 00000bca: JUMPDEST 00000bcb: PUSH1 0x00 00000bcd: DUP1 00000bce: DUP2 00000bcf: SLOAD 00000bd0: DUP2 00000bd1: LT 00000bd2: PUSH2 0x0bd7 00000bd5: JUMPI 00000bd6: INVALID 00000bd7: JUMPDEST 00000bd8: SWAP1 00000bd9: PUSH1 0x00 00000bdb: MSTORE 00000bdc: PUSH1 0x20 00000bde: PUSH1 0x00 00000be0: KECCAK256 00000be1: ADD 00000be2: PUSH1 0x00 00000be4: SWAP1 00000be5: SLOAD 00000be6: SWAP1 00000be7: PUSH2 0x0100 00000bea: EXP 00000beb: SWAP1 00000bec: DIV 00000bed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c02: AND 00000c03: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c18: AND 00000c19: CALLER 00000c1a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c2f: AND 00000c30: EQ 00000c31: PUSH2 0x0ca2 00000c34: JUMPI 00000c35: PUSH1 0x40 00000c37: MLOAD 00000c38: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000c59: DUP2 00000c5a: MSTORE 00000c5b: PUSH1 0x04 00000c5d: ADD 00000c5e: DUP1 00000c5f: DUP1 00000c60: PUSH1 0x20 00000c62: ADD 00000c63: DUP3 00000c64: DUP2 00000c65: SUB 00000c66: DUP3 00000c67: MSTORE 00000c68: PUSH1 0x10 00000c6a: DUP2 00000c6b: MSTORE 00000c6c: PUSH1 0x20 00000c6e: ADD 00000c6f: DUP1 00000c70: PUSH32 0x4e6f74207072696d617279207573657200000000000000000000000000000000 00000c91: DUP2 00000c92: MSTORE 00000c93: POP 00000c94: PUSH1 0x20 00000c96: ADD 00000c97: SWAP2 00000c98: POP 00000c99: POP 00000c9a: PUSH1 0x40 00000c9c: MLOAD 00000c9d: DUP1 00000c9e: SWAP2 00000c9f: SUB 00000ca0: SWAP1 00000ca1: REVERT 00000ca2: JUMPDEST 00000ca3: PUSH1 0x00 00000ca5: PUSH1 0x01 00000ca7: SWAP1 00000ca8: POP 00000ca9: PUSH1 0x60 00000cab: PUSH1 0x01 00000cad: PUSH8 0xffffffffffffffff 00000cb6: DUP2 00000cb7: GT 00000cb8: DUP1 00000cb9: ISZERO 00000cba: PUSH2 0x0cc2 00000cbd: JUMPI 00000cbe: PUSH1 0x00 00000cc0: DUP1 00000cc1: REVERT 00000cc2: JUMPDEST 00000cc3: POP 00000cc4: PUSH1 0x40 00000cc6: MLOAD 00000cc7: SWAP1 00000cc8: DUP1 00000cc9: DUP3 00000cca: MSTORE 00000ccb: DUP1 00000ccc: PUSH1 0x20 00000cce: MUL 00000ccf: PUSH1 0x20 00000cd1: ADD 00000cd2: DUP3 00000cd3: ADD 00000cd4: PUSH1 0x40 00000cd6: MSTORE 00000cd7: DUP1 00000cd8: ISZERO 00000cd9: PUSH2 0x0cf1 00000cdc: JUMPI 00000cdd: DUP2 00000cde: PUSH1 0x20 00000ce0: ADD 00000ce1: PUSH1 0x20 00000ce3: DUP3 00000ce4: MUL 00000ce5: DUP1 00000ce6: CALLDATASIZE 00000ce7: DUP4 00000ce8: CALLDATACOPY 00000ce9: DUP1 00000cea: DUP3 00000ceb: ADD 00000cec: SWAP2 00000ced: POP 00000cee: POP 00000cef: SWAP1 00000cf0: POP 00000cf1: JUMPDEST 00000cf2: POP 00000cf3: SWAP1 00000cf4: POP 00000cf5: CALLER 00000cf6: DUP2 00000cf7: PUSH1 0x00 00000cf9: DUP2 00000cfa: MLOAD 00000cfb: DUP2 00000cfc: LT 00000cfd: PUSH2 0x0d02 00000d00: JUMPI 00000d01: INVALID 00000d02: JUMPDEST 00000d03: PUSH1 0x20 00000d05: MUL 00000d06: PUSH1 0x20 00000d08: ADD 00000d09: ADD 00000d0a: SWAP1 00000d0b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d20: AND 00000d21: SWAP1 00000d22: DUP2 00000d23: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d38: AND 00000d39: DUP2 00000d3a: MSTORE 00000d3b: POP 00000d3c: POP 00000d3d: PUSH2 0x0d44 00000d40: PUSH2 0x1b2b 00000d43: JUMP 00000d44: JUMPDEST 00000d45: PUSH1 0x40 00000d47: MLOAD 00000d48: DUP1 00000d49: PUSH1 0xa0 00000d4b: ADD 00000d4c: PUSH1 0x40 00000d4e: MSTORE 00000d4f: DUP1 00000d50: DUP4 00000d51: DUP2 00000d52: MSTORE 00000d53: PUSH1 0x20 00000d55: ADD 00000d56: DUP7 00000d57: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d6c: AND 00000d6d: DUP2 00000d6e: MSTORE 00000d6f: PUSH1 0x20 00000d71: ADD 00000d72: PUSH1 0x00 00000d74: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d89: AND 00000d8a: DUP2 00000d8b: MSTORE 00000d8c: PUSH1 0x20 00000d8e: ADD 00000d8f: DUP6 00000d90: DUP2 00000d91: MSTORE 00000d92: PUSH1 0x20 00000d94: ADD 00000d95: TIMESTAMP 00000d96: DUP2 00000d97: MSTORE 00000d98: POP 00000d99: SWAP1 00000d9a: POP 00000d9b: DUP1 00000d9c: PUSH1 0x03 00000d9e: PUSH1 0x00 00000da0: DUP6 00000da1: DUP2 00000da2: MSTORE 00000da3: PUSH1 0x20 00000da5: ADD 00000da6: SWAP1 00000da7: DUP2 00000da8: MSTORE 00000da9: PUSH1 0x20 00000dab: ADD 00000dac: PUSH1 0x00 00000dae: KECCAK256 00000daf: PUSH1 0x00 00000db1: DUP3 00000db2: ADD 00000db3: MLOAD 00000db4: DUP2 00000db5: PUSH1 0x00 00000db7: ADD 00000db8: SWAP1 00000db9: DUP1 00000dba: MLOAD 00000dbb: SWAP1 00000dbc: PUSH1 0x20 00000dbe: ADD 00000dbf: SWAP1 00000dc0: PUSH2 0x0dca 00000dc3: SWAP3 00000dc4: SWAP2 00000dc5: SWAP1 00000dc6: PUSH2 0x1b86 00000dc9: JUMP 00000dca: JUMPDEST 00000dcb: POP 00000dcc: PUSH1 0x20 00000dce: DUP3 00000dcf: ADD 00000dd0: MLOAD 00000dd1: DUP2 00000dd2: PUSH1 0x01 00000dd4: ADD 00000dd5: PUSH1 0x00 00000dd7: PUSH2 0x0100 00000dda: EXP 00000ddb: DUP2 00000ddc: SLOAD 00000ddd: DUP2 00000dde: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000df3: MUL 00000df4: NOT 00000df5: AND 00000df6: SWAP1 00000df7: DUP4 00000df8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e0d: AND 00000e0e: MUL 00000e0f: OR 00000e10: SWAP1 00000e11: SSTORE 00000e12: POP 00000e13: PUSH1 0x40 00000e15: DUP3 00000e16: ADD 00000e17: MLOAD 00000e18: DUP2 00000e19: PUSH1 0x02 00000e1b: ADD 00000e1c: PUSH1 0x00 00000e1e: PUSH2 0x0100 00000e21: EXP 00000e22: DUP2 00000e23: SLOAD 00000e24: DUP2 00000e25: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e3a: MUL 00000e3b: NOT 00000e3c: AND 00000e3d: SWAP1 00000e3e: DUP4 00000e3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e54: AND 00000e55: MUL 00000e56: OR 00000e57: SWAP1 00000e58: SSTORE 00000e59: POP 00000e5a: PUSH1 0x60 00000e5c: DUP3 00000e5d: ADD 00000e5e: MLOAD 00000e5f: DUP2 00000e60: PUSH1 0x03 00000e62: ADD 00000e63: SSTORE 00000e64: PUSH1 0x80 00000e66: DUP3 00000e67: ADD 00000e68: MLOAD 00000e69: DUP2 00000e6a: PUSH1 0x04 00000e6c: ADD 00000e6d: SSTORE 00000e6e: SWAP1 00000e6f: POP 00000e70: POP 00000e71: POP 00000e72: POP 00000e73: POP 00000e74: POP 00000e75: POP 00000e76: JUMP 00000e77: JUMPDEST 00000e78: PUSH1 0x02 00000e7a: SLOAD 00000e7b: DUP2 00000e7c: JUMP 00000e7d: JUMPDEST 00000e7e: PUSH1 0x00 00000e80: DUP2 00000e81: DUP2 00000e82: SLOAD 00000e83: DUP2 00000e84: LT 00000e85: PUSH2 0x0e8a 00000e88: JUMPI 00000e89: INVALID 00000e8a: JUMPDEST 00000e8b: SWAP1 00000e8c: PUSH1 0x00 00000e8e: MSTORE 00000e8f: PUSH1 0x20 00000e91: PUSH1 0x00 00000e93: KECCAK256 00000e94: ADD 00000e95: PUSH1 0x00 00000e97: SWAP2 00000e98: POP 00000e99: SLOAD 00000e9a: SWAP1 00000e9b: PUSH2 0x0100 00000e9e: EXP 00000e9f: SWAP1 00000ea0: DIV 00000ea1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000eb6: AND 00000eb7: DUP2 00000eb8: JUMP 00000eb9: JUMPDEST 00000eba: PUSH2 0x0ec1 00000ebd: PUSH2 0x1519 00000ec0: JUMP 00000ec1: JUMPDEST 00000ec2: PUSH1 0x00 00000ec4: PUSH1 0x02 00000ec6: SWAP1 00000ec7: POP 00000ec8: PUSH1 0x00 00000eca: PUSH2 0x0ed2 00000ecd: DUP3 00000ece: PUSH2 0x1953 00000ed1: JUMP 00000ed2: JUMPDEST 00000ed3: SWAP1 00000ed4: POP 00000ed5: PUSH1 0x00 00000ed7: DUP2 00000ed8: EQ 00000ed9: ISZERO 00000eda: PUSH2 0x10b0 00000edd: JUMPI 00000ede: PUSH1 0x60 00000ee0: PUSH1 0x01 00000ee2: PUSH8 0xffffffffffffffff 00000eeb: DUP2 00000eec: GT 00000eed: DUP1 00000eee: ISZERO 00000eef: PUSH2 0x0ef7 00000ef2: JUMPI 00000ef3: PUSH1 0x00 00000ef5: DUP1 00000ef6: REVERT 00000ef7: JUMPDEST 00000ef8: POP 00000ef9: PUSH1 0x40 00000efb: MLOAD 00000efc: SWAP1 00000efd: DUP1 00000efe: DUP3 00000eff: MSTORE 00000f00: DUP1 00000f01: PUSH1 0x20 00000f03: MUL 00000f04: PUSH1 0x20 00000f06: ADD 00000f07: DUP3 00000f08: ADD 00000f09: PUSH1 0x40 00000f0b: MSTORE 00000f0c: DUP1 00000f0d: ISZERO 00000f0e: PUSH2 0x0f26 00000f11: JUMPI 00000f12: DUP2 00000f13: PUSH1 0x20 00000f15: ADD 00000f16: PUSH1 0x20 00000f18: DUP3 00000f19: MUL 00000f1a: DUP1 00000f1b: CALLDATASIZE 00000f1c: DUP4 00000f1d: CALLDATACOPY 00000f1e: DUP1 00000f1f: DUP3 00000f20: ADD 00000f21: SWAP2 00000f22: POP 00000f23: POP 00000f24: SWAP1 00000f25: POP 00000f26: JUMPDEST 00000f27: POP 00000f28: SWAP1 00000f29: POP 00000f2a: CALLER 00000f2b: DUP2 00000f2c: PUSH1 0x00 00000f2e: DUP2 00000f2f: MLOAD 00000f30: DUP2 00000f31: LT 00000f32: PUSH2 0x0f37 00000f35: JUMPI 00000f36: INVALID 00000f37: JUMPDEST 00000f38: PUSH1 0x20 00000f3a: MUL 00000f3b: PUSH1 0x20 00000f3d: ADD 00000f3e: ADD 00000f3f: SWAP1 00000f40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f55: AND 00000f56: SWAP1 00000f57: DUP2 00000f58: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f6d: AND 00000f6e: DUP2 00000f6f: MSTORE 00000f70: POP 00000f71: POP 00000f72: PUSH2 0x0f79 00000f75: PUSH2 0x1b2b 00000f78: JUMP 00000f79: JUMPDEST 00000f7a: PUSH1 0x40 00000f7c: MLOAD 00000f7d: DUP1 00000f7e: PUSH1 0xa0 00000f80: ADD 00000f81: PUSH1 0x40 00000f83: MSTORE 00000f84: DUP1 00000f85: DUP4 00000f86: DUP2 00000f87: MSTORE 00000f88: PUSH1 0x20 00000f8a: ADD 00000f8b: PUSH1 0x00 00000f8d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fa2: AND 00000fa3: DUP2 00000fa4: MSTORE 00000fa5: PUSH1 0x20 00000fa7: ADD 00000fa8: PUSH1 0x00 00000faa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fbf: AND 00000fc0: DUP2 00000fc1: MSTORE 00000fc2: PUSH1 0x20 00000fc4: ADD 00000fc5: PUSH1 0x00 00000fc7: DUP2 00000fc8: MSTORE 00000fc9: PUSH1 0x20 00000fcb: ADD 00000fcc: TIMESTAMP 00000fcd: DUP2 00000fce: MSTORE 00000fcf: POP 00000fd0: SWAP1 00000fd1: POP 00000fd2: DUP1 00000fd3: PUSH1 0x03 00000fd5: PUSH1 0x00 00000fd7: DUP7 00000fd8: DUP2 00000fd9: MSTORE 00000fda: PUSH1 0x20 00000fdc: ADD 00000fdd: SWAP1 00000fde: DUP2 00000fdf: MSTORE 00000fe0: PUSH1 0x20 00000fe2: ADD 00000fe3: PUSH1 0x00 00000fe5: KECCAK256 00000fe6: PUSH1 0x00 00000fe8: DUP3 00000fe9: ADD 00000fea: MLOAD 00000feb: DUP2 00000fec: PUSH1 0x00 00000fee: ADD 00000fef: SWAP1 00000ff0: DUP1 00000ff1: MLOAD 00000ff2: SWAP1 00000ff3: PUSH1 0x20 00000ff5: ADD 00000ff6: SWAP1 00000ff7: PUSH2 0x1001 00000ffa: SWAP3 00000ffb: SWAP2 00000ffc: SWAP1 00000ffd: PUSH2 0x1b86 00001000: JUMP 00001001: JUMPDEST 00001002: POP 00001003: PUSH1 0x20 00001005: DUP3 00001006: ADD 00001007: MLOAD 00001008: DUP2 00001009: PUSH1 0x01 0000100b: ADD 0000100c: PUSH1 0x00 0000100e: PUSH2 0x0100 00001011: EXP 00001012: DUP2 00001013: SLOAD 00001014: DUP2 00001015: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000102a: MUL 0000102b: NOT 0000102c: AND 0000102d: SWAP1 0000102e: DUP4 0000102f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001044: AND 00001045: MUL 00001046: OR 00001047: SWAP1 00001048: SSTORE 00001049: POP 0000104a: PUSH1 0x40 0000104c: DUP3 0000104d: ADD 0000104e: MLOAD 0000104f: DUP2 00001050: PUSH1 0x02 00001052: ADD 00001053: PUSH1 0x00 00001055: PUSH2 0x0100 00001058: EXP 00001059: DUP2 0000105a: SLOAD 0000105b: DUP2 0000105c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001071: MUL 00001072: NOT 00001073: AND 00001074: SWAP1 00001075: DUP4 00001076: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000108b: AND 0000108c: MUL 0000108d: OR 0000108e: SWAP1 0000108f: SSTORE 00001090: POP 00001091: PUSH1 0x60 00001093: DUP3 00001094: ADD 00001095: MLOAD 00001096: DUP2 00001097: PUSH1 0x03 00001099: ADD 0000109a: SSTORE 0000109b: PUSH1 0x80 0000109d: DUP3 0000109e: ADD 0000109f: MLOAD 000010a0: DUP2 000010a1: PUSH1 0x04 000010a3: ADD 000010a4: SSTORE 000010a5: SWAP1 000010a6: POP 000010a7: POP 000010a8: POP 000010a9: POP 000010aa: POP 000010ab: POP 000010ac: PUSH2 0x122e 000010af: JUMP 000010b0: JUMPDEST 000010b1: PUSH1 0x02 000010b3: DUP2 000010b4: EQ 000010b5: ISZERO 000010b6: PUSH2 0x10c0 000010b9: JUMPI 000010ba: POP 000010bb: POP 000010bc: PUSH2 0x122e 000010bf: JUMP 000010c0: JUMPDEST 000010c1: PUSH1 0x00 000010c3: PUSH1 0x03 000010c5: PUSH1 0x00 000010c7: DUP5 000010c8: DUP2 000010c9: MSTORE 000010ca: PUSH1 0x20 000010cc: ADD 000010cd: SWAP1 000010ce: DUP2 000010cf: MSTORE 000010d0: PUSH1 0x20 000010d2: ADD 000010d3: PUSH1 0x00 000010d5: KECCAK256 000010d6: SWAP1 000010d7: POP 000010d8: PUSH1 0x00 000010da: DUP2 000010db: PUSH1 0x04 000010dd: ADD 000010de: DUP2 000010df: SWAP1 000010e0: SSTORE 000010e1: POP 000010e2: PUSH1 0x00 000010e4: ISZERO 000010e5: ISZERO 000010e6: DUP5 000010e7: ISZERO 000010e8: ISZERO 000010e9: EQ 000010ea: ISZERO 000010eb: PUSH2 0x11a0 000010ee: JUMPI 000010ef: DUP6 000010f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001105: AND 00001106: PUSH4 0xa9059cbb 0000110b: CALLER 0000110c: DUP8 0000110d: PUSH1 0x40 0000110f: MLOAD 00001110: DUP4 00001111: PUSH4 0xffffffff 00001116: AND 00001117: PUSH1 0xe0 00001119: SHL 0000111a: DUP2 0000111b: MSTORE 0000111c: PUSH1 0x04 0000111e: ADD 0000111f: DUP1 00001120: DUP4 00001121: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001136: AND 00001137: DUP2 00001138: MSTORE 00001139: PUSH1 0x20 0000113b: ADD 0000113c: DUP3 0000113d: DUP2 0000113e: MSTORE 0000113f: PUSH1 0x20 00001141: ADD 00001142: SWAP3 00001143: POP 00001144: POP 00001145: POP 00001146: PUSH1 0x20 00001148: PUSH1 0x40 0000114a: MLOAD 0000114b: DUP1 0000114c: DUP4 0000114d: SUB 0000114e: DUP2 0000114f: PUSH1 0x00 00001151: DUP8 00001152: DUP1 00001153: EXTCODESIZE 00001154: ISZERO 00001155: DUP1 00001156: ISZERO 00001157: PUSH2 0x115f 0000115a: JUMPI 0000115b: PUSH1 0x00 0000115d: DUP1 0000115e: REVERT 0000115f: JUMPDEST 00001160: POP 00001161: GAS 00001162: CALL 00001163: ISZERO 00001164: DUP1 00001165: ISZERO 00001166: PUSH2 0x1173 00001169: JUMPI 0000116a: RETURNDATASIZE 0000116b: PUSH1 0x00 0000116d: DUP1 0000116e: RETURNDATACOPY 0000116f: RETURNDATASIZE 00001170: PUSH1 0x00 00001172: REVERT 00001173: JUMPDEST 00001174: POP 00001175: POP 00001176: POP 00001177: POP 00001178: PUSH1 0x40 0000117a: MLOAD 0000117b: RETURNDATASIZE 0000117c: PUSH1 0x20 0000117e: DUP2 0000117f: LT 00001180: ISZERO 00001181: PUSH2 0x1189 00001184: JUMPI 00001185: PUSH1 0x00 00001187: DUP1 00001188: REVERT 00001189: JUMPDEST 0000118a: DUP2 0000118b: ADD 0000118c: SWAP1 0000118d: DUP1 0000118e: DUP1 0000118f: MLOAD 00001190: SWAP1 00001191: PUSH1 0x20 00001193: ADD 00001194: SWAP1 00001195: SWAP3 00001196: SWAP2 00001197: SWAP1 00001198: POP 00001199: POP 0000119a: POP 0000119b: POP 0000119c: PUSH2 0x122a 0000119f: JUMP 000011a0: JUMPDEST 000011a1: DUP6 000011a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011b7: AND 000011b8: PUSH4 0xa9059cbb 000011bd: CALLER 000011be: DUP8 000011bf: PUSH1 0x40 000011c1: MLOAD 000011c2: DUP4 000011c3: PUSH4 0xffffffff 000011c8: AND 000011c9: PUSH1 0xe0 000011cb: SHL 000011cc: DUP2 000011cd: MSTORE 000011ce: PUSH1 0x04 000011d0: ADD 000011d1: DUP1 000011d2: DUP4 000011d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011e8: AND 000011e9: DUP2 000011ea: MSTORE 000011eb: PUSH1 0x20 000011ed: ADD 000011ee: DUP3 000011ef: DUP2 000011f0: MSTORE 000011f1: PUSH1 0x20 000011f3: ADD 000011f4: SWAP3 000011f5: POP 000011f6: POP 000011f7: POP 000011f8: PUSH1 0x00 000011fa: PUSH1 0x40 000011fc: MLOAD 000011fd: DUP1 000011fe: DUP4 000011ff: SUB 00001200: DUP2 00001201: PUSH1 0x00 00001203: DUP8 00001204: DUP1 00001205: EXTCODESIZE 00001206: ISZERO 00001207: DUP1 00001208: ISZERO 00001209: PUSH2 0x1211 0000120c: JUMPI 0000120d: PUSH1 0x00 0000120f: DUP1 00001210: REVERT 00001211: JUMPDEST 00001212: POP 00001213: GAS 00001214: CALL 00001215: ISZERO 00001216: DUP1 00001217: ISZERO 00001218: PUSH2 0x1225 0000121b: JUMPI 0000121c: RETURNDATASIZE 0000121d: PUSH1 0x00 0000121f: DUP1 00001220: RETURNDATACOPY 00001221: RETURNDATASIZE 00001222: PUSH1 0x00 00001224: REVERT 00001225: JUMPDEST 00001226: POP 00001227: POP 00001228: POP 00001229: POP 0000122a: JUMPDEST 0000122b: POP 0000122c: POP 0000122d: POP 0000122e: JUMPDEST 0000122f: POP 00001230: POP 00001231: POP 00001232: JUMP 00001233: JUMPDEST 00001234: PUSH2 0x123b 00001237: PUSH2 0x1519 0000123a: JUMP 0000123b: JUMPDEST 0000123c: PUSH1 0x00 0000123e: PUSH1 0x03 00001240: SWAP1 00001241: POP 00001242: PUSH1 0x00 00001244: PUSH2 0x124c 00001247: DUP3 00001248: PUSH2 0x1953 0000124b: JUMP 0000124c: JUMPDEST 0000124d: SWAP1 0000124e: POP 0000124f: PUSH1 0x00 00001251: DUP2 00001252: EQ 00001253: ISZERO 00001254: PUSH2 0x142a 00001257: JUMPI 00001258: PUSH1 0x60 0000125a: PUSH1 0x01 0000125c: PUSH8 0xffffffffffffffff 00001265: DUP2 00001266: GT 00001267: DUP1 00001268: ISZERO 00001269: PUSH2 0x1271 0000126c: JUMPI 0000126d: PUSH1 0x00 0000126f: DUP1 00001270: REVERT 00001271: JUMPDEST 00001272: POP 00001273: PUSH1 0x40 00001275: MLOAD 00001276: SWAP1 00001277: DUP1 00001278: DUP3 00001279: MSTORE 0000127a: DUP1 0000127b: PUSH1 0x20 0000127d: MUL 0000127e: PUSH1 0x20 00001280: ADD 00001281: DUP3 00001282: ADD 00001283: PUSH1 0x40 00001285: MSTORE 00001286: DUP1 00001287: ISZERO 00001288: PUSH2 0x12a0 0000128b: JUMPI 0000128c: DUP2 0000128d: PUSH1 0x20 0000128f: ADD 00001290: PUSH1 0x20 00001292: DUP3 00001293: MUL 00001294: DUP1 00001295: CALLDATASIZE 00001296: DUP4 00001297: CALLDATACOPY 00001298: DUP1 00001299: DUP3 0000129a: ADD 0000129b: SWAP2 0000129c: POP 0000129d: POP 0000129e: SWAP1 0000129f: POP 000012a0: JUMPDEST 000012a1: POP 000012a2: SWAP1 000012a3: POP 000012a4: CALLER 000012a5: DUP2 000012a6: PUSH1 0x00 000012a8: DUP2 000012a9: MLOAD 000012aa: DUP2 000012ab: LT 000012ac: PUSH2 0x12b1 000012af: JUMPI 000012b0: INVALID 000012b1: JUMPDEST 000012b2: PUSH1 0x20 000012b4: MUL 000012b5: PUSH1 0x20 000012b7: ADD 000012b8: ADD 000012b9: SWAP1 000012ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012cf: AND 000012d0: SWAP1 000012d1: DUP2 000012d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012e7: AND 000012e8: DUP2 000012e9: MSTORE 000012ea: POP 000012eb: POP 000012ec: PUSH2 0x12f3 000012ef: PUSH2 0x1b2b 000012f2: JUMP 000012f3: JUMPDEST 000012f4: PUSH1 0x40 000012f6: MLOAD 000012f7: DUP1 000012f8: PUSH1 0xa0 000012fa: ADD 000012fb: PUSH1 0x40 000012fd: MSTORE 000012fe: DUP1 000012ff: DUP4 00001300: DUP2 00001301: MSTORE 00001302: PUSH1 0x20 00001304: ADD 00001305: PUSH1 0x00 00001307: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000131c: AND 0000131d: DUP2 0000131e: MSTORE 0000131f: PUSH1 0x20 00001321: ADD 00001322: PUSH1 0x00 00001324: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001339: AND 0000133a: DUP2 0000133b: MSTORE 0000133c: PUSH1 0x20 0000133e: ADD 0000133f: PUSH1 0x00 00001341: DUP2 00001342: MSTORE 00001343: PUSH1 0x20 00001345: ADD 00001346: TIMESTAMP 00001347: DUP2 00001348: MSTORE 00001349: POP 0000134a: SWAP1 0000134b: POP 0000134c: DUP1 0000134d: PUSH1 0x03 0000134f: PUSH1 0x00 00001351: DUP7 00001352: DUP2 00001353: MSTORE 00001354: PUSH1 0x20 00001356: ADD 00001357: SWAP1 00001358: DUP2 00001359: MSTORE 0000135a: PUSH1 0x20 0000135c: ADD 0000135d: PUSH1 0x00 0000135f: KECCAK256 00001360: PUSH1 0x00 00001362: DUP3 00001363: ADD 00001364: MLOAD 00001365: DUP2 00001366: PUSH1 0x00 00001368: ADD 00001369: SWAP1 0000136a: DUP1 0000136b: MLOAD 0000136c: SWAP1 0000136d: PUSH1 0x20 0000136f: ADD 00001370: SWAP1 00001371: PUSH2 0x137b 00001374: SWAP3 00001375: SWAP2 00001376: SWAP1 00001377: PUSH2 0x1b86 0000137a: JUMP 0000137b: JUMPDEST 0000137c: POP 0000137d: PUSH1 0x20 0000137f: DUP3 00001380: ADD 00001381: MLOAD 00001382: DUP2 00001383: PUSH1 0x01 00001385: ADD 00001386: PUSH1 0x00 00001388: PUSH2 0x0100 0000138b: EXP 0000138c: DUP2 0000138d: SLOAD 0000138e: DUP2 0000138f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013a4: MUL 000013a5: NOT 000013a6: AND 000013a7: SWAP1 000013a8: DUP4 000013a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013be: AND 000013bf: MUL 000013c0: OR 000013c1: SWAP1 000013c2: SSTORE 000013c3: POP 000013c4: PUSH1 0x40 000013c6: DUP3 000013c7: ADD 000013c8: MLOAD 000013c9: DUP2 000013ca: PUSH1 0x02 000013cc: ADD 000013cd: PUSH1 0x00 000013cf: PUSH2 0x0100 000013d2: EXP 000013d3: DUP2 000013d4: SLOAD 000013d5: DUP2 000013d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013eb: MUL 000013ec: NOT 000013ed: AND 000013ee: SWAP1 000013ef: DUP4 000013f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001405: AND 00001406: MUL 00001407: OR 00001408: SWAP1 00001409: SSTORE 0000140a: POP 0000140b: PUSH1 0x60 0000140d: DUP3 0000140e: ADD 0000140f: MLOAD 00001410: DUP2 00001411: PUSH1 0x03 00001413: ADD 00001414: SSTORE 00001415: PUSH1 0x80 00001417: DUP3 00001418: ADD 00001419: MLOAD 0000141a: DUP2 0000141b: PUSH1 0x04 0000141d: ADD 0000141e: SSTORE 0000141f: SWAP1 00001420: POP 00001421: POP 00001422: POP 00001423: POP 00001424: POP 00001425: POP 00001426: PUSH2 0x14a6 00001429: JUMP 0000142a: JUMPDEST 0000142b: PUSH1 0x02 0000142d: DUP2 0000142e: EQ 0000142f: ISZERO 00001430: PUSH2 0x143a 00001433: JUMPI 00001434: POP 00001435: POP 00001436: PUSH2 0x14a6 00001439: JUMP 0000143a: JUMPDEST 0000143b: PUSH1 0x00 0000143d: PUSH1 0x03 0000143f: PUSH1 0x00 00001441: DUP5 00001442: DUP2 00001443: MSTORE 00001444: PUSH1 0x20 00001446: ADD 00001447: SWAP1 00001448: DUP2 00001449: MSTORE 0000144a: PUSH1 0x20 0000144c: ADD 0000144d: PUSH1 0x00 0000144f: KECCAK256 00001450: SWAP1 00001451: POP 00001452: PUSH1 0x00 00001454: DUP2 00001455: PUSH1 0x04 00001457: ADD 00001458: DUP2 00001459: SWAP1 0000145a: SSTORE 0000145b: POP 0000145c: CALLER 0000145d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001472: AND 00001473: PUSH2 0x08fc 00001476: DUP6 00001477: SWAP1 00001478: DUP2 00001479: ISZERO 0000147a: MUL 0000147b: SWAP1 0000147c: PUSH1 0x40 0000147e: MLOAD 0000147f: PUSH1 0x00 00001481: PUSH1 0x40 00001483: MLOAD 00001484: DUP1 00001485: DUP4 00001486: SUB 00001487: DUP2 00001488: DUP6 00001489: DUP9 0000148a: DUP9 0000148b: CALL 0000148c: SWAP4 0000148d: POP 0000148e: POP 0000148f: POP 00001490: POP 00001491: ISZERO 00001492: DUP1 00001493: ISZERO 00001494: PUSH2 0x14a1 00001497: JUMPI 00001498: RETURNDATASIZE 00001499: PUSH1 0x00 0000149b: DUP1 0000149c: RETURNDATACOPY 0000149d: RETURNDATASIZE 0000149e: PUSH1 0x00 000014a0: REVERT 000014a1: JUMPDEST 000014a2: POP 000014a3: POP 000014a4: POP 000014a5: POP 000014a6: JUMPDEST 000014a7: POP 000014a8: JUMP 000014a9: JUMPDEST 000014aa: PUSH1 0x03 000014ac: PUSH1 0x20 000014ae: MSTORE 000014af: DUP1 000014b0: PUSH1 0x00 000014b2: MSTORE 000014b3: PUSH1 0x40 000014b5: PUSH1 0x00 000014b7: KECCAK256 000014b8: PUSH1 0x00 000014ba: SWAP2 000014bb: POP 000014bc: SWAP1 000014bd: POP 000014be: DUP1 000014bf: PUSH1 0x01 000014c1: ADD 000014c2: PUSH1 0x00 000014c4: SWAP1 000014c5: SLOAD 000014c6: SWAP1 000014c7: PUSH2 0x0100 000014ca: EXP 000014cb: SWAP1 000014cc: DIV 000014cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014e2: AND 000014e3: SWAP1 000014e4: DUP1 000014e5: PUSH1 0x02 000014e7: ADD 000014e8: PUSH1 0x00 000014ea: SWAP1 000014eb: SLOAD 000014ec: SWAP1 000014ed: PUSH2 0x0100 000014f0: EXP 000014f1: SWAP1 000014f2: DIV 000014f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001508: AND 00001509: SWAP1 0000150a: DUP1 0000150b: PUSH1 0x03 0000150d: ADD 0000150e: SLOAD 0000150f: SWAP1 00001510: DUP1 00001511: PUSH1 0x04 00001513: ADD 00001514: SLOAD 00001515: SWAP1 00001516: POP 00001517: DUP5 00001518: JUMP 00001519: JUMPDEST 0000151a: PUSH1 0x00 0000151c: DUP1 0000151d: JUMPDEST 0000151e: PUSH1 0x00 00001520: DUP1 00001521: SLOAD 00001522: SWAP1 00001523: POP 00001524: DUP2 00001525: LT 00001526: ISZERO 00001527: PUSH2 0x15ab 0000152a: JUMPI 0000152b: PUSH1 0x00 0000152d: DUP2 0000152e: DUP2 0000152f: SLOAD 00001530: DUP2 00001531: LT 00001532: PUSH2 0x1537 00001535: JUMPI 00001536: INVALID 00001537: JUMPDEST 00001538: SWAP1 00001539: PUSH1 0x00 0000153b: MSTORE 0000153c: PUSH1 0x20 0000153e: PUSH1 0x00 00001540: KECCAK256 00001541: ADD 00001542: PUSH1 0x00 00001544: SWAP1 00001545: SLOAD 00001546: SWAP1 00001547: PUSH2 0x0100 0000154a: EXP 0000154b: SWAP1 0000154c: DIV 0000154d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001562: AND 00001563: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001578: AND 00001579: CALLER 0000157a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000158f: AND 00001590: EQ 00001591: ISZERO 00001592: PUSH2 0x159e 00001595: JUMPI 00001596: PUSH1 0x01 00001598: SWAP2 00001599: POP 0000159a: PUSH2 0x15ab 0000159d: JUMP 0000159e: JUMPDEST 0000159f: DUP1 000015a0: DUP1 000015a1: PUSH1 0x01 000015a3: ADD 000015a4: SWAP2 000015a5: POP 000015a6: POP 000015a7: PUSH2 0x151d 000015aa: JUMP 000015ab: JUMPDEST 000015ac: POP 000015ad: PUSH1 0x01 000015af: ISZERO 000015b0: ISZERO 000015b1: DUP2 000015b2: ISZERO 000015b3: ISZERO 000015b4: EQ 000015b5: PUSH2 0x1626 000015b8: JUMPI 000015b9: PUSH1 0x40 000015bb: MLOAD 000015bc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000015dd: DUP2 000015de: MSTORE 000015df: PUSH1 0x04 000015e1: ADD 000015e2: DUP1 000015e3: DUP1 000015e4: PUSH1 0x20 000015e6: ADD 000015e7: DUP3 000015e8: DUP2 000015e9: SUB 000015ea: DUP3 000015eb: MSTORE 000015ec: PUSH1 0x18 000015ee: DUP2 000015ef: MSTORE 000015f0: PUSH1 0x20 000015f2: ADD 000015f3: DUP1 000015f4: PUSH32 0x4e6f7420616e20617574686f72697a6564207369676e65720000000000000000 00001615: DUP2 00001616: MSTORE 00001617: POP 00001618: PUSH1 0x20 0000161a: ADD 0000161b: SWAP2 0000161c: POP 0000161d: POP 0000161e: PUSH1 0x40 00001620: MLOAD 00001621: DUP1 00001622: SWAP2 00001623: SUB 00001624: SWAP1 00001625: REVERT 00001626: JUMPDEST 00001627: POP 00001628: JUMP 00001629: JUMPDEST 0000162a: PUSH2 0x1631 0000162d: PUSH2 0x1b2b 00001630: JUMP 00001631: JUMPDEST 00001632: PUSH1 0x03 00001634: PUSH1 0x00 00001636: DUP4 00001637: DUP2 00001638: MSTORE 00001639: PUSH1 0x20 0000163b: ADD 0000163c: SWAP1 0000163d: DUP2 0000163e: MSTORE 0000163f: PUSH1 0x20 00001641: ADD 00001642: PUSH1 0x00 00001644: KECCAK256 00001645: PUSH1 0x40 00001647: MLOAD 00001648: DUP1 00001649: PUSH1 0xa0 0000164b: ADD 0000164c: PUSH1 0x40 0000164e: MSTORE 0000164f: SWAP1 00001650: DUP2 00001651: PUSH1 0x00 00001653: DUP3 00001654: ADD 00001655: DUP1 00001656: SLOAD 00001657: DUP1 00001658: PUSH1 0x20 0000165a: MUL 0000165b: PUSH1 0x20 0000165d: ADD 0000165e: PUSH1 0x40 00001660: MLOAD 00001661: SWAP1 00001662: DUP2 00001663: ADD 00001664: PUSH1 0x40 00001666: MSTORE 00001667: DUP1 00001668: SWAP3 00001669: SWAP2 0000166a: SWAP1 0000166b: DUP2 0000166c: DUP2 0000166d: MSTORE 0000166e: PUSH1 0x20 00001670: ADD 00001671: DUP3 00001672: DUP1 00001673: SLOAD 00001674: DUP1 00001675: ISZERO 00001676: PUSH2 0x16d4 00001679: JUMPI 0000167a: PUSH1 0x20 0000167c: MUL 0000167d: DUP3 0000167e: ADD 0000167f: SWAP2 00001680: SWAP1 00001681: PUSH1 0x00 00001683: MSTORE 00001684: PUSH1 0x20 00001686: PUSH1 0x00 00001688: KECCAK256 00001689: SWAP1 0000168a: JUMPDEST 0000168b: DUP2 0000168c: PUSH1 0x00 0000168e: SWAP1 0000168f: SLOAD 00001690: SWAP1 00001691: PUSH2 0x0100 00001694: EXP 00001695: SWAP1 00001696: DIV 00001697: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016ac: AND 000016ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016c2: AND 000016c3: DUP2 000016c4: MSTORE 000016c5: PUSH1 0x20 000016c7: ADD 000016c8: SWAP1 000016c9: PUSH1 0x01 000016cb: ADD 000016cc: SWAP1 000016cd: DUP1 000016ce: DUP4 000016cf: GT 000016d0: PUSH2 0x168a 000016d3: JUMPI 000016d4: JUMPDEST 000016d5: POP 000016d6: POP 000016d7: POP 000016d8: POP 000016d9: POP 000016da: DUP2 000016db: MSTORE 000016dc: PUSH1 0x20 000016de: ADD 000016df: PUSH1 0x01 000016e1: DUP3 000016e2: ADD 000016e3: PUSH1 0x00 000016e5: SWAP1 000016e6: SLOAD 000016e7: SWAP1 000016e8: PUSH2 0x0100 000016eb: EXP 000016ec: SWAP1 000016ed: DIV 000016ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001703: AND 00001704: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001719: AND 0000171a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000172f: AND 00001730: DUP2 00001731: MSTORE 00001732: PUSH1 0x20 00001734: ADD 00001735: PUSH1 0x02 00001737: DUP3 00001738: ADD 00001739: PUSH1 0x00 0000173b: SWAP1 0000173c: SLOAD 0000173d: SWAP1 0000173e: PUSH2 0x0100 00001741: EXP 00001742: SWAP1 00001743: DIV 00001744: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001759: AND 0000175a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000176f: AND 00001770: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001785: AND 00001786: DUP2 00001787: MSTORE 00001788: PUSH1 0x20 0000178a: ADD 0000178b: PUSH1 0x03 0000178d: DUP3 0000178e: ADD 0000178f: SLOAD 00001790: DUP2 00001791: MSTORE 00001792: PUSH1 0x20 00001794: ADD 00001795: PUSH1 0x04 00001797: DUP3 00001798: ADD 00001799: SLOAD 0000179a: DUP2 0000179b: MSTORE 0000179c: POP 0000179d: POP 0000179e: SWAP1 0000179f: POP 000017a0: PUSH1 0x02 000017a2: SLOAD 000017a3: DUP2 000017a4: PUSH1 0x80 000017a6: ADD 000017a7: MLOAD 000017a8: TIMESTAMP 000017a9: SUB 000017aa: GT 000017ab: ISZERO 000017ac: PUSH2 0x1800 000017af: JUMPI 000017b0: PUSH1 0x40 000017b2: MLOAD 000017b3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000017d4: DUP2 000017d5: MSTORE 000017d6: PUSH1 0x04 000017d8: ADD 000017d9: DUP1 000017da: DUP1 000017db: PUSH1 0x20 000017dd: ADD 000017de: DUP3 000017df: DUP2 000017e0: SUB 000017e1: DUP3 000017e2: MSTORE 000017e3: PUSH1 0x24 000017e5: DUP2 000017e6: MSTORE 000017e7: PUSH1 0x20 000017e9: ADD 000017ea: DUP1 000017eb: PUSH2 0x1c5f 000017ee: PUSH1 0x24 000017f0: SWAP2 000017f1: CODECOPY 000017f2: PUSH1 0x40 000017f4: ADD 000017f5: SWAP2 000017f6: POP 000017f7: POP 000017f8: PUSH1 0x40 000017fa: MLOAD 000017fb: DUP1 000017fc: SWAP2 000017fd: SUB 000017fe: SWAP1 000017ff: REVERT 00001800: JUMPDEST 00001801: PUSH1 0x01 00001803: SLOAD 00001804: DUP2 00001805: PUSH1 0x80 00001807: ADD 00001808: MLOAD 00001809: TIMESTAMP 0000180a: SUB 0000180b: LT 0000180c: ISZERO 0000180d: PUSH2 0x1861 00001810: JUMPI 00001811: PUSH1 0x40 00001813: MLOAD 00001814: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001835: DUP2 00001836: MSTORE 00001837: PUSH1 0x04 00001839: ADD 0000183a: DUP1 0000183b: DUP1 0000183c: PUSH1 0x20 0000183e: ADD 0000183f: DUP3 00001840: DUP2 00001841: SUB 00001842: DUP3 00001843: MSTORE 00001844: PUSH1 0x21 00001846: DUP2 00001847: MSTORE 00001848: PUSH1 0x20 0000184a: ADD 0000184b: DUP1 0000184c: PUSH2 0x1c83 0000184f: PUSH1 0x21 00001851: SWAP2 00001852: CODECOPY 00001853: PUSH1 0x40 00001855: ADD 00001856: SWAP2 00001857: POP 00001858: POP 00001859: PUSH1 0x40 0000185b: MLOAD 0000185c: DUP1 0000185d: SWAP2 0000185e: SUB 0000185f: SWAP1 00001860: REVERT 00001861: JUMPDEST 00001862: PUSH1 0x00 00001864: DUP1 00001865: JUMPDEST 00001866: DUP3 00001867: PUSH1 0x00 00001869: ADD 0000186a: MLOAD 0000186b: MLOAD 0000186c: DUP2 0000186d: LT 0000186e: ISZERO 0000186f: PUSH2 0x18d3 00001872: JUMPI 00001873: DUP3 00001874: PUSH1 0x00 00001876: ADD 00001877: MLOAD 00001878: DUP2 00001879: DUP2 0000187a: MLOAD 0000187b: DUP2 0000187c: LT 0000187d: PUSH2 0x1882 00001880: JUMPI 00001881: INVALID 00001882: JUMPDEST 00001883: PUSH1 0x20 00001885: MUL 00001886: PUSH1 0x20 00001888: ADD 00001889: ADD 0000188a: MLOAD 0000188b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018a0: AND 000018a1: CALLER 000018a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018b7: AND 000018b8: EQ 000018b9: ISZERO 000018ba: PUSH2 0x18c6 000018bd: JUMPI 000018be: PUSH1 0x01 000018c0: SWAP2 000018c1: POP 000018c2: PUSH2 0x18d3 000018c5: JUMP 000018c6: JUMPDEST 000018c7: DUP1 000018c8: DUP1 000018c9: PUSH1 0x01 000018cb: ADD 000018cc: SWAP2 000018cd: POP 000018ce: POP 000018cf: PUSH2 0x1865 000018d2: JUMP 000018d3: JUMPDEST 000018d4: POP 000018d5: PUSH1 0x01 000018d7: ISZERO 000018d8: ISZERO 000018d9: DUP2 000018da: ISZERO 000018db: ISZERO 000018dc: EQ 000018dd: PUSH2 0x194e 000018e0: JUMPI 000018e1: PUSH1 0x40 000018e3: MLOAD 000018e4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001905: DUP2 00001906: MSTORE 00001907: PUSH1 0x04 00001909: ADD 0000190a: DUP1 0000190b: DUP1 0000190c: PUSH1 0x20 0000190e: ADD 0000190f: DUP3 00001910: DUP2 00001911: SUB 00001912: DUP3 00001913: MSTORE 00001914: PUSH1 0x16 00001916: DUP2 00001917: MSTORE 00001918: PUSH1 0x20 0000191a: ADD 0000191b: DUP1 0000191c: PUSH32 0x4e6f74206f6e65206f6620746865207369676e65727300000000000000000000 0000193d: DUP2 0000193e: MSTORE 0000193f: POP 00001940: PUSH1 0x20 00001942: ADD 00001943: SWAP2 00001944: POP 00001945: POP 00001946: PUSH1 0x40 00001948: MLOAD 00001949: DUP1 0000194a: SWAP2 0000194b: SUB 0000194c: SWAP1 0000194d: REVERT 0000194e: JUMPDEST 0000194f: POP 00001950: POP 00001951: POP 00001952: JUMP 00001953: JUMPDEST 00001954: PUSH1 0x00 00001956: PUSH1 0x01 00001958: PUSH1 0x00 0000195a: DUP1 0000195b: SLOAD 0000195c: SWAP1 0000195d: POP 0000195e: EQ 0000195f: ISZERO 00001960: PUSH2 0x196c 00001963: JUMPI 00001964: PUSH1 0x01 00001966: SWAP1 00001967: POP 00001968: PUSH2 0x1b26 0000196b: JUMP 0000196c: JUMPDEST 0000196d: PUSH1 0x00 0000196f: PUSH1 0x03 00001971: PUSH1 0x00 00001973: DUP5 00001974: DUP2 00001975: MSTORE 00001976: PUSH1 0x20 00001978: ADD 00001979: SWAP1 0000197a: DUP2 0000197b: MSTORE 0000197c: PUSH1 0x20 0000197e: ADD 0000197f: PUSH1 0x00 00001981: KECCAK256 00001982: SWAP1 00001983: POP 00001984: PUSH1 0x01 00001986: SLOAD 00001987: DUP2 00001988: PUSH1 0x04 0000198a: ADD 0000198b: SLOAD 0000198c: TIMESTAMP 0000198d: SUB 0000198e: GT 0000198f: ISZERO 00001990: PUSH2 0x199d 00001993: JUMPI 00001994: PUSH1 0x00 00001996: SWAP2 00001997: POP 00001998: POP 00001999: PUSH2 0x1b26 0000199c: JUMP 0000199d: JUMPDEST 0000199e: PUSH1 0x00 000019a0: DUP1 000019a1: JUMPDEST 000019a2: DUP3 000019a3: PUSH1 0x00 000019a5: ADD 000019a6: DUP1 000019a7: SLOAD 000019a8: SWAP1 000019a9: POP 000019aa: DUP2 000019ab: LT 000019ac: ISZERO 000019ad: PUSH2 0x1a33 000019b0: JUMPI 000019b1: DUP3 000019b2: PUSH1 0x00 000019b4: ADD 000019b5: DUP2 000019b6: DUP2 000019b7: SLOAD 000019b8: DUP2 000019b9: LT 000019ba: PUSH2 0x19bf 000019bd: JUMPI 000019be: INVALID 000019bf: JUMPDEST 000019c0: SWAP1 000019c1: PUSH1 0x00 000019c3: MSTORE 000019c4: PUSH1 0x20 000019c6: PUSH1 0x00 000019c8: KECCAK256 000019c9: ADD 000019ca: PUSH1 0x00 000019cc: SWAP1 000019cd: SLOAD 000019ce: SWAP1 000019cf: PUSH2 0x0100 000019d2: EXP 000019d3: SWAP1 000019d4: DIV 000019d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019ea: AND 000019eb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a00: AND 00001a01: CALLER 00001a02: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a17: AND 00001a18: EQ 00001a19: ISZERO 00001a1a: PUSH2 0x1a26 00001a1d: JUMPI 00001a1e: PUSH1 0x01 00001a20: SWAP2 00001a21: POP 00001a22: PUSH2 0x1a33 00001a25: JUMP 00001a26: JUMPDEST 00001a27: DUP1 00001a28: DUP1 00001a29: PUSH1 0x01 00001a2b: ADD 00001a2c: SWAP2 00001a2d: POP 00001a2e: POP 00001a2f: PUSH2 0x19a1 00001a32: JUMP 00001a33: JUMPDEST 00001a34: POP 00001a35: PUSH1 0x00 00001a37: ISZERO 00001a38: ISZERO 00001a39: DUP2 00001a3a: ISZERO 00001a3b: ISZERO 00001a3c: EQ 00001a3d: PUSH2 0x1a91 00001a40: JUMPI 00001a41: PUSH1 0x40 00001a43: MLOAD 00001a44: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001a65: DUP2 00001a66: MSTORE 00001a67: PUSH1 0x04 00001a69: ADD 00001a6a: DUP1 00001a6b: DUP1 00001a6c: PUSH1 0x20 00001a6e: ADD 00001a6f: DUP3 00001a70: DUP2 00001a71: SUB 00001a72: DUP3 00001a73: MSTORE 00001a74: PUSH1 0x31 00001a76: DUP2 00001a77: MSTORE 00001a78: PUSH1 0x20 00001a7a: ADD 00001a7b: DUP1 00001a7c: PUSH2 0x1c2e 00001a7f: PUSH1 0x31 00001a81: SWAP2 00001a82: CODECOPY 00001a83: PUSH1 0x40 00001a85: ADD 00001a86: SWAP2 00001a87: POP 00001a88: POP 00001a89: PUSH1 0x40 00001a8b: MLOAD 00001a8c: DUP1 00001a8d: SWAP2 00001a8e: SUB 00001a8f: SWAP1 00001a90: REVERT 00001a91: JUMPDEST 00001a92: DUP2 00001a93: PUSH1 0x00 00001a95: ADD 00001a96: CALLER 00001a97: SWAP1 00001a98: DUP1 00001a99: PUSH1 0x01 00001a9b: DUP2 00001a9c: SLOAD 00001a9d: ADD 00001a9e: DUP1 00001a9f: DUP3 00001aa0: SSTORE 00001aa1: DUP1 00001aa2: SWAP2 00001aa3: POP 00001aa4: POP 00001aa5: PUSH1 0x01 00001aa7: SWAP1 00001aa8: SUB 00001aa9: SWAP1 00001aaa: PUSH1 0x00 00001aac: MSTORE 00001aad: PUSH1 0x20 00001aaf: PUSH1 0x00 00001ab1: KECCAK256 00001ab2: ADD 00001ab3: PUSH1 0x00 00001ab5: SWAP1 00001ab6: SWAP2 00001ab7: SWAP1 00001ab8: SWAP2 00001ab9: SWAP1 00001aba: SWAP2 00001abb: PUSH2 0x0100 00001abe: EXP 00001abf: DUP2 00001ac0: SLOAD 00001ac1: DUP2 00001ac2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ad7: MUL 00001ad8: NOT 00001ad9: AND 00001ada: SWAP1 00001adb: DUP4 00001adc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001af1: AND 00001af2: MUL 00001af3: OR 00001af4: SWAP1 00001af5: SSTORE 00001af6: POP 00001af7: PUSH1 0x02 00001af9: PUSH1 0x00 00001afb: DUP1 00001afc: SLOAD 00001afd: SWAP1 00001afe: POP 00001aff: DUP2 00001b00: PUSH2 0x1b05 00001b03: JUMPI 00001b04: INVALID 00001b05: JUMPDEST 00001b06: DIV 00001b07: DUP3 00001b08: PUSH1 0x00 00001b0a: ADD 00001b0b: DUP1 00001b0c: SLOAD 00001b0d: SWAP1 00001b0e: POP 00001b0f: GT 00001b10: ISZERO 00001b11: PUSH2 0x1b1f 00001b14: JUMPI 00001b15: PUSH1 0x01 00001b17: SWAP3 00001b18: POP 00001b19: POP 00001b1a: POP 00001b1b: PUSH2 0x1b26 00001b1e: JUMP 00001b1f: JUMPDEST 00001b20: PUSH1 0x02 00001b22: SWAP3 00001b23: POP 00001b24: POP 00001b25: POP 00001b26: JUMPDEST 00001b27: SWAP2 00001b28: SWAP1 00001b29: POP 00001b2a: JUMP 00001b2b: JUMPDEST 00001b2c: PUSH1 0x40 00001b2e: MLOAD 00001b2f: DUP1 00001b30: PUSH1 0xa0 00001b32: ADD 00001b33: PUSH1 0x40 00001b35: MSTORE 00001b36: DUP1 00001b37: PUSH1 0x60 00001b39: DUP2 00001b3a: MSTORE 00001b3b: PUSH1 0x20 00001b3d: ADD 00001b3e: PUSH1 0x00 00001b40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b55: AND 00001b56: DUP2 00001b57: MSTORE 00001b58: PUSH1 0x20 00001b5a: ADD 00001b5b: PUSH1 0x00 00001b5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b72: AND 00001b73: DUP2 00001b74: MSTORE 00001b75: PUSH1 0x20 00001b77: ADD 00001b78: PUSH1 0x00 00001b7a: DUP2 00001b7b: MSTORE 00001b7c: PUSH1 0x20 00001b7e: ADD 00001b7f: PUSH1 0x00 00001b81: DUP2 00001b82: MSTORE 00001b83: POP 00001b84: SWAP1 00001b85: JUMP 00001b86: JUMPDEST 00001b87: DUP3 00001b88: DUP1 00001b89: SLOAD 00001b8a: DUP3 00001b8b: DUP3 00001b8c: SSTORE 00001b8d: SWAP1 00001b8e: PUSH1 0x00 00001b90: MSTORE 00001b91: PUSH1 0x20 00001b93: PUSH1 0x00 00001b95: KECCAK256 00001b96: SWAP1 00001b97: DUP2 00001b98: ADD 00001b99: SWAP3 00001b9a: DUP3 00001b9b: ISZERO 00001b9c: PUSH2 0x1bff 00001b9f: JUMPI 00001ba0: SWAP2 00001ba1: PUSH1 0x20 00001ba3: MUL 00001ba4: DUP3 00001ba5: ADD 00001ba6: JUMPDEST 00001ba7: DUP3 00001ba8: DUP2 00001ba9: GT 00001baa: ISZERO 00001bab: PUSH2 0x1bfe 00001bae: JUMPI 00001baf: DUP3 00001bb0: MLOAD 00001bb1: DUP3 00001bb2: PUSH1 0x00 00001bb4: PUSH2 0x0100 00001bb7: EXP 00001bb8: DUP2 00001bb9: SLOAD 00001bba: DUP2 00001bbb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bd0: MUL 00001bd1: NOT 00001bd2: AND 00001bd3: SWAP1 00001bd4: DUP4 00001bd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bea: AND 00001beb: MUL 00001bec: OR 00001bed: SWAP1 00001bee: SSTORE 00001bef: POP 00001bf0: SWAP2 00001bf1: PUSH1 0x20 00001bf3: ADD 00001bf4: SWAP2 00001bf5: SWAP1 00001bf6: PUSH1 0x01 00001bf8: ADD 00001bf9: SWAP1 00001bfa: PUSH2 0x1ba6 00001bfd: JUMP 00001bfe: JUMPDEST 00001bff: JUMPDEST 00001c00: POP 00001c01: SWAP1 00001c02: POP 00001c03: PUSH2 0x1c0c 00001c06: SWAP2 00001c07: SWAP1 00001c08: PUSH2 0x1c10 00001c0b: JUMP 00001c0c: JUMPDEST 00001c0d: POP 00001c0e: SWAP1 00001c0f: JUMP 00001c10: JUMPDEST 00001c11: JUMPDEST 00001c12: DUP1 00001c13: DUP3 00001c14: GT 00001c15: ISZERO 00001c16: PUSH2 0x1c29 00001c19: JUMPI 00001c1a: PUSH1 0x00 00001c1c: DUP2 00001c1d: PUSH1 0x00 00001c1f: SWAP1 00001c20: SSTORE 00001c21: POP 00001c22: PUSH1 0x01 00001c24: ADD 00001c25: PUSH2 0x1c11 00001c28: JUMP 00001c29: JUMPDEST 00001c2a: POP 00001c2b: SWAP1 00001c2c: JUMP 00001c2d: INVALID 00001c2e: COINBASE 00001c2f: PUSH13 0x72656164792061207369676e65 00001c3d: PUSH19 0x206f66207468697320616374696f6e2c206361 00001c51: PUSH15 0x2774207369676e20616761696e5761 00001c61: PUSH10 0x74656420746f6f206c6f 00001c6c: PUSH15 0x6720746f2075736520746869732074 00001c7c: PUSH10 0x6d656c6f636b4e6f7420 00001c87: PUSH6 0x6e6f75676820 00001c8e: PUSH24 0x61697420666f7220746869732074696d656c6f636ba26469 00001ca7: PUSH17 0x6673582212206d5d8c0974c627528acf94 00001cb9: ORIGIN 00001cba: UNKNOWN(0x2F) 00001cbb: ISZERO 00001cbc: DUP4 00001cbd: DUP9 00001cbe: UNKNOWN(0x2D) 00001cbf: UNKNOWN(0x4D) 00001cc0: DUP7 00001cc1: GASLIMIT 00001cc2: UNKNOWN(0xF8) 00001cc3: UNKNOWN(0xEF) 00001cc4: ADDRESS 00001cc5: ADDMOD 00001cc6: UNKNOWN(0xA8) 00001cc7: UNKNOWN(0xD5) 00001cc8: UNKNOWN(0xBE) 00001cc9: UNKNOWN(0xA8) 00001cca: DUP15 00001ccb: PUSH28
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x8bf7e74d",
"selector": "0x8bf7e74d",
"calldata_variants": [
"0x8bf7e74d",
"0x8bf7e74d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc1fd34b",
"selector": "0xbc1fd34b",
"calldata_variants": [
"0xbc1fd34b",
"0xbc1fd34b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd8e7d36a",
"selector": "0xd8e7d36a",
"calldata_variants": [
"0xd8e7d36a",
"0xd8e7d36a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe0d8e525",
"selector": "0xe0d8e525",
"calldata_variants": [
"0xe0d8e525",
"0xe0d8e5250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe9a5b9f8",
"selector": "0xe9a5b9f8",
"calldata_variants": [
"0xe9a5b9f8",
"0xe9a5b9f80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3b1e6f5",
"selector": "0xf3b1e6f5",
"calldata_variants": [
"0xf3b1e6f5",
"0xf3b1e6f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x03a4d4c8",
"selector": "0x03a4d4c8",
"calldata_variants": [
"0x03a4d4c8",
"0x03a4d4c80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0a615b74",
"selector": "0x0a615b74",
"calldata_variants": [
"0x0a615b74",
"0x0a615b740000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 2408,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3097,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5497,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6305,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6657,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7353,
"type": "tx_origin_used"
}
]
}
|
| medium | auth | codex | Quorum approvals do not bind action parameters, allowing last signer to choose arbitrary values | 75 | no | — |
viewevidence_json{
"evidence": "Quorum paths explicitly note that \u201cparameters are valid for the last signer\u201d and then execute using the last call\u2019s arguments without checking stored action data.",
"locations": [
"contracts/Contract.sol:217",
"contracts/Contract.sol:241",
"contracts/Contract.sol:261"
],
"recommendation": "Store the proposed action parameters in the Action on the first signer (or store a hash of the full parameters) and require every subsequent signer to confirm the exact same parameters before execution. Alternatively, require off-chain signatures over the action payload (e.g., EIP-712) and verify them on-chain.",
"exploit_scenario": "With 3 authorized users (A, B, C), A and B call quorumWithdrawToken expecting to approve a small withdrawal. C then calls quorumWithdrawToken with a much larger amount and their own token choice. Because the contract ignores stored parameters and uses the last call\u2019s inputs, C\u2019s transaction executes and transfers the larger amount to C even though A and B never approved those parameters. The same pattern applies to quorumWithdrawBase and quorumChangeTimelocks, letting the last signer set arbitrary timelock values."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xbed3b9e778764a722457e40618148b7376514184c45dcbfad6e28cb2deb1b512
call_targets:
0x0629c8153eb19fb19b44dff1804fad66360a5441
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xbed3b9e778764a722457e40618148b7376514184c45dcbfad6e28cb2deb1b512",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x0629c8153eb19fb19b44dff1804fad66360a5441"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x8bf7e74d",
"selector": "0x8bf7e74d",
"calldata_variants": [
"0x8bf7e74d",
"0x8bf7e74d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc1fd34b",
"selector": "0xbc1fd34b",
"calldata_variants": [
"0xbc1fd34b",
"0xbc1fd34b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd8e7d36a",
"selector": "0xd8e7d36a",
"calldata_variants": [
"0xd8e7d36a",
"0xd8e7d36a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe0d8e525",
"selector": "0xe0d8e525",
"calldata_variants": [
"0xe0d8e525",
"0xe0d8e5250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe9a5b9f8",
"selector": "0xe9a5b9f8",
"calldata_variants": [
"0xe9a5b9f8",
"0xe9a5b9f80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3b1e6f5",
"selector": "0xf3b1e6f5",
"calldata_variants": [
"0xf3b1e6f5",
"0xf3b1e6f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x03a4d4c8",
"selector": "0x03a4d4c8",
"calldata_variants": [
"0x03a4d4c8",
"0x03a4d4c80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0a615b74",
"selector": "0x0a615b74",
"calldata_variants": [
"0x0a615b74",
"0x0a615b740000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1176,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1460,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1714,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 6,
"guards_detected": [
{
"pc": 2408,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3097,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5497,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6305,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6657,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7353,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 6
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xbed3b9e778764a722457e40618148b7376514184c45dcbfad6e28cb2deb1b512
call_targets:
0x0629c8153eb19fb19b44dff1804fad66360a5441
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xbed3b9e778764a722457e40618148b7376514184c45dcbfad6e28cb2deb1b512",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x0629c8153eb19fb19b44dff1804fad66360a5441"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x8bf7e74d",
"selector": "0x8bf7e74d",
"calldata_variants": [
"0x8bf7e74d",
"0x8bf7e74d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc1fd34b",
"selector": "0xbc1fd34b",
"calldata_variants": [
"0xbc1fd34b",
"0xbc1fd34b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd8e7d36a",
"selector": "0xd8e7d36a",
"calldata_variants": [
"0xd8e7d36a",
"0xd8e7d36a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe0d8e525",
"selector": "0xe0d8e525",
"calldata_variants": [
"0xe0d8e525",
"0xe0d8e5250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe9a5b9f8",
"selector": "0xe9a5b9f8",
"calldata_variants": [
"0xe9a5b9f8",
"0xe9a5b9f80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf3b1e6f5",
"selector": "0xf3b1e6f5",
"calldata_variants": [
"0xf3b1e6f5",
"0xf3b1e6f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x03a4d4c8",
"selector": "0x03a4d4c8",
"calldata_variants": [
"0x03a4d4c8",
"0x03a4d4c80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0a615b74",
"selector": "0x0a615b74",
"calldata_variants": [
"0x0a615b74",
"0x0a615b740000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1176,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1460,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1714,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 6,
"guards_detected": [
{
"pc": 2408,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3097,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5497,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6305,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6657,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 7353,
"type": "tx_origin_used"
}
]
}
|
| low | other | codex | ERC20 transfer return values are unchecked | 65 | no | — |
viewevidence_json{
"evidence": "Token transfers are invoked without checking the returned boolean in both the timelock and quorum withdrawal paths.",
"locations": [
"contracts/Contract.sol:164",
"contracts/Contract.sol:234"
],
"recommendation": "Use SafeERC20 and check return values for standard tokens; keep the legacy path for non-standard tokens but handle failures explicitly.",
"exploit_scenario": "If a token returns false instead of reverting (non-compliant ERC20s), the contract will mark the action as used and continue even though no tokens were transferred. This can silently fail withdrawals and make it appear that funds were moved when they were not."
}
|