845cb09f-5c1f-4394-8c8b-28bd2c6cb69a
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 |
|---|---|---|---|---|
| 30640 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 74836 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 74837 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 74838 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 74839 | capability.graph | complete | 1 / 3 | 1 week ago |
| 74840 | detector.run | complete | 1 / 3 | 1 week ago |
| 74841 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1458835] OpenAI Codex v0.77.0 (research preview)
[codex:1458835] --------
[codex:1458835] workdir: /tmp/codex-multi-_f45fyky
[codex:1458835] model: gpt-5.2-codex
[codex:1458835] provider: openai
[codex:1458835] approval: never
[codex:1458835] sandbox: read-only
[codex:1458835] reasoning effort: xhigh
[codex:1458835] reasoning summaries: auto
[codex:1458835] session id: 019b6cc3-e5d2-7f62-8bc5-20aabf5a246a
[codex:1458835] --------
[codex:1458835] user
[codex:1458835] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1458835] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1458835] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1458835]
[codex:1458835] Scope rules:
[codex:1458835] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1458835] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1458835]
[codex:1458835] Output MUST be valid JSON matching the provided schema.
[codex:1458835] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1458835] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1458835]
[codex:1458835] Output constraints (IMPORTANT):
[codex:1458835] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1458835] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1458835] mcp startup: no servers
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Preparing to audit skills**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc ls in /tmp/codex-multi-_f45fyky succeeded in 5ms:
[codex:1458835] AUDIT_BUNDLE.txt
[codex:1458835] codex-output-schema.json
[codex:1458835] contracts
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'rg -n "" AUDIT_BUNDLE.txt' in /tmp/codex-multi-_f45fyky succeeded in 7ms:
[codex:1458835] 1:This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1458835] 2:
[codex:1458835] 3:================================================================================
[codex:1458835] 4:FILE: contracts/lib/openzeppelin-contracts/contracts/access/Ownable.sol
[codex:1458835] 5:================================================================================
[codex:1458835] 6:// SPDX-License-Identifier: MIT
[codex:1458835] 7:// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
[codex:1458835] 8:
[codex:1458835] 9:pragma solidity ^0.8.20;
[codex:1458835] 10:
[codex:1458835] 11:import {Context} from "../utils/Context.sol";
[codex:1458835] 12:
[codex:1458835] 13:/**
[codex:1458835] 14: * @dev Contract module which provides a basic access control mechanism, where
[codex:1458835] 15: * there is an account (an owner) that can be granted exclusive access to
[codex:1458835] 16: * specific functions.
[codex:1458835] 17: *
[codex:1458835] 18: * The initial owner is set to the address provided by the deployer. This can
[codex:1458835] 19: * later be changed with {transferOwnership}.
[codex:1458835] 20: *
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Identifying first-party contract files**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'rg -n "FILE: contracts/src" AUDIT_BUNDLE.txt' in /tmp/codex-multi-_f45fyky succeeded in 7ms:
[codex:1458835] 2742:FILE: contracts/src/KRWT.sol
[codex:1458835] 2905:FILE: contracts/src/KRWTCustodian.sol
[codex:1458835] 3492:FILE: contracts/src/KRWTCustodianWithOracle.sol
[codex:1458835] 3757:FILE: contracts/src/interfaces/AggregatorV3Interface.sol
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Preparing to read key Solidity files**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc "sed -n '2742,3491p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-_f45fyky succeeded in 6ms:
[codex:1458835] FILE: contracts/src/KRWT.sol
[codex:1458835] ================================================================================
[codex:1458835] // SPDX-License-Identifier: MIT
[codex:1458835] // @version 0.2.8
[codex:1458835] pragma solidity ^0.8.24;
[codex:1458835]
[codex:1458835] /*
[codex:1458835] +--------------------------------------------------------------+
[codex:1458835] | $* *8* |
[codex:1458835] | 88 $* "*8" . |
[codex:1458835] | 88 88 $* *8* 8 *, |
[codex:1458835] | 88 88 88 "*8 * "*8* |
[codex:1458835] | 88 88 88 *8 * "*8 * , |
[codex:1458835] | *$ 88 88 " *8" . "*8* |
[codex:1458835] | *$ 88 .-888-. 8 * , |
[codex:1458835] | *$ .888red888. "*8* |
[codex:1458835] | ,888888.*;;*. |
[codex:1458835] | 888888*;;;;;` |
[codex:1458835] | 888888*;;;;;j |
[codex:1458835] | `*00*";;;;;.' |
[codex:1458835]
[codex:1458835]
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Reviewing contract security and logic**
[codex:1458835]
[codex:1458835] I'm carefully auditing the KRWT token and custodian contracts for common vulnerabilities like improper initialization, access control flaws, oracle manipulation, reentrancy, and accounting inconsistencies. I notice some upgradeable proxy patterns lack initializer guards, allowing potential takeover if uninitialized. There's a bug allowing mint/redeem fees to be set incorrectly, risking denial-of-service by owner misconfiguration. The signature validation with ERC20Permit may malfunction due to immutable EIP712 domains not updated in proxies. Oracle usage seems mostly safe but calls external oracles before reentrancy guards, which could raise theoretical issues. Overall, I'm weighing functional risks versus exploitable vulnerabilities while keeping focus on deployment patterns and trust assumptions.
[codex:1458835] thinking
[codex:1458835] **Examining token burn effects and ownership reinitialization risks**
[codex:1458835]
[codex:1458835] I’m analyzing how ERC20Burnable’s direct burns impact krwtMinted tracking, which can cause mint cap to be inaccurately high but not pose theft risk. A notable flaw is that if ownership is renounced in KRWT, anyone can call initialize again to reclaim ownership and add minters, leading to a serious access control problem. I also explore how constructor-based immutables conflict with proxy upgradeability expectations, causing potential domain separation and initialization mismatches. The oracle integration and fee-setting logic show minor issues or misconfigurations but mostly under owner control. Overall, the interplay of ownership renouncing and initializer design stands out as a critical concern.
[codex:1458835] thinking
[codex:1458835] **Analyzing oracle timing, minting logic, and initializer vulnerabilities**
[codex:1458835]
[codex:1458835] I'm reviewing oracle price caching and find that using block number to track updates avoids intra-block manipulation risks. However, the KRWT token’s initialize function allows reinitialization if ownership is renounced, which lets anyone retake ownership and add minters—a critical access control flaw. The presence of multiple minters poses a design risk where unauthorized minting can lead to asset draining from the custodian. Also, the EIP-712 domain mismatch due to immutable constructor-set names may cause signature validation issues, mostly causing functional problems rather than security breaches. There’s a subtle owner-controlled fee-setting bug that can cause deposit operations to fail. Overall, proxy use combined with constructor immutables and public initializers introduces several important upgradeability and access control concerns.
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'nl -ba contracts/src/KRWT.sol' in /tmp/codex-multi-_f45fyky succeeded in 7ms:
[codex:1458835] 1 // SPDX-License-Identifier: MIT
[codex:1458835] 2 // @version 0.2.8
[codex:1458835] 3 pragma solidity ^0.8.24;
[codex:1458835] 4
[codex:1458835] 5 /*
[codex:1458835] 6 +--------------------------------------------------------------+
[codex:1458835] 7 | $* *8* |
[codex:1458835] 8 | 88 $* "*8" . |
[codex:1458835] 9 | 88 88 $* *8* 8 *, |
[codex:1458835] 10 | 88 88 88 "*8 * "*8* |
[codex:1458835] 11 | 88 88 88 *8 * "*8 * , |
[codex:1458835] 12 | *$ 88 88 " *8" . "*8* |
[codex:1458835] 13 | *$ 88 .-888-. 8 * , |
[codex:1458835] 14 | *$ .888red888. "*8* |
[codex:1458835] 15 | ,888888.*;;*. |
[codex:1458835] 16 | 888888*;;;;;` |
[codex:1458835] 17 | 888888*;;;;;j |
[codex:1458835] 18 | `*00*";;;;;.' |
[codex:1458835] 19 | *8* `;;;blue;;' $* |
[codex:1458835] 20 | "*8 * `-;;;-' 88 $* |
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Adding line numbers to KRWTCustodian**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'nl -ba contracts/src/KRWTCustodian.sol' in /tmp/codex-multi-_f45fyky succeeded in 6ms:
[codex:1458835] 1 // SPDX-License-Identifier: MIT
[codex:1458835] 2 // @version 0.2.8
[codex:1458835] 3 pragma solidity ^0.8.24;
[codex:1458835] 4
[codex:1458835] 5 /*
[codex:1458835] 6 +--------------------------------------------------------------+
[codex:1458835] 7 | $* *8* |
[codex:1458835] 8 | 88 $* "*8" . |
[codex:1458835] 9 | 88 88 $* *8* 8 *, |
[codex:1458835] 10 | 88 88 88 "*8 * "*8* |
[codex:1458835] 11 | 88 88 88 *8 * "*8 * , |
[codex:1458835] 12 | *$ 88 88 " *8" . "*8* |
[codex:1458835] 13 | *$ 88 .-888-. 8 * , |
[codex:1458835] 14 | *$ .888red888. "*8* |
[codex:1458835] 15 | ,888888.*;;*. |
[codex:1458835] 16 | 888888*;;;;;` |
[codex:1458835] 17 | 888888*;;;;;j |
[codex:1458835] 18 | `*00*";;;;;.' |
[codex:1458835] 19 | *8* `;;;blue;;' $* |
[codex:1458835] 20 | "*8 * `-;;;-' 88 $* |
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Locating KRWTCustodianWithOracle lines**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'nl -ba contracts/src/KRWTCustodianWithOracle.sol' in /tmp/codex-multi-_f45fyky succeeded in 5ms:
[codex:1458835] 1 // SPDX-License-Identifier: MIT
[codex:1458835] 2 // @version 0.2.8
[codex:1458835] 3 pragma solidity ^0.8.24;
[codex:1458835] 4
[codex:1458835] 5 /*
[codex:1458835] 6 +--------------------------------------------------------------+
[codex:1458835] 7 | $* *8* |
[codex:1458835] 8 | 88 $* "*8" . |
[codex:1458835] 9 | 88 88 $* *8* 8 *, |
[codex:1458835] 10 | 88 88 88 "*8 * "*8* |
[codex:1458835] 11 | 88 88 88 *8 * "*8 * , |
[codex:1458835] 12 | *$ 88 88 " *8" . "*8* |
[codex:1458835] 13 | *$ 88 .-888-. 8 * , |
[codex:1458835] 14 | *$ .888red888. "*8* |
[codex:1458835] 15 | ,888888.*;;*. |
[codex:1458835] 16 | 888888*;;;;;` |
[codex:1458835] 17 | 888888*;;;;;j |
[codex:1458835] 18 | `*00*";;;;;.' |
[codex:1458835] 19 | *8* `;;;blue;;' $* |
[codex:1458835] 20 | "*8 * `-;;;-' 88 $* |
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Summarizing detailed vulnerability analysis**
[codex:1458835]
[codex:1458835] I'm carefully reviewing potential issues like unprotected initializers leading to proxy takeovers, the risk after ownership renounce allowing reinitialization and takeover, a bug in fee validation that can cause transaction reverts, signature domain mismatches affecting permits, and oracle manipulation risks. I'll weigh each finding's impact and categorize severity to produce clear, evidence-backed audit points.
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'rg -n "contract ERC20Permit" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-_f45fyky succeeded in 7ms:
[codex:1458835] 835:abstract contract ERC20Permit is ERC20, IERC20Permit, EIP712, Nonces {
[codex:1458835] exec
[codex:1458835] /bin/bash -lc "sed -n '760,900p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-_f45fyky succeeded in 6ms:
[codex:1458835] * allowance mechanism. `value` is then deducted from the caller's
[codex:1458835] * allowance.
[codex:1458835] *
[codex:1458835] * Returns a boolean value indicating whether the operation succeeded.
[codex:1458835] *
[codex:1458835] * Emits a {Transfer} event.
[codex:1458835] */
[codex:1458835] function transferFrom(address from, address to, uint256 value) external returns (bool);
[codex:1458835] }
[codex:1458835]
[codex:1458835] ================================================================================
[codex:1458835] FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol
[codex:1458835] ================================================================================
[codex:1458835] // SPDX-License-Identifier: MIT
[codex:1458835] // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Burnable.sol)
[codex:1458835]
[codex:1458835] pragma solidity ^0.8.20;
[codex:1458835]
[codex:1458835] import {ERC20} from "../ERC20.sol";
[codex:1458835] import {Context} from "../../../utils/Context.sol";
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Checking EIP712 implementation in OZ v5**
[codex:1458835] exec
[codex:1458835] /bin/bash -lc 'rg -n "contract EIP712" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-_f45fyky succeeded in 6ms:
[codex:1458835] 2057:abstract contract EIP712 is IERC5267 {
[codex:1458835] exec
[codex:1458835] /bin/bash -lc "sed -n '2050,2140p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-_f45fyky succeeded in 5ms:
[codex:1458835] *
[codex:1458835] * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain
[codex:1458835] * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the
[codex:1458835] * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.
[codex:1458835] *
[codex:1458835] * @custom:oz-upgrades-unsafe-allow state-variable-immutable
[codex:1458835] */
[codex:1458835] abstract contract EIP712 is IERC5267 {
[codex:1458835] using ShortStrings for *;
[codex:1458835]
[codex:1458835] bytes32 private constant TYPE_HASH =
[codex:1458835] keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)");
[codex:1458835]
[codex:1458835] // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to
[codex:1458835] // invalidate the cached domain separator if the chain id changes.
[codex:1458835] bytes32 private immutable _cachedDomainSeparator;
[codex:1458835] uint256 private immutable _cachedChainId;
[codex:1458835] address private immutable _cachedThis;
[codex:1458835]
[codex:1458835] bytes32 private immutable _hashedName;
[codex:1458835]
[codex:1458835]
[codex:1458835] thinking
[codex:1458835] **Summarizing Solidity audit findings**
[codex:1458835] thinking
[codex:1458835] **Compiling audit findings into JSON**
[codex:1458835]
[codex:1458835] I’m assembling a detailed JSON summary with four findings covering initialization risks, fee validation bugs, and EIP712 domain mismatch issues, including descriptions, exploit scenarios, recommendations, evidence, and precise code locations.
[codex:1458835] codex
[codex:1458835] {"no_findings":false,"summary":"Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.","findings":[{"severity":"high","category":"upgradeability","title":"Public initializers enable proxy takeover if not called atomically","exploit_scenario":"A proxy is deployed pointing to `KRWT`, `KRWTCustodian`, or `KRWTCustodianWithOracle` without calling `initialize` in the same transaction. An attacker calls `initialize` first, becomes owner, then can add themselves as a minter (KRWT) or call `recoverERC20` to drain custodian assets / change oracle/fees.","recommendation":"Use OpenZeppelin `Initializable` with `initializer` modifiers and disable initializers in the implementation. Ensure proxy deployment calls `initialize` atomically (e.g., via proxy constructor/`upgradeToAndCall`).","evidence":"`initialize` is public and only guarded by `owner()==address(0)` or `wasInitialized` checks.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWTCustodian.sol:96","contracts/src/KRWTCustodianWithOracle.sol:90"]},{"severity":"medium","category":"access_control","title":"KRWT ownership can be reclaimed after renounce via initialize","exploit_scenario":"If the owner calls `renounceOwnership`, `owner()` becomes `address(0)` and any account can call `initialize`, take ownership, add themselves as a minter, and mint arbitrary KRWT.","recommendation":"Gate `initialize` with a dedicated `initialized` flag or `Initializable` so it cannot be called again even if ownership is renounced; alternatively remove/override `renounceOwnership`.","evidence":"`initialize` only checks `owner() == address(0)` then transfers ownership to the caller-supplied owner.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWT.sol:64"]},{"severity":"low","category":"math","title":"Fee validation uses OR, allowing invalid fees that break mint/withdraw math","exploit_scenario":"Owner sets `mintFee >= 1e18` while `redeemFee < 1e18` (or vice‑versa), passing the `||` check. Subsequent `previewMint`/`previewWithdraw` computations can divide by zero or underflow, causing deposits or withdrawals to revert (DoS).","recommendation":"Require both fees to be strictly less than `1e18` (use `&&`) and validate each fee individually.","evidence":"`setMintRedeemFee` validates with `require(_mintFee < 1e18 || _redeemFee < 1e18, ...)`.","locations":["contracts/src/KRWTCustodian.sol:494"]},{"severity":"info","category":"auth","title":"Proxy initializer updates name/symbol without updating EIP-712 domain","exploit_scenario":"When deployed behind a proxy, `initialize` mutates token name/symbol via storage slots, but `ERC20Permit`’s EIP‑712 domain is fixed in the implementation constructor. Off‑chain clients signing permits with the updated name will fail validation, effectively disabling permit-based approvals.","recommendation":"Use `ERC20PermitUpgradeable`/`EIP712Upgradeable` and initialize the domain in `initialize`, or avoid mutating name/symbol after deployment for permit-enabled tokens.","evidence":"`initialize` writes name/symbol via `StorageSlot` instead of constructing `ERC20Permit` with the runtime name.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWT.sol:65"]}]}
[codex:1458835] tokens used
[codex:1458835] 62,368
[codex:1458835] {"no_findings":false,"summary":"Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.","findings":[{"severity":"high","category":"upgradeability","title":"Public initializers enable proxy takeover if not called atomically","exploit_scenario":"A proxy is deployed pointing to `KRWT`, `KRWTCustodian`, or `KRWTCustodianWithOracle` without calling `initialize` in the same transaction. An attacker calls `initialize` first, becomes owner, then can add themselves as a minter (KRWT) or call `recoverERC20` to drain custodian assets / change oracle/fees.","recommendation":"Use OpenZeppelin `Initializable` with `initializer` modifiers and disable initializers in the implementation. Ensure proxy deployment calls `initialize` atomically (e.g., via proxy constructor/`upgradeToAndCall`).","evidence":"`initialize` is public and only guarded by `owner()==address(0)` or `wasInitialized` checks.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWTCustodian.sol:96","contracts/src/KRWTCustodianWithOracle.sol:90"]},{"severity":"medium","category":"access_control","title":"KRWT ownership can be reclaimed after renounce via initialize","exploit_scenario":"If the owner calls `renounceOwnership`, `owner()` becomes `address(0)` and any account can call `initialize`, take ownership, add themselves as a minter, and mint arbitrary KRWT.","recommendation":"Gate `initialize` with a dedicated `initialized` flag or `Initializable` so it cannot be called again even if ownership is renounced; alternatively remove/override `renounceOwnership`.","evidence":"`initialize` only checks `owner() == address(0)` then transfers ownership to the caller-supplied owner.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWT.sol:64"]},{"severity":"low","category":"math","title":"Fee validation uses OR, allowing invalid fees that break mint/withdraw math","exploit_scenario":"Owner sets `mintFee >= 1e18` while `redeemFee < 1e18` (or vice‑versa), passing the `||` check. Subsequent `previewMint`/`previewWithdraw` computations can divide by zero or underflow, causing deposits or withdrawals to revert (DoS).","recommendation":"Require both fees to be strictly less than `1e18` (use `&&`) and validate each fee individually.","evidence":"`setMintRedeemFee` validates with `require(_mintFee < 1e18 || _redeemFee < 1e18, ...)`.","locations":["contracts/src/KRWTCustodian.sol:494"]},{"severity":"info","category":"auth","title":"Proxy initializer updates name/symbol without updating EIP-712 domain","exploit_scenario":"When deployed behind a proxy, `initialize` mutates token name/symbol via storage slots, but `ERC20Permit`’s EIP‑712 domain is fixed in the implementation constructor. Off‑chain clients signing permits with the updated name will fail validation, effectively disabling permit-based approvals.","recommendation":"Use `ERC20PermitUpgradeable`/`EIP712Upgradeable` and initialize the domain in `initialize`, or avoid mutating name/symbol after deployment for permit-enabled tokens.","evidence":"`initialize` writes name/symbol via `StorageSlot` instead of constructing `ERC20Permit` with the runtime name.","locations":["contracts/src/KRWT.sol:62","contracts/src/KRWT.sol:65"]}]}
{
"codex": {
"ran_at": "2025-12-30T01:04:59.854450+00:00",
"returncode": 0
},
"summary": "Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.",
"raw_final": {
"summary": "Found 4 issues: unprotected proxy initializers can enable ownership takeover, KRWT can be reinitialized after renounce, fee validation allows invalid values that can DoS mint/withdraw flows, and ERC20Permit domain mismatch when using the proxy initializer.",
"findings": [
{
"title": "Public initializers enable proxy takeover if not called atomically",
"category": "upgradeability",
"evidence": "`initialize` is public and only guarded by `owner()==address(0)` or `wasInitialized` checks.",
"severity": "high",
"locations": [
"contracts/src/KRWT.sol:62",
"contracts/src/KRWTCustodian.sol:96",
"contracts/src/KRWTCustodianWithOracle.sol:90"
],
"recommendation": "Use OpenZeppelin `Initializable` with `initializer` modifiers and disable initializers in the implementation. Ensure proxy deployment calls `initialize` atomically (e.g., via proxy constructor/`upgradeToAndCall`).",
"exploit_scenario": "A proxy is deployed pointing to `KRWT`, `KRWTCustodian`, or `KRWTCustodianWithOracle` without calling `initialize` in the same transaction. An attacker calls `initialize` first, becomes owner, then can add themselves as a minter (KRWT) or call `recoverERC20` to drain custodian assets / change oracle/fees."
},
{
"title": "KRWT ownership can be reclaimed after renounce via initialize",
"category": "access_control",
"evidence": "`initialize` only checks `owner() == address(0)` then transfers ownership to the caller-supplied owner.",
"severity": "medium",
"locations": [
"contracts/src/KRWT.sol:62",
"contracts/src/KRWT.sol:64"
],
"recommendation": "Gate `initialize` with a dedicated `initialized` flag or `Initializable` so it cannot be called again even if ownership is renounced; alternatively remove/override `renounceOwnership`.",
"exploit_scenario": "If the owner calls `renounceOwnership`, `owner()` becomes `address(0)` and any account can call `initialize`, take ownership, add themselves as a minter, and mint arbitrary KRWT."
},
{
"title": "Fee validation uses OR, allowing invalid fees that break mint/withdraw math",
"category": "math",
"evidence": "`setMintRedeemFee` validates with `require(_mintFee < 1e18 || _redeemFee < 1e18, ...)`.",
"severity": "low",
"locations": [
"contracts/src/KRWTCustodian.sol:494"
],
"recommendation": "Require both fees to be strictly less than `1e18` (use `&&`) and validate each fee individually.",
"exploit_scenario": "Owner sets `mintFee >= 1e18` while `redeemFee < 1e18` (or vice\u2011versa), passing the `||` check. Subsequent `previewMint`/`previewWithdraw` computations can divide by zero or underflow, causing deposits or withdrawals to revert (DoS)."
},
{
"title": "Proxy initializer updates name/symbol without updating EIP-712 domain",
"category": "auth",
"evidence": "`initialize` writes name/symbol via `StorageSlot` instead of constructing `ERC20Permit` with the runtime name.",
"severity": "info",
"locations": [
"contracts/src/KRWT.sol:62",
"contracts/src/KRWT.sol:65"
],
"recommendation": "Use `ERC20PermitUpgradeable`/`EIP712Upgradeable` and initialize the domain in `initialize`, or avoid mutating name/symbol after deployment for permit-enabled tokens.",
"exploit_scenario": "When deployed behind a proxy, `initialize` mutates token name/symbol via storage slots, but `ERC20Permit`\u2019s EIP\u2011712 domain is fixed in the implementation constructor. Off\u2011chain clients signing permits with the updated name will fail validation, effectively disabling permit-based approvals."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: SWAP1 00000005: DUP1 00000006: DUP3 00000007: MSTORE 00000008: PUSH1 0x04 0000000a: DUP1 0000000b: CALLDATASIZE 0000000c: LT 0000000d: ISZERO 0000000e: PUSH2 0x0015 00000011: JUMPI 00000012: PUSH0 00000013: DUP1 00000014: REVERT 00000015: JUMPDEST 00000016: PUSH0 00000017: SWAP3 00000018: PUSH0 00000019: CALLDATALOAD 0000001a: PUSH1 0xe0 0000001c: SHR 0000001d: SWAP3 0000001e: DUP4 0000001f: PUSH4 0x01e1d114 00000024: EQ 00000025: PUSH2 0x17ca 00000028: JUMPI 00000029: POP 0000002a: DUP3 0000002b: PUSH4 0x07a2d13a 00000030: EQ 00000031: PUSH2 0x175e 00000034: JUMPI 00000035: DUP3 00000036: PUSH4 0x0a28a477 0000003b: EQ 0000003c: PUSH2 0x1741 0000003f: JUMPI 00000040: DUP3 00000041: PUSH4 0x0c424284 00000046: EQ 00000047: PUSH2 0x16c5 0000004a: JUMPI 0000004b: DUP3 0000004c: PUSH4 0x13966db5 00000051: EQ 00000052: PUSH2 0x16aa 00000055: JUMPI 00000056: DUP3 00000057: PUSH4 0x18160ddd 0000005c: EQ 0000005d: PUSH2 0x1605 00000060: JUMPI 00000061: DUP3 00000062: PUSH4 0x1ee5e23a 00000067: EQ 00000068: PUSH2 0x15c3 0000006b: JUMPI 0000006c: DUP3 0000006d: PUSH4 0x38d52e0f 00000072: EQ 00000073: PUSH2 0x0a91 00000076: JUMPI 00000077: DUP3 00000078: PUSH4 0x402d267d 0000007d: EQ 0000007e: PUSH2 0x159e 00000081: JUMPI 00000082: DUP3 00000083: PUSH4 0x4070a0c9 00000088: EQ 00000089: PUSH2 0x1552 0000008c: JUMPI 0000008d: DUP3 0000008e: PUSH4 0x4cdad506 00000093: EQ 00000094: PUSH2 0x1535 00000097: JUMPI 00000098: DUP3 00000099: PUSH4 0x4ec81af1 0000009e: EQ 0000009f: PUSH2 0x1508 000000a2: JUMPI 000000a3: DUP3 000000a4: PUSH4 0x5bedcc65 000000a9: EQ 000000aa: PUSH2 0x14e6 000000ad: JUMPI 000000ae: DUP3 000000af: PUSH4 0x5cbcec4e 000000b4: EQ 000000b5: PUSH2 0x1485 000000b8: JUMPI 000000b9: DUP3 000000ba: PUSH4 0x681f3380 000000bf: EQ 000000c0: PUSH2 0x145e 000000c3: JUMPI 000000c4: DUP3 000000c5: PUSH4 0x6e553f65 000000ca: EQ 000000cb: PUSH2 0x1271 000000ce: JUMPI 000000cf: DUP3 000000d0: PUSH4 0x70a08231 000000d5: EQ 000000d6: PUSH2 0x11bd 000000d9: JUMPI 000000da: DUP3 000000db: PUSH4 0x715018a6 000000e0: EQ 000000e1: PUSH2 0x115a 000000e4: JUMPI 000000e5: DUP3 000000e6: PUSH4 0x72649cca 000000eb: EQ 000000ec: PUSH2 0x1106 000000ef: JUMPI 000000f0: DUP3 000000f1: PUSH4 0x74027fca 000000f6: EQ 000000f7: PUSH2 0x10e9 000000fa: JUMPI 000000fb: DUP3 000000fc: PUSH4 0x74304911 00000101: EQ 00000102: PUSH2 0x10ad 00000105: JUMPI 00000106: DUP3 00000107: PUSH4 0x76c71ca1 0000010c: EQ 0000010d: PUSH2 0x1090 00000110: JUMPI 00000111: DUP3 00000112: PUSH4 0x79ba5097 00000117: EQ 00000118: PUSH2 0x104a 0000011b: JUMPI 0000011c: DUP3 0000011d: PUSH4 0x86489ba9 00000122: EQ 00000123: PUSH2 0x0fa1 00000126: JUMPI 00000127: DUP3 00000128: PUSH4 0x8980f11f 0000012d: EQ 0000012e: PUSH2 0x0f18 00000131: JUMPI 00000132: DUP3 00000133: PUSH4 0x8b2ebdaa 00000138: EQ 00000139: PUSH2 0x0efd 0000013c: JUMPI 0000013d: DUP3 0000013e: PUSH4 0x8b8b6c16 00000143: EQ 00000144: PUSH2 0x0e63 00000147: JUMPI 00000148: DUP3 00000149: PUSH4 0x8da5cb5b 0000014e: EQ 0000014f: PUSH2 0x0e3d 00000152: JUMPI 00000153: DUP3 00000154: PUSH4 0x94bf804d 00000159: EQ 0000015a: PUSH2 0x0c08 0000015d: JUMPI 0000015e: DUP3 0000015f: PUSH4 0x965fa21e 00000164: EQ 00000165: PUSH2 0x0beb 00000168: JUMPI 00000169: DUP3 0000016a: PUSH4 0x968de9a2 0000016f: EQ 00000170: PUSH2 0x0baf 00000173: JUMPI 00000174: DUP3 00000175: PUSH4 0x99530b06 0000017a: EQ 0000017b: PUSH2 0x0b2b 0000017e: JUMPI 0000017f: DUP3 00000180: PUSH4 0x9ae8528e 00000185: EQ 00000186: PUSH2 0x0b0e 00000189: JUMPI 0000018a: DUP3 0000018b: PUSH4 0x9b19251a 00000190: EQ 00000191: PUSH2 0x0ad3 00000194: JUMPI 00000195: DUP3 00000196: PUSH4 0x9de54cd3 0000019b: EQ 0000019c: PUSH2 0x0a91 0000019f: JUMPI 000001a0: DUP3 000001a1: PUSH4 0xb335fda3 000001a6: EQ 000001a7: PUSH2 0x09e4 000001aa: JUMPI 000001ab: DUP3 000001ac: PUSH4 0xb3d7f6b9 000001b1: EQ 000001b2: PUSH2 0x09c7 000001b5: JUMPI 000001b6: DUP3 000001b7: PUSH4 0xb460af94 000001bc: EQ 000001bd: PUSH2 0x07d7 000001c0: JUMPI 000001c1: DUP3 000001c2: PUSH4 0xb609d0e6 000001c7: EQ 000001c8: PUSH2 0x07b8 000001cb: JUMPI 000001cc: DUP3 000001cd: PUSH4 0xba087652 000001d2: EQ 000001d3: PUSH2 0x05c5 000001d6: JUMPI 000001d7: DUP3 000001d8: PUSH4 0xc63d75b6 000001dd: EQ 000001de: PUSH2 0x059e 000001e1: JUMPI 000001e2: DUP3 000001e3: PUSH4 0xc6e6f592 000001e8: EQ 000001e9: PUSH2 0x0510 000001ec: JUMPI 000001ed: DUP3 000001ee: PUSH4 0xce96cb77 000001f3: EQ 000001f4: PUSH2 0x04ea 000001f7: JUMPI 000001f8: DUP3 000001f9: PUSH4 0xcede91a4 000001fe: EQ 000001ff: PUSH2 0x04cb 00000202: JUMPI 00000203: DUP3 00000204: PUSH4 0xd905777e 00000209: EQ 0000020a: PUSH2 0x04a5 0000020d: JUMPI 0000020e: DUP3 0000020f: PUSH4 0xd9afa60c 00000214: EQ 00000215: PUSH2 0x0359 00000218: JUMPI 00000219: DUP3 0000021a: PUSH4 0xdc9a1535 0000021f: EQ 00000220: PUSH2 0x0335 00000223: JUMPI 00000224: DUP3 00000225: PUSH4 0xe30c3978 0000022a: EQ 0000022b: PUSH2 0x030c 0000022e: JUMPI 0000022f: DUP3 00000230: PUSH4 0xe68b52e7 00000235: EQ 00000236: PUSH2 0x02e9 00000239: JUMPI 0000023a: DUP3 0000023b: PUSH4 0xef8b30f7 00000240: EQ 00000241: PUSH2 0x02c3 00000244: JUMPI 00000245: POP 00000246: POP 00000247: PUSH4 0xf2fde38b 0000024c: EQ 0000024d: PUSH2 0x0254 00000250: JUMPI 00000251: PUSH0 00000252: DUP1 00000253: REVERT 00000254: JUMPDEST 00000255: CALLVALUE 00000256: PUSH2 0x02c0 00000259: JUMPI 0000025a: PUSH1 0x20 0000025c: CALLDATASIZE 0000025d: PUSH1 0x03 0000025f: NOT 00000260: ADD 00000261: SLT 00000262: PUSH2 0x02c0 00000265: JUMPI 00000266: PUSH2 0x026d 00000269: PUSH2 0x1833 0000026c: JUMP 0000026d: JUMPDEST 0000026e: PUSH2 0x0275 00000271: PUSH2 0x1fab 00000274: JUMP 00000275: JUMPDEST 00000276: PUSH1 0x01 00000278: DUP1 00000279: SLOAD 0000027a: PUSH1 0x01 0000027c: PUSH1 0x01 0000027e: PUSH1 0xa0 00000280: SHL 00000281: SUB 00000282: NOT 00000283: AND 00000284: PUSH1 0x01 00000286: PUSH1 0x01 00000288: PUSH1 0xa0 0000028a: SHL 0000028b: SUB 0000028c: SWAP3 0000028d: DUP4 0000028e: AND 0000028f: SWAP1 00000290: DUP2 00000291: OR 00000292: SWAP1 00000293: SWAP2 00000294: SSTORE 00000295: DUP3 00000296: SLOAD 00000297: SWAP1 00000298: SWAP2 00000299: AND 0000029a: PUSH32 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700 000002bb: DUP4 000002bc: DUP1 000002bd: LOG3 000002be: DUP1 000002bf: RETURN 000002c0: JUMPDEST 000002c1: DUP1 000002c2: REVERT 000002c3: JUMPDEST 000002c4: DUP4 000002c5: CALLVALUE 000002c6: PUSH2 0x02c0 000002c9: JUMPI 000002ca: PUSH1 0x20 000002cc: CALLDATASIZE 000002cd: PUSH1 0x03 000002cf: NOT 000002d0: ADD 000002d1: SLT 000002d2: PUSH2 0x02c0 000002d5: JUMPI 000002d6: POP 000002d7: PUSH2 0x02e2 000002da: PUSH1 0x20 000002dc: SWAP3 000002dd: CALLDATALOAD 000002de: PUSH2 0x1ea1 000002e1: JUMP 000002e2: JUMPDEST 000002e3: SWAP1 000002e4: MLOAD 000002e5: SWAP1 000002e6: DUP2 000002e7: MSTORE 000002e8: RETURN 000002e9: JUMPDEST 000002ea: DUP4 000002eb: SWAP1 000002ec: CALLVALUE 000002ed: PUSH2 0x0308 000002f0: JUMPI 000002f1: DUP2 000002f2: PUSH1 0x03 000002f4: NOT 000002f5: CALLDATASIZE 000002f6: ADD 000002f7: SLT 000002f8: PUSH2 0x0308 000002fb: JUMPI 000002fc: PUSH1 0x20 000002fe: SWAP1 000002ff: PUSH1 0x09 00000301: SLOAD 00000302: SWAP1 00000303: MLOAD 00000304: SWAP1 00000305: DUP2 00000306: MSTORE 00000307: RETURN 00000308: JUMPDEST 00000309: POP 0000030a: DUP1 0000030b: REVERT 0000030c: JUMPDEST 0000030d: DUP4 0000030e: SWAP1 0000030f: CALLVALUE 00000310: PUSH2 0x0308 00000313: JUMPI 00000314: DUP2 00000315: PUSH1 0x03 00000317: NOT 00000318: CALLDATASIZE 00000319: ADD 0000031a: SLT 0000031b: PUSH2 0x0308 0000031e: JUMPI 0000031f: PUSH1 0x01 00000321: SLOAD 00000322: SWAP1 00000323: MLOAD 00000324: PUSH1 0x01 00000326: PUSH1 0x01 00000328: PUSH1 0xa0 0000032a: SHL 0000032b: SUB 0000032c: SWAP1 0000032d: SWAP2 0000032e: AND 0000032f: DUP2 00000330: MSTORE 00000331: PUSH1 0x20 00000333: SWAP1 00000334: RETURN 00000335: JUMPDEST 00000336: DUP4 00000337: SWAP1 00000338: CALLVALUE 00000339: PUSH2 0x0308 0000033c: JUMPI 0000033d: DUP2 0000033e: PUSH1 0x03 00000340: NOT 00000341: CALLDATASIZE 00000342: ADD 00000343: SLT 00000344: PUSH2 0x0308 00000347: JUMPI 00000348: PUSH1 0x20 0000034a: SWAP1 0000034b: PUSH1 0xff 0000034d: PUSH1 0x0e 0000034f: SLOAD 00000350: AND 00000351: SWAP1 00000352: MLOAD 00000353: SWAP1 00000354: ISZERO 00000355: ISZERO 00000356: DUP2 00000357: MSTORE 00000358: RETURN 00000359: JUMPDEST 0000035a: SWAP2 0000035b: POP 0000035c: CALLVALUE 0000035d: PUSH2 0x04a1 00000360: JUMPI 00000361: DUP3 00000362: PUSH1 0x03 00000364: NOT 00000365: CALLDATASIZE 00000366: ADD 00000367: SLT 00000368: PUSH2 0x04a1 0000036b: JUMPI 0000036c: PUSH2 0x0373 0000036f: PUSH2 0x1c4e 00000372: JUMP 00000373: JUMPDEST 00000374: PUSH2 0x037c 00000377: DUP2 00000378: PUSH2 0x1bb9 0000037b: JUMP 0000037c: JUMPDEST 0000037d: DUP4 0000037e: MLOAD 0000037f: PUSH4 0x70a08231 00000384: PUSH1 0xe0 00000386: SHL 00000387: DUP1 00000388: DUP3 00000389: MSTORE 0000038a: ADDRESS 0000038b: DUP6 0000038c: DUP4 0000038d: ADD 0000038e: MSTORE 0000038f: SWAP2 00000390: SWAP5 00000391: PUSH1 0x20 00000393: SWAP5 00000394: SWAP2 00000395: SWAP4 00000396: SWAP1 00000397: SWAP3 00000398: SWAP1 00000399: SWAP2 0000039a: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000003bb: PUSH1 0x01 000003bd: PUSH1 0x01 000003bf: PUSH1 0xa0 000003c1: SHL 000003c2: SUB 000003c3: AND 000003c4: SWAP2 000003c5: DUP7 000003c6: DUP7 000003c7: PUSH1 0x24 000003c9: DUP2 000003ca: DUP7 000003cb: GAS 000003cc: STATICCALL 000003cd: SWAP6 000003ce: DUP7 000003cf: ISZERO 000003d0: PUSH2 0x0497 000003d3: JUMPI 000003d4: SWAP1 000003d5: DUP8 000003d6: SWAP3 000003d7: SWAP2 000003d8: DUP11 000003d9: SWAP8 000003da: PUSH2 0x0460 000003dd: JUMPI 000003de: JUMPDEST 000003df: POP 000003e0: PUSH1 0x24 000003e2: SWAP1 000003e3: DUP7 000003e4: MLOAD 000003e5: SWAP5 000003e6: DUP6 000003e7: SWAP4 000003e8: DUP5 000003e9: SWAP3 000003ea: DUP4 000003eb: MSTORE 000003ec: ADDRESS 000003ed: SWAP1 000003ee: DUP4 000003ef: ADD 000003f0: MSTORE 000003f1: GAS 000003f2: STATICCALL 000003f3: SWAP7 000003f4: DUP8 000003f5: ISZERO 000003f6: PUSH2 0x0455 000003f9: JUMPI 000003fa: DUP1 000003fb: SWAP8 000003fc: PUSH2 0x0420 000003ff: JUMPI 00000400: JUMPDEST 00000401: POP 00000402: POP 00000403: PUSH2 0x040d 00000406: PUSH1 0x80 00000408: SWAP7 00000409: PUSH2 0x191b 0000040c: JUMP 0000040d: JUMPDEST 0000040e: SWAP4 0000040f: DUP3 00000410: MLOAD 00000411: SWAP6 00000412: DUP7 00000413: MSTORE 00000414: DUP6 00000415: ADD 00000416: MSTORE 00000417: DUP4 00000418: ADD 00000419: MSTORE 0000041a: PUSH1 0x60 0000041c: DUP3 0000041d: ADD 0000041e: MSTORE 0000041f: RETURN 00000420: JUMPDEST 00000421: SWAP1 00000422: SWAP7 00000423: POP 00000424: DUP5 00000425: DUP8 00000426: DUP2 00000427: RETURNDATASIZE 00000428: DUP4 00000429: GT 0000042a: PUSH2 0x044e 0000042d: JUMPI 0000042e: JUMPDEST 0000042f: PUSH2 0x0438 00000432: DUP2 00000433: DUP4 00000434: PUSH2 0x18d8 00000437: JUMP 00000438: JUMPDEST 00000439: DUP2 0000043a: ADD 0000043b: SUB 0000043c: SLT 0000043d: PUSH2 0x02c0 00000440: JUMPI 00000441: POP 00000442: PUSH2 0x040d 00000445: PUSH1 0x80 00000447: SWAP7 00000448: MLOAD 00000449: SWAP7 0000044a: PUSH2 0x0400 0000044d: JUMP 0000044e: JUMPDEST 0000044f: POP 00000450: RETURNDATASIZE 00000451: PUSH2 0x042e 00000454: JUMP 00000455: JUMPDEST 00000456: DUP4 00000457: MLOAD 00000458: SWAP1 00000459: RETURNDATASIZE 0000045a: SWAP1 0000045b: DUP3 0000045c: RETURNDATACOPY 0000045d: RETURNDATASIZE 0000045e: SWAP1 0000045f: REVERT 00000460: JUMPDEST 00000461: DUP4 00000462: DUP2 00000463: SWAP5 00000464: SWAP3 00000465: SWAP9 00000466: POP 00000467: RETURNDATASIZE 00000468: DUP4 00000469: GT 0000046a: PUSH2 0x0490 0000046d: JUMPI 0000046e: JUMPDEST 0000046f: PUSH2 0x0478 00000472: DUP2 00000473: DUP4 00000474: PUSH2 0x18d8 00000477: JUMP 00000478: JUMPDEST 00000479: DUP2 0000047a: ADD 0000047b: SUB 0000047c: SLT 0000047d: PUSH2 0x048c 00000480: JUMPI 00000481: PUSH1 0x24 00000483: DUP8 00000484: SWAP3 00000485: MLOAD 00000486: SWAP7 00000487: SWAP1 00000488: PUSH2 0x03de 0000048b: JUMP 0000048c: JUMPDEST 0000048d: DUP9 0000048e: DUP1 0000048f: REVERT 00000490: JUMPDEST 00000491: POP 00000492: RETURNDATASIZE 00000493: PUSH2 0x046e 00000496: JUMP 00000497: JUMPDEST 00000498: DUP6 00000499: MLOAD 0000049a: RETURNDATASIZE 0000049b: DUP12 0000049c: DUP3 0000049d: RETURNDATACOPY 0000049e: RETURNDATASIZE 0000049f: SWAP1 000004a0: REVERT 000004a1: JUMPDEST 000004a2: DUP3 000004a3: DUP1 000004a4: REVERT 000004a5: JUMPDEST 000004a6: DUP4 000004a7: SWAP1 000004a8: CALLVALUE 000004a9: PUSH2 0x0308 000004ac: JUMPI 000004ad: PUSH1 0x20 000004af: CALLDATASIZE 000004b0: PUSH1 0x03 000004b2: NOT 000004b3: ADD 000004b4: SLT 000004b5: PUSH2 0x0308 000004b8: JUMPI 000004b9: PUSH1 0x20 000004bb: SWAP1 000004bc: PUSH2 0x02e2 000004bf: PUSH2 0x04c6 000004c2: PUSH2 0x1833 000004c5: JUMP 000004c6: JUMPDEST 000004c7: PUSH2 0x1d86 000004ca: JUMP 000004cb: JUMPDEST 000004cc: DUP4 000004cd: SWAP1 000004ce: CALLVALUE 000004cf: PUSH2 0x0308 000004d2: JUMPI 000004d3: DUP2 000004d4: PUSH1 0x03 000004d6: NOT 000004d7: CALLDATASIZE 000004d8: ADD 000004d9: SLT 000004da: PUSH2 0x0308 000004dd: JUMPI 000004de: PUSH1 0x20 000004e0: SWAP1 000004e1: PUSH1 0x0a 000004e3: SLOAD 000004e4: SWAP1 000004e5: MLOAD 000004e6: SWAP1 000004e7: DUP2 000004e8: MSTORE 000004e9: RETURN 000004ea: JUMPDEST 000004eb: DUP4 000004ec: SWAP1 000004ed: CALLVALUE 000004ee: PUSH2 0x0308 000004f1: JUMPI 000004f2: PUSH1 0x20 000004f4: CALLDATASIZE 000004f5: PUSH1 0x03 000004f7: NOT 000004f8: ADD 000004f9: SLT 000004fa: PUSH2 0x0308 000004fd: JUMPI 000004fe: PUSH1 0x20 00000500: SWAP1 00000501: PUSH2 0x02e2 00000504: PUSH2 0x050b 00000507: PUSH2 0x1833 0000050a: JUMP 0000050b: JUMPDEST 0000050c: PUSH2 0x1c6b 0000050f: JUMP 00000510: JUMPDEST 00000511: DUP4 00000512: CALLVALUE 00000513: PUSH2 0x02c0 00000516: JUMPI 00000517: PUSH1 0x20 00000519: CALLDATASIZE 0000051a: PUSH1 0x03 0000051c: NOT 0000051d: ADD 0000051e: SLT 0000051f: PUSH2 0x02c0 00000522: JUMPI 00000523: POP 00000524: PUSH2 0x02e2 00000527: PUSH2 0x0585 0000052a: PUSH1 0x20 0000052c: SWAP4 0000052d: PUSH2 0x0555 00000530: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012 00000551: PUSH2 0x206c 00000554: JUMP 00000555: JUMPDEST 00000556: PUSH2 0x057e 00000559: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006 0000057a: PUSH2 0x206c 0000057d: JUMP 0000057e: JUMPDEST 0000057f: SWAP2 00000580: CALLDATALOAD 00000581: PUSH2 0x2208 00000584: JUMP 00000585: JUMPDEST 00000586: PUSH2 0x0590 00000589: PUSH1 0x09 0000058b: SLOAD 0000058c: PUSH2 0x1f2e 0000058f: JUMP 00000590: JUMPDEST 00000591: PUSH2 0x0598 00000594: PUSH2 0x1ada 00000597: JUMP 00000598: JUMPDEST 00000599: SWAP2 0000059a: PUSH2 0x2208 0000059d: JUMP 0000059e: JUMPDEST 0000059f: DUP4 000005a0: SWAP1 000005a1: CALLVALUE 000005a2: PUSH2 0x0308 000005a5: JUMPI 000005a6: PUSH1 0x20 000005a8: CALLDATASIZE 000005a9: PUSH1 0x03 000005ab: NOT 000005ac: ADD 000005ad: SLT 000005ae: PUSH2 0x0308 000005b1: JUMPI 000005b2: PUSH1 0x20 000005b4: SWAP1 000005b5: PUSH2 0x05bc 000005b8: PUSH2 0x1833 000005bb: JUMP 000005bc: JUMPDEST 000005bd: POP 000005be: PUSH2 0x02e2 000005c1: PUSH2 0x1c4e 000005c4: JUMP 000005c5: JUMPDEST 000005c6: SWAP1 000005c7: SWAP2 000005c8: POP 000005c9: CALLVALUE 000005ca: PUSH2 0x04a1 000005cd: JUMPI 000005ce: PUSH2 0x05d6 000005d1: CALLDATASIZE 000005d2: PUSH2 0x185f 000005d5: JUMP 000005d6: JUMPDEST 000005d7: SWAP2 000005d8: SWAP1 000005d9: PUSH2 0x05e0 000005dc: PUSH2 0x1ada 000005df: JUMP 000005e0: JUMPDEST 000005e1: PUSH1 0x0c 000005e3: SSTORE 000005e4: NUMBER 000005e5: PUSH1 0x0b 000005e7: SSTORE 000005e8: PUSH1 0xff 000005ea: PUSH1 0x0e 000005ec: SLOAD 000005ed: AND 000005ee: ISZERO 000005ef: DUP1 000005f0: PUSH2 0x07a2 000005f3: JUMPI 000005f4: JUMPDEST 000005f5: PUSH2 0x078c 000005f8: JUMPI 000005f9: PUSH1 0x01 000005fb: PUSH1 0x01 000005fd: PUSH1 0xa0 000005ff: SHL 00000600: SUB 00000601: DUP4 00000602: DUP2 00000603: AND 00000604: SWAP4 00000605: SWAP1 00000606: SWAP2 00000607: SWAP1 00000608: CALLER 00000609: DUP6 0000060a: SUB 0000060b: PUSH2 0x077c 0000060e: JUMPI 0000060f: PUSH2 0x0617 00000612: DUP2 00000613: PUSH2 0x1d86 00000616: JUMP 00000617: JUMPDEST 00000618: DUP1 00000619: DUP6 0000061a: GT 0000061b: PUSH2 0x0747 0000061e: JUMPI 0000061f: POP 00000620: POP 00000621: PUSH2 0x0629 00000624: DUP4 00000625: PUSH2 0x19e9 00000628: JUMP 00000629: JUMPDEST 0000062a: SWAP6 0000062b: PUSH2 0x0632 0000062e: PUSH2 0x2334 00000631: JUMP 00000632: JUMPDEST 00000633: DUP8 00000634: DUP4 00000635: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 00000656: AND 00000657: SWAP2 00000658: DUP3 00000659: EXTCODESIZE 0000065a: ISZERO 0000065b: PUSH2 0x0308 0000065e: JUMPI 0000065f: DUP8 00000660: MLOAD 00000661: PUSH4 0xf2bb1119 00000666: PUSH1 0xe0 00000668: SHL 00000669: DUP2 0000066a: MSTORE 0000066b: CALLER 0000066c: SWAP2 0000066d: DUP2 0000066e: ADD 0000066f: SWAP2 00000670: DUP3 00000671: MSTORE 00000672: PUSH1 0x20 00000674: DUP3 00000675: ADD 00000676: DUP8 00000677: SWAP1 00000678: MSTORE 00000679: SWAP3 0000067a: DUP4 0000067b: SWAP2 0000067c: DUP3 0000067d: SWAP1 0000067e: DUP5 0000067f: SWAP1 00000680: DUP3 00000681: SWAP1 00000682: PUSH1 0x40 00000684: ADD 00000685: SUB 00000686: SWAP3 00000687: GAS 00000688: CALL 00000689: DUP1 0000068a: ISZERO 0000068b: PUSH2 0x073d 0000068e: JUMPI 0000068f: PUSH2 0x0725 00000692: JUMPI 00000693: JUMPDEST 00000694: POP 00000695: PUSH1 0x20 00000697: SWAP7 00000698: DUP4 00000699: PUSH1 0x07 0000069b: SLOAD 0000069c: DUP2 0000069d: DUP2 0000069e: LT 0000069f: PUSH0 000006a0: EQ 000006a1: PUSH2 0x0713 000006a4: JUMPI 000006a5: POP 000006a6: POP 000006a7: PUSH1 0x07 000006a9: SSTORE 000006aa: JUMPDEST 000006ab: PUSH2 0x06d7 000006ae: DUP7 000006af: DUP3 000006b0: DUP5 000006b1: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000006d2: AND 000006d3: PUSH2 0x2029 000006d6: JUMP 000006d7: JUMPDEST 000006d8: DUP5 000006d9: MLOAD 000006da: SWAP3 000006db: DUP7 000006dc: DUP5 000006dd: MSTORE 000006de: DUP8 000006df: DUP5 000006e0: ADD 000006e1: MSTORE 000006e2: AND 000006e3: SWAP1 000006e4: PUSH32 0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db 00000705: DUP5 00000706: CALLER 00000707: SWAP3 00000708: LOG4 00000709: PUSH1 0x01 0000070b: PUSH1 0x02 0000070d: SSTORE 0000070e: MLOAD 0000070f: SWAP1 00000710: DUP2 00000711: MSTORE 00000712: RETURN 00000713: JUMPDEST 00000714: PUSH2 0x071d 00000717: SWAP3 00000718: POP 00000719: PUSH2 0x18fa 0000071c: JUMP 0000071d: JUMPDEST 0000071e: PUSH1 0x07 00000720: SSTORE 00000721: PUSH2 0x06aa 00000724: JUMP 00000725: JUMPDEST 00000726: PUSH2 0x072f 00000729: DUP9 0000072a: SWAP2 0000072b: PUSH2 0x1894 0000072e: JUMP 0000072f: JUMPDEST 00000730: PUSH2 0x0739 00000733: JUMPI 00000734: PUSH0 00000735: PUSH2 0x0693 00000738: JUMP 00000739: JUMPDEST 0000073a: DUP7 0000073b: DUP1 0000073c: REVERT 0000073d: JUMPDEST 0000073e: DUP7 0000073f: MLOAD 00000740: RETURNDATASIZE 00000741: DUP11 00000742: DUP3 00000743: RETURNDATACOPY 00000744: RETURNDATASIZE 00000745: SWAP1 00000746: REVERT 00000747: JUMPDEST 00000748: DUP7 00000749: MLOAD 0000074a: PUSH4 0x2e52afbb 0000074f: PUSH1 0xe2 00000751: SHL 00000752: DUP2 00000753: MSTORE 00000754: PUSH1 0x01 00000756: PUSH1 0x01 00000758: PUSH1 0xa0 0000075a: SHL 0000075b: SUB 0000075c: SWAP1 0000075d: SWAP3 0000075e: AND 0000075f: DUP3 00000760: DUP10 00000761: ADD 00000762: SWAP1 00000763: DUP2 00000764: MSTORE 00000765: PUSH1 0x20 00000767: DUP2 00000768: ADD 00000769: DUP7 0000076a: SWAP1 0000076b: MSTORE 0000076c: PUSH1 0x40 0000076e: DUP2 0000076f: ADD 00000770: SWAP2 00000771: SWAP1 00000772: SWAP2 00000773: MSTORE 00000774: DUP2 00000775: SWAP1 00000776: PUSH1 0x60 00000778: ADD 00000779: SUB 0000077a: SWAP1 0000077b: REVERT 0000077c: JUMPDEST 0000077d: DUP6 0000077e: MLOAD 0000077f: PUSH4 0x17efb799 00000784: PUSH1 0xe0 00000786: SHL 00000787: DUP2 00000788: MSTORE 00000789: DUP8 0000078a: SWAP1 0000078b: REVERT 0000078c: JUMPDEST 0000078d: DUP4 0000078e: MLOAD 0000078f: PUSH4 0x6f8bf18b 00000794: PUSH1 0xe1 00000796: SHL 00000797: DUP2 00000798: MSTORE 00000799: CALLER 0000079a: DUP2 0000079b: DUP8 0000079c: ADD 0000079d: MSTORE 0000079e: PUSH1 0x24 000007a0: SWAP1 000007a1: REVERT 000007a2: JUMPDEST 000007a3: POP 000007a4: CALLER 000007a5: DUP7 000007a6: MSTORE 000007a7: PUSH1 0x0d 000007a9: PUSH1 0x20 000007ab: MSTORE 000007ac: PUSH1 0xff 000007ae: DUP5 000007af: DUP8 000007b0: KECCAK256 000007b1: SLOAD 000007b2: AND 000007b3: ISZERO 000007b4: PUSH2 0x05f4 000007b7: JUMP 000007b8: JUMPDEST 000007b9: DUP4 000007ba: SWAP1 000007bb: CALLVALUE 000007bc: PUSH2 0x0308 000007bf: JUMPI 000007c0: DUP2 000007c1: PUSH1 0x03 000007c3: NOT 000007c4: CALLDATASIZE 000007c5: ADD 000007c6: SLT 000007c7: PUSH2 0x0308 000007ca: JUMPI 000007cb: PUSH1 0x20 000007cd: SWAP1 000007ce: PUSH1 0x0b 000007d0: SLOAD 000007d1: SWAP1 000007d2: MLOAD 000007d3: SWAP1 000007d4: DUP2 000007d5: MSTORE 000007d6: RETURN 000007d7: JUMPDEST 000007d8: DUP4 000007d9: SWAP1 000007da: CALLVALUE 000007db: PUSH2 0x0952 000007de: JUMPI 000007df: PUSH2 0x07e7 000007e2: CALLDATASIZE 000007e3: PUSH2 0x185f 000007e6: JUMP 000007e7: JUMPDEST 000007e8: SWAP2 000007e9: SWAP1 000007ea: PUSH2 0x07f1 000007ed: PUSH2 0x1ada 000007f0: JUMP 000007f1: JUMPDEST 000007f2: PUSH1 0x0c 000007f4: SSTORE 000007f5: NUMBER 000007f6: PUSH1 0x0b 000007f8: SSTORE 000007f9: PUSH1 0xff 000007fb: PUSH1 0x0e 000007fd: SLOAD 000007fe: AND 000007ff: ISZERO 00000800: DUP1 00000801: PUSH2 0x09b1 00000804: JUMPI 00000805: JUMPDEST 00000806: PUSH2 0x099b 00000809: JUMPI 0000080a: PUSH1 0x01 0000080c: PUSH1 0x01 0000080e: PUSH1 0xa0 00000810: SHL 00000811: SUB 00000812: DUP4 00000813: DUP2 00000814: AND 00000815: SWAP4 00000816: SWAP1 00000817: SWAP2 00000818: SWAP1 00000819: CALLER 0000081a: DUP6 0000081b: SUB 0000081c: PUSH2 0x098b 0000081f: JUMPI 00000820: PUSH2 0x0828 00000823: DUP2 00000824: PUSH2 0x1c6b 00000827: JUMP 00000828: JUMPDEST 00000829: DUP1 0000082a: DUP6 0000082b: GT 0000082c: PUSH2 0x0956 0000082f: JUMPI 00000830: POP 00000831: POP 00000832: PUSH2 0x083a 00000835: DUP4 00000836: PUSH2 0x191b 00000839: JUMP 0000083a: JUMPDEST 0000083b: SWAP6 0000083c: PUSH2 0x0843 0000083f: PUSH2 0x2334 00000842: JUMP 00000843: JUMPDEST 00000844: DUP3 00000845: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 00000866: AND 00000867: DUP1 00000868: EXTCODESIZE 00000869: ISZERO 0000086a: PUSH2 0x0952 0000086d: JUMPI 0000086e: DUP7 0000086f: MLOAD 00000870: PUSH4 0xf2bb1119 00000875: PUSH1 0xe0 00000877: SHL 00000878: DUP2 00000879: MSTORE 0000087a: CALLER 0000087b: SWAP10 0000087c: DUP2 0000087d: ADD 0000087e: SWAP10 0000087f: DUP11 00000880: MSTORE 00000881: PUSH1 0x20 00000883: DUP11 00000884: ADD 00000885: DUP10 00000886: SWAP1 00000887: MSTORE 00000888: SWAP9 00000889: PUSH0 0000088a: SWAP2 0000088b: DUP11 0000088c: SWAP2 0000088d: DUP3 0000088e: SWAP1 0000088f: DUP5 00000890: SWAP1 00000891: DUP3 00000892: SWAP1 00000893: PUSH1 0x40 00000895: ADD 00000896: SUB 00000897: SWAP3 00000898: GAS 00000899: CALL 0000089a: SWAP8 0000089b: DUP9 0000089c: ISZERO 0000089d: PUSH2 0x0948 000008a0: JUMPI 000008a1: PUSH1 0x20 000008a3: SWAP9 000008a4: PUSH2 0x0937 000008a7: JUMPI 000008a8: JUMPDEST 000008a9: POP 000008aa: DUP7 000008ab: PUSH1 0x07 000008ad: SLOAD 000008ae: DUP2 000008af: DUP2 000008b0: LT 000008b1: PUSH0 000008b2: EQ 000008b3: PUSH2 0x0925 000008b6: JUMPI 000008b7: POP 000008b8: POP 000008b9: PUSH1 0x07 000008bb: SSTORE 000008bc: JUMPDEST 000008bd: PUSH2 0x08e9 000008c0: DUP4 000008c1: DUP3 000008c2: DUP5 000008c3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000008e4: AND 000008e5: PUSH2 0x2029 000008e8: JUMP 000008e9: JUMPDEST 000008ea: DUP5 000008eb: MLOAD 000008ec: SWAP3 000008ed: DUP4 000008ee: MSTORE 000008ef: DUP6 000008f0: DUP8 000008f1: DUP5 000008f2: ADD 000008f3: MSTORE 000008f4: AND 000008f5: SWAP1 000008f6: PUSH32 0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db 00000917: DUP5 00000918: CALLER 00000919: SWAP3 0000091a: LOG4 0000091b: PUSH1 0x01 0000091d: PUSH1 0x02 0000091f: SSTORE 00000920: MLOAD 00000921: SWAP1 00000922: DUP2 00000923: MSTORE 00000924: RETURN 00000925: JUMPDEST 00000926: PUSH2 0x092f 00000929: SWAP3 0000092a: POP 0000092b: PUSH2 0x18fa 0000092e: JUMP 0000092f: JUMPDEST 00000930: PUSH1 0x07 00000932: SSTORE 00000933: PUSH2 0x08bc 00000936: JUMP 00000937: JUMPDEST 00000938: PUSH2 0x0941 0000093b: SWAP2 0000093c: POP 0000093d: PUSH2 0x1894 00000940: JUMP 00000941: JUMPDEST 00000942: PUSH0 00000943: DUP9 00000944: PUSH2 0x08a8 00000947: JUMP 00000948: JUMPDEST 00000949: DUP7 0000094a: MLOAD 0000094b: RETURNDATASIZE 0000094c: PUSH0 0000094d: DUP3 0000094e: RETURNDATACOPY 0000094f: RETURNDATASIZE 00000950: SWAP1 00000951: REVERT 00000952: JUMPDEST 00000953: PUSH0 00000954: DUP1 00000955: REVERT 00000956: JUMPDEST 00000957: DUP7 00000958: MLOAD 00000959: PUSH4 0x3fa733bb 0000095e: PUSH1 0xe2 00000960: SHL 00000961: DUP2 00000962: MSTORE 00000963: PUSH1 0x01 00000965: PUSH1 0x01 00000967: PUSH1 0xa0 00000969: SHL 0000096a: SUB 0000096b: SWAP1 0000096c: SWAP3 0000096d: AND 0000096e: DUP3 0000096f: DUP11 00000970: ADD 00000971: SWAP1 00000972: DUP2 00000973: MSTORE 00000974: PUSH1 0x20 00000976: DUP2 00000977: ADD 00000978: DUP7 00000979: SWAP1 0000097a: MSTORE 0000097b: PUSH1 0x40 0000097d: DUP2 0000097e: ADD 0000097f: SWAP2 00000980: SWAP1 00000981: SWAP2 00000982: MSTORE 00000983: DUP2 00000984: SWAP1 00000985: PUSH1 0x60 00000987: ADD 00000988: SUB 00000989: SWAP1 0000098a: REVERT 0000098b: JUMPDEST 0000098c: DUP6 0000098d: MLOAD 0000098e: PUSH4 0x17efb799 00000993: PUSH1 0xe0 00000995: SHL 00000996: DUP2 00000997: MSTORE 00000998: DUP9 00000999: SWAP1 0000099a: REVERT 0000099b: JUMPDEST 0000099c: DUP4 0000099d: MLOAD 0000099e: PUSH4 0x6f8bf18b 000009a3: PUSH1 0xe1 000009a5: SHL 000009a6: DUP2 000009a7: MSTORE 000009a8: CALLER 000009a9: DUP2 000009aa: DUP9 000009ab: ADD 000009ac: MSTORE 000009ad: PUSH1 0x24 000009af: SWAP1 000009b0: REVERT 000009b1: JUMPDEST 000009b2: POP 000009b3: CALLER 000009b4: PUSH0 000009b5: MSTORE 000009b6: PUSH1 0x0d 000009b8: PUSH1 0x20 000009ba: MSTORE 000009bb: PUSH1 0xff 000009bd: DUP5 000009be: PUSH0 000009bf: KECCAK256 000009c0: SLOAD 000009c1: AND 000009c2: ISZERO 000009c3: PUSH2 0x0805 000009c6: JUMP 000009c7: JUMPDEST 000009c8: CALLVALUE 000009c9: PUSH2 0x0952 000009cc: JUMPI 000009cd: PUSH1 0x20 000009cf: CALLDATASIZE 000009d0: PUSH1 0x03 000009d2: NOT 000009d3: ADD 000009d4: SLT 000009d5: PUSH2 0x0952 000009d8: JUMPI 000009d9: PUSH2 0x02e2 000009dc: PUSH1 0x20 000009de: SWAP3 000009df: CALLDATALOAD 000009e0: PUSH2 0x1bb9 000009e3: JUMP 000009e4: JUMPDEST 000009e5: SWAP1 000009e6: CALLVALUE 000009e7: PUSH2 0x0952 000009ea: JUMPI 000009eb: DUP2 000009ec: PUSH1 0x03 000009ee: NOT 000009ef: CALLDATASIZE 000009f0: ADD 000009f1: SLT 000009f2: PUSH2 0x0952 000009f5: JUMPI 000009f6: PUSH1 0x20 000009f8: PUSH2 0x09ff 000009fb: PUSH2 0x1833 000009fe: JUMP 000009ff: JUMPDEST 00000a00: PUSH2 0x0a07 00000a03: PUSH2 0x1fab 00000a06: JUMP 00000a07: JUMPDEST 00000a08: PUSH1 0x08 00000a0a: DUP1 00000a0b: SLOAD 00000a0c: PUSH1 0x01 00000a0e: PUSH1 0x01 00000a10: PUSH1 0xa0 00000a12: SHL 00000a13: SUB 00000a14: NOT 00000a15: AND 00000a16: PUSH1 0x01 00000a18: PUSH1 0x01 00000a1a: PUSH1 0xa0 00000a1c: SHL 00000a1d: SUB 00000a1e: SWAP3 00000a1f: SWAP1 00000a20: SWAP3 00000a21: AND 00000a22: SWAP2 00000a23: DUP3 00000a24: OR 00000a25: SWAP1 00000a26: SSTORE 00000a27: DUP4 00000a28: MLOAD 00000a29: PUSH4 0x313ce567 00000a2e: PUSH1 0xe0 00000a30: SHL 00000a31: DUP2 00000a32: MSTORE 00000a33: SWAP3 00000a34: DUP4 00000a35: SWAP2 00000a36: DUP3 00000a37: SWAP1 00000a38: GAS 00000a39: STATICCALL 00000a3a: SWAP1 00000a3b: DUP2 00000a3c: ISZERO 00000a3d: PUSH2 0x0a87 00000a40: JUMPI 00000a41: PUSH1 0xff 00000a43: SWAP3 00000a44: POP 00000a45: PUSH0 00000a46: SWAP2 00000a47: PUSH2 0x0a58 00000a4a: JUMPI 00000a4b: JUMPDEST 00000a4c: POP 00000a4d: AND 00000a4e: PUSH1 0x09 00000a50: SSTORE 00000a51: PUSH1 0x24 00000a53: CALLDATALOAD 00000a54: PUSH1 0x0a 00000a56: SSTORE 00000a57: STOP 00000a58: JUMPDEST 00000a59: PUSH2 0x0a7a 00000a5c: SWAP2 00000a5d: POP 00000a5e: PUSH1 0x20 00000a60: RETURNDATASIZE 00000a61: PUSH1 0x20 00000a63: GT 00000a64: PUSH2 0x0a80 00000a67: JUMPI 00000a68: JUMPDEST 00000a69: PUSH2 0x0a72 00000a6c: DUP2 00000a6d: DUP4 00000a6e: PUSH2 0x18d8 00000a71: JUMP 00000a72: JUMPDEST 00000a73: DUP2 00000a74: ADD 00000a75: SWAP1 00000a76: PUSH2 0x1aaa 00000a79: JUMP 00000a7a: JUMPDEST 00000a7b: DUP3 00000a7c: PUSH2 0x0a4b 00000a7f: JUMP 00000a80: JUMPDEST 00000a81: POP 00000a82: RETURNDATASIZE 00000a83: PUSH2 0x0a68 00000a86: JUMP 00000a87: JUMPDEST 00000a88: DUP3 00000a89: MLOAD 00000a8a: RETURNDATASIZE 00000a8b: PUSH0 00000a8c: DUP3 00000a8d: RETURNDATACOPY 00000a8e: RETURNDATASIZE 00000a8f: SWAP1 00000a90: REVERT 00000a91: JUMPDEST 00000a92: CALLVALUE 00000a93: PUSH2 0x0952 00000a96: JUMPI 00000a97: PUSH0 00000a98: CALLDATASIZE 00000a99: PUSH1 0x03 00000a9b: NOT 00000a9c: ADD 00000a9d: SLT 00000a9e: PUSH2 0x0952 00000aa1: JUMPI 00000aa2: MLOAD 00000aa3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000ac4: PUSH1 0x01 00000ac6: PUSH1 0x01 00000ac8: PUSH1 0xa0 00000aca: SHL 00000acb: SUB 00000acc: AND 00000acd: DUP2 00000ace: MSTORE 00000acf: PUSH1 0x20 00000ad1: SWAP1 00000ad2: RETURN 00000ad3: JUMPDEST 00000ad4: CALLVALUE 00000ad5: PUSH2 0x0952 00000ad8: JUMPI 00000ad9: PUSH1 0x20 00000adb: CALLDATASIZE 00000adc: PUSH1 0x03 00000ade: NOT 00000adf: ADD 00000ae0: SLT 00000ae1: PUSH2 0x0952 00000ae4: JUMPI 00000ae5: PUSH1 0x20 00000ae7: SWAP1 00000ae8: PUSH1 0x01 00000aea: PUSH1 0x01 00000aec: PUSH1 0xa0 00000aee: SHL 00000aef: SUB 00000af0: PUSH2 0x0af7 00000af3: PUSH2 0x1833 00000af6: JUMP 00000af7: JUMPDEST 00000af8: AND 00000af9: PUSH0 00000afa: MSTORE 00000afb: PUSH1 0x0d 00000afd: DUP3 00000afe: MSTORE 00000aff: PUSH1 0xff 00000b01: DUP2 00000b02: PUSH0 00000b03: KECCAK256 00000b04: SLOAD 00000b05: AND 00000b06: SWAP1 00000b07: MLOAD 00000b08: SWAP1 00000b09: ISZERO 00000b0a: ISZERO 00000b0b: DUP2 00000b0c: MSTORE 00000b0d: RETURN 00000b0e: JUMPDEST 00000b0f: CALLVALUE 00000b10: PUSH2 0x0952 00000b13: JUMPI 00000b14: PUSH0 00000b15: CALLDATASIZE 00000b16: PUSH1 0x03 00000b18: NOT 00000b19: ADD 00000b1a: SLT 00000b1b: PUSH2 0x0952 00000b1e: JUMPI 00000b1f: PUSH1 0x20 00000b21: SWAP1 00000b22: PUSH1 0x07 00000b24: SLOAD 00000b25: SWAP1 00000b26: MLOAD 00000b27: SWAP1 00000b28: DUP2 00000b29: MSTORE 00000b2a: RETURN 00000b2b: JUMPDEST 00000b2c: CALLVALUE 00000b2d: PUSH2 0x0952 00000b30: JUMPI 00000b31: PUSH0 00000b32: CALLDATASIZE 00000b33: PUSH1 0x03 00000b35: NOT 00000b36: ADD 00000b37: SLT 00000b38: PUSH2 0x0952 00000b3b: JUMPI 00000b3c: PUSH1 0x20 00000b3e: SWAP1 00000b3f: PUSH2 0x02e2 00000b42: PUSH2 0x0b9c 00000b45: PUSH2 0x0b6d 00000b48: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006 00000b69: PUSH2 0x206c 00000b6c: JUMP 00000b6d: JUMPDEST 00000b6e: PUSH2 0x0b96 00000b71: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012 00000b92: PUSH2 0x206c 00000b95: JUMP 00000b96: JUMPDEST 00000b97: SWAP1 00000b98: PUSH2 0x207d 00000b9b: JUMP 00000b9c: JUMPDEST 00000b9d: PUSH2 0x0ba4 00000ba0: PUSH2 0x1ada 00000ba3: JUMP 00000ba4: JUMPDEST 00000ba5: PUSH2 0x0598 00000ba8: PUSH1 0x09 00000baa: SLOAD 00000bab: PUSH2 0x1f2e 00000bae: JUMP 00000baf: JUMPDEST 00000bb0: CALLVALUE 00000bb1: PUSH2 0x0952 00000bb4: JUMPI 00000bb5: PUSH0 00000bb6: CALLDATASIZE 00000bb7: PUSH1 0x03 00000bb9: NOT 00000bba: ADD 00000bbb: SLT 00000bbc: PUSH2 0x0952 00000bbf: JUMPI 00000bc0: PUSH1 0x20 00000bc2: SWAP1 00000bc3: MLOAD 00000bc4: PUSH1 0xff 00000bc6: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006 00000be7: AND 00000be8: DUP2 00000be9: MSTORE 00000bea: RETURN 00000beb: JUMPDEST 00000bec: CALLVALUE 00000bed: PUSH2 0x0952 00000bf0: JUMPI 00000bf1: PUSH0 00000bf2: CALLDATASIZE 00000bf3: PUSH1 0x03 00000bf5: NOT 00000bf6: ADD 00000bf7: SLT 00000bf8: PUSH2 0x0952 00000bfb: JUMPI 00000bfc: PUSH1 0x20 00000bfe: SWAP1 00000bff: PUSH1 0x05 00000c01: SLOAD 00000c02: SWAP1 00000c03: MLOAD 00000c04: SWAP1 00000c05: DUP2 00000c06: MSTORE 00000c07: RETURN 00000c08: JUMPDEST 00000c09: SWAP1 00000c0a: CALLVALUE 00000c0b: PUSH2 0x0952 00000c0e: JUMPI 00000c0f: DUP2 00000c10: PUSH1 0x03 00000c12: NOT 00000c13: CALLDATASIZE 00000c14: ADD 00000c15: SLT 00000c16: PUSH2 0x0952 00000c19: JUMPI 00000c1a: DUP1 00000c1b: CALLDATALOAD 00000c1c: SWAP2 00000c1d: PUSH2 0x0c24 00000c20: PUSH2 0x1849 00000c23: JUMP 00000c24: JUMPDEST 00000c25: SWAP3 00000c26: PUSH2 0x0c2d 00000c29: PUSH2 0x1ada 00000c2c: JUMP 00000c2d: JUMPDEST 00000c2e: PUSH1 0x0c 00000c30: SSTORE 00000c31: NUMBER 00000c32: PUSH1 0x0b 00000c34: SSTORE 00000c35: PUSH1 0xff 00000c37: PUSH1 0x0e 00000c39: SLOAD 00000c3a: AND 00000c3b: ISZERO 00000c3c: DUP1 00000c3d: PUSH2 0x0e27 00000c40: JUMPI 00000c41: JUMPDEST 00000c42: PUSH2 0x0e11 00000c45: JUMPI 00000c46: PUSH2 0x0c4d 00000c49: PUSH2 0x1c4e 00000c4c: JUMP 00000c4d: JUMPDEST 00000c4e: DUP1 00000c4f: DUP3 00000c50: GT 00000c51: PUSH2 0x0de1 00000c54: JUMPI 00000c55: POP 00000c56: PUSH2 0x0c5e 00000c59: DUP2 00000c5a: PUSH2 0x1bb9 00000c5d: JUMP 00000c5e: JUMPDEST 00000c5f: SWAP3 00000c60: PUSH2 0x0c67 00000c63: PUSH2 0x2334 00000c66: JUMP 00000c67: JUMPDEST 00000c68: DUP3 00000c69: MLOAD 00000c6a: PUSH4 0x23b872dd 00000c6f: PUSH1 0xe0 00000c71: SHL 00000c72: PUSH1 0x20 00000c74: DUP3 00000c75: ADD 00000c76: MSTORE 00000c77: CALLER 00000c78: PUSH1 0x24 00000c7a: DUP3 00000c7b: ADD 00000c7c: MSTORE 00000c7d: ADDRESS 00000c7e: PUSH1 0x44 00000c80: DUP3 00000c81: ADD 00000c82: MSTORE 00000c83: PUSH1 0x64 00000c85: DUP1 00000c86: DUP3 00000c87: ADD 00000c88: DUP7 00000c89: SWAP1 00000c8a: MSTORE 00000c8b: DUP2 00000c8c: MSTORE 00000c8d: PUSH1 0x01 00000c8f: PUSH1 0x01 00000c91: PUSH1 0xa0 00000c93: SHL 00000c94: SUB 00000c95: SWAP2 00000c96: SWAP1 00000c97: PUSH2 0x0ccb 00000c9a: SWAP1 00000c9b: PUSH2 0x0ca3 00000c9e: DUP2 00000c9f: PUSH2 0x18bc 00000ca2: JUMP 00000ca3: JUMPDEST 00000ca4: DUP4 00000ca5: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000cc6: AND 00000cc7: PUSH2 0x227b 00000cca: JUMP 00000ccb: JUMPDEST 00000ccc: DUP2 00000ccd: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 00000cee: AND 00000cef: DUP1 00000cf0: EXTCODESIZE 00000cf1: ISZERO 00000cf2: PUSH2 0x0952 00000cf5: JUMPI 00000cf6: DUP5 00000cf7: MLOAD 00000cf8: PUSH4 0x10f98a65 00000cfd: PUSH1 0xe1 00000cff: SHL 00000d00: DUP2 00000d01: MSTORE 00000d02: PUSH1 0x01 00000d04: PUSH1 0x01 00000d06: PUSH1 0xa0 00000d08: SHL 00000d09: SUB 00000d0a: DUP9 00000d0b: AND 00000d0c: DUP4 00000d0d: DUP3 00000d0e: ADD 00000d0f: SWAP1 00000d10: DUP2 00000d11: MSTORE 00000d12: PUSH1 0x20 00000d14: DUP2 00000d15: ADD 00000d16: DUP7 00000d17: SWAP1 00000d18: MSTORE 00000d19: SWAP1 00000d1a: SWAP2 00000d1b: PUSH0 00000d1c: SWAP2 00000d1d: DUP4 00000d1e: SWAP2 00000d1f: SWAP1 00000d20: DUP3 00000d21: SWAP1 00000d22: DUP5 00000d23: SWAP1 00000d24: DUP3 00000d25: SWAP1 00000d26: PUSH1 0x40 00000d28: ADD 00000d29: SUB 00000d2a: SWAP3 00000d2b: GAS 00000d2c: CALL 00000d2d: DUP1 00000d2e: ISZERO 00000d2f: PUSH2 0x0dd7 00000d32: JUMPI 00000d33: PUSH2 0x0dc8 00000d36: JUMPI 00000d37: JUMPDEST 00000d38: POP 00000d39: PUSH2 0x0d44 00000d3c: DUP4 00000d3d: PUSH1 0x07 00000d3f: SLOAD 00000d40: PUSH2 0x1f3c 00000d43: JUMP 00000d44: JUMPDEST 00000d45: DUP1 00000d46: PUSH1 0x07 00000d48: SSTORE 00000d49: PUSH1 0x06 00000d4b: SLOAD 00000d4c: DUP1 00000d4d: SWAP2 00000d4e: GT 00000d4f: PUSH2 0x0d93 00000d52: JUMPI 00000d53: POP 00000d54: POP 00000d55: PUSH1 0x20 00000d57: SWAP5 00000d58: DUP4 00000d59: MLOAD 00000d5a: SWAP3 00000d5b: DUP6 00000d5c: DUP5 00000d5d: MSTORE 00000d5e: DUP7 00000d5f: DUP5 00000d60: ADD 00000d61: MSTORE 00000d62: AND 00000d63: SWAP1 00000d64: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7 00000d85: DUP4 00000d86: CALLER 00000d87: SWAP3 00000d88: LOG3 00000d89: PUSH1 0x01 00000d8b: PUSH1 0x02 00000d8d: SSTORE 00000d8e: MLOAD 00000d8f: SWAP1 00000d90: DUP2 00000d91: MSTORE 00000d92: RETURN 00000d93: JUMPDEST 00000d94: DUP5 00000d95: MLOAD 00000d96: PUSH4 0x6df60743 00000d9b: PUSH1 0xe1 00000d9d: SHL 00000d9e: DUP2 00000d9f: MSTORE 00000da0: PUSH1 0x01 00000da2: PUSH1 0x01 00000da4: PUSH1 0xa0 00000da6: SHL 00000da7: SUB 00000da8: DUP9 00000da9: AND 00000daa: SWAP3 00000dab: DUP2 00000dac: ADD 00000dad: SWAP3 00000dae: DUP4 00000daf: MSTORE 00000db0: PUSH1 0x20 00000db2: DUP4 00000db3: ADD 00000db4: DUP6 00000db5: SWAP1 00000db6: MSTORE 00000db7: PUSH1 0x40 00000db9: DUP4 00000dba: ADD 00000dbb: SWAP2 00000dbc: SWAP1 00000dbd: SWAP2 00000dbe: MSTORE 00000dbf: SWAP1 00000dc0: DUP2 00000dc1: SWAP1 00000dc2: PUSH1 0x60 00000dc4: ADD 00000dc5: SUB 00000dc6: SWAP1 00000dc7: REVERT 00000dc8: JUMPDEST 00000dc9: PUSH2 0x0dd1 00000dcc: SWAP1 00000dcd: PUSH2 0x1894 00000dd0: JUMP 00000dd1: JUMPDEST 00000dd2: DUP7 00000dd3: PUSH2 0x0d37 00000dd6: JUMP 00000dd7: JUMPDEST 00000dd8: DUP6 00000dd9: MLOAD 00000dda: RETURNDATASIZE 00000ddb: PUSH0 00000ddc: DUP3 00000ddd: RETURNDATACOPY 00000dde: RETURNDATASIZE 00000ddf: SWAP1 00000de0: REVERT 00000de1: JUMPDEST 00000de2: SWAP2 00000de3: MLOAD 00000de4: PUSH4 0x284ff667 00000de9: PUSH1 0xe0 00000deb: SHL 00000dec: DUP2 00000ded: MSTORE 00000dee: PUSH1 0x01 00000df0: PUSH1 0x01 00000df2: PUSH1 0xa0 00000df4: SHL 00000df5: SUB 00000df6: SWAP1 00000df7: SWAP5 00000df8: AND 00000df9: SWAP3 00000dfa: DUP5 00000dfb: ADD 00000dfc: SWAP3 00000dfd: DUP4 00000dfe: MSTORE 00000dff: PUSH1 0x20 00000e01: DUP4 00000e02: ADD 00000e03: MSTORE 00000e04: PUSH1 0x40 00000e06: DUP3 00000e07: ADD 00000e08: MSTORE 00000e09: DUP2 00000e0a: SWAP1 00000e0b: PUSH1 0x60 00000e0d: ADD 00000e0e: SUB 00000e0f: SWAP1 00000e10: REVERT 00000e11: JUMPDEST 00000e12: DUP2 00000e13: MLOAD 00000e14: PUSH4 0x6f8bf18b 00000e19: PUSH1 0xe1 00000e1b: SHL 00000e1c: DUP2 00000e1d: MSTORE 00000e1e: CALLER 00000e1f: DUP2 00000e20: DUP6 00000e21: ADD 00000e22: MSTORE 00000e23: PUSH1 0x24 00000e25: SWAP1 00000e26: REVERT 00000e27: JUMPDEST 00000e28: POP 00000e29: CALLER 00000e2a: PUSH0 00000e2b: MSTORE 00000e2c: PUSH1 0x0d 00000e2e: PUSH1 0x20 00000e30: MSTORE 00000e31: PUSH1 0xff 00000e33: DUP3 00000e34: PUSH0 00000e35: KECCAK256 00000e36: SLOAD 00000e37: AND 00000e38: ISZERO 00000e39: PUSH2 0x0c41 00000e3c: JUMP 00000e3d: JUMPDEST 00000e3e: CALLVALUE 00000e3f: PUSH2 0x0952 00000e42: JUMPI 00000e43: PUSH0 00000e44: CALLDATASIZE 00000e45: PUSH1 0x03 00000e47: NOT 00000e48: ADD 00000e49: SLT 00000e4a: PUSH2 0x0952 00000e4d: JUMPI 00000e4e: PUSH0 00000e4f: SLOAD 00000e50: SWAP1 00000e51: MLOAD 00000e52: PUSH1 0x01 00000e54: PUSH1 0x01 00000e56: PUSH1 0xa0 00000e58: SHL 00000e59: SUB 00000e5a: SWAP1 00000e5b: SWAP2 00000e5c: AND 00000e5d: DUP2 00000e5e: MSTORE 00000e5f: PUSH1 0x20 00000e61: SWAP1 00000e62: RETURN 00000e63: JUMPDEST 00000e64: SWAP1 00000e65: CALLVALUE 00000e66: PUSH2 0x0952 00000e69: JUMPI 00000e6a: DUP2 00000e6b: PUSH1 0x03 00000e6d: NOT 00000e6e: CALLDATASIZE 00000e6f: ADD 00000e70: SLT 00000e71: PUSH2 0x0952 00000e74: JUMPI 00000e75: DUP1 00000e76: CALLDATALOAD 00000e77: SWAP1 00000e78: PUSH1 0x24 00000e7a: CALLDATALOAD 00000e7b: SWAP3 00000e7c: PUSH2 0x0e83 00000e7f: PUSH2 0x1fab 00000e82: JUMP 00000e83: JUMPDEST 00000e84: PUSH8 0x0de0b6b3a7640000 00000e8d: DUP1 00000e8e: DUP5 00000e8f: LT 00000e90: SWAP1 00000e91: DUP2 00000e92: ISZERO 00000e93: PUSH2 0x0ef3 00000e96: JUMPI 00000e97: JUMPDEST 00000e98: POP 00000e99: ISZERO 00000e9a: PUSH2 0x0ea4 00000e9d: JUMPI 00000e9e: POP 00000e9f: SSTORE 00000ea0: PUSH1 0x05 00000ea2: SSTORE 00000ea3: STOP 00000ea4: JUMPDEST 00000ea5: SWAP1 00000ea6: PUSH1 0x20 00000ea8: PUSH1 0x84 00000eaa: SWAP3 00000eab: MLOAD 00000eac: SWAP2 00000ead: PUSH3 0x461bcd 00000eb1: PUSH1 0xe5 00000eb3: SHL 00000eb4: DUP4 00000eb5: MSTORE 00000eb6: DUP3 00000eb7: ADD 00000eb8: MSTORE 00000eb9: PUSH1 0x24 00000ebb: DUP1 00000ebc: DUP3 00000ebd: ADD 00000ebe: MSTORE 00000ebf: PUSH32 0x466565206d7573742062652061206672616374696f6e206f6620756e6465726c 00000ee0: PUSH1 0x44 00000ee2: DUP3 00000ee3: ADD 00000ee4: MSTORE 00000ee5: PUSH4 0x79696e67 00000eea: PUSH1 0xe0 00000eec: SHL 00000eed: PUSH1 0x64 00000eef: DUP3 00000ef0: ADD 00000ef1: MSTORE 00000ef2: REVERT 00000ef3: JUMPDEST 00000ef4: SWAP1 00000ef5: POP 00000ef6: DUP5 00000ef7: LT 00000ef8: DUP6 00000ef9: PUSH2 0x0e97 00000efc: JUMP 00000efd: JUMPDEST 00000efe: CALLVALUE 00000eff: PUSH2 0x0952 00000f02: JUMPI 00000f03: PUSH0 00000f04: CALLDATASIZE 00000f05: PUSH1 0x03 00000f07: NOT 00000f08: ADD 00000f09: SLT 00000f0a: PUSH2 0x0952 00000f0d: JUMPI 00000f0e: PUSH1 0x20 00000f10: SWAP1 00000f11: PUSH2 0x02e2 00000f14: PUSH2 0x1ada 00000f17: JUMP 00000f18: JUMPDEST 00000f19: CALLVALUE 00000f1a: PUSH2 0x0952 00000f1d: JUMPI 00000f1e: DUP1 00000f1f: PUSH1 0x03 00000f21: NOT 00000f22: CALLDATASIZE 00000f23: ADD 00000f24: SLT 00000f25: PUSH2 0x0952 00000f28: JUMPI 00000f29: PUSH32 0x55350610fe57096d8c0ffa30beede987326bccfcb0b4415804164d0dd50ce8b1 00000f4a: SWAP1 00000f4b: PUSH2 0x0f52 00000f4e: PUSH2 0x1833 00000f51: JUMP 00000f52: JUMPDEST 00000f53: PUSH2 0x0f9c 00000f56: PUSH1 0x24 00000f58: CALLDATALOAD 00000f59: SWAP3 00000f5a: PUSH2 0x0f61 00000f5d: PUSH2 0x1fab 00000f60: JUMP 00000f61: JUMPDEST 00000f62: PUSH0 00000f63: SLOAD 00000f64: PUSH2 0x0f7c 00000f67: SWAP1 00000f68: DUP6 00000f69: SWAP1 00000f6a: PUSH1 0x01 00000f6c: PUSH1 0x01 00000f6e: PUSH1 0xa0 00000f70: SHL 00000f71: SUB 00000f72: SWAP1 00000f73: DUP2 00000f74: AND 00000f75: SWAP1 00000f76: DUP7 00000f77: AND 00000f78: PUSH2 0x2029 00000f7b: JUMP 00000f7c: JUMPDEST 00000f7d: MLOAD 00000f7e: PUSH1 0x01 00000f80: PUSH1 0x01 00000f82: PUSH1 0xa0 00000f84: SHL 00000f85: SUB 00000f86: SWAP1 00000f87: SWAP3 00000f88: AND 00000f89: DUP3 00000f8a: MSTORE 00000f8b: PUSH1 0x20 00000f8d: DUP3 00000f8e: ADD 00000f8f: SWAP3 00000f90: SWAP1 00000f91: SWAP3 00000f92: MSTORE 00000f93: SWAP1 00000f94: DUP2 00000f95: SWAP1 00000f96: PUSH1 0x40 00000f98: DUP3 00000f99: ADD 00000f9a: SWAP1 00000f9b: JUMP 00000f9c: JUMPDEST 00000f9d: SUB 00000f9e: SWAP1 00000f9f: LOG1 00000fa0: STOP 00000fa1: JUMPDEST 00000fa2: SWAP1 00000fa3: CALLVALUE 00000fa4: PUSH2 0x0952 00000fa7: JUMPI 00000fa8: PUSH1 0xc0 00000faa: CALLDATASIZE 00000fab: PUSH1 0x03 00000fad: NOT 00000fae: ADD 00000faf: SLT 00000fb0: PUSH2 0x0952 00000fb3: JUMPI 00000fb4: PUSH1 0x20 00000fb6: PUSH2 0x0fbd 00000fb9: PUSH2 0x1833 00000fbc: JUMP 00000fbd: JUMPDEST 00000fbe: PUSH2 0x0fda 00000fc1: PUSH2 0x0fc8 00000fc4: PUSH2 0x1849 00000fc7: JUMP 00000fc8: JUMPDEST 00000fc9: SWAP2 00000fca: PUSH1 0xa4 00000fcc: CALLDATALOAD 00000fcd: SWAP1 00000fce: PUSH1 0x84 00000fd0: CALLDATALOAD 00000fd1: SWAP1 00000fd2: PUSH1 0x64 00000fd4: CALLDATALOAD 00000fd5: SWAP1 00000fd6: PUSH2 0x1a6d 00000fd9: JUMP 00000fda: JUMPDEST 00000fdb: PUSH1 0x08 00000fdd: DUP1 00000fde: SLOAD 00000fdf: PUSH1 0x01 00000fe1: PUSH1 0x01 00000fe3: PUSH1 0xa0 00000fe5: SHL 00000fe6: SUB 00000fe7: NOT 00000fe8: AND 00000fe9: PUSH1 0x01 00000feb: PUSH1 0x01 00000fed: PUSH1 0xa0 00000fef: SHL 00000ff0: SUB 00000ff1: SWAP3 00000ff2: SWAP1 00000ff3: SWAP3 00000ff4: AND 00000ff5: SWAP2 00000ff6: DUP3 00000ff7: OR 00000ff8: SWAP1 00000ff9: SSTORE 00000ffa: DUP4 00000ffb: MLOAD 00000ffc: PUSH4 0x313ce567 00001001: PUSH1 0xe0 00001003: SHL 00001004: DUP2 00001005: MSTORE 00001006: SWAP3 00001007: DUP4 00001008: SWAP2 00001009: DUP3 0000100a: SWAP1 0000100b: GAS 0000100c: STATICCALL 0000100d: SWAP1 0000100e: DUP2 0000100f: ISZERO 00001010: PUSH2 0x0a87 00001013: JUMPI 00001014: PUSH1 0xff 00001016: SWAP3 00001017: POP 00001018: PUSH0 00001019: SWAP2 0000101a: PUSH2 0x102b 0000101d: JUMPI 0000101e: JUMPDEST 0000101f: POP 00001020: AND 00001021: PUSH1 0x09 00001023: SSTORE 00001024: PUSH1 0x44 00001026: CALLDATALOAD 00001027: PUSH1 0x0a 00001029: SSTORE 0000102a: STOP 0000102b: JUMPDEST 0000102c: PUSH2 0x1044 0000102f: SWAP2 00001030: POP 00001031: PUSH1 0x20 00001033: RETURNDATASIZE 00001034: PUSH1 0x20 00001036: GT 00001037: PUSH2 0x0a80 0000103a: JUMPI 0000103b: PUSH2 0x0a72 0000103e: DUP2 0000103f: DUP4 00001040: PUSH2 0x18d8 00001043: JUMP 00001044: JUMPDEST 00001045: DUP3 00001046: PUSH2 0x101e 00001049: JUMP 0000104a: JUMPDEST 0000104b: SWAP1 0000104c: CALLVALUE 0000104d: PUSH2 0x0952 00001050: JUMPI 00001051: PUSH0 00001052: CALLDATASIZE 00001053: PUSH1 0x03 00001055: NOT 00001056: ADD 00001057: SLT 00001058: PUSH2 0x0952 0000105b: JUMPI 0000105c: PUSH1 0x01 0000105e: SLOAD 0000105f: CALLER 00001060: PUSH1 0x01 00001062: PUSH1 0x01 00001064: PUSH1 0xa0 00001066: SHL 00001067: SUB 00001068: SWAP1 00001069: SWAP2 0000106a: AND 0000106b: SUB 0000106c: PUSH2 0x107a 0000106f: JUMPI 00001070: PUSH2 0x1078 00001073: CALLER 00001074: PUSH2 0x1fd6 00001077: JUMP 00001078: JUMPDEST 00001079: STOP 0000107a: JUMPDEST 0000107b: PUSH1 0x24 0000107d: SWAP2 0000107e: MLOAD 0000107f: SWAP1 00001080: PUSH4 0x118cdaa7 00001085: PUSH1 0xe0 00001087: SHL 00001088: DUP3 00001089: MSTORE 0000108a: CALLER 0000108b: SWAP1 0000108c: DUP3 0000108d: ADD 0000108e: MSTORE 0000108f: REVERT 00001090: JUMPDEST 00001091: CALLVALUE 00001092: PUSH2 0x0952 00001095: JUMPI 00001096: PUSH0 00001097: CALLDATASIZE 00001098: PUSH1 0x03 0000109a: NOT 0000109b: ADD 0000109c: SLT 0000109d: PUSH2 0x0952 000010a0: JUMPI 000010a1: PUSH1 0x20 000010a3: SWAP1 000010a4: PUSH1 0x06 000010a6: SLOAD 000010a7: SWAP1 000010a8: MLOAD 000010a9: SWAP1 000010aa: DUP2 000010ab: MSTORE 000010ac: RETURN 000010ad: JUMPDEST 000010ae: CALLVALUE 000010af: PUSH2 0x0952 000010b2: JUMPI 000010b3: PUSH0 000010b4: CALLDATASIZE 000010b5: PUSH1 0x03 000010b7: NOT 000010b8: ADD 000010b9: SLT 000010ba: PUSH2 0x0952 000010bd: JUMPI 000010be: PUSH1 0x20 000010c0: SWAP1 000010c1: MLOAD 000010c2: PUSH1 0xff 000010c4: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012 000010e5: AND 000010e6: DUP2 000010e7: MSTORE 000010e8: RETURN 000010e9: JUMPDEST 000010ea: CALLVALUE 000010eb: PUSH2 0x0952 000010ee: JUMPI 000010ef: PUSH0 000010f0: CALLDATASIZE 000010f1: PUSH1 0x03 000010f3: NOT 000010f4: ADD 000010f5: SLT 000010f6: PUSH2 0x0952 000010f9: JUMPI 000010fa: PUSH1 0x20 000010fc: SWAP1 000010fd: PUSH1 0x0c 000010ff: SLOAD 00001100: SWAP1 00001101: MLOAD 00001102: SWAP1 00001103: DUP2 00001104: MSTORE 00001105: RETURN 00001106: JUMPDEST 00001107: CALLVALUE 00001108: PUSH2 0x0952 0000110b: JUMPI 0000110c: PUSH1 0x20 0000110e: CALLDATASIZE 0000110f: PUSH1 0x03 00001111: NOT 00001112: ADD 00001113: SLT 00001114: PUSH2 0x0952 00001117: JUMPI 00001118: PUSH1 0x20 0000111a: SWAP1 0000111b: PUSH2 0x1122 0000111e: PUSH2 0x1833 00001121: JUMP 00001122: JUMPDEST 00001123: SWAP1 00001124: PUSH1 0xff 00001126: PUSH1 0x0e 00001128: SLOAD 00001129: AND 0000112a: SWAP2 0000112b: DUP3 0000112c: ISZERO 0000112d: PUSH2 0x113a 00001130: JUMPI 00001131: JUMPDEST 00001132: POP 00001133: MLOAD 00001134: SWAP1 00001135: ISZERO 00001136: ISZERO 00001137: DUP2 00001138: MSTORE 00001139: RETURN 0000113a: JUMPDEST 0000113b: PUSH1 0x01 0000113d: PUSH1 0x01 0000113f: PUSH1 0xa0 00001141: SHL 00001142: SUB 00001143: AND 00001144: PUSH0 00001145: SWAP1 00001146: DUP2 00001147: MSTORE 00001148: PUSH1 0x0d 0000114a: DUP5 0000114b: MSTORE 0000114c: DUP2 0000114d: SWAP1 0000114e: KECCAK256 0000114f: SLOAD 00001150: PUSH1 0xff 00001152: AND 00001153: SWAP2 00001154: POP 00001155: DUP4 00001156: PUSH2 0x1131 00001159: JUMP 0000115a: JUMPDEST 0000115b: CALLVALUE 0000115c: PUSH2 0x0952 0000115f: JUMPI 00001160: PUSH0 00001161: CALLDATASIZE 00001162: PUSH1 0x03 00001164: NOT 00001165: ADD 00001166: SLT 00001167: PUSH2 0x0952 0000116a: JUMPI 0000116b: PUSH2 0x1172 0000116e: PUSH2 0x1fab 00001171: JUMP 00001172: JUMPDEST 00001173: PUSH1 0x01 00001175: DUP1 00001176: SLOAD 00001177: PUSH1 0x01 00001179: PUSH1 0x01 0000117b: PUSH1 0xa0 0000117d: SHL 0000117e: SUB 0000117f: NOT 00001180: SWAP1 00001181: DUP2 00001182: AND 00001183: SWAP1 00001184: SWAP2 00001185: SSTORE 00001186: PUSH0 00001187: DUP1 00001188: SLOAD 00001189: SWAP2 0000118a: DUP3 0000118b: AND 0000118c: DUP2 0000118d: SSTORE 0000118e: SWAP1 0000118f: PUSH1 0x01 00001191: PUSH1 0x01 00001193: PUSH1 0xa0 00001195: SHL 00001196: SUB 00001197: AND 00001198: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000011b9: DUP3 000011ba: DUP1 000011bb: LOG3 000011bc: STOP 000011bd: JUMPDEST 000011be: SWAP1 000011bf: CALLVALUE 000011c0: PUSH2 0x0952 000011c3: JUMPI 000011c4: PUSH1 0x20 000011c6: SWAP2 000011c7: DUP3 000011c8: PUSH1 0x03 000011ca: NOT 000011cb: CALLDATASIZE 000011cc: ADD 000011cd: SLT 000011ce: PUSH2 0x0952 000011d1: JUMPI 000011d2: DUP3 000011d3: PUSH2 0x11da 000011d6: PUSH2 0x1833 000011d9: JUMP 000011da: JUMPDEST 000011db: DUP3 000011dc: MLOAD 000011dd: PUSH4 0x70a08231 000011e2: PUSH1 0xe0 000011e4: SHL 000011e5: DUP2 000011e6: MSTORE 000011e7: PUSH1 0x01 000011e9: PUSH1 0x01 000011eb: PUSH1 0xa0 000011ed: SHL 000011ee: SUB 000011ef: SWAP2 000011f0: DUP3 000011f1: AND 000011f2: SWAP5 000011f3: DUP2 000011f4: ADD 000011f5: SWAP5 000011f6: SWAP1 000011f7: SWAP5 000011f8: MSTORE 000011f9: DUP4 000011fa: SWAP1 000011fb: PUSH1 0x24 000011fd: SWAP1 000011fe: DUP3 000011ff: SWAP1 00001200: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 00001221: AND 00001222: GAS 00001223: STATICCALL 00001224: SWAP2 00001225: DUP3 00001226: ISZERO 00001227: PUSH2 0x1267 0000122a: JUMPI 0000122b: PUSH0 0000122c: SWAP3 0000122d: PUSH2 0x1238 00001230: JUMPI 00001231: JUMPDEST 00001232: POP 00001233: MLOAD 00001234: SWAP1 00001235: DUP2 00001236: MSTORE 00001237: RETURN 00001238: JUMPDEST 00001239: SWAP1 0000123a: SWAP2 0000123b: POP 0000123c: DUP3 0000123d: DUP2 0000123e: DUP2 0000123f: RETURNDATASIZE 00001240: DUP4 00001241: GT 00001242: PUSH2 0x1260 00001245: JUMPI 00001246: JUMPDEST 00001247: PUSH2 0x1250 0000124a: DUP2 0000124b: DUP4 0000124c: PUSH2 0x18d8 0000124f: JUMP 00001250: JUMPDEST 00001251: DUP2 00001252: ADD 00001253: SUB 00001254: SLT 00001255: PUSH2 0x0952 00001258: JUMPI 00001259: MLOAD 0000125a: SWAP1 0000125b: DUP4 0000125c: PUSH2 0x1231 0000125f: JUMP 00001260: JUMPDEST 00001261: POP 00001262: RETURNDATASIZE 00001263: PUSH2 0x1246 00001266: JUMP 00001267: JUMPDEST 00001268: POP 00001269: MLOAD 0000126a: RETURNDATASIZE 0000126b: PUSH0 0000126c: DUP3 0000126d: RETURNDATACOPY 0000126e: RETURNDATASIZE 0000126f: SWAP1 00001270: REVERT 00001271: JUMPDEST 00001272: SWAP1 00001273: CALLVALUE 00001274: PUSH2 0x0952 00001277: JUMPI 00001278: DUP2 00001279: PUSH1 0x03 0000127b: NOT 0000127c: CALLDATASIZE 0000127d: ADD 0000127e: SLT 0000127f: PUSH2 0x0952 00001282: JUMPI 00001283: DUP1 00001284: CALLDATALOAD 00001285: SWAP2 00001286: PUSH2 0x128d 00001289: PUSH2 0x1849 0000128c: JUMP 0000128d: JUMPDEST 0000128e: SWAP3 0000128f: PUSH2 0x1296 00001292: PUSH2 0x1ada 00001295: JUMP 00001296: JUMPDEST 00001297: PUSH1 0x0c 00001299: SSTORE 0000129a: NUMBER 0000129b: PUSH1 0x0b 0000129d: SSTORE 0000129e: PUSH1 0xff 000012a0: PUSH1 0x0e 000012a2: SLOAD 000012a3: AND 000012a4: ISZERO 000012a5: DUP1 000012a6: PUSH2 0x1448 000012a9: JUMPI 000012aa: JUMPDEST 000012ab: PUSH2 0x0e11 000012ae: JUMPI 000012af: PUSH2 0x12b6 000012b2: PUSH2 0x19c4 000012b5: JUMP 000012b6: JUMPDEST 000012b7: DUP1 000012b8: DUP3 000012b9: GT 000012ba: PUSH2 0x1418 000012bd: JUMPI 000012be: POP 000012bf: PUSH2 0x12c7 000012c2: DUP2 000012c3: PUSH2 0x1ea1 000012c6: JUMP 000012c7: JUMPDEST 000012c8: SWAP3 000012c9: PUSH2 0x12d0 000012cc: PUSH2 0x2334 000012cf: JUMP 000012d0: JUMPDEST 000012d1: DUP3 000012d2: MLOAD 000012d3: PUSH4 0x23b872dd 000012d8: PUSH1 0xe0 000012da: SHL 000012db: PUSH1 0x20 000012dd: DUP3 000012de: ADD 000012df: MSTORE 000012e0: CALLER 000012e1: PUSH1 0x24 000012e3: DUP3 000012e4: ADD 000012e5: MSTORE 000012e6: ADDRESS 000012e7: PUSH1 0x44 000012e9: DUP3 000012ea: ADD 000012eb: MSTORE 000012ec: PUSH1 0x64 000012ee: DUP1 000012ef: DUP3 000012f0: ADD 000012f1: DUP5 000012f2: SWAP1 000012f3: MSTORE 000012f4: DUP2 000012f5: MSTORE 000012f6: PUSH1 0x01 000012f8: PUSH1 0x01 000012fa: PUSH1 0xa0 000012fc: SHL 000012fd: SUB 000012fe: SWAP2 000012ff: SWAP1 00001300: PUSH2 0x130c 00001303: SWAP1 00001304: PUSH2 0x0ca3 00001307: DUP2 00001308: PUSH2 0x18bc 0000130b: JUMP 0000130c: JUMPDEST 0000130d: DUP2 0000130e: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 0000132f: AND 00001330: DUP1 00001331: EXTCODESIZE 00001332: ISZERO 00001333: PUSH2 0x0952 00001336: JUMPI 00001337: DUP5 00001338: MLOAD 00001339: PUSH4 0x10f98a65 0000133e: PUSH1 0xe1 00001340: SHL 00001341: DUP2 00001342: MSTORE 00001343: PUSH1 0x01 00001345: PUSH1 0x01 00001347: PUSH1 0xa0 00001349: SHL 0000134a: SUB 0000134b: DUP9 0000134c: AND 0000134d: DUP4 0000134e: DUP3 0000134f: ADD 00001350: SWAP1 00001351: DUP2 00001352: MSTORE 00001353: PUSH1 0x20 00001355: DUP2 00001356: ADD 00001357: DUP9 00001358: SWAP1 00001359: MSTORE 0000135a: SWAP1 0000135b: SWAP2 0000135c: PUSH0 0000135d: SWAP2 0000135e: DUP4 0000135f: SWAP2 00001360: SWAP1 00001361: DUP3 00001362: SWAP1 00001363: DUP5 00001364: SWAP1 00001365: DUP3 00001366: SWAP1 00001367: PUSH1 0x40 00001369: ADD 0000136a: SUB 0000136b: SWAP3 0000136c: GAS 0000136d: CALL 0000136e: DUP1 0000136f: ISZERO 00001370: PUSH2 0x0dd7 00001373: JUMPI 00001374: PUSH2 0x1409 00001377: JUMPI 00001378: JUMPDEST 00001379: POP 0000137a: PUSH2 0x1385 0000137d: DUP6 0000137e: PUSH1 0x07 00001380: SLOAD 00001381: PUSH2 0x1f3c 00001384: JUMP 00001385: JUMPDEST 00001386: DUP1 00001387: PUSH1 0x07 00001389: SSTORE 0000138a: PUSH1 0x06 0000138c: SLOAD 0000138d: DUP1 0000138e: SWAP2 0000138f: GT 00001390: PUSH2 0x13d4 00001393: JUMPI 00001394: POP 00001395: POP 00001396: PUSH1 0x20 00001398: SWAP5 00001399: DUP4 0000139a: MLOAD 0000139b: SWAP3 0000139c: DUP4 0000139d: MSTORE 0000139e: DUP5 0000139f: DUP7 000013a0: DUP5 000013a1: ADD 000013a2: MSTORE 000013a3: AND 000013a4: SWAP1 000013a5: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7 000013c6: DUP4 000013c7: CALLER 000013c8: SWAP3 000013c9: LOG3 000013ca: PUSH1 0x01 000013cc: PUSH1 0x02 000013ce: SSTORE 000013cf: MLOAD 000013d0: SWAP1 000013d1: DUP2 000013d2: MSTORE 000013d3: RETURN 000013d4: JUMPDEST 000013d5: DUP5 000013d6: MLOAD 000013d7: PUSH4 0x6df60743 000013dc: PUSH1 0xe1 000013de: SHL 000013df: DUP2 000013e0: MSTORE 000013e1: PUSH1 0x01 000013e3: PUSH1 0x01 000013e5: PUSH1 0xa0 000013e7: SHL 000013e8: SUB 000013e9: DUP9 000013ea: AND 000013eb: SWAP3 000013ec: DUP2 000013ed: ADD 000013ee: SWAP3 000013ef: DUP4 000013f0: MSTORE 000013f1: PUSH1 0x20 000013f3: DUP4 000013f4: ADD 000013f5: DUP8 000013f6: SWAP1 000013f7: MSTORE 000013f8: PUSH1 0x40 000013fa: DUP4 000013fb: ADD 000013fc: SWAP2 000013fd: SWAP1 000013fe: SWAP2 000013ff: MSTORE 00001400: SWAP1 00001401: DUP2 00001402: SWAP1 00001403: PUSH1 0x60 00001405: ADD 00001406: SUB 00001407: SWAP1 00001408: REVERT 00001409: JUMPDEST 0000140a: PUSH2 0x1412 0000140d: SWAP1 0000140e: PUSH2 0x1894 00001411: JUMP 00001412: JUMPDEST 00001413: DUP7 00001414: PUSH2 0x1378 00001417: JUMP 00001418: JUMPDEST 00001419: SWAP2 0000141a: MLOAD 0000141b: PUSH4 0x3c8097d9 00001420: PUSH1 0xe1 00001422: SHL 00001423: DUP2 00001424: MSTORE 00001425: PUSH1 0x01 00001427: PUSH1 0x01 00001429: PUSH1 0xa0 0000142b: SHL 0000142c: SUB 0000142d: SWAP1 0000142e: SWAP5 0000142f: AND 00001430: SWAP3 00001431: DUP5 00001432: ADD 00001433: SWAP3 00001434: DUP4 00001435: MSTORE 00001436: PUSH1 0x20 00001438: DUP4 00001439: ADD 0000143a: MSTORE 0000143b: PUSH1 0x40 0000143d: DUP3 0000143e: ADD 0000143f: MSTORE 00001440: DUP2 00001441: SWAP1 00001442: PUSH1 0x60 00001444: ADD 00001445: SUB 00001446: SWAP1 00001447: REVERT 00001448: JUMPDEST 00001449: POP 0000144a: CALLER 0000144b: PUSH0 0000144c: MSTORE 0000144d: PUSH1 0x0d 0000144f: PUSH1 0x20 00001451: MSTORE 00001452: PUSH1 0xff 00001454: DUP3 00001455: PUSH0 00001456: KECCAK256 00001457: SLOAD 00001458: AND 00001459: ISZERO 0000145a: PUSH2 0x12aa 0000145d: JUMP 0000145e: JUMPDEST 0000145f: CALLVALUE 00001460: PUSH2 0x0952 00001463: JUMPI 00001464: PUSH0 00001465: CALLDATASIZE 00001466: PUSH1 0x03 00001468: NOT 00001469: ADD 0000146a: SLT 0000146b: PUSH2 0x0952 0000146e: JUMPI 0000146f: PUSH1 0x08 00001471: SLOAD 00001472: SWAP1 00001473: MLOAD 00001474: PUSH1 0x01 00001476: PUSH1 0x01 00001478: PUSH1 0xa0 0000147a: SHL 0000147b: SUB 0000147c: SWAP1 0000147d: SWAP2 0000147e: AND 0000147f: DUP2 00001480: MSTORE 00001481: PUSH1 0x20 00001483: SWAP1 00001484: RETURN 00001485: JUMPDEST 00001486: SWAP1 00001487: CALLVALUE 00001488: PUSH2 0x0952 0000148b: JUMPI 0000148c: PUSH1 0x20 0000148e: CALLDATASIZE 0000148f: PUSH1 0x03 00001491: NOT 00001492: ADD 00001493: SLT 00001494: PUSH2 0x0952 00001497: JUMPI 00001498: CALLDATALOAD 00001499: SWAP1 0000149a: DUP2 0000149b: ISZERO 0000149c: ISZERO 0000149d: DUP1 0000149e: SWAP3 0000149f: SUB 000014a0: PUSH2 0x0952 000014a3: JUMPI 000014a4: PUSH32 0x4b27f094e2c92966ec24dc9c9acf6c8dacdf2758b6a4b67ae3e38ae3f22f2125 000014c5: SWAP2 000014c6: PUSH1 0x20 000014c8: SWAP2 000014c9: PUSH2 0x14d0 000014cc: PUSH2 0x1fab 000014cf: JUMP 000014d0: JUMPDEST 000014d1: PUSH1 0xff 000014d3: NOT 000014d4: PUSH1 0x0e 000014d6: SLOAD 000014d7: AND 000014d8: PUSH1 0xff 000014da: DUP4 000014db: AND 000014dc: OR 000014dd: PUSH1 0x0e 000014df: SSTORE 000014e0: MLOAD 000014e1: SWAP1 000014e2: DUP2 000014e3: MSTORE 000014e4: LOG1 000014e5: STOP 000014e6: JUMPDEST 000014e7: CALLVALUE 000014e8: PUSH2 0x0952 000014eb: JUMPI 000014ec: PUSH0 000014ed: CALLDATASIZE 000014ee: PUSH1 0x03 000014f0: NOT 000014f1: ADD 000014f2: SLT 000014f3: PUSH2 0x0952 000014f6: JUMPI 000014f7: PUSH1 0x20 000014f9: SWAP1 000014fa: PUSH1 0xff 000014fc: PUSH1 0x03 000014fe: SLOAD 000014ff: AND 00001500: SWAP1 00001501: MLOAD 00001502: SWAP1 00001503: ISZERO 00001504: ISZERO 00001505: DUP2 00001506: MSTORE 00001507: RETURN 00001508: JUMPDEST 00001509: CALLVALUE 0000150a: PUSH2 0x0952 0000150d: JUMPI 0000150e: PUSH1 0x80 00001510: CALLDATASIZE 00001511: PUSH1 0x03 00001513: NOT 00001514: ADD 00001515: SLT 00001516: PUSH2 0x0952 00001519: JUMPI 0000151a: PUSH2 0x1078 0000151d: PUSH2 0x1524 00001520: PUSH2 0x1833 00001523: JUMP 00001524: JUMPDEST 00001525: PUSH1 0x64 00001527: CALLDATALOAD 00001528: SWAP1 00001529: PUSH1 0x44 0000152b: CALLDATALOAD 0000152c: SWAP1 0000152d: PUSH1 0x24 0000152f: CALLDATALOAD 00001530: SWAP1 00001531: PUSH2 0x1a6d 00001534: JUMP 00001535: JUMPDEST 00001536: CALLVALUE 00001537: PUSH2 0x0952 0000153a: JUMPI 0000153b: PUSH1 0x20 0000153d: CALLDATASIZE 0000153e: PUSH1 0x03 00001540: NOT 00001541: ADD 00001542: SLT 00001543: PUSH2 0x0952 00001546: JUMPI 00001547: PUSH2 0x02e2 0000154a: PUSH1 0x20 0000154c: SWAP3 0000154d: CALLDATALOAD 0000154e: PUSH2 0x19e9 00001551: JUMP 00001552: JUMPDEST 00001553: SWAP1 00001554: CALLVALUE 00001555: PUSH2 0x0952 00001558: JUMPI 00001559: PUSH1 0x20 0000155b: CALLDATASIZE 0000155c: PUSH1 0x03 0000155e: NOT 0000155f: ADD 00001560: SLT 00001561: PUSH2 0x0952 00001564: JUMPI 00001565: PUSH32 0xcda03296b648d791f2cee5a5af4b32860d8a3d01fae4126b12b4081224003767 00001586: SWAP2 00001587: PUSH1 0x20 00001589: SWAP2 0000158a: CALLDATALOAD 0000158b: SWAP1 0000158c: PUSH2 0x1593 0000158f: PUSH2 0x1fab 00001592: JUMP 00001593: JUMPDEST 00001594: DUP2 00001595: PUSH1 0x06 00001597: SSTORE 00001598: MLOAD 00001599: SWAP1 0000159a: DUP2 0000159b: MSTORE 0000159c: LOG1 0000159d: STOP 0000159e: JUMPDEST 0000159f: CALLVALUE 000015a0: PUSH2 0x0952 000015a3: JUMPI 000015a4: PUSH1 0x20 000015a6: CALLDATASIZE 000015a7: PUSH1 0x03 000015a9: NOT 000015aa: ADD 000015ab: SLT 000015ac: PUSH2 0x0952 000015af: JUMPI 000015b0: PUSH1 0x20 000015b2: SWAP1 000015b3: PUSH2 0x15ba 000015b6: PUSH2 0x1833 000015b9: JUMP 000015ba: JUMPDEST 000015bb: POP 000015bc: PUSH2 0x02e2 000015bf: PUSH2 0x19c4 000015c2: JUMP 000015c3: JUMPDEST 000015c4: CALLVALUE 000015c5: PUSH2 0x0952 000015c8: JUMPI 000015c9: PUSH0 000015ca: CALLDATASIZE 000015cb: PUSH1 0x03 000015cd: NOT 000015ce: ADD 000015cf: SLT 000015d0: PUSH2 0x0952 000015d3: JUMPI 000015d4: MLOAD 000015d5: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 000015f6: PUSH1 0x01 000015f8: PUSH1 0x01 000015fa: PUSH1 0xa0 000015fc: SHL 000015fd: SUB 000015fe: AND 000015ff: DUP2 00001600: MSTORE 00001601: PUSH1 0x20 00001603: SWAP1 00001604: RETURN 00001605: JUMPDEST 00001606: CALLVALUE 00001607: PUSH2 0x0952 0000160a: JUMPI 0000160b: PUSH0 0000160c: CALLDATASIZE 0000160d: PUSH1 0x03 0000160f: NOT 00001610: ADD 00001611: SLT 00001612: PUSH2 0x0952 00001615: JUMPI 00001616: DUP1 00001617: MLOAD 00001618: PUSH4 0x18160ddd 0000161d: PUSH1 0xe0 0000161f: SHL 00001620: DUP2 00001621: MSTORE 00001622: SWAP2 00001623: PUSH1 0x20 00001625: SWAP1 00001626: DUP4 00001627: SWAP1 00001628: DUP2 00001629: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 0000164a: PUSH1 0x01 0000164c: PUSH1 0x01 0000164e: PUSH1 0xa0 00001650: SHL 00001651: SUB 00001652: AND 00001653: GAS 00001654: STATICCALL 00001655: SWAP1 00001656: DUP2 00001657: ISZERO 00001658: PUSH2 0x16a1 0000165b: JUMPI 0000165c: PUSH0 0000165d: SWAP2 0000165e: PUSH2 0x166c 00001661: JUMPI 00001662: JUMPDEST 00001663: PUSH1 0x20 00001665: SWAP3 00001666: POP 00001667: MLOAD 00001668: SWAP1 00001669: DUP2 0000166a: MSTORE 0000166b: RETURN 0000166c: JUMPDEST 0000166d: SWAP1 0000166e: POP 0000166f: PUSH1 0x20 00001671: DUP3 00001672: RETURNDATASIZE 00001673: PUSH1 0x20 00001675: GT 00001676: PUSH2 0x1699 00001679: JUMPI 0000167a: JUMPDEST 0000167b: DUP2 0000167c: PUSH2 0x1687 0000167f: PUSH1 0x20 00001681: SWAP4 00001682: DUP4 00001683: PUSH2 0x18d8 00001686: JUMP 00001687: JUMPDEST 00001688: DUP2 00001689: ADD 0000168a: SUB 0000168b: SLT 0000168c: PUSH2 0x0952 0000168f: JUMPI 00001690: PUSH1 0x20 00001692: SWAP2 00001693: MLOAD 00001694: SWAP1 00001695: PUSH2 0x1662 00001698: JUMP 00001699: JUMPDEST 0000169a: RETURNDATASIZE 0000169b: SWAP2 0000169c: POP 0000169d: PUSH2 0x167a 000016a0: JUMP 000016a1: JUMPDEST 000016a2: MLOAD 000016a3: RETURNDATASIZE 000016a4: PUSH0 000016a5: DUP3 000016a6: RETURNDATACOPY 000016a7: RETURNDATASIZE 000016a8: SWAP1 000016a9: REVERT 000016aa: JUMPDEST 000016ab: CALLVALUE 000016ac: PUSH2 0x0952 000016af: JUMPI 000016b0: PUSH0 000016b1: CALLDATASIZE 000016b2: PUSH1 0x03 000016b4: NOT 000016b5: ADD 000016b6: SLT 000016b7: PUSH2 0x0952 000016ba: JUMPI 000016bb: PUSH1 0x20 000016bd: SWAP2 000016be: SLOAD 000016bf: SWAP1 000016c0: MLOAD 000016c1: SWAP1 000016c2: DUP2 000016c3: MSTORE 000016c4: RETURN 000016c5: JUMPDEST 000016c6: CALLVALUE 000016c7: PUSH2 0x0952 000016ca: JUMPI 000016cb: DUP1 000016cc: PUSH1 0x03 000016ce: NOT 000016cf: CALLDATASIZE 000016d0: ADD 000016d1: SLT 000016d2: PUSH2 0x0952 000016d5: JUMPI 000016d6: PUSH2 0x16dd 000016d9: PUSH2 0x1833 000016dc: JUMP 000016dd: JUMPDEST 000016de: PUSH1 0x24 000016e0: CALLDATALOAD 000016e1: SWAP1 000016e2: DUP2 000016e3: ISZERO 000016e4: ISZERO 000016e5: DUP1 000016e6: SWAP3 000016e7: SUB 000016e8: PUSH2 0x0952 000016eb: JUMPI 000016ec: PUSH32 0xf93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d 0000170d: SWAP2 0000170e: PUSH1 0x20 00001710: SWAP2 00001711: PUSH2 0x1718 00001714: PUSH2 0x1fab 00001717: JUMP 00001718: JUMPDEST 00001719: PUSH1 0x01 0000171b: PUSH1 0x01 0000171d: PUSH1 0xa0 0000171f: SHL 00001720: SUB 00001721: AND 00001722: PUSH0 00001723: DUP2 00001724: DUP2 00001725: MSTORE 00001726: PUSH1 0x0d 00001728: DUP5 00001729: MSTORE 0000172a: DUP6 0000172b: SWAP1 0000172c: KECCAK256 0000172d: DUP1 0000172e: SLOAD 0000172f: PUSH1 0xff 00001731: NOT 00001732: AND 00001733: PUSH1 0xff 00001735: DUP5 00001736: AND 00001737: OR 00001738: SWAP1 00001739: SSTORE 0000173a: SWAP4 0000173b: MLOAD 0000173c: SWAP1 0000173d: DUP2 0000173e: MSTORE 0000173f: LOG2 00001740: STOP 00001741: JUMPDEST 00001742: CALLVALUE 00001743: PUSH2 0x0952 00001746: JUMPI 00001747: PUSH1 0x20 00001749: CALLDATASIZE 0000174a: PUSH1 0x03 0000174c: NOT 0000174d: ADD 0000174e: SLT 0000174f: PUSH2 0x0952 00001752: JUMPI 00001753: PUSH2 0x02e2 00001756: PUSH1 0x20 00001758: SWAP3 00001759: CALLDATALOAD 0000175a: PUSH2 0x191b 0000175d: JUMP 0000175e: JUMPDEST 0000175f: CALLVALUE 00001760: PUSH2 0x0952 00001763: JUMPI 00001764: PUSH1 0x20 00001766: CALLDATASIZE 00001767: PUSH1 0x03 00001769: NOT 0000176a: ADD 0000176b: SLT 0000176c: PUSH2 0x0952 0000176f: JUMPI 00001770: PUSH2 0x02e2 00001773: PUSH2 0x0b9c 00001776: PUSH1 0x20 00001778: SWAP4 00001779: PUSH2 0x17a1 0000177c: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006 0000179d: PUSH2 0x206c 000017a0: JUMP 000017a1: JUMPDEST 000017a2: PUSH2 0x057e 000017a5: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012 000017c6: PUSH2 0x206c 000017c9: JUMP 000017ca: JUMPDEST 000017cb: SWAP2 000017cc: CALLVALUE 000017cd: PUSH2 0x0952 000017d0: JUMPI 000017d1: PUSH0 000017d2: CALLDATASIZE 000017d3: PUSH1 0x03 000017d5: NOT 000017d6: ADD 000017d7: SLT 000017d8: PUSH2 0x0952 000017db: JUMPI 000017dc: PUSH4 0x70a08231 000017e1: PUSH1 0xe0 000017e3: SHL 000017e4: DUP4 000017e5: MSTORE 000017e6: ADDRESS 000017e7: SWAP1 000017e8: DUP4 000017e9: ADD 000017ea: MSTORE 000017eb: PUSH1 0x20 000017ed: DUP3 000017ee: PUSH1 0x24 000017f0: DUP2 000017f1: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001812: PUSH1 0x01 00001814: PUSH1 0x01 00001816: PUSH1 0xa0 00001818: SHL 00001819: SUB 0000181a: AND 0000181b: GAS 0000181c: STATICCALL 0000181d: SWAP1 0000181e: DUP2 0000181f: ISZERO 00001820: PUSH2 0x16a1 00001823: JUMPI 00001824: PUSH0 00001825: SWAP2 00001826: PUSH2 0x166c 00001829: JUMPI 0000182a: PUSH1 0x20 0000182c: SWAP3 0000182d: POP 0000182e: MLOAD 0000182f: SWAP1 00001830: DUP2 00001831: MSTORE 00001832: RETURN 00001833: JUMPDEST 00001834: PUSH1 0x04 00001836: CALLDATALOAD 00001837: SWAP1 00001838: PUSH1 0x01 0000183a: PUSH1 0x01 0000183c: PUSH1 0xa0 0000183e: SHL 0000183f: SUB 00001840: DUP3 00001841: AND 00001842: DUP3 00001843: SUB 00001844: PUSH2 0x0952 00001847: JUMPI 00001848: JUMP 00001849: JUMPDEST 0000184a: PUSH1 0x24 0000184c: CALLDATALOAD 0000184d: SWAP1 0000184e: PUSH1 0x01 00001850: PUSH1 0x01 00001852: PUSH1 0xa0 00001854: SHL 00001855: SUB 00001856: DUP3 00001857: AND 00001858: DUP3 00001859: SUB 0000185a: PUSH2 0x0952 0000185d: JUMPI 0000185e: JUMP 0000185f: JUMPDEST 00001860: PUSH1 0x60 00001862: SWAP1 00001863: PUSH1 0x03 00001865: NOT 00001866: ADD 00001867: SLT 00001868: PUSH2 0x0952 0000186b: JUMPI 0000186c: PUSH1 0x04 0000186e: CALLDATALOAD 0000186f: SWAP1 00001870: PUSH1 0x01 00001872: PUSH1 0x01 00001874: PUSH1 0xa0 00001876: SHL 00001877: SUB 00001878: SWAP1 00001879: PUSH1 0x24 0000187b: CALLDATALOAD 0000187c: DUP3 0000187d: DUP2 0000187e: AND 0000187f: DUP2 00001880: SUB 00001881: PUSH2 0x0952 00001884: JUMPI 00001885: SWAP2 00001886: PUSH1 0x44 00001888: CALLDATALOAD 00001889: SWAP1 0000188a: DUP2 0000188b: AND 0000188c: DUP2 0000188d: SUB 0000188e: PUSH2 0x0952 00001891: JUMPI 00001892: SWAP1 00001893: JUMP 00001894: JUMPDEST 00001895: PUSH8 0xffffffffffffffff 0000189e: DUP2 0000189f: GT 000018a0: PUSH2 0x18a8 000018a3: JUMPI 000018a4: PUSH1 0x40 000018a6: MSTORE 000018a7: JUMP 000018a8: JUMPDEST 000018a9: PUSH4 0x4e487b71 000018ae: PUSH1 0xe0 000018b0: SHL 000018b1: PUSH0 000018b2: MSTORE 000018b3: PUSH1 0x41 000018b5: PUSH1 0x04 000018b7: MSTORE 000018b8: PUSH1 0x24 000018ba: PUSH0 000018bb: REVERT 000018bc: JUMPDEST 000018bd: PUSH1 0xa0 000018bf: DUP2 000018c0: ADD 000018c1: SWAP1 000018c2: DUP2 000018c3: LT 000018c4: PUSH8 0xffffffffffffffff 000018cd: DUP3 000018ce: GT 000018cf: OR 000018d0: PUSH2 0x18a8 000018d3: JUMPI 000018d4: PUSH1 0x40 000018d6: MSTORE 000018d7: JUMP 000018d8: JUMPDEST 000018d9: SWAP1 000018da: PUSH1 0x1f 000018dc: DUP1 000018dd: NOT 000018de: SWAP2 000018df: ADD 000018e0: AND 000018e1: DUP2 000018e2: ADD 000018e3: SWAP1 000018e4: DUP2 000018e5: LT 000018e6: PUSH8 0xffffffffffffffff 000018ef: DUP3 000018f0: GT 000018f1: OR 000018f2: PUSH2 0x18a8 000018f5: JUMPI 000018f6: PUSH1 0x40 000018f8: MSTORE 000018f9: JUMP 000018fa: JUMPDEST 000018fb: SWAP2 000018fc: SWAP1 000018fd: DUP3 000018fe: SUB 000018ff: SWAP2 00001900: DUP3 00001901: GT 00001902: PUSH2 0x1907 00001905: JUMPI 00001906: JUMP 00001907: JUMPDEST 00001908: PUSH4 0x4e487b71 0000190d: PUSH1 0xe0 0000190f: SHL 00001910: PUSH0 00001911: MSTORE 00001912: PUSH1 0x11 00001914: PUSH1 0x04 00001916: MSTORE 00001917: PUSH1 0x24 00001919: PUSH0 0000191a: REVERT 0000191b: JUMPDEST 0000191c: PUSH1 0x05 0000191e: SLOAD 0000191f: DUP1 00001920: PUSH2 0x199a 00001923: JUMPI 00001924: JUMPDEST 00001925: POP 00001926: PUSH2 0x1984 00001929: PUSH2 0x1997 0000192c: SWAP2 0000192d: PUSH2 0x1955 00001930: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012 00001951: PUSH2 0x206c 00001954: JUMP 00001955: JUMPDEST 00001956: PUSH2 0x197e 00001959: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006 0000197a: PUSH2 0x206c 0000197d: JUMP 0000197e: JUMPDEST 0000197f: SWAP2 00001980: PUSH2 0x1f8f 00001983: JUMP 00001984: JUMPDEST 00001985: PUSH2 0x198f 00001988: PUSH1 0x09 0000198a: SLOAD 0000198b: PUSH2 0x1f2e 0000198e: JUMP 0000198f: JUMPDEST 00001990: PUSH2 0x197e 00001993: PUSH2 0x1ada 00001996: JUMP 00001997: JUMPDEST 00001998: SWAP1 00001999: JUMP 0000199a: JUMPDEST 0000199b: PUSH8 0x0de0b6b3a7640000 000019a4: SWAP1 000019a5: DUP2 000019a6: SUB 000019a7: SWAP1 000019a8: DUP2 000019a9: GT 000019aa: PUSH2 0x1907 000019ad: JUMPI 000019ae: PUSH2 0x19bd 000019b1: PUSH2 0x1984 000019b4: SWAP2 000019b5: PUSH2 0x1997 000019b8: SWAP4 000019b9: PUSH2 0x1f49 000019bc: JUMP 000019bd: JUMPDEST 000019be: SWAP2 000019bf: POP 000019c0: PUSH2 0x1924 000019c3: JUMP 000019c4: JUMPDEST 000019c5: PUSH1 0x07 000019c7: SLOAD 000019c8: PUSH1 0x06 000019ca: SLOAD 000019cb: DUP1 000019cc: DUP3 000019cd: LT 000019ce: PUSH2 0x19d7 000019d1: JUMPI 000019d2: POP 000019d3: POP 000019d4: PUSH0 000019d5: SWAP1 000019d6: JUMP 000019d7: JUMPDEST 000019d8: PUSH2 0x1997 000019db: SWAP2 000019dc: PUSH2 0x19e4 000019df: SWAP2 000019e0: PUSH2 0x18fa 000019e3: JUMP 000019e4: JUMPDEST 000019e5: PUSH2 0x1bb9 000019e8: JUMP 000019e9: JUMPDEST 000019ea: SWAP1 000019eb: PUSH2 0x1a46 000019ee: PUSH2 0x0b9c 000019f1: PUSH1 0x05 000019f3: SLOAD 000019f4: SWAP4 000019f5: PUSH2 0x1a1d 000019f8: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006 00001a19: PUSH2 0x206c 00001a1c: JUMP 00001a1d: JUMPDEST 00001a1e: PUSH2 0x0598 00001a21: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012 00001a42: PUSH2 0x206c 00001a45: JUMP 00001a46: JUMPDEST 00001a47: SWAP2 00001a48: DUP1 00001a49: PUSH2 0x1a4f 00001a4c: JUMPI 00001a4d: POP 00001a4e: JUMP 00001a4f: JUMPDEST 00001a50: SWAP1 00001a51: SWAP2 00001a52: PUSH8 0x0de0b6b3a7640000 00001a5b: SWAP2 00001a5c: DUP3 00001a5d: SUB 00001a5e: SWAP2 00001a5f: DUP3 00001a60: GT 00001a61: PUSH2 0x1907 00001a64: JUMPI 00001a65: PUSH2 0x1997 00001a68: SWAP2 00001a69: PUSH2 0x2119 00001a6c: JUMP 00001a6d: JUMPDEST 00001a6e: PUSH1 0xff 00001a70: PUSH1 0x03 00001a72: SLOAD 00001a73: AND 00001a74: PUSH2 0x1a98 00001a77: JUMPI 00001a78: PUSH2 0x1a80 00001a7b: SWAP1 00001a7c: PUSH2 0x1fd6 00001a7f: JUMP 00001a80: JUMPDEST 00001a81: PUSH1 0x06 00001a83: SSTORE 00001a84: PUSH1 0x04 00001a86: SSTORE 00001a87: PUSH1 0x05 00001a89: SSTORE 00001a8a: PUSH1 0x01 00001a8c: PUSH1 0xff 00001a8e: NOT 00001a8f: PUSH1 0x03 00001a91: SLOAD 00001a92: AND 00001a93: OR 00001a94: PUSH1 0x03 00001a96: SSTORE 00001a97: JUMP 00001a98: JUMPDEST 00001a99: PUSH1 0x40 00001a9b: MLOAD 00001a9c: PUSH4 0x68473d61 00001aa1: PUSH1 0xe1 00001aa3: SHL 00001aa4: DUP2 00001aa5: MSTORE 00001aa6: PUSH1 0x04 00001aa8: SWAP1 00001aa9: REVERT 00001aaa: JUMPDEST 00001aab: SWAP1 00001aac: DUP2 00001aad: PUSH1 0x20 00001aaf: SWAP2 00001ab0: SUB 00001ab1: SLT 00001ab2: PUSH2 0x0952 00001ab5: JUMPI 00001ab6: MLOAD 00001ab7: PUSH1 0xff 00001ab9: DUP2 00001aba: AND 00001abb: DUP2 00001abc: SUB 00001abd: PUSH2 0x0952 00001ac0: JUMPI 00001ac1: SWAP1 00001ac2: JUMP 00001ac3: JUMPDEST 00001ac4: MLOAD 00001ac5: SWAP1 00001ac6: PUSH10 0xffffffffffffffffffff 00001ad1: DUP3 00001ad2: AND 00001ad3: DUP3 00001ad4: SUB 00001ad5: PUSH2 0x0952 00001ad8: JUMPI 00001ad9: JUMP 00001ada: JUMPDEST 00001adb: PUSH1 0x0b 00001add: SLOAD 00001ade: NUMBER 00001adf: SUB 00001ae0: PUSH2 0x1ae9 00001ae3: JUMPI 00001ae4: PUSH1 0x0c 00001ae6: SLOAD 00001ae7: SWAP1 00001ae8: JUMP 00001ae9: JUMPDEST 00001aea: PUSH1 0x08 00001aec: SLOAD 00001aed: PUSH1 0x40 00001aef: MLOAD 00001af0: PUSH4 0x3fabe5a3 00001af5: PUSH1 0xe2 00001af7: SHL 00001af8: DUP2 00001af9: MSTORE 00001afa: SWAP1 00001afb: PUSH1 0xa0 00001afd: SWAP1 00001afe: DUP3 00001aff: SWAP1 00001b00: PUSH1 0x04 00001b02: SWAP1 00001b03: DUP3 00001b04: SWAP1 00001b05: PUSH1 0x01 00001b07: PUSH1 0x01 00001b09: PUSH1 0xa0 00001b0b: SHL 00001b0c: SUB 00001b0d: AND 00001b0e: GAS 00001b0f: STATICCALL 00001b10: DUP1 00001b11: ISZERO 00001b12: PUSH2 0x1bae 00001b15: JUMPI 00001b16: PUSH0 00001b17: SWAP2 00001b18: PUSH0 00001b19: SWAP2 00001b1a: PUSH2 0x1b5a 00001b1d: JUMPI 00001b1e: JUMPDEST 00001b1f: POP 00001b20: PUSH0 00001b21: DUP3 00001b22: SGT 00001b23: SWAP1 00001b24: DUP2 00001b25: ISZERO 00001b26: SWAP2 00001b27: PUSH2 0x1b45 00001b2a: JUMPI 00001b2b: JUMPDEST 00001b2c: POP 00001b2d: PUSH2 0x1b33 00001b30: JUMPI 00001b31: SWAP1 00001b32: JUMP 00001b33: JUMPDEST 00001b34: PUSH1 0x40 00001b36: MLOAD 00001b37: PUSH4 0xb41b6cb1 00001b3c: PUSH1 0xe0 00001b3e: SHL 00001b3f: DUP2 00001b40: MSTORE 00001b41: PUSH1 0x04 00001b43: SWAP1 00001b44: REVERT 00001b45: JUMPDEST 00001b46: PUSH2 0x1b50 00001b49: SWAP2 00001b4a: POP 00001b4b: TIMESTAMP 00001b4c: PUSH2 0x18fa 00001b4f: JUMP 00001b50: JUMPDEST 00001b51: PUSH1 0x0a 00001b53: SLOAD 00001b54: LT 00001b55: PUSH0 00001b56: PUSH2 0x1b2b 00001b59: JUMP 00001b5a: JUMPDEST 00001b5b: SWAP2 00001b5c: POP 00001b5d: POP 00001b5e: PUSH1 0xa0 00001b60: DUP2 00001b61: RETURNDATASIZE 00001b62: PUSH1 0xa0 00001b64: GT 00001b65: PUSH2 0x1ba6 00001b68: JUMPI 00001b69: JUMPDEST 00001b6a: DUP2 00001b6b: PUSH2 0x1b76 00001b6e: PUSH1 0xa0 00001b70: SWAP4 00001b71: DUP4 00001b72: PUSH2 0x18d8 00001b75: JUMP 00001b76: JUMPDEST 00001b77: DUP2 00001b78: ADD 00001b79: SUB 00001b7a: SLT 00001b7b: PUSH2 0x0952 00001b7e: JUMPI 00001b7f: PUSH2 0x1b87 00001b82: DUP2 00001b83: PUSH2 0x1ac3 00001b86: JUMP 00001b87: JUMPDEST 00001b88: POP 00001b89: PUSH1 0x20 00001b8b: DUP2 00001b8c: ADD 00001b8d: MLOAD 00001b8e: PUSH2 0x1b9e 00001b91: PUSH1 0x80 00001b93: PUSH1 0x60 00001b95: DUP5 00001b96: ADD 00001b97: MLOAD 00001b98: SWAP4 00001b99: ADD 00001b9a: PUSH2 0x1ac3 00001b9d: JUMP 00001b9e: JUMPDEST 00001b9f: POP 00001ba0: SWAP1 00001ba1: PUSH0 00001ba2: PUSH2 0x1b1e 00001ba5: JUMP 00001ba6: JUMPDEST 00001ba7: RETURNDATASIZE 00001ba8: SWAP2 00001ba9: POP 00001baa: PUSH2 0x1b69 00001bad: JUMP 00001bae: JUMPDEST 00001baf: PUSH1 0x40 00001bb1: MLOAD 00001bb2: RETURNDATASIZE 00001bb3: PUSH0 00001bb4: DUP3 00001bb5: RETURNDATACOPY 00001bb6: RETURNDATASIZE 00001bb7: SWAP1 00001bb8: REVERT 00001bb9: JUMPDEST 00001bba: PUSH2 0x1c28 00001bbd: PUSH2 0x1c15 00001bc0: PUSH1 0x04 00001bc2: SLOAD 00001bc3: SWAP3 00001bc4: PUSH2 0x1bec 00001bc7: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006 00001be8: PUSH2 0x206c 00001beb: JUMP 00001bec: JUMPDEST 00001bed: PUSH2 0x197e 00001bf0: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012 00001c11: PUSH2 0x206c 00001c14: JUMP 00001c15: JUMPDEST 00001c16: PUSH2 0x1c1d 00001c19: PUSH2 0x1ada 00001c1c: JUMP 00001c1d: JUMPDEST 00001c1e: PUSH2 0x197e 00001c21: PUSH1 0x09 00001c23: SLOAD 00001c24: PUSH2 0x1f2e 00001c27: JUMP 00001c28: JUMPDEST 00001c29: SWAP1 00001c2a: DUP1 00001c2b: PUSH2 0x1c32 00001c2e: JUMPI 00001c2f: POP 00001c30: SWAP1 00001c31: JUMP 00001c32: JUMPDEST 00001c33: PUSH8 0x0de0b6b3a7640000 00001c3c: SWAP1 00001c3d: DUP2 00001c3e: SUB 00001c3f: SWAP1 00001c40: DUP2 00001c41: GT 00001c42: PUSH2 0x1907 00001c45: JUMPI 00001c46: PUSH2 0x1997 00001c49: SWAP2 00001c4a: PUSH2 0x1f49 00001c4d: JUMP 00001c4e: JUMPDEST 00001c4f: PUSH1 0x07 00001c51: SLOAD 00001c52: PUSH1 0x06 00001c54: SLOAD 00001c55: SWAP1 00001c56: DUP2 00001c57: DUP2 00001c58: LT 00001c59: PUSH2 0x1c62 00001c5c: JUMPI 00001c5d: POP 00001c5e: POP 00001c5f: PUSH0 00001c60: SWAP1 00001c61: JUMP 00001c62: JUMPDEST 00001c63: PUSH2 0x1997 00001c66: SWAP2 00001c67: PUSH2 0x18fa 00001c6a: JUMP 00001c6b: JUMPDEST 00001c6c: PUSH1 0x40 00001c6e: MLOAD 00001c6f: PUSH4 0x70a08231 00001c74: PUSH1 0xe0 00001c76: SHL 00001c77: DUP1 00001c78: DUP3 00001c79: MSTORE 00001c7a: PUSH1 0x01 00001c7c: PUSH1 0x01 00001c7e: PUSH1 0xa0 00001c80: SHL 00001c81: SUB 00001c82: SWAP3 00001c83: DUP4 00001c84: AND 00001c85: PUSH1 0x04 00001c87: DUP4 00001c88: ADD 00001c89: MSTORE 00001c8a: SWAP2 00001c8b: PUSH1 0x20 00001c8d: SWAP2 00001c8e: DUP3 00001c8f: DUP2 00001c90: PUSH1 0x24 00001c92: DUP2 00001c93: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 00001cb4: DUP7 00001cb5: AND 00001cb6: GAS 00001cb7: STATICCALL 00001cb8: DUP1 00001cb9: ISZERO 00001cba: PUSH2 0x1bae 00001cbd: JUMPI 00001cbe: DUP4 00001cbf: SWAP2 00001cc0: PUSH0 00001cc1: SWAP2 00001cc2: PUSH2 0x1d55 00001cc5: JUMPI 00001cc6: JUMPDEST 00001cc7: POP 00001cc8: PUSH2 0x1cd0 00001ccb: SWAP1 00001ccc: PUSH2 0x19e9 00001ccf: JUMP 00001cd0: JUMPDEST 00001cd1: SWAP4 00001cd2: PUSH1 0x24 00001cd4: PUSH1 0x40 00001cd6: MLOAD 00001cd7: DUP1 00001cd8: SWAP5 00001cd9: DUP2 00001cda: SWAP4 00001cdb: DUP3 00001cdc: MSTORE 00001cdd: ADDRESS 00001cde: PUSH1 0x04 00001ce0: DUP4 00001ce1: ADD 00001ce2: MSTORE 00001ce3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001d04: AND 00001d05: GAS 00001d06: STATICCALL 00001d07: SWAP2 00001d08: DUP3 00001d09: ISZERO 00001d0a: PUSH2 0x1bae 00001d0d: JUMPI 00001d0e: PUSH0 00001d0f: SWAP3 00001d10: PUSH2 0x1d27 00001d13: JUMPI 00001d14: JUMPDEST 00001d15: POP 00001d16: POP 00001d17: DUP2 00001d18: DUP2 00001d19: GT 00001d1a: ISZERO 00001d1b: PUSH2 0x1d22 00001d1e: JUMPI 00001d1f: POP 00001d20: SWAP1 00001d21: JUMP 00001d22: JUMPDEST 00001d23: SWAP1 00001d24: POP 00001d25: SWAP1 00001d26: JUMP 00001d27: JUMPDEST 00001d28: SWAP1 00001d29: DUP1 00001d2a: SWAP3 00001d2b: POP 00001d2c: DUP2 00001d2d: RETURNDATASIZE 00001d2e: DUP4 00001d2f: GT 00001d30: PUSH2 0x1d4e 00001d33: JUMPI 00001d34: JUMPDEST 00001d35: PUSH2 0x1d3e 00001d38: DUP2 00001d39: DUP4 00001d3a: PUSH2 0x18d8 00001d3d: JUMP 00001d3e: JUMPDEST 00001d3f: DUP2 00001d40: ADD 00001d41: SUB 00001d42: SLT 00001d43: PUSH2 0x0952 00001d46: JUMPI 00001d47: MLOAD 00001d48: PUSH0 00001d49: DUP1 00001d4a: PUSH2 0x1d14 00001d4d: JUMP 00001d4e: JUMPDEST 00001d4f: POP 00001d50: RETURNDATASIZE 00001d51: PUSH2 0x1d34 00001d54: JUMP 00001d55: JUMPDEST 00001d56: DUP3 00001d57: DUP2 00001d58: SWAP4 00001d59: SWAP3 00001d5a: POP 00001d5b: RETURNDATASIZE 00001d5c: DUP4 00001d5d: GT 00001d5e: PUSH2 0x1d7f 00001d61: JUMPI 00001d62: JUMPDEST 00001d63: PUSH2 0x1d6c 00001d66: DUP2 00001d67: DUP4 00001d68: PUSH2 0x18d8 00001d6b: JUMP 00001d6c: JUMPDEST 00001d6d: DUP2 00001d6e: ADD 00001d6f: SUB 00001d70: SLT 00001d71: PUSH2 0x0952 00001d74: JUMPI 00001d75: MLOAD 00001d76: DUP3 00001d77: SWAP1 00001d78: PUSH2 0x1cd0 00001d7b: PUSH2 0x1cc6 00001d7e: JUMP 00001d7f: JUMPDEST 00001d80: POP 00001d81: RETURNDATASIZE 00001d82: PUSH2 0x1d62 00001d85: JUMP 00001d86: JUMPDEST 00001d87: PUSH1 0x40 00001d89: MLOAD 00001d8a: PUSH4 0x70a08231 00001d8f: PUSH1 0xe0 00001d91: SHL 00001d92: DUP1 00001d93: DUP3 00001d94: MSTORE 00001d95: ADDRESS 00001d96: PUSH1 0x04 00001d98: DUP4 00001d99: ADD 00001d9a: MSTORE 00001d9b: PUSH1 0x20 00001d9d: SWAP3 00001d9e: SWAP1 00001d9f: SWAP2 00001da0: PUSH1 0x01 00001da2: PUSH1 0x01 00001da4: PUSH1 0xa0 00001da6: SHL 00001da7: SUB 00001da8: SWAP2 00001da9: DUP5 00001daa: DUP3 00001dab: PUSH1 0x24 00001dad: DUP2 00001dae: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001dcf: DUP8 00001dd0: AND 00001dd1: GAS 00001dd2: STATICCALL 00001dd3: DUP1 00001dd4: ISZERO 00001dd5: PUSH2 0x1bae 00001dd8: JUMPI 00001dd9: DUP6 00001dda: SWAP3 00001ddb: PUSH0 00001ddc: SWAP2 00001ddd: PUSH2 0x1e6e 00001de0: JUMPI 00001de1: JUMPDEST 00001de2: POP 00001de3: PUSH2 0x1ded 00001de6: PUSH1 0x24 00001de8: SWAP2 00001de9: PUSH2 0x191b 00001dec: JUMP 00001ded: JUMPDEST 00001dee: SWAP5 00001def: DUP5 00001df0: PUSH1 0x40 00001df2: MLOAD 00001df3: SWAP6 00001df4: DUP7 00001df5: SWAP5 00001df6: DUP6 00001df7: SWAP4 00001df8: DUP5 00001df9: MSTORE 00001dfa: AND 00001dfb: PUSH1 0x04 00001dfd: DUP4 00001dfe: ADD 00001dff: MSTORE 00001e00: PUSH32 0x000000000000000000000000c00db6b41473d065027f5ed6fada20fde75f142e 00001e21: AND 00001e22: GAS 00001e23: STATICCALL 00001e24: SWAP3 00001e25: DUP4 00001e26: ISZERO 00001e27: PUSH2 0x1bae 00001e2a: JUMPI 00001e2b: PUSH0 00001e2c: SWAP4 00001e2d: PUSH2 0x1e3e 00001e30: JUMPI 00001e31: POP 00001e32: POP 00001e33: DUP2 00001e34: DUP2 00001e35: GT 00001e36: ISZERO 00001e37: PUSH2 0x1d22 00001e3a: JUMPI 00001e3b: POP 00001e3c: SWAP1 00001e3d: JUMP 00001e3e: JUMPDEST 00001e3f: SWAP1 00001e40: DUP1 00001e41: SWAP3 00001e42: SWAP4 00001e43: POP 00001e44: DUP2 00001e45: RETURNDATASIZE 00001e46: DUP4 00001e47: GT 00001e48: PUSH2 0x1e67 00001e4b: JUMPI 00001e4c: JUMPDEST 00001e4d: PUSH2 0x1e56 00001e50: DUP2 00001e51: DUP4 00001e52: PUSH2 0x18d8 00001e55: JUMP 00001e56: JUMPDEST 00001e57: DUP2 00001e58: ADD 00001e59: SUB 00001e5a: SLT 00001e5b: PUSH2 0x0952 00001e5e: JUMPI 00001e5f: MLOAD 00001e60: SWAP1 00001e61: PUSH0 00001e62: DUP1 00001e63: PUSH2 0x1d14 00001e66: JUMP 00001e67: JUMPDEST 00001e68: POP 00001e69: RETURNDATASIZE 00001e6a: PUSH2 0x1e4c 00001e6d: JUMP 00001e6e: JUMPDEST 00001e6f: DUP4 00001e70: DUP2 00001e71: SWAP5 00001e72: SWAP3 00001e73: POP 00001e74: RETURNDATASIZE 00001e75: DUP4 00001e76: GT 00001e77: PUSH2 0x1e9a 00001e7a: JUMPI 00001e7b: JUMPDEST 00001e7c: PUSH2 0x1e85 00001e7f: DUP2 00001e80: DUP4 00001e81: PUSH2 0x18d8 00001e84: JUMP 00001e85: JUMPDEST 00001e86: DUP2 00001e87: ADD 00001e88: SUB 00001e89: SLT 00001e8a: PUSH2 0x0952 00001e8d: JUMPI 00001e8e: SWAP1 00001e8f: MLOAD 00001e90: DUP5 00001e91: SWAP2 00001e92: SWAP1 00001e93: PUSH2 0x1ded 00001e96: PUSH2 0x1de1 00001e99: JUMP 00001e9a: JUMPDEST 00001e9b: POP 00001e9c: RETURNDATASIZE 00001e9d: PUSH2 0x1e7b 00001ea0: JUMP 00001ea1: JUMPDEST 00001ea2: PUSH1 0x04 00001ea4: SLOAD 00001ea5: DUP1 00001ea6: PUSH2 0x1f04 00001ea9: JUMPI 00001eaa: JUMPDEST 00001eab: POP 00001eac: PUSH2 0x0585 00001eaf: PUSH2 0x1997 00001eb2: SWAP2 00001eb3: PUSH2 0x1edb 00001eb6: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000012 00001ed7: PUSH2 0x206c 00001eda: JUMP 00001edb: JUMPDEST 00001edc: PUSH2 0x0598 00001edf: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000006 00001f00: PUSH2 0x206c 00001f03: JUMP 00001f04: JUMPDEST 00001f05: PUSH8 0x0de0b6b3a7640000 00001f0e: SWAP1 00001f0f: DUP2 00001f10: SUB 00001f11: SWAP1 00001f12: DUP2 00001f13: GT 00001f14: PUSH2 0x1907 00001f17: JUMPI 00001f18: PUSH2 0x1f27 00001f1b: PUSH2 0x0585 00001f1e: SWAP2 00001f1f: PUSH2 0x1997 00001f22: SWAP4 00001f23: PUSH2 0x2119 00001f26: JUMP 00001f27: JUMPDEST 00001f28: SWAP2 00001f29: POP 00001f2a: PUSH2 0x1eaa 00001f2d: JUMP 00001f2e: JUMPDEST 00001f2f: PUSH1 0x4d 00001f31: DUP2 00001f32: GT 00001f33: PUSH2 0x1907 00001f36: JUMPI 00001f37: PUSH1 0x0a 00001f39: EXP 00001f3a: SWAP1 00001f3b: JUMP 00001f3c: JUMPDEST 00001f3d: SWAP2 00001f3e: SWAP1 00001f3f: DUP3 00001f40: ADD 00001f41: DUP1 00001f42: SWAP3 00001f43: GT 00001f44: PUSH2 0x1907 00001f47: JUMPI 00001f48: JUMP 00001f49: JUMPDEST 00001f4a: SWAP1 00001f4b: PUSH2 0x1f54 00001f4e: DUP2 00001f4f: DUP4 00001f50: PUSH2 0x218d 00001f53: JUMP 00001f54: JUMPDEST 00001f55: SWAP2 00001f56: DUP2 00001f57: ISZERO 00001f58: PUSH2 0x1f7b 00001f5b: JUMPI 00001f5c: PUSH8 0x0de0b6b3a7640000 00001f65: SWAP1 00001f66: MULMOD 00001f67: PUSH2 0x1f6d 00001f6a: JUMPI 00001f6b: SWAP1 00001f6c: JUMP 00001f6d: JUMPDEST 00001f6e: PUSH1 0x01 00001f70: DUP2 00001f71: ADD 00001f72: DUP1 00001f73: SWAP2 00001f74: GT 00001f75: PUSH2 0x1907 00001f78: JUMPI 00001f79: SWAP1 00001f7a: JUMP 00001f7b: JUMPDEST 00001f7c: PUSH4 0x4e487b71 00001f81: PUSH1 0xe0 00001f83: SHL 00001f84: PUSH0 00001f85: MSTORE 00001f86: PUSH1 0x12 00001f88: PUSH1 0x04 00001f8a: MSTORE 00001f8b: PUSH1 0x24 00001f8d: PUSH0 00001f8e: REVERT 00001f8f: JUMPDEST 00001f90: SWAP2 00001f91: SWAP1 00001f92: PUSH2 0x1f9c 00001f95: DUP3 00001f96: DUP3 00001f97: DUP6 00001f98: PUSH2 0x2208 00001f9b: JUMP 00001f9c: JUMPDEST 00001f9d: SWAP3 00001f9e: DUP3 00001f9f: ISZERO 00001fa0: PUSH2 0x1f7b 00001fa3: JUMPI 00001fa4: MULMOD 00001fa5: PUSH2 0x1f6d 00001fa8: JUMPI 00001fa9: SWAP1 00001faa: JUMP 00001fab: JUMPDEST 00001fac: PUSH0 00001fad: SLOAD 00001fae: PUSH1 0x01 00001fb0: PUSH1 0x01 00001fb2: PUSH1 0xa0 00001fb4: SHL 00001fb5: SUB 00001fb6: AND 00001fb7: CALLER 00001fb8: SUB 00001fb9: PUSH2 0x1fbe 00001fbc: JUMPI 00001fbd: JUMP 00001fbe: JUMPDEST 00001fbf: PUSH1 0x40 00001fc1: MLOAD 00001fc2: PUSH4 0x118cdaa7 00001fc7: PUSH1 0xe0 00001fc9: SHL 00001fca: DUP2 00001fcb: MSTORE 00001fcc: CALLER 00001fcd: PUSH1 0x04 00001fcf: DUP3 00001fd0: ADD 00001fd1: MSTORE 00001fd2: PUSH1 0x24 00001fd4: SWAP1 00001fd5: REVERT 00001fd6: JUMPDEST 00001fd7: PUSH12 0xffffffffffffffffffffffff 00001fe4: PUSH1 0xa0 00001fe6: SHL 00001fe7: SWAP1 00001fe8: DUP2 00001fe9: PUSH1 0x01 00001feb: SLOAD 00001fec: AND 00001fed: PUSH1 0x01 00001fef: SSTORE 00001ff0: PUSH0 00001ff1: SLOAD 00001ff2: PUSH1 0x01 00001ff4: DUP1 00001ff5: PUSH1 0xa0 00001ff7: SHL 00001ff8: SUB 00001ff9: DUP1 00001ffa: SWAP3 00001ffb: AND 00001ffc: DUP1 00001ffd: SWAP4 00001ffe: DUP3 00001fff: AND 00002000: OR 00002001: PUSH0 00002002: SSTORE 00002003: AND 00002004: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00002025: PUSH0 00002026: DUP1 00002027: LOG3 00002028: JUMP 00002029: JUMPDEST 0000202a: PUSH1 0x40 0000202c: MLOAD 0000202d: PUSH4 0xa9059cbb 00002032: PUSH1 0xe0 00002034: SHL 00002035: PUSH1 0x20 00002037: DUP3 00002038: ADD 00002039: MSTORE 0000203a: PUSH1 0x01 0000203c: PUSH1 0x01 0000203e: PUSH1 0xa0 00002040: SHL 00002041: SUB 00002042: SWAP3 00002043: SWAP1 00002044: SWAP3 00002045: AND 00002046: PUSH1 0x24 00002048: DUP4 00002049: ADD 0000204a: MSTORE 0000204b: PUSH1 0x44 0000204d: DUP1 0000204e: DUP4 0000204f: ADD 00002050: SWAP4 00002051: SWAP1 00002052: SWAP4 00002053: MSTORE 00002054: SWAP2 00002055: DUP2 00002056: MSTORE 00002057: PUSH2 0x206a 0000205a: SWAP2 0000205b: PUSH2 0x2065 0000205e: PUSH1 0x64 00002060: DUP4 00002061: PUSH2 0x18d8 00002064: JUMP 00002065: JUMPDEST 00002066: PUSH2 0x227b 00002069: JUMP 0000206a: JUMPDEST 0000206b: JUMP 0000206c: JUMPDEST 0000206d: PUSH1 0xff 0000206f: AND 00002070: PUSH1 0x4d 00002072: DUP2 00002073: GT 00002074: PUSH2 0x1907 00002077: JUMPI 00002078: PUSH1 0x0a 0000207a: EXP 0000207b: SWAP1 0000207c: JUMP 0000207d: JUMPDEST 0000207e: SWAP1 0000207f: PUSH8 0x0de0b6b3a7640000 00002088: DUP1 00002089: DUP4 0000208a: MUL 0000208b: SWAP2 0000208c: SWAP1 0000208d: PUSH0 0000208e: NOT 0000208f: DUP5 00002090: DUP3 00002091: MULMOD 00002092: SWAP4 00002093: DUP4 00002094: DUP1 00002095: DUP7 00002096: LT 00002097: SWAP6 00002098: SUB 00002099: SWAP5 0000209a: DUP1 0000209b: DUP7 0000209c: SUB 0000209d: SWAP6 0000209e: EQ 0000209f: PUSH2 0x210b 000020a2: JUMPI 000020a3: DUP5 000020a4: DUP4 000020a5: GT 000020a6: ISZERO 000020a7: PUSH2 0x20f9 000020aa: JUMPI 000020ab: DUP3 000020ac: SWAP2 000020ad: MULMOD 000020ae: DUP2 000020af: PUSH0 000020b0: SUB 000020b1: DUP3 000020b2: AND 000020b3: DUP1 000020b4: SWAP3 000020b5: DIV 000020b6: PUSH1 0x02 000020b8: DUP1 000020b9: DUP3 000020ba: PUSH1 0x03 000020bc: MUL 000020bd: XOR 000020be: DUP1 000020bf: DUP4 000020c0: MUL 000020c1: DUP3 000020c2: SUB 000020c3: MUL 000020c4: DUP1 000020c5: DUP4 000020c6: MUL 000020c7: DUP3 000020c8: SUB 000020c9: MUL 000020ca: DUP1 000020cb: DUP4 000020cc: MUL 000020cd: DUP3 000020ce: SUB 000020cf: MUL 000020d0: DUP1 000020d1: DUP4 000020d2: MUL 000020d3: DUP3 000020d4: SUB 000020d5: MUL 000020d6: DUP1 000020d7: DUP4 000020d8: MUL 000020d9: DUP3 000020da: SUB 000020db: MUL 000020dc: DUP1 000020dd: SWAP3 000020de: MUL 000020df: SWAP1 000020e0: SUB 000020e1: MUL 000020e2: SWAP4 000020e3: PUSH1 0x01 000020e5: DUP4 000020e6: DUP1 000020e7: PUSH0 000020e8: SUB 000020e9: DIV 000020ea: ADD 000020eb: SWAP1 000020ec: DUP5 000020ed: DUP4 000020ee: GT 000020ef: SWAP1 000020f0: SUB 000020f1: MUL 000020f2: SWAP3 000020f3: SUB 000020f4: DIV 000020f5: OR 000020f6: MUL 000020f7: SWAP1 000020f8: JUMP 000020f9: JUMPDEST 000020fa: PUSH1 0x40 000020fc: MLOAD 000020fd: PUSH4 0x227bc153 00002102: PUSH1 0xe0 00002104: SHL 00002105: DUP2 00002106: MSTORE 00002107: PUSH1 0x04 00002109: SWAP1 0000210a: REVERT 0000210b: JUMPDEST 0000210c: POP 0000210d: POP 0000210e: DUP1 0000210f: SWAP3 00002110: POP 00002111: ISZERO 00002112: PUSH2 0x1f7b 00002115: JUMPI 00002116: DIV 00002117: SWAP1 00002118: JUMP 00002119: JUMPDEST 0000211a: SWAP1 0000211b: DUP1 0000211c: DUP3 0000211d: MUL 0000211e: SWAP1 0000211f: PUSH0 00002120: NOT 00002121: DUP2 00002122: DUP5 00002123: MULMOD 00002124: SWAP1 00002125: DUP3 00002126: DUP1 00002127: DUP4 00002128: LT 00002129: SWAP3 0000212a: SUB 0000212b: SWAP2 0000212c: DUP1 0000212d: DUP4 0000212e: SUB 0000212f: SWAP3 00002130: EQ 00002131: PUSH2 0x217c 00002134: JUMPI 00002135: PUSH8 0x0de0b6b3a7640000 0000213e: SWAP1 0000213f: DUP3 00002140: DUP3 00002141: GT 00002142: ISZERO 00002143: PUSH2 0x20f9 00002146: JUMPI 00002147: PUSH32 0xaccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669 00002168: SWAP5 00002169: MULMOD 0000216a: SWAP1 0000216b: DUP3 0000216c: DUP3 0000216d: GT 0000216e: SWAP1 0000216f: SUB 00002170: PUSH1 0xee 00002172: SHL 00002173: SWAP2 00002174: SUB 00002175: PUSH1 0x12 00002177: SHR 00002178: OR 00002179: MUL 0000217a: SWAP1 0000217b: JUMP 0000217c: JUMPDEST 0000217d: POP 0000217e: POP 0000217f: PUSH8 0x0de0b6b3a7640000 00002188: SWAP2 00002189: POP 0000218a: DIV 0000218b: SWAP1 0000218c: JUMP 0000218d: JUMPDEST 0000218e: PUSH8 0x0de0b6b3a7640000 00002197: SWAP2 00002198: DUP2 00002199: DUP4 0000219a: MUL 0000219b: SWAP2 0000219c: PUSH0 0000219d: NOT 0000219e: DUP5 0000219f: DUP3 000021a0: MULMOD 000021a1: SWAP4 000021a2: DUP4 000021a3: DUP1 000021a4: DUP7 000021a5: LT 000021a6: SWAP6 000021a7: SUB 000021a8: SWAP5 000021a9: DUP1 000021aa: DUP7 000021ab: SUB 000021ac: SWAP6 000021ad: EQ 000021ae: PUSH2 0x210b 000021b1: JUMPI 000021b2: DUP5 000021b3: DUP4 000021b4: GT 000021b5: ISZERO 000021b6: PUSH2 0x20f9 000021b9: JUMPI 000021ba: DUP3 000021bb: SWAP2 000021bc: MULMOD 000021bd: DUP2 000021be: PUSH0 000021bf: SUB 000021c0: DUP3 000021c1: AND 000021c2: DUP1 000021c3: SWAP3 000021c4: DIV 000021c5: PUSH1 0x02 000021c7: DUP1 000021c8: DUP3 000021c9: PUSH1 0x03 000021cb: MUL 000021cc: XOR 000021cd: DUP1 000021ce: DUP4 000021cf: MUL 000021d0: DUP3 000021d1: SUB 000021d2: MUL 000021d3: DUP1 000021d4: DUP4 000021d5: MUL 000021d6: DUP3 000021d7: SUB 000021d8: MUL 000021d9: DUP1 000021da: DUP4 000021db: MUL 000021dc: DUP3 000021dd: SUB 000021de: MUL 000021df: DUP1 000021e0: DUP4 000021e1: MUL 000021e2: DUP3 000021e3: SUB 000021e4: MUL 000021e5: DUP1 000021e6: DUP4 000021e7: MUL 000021e8: DUP3 000021e9: SUB 000021ea: MUL 000021eb: DUP1 000021ec: SWAP3 000021ed: MUL 000021ee: SWAP1 000021ef: SUB 000021f0: MUL 000021f1: SWAP4 000021f2: PUSH1 0x01 000021f4: DUP4 000021f5: DUP1 000021f6: PUSH0 000021f7: SUB 000021f8: DIV 000021f9: ADD 000021fa: SWAP1 000021fb: DUP5 000021fc: DUP4 000021fd: GT 000021fe: SWAP1 000021ff: SUB 00002200: MUL 00002201: SWAP3 00002202: SUB 00002203: DIV 00002204: OR 00002205: MUL 00002206: SWAP1 00002207: JUMP 00002208: JUMPDEST 00002209: SWAP1 0000220a: SWAP2 0000220b: DUP3 0000220c: DUP3 0000220d: MUL 0000220e: SWAP2 0000220f: PUSH0 00002210: NOT 00002211: DUP5 00002212: DUP3 00002213: MULMOD 00002214: SWAP4 00002215: DUP4 00002216: DUP1 00002217: DUP7 00002218: LT 00002219: SWAP6 0000221a: SUB 0000221b: SWAP5 0000221c: DUP1 0000221d: DUP7 0000221e: SUB 0000221f: SWAP6 00002220: EQ 00002221: PUSH2 0x210b 00002224: JUMPI 00002225: DUP5 00002226: DUP4 00002227: GT 00002228: ISZERO 00002229: PUSH2 0x20f9 0000222c: JUMPI 0000222d: DUP3 0000222e: SWAP2 0000222f: MULMOD 00002230: DUP2 00002231: PUSH0 00002232: SUB 00002233: DUP3 00002234: AND 00002235: DUP1 00002236: SWAP3 00002237: DIV 00002238: PUSH1 0x02 0000223a: DUP1 0000223b: DUP3 0000223c: PUSH1 0x03 0000223e: MUL 0000223f: XOR 00002240: DUP1 00002241: DUP4 00002242: MUL 00002243: DUP3 00002244: SUB 00002245: MUL 00002246: DUP1 00002247: DUP4 00002248: MUL 00002249: DUP3 0000224a: SUB 0000224b: MUL 0000224c: DUP1 0000224d: DUP4 0000224e: MUL 0000224f: DUP3 00002250: SUB 00002251: MUL 00002252: DUP1 00002253: DUP4 00002254: MUL 00002255: DUP3 00002256: SUB 00002257: MUL 00002258: DUP1 00002259: DUP4 0000225a: MUL 0000225b: DUP3 0000225c: SUB 0000225d: MUL 0000225e: DUP1 0000225f: SWAP3 00002260: MUL 00002261: SWAP1 00002262: SUB 00002263: MUL 00002264: SWAP4 00002265: PUSH1 0x01 00002267: DUP4 00002268: DUP1 00002269: PUSH0 0000226a: SUB 0000226b: DIV 0000226c: ADD 0000226d: SWAP1 0000226e: DUP5 0000226f: DUP4 00002270: GT 00002271: SWAP1 00002272: SUB 00002273: MUL 00002274: SWAP3 00002275: SUB 00002276: DIV 00002277: OR 00002278: MUL 00002279: SWAP1 0000227a: JUMP 0000227b: JUMPDEST 0000227c: DUP2 0000227d: MLOAD 0000227e: PUSH1 0x01 00002280: PUSH1 0x01 00002282: PUSH1 0xa0 00002284: SHL 00002285: SUB 00002286: SWAP1 00002287: SWAP2 00002288: AND 00002289: SWAP2 0000228a: PUSH0 0000228b: SWAP2 0000228c: DUP3 0000228d: SWAP2 0000228e: PUSH1 0x20 00002290: ADD 00002291: DUP3 00002292: DUP6 00002293: GAS 00002294: CALL 00002295: RETURNDATASIZE 00002296: ISZERO 00002297: PUSH2 0x2328 0000229a: JUMPI 0000229b: RETURNDATASIZE 0000229c: PUSH8 0xffffffffffffffff 000022a5: DUP2 000022a6: GT 000022a7: PUSH2 0x18a8 000022aa: JUMPI 000022ab: PUSH2 0x22d6 000022ae: SWAP2 000022af: PUSH1 0x40 000022b1: MLOAD 000022b2: SWAP2 000022b3: PUSH2 0x22c6 000022b6: PUSH1 0x20 000022b8: PUSH1 0x1f 000022ba: NOT 000022bb: PUSH1 0x1f 000022bd: DUP5 000022be: ADD 000022bf: AND 000022c0: ADD 000022c1: DUP5 000022c2: PUSH2 0x18d8 000022c5: JUMP 000022c6: JUMPDEST 000022c7: DUP3 000022c8: MSTORE 000022c9: RETURNDATASIZE 000022ca: PUSH0 000022cb: PUSH1 0x20 000022cd: DUP5 000022ce: ADD 000022cf: RETURNDATACOPY 000022d0: JUMPDEST 000022d1: DUP4 000022d2: PUSH2 0x2355 000022d5: JUMP 000022d6: JUMPDEST 000022d7: DUP1 000022d8: MLOAD 000022d9: SWAP1 000022da: DUP2 000022db: ISZERO 000022dc: ISZERO 000022dd: SWAP2 000022de: DUP3 000022df: PUSH2 0x2304 000022e2: JUMPI 000022e3: JUMPDEST 000022e4: POP 000022e5: POP 000022e6: PUSH2 0x22ec 000022e9: JUMPI 000022ea: POP 000022eb: JUMP 000022ec: JUMPDEST 000022ed: PUSH1 0x24 000022ef: SWAP1 000022f0: PUSH1 0x40 000022f2: MLOAD 000022f3: SWAP1 000022f4: PUSH4 0x5274afe7 000022f9: PUSH1 0xe0 000022fb: SHL 000022fc: DUP3 000022fd: MSTORE 000022fe: PUSH1 0x04 00002300: DUP3 00002301: ADD 00002302: MSTORE 00002303: REVERT 00002304: JUMPDEST 00002305: DUP2 00002306: SWAP3 00002307: POP 00002308: SWAP1 00002309: PUSH1 0x20 0000230b: SWAP2 0000230c: DUP2 0000230d: ADD 0000230e: SUB 0000230f: SLT 00002310: PUSH2 0x0952 00002313: JUMPI 00002314: PUSH1 0x20 00002316: ADD 00002317: MLOAD 00002318: DUP1 00002319: ISZERO 0000231a: SWAP1 0000231b: DUP2 0000231c: ISZERO 0000231d: SUB 0000231e: PUSH2 0x0952 00002321: JUMPI 00002322: PUSH0 00002323: DUP1 00002324: PUSH2 0x22e3 00002327: JUMP 00002328: JUMPDEST 00002329: PUSH2 0x22d6 0000232c: SWAP1 0000232d: PUSH1 0x60 0000232f: SWAP1 00002330: PUSH2 0x22d0 00002333: JUMP 00002334: JUMPDEST 00002335: PUSH1 0x02 00002337: DUP1 00002338: SLOAD 00002339: EQ 0000233a: PUSH2 0x2343 0000233d: JUMPI 0000233e: PUSH1 0x02 00002340: DUP1 00002341: SSTORE 00002342: JUMP 00002343: JUMPDEST 00002344: PUSH1 0x40 00002346: MLOAD 00002347: PUSH4 0x3ee5aeb5 0000234c: PUSH1 0xe0 0000234e: SHL 0000234f: DUP2 00002350: MSTORE 00002351: PUSH1 0x04 00002353: SWAP1 00002354: REVERT 00002355: JUMPDEST 00002356: SWAP1 00002357: PUSH2 0x237c 0000235a: JUMPI 0000235b: POP 0000235c: DUP1 0000235d: MLOAD 0000235e: ISZERO 0000235f: PUSH2 0x236a 00002362: JUMPI 00002363: DUP1 00002364: MLOAD 00002365: SWAP1 00002366: PUSH1 0x20 00002368: ADD 00002369: REVERT 0000236a: JUMPDEST 0000236b: PUSH1 0x40 0000236d: MLOAD 0000236e: PUSH4 0x0a12f521 00002373: PUSH1 0xe1 00002375: SHL 00002376: DUP2 00002377: MSTORE 00002378: PUSH1 0x04 0000237a: SWAP1 0000237b: REVERT 0000237c: JUMPDEST 0000237d: DUP2 0000237e: MLOAD 0000237f: ISZERO 00002380: DUP1 00002381: PUSH2 0x23af 00002384: JUMPI 00002385: JUMPDEST 00002386: PUSH2 0x238d 00002389: JUMPI 0000238a: POP 0000238b: SWAP1 0000238c: JUMP 0000238d: JUMPDEST 0000238e: PUSH1 0x40 00002390: MLOAD 00002391: PUSH4 0x9996b315 00002396: PUSH1 0xe0 00002398: SHL 00002399: DUP2 0000239a: MSTORE 0000239b: PUSH1 0x01 0000239d: PUSH1 0x01 0000239f: PUSH1 0xa0 000023a1: SHL 000023a2: SUB 000023a3: SWAP1 000023a4: SWAP2 000023a5: AND 000023a6: PUSH1 0x04 000023a8: DUP3 000023a9: ADD 000023aa: MSTORE 000023ab: PUSH1 0x24 000023ad: SWAP1 000023ae: REVERT 000023af: JUMPDEST 000023b0: POP 000023b1: DUP1 000023b2: EXTCODESIZE 000023b3: ISZERO 000023b4: PUSH2 0x2385 000023b7: JUMP 000023b8: INVALID 000023b9: LOG2 000023ba: PUSH5 0x6970667358 000023c0: UNKNOWN(0x22) 000023c1: SLT 000023c2: KECCAK256 000023c3: CALLER 000023c4: SWAP5 000023c5: LOG1 000023c6: UNKNOWN(0x24) 000023c7: ORIGIN 000023c8: UNKNOWN(0xC6) 000023c9: PUSH4 0x0a82903f 000023ce: UNKNOWN(0xA6) 000023cf: UNKNOWN(0x0C) 000023d0: JUMPI 000023d1: SWAP11 000023d2: UNKNOWN(0xE7) 000023d3: PUSH1 0x75 000023d5: ADDMOD 000023d6: DUP3 000023d7: BASEFEE 000023d8: UNKNOWN(0x2B) 000023d9: UNKNOWN(0xE3) 000023da: SWAP4 000023db: EXTCODECOPY 000023dc: AND 000023dd: UNKNOWN(0xEC) 000023de: UNKNOWN(0xDB) 000023df: CLZ 000023e0: UNKNOWN(0xC5) 000023e1: MSTORE8 000023e2: UNKNOWN(0xC0) 000023e3: PUSH5 0x736f6c6343 000023e9: STOP 000023ea: ADDMOD 000023eb: XOR 000023ec: STOP 000023ed: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | codex | Public initializers enable proxy takeover if not called atomically | 85 | no | — |
viewevidence_json{
"evidence": "`initialize` is public and only guarded by `owner()==address(0)` or `wasInitialized` checks.",
"locations": [
"contracts/src/KRWT.sol:62",
"contracts/src/KRWTCustodian.sol:96",
"contracts/src/KRWTCustodianWithOracle.sol:90"
],
"recommendation": "Use OpenZeppelin `Initializable` with `initializer` modifiers and disable initializers in the implementation. Ensure proxy deployment calls `initialize` atomically (e.g., via proxy constructor/`upgradeToAndCall`).",
"exploit_scenario": "A proxy is deployed pointing to `KRWT`, `KRWTCustodian`, or `KRWTCustodianWithOracle` without calling `initialize` in the same transaction. An attacker calls `initialize` first, becomes owner, then can add themselves as a minter (KRWT) or call `recoverERC20` to drain custodian assets / change oracle/fees."
}
|
| 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": "0x01e1d114",
"selector": "0x01e1d114",
"calldata_variants": [
"0x01e1d114",
"0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07a2d13a",
"selector": "0x07a2d13a",
"calldata_variants": [
"0x07a2d13a",
"0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0a28a477",
"selector": "0x0a28a477",
"calldata_variants": [
"0x0a28a477",
"0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0c424284",
"selector": "0x0c424284",
"calldata_variants": [
"0x0c424284",
"0x0c4242840000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x13966db5",
"selector": "0x13966db5",
"calldata_variants": [
"0x13966db5",
"0x13966db50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1ee5e23a",
"selector": "0x1ee5e23a",
"calldata_variants": [
"0x1ee5e23a",
"0x1ee5e23a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x38d52e0f",
"selector": "0x38d52e0f",
"calldata_variants": [
"0x38d52e0f",
"0x38d52e0f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 9159,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xa84079d6639215d81c230b6d8f27241344deaa1cd479e68cbb7d4d1e289fbfe6
call_targets:
0x281aa2e0684439ed9fee12eff0d8ff346b755a39
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xa84079d6639215d81c230b6d8f27241344deaa1cd479e68cbb7d4d1e289fbfe6",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x281aa2e0684439ed9fee12eff0d8ff346b755a39"
],
"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": "0x01e1d114",
"selector": "0x01e1d114",
"calldata_variants": [
"0x01e1d114",
"0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07a2d13a",
"selector": "0x07a2d13a",
"calldata_variants": [
"0x07a2d13a",
"0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0a28a477",
"selector": "0x0a28a477",
"calldata_variants": [
"0x0a28a477",
"0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0c424284",
"selector": "0x0c424284",
"calldata_variants": [
"0x0c424284",
"0x0c4242840000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x13966db5",
"selector": "0x13966db5",
"calldata_variants": [
"0x13966db5",
"0x13966db50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1ee5e23a",
"selector": "0x1ee5e23a",
"calldata_variants": [
"0x1ee5e23a",
"0x1ee5e23a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x38d52e0f",
"selector": "0x38d52e0f",
"calldata_variants": [
"0x38d52e0f",
"0x38d52e0f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1672,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2201,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3372,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 5,
"guards_detected": [
{
"pc": 9159,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 5
}
|
| medium | access_control | codex | KRWT ownership can be reclaimed after renounce via initialize | 75 | no | — |
viewevidence_json{
"evidence": "`initialize` only checks `owner() == address(0)` then transfers ownership to the caller-supplied owner.",
"locations": [
"contracts/src/KRWT.sol:62",
"contracts/src/KRWT.sol:64"
],
"recommendation": "Gate `initialize` with a dedicated `initialized` flag or `Initializable` so it cannot be called again even if ownership is renounced; alternatively remove/override `renounceOwnership`.",
"exploit_scenario": "If the owner calls `renounceOwnership`, `owner()` becomes `address(0)` and any account can call `initialize`, take ownership, add themselves as a minter, and mint arbitrary KRWT."
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xa84079d6639215d81c230b6d8f27241344deaa1cd479e68cbb7d4d1e289fbfe6
call_targets:
0x281aa2e0684439ed9fee12eff0d8ff346b755a39
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xa84079d6639215d81c230b6d8f27241344deaa1cd479e68cbb7d4d1e289fbfe6",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x281aa2e0684439ed9fee12eff0d8ff346b755a39"
],
"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": "0x01e1d114",
"selector": "0x01e1d114",
"calldata_variants": [
"0x01e1d114",
"0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07a2d13a",
"selector": "0x07a2d13a",
"calldata_variants": [
"0x07a2d13a",
"0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0a28a477",
"selector": "0x0a28a477",
"calldata_variants": [
"0x0a28a477",
"0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0c424284",
"selector": "0x0c424284",
"calldata_variants": [
"0x0c424284",
"0x0c4242840000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x13966db5",
"selector": "0x13966db5",
"calldata_variants": [
"0x13966db5",
"0x13966db50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1ee5e23a",
"selector": "0x1ee5e23a",
"calldata_variants": [
"0x1ee5e23a",
"0x1ee5e23a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x38d52e0f",
"selector": "0x38d52e0f",
"calldata_variants": [
"0x38d52e0f",
"0x38d52e0f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1672,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2201,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3372,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 5,
"guards_detected": [
{
"pc": 9159,
"type": "tx_origin_used"
}
]
}
|
| low | math | codex | Fee validation uses OR, allowing invalid fees that break mint/withdraw math | 65 | no | — |
viewevidence_json{
"evidence": "`setMintRedeemFee` validates with `require(_mintFee < 1e18 || _redeemFee < 1e18, ...)`.",
"locations": [
"contracts/src/KRWTCustodian.sol:494"
],
"recommendation": "Require both fees to be strictly less than `1e18` (use `&&`) and validate each fee individually.",
"exploit_scenario": "Owner sets `mintFee >= 1e18` while `redeemFee < 1e18` (or vice\u2011versa), passing the `||` check. Subsequent `previewMint`/`previewWithdraw` computations can divide by zero or underflow, causing deposits or withdrawals to revert (DoS)."
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 17
}
|
| info | auth | codex | Proxy initializer updates name/symbol without updating EIP-712 domain | 60 | no | — |
viewevidence_json{
"evidence": "`initialize` writes name/symbol via `StorageSlot` instead of constructing `ERC20Permit` with the runtime name.",
"locations": [
"contracts/src/KRWT.sol:62",
"contracts/src/KRWT.sol:65"
],
"recommendation": "Use `ERC20PermitUpgradeable`/`EIP712Upgradeable` and initialize the domain in `initialize`, or avoid mutating name/symbol after deployment for permit-enabled tokens.",
"exploit_scenario": "When deployed behind a proxy, `initialize` mutates token name/symbol via storage slots, but `ERC20Permit`\u2019s EIP\u2011712 domain is fixed in the implementation constructor. Off\u2011chain clients signing permits with the updated name will fail validation, effectively disabling permit-based approvals."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 6
}
|