019c0ea9-074d-73f6-b29a-57ba21057a10
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 |
|---|---|---|---|---|
| 41564 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 41565 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 41566 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 41567 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 41568 | capability.graph | complete | 1 / 3 | 2 months ago |
| 41569 | detector.run | complete | 1 / 3 | 2 months ago |
| 41570 | validation.fork | complete | 1 / 3 | 2 months ago |
| 42208 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 42209 | tool.slither | complete | 1 / 2 | 2 months ago |
{
"method": "etherscan+onchain",
"status": "confirmed",
"etherscan_hint": {
"source": "etherscan",
"etherscan": {
"proxy_flag": true,
"implementation": "0x28def88a5225fd50cdd081306be18fa7368e59f9"
}
},
"implementation": "0x28def88a5225fd50cdd081306be18fa7368e59f9",
"onchain_method": "eip1967"
}
'forge clean' running (wd: /tmp/slither-8tupb70d) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-8tupb70d) Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88) uses delegatecall to a input-controlled function id - (success,None) = newImplementation.delegatecall(data) (contracts/vendor/proxy/EIP173/Proxy.sol#78) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall EIP173Proxy.supportsInterface(bytes4) (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#36-60) uses assembly - INLINE ASM (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#46-50) EIP173Proxy._proxyAdmin() (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#87-94) uses assembly - INLINE ASM (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#89-93) EIP173Proxy._setProxyAdmin(address) (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#96-106) uses assembly - INLINE ASM (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#99-104) Proxy._fallback() (contracts/vendor/proxy/EIP173/Proxy.sol#26-51) uses assembly - INLINE ASM (contracts/vendor/proxy/EIP173/Proxy.sol#28-50) Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88) uses assembly - INLINE ASM (contracts/vendor/proxy/EIP173/Proxy.sol#58-62) - INLINE ASM (contracts/vendor/proxy/EIP173/Proxy.sol#65-70) - INLINE ASM (contracts/vendor/proxy/EIP173/Proxy.sol#80-85) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage Version constraint ^0.8.12 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - VerbatimInvalidDeduplication - FullInlinerNonExpressionSplitArgumentEvaluationOrder - MissingSideEffectsOnSelectorAccess - AbiReencodingHeadOverflowWithStaticArrayCleanup - DirtyBytesArrayToStorage - DataLocationChangeInInternalOverride - NestedCalldataArrayAbiReencodingSizeValidation - AbiEncodeCallLiteralAsFixedBytesBug. It is used by: - ^0.8.12 (contracts/vendor/proxy/EIP173/EIP173Proxy.sol#2) - ^0.8.12 (contracts/vendor/proxy/EIP173/EIP173ProxyWithCustomReceive.sol#2) - ^0.8.12 (contracts/vendor/proxy/EIP173/Proxy.sol#2) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity Low level call in Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88): - (success,None) = newImplementation.delegatecall(data) (contracts/vendor/proxy/EIP173/Proxy.sol#78) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls . analyzed (4 contracts with 100 detectors), 8 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.12",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.12",
"install_stderr": null,
"install_stdout": "Installing solc '0.8.12'...\nVersion '0.8.12' installed."
},
"solc_args": "--base-path /tmp/slither-8tupb70d --allow-paths /tmp/slither-8tupb70d,/tmp/slither-8tupb70d/lib,/tmp/slither-8tupb70d/src",
"remappings": [],
"source_files": [
"contracts/vendor/proxy/EIP173/EIP173Proxy.sol",
"contracts/vendor/proxy/EIP173/EIP173ProxyWithCustomReceive.sol",
"contracts/vendor/proxy/EIP173/Proxy.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 8,
"workspace_hash": "b97b0ef951cec0ed6aee0927e69eb5765056a43433030bc43ed4402ed2a9debd",
"duration_seconds": 0.7741234302520752,
"solc_version_requested": "0.8.14"
}
{"no_findings":true,"summary":"Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.","findings":[]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-dflx3df_
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0ec5-6149-7603-a577-09e52e784d71
--------
user
Context: The user requested the proxy at 0x9d4c2e232fefaca4ed414aef4ba03b60b9f40aae.
Audit the implementation at 0x28def88a5225fd50cdd081306be18fa7368e59f9.
Findings should refer to the implementation unless explicitly about proxy mechanics.
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
exec
/bin/bash -lc ls in /tmp/codex-dflx3df_ succeeded in 7ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
@openzeppelin
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-dflx3df_ succeeded in 7ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/functions/FUtils.sol
================================================================================
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.12;
import {
SafeERC20,
IERC20
} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
address constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
// solhint-disable private-vars-leading-underscore
// solhint-disable func-visibility
function _transfer(
address payable _to,
codex
{"no_findings":true,"summary":"Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.","findings":[]}
tokens used
24,667
{
"codex": {
"ran_at": "2026-01-30T12:03:45.567503+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 14,
"import_count": 9,
"first_party_contracts_count": 7
},
"summary": "Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.",
"raw_final": {
"summary": "Reviewed TaskTreasuryUpgradable, LibShares, and FUtils; no exploitable vulnerabilities found in the implementation. Residual risk: security depends on trusted whitelisted services and the external oldTreasury behaving correctly.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"proxy_context": {
"proxy_run_id": "019c0ea9-074d-73f6-b29a-57ba21057a10",
"proxy_address": "0x9d4c2e232fefaca4ed414aef4ba03b60b9f40aae",
"implementation_run_id": "019c0ea9-71ec-7140-b362-268cfeffbc7f",
"implementation_address": "0x28def88a5225fd50cdd081306be18fa7368e59f9"
},
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x004e 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x01ffc9a7 00000019: EQ 0000001a: PUSH2 0x0067 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x3659cfe6 00000024: EQ 00000025: PUSH2 0x00a4 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0x3e47158c 0000002f: EQ 00000030: PUSH2 0x00cd 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0x4f1ef286 0000003a: EQ 0000003b: PUSH2 0x00f8 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0x8356ca4f 00000045: EQ 00000046: PUSH2 0x0114 00000049: JUMPI 0000004a: PUSH2 0x005d 0000004d: JUMP 0000004e: JUMPDEST 0000004f: CALLDATASIZE 00000050: PUSH2 0x005d 00000053: JUMPI 00000054: PUSH2 0x005b 00000057: PUSH2 0x013d 0000005a: JUMP 0000005b: JUMPDEST 0000005c: STOP 0000005d: JUMPDEST 0000005e: PUSH2 0x0065 00000061: PUSH2 0x013d 00000064: JUMP 00000065: JUMPDEST 00000066: STOP 00000067: JUMPDEST 00000068: CALLVALUE 00000069: DUP1 0000006a: ISZERO 0000006b: PUSH2 0x0073 0000006e: JUMPI 0000006f: PUSH1 0x00 00000071: DUP1 00000072: REVERT 00000073: JUMPDEST 00000074: POP 00000075: PUSH2 0x008e 00000078: PUSH1 0x04 0000007a: DUP1 0000007b: CALLDATASIZE 0000007c: SUB 0000007d: DUP2 0000007e: ADD 0000007f: SWAP1 00000080: PUSH2 0x0089 00000083: SWAP2 00000084: SWAP1 00000085: PUSH2 0x0707 00000088: JUMP 00000089: JUMPDEST 0000008a: PUSH2 0x0186 0000008d: JUMP 0000008e: JUMPDEST 0000008f: PUSH1 0x40 00000091: MLOAD 00000092: PUSH2 0x009b 00000095: SWAP2 00000096: SWAP1 00000097: PUSH2 0x074f 0000009a: JUMP 0000009b: JUMPDEST 0000009c: PUSH1 0x40 0000009e: MLOAD 0000009f: DUP1 000000a0: SWAP2 000000a1: SUB 000000a2: SWAP1 000000a3: RETURN 000000a4: JUMPDEST 000000a5: CALLVALUE 000000a6: DUP1 000000a7: ISZERO 000000a8: PUSH2 0x00b0 000000ab: JUMPI 000000ac: PUSH1 0x00 000000ae: DUP1 000000af: REVERT 000000b0: JUMPDEST 000000b1: POP 000000b2: PUSH2 0x00cb 000000b5: PUSH1 0x04 000000b7: DUP1 000000b8: CALLDATASIZE 000000b9: SUB 000000ba: DUP2 000000bb: ADD 000000bc: SWAP1 000000bd: PUSH2 0x00c6 000000c0: SWAP2 000000c1: SWAP1 000000c2: PUSH2 0x07c8 000000c5: JUMP 000000c6: JUMPDEST 000000c7: PUSH2 0x02d7 000000ca: JUMP 000000cb: JUMPDEST 000000cc: STOP 000000cd: JUMPDEST 000000ce: CALLVALUE 000000cf: DUP1 000000d0: ISZERO 000000d1: PUSH2 0x00d9 000000d4: JUMPI 000000d5: PUSH1 0x00 000000d7: DUP1 000000d8: REVERT 000000d9: JUMPDEST 000000da: POP 000000db: PUSH2 0x00e2 000000de: PUSH2 0x0368 000000e1: JUMP 000000e2: JUMPDEST 000000e3: PUSH1 0x40 000000e5: MLOAD 000000e6: PUSH2 0x00ef 000000e9: SWAP2 000000ea: SWAP1 000000eb: PUSH2 0x0804 000000ee: JUMP 000000ef: JUMPDEST 000000f0: PUSH1 0x40 000000f2: MLOAD 000000f3: DUP1 000000f4: SWAP2 000000f5: SUB 000000f6: SWAP1 000000f7: RETURN 000000f8: JUMPDEST 000000f9: PUSH2 0x0112 000000fc: PUSH1 0x04 000000fe: DUP1 000000ff: CALLDATASIZE 00000100: SUB 00000101: DUP2 00000102: ADD 00000103: SWAP1 00000104: PUSH2 0x010d 00000107: SWAP2 00000108: SWAP1 00000109: PUSH2 0x0884 0000010c: JUMP 0000010d: JUMPDEST 0000010e: PUSH2 0x0377 00000111: JUMP 00000112: JUMPDEST 00000113: STOP 00000114: JUMPDEST 00000115: CALLVALUE 00000116: DUP1 00000117: ISZERO 00000118: PUSH2 0x0120 0000011b: JUMPI 0000011c: PUSH1 0x00 0000011e: DUP1 0000011f: REVERT 00000120: JUMPDEST 00000121: POP 00000122: PUSH2 0x013b 00000125: PUSH1 0x04 00000127: DUP1 00000128: CALLDATASIZE 00000129: SUB 0000012a: DUP2 0000012b: ADD 0000012c: SWAP1 0000012d: PUSH2 0x0136 00000130: SWAP2 00000131: SWAP1 00000132: PUSH2 0x07c8 00000135: JUMP 00000136: JUMPDEST 00000137: PUSH2 0x043f 0000013a: JUMP 0000013b: JUMPDEST 0000013c: STOP 0000013d: JUMPDEST 0000013e: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0000015f: SLOAD 00000160: CALLDATASIZE 00000161: PUSH1 0x00 00000163: DUP1 00000164: CALLDATACOPY 00000165: PUSH1 0x00 00000167: DUP1 00000168: CALLDATASIZE 00000169: PUSH1 0x00 0000016b: DUP5 0000016c: GAS 0000016d: DELEGATECALL 0000016e: RETURNDATASIZE 0000016f: DUP1 00000170: PUSH1 0x00 00000172: DUP1 00000173: RETURNDATACOPY 00000174: DUP2 00000175: PUSH1 0x00 00000177: DUP2 00000178: EQ 00000179: PUSH2 0x0181 0000017c: JUMPI 0000017d: DUP2 0000017e: PUSH1 0x00 00000180: RETURN 00000181: JUMPDEST 00000182: DUP2 00000183: PUSH1 0x00 00000185: REVERT 00000186: JUMPDEST 00000187: PUSH1 0x00 00000189: PUSH4 0x01ffc9a7 0000018e: PUSH1 0xe0 00000190: SHL 00000191: DUP3 00000192: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000001af: NOT 000001b0: AND 000001b1: EQ 000001b2: DUP1 000001b3: PUSH2 0x01e1 000001b6: JUMPI 000001b7: POP 000001b8: PUSH4 0x7f5828d0 000001bd: PUSH1 0xe0 000001bf: SHL 000001c0: DUP3 000001c1: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000001de: NOT 000001df: AND 000001e0: EQ 000001e1: JUMPDEST 000001e2: ISZERO 000001e3: PUSH2 0x01ef 000001e6: JUMPI 000001e7: PUSH1 0x01 000001e9: SWAP1 000001ea: POP 000001eb: PUSH2 0x02d2 000001ee: JUMP 000001ef: JUMPDEST 000001f0: PUSH4 0xffffffff 000001f5: PUSH1 0xe0 000001f7: SHL 000001f8: DUP3 000001f9: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000216: NOT 00000217: AND 00000218: SUB 00000219: PUSH2 0x0225 0000021c: JUMPI 0000021d: PUSH1 0x00 0000021f: SWAP1 00000220: POP 00000221: PUSH2 0x02d2 00000224: JUMP 00000225: JUMPDEST 00000226: PUSH1 0x00 00000228: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00000249: SLOAD 0000024a: SWAP1 0000024b: POP 0000024c: DUP1 0000024d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000262: AND 00000263: PUSH4 0x01ffc9a7 00000268: DUP5 00000269: PUSH1 0x40 0000026b: MLOAD 0000026c: DUP3 0000026d: PUSH4 0xffffffff 00000272: AND 00000273: PUSH1 0xe0 00000275: SHL 00000276: DUP2 00000277: MSTORE 00000278: PUSH1 0x04 0000027a: ADD 0000027b: PUSH2 0x0284 0000027e: SWAP2 0000027f: SWAP1 00000280: PUSH2 0x08f3 00000283: JUMP 00000284: JUMPDEST 00000285: PUSH1 0x20 00000287: PUSH1 0x40 00000289: MLOAD 0000028a: DUP1 0000028b: DUP4 0000028c: SUB 0000028d: DUP2 0000028e: DUP7 0000028f: GAS 00000290: STATICCALL 00000291: SWAP3 00000292: POP 00000293: POP 00000294: POP 00000295: DUP1 00000296: ISZERO 00000297: PUSH2 0x02be 0000029a: JUMPI 0000029b: POP 0000029c: PUSH1 0x40 0000029e: MLOAD 0000029f: RETURNDATASIZE 000002a0: PUSH1 0x1f 000002a2: NOT 000002a3: PUSH1 0x1f 000002a5: DUP3 000002a6: ADD 000002a7: AND 000002a8: DUP3 000002a9: ADD 000002aa: DUP1 000002ab: PUSH1 0x40 000002ad: MSTORE 000002ae: POP 000002af: DUP2 000002b0: ADD 000002b1: SWAP1 000002b2: PUSH2 0x02bb 000002b5: SWAP2 000002b6: SWAP1 000002b7: PUSH2 0x093a 000002ba: JUMP 000002bb: JUMPDEST 000002bc: PUSH1 0x01 000002be: JUMPDEST 000002bf: PUSH2 0x02cc 000002c2: JUMPI 000002c3: PUSH1 0x00 000002c5: SWAP2 000002c6: POP 000002c7: POP 000002c8: PUSH2 0x02d2 000002cb: JUMP 000002cc: JUMPDEST 000002cd: DUP1 000002ce: SWAP3 000002cf: POP 000002d0: POP 000002d1: POP 000002d2: JUMPDEST 000002d3: SWAP2 000002d4: SWAP1 000002d5: POP 000002d6: JUMP 000002d7: JUMPDEST 000002d8: PUSH2 0x02df 000002db: PUSH2 0x04c0 000002de: JUMP 000002df: JUMPDEST 000002e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002f5: AND 000002f6: CALLER 000002f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000030c: AND 0000030d: EQ 0000030e: PUSH2 0x034c 00000311: JUMPI 00000312: PUSH1 0x40 00000314: MLOAD 00000315: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000336: DUP2 00000337: MSTORE 00000338: PUSH1 0x04 0000033a: ADD 0000033b: PUSH2 0x0343 0000033e: SWAP1 0000033f: PUSH2 0x09c4 00000342: JUMP 00000343: JUMPDEST 00000344: PUSH1 0x40 00000346: MLOAD 00000347: DUP1 00000348: SWAP2 00000349: SUB 0000034a: SWAP1 0000034b: REVERT 0000034c: JUMPDEST 0000034d: PUSH2 0x0365 00000350: DUP2 00000351: PUSH1 0x40 00000353: MLOAD 00000354: DUP1 00000355: PUSH1 0x20 00000357: ADD 00000358: PUSH1 0x40 0000035a: MSTORE 0000035b: DUP1 0000035c: PUSH1 0x00 0000035e: DUP2 0000035f: MSTORE 00000360: POP 00000361: PUSH2 0x04e9 00000364: JUMP 00000365: JUMPDEST 00000366: POP 00000367: JUMP 00000368: JUMPDEST 00000369: PUSH1 0x00 0000036b: PUSH2 0x0372 0000036e: PUSH2 0x04c0 00000371: JUMP 00000372: JUMPDEST 00000373: SWAP1 00000374: POP 00000375: SWAP1 00000376: JUMP 00000377: JUMPDEST 00000378: PUSH2 0x037f 0000037b: PUSH2 0x04c0 0000037e: JUMP 0000037f: JUMPDEST 00000380: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000395: AND 00000396: CALLER 00000397: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003ac: AND 000003ad: EQ 000003ae: PUSH2 0x03ec 000003b1: JUMPI 000003b2: PUSH1 0x40 000003b4: MLOAD 000003b5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000003d6: DUP2 000003d7: MSTORE 000003d8: PUSH1 0x04 000003da: ADD 000003db: PUSH2 0x03e3 000003de: SWAP1 000003df: PUSH2 0x09c4 000003e2: JUMP 000003e3: JUMPDEST 000003e4: PUSH1 0x40 000003e6: MLOAD 000003e7: DUP1 000003e8: SWAP2 000003e9: SUB 000003ea: SWAP1 000003eb: REVERT 000003ec: JUMPDEST 000003ed: PUSH2 0x043a 000003f0: DUP4 000003f1: DUP4 000003f2: DUP4 000003f3: DUP1 000003f4: DUP1 000003f5: PUSH1 0x1f 000003f7: ADD 000003f8: PUSH1 0x20 000003fa: DUP1 000003fb: SWAP2 000003fc: DIV 000003fd: MUL 000003fe: PUSH1 0x20 00000400: ADD 00000401: PUSH1 0x40 00000403: MLOAD 00000404: SWAP1 00000405: DUP2 00000406: ADD 00000407: PUSH1 0x40 00000409: MSTORE 0000040a: DUP1 0000040b: SWAP4 0000040c: SWAP3 0000040d: SWAP2 0000040e: SWAP1 0000040f: DUP2 00000410: DUP2 00000411: MSTORE 00000412: PUSH1 0x20 00000414: ADD 00000415: DUP4 00000416: DUP4 00000417: DUP1 00000418: DUP3 00000419: DUP5 0000041a: CALLDATACOPY 0000041b: PUSH1 0x00 0000041d: DUP2 0000041e: DUP5 0000041f: ADD 00000420: MSTORE 00000421: PUSH1 0x1f 00000423: NOT 00000424: PUSH1 0x1f 00000426: DUP3 00000427: ADD 00000428: AND 00000429: SWAP1 0000042a: POP 0000042b: DUP1 0000042c: DUP4 0000042d: ADD 0000042e: SWAP3 0000042f: POP 00000430: POP 00000431: POP 00000432: POP 00000433: POP 00000434: POP 00000435: POP 00000436: PUSH2 0x04e9 00000439: JUMP 0000043a: JUMPDEST 0000043b: POP 0000043c: POP 0000043d: POP 0000043e: JUMP 0000043f: JUMPDEST 00000440: PUSH2 0x0447 00000443: PUSH2 0x04c0 00000446: JUMP 00000447: JUMPDEST 00000448: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000045d: AND 0000045e: CALLER 0000045f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000474: AND 00000475: EQ 00000476: PUSH2 0x04b4 00000479: JUMPI 0000047a: PUSH1 0x40 0000047c: MLOAD 0000047d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000049e: DUP2 0000049f: MSTORE 000004a0: PUSH1 0x04 000004a2: ADD 000004a3: PUSH2 0x04ab 000004a6: SWAP1 000004a7: PUSH2 0x09c4 000004aa: JUMP 000004ab: JUMPDEST 000004ac: PUSH1 0x40 000004ae: MLOAD 000004af: DUP1 000004b0: SWAP2 000004b1: SUB 000004b2: SWAP1 000004b3: REVERT 000004b4: JUMPDEST 000004b5: PUSH2 0x04bd 000004b8: DUP2 000004b9: PUSH2 0x0618 000004bc: JUMP 000004bd: JUMPDEST 000004be: POP 000004bf: JUMP 000004c0: JUMPDEST 000004c1: PUSH1 0x00 000004c3: PUSH32 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103 000004e4: SLOAD 000004e5: SWAP1 000004e6: POP 000004e7: SWAP1 000004e8: JUMP 000004e9: JUMPDEST 000004ea: PUSH1 0x00 000004ec: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0000050d: SLOAD 0000050e: SWAP1 0000050f: POP 00000510: DUP3 00000511: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00000532: SSTORE 00000533: DUP3 00000534: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000549: AND 0000054a: DUP2 0000054b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000560: AND 00000561: PUSH32 0x5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b7379068296 00000582: PUSH1 0x40 00000584: MLOAD 00000585: PUSH1 0x40 00000587: MLOAD 00000588: DUP1 00000589: SWAP2 0000058a: SUB 0000058b: SWAP1 0000058c: LOG3 0000058d: PUSH1 0x00 0000058f: DUP3 00000590: MLOAD 00000591: GT 00000592: ISZERO 00000593: PUSH2 0x0613 00000596: JUMPI 00000597: PUSH1 0x00 00000599: DUP4 0000059a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005af: AND 000005b0: DUP4 000005b1: PUSH1 0x40 000005b3: MLOAD 000005b4: PUSH2 0x05bd 000005b7: SWAP2 000005b8: SWAP1 000005b9: PUSH2 0x0a5e 000005bc: JUMP 000005bd: JUMPDEST 000005be: PUSH1 0x00 000005c0: PUSH1 0x40 000005c2: MLOAD 000005c3: DUP1 000005c4: DUP4 000005c5: SUB 000005c6: DUP2 000005c7: DUP6 000005c8: GAS 000005c9: DELEGATECALL 000005ca: SWAP2 000005cb: POP 000005cc: POP 000005cd: RETURNDATASIZE 000005ce: DUP1 000005cf: PUSH1 0x00 000005d1: DUP2 000005d2: EQ 000005d3: PUSH2 0x05f8 000005d6: JUMPI 000005d7: PUSH1 0x40 000005d9: MLOAD 000005da: SWAP2 000005db: POP 000005dc: PUSH1 0x1f 000005de: NOT 000005df: PUSH1 0x3f 000005e1: RETURNDATASIZE 000005e2: ADD 000005e3: AND 000005e4: DUP3 000005e5: ADD 000005e6: PUSH1 0x40 000005e8: MSTORE 000005e9: RETURNDATASIZE 000005ea: DUP3 000005eb: MSTORE 000005ec: RETURNDATASIZE 000005ed: PUSH1 0x00 000005ef: PUSH1 0x20 000005f1: DUP5 000005f2: ADD 000005f3: RETURNDATACOPY 000005f4: PUSH2 0x05fd 000005f7: JUMP 000005f8: JUMPDEST 000005f9: PUSH1 0x60 000005fb: SWAP2 000005fc: POP 000005fd: JUMPDEST 000005fe: POP 000005ff: POP 00000600: SWAP1 00000601: POP 00000602: DUP1 00000603: PUSH2 0x0611 00000606: JUMPI 00000607: RETURNDATASIZE 00000608: DUP1 00000609: PUSH1 0x00 0000060b: DUP1 0000060c: RETURNDATACOPY 0000060d: DUP1 0000060e: PUSH1 0x00 00000610: REVERT 00000611: JUMPDEST 00000612: POP 00000613: JUMPDEST 00000614: POP 00000615: POP 00000616: POP 00000617: JUMP 00000618: JUMPDEST 00000619: PUSH1 0x00 0000061b: PUSH2 0x0622 0000061e: PUSH2 0x04c0 00000621: JUMP 00000622: JUMPDEST 00000623: SWAP1 00000624: POP 00000625: DUP2 00000626: PUSH32 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103 00000647: SSTORE 00000648: DUP2 00000649: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000065e: AND 0000065f: DUP2 00000660: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000675: AND 00000676: PUSH32 0xdf435d422321da6b195902d70fc417c06a32f88379c20dd8f2a8da07088cec29 00000697: PUSH1 0x40 00000699: MLOAD 0000069a: PUSH1 0x40 0000069c: MLOAD 0000069d: DUP1 0000069e: SWAP2 0000069f: SUB 000006a0: SWAP1 000006a1: LOG3 000006a2: POP 000006a3: POP 000006a4: JUMP 000006a5: JUMPDEST 000006a6: PUSH1 0x00 000006a8: DUP1 000006a9: REVERT 000006aa: JUMPDEST 000006ab: PUSH1 0x00 000006ad: DUP1 000006ae: REVERT 000006af: JUMPDEST 000006b0: PUSH1 0x00 000006b2: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000006d3: DUP3 000006d4: AND 000006d5: SWAP1 000006d6: POP 000006d7: SWAP2 000006d8: SWAP1 000006d9: POP 000006da: JUMP 000006db: JUMPDEST 000006dc: PUSH2 0x06e4 000006df: DUP2 000006e0: PUSH2 0x06af 000006e3: JUMP 000006e4: JUMPDEST 000006e5: DUP2 000006e6: EQ 000006e7: PUSH2 0x06ef 000006ea: JUMPI 000006eb: PUSH1 0x00 000006ed: DUP1 000006ee: REVERT 000006ef: JUMPDEST 000006f0: POP 000006f1: JUMP 000006f2: JUMPDEST 000006f3: PUSH1 0x00 000006f5: DUP2 000006f6: CALLDATALOAD 000006f7: SWAP1 000006f8: POP 000006f9: PUSH2 0x0701 000006fc: DUP2 000006fd: PUSH2 0x06db 00000700: JUMP 00000701: JUMPDEST 00000702: SWAP3 00000703: SWAP2 00000704: POP 00000705: POP 00000706: JUMP 00000707: JUMPDEST 00000708: PUSH1 0x00 0000070a: PUSH1 0x20 0000070c: DUP3 0000070d: DUP5 0000070e: SUB 0000070f: SLT 00000710: ISZERO 00000711: PUSH2 0x071d 00000714: JUMPI 00000715: PUSH2 0x071c 00000718: PUSH2 0x06a5 0000071b: JUMP 0000071c: JUMPDEST 0000071d: JUMPDEST 0000071e: PUSH1 0x00 00000720: PUSH2 0x072b 00000723: DUP5 00000724: DUP3 00000725: DUP6 00000726: ADD 00000727: PUSH2 0x06f2 0000072a: JUMP 0000072b: JUMPDEST 0000072c: SWAP2 0000072d: POP 0000072e: POP 0000072f: SWAP3 00000730: SWAP2 00000731: POP 00000732: POP 00000733: JUMP 00000734: JUMPDEST 00000735: PUSH1 0x00 00000737: DUP2 00000738: ISZERO 00000739: ISZERO 0000073a: SWAP1 0000073b: POP 0000073c: SWAP2 0000073d: SWAP1 0000073e: POP 0000073f: JUMP 00000740: JUMPDEST 00000741: PUSH2 0x0749 00000744: DUP2 00000745: PUSH2 0x0734 00000748: JUMP 00000749: JUMPDEST 0000074a: DUP3 0000074b: MSTORE 0000074c: POP 0000074d: POP 0000074e: JUMP 0000074f: JUMPDEST 00000750: PUSH1 0x00 00000752: PUSH1 0x20 00000754: DUP3 00000755: ADD 00000756: SWAP1 00000757: POP 00000758: PUSH2 0x0764 0000075b: PUSH1 0x00 0000075d: DUP4 0000075e: ADD 0000075f: DUP5 00000760: PUSH2 0x0740 00000763: JUMP 00000764: JUMPDEST 00000765: SWAP3 00000766: SWAP2 00000767: POP 00000768: POP 00000769: JUMP 0000076a: JUMPDEST 0000076b: PUSH1 0x00 0000076d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000782: DUP3 00000783: AND 00000784: SWAP1 00000785: POP 00000786: SWAP2 00000787: SWAP1 00000788: POP 00000789: JUMP 0000078a: JUMPDEST 0000078b: PUSH1 0x00 0000078d: PUSH2 0x0795 00000790: DUP3 00000791: PUSH2 0x076a 00000794: JUMP 00000795: JUMPDEST 00000796: SWAP1 00000797: POP 00000798: SWAP2 00000799: SWAP1 0000079a: POP 0000079b: JUMP 0000079c: JUMPDEST 0000079d: PUSH2 0x07a5 000007a0: DUP2 000007a1: PUSH2 0x078a 000007a4: JUMP 000007a5: JUMPDEST 000007a6: DUP2 000007a7: EQ 000007a8: PUSH2 0x07b0 000007ab: JUMPI 000007ac: PUSH1 0x00 000007ae: DUP1 000007af: REVERT 000007b0: JUMPDEST 000007b1: POP 000007b2: JUMP 000007b3: JUMPDEST 000007b4: PUSH1 0x00 000007b6: DUP2 000007b7: CALLDATALOAD 000007b8: SWAP1 000007b9: POP 000007ba: PUSH2 0x07c2 000007bd: DUP2 000007be: PUSH2 0x079c 000007c1: JUMP 000007c2: JUMPDEST 000007c3: SWAP3 000007c4: SWAP2 000007c5: POP 000007c6: POP 000007c7: JUMP 000007c8: JUMPDEST 000007c9: PUSH1 0x00 000007cb: PUSH1 0x20 000007cd: DUP3 000007ce: DUP5 000007cf: SUB 000007d0: SLT 000007d1: ISZERO 000007d2: PUSH2 0x07de 000007d5: JUMPI 000007d6: PUSH2 0x07dd 000007d9: PUSH2 0x06a5 000007dc: JUMP 000007dd: JUMPDEST 000007de: JUMPDEST 000007df: PUSH1 0x00 000007e1: PUSH2 0x07ec 000007e4: DUP5 000007e5: DUP3 000007e6: DUP6 000007e7: ADD 000007e8: PUSH2 0x07b3 000007eb: JUMP 000007ec: JUMPDEST 000007ed: SWAP2 000007ee: POP 000007ef: POP 000007f0: SWAP3 000007f1: SWAP2 000007f2: POP 000007f3: POP 000007f4: JUMP 000007f5: JUMPDEST 000007f6: PUSH2 0x07fe 000007f9: DUP2 000007fa: PUSH2 0x078a 000007fd: JUMP 000007fe: JUMPDEST 000007ff: DUP3 00000800: MSTORE 00000801: POP 00000802: POP 00000803: JUMP 00000804: JUMPDEST 00000805: PUSH1 0x00 00000807: PUSH1 0x20 00000809: DUP3 0000080a: ADD 0000080b: SWAP1 0000080c: POP 0000080d: PUSH2 0x0819 00000810: PUSH1 0x00 00000812: DUP4 00000813: ADD 00000814: DUP5 00000815: PUSH2 0x07f5 00000818: JUMP 00000819: JUMPDEST 0000081a: SWAP3 0000081b: SWAP2 0000081c: POP 0000081d: POP 0000081e: JUMP 0000081f: JUMPDEST 00000820: PUSH1 0x00 00000822: DUP1 00000823: REVERT 00000824: JUMPDEST 00000825: PUSH1 0x00 00000827: DUP1 00000828: REVERT 00000829: JUMPDEST 0000082a: PUSH1 0x00 0000082c: DUP1 0000082d: REVERT 0000082e: JUMPDEST 0000082f: PUSH1 0x00 00000831: DUP1 00000832: DUP4 00000833: PUSH1 0x1f 00000835: DUP5 00000836: ADD 00000837: SLT 00000838: PUSH2 0x0844 0000083b: JUMPI 0000083c: PUSH2 0x0843 0000083f: PUSH2 0x081f 00000842: JUMP 00000843: JUMPDEST 00000844: JUMPDEST 00000845: DUP3 00000846: CALLDATALOAD 00000847: SWAP1 00000848: POP 00000849: PUSH8 0xffffffffffffffff 00000852: DUP2 00000853: GT 00000854: ISZERO 00000855: PUSH2 0x0861 00000858: JUMPI 00000859: PUSH2 0x0860 0000085c: PUSH2 0x0824 0000085f: JUMP 00000860: JUMPDEST 00000861: JUMPDEST 00000862: PUSH1 0x20 00000864: DUP4 00000865: ADD 00000866: SWAP2 00000867: POP 00000868: DUP4 00000869: PUSH1 0x01 0000086b: DUP3 0000086c: MUL 0000086d: DUP4 0000086e: ADD 0000086f: GT 00000870: ISZERO 00000871: PUSH2 0x087d 00000874: JUMPI 00000875: PUSH2 0x087c 00000878: PUSH2 0x0829 0000087b: JUMP 0000087c: JUMPDEST 0000087d: JUMPDEST 0000087e: SWAP3 0000087f: POP 00000880: SWAP3 00000881: SWAP1 00000882: POP 00000883: JUMP 00000884: JUMPDEST 00000885: PUSH1 0x00 00000887: DUP1 00000888: PUSH1 0x00 0000088a: PUSH1 0x40 0000088c: DUP5 0000088d: DUP7 0000088e: SUB 0000088f: SLT 00000890: ISZERO 00000891: PUSH2 0x089d 00000894: JUMPI 00000895: PUSH2 0x089c 00000898: PUSH2 0x06a5 0000089b: JUMP 0000089c: JUMPDEST 0000089d: JUMPDEST 0000089e: PUSH1 0x00 000008a0: PUSH2 0x08ab 000008a3: DUP7 000008a4: DUP3 000008a5: DUP8 000008a6: ADD 000008a7: PUSH2 0x07b3 000008aa: JUMP 000008ab: JUMPDEST 000008ac: SWAP4 000008ad: POP 000008ae: POP 000008af: PUSH1 0x20 000008b1: DUP5 000008b2: ADD 000008b3: CALLDATALOAD 000008b4: PUSH8 0xffffffffffffffff 000008bd: DUP2 000008be: GT 000008bf: ISZERO 000008c0: PUSH2 0x08cc 000008c3: JUMPI 000008c4: PUSH2 0x08cb 000008c7: PUSH2 0x06aa 000008ca: JUMP 000008cb: JUMPDEST 000008cc: JUMPDEST 000008cd: PUSH2 0x08d8 000008d0: DUP7 000008d1: DUP3 000008d2: DUP8 000008d3: ADD 000008d4: PUSH2 0x082e 000008d7: JUMP 000008d8: JUMPDEST 000008d9: SWAP3 000008da: POP 000008db: SWAP3 000008dc: POP 000008dd: POP 000008de: SWAP3 000008df: POP 000008e0: SWAP3 000008e1: POP 000008e2: SWAP3 000008e3: JUMP 000008e4: JUMPDEST 000008e5: PUSH2 0x08ed 000008e8: DUP2 000008e9: PUSH2 0x06af 000008ec: JUMP 000008ed: JUMPDEST 000008ee: DUP3 000008ef: MSTORE 000008f0: POP 000008f1: POP 000008f2: JUMP 000008f3: JUMPDEST 000008f4: PUSH1 0x00 000008f6: PUSH1 0x20 000008f8: DUP3 000008f9: ADD 000008fa: SWAP1 000008fb: POP 000008fc: PUSH2 0x0908 000008ff: PUSH1 0x00 00000901: DUP4 00000902: ADD 00000903: DUP5 00000904: PUSH2 0x08e4 00000907: JUMP 00000908: JUMPDEST 00000909: SWAP3 0000090a: SWAP2 0000090b: POP 0000090c: POP 0000090d: JUMP 0000090e: JUMPDEST 0000090f: PUSH2 0x0917 00000912: DUP2 00000913: PUSH2 0x0734 00000916: JUMP 00000917: JUMPDEST 00000918: DUP2 00000919: EQ 0000091a: PUSH2 0x0922 0000091d: JUMPI 0000091e: PUSH1 0x00 00000920: DUP1 00000921: REVERT 00000922: JUMPDEST 00000923: POP 00000924: JUMP 00000925: JUMPDEST 00000926: PUSH1 0x00 00000928: DUP2 00000929: MLOAD 0000092a: SWAP1 0000092b: POP 0000092c: PUSH2 0x0934 0000092f: DUP2 00000930: PUSH2 0x090e 00000933: JUMP 00000934: JUMPDEST 00000935: SWAP3 00000936: SWAP2 00000937: POP 00000938: POP 00000939: JUMP 0000093a: JUMPDEST 0000093b: PUSH1 0x00 0000093d: PUSH1 0x20 0000093f: DUP3 00000940: DUP5 00000941: SUB 00000942: SLT 00000943: ISZERO 00000944: PUSH2 0x0950 00000947: JUMPI 00000948: PUSH2 0x094f 0000094b: PUSH2 0x06a5 0000094e: JUMP 0000094f: JUMPDEST 00000950: JUMPDEST 00000951: PUSH1 0x00 00000953: PUSH2 0x095e 00000956: DUP5 00000957: DUP3 00000958: DUP6 00000959: ADD 0000095a: PUSH2 0x0925 0000095d: JUMP 0000095e: JUMPDEST 0000095f: SWAP2 00000960: POP 00000961: POP 00000962: SWAP3 00000963: SWAP2 00000964: POP 00000965: POP 00000966: JUMP 00000967: JUMPDEST 00000968: PUSH1 0x00 0000096a: DUP3 0000096b: DUP3 0000096c: MSTORE 0000096d: PUSH1 0x20 0000096f: DUP3 00000970: ADD 00000971: SWAP1 00000972: POP 00000973: SWAP3 00000974: SWAP2 00000975: POP 00000976: POP 00000977: JUMP 00000978: JUMPDEST 00000979: PUSH32 0x4e4f545f415554484f52495a4544000000000000000000000000000000000000 0000099a: PUSH1 0x00 0000099c: DUP3 0000099d: ADD 0000099e: MSTORE 0000099f: POP 000009a0: JUMP 000009a1: JUMPDEST 000009a2: PUSH1 0x00 000009a4: PUSH2 0x09ae 000009a7: PUSH1 0x0e 000009a9: DUP4 000009aa: PUSH2 0x0967 000009ad: JUMP 000009ae: JUMPDEST 000009af: SWAP2 000009b0: POP 000009b1: PUSH2 0x09b9 000009b4: DUP3 000009b5: PUSH2 0x0978 000009b8: JUMP 000009b9: JUMPDEST 000009ba: PUSH1 0x20 000009bc: DUP3 000009bd: ADD 000009be: SWAP1 000009bf: POP 000009c0: SWAP2 000009c1: SWAP1 000009c2: POP 000009c3: JUMP 000009c4: JUMPDEST 000009c5: PUSH1 0x00 000009c7: PUSH1 0x20 000009c9: DUP3 000009ca: ADD 000009cb: SWAP1 000009cc: POP 000009cd: DUP2 000009ce: DUP2 000009cf: SUB 000009d0: PUSH1 0x00 000009d2: DUP4 000009d3: ADD 000009d4: MSTORE 000009d5: PUSH2 0x09dd 000009d8: DUP2 000009d9: PUSH2 0x09a1 000009dc: JUMP 000009dd: JUMPDEST 000009de: SWAP1 000009df: POP 000009e0: SWAP2 000009e1: SWAP1 000009e2: POP 000009e3: JUMP 000009e4: JUMPDEST 000009e5: PUSH1 0x00 000009e7: DUP2 000009e8: MLOAD 000009e9: SWAP1 000009ea: POP 000009eb: SWAP2 000009ec: SWAP1 000009ed: POP 000009ee: JUMP 000009ef: JUMPDEST 000009f0: PUSH1 0x00 000009f2: DUP2 000009f3: SWAP1 000009f4: POP 000009f5: SWAP3 000009f6: SWAP2 000009f7: POP 000009f8: POP 000009f9: JUMP 000009fa: JUMPDEST 000009fb: PUSH1 0x00 000009fd: JUMPDEST 000009fe: DUP4 000009ff: DUP2 00000a00: LT 00000a01: ISZERO 00000a02: PUSH2 0x0a18 00000a05: JUMPI 00000a06: DUP1 00000a07: DUP3 00000a08: ADD 00000a09: MLOAD 00000a0a: DUP2 00000a0b: DUP5 00000a0c: ADD 00000a0d: MSTORE 00000a0e: PUSH1 0x20 00000a10: DUP2 00000a11: ADD 00000a12: SWAP1 00000a13: POP 00000a14: PUSH2 0x09fd 00000a17: JUMP 00000a18: JUMPDEST 00000a19: DUP4 00000a1a: DUP2 00000a1b: GT 00000a1c: ISZERO 00000a1d: PUSH2 0x0a27 00000a20: JUMPI 00000a21: PUSH1 0x00 00000a23: DUP5 00000a24: DUP5 00000a25: ADD 00000a26: MSTORE 00000a27: JUMPDEST 00000a28: POP 00000a29: POP 00000a2a: POP 00000a2b: POP 00000a2c: JUMP 00000a2d: JUMPDEST 00000a2e: PUSH1 0x00 00000a30: PUSH2 0x0a38 00000a33: DUP3 00000a34: PUSH2 0x09e4 00000a37: JUMP 00000a38: JUMPDEST 00000a39: PUSH2 0x0a42 00000a3c: DUP2 00000a3d: DUP6 00000a3e: PUSH2 0x09ef 00000a41: JUMP 00000a42: JUMPDEST 00000a43: SWAP4 00000a44: POP 00000a45: PUSH2 0x0a52 00000a48: DUP2 00000a49: DUP6 00000a4a: PUSH1 0x20 00000a4c: DUP7 00000a4d: ADD 00000a4e: PUSH2 0x09fa 00000a51: JUMP 00000a52: JUMPDEST 00000a53: DUP1 00000a54: DUP5 00000a55: ADD 00000a56: SWAP2 00000a57: POP 00000a58: POP 00000a59: SWAP3 00000a5a: SWAP2 00000a5b: POP 00000a5c: POP 00000a5d: JUMP 00000a5e: JUMPDEST 00000a5f: PUSH1 0x00 00000a61: PUSH2 0x0a6a 00000a64: DUP3 00000a65: DUP5 00000a66: PUSH2 0x0a2d 00000a69: JUMP 00000a6a: JUMPDEST 00000a6b: SWAP2 00000a6c: POP 00000a6d: DUP2 00000a6e: SWAP1 00000a6f: POP 00000a70: SWAP3 00000a71: SWAP2 00000a72: POP 00000a73: POP 00000a74: JUMP 00000a75: INVALID 00000a76: LOG2 00000a77: PUSH5 0x6970667358 00000a7d: UNKNOWN(0x22) 00000a7e: SLT 00000a7f: KECCAK256 00000a80: UNKNOWN(0xD9) 00000a81: UNKNOWN(0xE7) 00000a82: RETURNDATASIZE 00000a83: DIV 00000a84: PUSH30 0x068f7b0a69ce10e0c4ea0c67f2068657f56595289afaab015e61fc64736f 00000aa3: PUSH13
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0x2e338637ee4912056b4e09a63dcab8a46adca01e6a2f058fa2a304c89971fd0d
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 60,
"trace_id": "0x2e338637ee4912056b4e09a63dcab8a46adca01e6a2f058fa2a304c89971fd0d",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3659cfe6",
"selector": "0x3659cfe6",
"calldata_variants": [
"0x3659cfe6",
"0x3659cfe60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3e47158c",
"selector": "0x3e47158c",
"calldata_variants": [
"0x3e47158c",
"0x3e47158c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4f1ef286",
"selector": "0x4f1ef286",
"calldata_variants": [
"0x4f1ef286",
"0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8356ca4f",
"selector": "0x8356ca4f",
"calldata_variants": [
"0x8356ca4f",
"0x8356ca4f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 365,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 1481,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 758,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 918,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1118,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"delegatecall_count": 2,
"untrusted_delegatecall_count": 2
}
|
| high | upgradeability | slither | Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88) uses delegatecall to a input-controlled function id | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "controlled-delegatecall",
"elements": [
{
"name": "_setImplementation",
"type": "function",
"source_mapping": {
"lines": [
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88
],
"start": 1567,
"length": 1190,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
"filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
},
"type_specific_fields": {
"parent": {
"name": "Proxy",
"type": "contract",
"source_mapping": {
"lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89
],
"start": 74,
"length": 2685,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
"filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
}
},
"signature": "_setImplementation(address,bytes)"
}
},
{
"name": "(success,None) = newImplementation.delegatecall(data)",
"type": "node",
"source_mapping": {
"lines": [
78
],
"start": 2350,
"length": 55,
"ending_column": 68,
"is_dependency": false,
"filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
"filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
},
"type_specific_fields": {
"parent": {
"name": "_setImplementation",
"type": "function",
"source_mapping": {
"lines": [
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88
],
"start": 1567,
"length": 1190,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
"filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
},
"type_specific_fields": {
"parent": {
"name": "Proxy",
"type": "contract",
"source_mapping": {
"lines": [
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89
],
"start": 74,
"length": 2685,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/vendor/proxy/EIP173/Proxy.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-8tupb70d/contracts/vendor/proxy/EIP173/Proxy.sol",
"filename_relative": "contracts/vendor/proxy/EIP173/Proxy.sol"
}
},
"signature": "_setImplementation(address,bytes)"
}
}
}
}
],
"locations": [
{
"file": "contracts/vendor/proxy/EIP173/Proxy.sol",
"name": "_setImplementation",
"type": "function",
"lines": [
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88
]
},
{
"file": "contracts/vendor/proxy/EIP173/Proxy.sol",
"name": "(success,None) = newImplementation.delegatecall(data)",
"type": "node",
"lines": [
78
]
}
],
"description": "Proxy._setImplementation(address,bytes) (contracts/vendor/proxy/EIP173/Proxy.sol#53-88) uses delegatecall to a input-controlled function id\n\t- (success,None) = newImplementation.delegatecall(data) (contracts/vendor/proxy/EIP173/Proxy.sol#78)"
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 2
}
|