019bab3b-ac52-71c2-b78b-846cf73d1ca2
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 |
|---|---|---|---|---|
| 38737 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38738 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38739 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38740 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38741 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38742 | detector.run | complete | 1 / 3 | 3 months ago |
| 38743 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39157 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39158 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-3c45bxap)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-3c45bxap)
Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646) sends eth to arbitrary user
Dangerous calls:
- address(newAuthority).transfer(address(this).balance) (contracts/Contract.sol#1630-1633)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations
Reentrancy in Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646):
External calls:
- IERC20(tokenAddress).safeTransfer(newAuthority,tokenBalance) (contracts/Contract.sol#1636-1638)
- WrappedToken(tokenAddress).transferOwnership(newAuthority) (contracts/Contract.sol#1639-1641)
- IWrappedTokenV0(tokenAddress).changeAuthority(newAuthority) (contracts/Contract.sol#1643-1644)
External calls sending eth:
- address(newAuthority).transfer(address(this).balance) (contracts/Contract.sol#1630-1633)
State variables written after the call(s):
- delete tokenInfos[tokenAddress] (contracts/Contract.sol#1645)
Bridge.tokenInfos (contracts/Contract.sol#1421) can be used in cross function reentrancies:
- Bridge._createLock(uint128,address,uint256,bytes32,bytes4) (contracts/Contract.sol#1672-1705)
- Bridge.addToken(bytes4,bytes32,address,Bridge.TokenType) (contracts/Contract.sol#1603-1619)
- Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646)
- Bridge.setTokenStatus(address,Bridge.TokenStatus) (contracts/Contract.sol#1660-1664)
- Bridge.tokenInfos (contracts/Contract.sol#1421)
- Bridge.unlock(uint128,address,uint256,bytes4,bytes4,bytes32,bytes,bytes) (contracts/Contract.sol#1528-1599)
- delete tokenSourceMap[tokenSource][tokenSourceAddress] (contracts/Contract.sol#1645-1646)
Bridge.tokenSourceMap (contracts/Contract.sol#1427-1428) can be used in cross function reentrancies:
- Bridge.addToken(bytes4,bytes32,address,Bridge.TokenType) (contracts/Contract.sol#1603-1619)
- Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646)
- Bridge.tokenSourceMap (contracts/Contract.sol#1427-1428)
- Bridge.unlock(uint128,address,uint256,bytes4,bytes4,bytes32,bytes,bytes) (contracts/Contract.sol#1528-1599)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
Staking.deposit(uint256) (contracts/Contract.sol#1272-1300) ignores return value by ABR.transferFrom(msg.sender,address(this),_amount) (contracts/Contract.sol#1297-1300)
Staking.withdraw(uint256) (contracts/Contract.sol#1300-1310) ignores return value by ABR.transfer(msg.sender,what) (contracts/Contract.sol#1309-1310)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer
Staking.deposit(uint256) (contracts/Contract.sol#1272-1300) uses a dangerous strict equality:
- totalShares == 0 || totalABR == 0 (contracts/Contract.sol#1282-1286)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
WrappedToken.constructor(bytes4,bytes32,uint8,string,string).name (contracts/Contract.sol#1206-1207) shadows:
- ERC20.name() (contracts/Contract.sol#467-469) (function)
- IERC20Metadata.name() (contracts/Contract.sol#382-384) (function)
WrappedToken.constructor(bytes4,bytes32,uint8,string,string).symbol (contracts/Contract.sol#1207) shadows:
- ERC20.symbol() (contracts/Contract.sol#472-475) (function)
- IERC20Metadata.symbol() (contracts/Contract.sol#384-390) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
FeeOracle.setFeeMultiplier(uint256) (contracts/Contract.sol#1324-1325) should emit an event for:
- feeMultiplier = multiplier (contracts/Contract.sol#1324-1325)
FeeOracle.setBaseFeeRate(uint256) (contracts/Contract.sol#1327-1330) should emit an event for:
- baseFeeRateBP = baseFeeRateBP_ (contracts/Contract.sol#1329-1330)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic
Bridge.constructor(address,address,address,address,address).feeCollector_ (contracts/Contract.sol#1433-1434) lacks a zero-check on :
- feeCollector = feeCollector_ (contracts/Contract.sol#1443-1445)
Bridge.constructor(address,address,address,address,address).validator_ (contracts/Contract.sol#1436-1437) lacks a zero-check on :
- validator = validator_ (contracts/Contract.sol#1445-1447)
Bridge.constructor(address,address,address,address,address).feeOracle_ (contracts/Contract.sol#1439-1440) lacks a zero-check on :
- feeOracle = feeOracle_ (contracts/Contract.sol#1447-1448)
Bridge.constructor(address,address,address,address,address).unlockSigner_ (contracts/Contract.sol#1441-1442) lacks a zero-check on :
- unlockSigner = unlockSigner_ (contracts/Contract.sol#1450-1451)
Bridge.unlock(uint128,address,uint256,bytes4,bytes4,bytes32,bytes,bytes).recipient (contracts/Contract.sol#1530-1531) lacks a zero-check on :
- address(recipient).transfer(amountWithTokenPrecision) (contracts/Contract.sol#1568-1569)
Bridge.setFeeOracle(address)._feeOracle (contracts/Contract.sol#1646) lacks a zero-check on :
- feeOracle = _feeOracle (contracts/Contract.sol#1647)
Bridge.setFeeCollector(address)._feeCollector (contracts/Contract.sol#1649) lacks a zero-check on :
- feeCollector = _feeCollector (contracts/Contract.sol#1650)
Bridge.setValidator(address)._validator (contracts/Contract.sol#1651-1652) lacks a zero-check on :
- validator = _validator (contracts/Contract.sol#1653-1654)
Bridge.setUnlockSigner(address)._unlockSigner (contracts/Contract.sol#1655-1658) lacks a zero-check on :
- unlockSigner = _unlockSigner (contracts/Contract.sol#1659-1660)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
Reentrancy in Bridge._createLock(uint128,address,uint256,bytes32,bytes4) (contracts/Contract.sol#1672-1705):
External calls:
- IValidator(validator).createLock(lockId,msg.sender,recipient,toSystemPrecision(amountToLock,tokenInfo.precision),destination,tokenInfo.tokenSource,tokenInfo.tokenSourceAddress) (contracts/Contract.sol#1691-1699)
Event emitted after the call(s):
- Sent(tokenInfo.tokenSource,tokenInfo.tokenSourceAddress,msg.sender,recipient,amountToLock,lockId,destination) (contracts/Contract.sol#1700-1704)
Reentrancy in Bridge.unlock(uint128,address,uint256,bytes4,bytes4,bytes32,bytes,bytes) (contracts/Contract.sol#1528-1599):
External calls:
- IValidator(validator).createUnlock(lockId,recipient,amount,lockSource,tokenSource,tokenSourceAddress,signaturePrimary,signatureSecondary) (contracts/Contract.sol#1535-1543)
- IERC20(tokenAddress).safeTransfer(recipient,amountWithTokenPrecision) (contracts/Contract.sol#1577-1579)
- IERC20(tokenAddress).safeTransfer(feeCollector,fee) (contracts/Contract.sol#1580-1582)
- WrappedToken(tokenAddress).mint(recipient,amountWithTokenPrecision) (contracts/Contract.sol#1586-1588)
- WrappedToken(tokenAddress).mint(feeCollector,fee) (contracts/Contract.sol#1590-1591)
- IWrappedTokenV0(tokenAddress).mint(recipient,amountWithTokenPrecision) (contracts/Contract.sol#1594-1595)
- IWrappedTokenV0(tokenAddress).mint(feeCollector,fee) (contracts/Contract.sol#1596-1598)
External calls sending eth:
- address(recipient).transfer(amountWithTokenPrecision) (contracts/Contract.sol#1568-1569)
- address(feeCollector).transfer(fee) (contracts/Contract.sol#1573)
Event emitted after the call(s):
- Received(recipient,tokenAddress,amountWithTokenPrecision,lockId,lockSource) (contracts/Contract.sol#1598-1599)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
Address.isContract(address) (contracts/Contract.sol#101-110) uses assembly
- INLINE ASM (contracts/Contract.sol#107-108)
Address.verifyCallResult(bool,bytes,string) (contracts/Contract.sol#265-284) uses assembly
- INLINE ASM (contracts/Contract.sol#279-283)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
AccessControl._setRoleAdmin(bytes32,bytes32) (contracts/Contract.sol#1178-1185) is never used and should be removed
Context._msgData() (contracts/Contract.sol#414-415) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching.
It is used by:
- ^0.8.0 (contracts/Contract.sol#2-3)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in Address.sendValue(address,uint256) (contracts/Contract.sol#131-136):
- (success,None) = recipient.call{value: amount}() (contracts/Contract.sol#133-134)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (contracts/Contract.sol#196-208):
- (success,returndata) = target.call{value: value}(data) (contracts/Contract.sol#206-207)
Low level call in Address.functionStaticCall(address,bytes,string) (contracts/Contract.sol#221-234):
- (success,returndata) = target.staticcall(data) (contracts/Contract.sol#230-232)
Low level call in Address.functionDelegateCall(address,bytes,string) (contracts/Contract.sol#248-261):
- (success,returndata) = target.delegatecall(data) (contracts/Contract.sol#256-258)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Parameter Staking.deposit(uint256)._amount (contracts/Contract.sol#1272) is not in mixedCase
Parameter Staking.withdraw(uint256)._share (contracts/Contract.sol#1301) is not in mixedCase
Variable Staking.ABR (contracts/Contract.sol#1263) is not in mixedCase
Parameter FeeOracle.setMinFee(address,uint256)._minFee (contracts/Contract.sol#1325) is not in mixedCase
Parameter Bridge.setFeeOracle(address)._feeOracle (contracts/Contract.sol#1646) is not in mixedCase
Parameter Bridge.setFeeCollector(address)._feeCollector (contracts/Contract.sol#1649) is not in mixedCase
Parameter Bridge.setValidator(address)._validator (contracts/Contract.sol#1651-1652) is not in mixedCase
Parameter Bridge.setUnlockSigner(address)._unlockSigner (contracts/Contract.sol#1655-1658) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Reentrancy in Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646):
External calls:
- address(newAuthority).transfer(address(this).balance) (contracts/Contract.sol#1630-1633)
State variables written after the call(s):
- delete tokenInfos[tokenAddress] (contracts/Contract.sol#1645)
- delete tokenSourceMap[tokenSource][tokenSourceAddress] (contracts/Contract.sol#1645-1646)
Reentrancy in Bridge.unlock(uint128,address,uint256,bytes4,bytes4,bytes32,bytes,bytes) (contracts/Contract.sol#1528-1599):
External calls:
- address(recipient).transfer(amountWithTokenPrecision) (contracts/Contract.sol#1568-1569)
- address(feeCollector).transfer(fee) (contracts/Contract.sol#1573)
Event emitted after the call(s):
- Received(recipient,tokenAddress,amountWithTokenPrecision,lockId,lockSource) (contracts/Contract.sol#1598-1599)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4
FeeOracle.xABR (contracts/Contract.sol#1319) should be immutable
Staking.ABR (contracts/Contract.sol#1263) should be immutable
WrappedToken._decimals (contracts/Contract.sol#1201) should be immutable
WrappedToken.source (contracts/Contract.sol#1201-1202) should be immutable
WrappedToken.sourceAddress (contracts/Contract.sol#1203) should be immutable
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable
. analyzed (19 contracts with 100 detectors), 44 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.0",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.0",
"install_stderr": null,
"install_stdout": "Version '0.8.0' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-3c45bxap --allow-paths /tmp/slither-3c45bxap,/tmp/slither-3c45bxap/lib,/tmp/slither-3c45bxap/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 44,
"workspace_hash": "028ee76c21aa63badc3bb30ede8f60c7c32f38604e01f65a4d6854afa4263625",
"duration_seconds": 1.1185581684112549,
"solc_version_requested": "0.8.17"
}
{"no_findings":false,"summary":"Found 4 issues: unchecked ERC20 return values in Staking, bridge accounting breaks with fee-on-transfer tokens, fee oracle manipulation via temporary xABR balances, and ETH transfer DoS risk.","findings":[{"severity":"medium","category":"other","title":"Unchecked ERC20 return values can mint unbacked xABR","exploit_scenario":"If the ABR token returns false instead of reverting (e.g., insufficient allowance or transfer restrictions), `deposit` mints xABR before the transfer succeeds. An attacker can mint xABR without actually transferring ABR, then `withdraw` to drain ABR from the pool.","recommendation":"Use SafeERC20 (safeTransferFrom/safeTransfer) or explicitly require the return value to be true to ensure the transfer succeeded before minting/burning shares.","evidence":"Staking uses `ABR.transferFrom` and `ABR.transfer` without checking the returned boolean.","locations":["contracts/Contract.sol#L1330","contracts/Contract.sol#L1341"]},{"severity":"medium","category":"other","title":"Bridge accounting breaks with fee-on-transfer or rebasing tokens","exploit_scenario":"If a token with transfer fees/rebasing is added as `TokenType.Native`, `lock` records `amountToLock` but the contract receives less due to transfer mechanics. Users can unlock the full recorded amount on the destination chain, creating a deficit in the bridge reserves.","recommendation":"Reject fee-on-transfer/rebasing tokens, or compute actual received amounts via balance-before/after and use that for lock records and fee calculations.","evidence":"`amountToLock` is computed from user input and passed to the validator, while `safeTransferFrom` does not verify the actual amount received.","locations":["contracts/Contract.sol#L1514","contracts/Contract.sol#L1524","contracts/Contract.sol#L1732","contracts/Contract.sol#L1740"]},{"severity":"low","category":"oracle","title":"FeeOracle can be manipulated via temporary xABR balances","exploit_scenario":"A user can temporarily inflate their xABR holdings (e.g., flashloan ABR, deposit to mint xABR, call `lock`, then withdraw) to reduce the computed fee for that transaction.","recommendation":"Use time-weighted balance snapshots, enforce staking lockups, or base fees on longer-term holdings rather than instantaneous balances.","evidence":"Fee calculation relies on current `xABR.balanceOf(sender)` and `xABR.totalSupply()` with no time weighting.","locations":["contracts/Contract.sol#L1378","contracts/Contract.sol#L1383"]},{"severity":"low","category":"other","title":"ETH transfers use `transfer`, enabling recipient DoS","exploit_scenario":"If `recipient` or `feeCollector` is a contract that requires more than 2300 gas to receive ETH, `transfer` will revert, causing `lockBase` or `unlock` to fail and potentially locking funds for that recipient.","recommendation":"Use `call` with success checks and reentrancy protection, or adopt a pull-payment pattern for ETH transfers.","evidence":"ETH payouts use `transfer` in `lockBase` and `unlock`.","locations":["contracts/Contract.sol#L1567","contracts/Contract.sol#L1607"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-da21t_lq
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019babdb-c976-7302-9db7-402f1942d4a1
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE file**
exec
/bin/bash -lc ls in /tmp/codex-da21t_lq succeeded in 8ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-da21t_lq succeeded in 6ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
thinking
**Analyzing contract security and reentrancy risks**
I’m reviewing Contract.sol closely for vulnerabilities like reentrancy and unchecked token behavior, especially in staking and bridge logic. I’m unpacking details about how deposit and withdraw handle token transfers, potential ERC777 callback reentrancy, external validator calls before fund transfers, and unchecked return values from token transfers. There’s also interesting fee oracle manipulation possibilities and risks around using transfer for ETH payments that might cause DOS. The biggest concerns involve deposit/withdraw minting logic with unchecked transfer success, locking mechanisms with external calls to possibly untrusted validators, and vulnerable fee logic due to flash loans or signature trust assumptions. Overall, I’m gathering how these complex interactions might be exploited or require safer coding patterns like SafeERC20.
thinking
**Planning full file inspection**
I need to fully read the large AUDIT_BUNDLE.txt file to ensure nothing important is missed, especially since previous outputs were truncated. I'll use shell commands like `sed` to read it in manageable chunks to cover the entire 1798 lines systematically. This way, I can keep track of all code and spot any additional vulnerabilities or issues not yet seen.
exec
/bin/bash -lc "sed -n '1,400p' AUDIT_BUNDLE.txt" in /tmp/codex-da21t_lq succeeded in 6ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
thinking
**Continuing file review**
exec
/bin/bash -lc "sed -n '401,800p' AUDIT_BUNDLE.txt" in /tmp/codex-da21t_lq succeeded in 6ms:
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
thinking
**Requesting additional information**
exec
/bin/bash -lc "sed -n '801,1200p' AUDIT_BUNDLE.txt" in /tmp/codex-da21t_lq succeeded in 8ms:
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
thinking
**Pausing to review AccessControl and WrappedToken**
exec
/bin/bash -lc "sed -n '1201,1600p' AUDIT_BUNDLE.txt" in /tmp/codex-da21t_lq succeeded in 19ms:
* event. Note that unlike {grantRole}, this function doesn't perform any
* checks on the calling account.
*
* [WARNING]
* ====
* This function should only be called from the constructor when setting
* up the initial roles for the system.
*
* Using this function in any other way is effectively circumventing the admin
* system imposed by {AccessControl}.
* ====
*/
function _setupRole(bytes32 role, address account) internal virtual {
_grantRole(role, account);
}
/**
* @dev Sets `adminRole` as ``role``'s admin role.
*
* Emits a {RoleAdminChanged} event.
thinking
**Waiting for more input**
exec
/bin/bash -lc "sed -n '1601,2000p' AUDIT_BUNDLE.txt" in /tmp/codex-da21t_lq succeeded in 7ms:
require(tokenAddress != address(0), "Bridge: unsupported token");
TokenInfo memory tokenInfo = tokenInfos[tokenAddress];
// Transform amount form system to token precision
uint256 amountWithTokenPrecision = fromSystemPrecision(amount, tokenInfo.precision);
uint256 fee = 0;
if (msg.sender == unlockSigner) {
fee = FeeOracle(feeOracle).minFee(tokenAddress);
require(amountWithTokenPrecision > fee, "Bridge: amount too small");
amountWithTokenPrecision = amountWithTokenPrecision - fee;
}
if (tokenInfo.tokenType == TokenType.Base) {
// If token is WETH - transfer ETH
payable(recipient).transfer(amountWithTokenPrecision);
if (fee > 0) {
payable(feeCollector).transfer(fee);
}
} else if (tokenInfo.tokenType == TokenType.Native) {
// If token is native - transfer the token
thinking
**Summarizing potential vulnerabilities and their severity**
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '1330,1450p'" in /tmp/codex-da21t_lq succeeded in 17ms:
1330 // Lock the ABR in the contract
1331 ABR.transferFrom(msg.sender, address(this), _amount);
1332 }
1333
1334 // Unlocks the staked + gained ABR and burns xABR
1335 function withdraw(uint256 _share) public {
1336 // Gets the amount of xABR in existence
1337 uint256 totalShares = totalSupply();
1338 // Calculates the amount of ABR the xABR is worth
1339 uint256 what = _share * ABR.balanceOf(address(this)) / totalShares;
1340 _burn(msg.sender, _share);
1341 ABR.transfer(msg.sender, what);
1342 }
1343 }
1344
1345 contract FeeOracle is Ownable {
1346 using Math for uint256;
1347
1348 // tokenAddress => mintFee
1349 mapping(address => uint256) public minFee;
thinking
**Identifying relevant code lines for Bridge lock**
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '1500,1650p'" in /tmp/codex-da21t_lq succeeded in 6ms:
1500 feeOracle = feeOracle_;
1501 _setupRole(DEFAULT_ADMIN_ROLE, admin_);
1502 unlockSigner = unlockSigner_;
1503 active = false;
1504 }
1505
1506 // Method to lock tokens
1507 function lock(
1508 uint128 lockId,
1509 address tokenAddress,
1510 bytes32 recipient,
1511 bytes4 destination,
1512 uint256 amount
1513 ) external isActive {
1514 (uint256 amountToLock, uint256 fee, TokenInfo memory tokenInfo) = _createLock(
1515 lockId,
1516 tokenAddress,
1517 amount,
1518 recipient,
1519 destination
thinking
**Summarizing key smart contract findings**
I'm evaluating major issues related to staking, fee oracles, bridge token handling, and ETH transfers. I'll focus on three main findings: unchecked ERC20 return values risking unbacked minting, fee oracle manipulation via flash loans reducing fees, and bridge misuse of fee-on-transfer tokens causing undercollateralization. There’s also a minor risk of denial-of-service from using `transfer` for ETH. I’ll produce a JSON with clear evidence, locations, categories, severities, and recommendations to keep it concise and actionable.
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '1680,1780p'" in /tmp/codex-da21t_lq succeeded in 6ms:
1680 IWrappedTokenV0(tokenAddress).changeAuthority(newAuthority);
1681 }
1682
1683 delete tokenInfos[tokenAddress];
1684 delete tokenSourceMap[tokenSource][tokenSourceAddress];
1685 }
1686
1687 function setFeeOracle(address _feeOracle) external onlyRole(TOKEN_MANAGER) {
1688 feeOracle = _feeOracle;
1689 }
1690
1691 function setFeeCollector(address _feeCollector) external onlyRole(TOKEN_MANAGER) {
1692 feeCollector = _feeCollector;
1693 }
1694
1695 function setValidator(address _validator ) external onlyRole(BRIDGE_MANAGER) {
1696 validator = _validator;
1697 }
1698
1699 function setUnlockSigner(address _unlockSigner ) external onlyRole(BRIDGE_MANAGER) {
thinking
**Summarizing security findings and crafting report**
I'm gathering detailed, categorized findings about unchecked ERC20 returns, fee-on-transfer token handling, fee oracle manipulation, and ETH transfer DoS risks, preparing clear exploit scenarios, recommendations, and code locations to produce a concise JSON report for the user.
codex
{"no_findings":false,"summary":"Found 4 issues: unchecked ERC20 return values in Staking, bridge accounting breaks with fee-on-transfer tokens, fee oracle manipulation via temporary xABR balances, and ETH transfer DoS risk.","findings":[{"severity":"medium","category":"other","title":"Unchecked ERC20 return values can mint unbacked xABR","exploit_scenario":"If the ABR token returns false instead of reverting (e.g., insufficient allowance or transfer restrictions), `deposit` mints xABR before the transfer succeeds. An attacker can mint xABR without actually transferring ABR, then `withdraw` to drain ABR from the pool.","recommendation":"Use SafeERC20 (safeTransferFrom/safeTransfer) or explicitly require the return value to be true to ensure the transfer succeeded before minting/burning shares.","evidence":"Staking uses `ABR.transferFrom` and `ABR.transfer` without checking the returned boolean.","locations":["contracts/Contract.sol#L1330","contracts/Contract.sol#L1341"]},{"severity":"medium","category":"other","title":"Bridge accounting breaks with fee-on-transfer or rebasing tokens","exploit_scenario":"If a token with transfer fees/rebasing is added as `TokenType.Native`, `lock` records `amountToLock` but the contract receives less due to transfer mechanics. Users can unlock the full recorded amount on the destination chain, creating a deficit in the bridge reserves.","recommendation":"Reject fee-on-transfer/rebasing tokens, or compute actual received amounts via balance-before/after and use that for lock records and fee calculations.","evidence":"`amountToLock` is computed from user input and passed to the validator, while `safeTransferFrom` does not verify the actual amount received.","locations":["contracts/Contract.sol#L1514","contracts/Contract.sol#L1524","contracts/Contract.sol#L1732","contracts/Contract.sol#L1740"]},{"severity":"low","category":"oracle","title":"FeeOracle can be manipulated via temporary xABR balances","exploit_scenario":"A user can temporarily inflate their xABR holdings (e.g., flashloan ABR, deposit to mint xABR, call `lock`, then withdraw) to reduce the computed fee for that transaction.","recommendation":"Use time-weighted balance snapshots, enforce staking lockups, or base fees on longer-term holdings rather than instantaneous balances.","evidence":"Fee calculation relies on current `xABR.balanceOf(sender)` and `xABR.totalSupply()` with no time weighting.","locations":["contracts/Contract.sol#L1378","contracts/Contract.sol#L1383"]},{"severity":"low","category":"other","title":"ETH transfers use `transfer`, enabling recipient DoS","exploit_scenario":"If `recipient` or `feeCollector` is a contract that requires more than 2300 gas to receive ETH, `transfer` will revert, causing `lockBase` or `unlock` to fail and potentially locking funds for that recipient.","recommendation":"Use `call` with success checks and reentrancy protection, or adopt a pull-payment pattern for ETH transfers.","evidence":"ETH payouts use `transfer` in `lockBase` and `unlock`.","locations":["contracts/Contract.sol#L1567","contracts/Contract.sol#L1607"]}]}
tokens used
73,383
{
"codex": {
"ran_at": "2026-01-11T07:04:09.448642+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found 4 issues: unchecked ERC20 return values in Staking, bridge accounting breaks with fee-on-transfer tokens, fee oracle manipulation via temporary xABR balances, and ETH transfer DoS risk.",
"raw_final": {
"summary": "Found 4 issues: unchecked ERC20 return values in Staking, bridge accounting breaks with fee-on-transfer tokens, fee oracle manipulation via temporary xABR balances, and ETH transfer DoS risk.",
"findings": [
{
"title": "Unchecked ERC20 return values can mint unbacked xABR",
"category": "other",
"evidence": "Staking uses `ABR.transferFrom` and `ABR.transfer` without checking the returned boolean.",
"severity": "medium",
"locations": [
"contracts/Contract.sol#L1330",
"contracts/Contract.sol#L1341"
],
"recommendation": "Use SafeERC20 (safeTransferFrom/safeTransfer) or explicitly require the return value to be true to ensure the transfer succeeded before minting/burning shares.",
"exploit_scenario": "If the ABR token returns false instead of reverting (e.g., insufficient allowance or transfer restrictions), `deposit` mints xABR before the transfer succeeds. An attacker can mint xABR without actually transferring ABR, then `withdraw` to drain ABR from the pool."
},
{
"title": "Bridge accounting breaks with fee-on-transfer or rebasing tokens",
"category": "other",
"evidence": "`amountToLock` is computed from user input and passed to the validator, while `safeTransferFrom` does not verify the actual amount received.",
"severity": "medium",
"locations": [
"contracts/Contract.sol#L1514",
"contracts/Contract.sol#L1524",
"contracts/Contract.sol#L1732",
"contracts/Contract.sol#L1740"
],
"recommendation": "Reject fee-on-transfer/rebasing tokens, or compute actual received amounts via balance-before/after and use that for lock records and fee calculations.",
"exploit_scenario": "If a token with transfer fees/rebasing is added as `TokenType.Native`, `lock` records `amountToLock` but the contract receives less due to transfer mechanics. Users can unlock the full recorded amount on the destination chain, creating a deficit in the bridge reserves."
},
{
"title": "FeeOracle can be manipulated via temporary xABR balances",
"category": "oracle",
"evidence": "Fee calculation relies on current `xABR.balanceOf(sender)` and `xABR.totalSupply()` with no time weighting.",
"severity": "low",
"locations": [
"contracts/Contract.sol#L1378",
"contracts/Contract.sol#L1383"
],
"recommendation": "Use time-weighted balance snapshots, enforce staking lockups, or base fees on longer-term holdings rather than instantaneous balances.",
"exploit_scenario": "A user can temporarily inflate their xABR holdings (e.g., flashloan ABR, deposit to mint xABR, call `lock`, then withdraw) to reduce the computed fee for that transaction."
},
{
"title": "ETH transfers use `transfer`, enabling recipient DoS",
"category": "other",
"evidence": "ETH payouts use `transfer` in `lockBase` and `unlock`.",
"severity": "low",
"locations": [
"contracts/Contract.sol#L1567",
"contracts/Contract.sol#L1607"
],
"recommendation": "Use `call` with success checks and reentrancy protection, or adopt a pull-payment pattern for ETH transfers.",
"exploit_scenario": "If `recipient` or `feeCollector` is a contract that requires more than 2300 gas to receive ETH, `transfer` will revert, causing `lockBase` or `unlock` to fail and potentially locking funds for that recipient."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x01b6 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x91d14854 00000019: GT 0000001a: PUSH2 0x00ec 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xc415b95c 00000024: GT 00000025: PUSH2 0x008a 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xe0956e0f 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xe0956e0f 0000003a: EQ 0000003b: PUSH2 0x05e8 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe1e1935a 00000045: EQ 00000046: PUSH2 0x0613 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xec3794ff 00000050: EQ 00000051: PUSH2 0x063e 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf4bd4829 0000005b: EQ 0000005c: PUSH2 0x0667 0000005f: JUMPI 00000060: PUSH2 0x01b6 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xc415b95c 0000006b: EQ 0000006c: PUSH2 0x056b 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xc8594418 00000076: EQ 00000077: PUSH2 0x0596 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xd547741f 00000081: EQ 00000082: PUSH2 0x05bf 00000085: JUMPI 00000086: PUSH2 0x01b6 00000089: JUMP 0000008a: JUMPDEST 0000008b: DUP1 0000008c: PUSH4 0xa8a98962 00000091: GT 00000092: PUSH2 0x00c6 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0xa8a98962 0000009c: EQ 0000009d: PUSH2 0x04af 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xb43d20c3 000000a7: EQ 000000a8: PUSH2 0x04d8 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xba46ae72 000000b2: EQ 000000b3: PUSH2 0x0501 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0xbd4bb242 000000bd: EQ 000000be: PUSH2 0x0542 000000c1: JUMPI 000000c2: PUSH2 0x01b6 000000c5: JUMP 000000c6: JUMPDEST 000000c7: DUP1 000000c8: PUSH4 0x91d14854 000000cd: EQ 000000ce: PUSH2 0x041e 000000d1: JUMPI 000000d2: DUP1 000000d3: PUSH4 0xa217fddf 000000d8: EQ 000000d9: PUSH2 0x045b 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0xa42dce80 000000e3: EQ 000000e4: PUSH2 0x0486 000000e7: JUMPI 000000e8: PUSH2 0x01b6 000000eb: JUMP 000000ec: JUMPDEST 000000ed: DUP1 000000ee: PUSH4 0x36568abe 000000f3: GT 000000f4: PUSH2 0x0159 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x5e3b0f9e 000000fe: GT 000000ff: PUSH2 0x0133 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x5e3b0f9e 00000109: EQ 0000010a: PUSH2 0x0371 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x64cd2af3 00000114: EQ 00000115: PUSH2 0x038d 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x7bacc91e 0000011f: EQ 00000120: PUSH2 0x03ca 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x81fea1c5 0000012a: EQ 0000012b: PUSH2 0x03f3 0000012e: JUMPI 0000012f: PUSH2 0x01b6 00000132: JUMP 00000133: JUMPDEST 00000134: DUP1 00000135: PUSH4 0x36568abe 0000013a: EQ 0000013b: PUSH2 0x02f2 0000013e: JUMPI 0000013f: DUP1 00000140: PUSH4 0x3a5381b5 00000145: EQ 00000146: PUSH2 0x031b 00000149: JUMPI 0000014a: DUP1 0000014b: PUSH4 0x500b19e7 00000150: EQ 00000151: PUSH2 0x0346 00000154: JUMPI 00000155: PUSH2 0x01b6 00000158: JUMP 00000159: JUMPDEST 0000015a: DUP1 0000015b: PUSH4 0x133a01c4 00000160: GT 00000161: PUSH2 0x0195 00000164: JUMPI 00000165: DUP1 00000166: PUSH4 0x133a01c4 0000016b: EQ 0000016c: PUSH2 0x024c 0000016f: JUMPI 00000170: DUP1 00000171: PUSH4 0x15d95a00 00000176: EQ 00000177: PUSH2 0x0263 0000017a: JUMPI 0000017b: DUP1 0000017c: PUSH4 0x248a9ca3 00000181: EQ 00000182: PUSH2 0x028c 00000185: JUMPI 00000186: DUP1 00000187: PUSH4 0x2f2ff15d 0000018c: EQ 0000018d: PUSH2 0x02c9 00000190: JUMPI 00000191: PUSH2 0x01b6 00000194: JUMP 00000195: JUMPDEST 00000196: DUP1 00000197: PUSH3 0xc45c54 0000019b: EQ 0000019c: PUSH2 0x01bb 0000019f: JUMPI 000001a0: DUP1 000001a1: PUSH4 0x01ffc9a7 000001a6: EQ 000001a7: PUSH2 0x01e6 000001aa: JUMPI 000001ab: DUP1 000001ac: PUSH4 0x1327d3d8 000001b1: EQ 000001b2: PUSH2 0x0223 000001b5: JUMPI 000001b6: JUMPDEST 000001b7: PUSH1 0x00 000001b9: DUP1 000001ba: REVERT 000001bb: JUMPDEST 000001bc: CALLVALUE 000001bd: DUP1 000001be: ISZERO 000001bf: PUSH2 0x01c7 000001c2: JUMPI 000001c3: PUSH1 0x00 000001c5: DUP1 000001c6: REVERT 000001c7: JUMPDEST 000001c8: POP 000001c9: PUSH2 0x01d0 000001cc: PUSH2 0x067e 000001cf: JUMP 000001d0: JUMPDEST 000001d1: PUSH1 0x40 000001d3: MLOAD 000001d4: PUSH2 0x01dd 000001d7: SWAP2 000001d8: SWAP1 000001d9: PUSH2 0x3411 000001dc: JUMP 000001dd: JUMPDEST 000001de: PUSH1 0x40 000001e0: MLOAD 000001e1: DUP1 000001e2: SWAP2 000001e3: SUB 000001e4: SWAP1 000001e5: RETURN 000001e6: JUMPDEST 000001e7: CALLVALUE 000001e8: DUP1 000001e9: ISZERO 000001ea: PUSH2 0x01f2 000001ed: JUMPI 000001ee: PUSH1 0x00 000001f0: DUP1 000001f1: REVERT 000001f2: JUMPDEST 000001f3: POP 000001f4: PUSH2 0x020d 000001f7: PUSH1 0x04 000001f9: DUP1 000001fa: CALLDATASIZE 000001fb: SUB 000001fc: DUP2 000001fd: ADD 000001fe: SWAP1 000001ff: PUSH2 0x0208 00000202: SWAP2 00000203: SWAP1 00000204: PUSH2 0x348e 00000207: JUMP 00000208: JUMPDEST 00000209: PUSH2 0x06a4 0000020c: JUMP 0000020d: JUMPDEST 0000020e: PUSH1 0x40 00000210: MLOAD 00000211: PUSH2 0x021a 00000214: SWAP2 00000215: SWAP1 00000216: PUSH2 0x34d6 00000219: JUMP 0000021a: JUMPDEST 0000021b: PUSH1 0x40 0000021d: MLOAD 0000021e: DUP1 0000021f: SWAP2 00000220: SUB 00000221: SWAP1 00000222: RETURN 00000223: JUMPDEST 00000224: CALLVALUE 00000225: DUP1 00000226: ISZERO 00000227: PUSH2 0x022f 0000022a: JUMPI 0000022b: PUSH1 0x00 0000022d: DUP1 0000022e: REVERT 0000022f: JUMPDEST 00000230: POP 00000231: PUSH2 0x024a 00000234: PUSH1 0x04 00000236: DUP1 00000237: CALLDATASIZE 00000238: SUB 00000239: DUP2 0000023a: ADD 0000023b: SWAP1 0000023c: PUSH2 0x0245 0000023f: SWAP2 00000240: SWAP1 00000241: PUSH2 0x351d 00000244: JUMP 00000245: JUMPDEST 00000246: PUSH2 0x071e 00000249: JUMP 0000024a: JUMPDEST 0000024b: STOP 0000024c: JUMPDEST 0000024d: CALLVALUE 0000024e: DUP1 0000024f: ISZERO 00000250: PUSH2 0x0258 00000253: JUMPI 00000254: PUSH1 0x00 00000256: DUP1 00000257: REVERT 00000258: JUMPDEST 00000259: POP 0000025a: PUSH2 0x0261 0000025d: PUSH2 0x0794 00000260: JUMP 00000261: JUMPDEST 00000262: STOP 00000263: JUMPDEST 00000264: CALLVALUE 00000265: DUP1 00000266: ISZERO 00000267: PUSH2 0x026f 0000026a: JUMPI 0000026b: PUSH1 0x00 0000026d: DUP1 0000026e: REVERT 0000026f: JUMPDEST 00000270: POP 00000271: PUSH2 0x028a 00000274: PUSH1 0x04 00000276: DUP1 00000277: CALLDATASIZE 00000278: SUB 00000279: DUP2 0000027a: ADD 0000027b: SWAP1 0000027c: PUSH2 0x0285 0000027f: SWAP2 00000280: SWAP1 00000281: PUSH2 0x356f 00000284: JUMP 00000285: JUMPDEST 00000286: PUSH2 0x07e3 00000289: JUMP 0000028a: JUMPDEST 0000028b: STOP 0000028c: JUMPDEST 0000028d: CALLVALUE 0000028e: DUP1 0000028f: ISZERO 00000290: PUSH2 0x0298 00000293: JUMPI 00000294: PUSH1 0x00 00000296: DUP1 00000297: REVERT 00000298: JUMPDEST 00000299: POP 0000029a: PUSH2 0x02b3 0000029d: PUSH1 0x04 0000029f: DUP1 000002a0: CALLDATASIZE 000002a1: SUB 000002a2: DUP2 000002a3: ADD 000002a4: SWAP1 000002a5: PUSH2 0x02ae 000002a8: SWAP2 000002a9: SWAP1 000002aa: PUSH2 0x35e5 000002ad: JUMP 000002ae: JUMPDEST 000002af: PUSH2 0x090b 000002b2: JUMP 000002b3: JUMPDEST 000002b4: PUSH1 0x40 000002b6: MLOAD 000002b7: PUSH2 0x02c0 000002ba: SWAP2 000002bb: SWAP1 000002bc: PUSH2 0x3621 000002bf: JUMP 000002c0: JUMPDEST 000002c1: PUSH1 0x40 000002c3: MLOAD 000002c4: DUP1 000002c5: SWAP2 000002c6: SUB 000002c7: SWAP1 000002c8: RETURN 000002c9: JUMPDEST 000002ca: CALLVALUE 000002cb: DUP1 000002cc: ISZERO 000002cd: PUSH2 0x02d5 000002d0: JUMPI 000002d1: PUSH1 0x00 000002d3: DUP1 000002d4: REVERT 000002d5: JUMPDEST 000002d6: POP 000002d7: PUSH2 0x02f0 000002da: PUSH1 0x04 000002dc: DUP1 000002dd: CALLDATASIZE 000002de: SUB 000002df: DUP2 000002e0: ADD 000002e1: SWAP1 000002e2: PUSH2 0x02eb 000002e5: SWAP2 000002e6: SWAP1 000002e7: PUSH2 0x363c 000002ea: JUMP 000002eb: JUMPDEST 000002ec: PUSH2 0x092a 000002ef: JUMP 000002f0: JUMPDEST 000002f1: STOP 000002f2: JUMPDEST 000002f3: CALLVALUE 000002f4: DUP1 000002f5: ISZERO 000002f6: PUSH2 0x02fe 000002f9: JUMPI 000002fa: PUSH1 0x00 000002fc: DUP1 000002fd: REVERT 000002fe: JUMPDEST 000002ff: POP 00000300: PUSH2 0x0319 00000303: PUSH1 0x04 00000305: DUP1 00000306: CALLDATASIZE 00000307: SUB 00000308: DUP2 00000309: ADD 0000030a: SWAP1 0000030b: PUSH2 0x0314 0000030e: SWAP2 0000030f: SWAP1 00000310: PUSH2 0x363c 00000313: JUMP 00000314: JUMPDEST 00000315: PUSH2 0x0953 00000318: JUMP 00000319: JUMPDEST 0000031a: STOP 0000031b: JUMPDEST 0000031c: CALLVALUE 0000031d: DUP1 0000031e: ISZERO 0000031f: PUSH2 0x0327 00000322: JUMPI 00000323: PUSH1 0x00 00000325: DUP1 00000326: REVERT 00000327: JUMPDEST 00000328: POP 00000329: PUSH2 0x0330 0000032c: PUSH2 0x09d6 0000032f: JUMP 00000330: JUMPDEST 00000331: PUSH1 0x40 00000333: MLOAD 00000334: PUSH2 0x033d 00000337: SWAP2 00000338: SWAP1 00000339: PUSH2 0x3411 0000033c: JUMP 0000033d: JUMPDEST 0000033e: PUSH1 0x40 00000340: MLOAD 00000341: DUP1 00000342: SWAP2 00000343: SUB 00000344: SWAP1 00000345: RETURN 00000346: JUMPDEST 00000347: CALLVALUE 00000348: DUP1 00000349: ISZERO 0000034a: PUSH2 0x0352 0000034d: JUMPI 0000034e: PUSH1 0x00 00000350: DUP1 00000351: REVERT 00000352: JUMPDEST 00000353: POP 00000354: PUSH2 0x035b 00000357: PUSH2 0x09fa 0000035a: JUMP 0000035b: JUMPDEST 0000035c: PUSH1 0x40 0000035e: MLOAD 0000035f: PUSH2 0x0368 00000362: SWAP2 00000363: SWAP1 00000364: PUSH2 0x3411 00000367: JUMP 00000368: JUMPDEST 00000369: PUSH1 0x40 0000036b: MLOAD 0000036c: DUP1 0000036d: SWAP2 0000036e: SUB 0000036f: SWAP1 00000370: RETURN 00000371: JUMPDEST 00000372: PUSH2 0x038b 00000375: PUSH1 0x04 00000377: DUP1 00000378: CALLDATASIZE 00000379: SUB 0000037a: DUP2 0000037b: ADD 0000037c: SWAP1 0000037d: PUSH2 0x0386 00000380: SWAP2 00000381: SWAP1 00000382: PUSH2 0x36c4 00000385: JUMP 00000386: JUMPDEST 00000387: PUSH2 0x0a20 0000038a: JUMP 0000038b: JUMPDEST 0000038c: STOP 0000038d: JUMPDEST 0000038e: CALLVALUE 0000038f: DUP1 00000390: ISZERO 00000391: PUSH2 0x0399 00000394: JUMPI 00000395: PUSH1 0x00 00000397: DUP1 00000398: REVERT 00000399: JUMPDEST 0000039a: POP 0000039b: PUSH2 0x03b4 0000039e: PUSH1 0x04 000003a0: DUP1 000003a1: CALLDATASIZE 000003a2: SUB 000003a3: DUP2 000003a4: ADD 000003a5: SWAP1 000003a6: PUSH2 0x03af 000003a9: SWAP2 000003aa: SWAP1 000003ab: PUSH2 0x372b 000003ae: JUMP 000003af: JUMPDEST 000003b0: PUSH2 0x0bd4 000003b3: JUMP 000003b4: JUMPDEST 000003b5: PUSH1 0x40 000003b7: MLOAD 000003b8: PUSH2 0x03c1 000003bb: SWAP2 000003bc: SWAP1 000003bd: PUSH2 0x3411 000003c0: JUMP 000003c1: JUMPDEST 000003c2: PUSH1 0x40 000003c4: MLOAD 000003c5: DUP1 000003c6: SWAP2 000003c7: SUB 000003c8: SWAP1 000003c9: RETURN 000003ca: JUMPDEST 000003cb: CALLVALUE 000003cc: DUP1 000003cd: ISZERO 000003ce: PUSH2 0x03d6 000003d1: JUMPI 000003d2: PUSH1 0x00 000003d4: DUP1 000003d5: REVERT 000003d6: JUMPDEST 000003d7: POP 000003d8: PUSH2 0x03f1 000003db: PUSH1 0x04 000003dd: DUP1 000003de: CALLDATASIZE 000003df: SUB 000003e0: DUP2 000003e1: ADD 000003e2: SWAP1 000003e3: PUSH2 0x03ec 000003e6: SWAP2 000003e7: SWAP1 000003e8: PUSH2 0x37a1 000003eb: JUMP 000003ec: JUMPDEST 000003ed: PUSH2 0x0c16 000003f0: JUMP 000003f1: JUMPDEST 000003f2: STOP 000003f3: JUMPDEST 000003f4: CALLVALUE 000003f5: DUP1 000003f6: ISZERO 000003f7: PUSH2 0x03ff 000003fa: JUMPI 000003fb: PUSH1 0x00 000003fd: DUP1 000003fe: REVERT 000003ff: JUMPDEST 00000400: POP 00000401: PUSH2 0x0408 00000404: PUSH2 0x0f2c 00000407: JUMP 00000408: JUMPDEST 00000409: PUSH1 0x40 0000040b: MLOAD 0000040c: PUSH2 0x0415 0000040f: SWAP2 00000410: SWAP1 00000411: PUSH2 0x3621 00000414: JUMP 00000415: JUMPDEST 00000416: PUSH1 0x40 00000418: MLOAD 00000419: DUP1 0000041a: SWAP2 0000041b: SUB 0000041c: SWAP1 0000041d: RETURN 0000041e: JUMPDEST 0000041f: CALLVALUE 00000420: DUP1 00000421: ISZERO 00000422: PUSH2 0x042a 00000425: JUMPI 00000426: PUSH1 0x00 00000428: DUP1 00000429: REVERT 0000042a: JUMPDEST 0000042b: POP 0000042c: PUSH2 0x0445 0000042f: PUSH1 0x04 00000431: DUP1 00000432: CALLDATASIZE 00000433: SUB 00000434: DUP2 00000435: ADD 00000436: SWAP1 00000437: PUSH2 0x0440 0000043a: SWAP2 0000043b: SWAP1 0000043c: PUSH2 0x363c 0000043f: JUMP 00000440: JUMPDEST 00000441: PUSH2 0x0f50 00000444: JUMP 00000445: JUMPDEST 00000446: PUSH1 0x40 00000448: MLOAD 00000449: PUSH2 0x0452 0000044c: SWAP2 0000044d: SWAP1 0000044e: PUSH2 0x34d6 00000451: JUMP 00000452: JUMPDEST 00000453: PUSH1 0x40 00000455: MLOAD 00000456: DUP1 00000457: SWAP2 00000458: SUB 00000459: SWAP1 0000045a: RETURN 0000045b: JUMPDEST 0000045c: CALLVALUE 0000045d: DUP1 0000045e: ISZERO 0000045f: PUSH2 0x0467 00000462: JUMPI 00000463: PUSH1 0x00 00000465: DUP1 00000466: REVERT 00000467: JUMPDEST 00000468: POP 00000469: PUSH2 0x0470 0000046c: PUSH2 0x0fba 0000046f: JUMP 00000470: JUMPDEST 00000471: PUSH1 0x40 00000473: MLOAD 00000474: PUSH2 0x047d 00000477: SWAP2 00000478: SWAP1 00000479: PUSH2 0x3621 0000047c: JUMP 0000047d: JUMPDEST 0000047e: PUSH1 0x40 00000480: MLOAD 00000481: DUP1 00000482: SWAP2 00000483: SUB 00000484: SWAP1 00000485: RETURN 00000486: JUMPDEST 00000487: CALLVALUE 00000488: DUP1 00000489: ISZERO 0000048a: PUSH2 0x0492 0000048d: JUMPI 0000048e: PUSH1 0x00 00000490: DUP1 00000491: REVERT 00000492: JUMPDEST 00000493: POP 00000494: PUSH2 0x04ad 00000497: PUSH1 0x04 00000499: DUP1 0000049a: CALLDATASIZE 0000049b: SUB 0000049c: DUP2 0000049d: ADD 0000049e: SWAP1 0000049f: PUSH2 0x04a8 000004a2: SWAP2 000004a3: SWAP1 000004a4: PUSH2 0x351d 000004a7: JUMP 000004a8: JUMPDEST 000004a9: PUSH2 0x0fc1 000004ac: JUMP 000004ad: JUMPDEST 000004ae: STOP 000004af: JUMPDEST 000004b0: CALLVALUE 000004b1: DUP1 000004b2: ISZERO 000004b3: PUSH2 0x04bb 000004b6: JUMPI 000004b7: PUSH1 0x00 000004b9: DUP1 000004ba: REVERT 000004bb: JUMPDEST 000004bc: POP 000004bd: PUSH2 0x04d6 000004c0: PUSH1 0x04 000004c2: DUP1 000004c3: CALLDATASIZE 000004c4: SUB 000004c5: DUP2 000004c6: ADD 000004c7: SWAP1 000004c8: PUSH2 0x04d1 000004cb: SWAP2 000004cc: SWAP1 000004cd: PUSH2 0x351d 000004d0: JUMP 000004d1: JUMPDEST 000004d2: PUSH2 0x1038 000004d5: JUMP 000004d6: JUMPDEST 000004d7: STOP 000004d8: JUMPDEST 000004d9: CALLVALUE 000004da: DUP1 000004db: ISZERO 000004dc: PUSH2 0x04e4 000004df: JUMPI 000004e0: PUSH1 0x00 000004e2: DUP1 000004e3: REVERT 000004e4: JUMPDEST 000004e5: POP 000004e6: PUSH2 0x04ff 000004e9: PUSH1 0x04 000004eb: DUP1 000004ec: CALLDATASIZE 000004ed: SUB 000004ee: DUP2 000004ef: ADD 000004f0: SWAP1 000004f1: PUSH2 0x04fa 000004f4: SWAP2 000004f5: SWAP1 000004f6: PUSH2 0x3881 000004f9: JUMP 000004fa: JUMPDEST 000004fb: PUSH2 0x10af 000004fe: JUMP 000004ff: JUMPDEST 00000500: STOP 00000501: JUMPDEST 00000502: CALLVALUE 00000503: DUP1 00000504: ISZERO 00000505: PUSH2 0x050d 00000508: JUMPI 00000509: PUSH1 0x00 0000050b: DUP1 0000050c: REVERT 0000050d: JUMPDEST 0000050e: POP 0000050f: PUSH2 0x0528 00000512: PUSH1 0x04 00000514: DUP1 00000515: CALLDATASIZE 00000516: SUB 00000517: DUP2 00000518: ADD 00000519: SWAP1 0000051a: PUSH2 0x0523 0000051d: SWAP2 0000051e: SWAP1 0000051f: PUSH2 0x351d 00000522: JUMP 00000523: JUMPDEST 00000524: PUSH2 0x19b8 00000527: JUMP 00000528: JUMPDEST 00000529: PUSH1 0x40 0000052b: MLOAD 0000052c: PUSH2 0x0539 0000052f: SWAP6 00000530: SWAP5 00000531: SWAP4 00000532: SWAP3 00000533: SWAP2 00000534: SWAP1 00000535: PUSH2 0x3a62 00000538: JUMP 00000539: JUMPDEST 0000053a: PUSH1 0x40 0000053c: MLOAD 0000053d: DUP1 0000053e: SWAP2 0000053f: SUB 00000540: SWAP1 00000541: RETURN 00000542: JUMPDEST 00000543: CALLVALUE 00000544: DUP1 00000545: ISZERO 00000546: PUSH2 0x054e 00000549: JUMPI 0000054a: PUSH1 0x00 0000054c: DUP1 0000054d: REVERT 0000054e: JUMPDEST 0000054f: POP 00000550: PUSH2 0x0569 00000553: PUSH1 0x04 00000555: DUP1 00000556: CALLDATASIZE 00000557: SUB 00000558: DUP2 00000559: ADD 0000055a: SWAP1 0000055b: PUSH2 0x0564 0000055e: SWAP2 0000055f: SWAP1 00000560: PUSH2 0x3ada 00000563: JUMP 00000564: JUMPDEST 00000565: PUSH2 0x1a22 00000568: JUMP 00000569: JUMPDEST 0000056a: STOP 0000056b: JUMPDEST 0000056c: CALLVALUE 0000056d: DUP1 0000056e: ISZERO 0000056f: PUSH2 0x0577 00000572: JUMPI 00000573: PUSH1 0x00 00000575: DUP1 00000576: REVERT 00000577: JUMPDEST 00000578: POP 00000579: PUSH2 0x0580 0000057c: PUSH2 0x1e0f 0000057f: JUMP 00000580: JUMPDEST 00000581: PUSH1 0x40 00000583: MLOAD 00000584: PUSH2 0x058d 00000587: SWAP2 00000588: SWAP1 00000589: PUSH2 0x3411 0000058c: JUMP 0000058d: JUMPDEST 0000058e: PUSH1 0x40 00000590: MLOAD 00000591: DUP1 00000592: SWAP2 00000593: SUB 00000594: SWAP1 00000595: RETURN 00000596: JUMPDEST 00000597: CALLVALUE 00000598: DUP1 00000599: ISZERO 0000059a: PUSH2 0x05a2 0000059d: JUMPI 0000059e: PUSH1 0x00 000005a0: DUP1 000005a1: REVERT 000005a2: JUMPDEST 000005a3: POP 000005a4: PUSH2 0x05bd 000005a7: PUSH1 0x04 000005a9: DUP1 000005aa: CALLDATASIZE 000005ab: SUB 000005ac: DUP2 000005ad: ADD 000005ae: SWAP1 000005af: PUSH2 0x05b8 000005b2: SWAP2 000005b3: SWAP1 000005b4: PUSH2 0x351d 000005b7: JUMP 000005b8: JUMPDEST 000005b9: PUSH2 0x1e35 000005bc: JUMP 000005bd: JUMPDEST 000005be: STOP 000005bf: JUMPDEST 000005c0: CALLVALUE 000005c1: DUP1 000005c2: ISZERO 000005c3: PUSH2 0x05cb 000005c6: JUMPI 000005c7: PUSH1 0x00 000005c9: DUP1 000005ca: REVERT 000005cb: JUMPDEST 000005cc: POP 000005cd: PUSH2 0x05e6 000005d0: PUSH1 0x04 000005d2: DUP1 000005d3: CALLDATASIZE 000005d4: SUB 000005d5: DUP2 000005d6: ADD 000005d7: SWAP1 000005d8: PUSH2 0x05e1 000005db: SWAP2 000005dc: SWAP1 000005dd: PUSH2 0x363c 000005e0: JUMP 000005e1: JUMPDEST 000005e2: PUSH2 0x1eac 000005e5: JUMP 000005e6: JUMPDEST 000005e7: STOP 000005e8: JUMPDEST 000005e9: CALLVALUE 000005ea: DUP1 000005eb: ISZERO 000005ec: PUSH2 0x05f4 000005ef: JUMPI 000005f0: PUSH1 0x00 000005f2: DUP1 000005f3: REVERT 000005f4: JUMPDEST 000005f5: POP 000005f6: PUSH2 0x05fd 000005f9: PUSH2 0x1ed5 000005fc: JUMP 000005fd: JUMPDEST 000005fe: PUSH1 0x40 00000600: MLOAD 00000601: PUSH2 0x060a 00000604: SWAP2 00000605: SWAP1 00000606: PUSH2 0x3621 00000609: JUMP 0000060a: JUMPDEST 0000060b: PUSH1 0x40 0000060d: MLOAD 0000060e: DUP1 0000060f: SWAP2 00000610: SUB 00000611: SWAP1 00000612: RETURN 00000613: JUMPDEST 00000614: CALLVALUE 00000615: DUP1 00000616: ISZERO 00000617: PUSH2 0x061f 0000061a: JUMPI 0000061b: PUSH1 0x00 0000061d: DUP1 0000061e: REVERT 0000061f: JUMPDEST 00000620: POP 00000621: PUSH2 0x0628 00000624: PUSH2 0x1ef9 00000627: JUMP 00000628: JUMPDEST 00000629: PUSH1 0x40 0000062b: MLOAD 0000062c: PUSH2 0x0635 0000062f: SWAP2 00000630: SWAP1 00000631: PUSH2 0x3621 00000634: JUMP 00000635: JUMPDEST 00000636: PUSH1 0x40 00000638: MLOAD 00000639: DUP1 0000063a: SWAP2 0000063b: SUB 0000063c: SWAP1 0000063d: RETURN 0000063e: JUMPDEST 0000063f: CALLVALUE 00000640: DUP1 00000641: ISZERO 00000642: PUSH2 0x064a 00000645: JUMPI 00000646: PUSH1 0x00 00000648: DUP1 00000649: REVERT 0000064a: JUMPDEST 0000064b: POP 0000064c: PUSH2 0x0665 0000064f: PUSH1 0x04 00000651: DUP1 00000652: CALLDATASIZE 00000653: SUB 00000654: DUP2 00000655: ADD 00000656: SWAP1 00000657: PUSH2 0x0660 0000065a: SWAP2 0000065b: SWAP1 0000065c: PUSH2 0x3b41 0000065f: JUMP 00000660: JUMPDEST 00000661: PUSH2 0x1f1d 00000664: JUMP 00000665: JUMPDEST 00000666: STOP 00000667: JUMPDEST 00000668: CALLVALUE 00000669: DUP1 0000066a: ISZERO 0000066b: PUSH2 0x0673 0000066e: JUMPI 0000066f: PUSH1 0x00 00000671: DUP1 00000672: REVERT 00000673: JUMPDEST 00000674: POP 00000675: PUSH2 0x067c 00000678: PUSH2 0x2593 0000067b: JUMP 0000067c: JUMPDEST 0000067d: STOP 0000067e: JUMPDEST 0000067f: PUSH1 0x04 00000681: PUSH1 0x00 00000683: SWAP1 00000684: SLOAD 00000685: SWAP1 00000686: PUSH2 0x0100 00000689: EXP 0000068a: SWAP1 0000068b: DIV 0000068c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006a1: AND 000006a2: DUP2 000006a3: JUMP 000006a4: JUMPDEST 000006a5: PUSH1 0x00 000006a7: PUSH32 0x7965db0b00000000000000000000000000000000000000000000000000000000 000006c8: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000006e5: NOT 000006e6: AND 000006e7: DUP3 000006e8: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000705: NOT 00000706: AND 00000707: EQ 00000708: DUP1 00000709: PUSH2 0x0717 0000070c: JUMPI 0000070d: POP 0000070e: PUSH2 0x0716 00000711: DUP3 00000712: PUSH2 0x25e3 00000715: JUMP 00000716: JUMPDEST 00000717: JUMPDEST 00000718: SWAP1 00000719: POP 0000071a: SWAP2 0000071b: SWAP1 0000071c: POP 0000071d: JUMP 0000071e: JUMPDEST 0000071f: PUSH32 0x77eacfcb6207f26b72edc4f15c48e5518843e7e98ccfd7e0d6c16f92ed1fef8d 00000740: PUSH2 0x0750 00000743: DUP2 00000744: PUSH2 0x074b 00000747: PUSH2 0x264d 0000074a: JUMP 0000074b: JUMPDEST 0000074c: PUSH2 0x2655 0000074f: JUMP 00000750: JUMPDEST 00000751: DUP2 00000752: PUSH1 0x01 00000754: DUP1 00000755: PUSH2 0x0100 00000758: EXP 00000759: DUP2 0000075a: SLOAD 0000075b: DUP2 0000075c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000771: MUL 00000772: NOT 00000773: AND 00000774: SWAP1 00000775: DUP4 00000776: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000078b: AND 0000078c: MUL 0000078d: OR 0000078e: SWAP1 0000078f: SSTORE 00000790: POP 00000791: POP 00000792: POP 00000793: JUMP 00000794: JUMPDEST 00000795: PUSH32 0x77eacfcb6207f26b72edc4f15c48e5518843e7e98ccfd7e0d6c16f92ed1fef8d 000007b6: PUSH2 0x07c6 000007b9: DUP2 000007ba: PUSH2 0x07c1 000007bd: PUSH2 0x264d 000007c0: JUMP 000007c1: JUMPDEST 000007c2: PUSH2 0x2655 000007c5: JUMP 000007c6: JUMPDEST 000007c7: PUSH1 0x01 000007c9: DUP1 000007ca: PUSH1 0x00 000007cc: PUSH2 0x0100 000007cf: EXP 000007d0: DUP2 000007d1: SLOAD 000007d2: DUP2 000007d3: PUSH1 0xff 000007d5: MUL 000007d6: NOT 000007d7: AND 000007d8: SWAP1 000007d9: DUP4 000007da: ISZERO 000007db: ISZERO 000007dc: MUL 000007dd: OR 000007de: SWAP1 000007df: SSTORE 000007e0: POP 000007e1: POP 000007e2: JUMP 000007e3: JUMPDEST 000007e4: PUSH32 0x593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a0 00000805: PUSH2 0x0815 00000808: DUP2 00000809: PUSH2 0x0810 0000080c: PUSH2 0x264d 0000080f: JUMP 00000810: JUMPDEST 00000811: PUSH2 0x2655 00000814: JUMP 00000815: JUMPDEST 00000816: PUSH1 0x00 00000818: DUP1 00000819: SHL 0000081a: PUSH1 0x05 0000081c: PUSH1 0x00 0000081e: DUP6 0000081f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000834: AND 00000835: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000084a: AND 0000084b: DUP2 0000084c: MSTORE 0000084d: PUSH1 0x20 0000084f: ADD 00000850: SWAP1 00000851: DUP2 00000852: MSTORE 00000853: PUSH1 0x20 00000855: ADD 00000856: PUSH1 0x00 00000858: KECCAK256 00000859: PUSH1 0x01 0000085b: ADD 0000085c: SLOAD 0000085d: SUB 0000085e: PUSH2 0x089c 00000861: JUMPI 00000862: PUSH1 0x40 00000864: MLOAD 00000865: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000886: DUP2 00000887: MSTORE 00000888: PUSH1 0x04 0000088a: ADD 0000088b: PUSH2 0x0893 0000088e: SWAP1 0000088f: PUSH2 0x3bf1 00000892: JUMP 00000893: JUMPDEST 00000894: PUSH1 0x40 00000896: MLOAD 00000897: DUP1 00000898: SWAP2 00000899: SUB 0000089a: SWAP1 0000089b: REVERT 0000089c: JUMPDEST 0000089d: DUP2 0000089e: PUSH1 0x05 000008a0: PUSH1 0x00 000008a2: DUP6 000008a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008b8: AND 000008b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008ce: AND 000008cf: DUP2 000008d0: MSTORE 000008d1: PUSH1 0x20 000008d3: ADD 000008d4: SWAP1 000008d5: DUP2 000008d6: MSTORE 000008d7: PUSH1 0x20 000008d9: ADD 000008da: PUSH1 0x00 000008dc: KECCAK256 000008dd: PUSH1 0x02 000008df: ADD 000008e0: PUSH1 0x02 000008e2: PUSH2 0x0100 000008e5: EXP 000008e6: DUP2 000008e7: SLOAD 000008e8: DUP2 000008e9: PUSH1 0xff 000008eb: MUL 000008ec: NOT 000008ed: AND 000008ee: SWAP1 000008ef: DUP4 000008f0: PUSH1 0x01 000008f2: DUP2 000008f3: GT 000008f4: ISZERO 000008f5: PUSH2 0x0901 000008f8: JUMPI 000008f9: PUSH2 0x0900 000008fc: PUSH2 0x39a3 000008ff: JUMP 00000900: JUMPDEST 00000901: JUMPDEST 00000902: MUL 00000903: OR 00000904: SWAP1 00000905: SSTORE 00000906: POP 00000907: POP 00000908: POP 00000909: POP 0000090a: JUMP 0000090b: JUMPDEST 0000090c: PUSH1 0x00 0000090e: DUP1 0000090f: PUSH1 0x00 00000911: DUP4 00000912: DUP2 00000913: MSTORE 00000914: PUSH1 0x20 00000916: ADD 00000917: SWAP1 00000918: DUP2 00000919: MSTORE 0000091a: PUSH1 0x20 0000091c: ADD 0000091d: PUSH1 0x00 0000091f: KECCAK256 00000920: PUSH1 0x01 00000922: ADD 00000923: SLOAD 00000924: SWAP1 00000925: POP 00000926: SWAP2 00000927: SWAP1 00000928: POP 00000929: JUMP 0000092a: JUMPDEST 0000092b: PUSH2 0x0933 0000092e: DUP3 0000092f: PUSH2 0x090b 00000932: JUMP 00000933: JUMPDEST 00000934: PUSH2 0x0944 00000937: DUP2 00000938: PUSH2 0x093f 0000093b: PUSH2 0x264d 0000093e: JUMP 0000093f: JUMPDEST 00000940: PUSH2 0x2655 00000943: JUMP 00000944: JUMPDEST 00000945: PUSH2 0x094e 00000948: DUP4 00000949: DUP4 0000094a: PUSH2 0x26f2 0000094d: JUMP 0000094e: JUMPDEST 0000094f: POP 00000950: POP 00000951: POP 00000952: JUMP 00000953: JUMPDEST 00000954: PUSH2 0x095b 00000957: PUSH2 0x264d 0000095a: JUMP 0000095b: JUMPDEST 0000095c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000971: AND 00000972: DUP2 00000973: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000988: AND 00000989: EQ 0000098a: PUSH2 0x09c8 0000098d: JUMPI 0000098e: PUSH1 0x40 00000990: MLOAD 00000991: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009b2: DUP2 000009b3: MSTORE 000009b4: PUSH1 0x04 000009b6: ADD 000009b7: PUSH2 0x09bf 000009ba: SWAP1 000009bb: PUSH2 0x3c83 000009be: JUMP 000009bf: JUMPDEST 000009c0: PUSH1 0x40 000009c2: MLOAD 000009c3: DUP1 000009c4: SWAP2 000009c5: SUB 000009c6: SWAP1 000009c7: REVERT 000009c8: JUMPDEST 000009c9: PUSH2 0x09d2 000009cc: DUP3 000009cd: DUP3 000009ce: PUSH2 0x27d2 000009d1: JUMP 000009d2: JUMPDEST 000009d3: POP 000009d4: POP 000009d5: JUMP 000009d6: JUMPDEST 000009d7: PUSH1 0x01 000009d9: DUP1 000009da: SLOAD 000009db: SWAP1 000009dc: PUSH2 0x0100 000009df: EXP 000009e0: SWAP1 000009e1: DIV 000009e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009f7: AND 000009f8: DUP2 000009f9: JUMP 000009fa: JUMPDEST 000009fb: PUSH1 0x03 000009fd: PUSH1 0x00 000009ff: SWAP1 00000a00: SLOAD 00000a01: SWAP1 00000a02: PUSH2 0x0100 00000a05: EXP 00000a06: SWAP1 00000a07: DIV 00000a08: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a1d: AND 00000a1e: DUP2 00000a1f: JUMP 00000a20: JUMPDEST 00000a21: PUSH1 0x01 00000a23: PUSH1 0x00 00000a25: SWAP1 00000a26: SLOAD 00000a27: SWAP1 00000a28: PUSH2 0x0100 00000a2b: EXP 00000a2c: SWAP1 00000a2d: DIV 00000a2e: PUSH1 0xff 00000a30: AND 00000a31: PUSH2 0x0a6f 00000a34: JUMPI 00000a35: PUSH1 0x40 00000a37: MLOAD 00000a38: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a59: DUP2 00000a5a: MSTORE 00000a5b: PUSH1 0x04 00000a5d: ADD 00000a5e: PUSH2 0x0a66 00000a61: SWAP1 00000a62: PUSH2 0x3cef 00000a65: JUMP 00000a66: JUMPDEST 00000a67: PUSH1 0x40 00000a69: MLOAD 00000a6a: DUP1 00000a6b: SWAP2 00000a6c: SUB 00000a6d: SWAP1 00000a6e: REVERT 00000a6f: JUMPDEST 00000a70: PUSH1 0x00 00000a72: DUP1 00000a73: PUSH2 0x0a7f 00000a76: DUP7 00000a77: DUP7 00000a78: CALLVALUE 00000a79: DUP8 00000a7a: DUP8 00000a7b: PUSH2 0x28b3 00000a7e: JUMP 00000a7f: JUMPDEST 00000a80: SWAP3 00000a81: POP 00000a82: SWAP3 00000a83: POP 00000a84: POP 00000a85: PUSH1 0x01 00000a87: DUP1 00000a88: DUP2 00000a89: GT 00000a8a: ISZERO 00000a8b: PUSH2 0x0a97 00000a8e: JUMPI 00000a8f: PUSH2 0x0a96 00000a92: PUSH2 0x39a3 00000a95: JUMP 00000a96: JUMPDEST 00000a97: JUMPDEST 00000a98: DUP2 00000a99: PUSH1 0x80 00000a9b: ADD 00000a9c: MLOAD 00000a9d: PUSH1 0x01 00000a9f: DUP2 00000aa0: GT 00000aa1: ISZERO 00000aa2: PUSH2 0x0aae 00000aa5: JUMPI 00000aa6: PUSH2 0x0aad 00000aa9: PUSH2 0x39a3 00000aac: JUMP 00000aad: JUMPDEST 00000aae: JUMPDEST 00000aaf: EQ 00000ab0: PUSH2 0x0aee 00000ab3: JUMPI 00000ab4: PUSH1 0x40 00000ab6: MLOAD 00000ab7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ad8: DUP2 00000ad9: MSTORE 00000ada: PUSH1 0x04 00000adc: ADD 00000add: PUSH2 0x0ae5 00000ae0: SWAP1 00000ae1: PUSH2 0x3d5b 00000ae4: JUMP 00000ae5: JUMPDEST 00000ae6: PUSH1 0x40 00000ae8: MLOAD 00000ae9: DUP1 00000aea: SWAP2 00000aeb: SUB 00000aec: SWAP1 00000aed: REVERT 00000aee: JUMPDEST 00000aef: PUSH1 0x00 00000af1: PUSH1 0x03 00000af3: DUP2 00000af4: GT 00000af5: ISZERO 00000af6: PUSH2 0x0b02 00000af9: JUMPI 00000afa: PUSH2 0x0b01 00000afd: PUSH2 0x39a3 00000b00: JUMP 00000b01: JUMPDEST 00000b02: JUMPDEST 00000b03: DUP2 00000b04: PUSH1 0x60 00000b06: ADD 00000b07: MLOAD 00000b08: PUSH1 0x03 00000b0a: DUP2 00000b0b: GT 00000b0c: ISZERO 00000b0d: PUSH2 0x0b19 00000b10: JUMPI 00000b11: PUSH2 0x0b18 00000b14: PUSH2 0x39a3 00000b17: JUMP 00000b18: JUMPDEST 00000b19: JUMPDEST 00000b1a: EQ 00000b1b: PUSH2 0x0b59 00000b1e: JUMPI 00000b1f: PUSH1 0x40 00000b21: MLOAD 00000b22: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b43: DUP2 00000b44: MSTORE 00000b45: PUSH1 0x04 00000b47: ADD 00000b48: PUSH2 0x0b50 00000b4b: SWAP1 00000b4c: PUSH2 0x3dc7 00000b4f: JUMP 00000b50: JUMPDEST 00000b51: PUSH1 0x40 00000b53: MLOAD 00000b54: DUP1 00000b55: SWAP2 00000b56: SUB 00000b57: SWAP1 00000b58: REVERT 00000b59: JUMPDEST 00000b5a: PUSH1 0x00 00000b5c: DUP3 00000b5d: GT 00000b5e: ISZERO 00000b5f: PUSH2 0x0bcc 00000b62: JUMPI 00000b63: PUSH1 0x02 00000b65: PUSH1 0x00 00000b67: SWAP1 00000b68: SLOAD 00000b69: SWAP1 00000b6a: PUSH2 0x0100 00000b6d: EXP 00000b6e: SWAP1 00000b6f: DIV 00000b70: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b85: AND 00000b86: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b9b: AND 00000b9c: PUSH2 0x08fc 00000b9f: DUP4 00000ba0: SWAP1 00000ba1: DUP2 00000ba2: ISZERO 00000ba3: MUL 00000ba4: SWAP1 00000ba5: PUSH1 0x40 00000ba7: MLOAD 00000ba8: PUSH1 0x00 00000baa: PUSH1 0x40 00000bac: MLOAD 00000bad: DUP1 00000bae: DUP4 00000baf: SUB 00000bb0: DUP2 00000bb1: DUP6 00000bb2: DUP9 00000bb3: DUP9 00000bb4: CALL 00000bb5: SWAP4 00000bb6: POP 00000bb7: POP 00000bb8: POP 00000bb9: POP 00000bba: ISZERO 00000bbb: DUP1 00000bbc: ISZERO 00000bbd: PUSH2 0x0bca 00000bc0: JUMPI 00000bc1: RETURNDATASIZE 00000bc2: PUSH1 0x00 00000bc4: DUP1 00000bc5: RETURNDATACOPY 00000bc6: RETURNDATASIZE 00000bc7: PUSH1 0x00 00000bc9: REVERT 00000bca: JUMPDEST 00000bcb: POP 00000bcc: JUMPDEST 00000bcd: POP 00000bce: POP 00000bcf: POP 00000bd0: POP 00000bd1: POP 00000bd2: POP 00000bd3: JUMP 00000bd4: JUMPDEST 00000bd5: PUSH1 0x06 00000bd7: PUSH1 0x20 00000bd9: MSTORE 00000bda: DUP2 00000bdb: PUSH1 0x00 00000bdd: MSTORE 00000bde: PUSH1 0x40 00000be0: PUSH1 0x00 00000be2: KECCAK256 00000be3: PUSH1 0x20 00000be5: MSTORE 00000be6: DUP1 00000be7: PUSH1 0x00 00000be9: MSTORE 00000bea: PUSH1 0x40 00000bec: PUSH1 0x00 00000bee: KECCAK256 00000bef: PUSH1 0x00 00000bf1: SWAP2 00000bf2: POP 00000bf3: SWAP2 00000bf4: POP 00000bf5: SWAP1 00000bf6: SLOAD 00000bf7: SWAP1 00000bf8: PUSH2 0x0100 00000bfb: EXP 00000bfc: SWAP1 00000bfd: DIV 00000bfe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c13: AND 00000c14: DUP2 00000c15: JUMP 00000c16: JUMPDEST 00000c17: PUSH1 0x01 00000c19: PUSH1 0x00 00000c1b: SWAP1 00000c1c: SLOAD 00000c1d: SWAP1 00000c1e: PUSH2 0x0100 00000c21: EXP 00000c22: SWAP1 00000c23: DIV 00000c24: PUSH1 0xff 00000c26: AND 00000c27: PUSH2 0x0c65 00000c2a: JUMPI 00000c2b: PUSH1 0x40 00000c2d: MLOAD 00000c2e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000c4f: DUP2 00000c50: MSTORE 00000c51: PUSH1 0x04 00000c53: ADD 00000c54: PUSH2 0x0c5c 00000c57: SWAP1 00000c58: PUSH2 0x3cef 00000c5b: JUMP 00000c5c: JUMPDEST 00000c5d: PUSH1 0x40 00000c5f: MLOAD 00000c60: DUP1 00000c61: SWAP2 00000c62: SUB 00000c63: SWAP1 00000c64: REVERT 00000c65: JUMPDEST 00000c66: PUSH1 0x00 00000c68: DUP1 00000c69: PUSH1 0x00 00000c6b: PUSH2 0x0c77 00000c6e: DUP9 00000c6f: DUP9 00000c70: DUP7 00000c71: DUP10 00000c72: DUP10 00000c73: PUSH2 0x28b3 00000c76: JUMP 00000c77: JUMPDEST 00000c78: SWAP3 00000c79: POP 00000c7a: SWAP3 00000c7b: POP 00000c7c: SWAP3 00000c7d: POP 00000c7e: PUSH1 0x01 00000c80: DUP1 00000c81: DUP2 00000c82: GT 00000c83: ISZERO 00000c84: PUSH2 0x0c90 00000c87: JUMPI 00000c88: PUSH2 0x0c8f 00000c8b: PUSH2 0x39a3 00000c8e: JUMP 00000c8f: JUMPDEST 00000c90: JUMPDEST 00000c91: DUP2 00000c92: PUSH1 0x80 00000c94: ADD 00000c95: MLOAD 00000c96: PUSH1 0x01 00000c98: DUP2 00000c99: GT 00000c9a: ISZERO 00000c9b: PUSH2 0x0ca7 00000c9e: JUMPI 00000c9f: PUSH2 0x0ca6 00000ca2: PUSH2 0x39a3 00000ca5: JUMP 00000ca6: JUMPDEST 00000ca7: JUMPDEST 00000ca8: EQ 00000ca9: PUSH2 0x0ce7 00000cac: JUMPI 00000cad: PUSH1 0x40 00000caf: MLOAD 00000cb0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000cd1: DUP2 00000cd2: MSTORE 00000cd3: PUSH1 0x04 00000cd5: ADD 00000cd6: PUSH2 0x0cde 00000cd9: SWAP1 00000cda: PUSH2 0x3d5b 00000cdd: JUMP 00000cde: JUMPDEST 00000cdf: PUSH1 0x40 00000ce1: MLOAD 00000ce2: DUP1 00000ce3: SWAP2 00000ce4: SUB 00000ce5: SWAP1 00000ce6: REVERT 00000ce7: JUMPDEST 00000ce8: PUSH1 0x01 00000cea: PUSH1 0x03 00000cec: DUP2 00000ced: GT 00000cee: ISZERO 00000cef: PUSH2 0x0cfb 00000cf2: JUMPI 00000cf3: PUSH2 0x0cfa 00000cf6: PUSH2 0x39a3 00000cf9: JUMP 00000cfa: JUMPDEST 00000cfb: JUMPDEST 00000cfc: DUP2 00000cfd: PUSH1 0x60 00000cff: ADD 00000d00: MLOAD 00000d01: PUSH1 0x03 00000d03: DUP2 00000d04: GT 00000d05: ISZERO 00000d06: PUSH2 0x0d12 00000d09: JUMPI 00000d0a: PUSH2 0x0d11 00000d0d: PUSH2 0x39a3 00000d10: JUMP 00000d11: JUMPDEST 00000d12: JUMPDEST 00000d13: SUB 00000d14: PUSH2 0x0d49 00000d17: JUMPI 00000d18: PUSH2 0x0d44 00000d1b: CALLER 00000d1c: ADDRESS 00000d1d: DUP6 00000d1e: DUP11 00000d1f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d34: AND 00000d35: PUSH2 0x2ca0 00000d38: SWAP1 00000d39: SWAP4 00000d3a: SWAP3 00000d3b: SWAP2 00000d3c: SWAP1 00000d3d: PUSH4 0xffffffff 00000d42: AND 00000d43: JUMP 00000d44: JUMPDEST 00000d45: PUSH2 0x0ec9 00000d48: JUMP 00000d49: JUMPDEST 00000d4a: PUSH1 0x03 00000d4c: DUP1 00000d4d: DUP2 00000d4e: GT 00000d4f: ISZERO 00000d50: PUSH2 0x0d5c 00000d53: JUMPI 00000d54: PUSH2 0x0d5b 00000d57: PUSH2 0x39a3 00000d5a: JUMP 00000d5b: JUMPDEST 00000d5c: JUMPDEST 00000d5d: DUP2 00000d5e: PUSH1 0x60 00000d60: ADD 00000d61: MLOAD 00000d62: PUSH1 0x03 00000d64: DUP2 00000d65: GT 00000d66: ISZERO 00000d67: PUSH2 0x0d73 00000d6a: JUMPI 00000d6b: PUSH2 0x0d72 00000d6e: PUSH2 0x39a3 00000d71: JUMP 00000d72: JUMPDEST 00000d73: JUMPDEST 00000d74: SUB 00000d75: PUSH2 0x0dea 00000d78: JUMPI 00000d79: DUP7 00000d7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d8f: AND 00000d90: PUSH4 0x9dc29fac 00000d95: CALLER 00000d96: DUP6 00000d97: PUSH1 0x40 00000d99: MLOAD 00000d9a: DUP4 00000d9b: PUSH4 0xffffffff 00000da0: AND 00000da1: PUSH1 0xe0 00000da3: SHL 00000da4: DUP2 00000da5: MSTORE 00000da6: PUSH1 0x04 00000da8: ADD 00000da9: PUSH2 0x0db3 00000dac: SWAP3 00000dad: SWAP2 00000dae: SWAP1 00000daf: PUSH2 0x3df6 00000db2: JUMP 00000db3: JUMPDEST 00000db4: PUSH1 0x00 00000db6: PUSH1 0x40 00000db8: MLOAD 00000db9: DUP1 00000dba: DUP4 00000dbb: SUB 00000dbc: DUP2 00000dbd: PUSH1 0x00 00000dbf: DUP8 00000dc0: DUP1 00000dc1: EXTCODESIZE 00000dc2: ISZERO 00000dc3: DUP1 00000dc4: ISZERO 00000dc5: PUSH2 0x0dcd 00000dc8: JUMPI 00000dc9: PUSH1 0x00 00000dcb: DUP1 00000dcc: REVERT 00000dcd: JUMPDEST 00000dce: POP 00000dcf: GAS 00000dd0: CALL 00000dd1: ISZERO 00000dd2: DUP1 00000dd3: ISZERO 00000dd4: PUSH2 0x0de1 00000dd7: JUMPI 00000dd8: RETURNDATASIZE 00000dd9: PUSH1 0x00 00000ddb: DUP1 00000ddc: RETURNDATACOPY 00000ddd: RETURNDATASIZE 00000dde: PUSH1 0x00 00000de0: REVERT 00000de1: JUMPDEST 00000de2: POP 00000de3: POP 00000de4: POP 00000de5: POP 00000de6: PUSH2 0x0ec8 00000de9: JUMP 00000dea: JUMPDEST 00000deb: PUSH1 0x02 00000ded: PUSH1 0x03 00000def: DUP2 00000df0: GT 00000df1: ISZERO 00000df2: PUSH2 0x0dfe 00000df5: JUMPI 00000df6: PUSH2 0x0dfd 00000df9: PUSH2 0x39a3 00000dfc: JUMP 00000dfd: JUMPDEST 00000dfe: JUMPDEST 00000dff: DUP2 00000e00: PUSH1 0x60 00000e02: ADD 00000e03: MLOAD 00000e04: PUSH1 0x03 00000e06: DUP2 00000e07: GT 00000e08: ISZERO 00000e09: PUSH2 0x0e15 00000e0c: JUMPI 00000e0d: PUSH2 0x0e14 00000e10: PUSH2 0x39a3 00000e13: JUMP 00000e14: JUMPDEST 00000e15: JUMPDEST 00000e16: SUB 00000e17: PUSH2 0x0e8c 00000e1a: JUMPI 00000e1b: DUP7 00000e1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e31: AND 00000e32: PUSH4 0x9dc29fac 00000e37: CALLER 00000e38: DUP6 00000e39: PUSH1 0x40 00000e3b: MLOAD 00000e3c: DUP4 00000e3d: PUSH4 0xffffffff 00000e42: AND 00000e43: PUSH1 0xe0 00000e45: SHL 00000e46: DUP2 00000e47: MSTORE 00000e48: PUSH1 0x04 00000e4a: ADD 00000e4b: PUSH2 0x0e55 00000e4e: SWAP3 00000e4f: SWAP2 00000e50: SWAP1 00000e51: PUSH2 0x3df6 00000e54: JUMP 00000e55: JUMPDEST 00000e56: PUSH1 0x00 00000e58: PUSH1 0x40 00000e5a: MLOAD 00000e5b: DUP1 00000e5c: DUP4 00000e5d: SUB 00000e5e: DUP2 00000e5f: PUSH1 0x00 00000e61: DUP8 00000e62: DUP1 00000e63: EXTCODESIZE 00000e64: ISZERO 00000e65: DUP1 00000e66: ISZERO 00000e67: PUSH2 0x0e6f 00000e6a: JUMPI 00000e6b: PUSH1 0x00 00000e6d: DUP1 00000e6e: REVERT 00000e6f: JUMPDEST 00000e70: POP 00000e71: GAS 00000e72: CALL 00000e73: ISZERO 00000e74: DUP1 00000e75: ISZERO 00000e76: PUSH2 0x0e83 00000e79: JUMPI 00000e7a: RETURNDATASIZE 00000e7b: PUSH1 0x00 00000e7d: DUP1 00000e7e: RETURNDATACOPY 00000e7f: RETURNDATASIZE 00000e80: PUSH1 0x00 00000e82: REVERT 00000e83: JUMPDEST 00000e84: POP 00000e85: POP 00000e86: POP 00000e87: POP 00000e88: PUSH2 0x0ec7 00000e8b: JUMP 00000e8c: JUMPDEST 00000e8d: PUSH1 0x40 00000e8f: MLOAD 00000e90: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000eb1: DUP2 00000eb2: MSTORE 00000eb3: PUSH1 0x04 00000eb5: ADD 00000eb6: PUSH2 0x0ebe 00000eb9: SWAP1 00000eba: PUSH2 0x3dc7 00000ebd: JUMP 00000ebe: JUMPDEST 00000ebf: PUSH1 0x40 00000ec1: MLOAD 00000ec2: DUP1 00000ec3: SWAP2 00000ec4: SUB 00000ec5: SWAP1 00000ec6: REVERT 00000ec7: JUMPDEST 00000ec8: JUMPDEST 00000ec9: JUMPDEST 00000eca: PUSH1 0x00 00000ecc: DUP3 00000ecd: GT 00000ece: ISZERO 00000ecf: PUSH2 0x0f22 00000ed2: JUMPI 00000ed3: PUSH2 0x0f21 00000ed6: CALLER 00000ed7: PUSH1 0x02 00000ed9: PUSH1 0x00 00000edb: SWAP1 00000edc: SLOAD 00000edd: SWAP1 00000ede: PUSH2 0x0100 00000ee1: EXP 00000ee2: SWAP1 00000ee3: DIV 00000ee4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ef9: AND 00000efa: DUP5 00000efb: DUP11 00000efc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f11: AND 00000f12: PUSH2 0x2ca0 00000f15: SWAP1 00000f16: SWAP4 00000f17: SWAP3 00000f18: SWAP2 00000f19: SWAP1 00000f1a: PUSH4 0xffffffff 00000f1f: AND 00000f20: JUMP 00000f21: JUMPDEST 00000f22: JUMPDEST 00000f23: POP 00000f24: POP 00000f25: POP 00000f26: POP 00000f27: POP 00000f28: POP 00000f29: POP 00000f2a: POP 00000f2b: JUMP 00000f2c: JUMPDEST 00000f2d: PUSH32 0x77eacfcb6207f26b72edc4f15c48e5518843e7e98ccfd7e0d6c16f92ed1fef8d 00000f4e: DUP2 00000f4f: JUMP 00000f50: JUMPDEST 00000f51: PUSH1 0x00 00000f53: DUP1 00000f54: PUSH1 0x00 00000f56: DUP5 00000f57: DUP2 00000f58: MSTORE 00000f59: PUSH1 0x20 00000f5b: ADD 00000f5c: SWAP1 00000f5d: DUP2 00000f5e: MSTORE 00000f5f: PUSH1 0x20 00000f61: ADD 00000f62: PUSH1 0x00 00000f64: KECCAK256 00000f65: PUSH1 0x00 00000f67: ADD 00000f68: PUSH1 0x00 00000f6a: DUP4 00000f6b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f80: AND 00000f81: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f96: AND 00000f97: DUP2 00000f98: MSTORE 00000f99: PUSH1 0x20 00000f9b: ADD 00000f9c: SWAP1 00000f9d: DUP2 00000f9e: MSTORE 00000f9f: PUSH1 0x20 00000fa1: ADD 00000fa2: PUSH1 0x00 00000fa4: KECCAK256 00000fa5: PUSH1 0x00 00000fa7: SWAP1 00000fa8: SLOAD 00000fa9: SWAP1 00000faa: PUSH2 0x0100 00000fad: EXP 00000fae: SWAP1 00000faf: DIV 00000fb0: PUSH1 0xff 00000fb2: AND 00000fb3: SWAP1 00000fb4: POP 00000fb5: SWAP3 00000fb6: SWAP2 00000fb7: POP 00000fb8: POP 00000fb9: JUMP 00000fba: JUMPDEST 00000fbb: PUSH1 0x00 00000fbd: DUP1 00000fbe: SHL 00000fbf: DUP2 00000fc0: JUMP 00000fc1: JUMPDEST 00000fc2: PUSH32 0x593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a0 00000fe3: PUSH2 0x0ff3 00000fe6: DUP2 00000fe7: PUSH2 0x0fee 00000fea: PUSH2 0x264d 00000fed: JUMP 00000fee: JUMPDEST 00000fef: PUSH2 0x2655 00000ff2: JUMP 00000ff3: JUMPDEST 00000ff4: DUP2 00000ff5: PUSH1 0x02 00000ff7: PUSH1 0x00 00000ff9: PUSH2 0x0100 00000ffc: EXP 00000ffd: DUP2 00000ffe: SLOAD 00000fff: DUP2 00001000: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001015: MUL 00001016: NOT 00001017: AND 00001018: SWAP1 00001019: DUP4 0000101a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000102f: AND 00001030: MUL 00001031: OR 00001032: SWAP1 00001033: SSTORE 00001034: POP 00001035: POP 00001036: POP 00001037: JUMP 00001038: JUMPDEST 00001039: PUSH32 0x593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a0 0000105a: PUSH2 0x106a 0000105d: DUP2 0000105e: PUSH2 0x1065 00001061: PUSH2 0x264d 00001064: JUMP 00001065: JUMPDEST 00001066: PUSH2 0x2655 00001069: JUMP 0000106a: JUMPDEST 0000106b: DUP2 0000106c: PUSH1 0x03 0000106e: PUSH1 0x00 00001070: PUSH2 0x0100 00001073: EXP 00001074: DUP2 00001075: SLOAD 00001076: DUP2 00001077: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000108c: MUL 0000108d: NOT 0000108e: AND 0000108f: SWAP1 00001090: DUP4 00001091: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010a6: AND 000010a7: MUL 000010a8: OR 000010a9: SWAP1 000010aa: SSTORE 000010ab: POP 000010ac: POP 000010ad: POP 000010ae: JUMP 000010af: JUMPDEST 000010b0: PUSH1 0x01 000010b2: PUSH1 0x00 000010b4: SWAP1 000010b5: SLOAD 000010b6: SWAP1 000010b7: PUSH2 0x0100 000010ba: EXP 000010bb: SWAP1 000010bc: DIV 000010bd: PUSH1 0xff 000010bf: AND 000010c0: PUSH2 0x10fe 000010c3: JUMPI 000010c4: PUSH1 0x40 000010c6: MLOAD 000010c7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000010e8: DUP2 000010e9: MSTORE 000010ea: PUSH1 0x04 000010ec: ADD 000010ed: PUSH2 0x10f5 000010f0: SWAP1 000010f1: PUSH2 0x3cef 000010f4: JUMP 000010f5: JUMPDEST 000010f6: PUSH1 0x40 000010f8: MLOAD 000010f9: DUP1 000010fa: SWAP2 000010fb: SUB 000010fc: SWAP1 000010fd: REVERT 000010fe: JUMPDEST 000010ff: PUSH1 0x01 00001101: DUP1 00001102: SLOAD 00001103: SWAP1 00001104: PUSH2 0x0100 00001107: EXP 00001108: SWAP1 00001109: DIV 0000110a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000111f: AND 00001120: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001135: AND 00001136: PUSH4 0xceed2d3b 0000113b: DUP12 0000113c: DUP12 0000113d: DUP12 0000113e: DUP12 0000113f: DUP12 00001140: DUP12 00001141: DUP12 00001142: DUP12 00001143: DUP12 00001144: DUP12 00001145: PUSH1 0x40 00001147: MLOAD 00001148: DUP12 00001149: PUSH4 0xffffffff 0000114e: AND 0000114f: PUSH1 0xe0 00001151: SHL 00001152: DUP2 00001153: MSTORE 00001154: PUSH1 0x04 00001156: ADD 00001157: PUSH2 0x1169 0000115a: SWAP11 0000115b: SWAP10 0000115c: SWAP9 0000115d: SWAP8 0000115e: SWAP7 0000115f: SWAP6 00001160: SWAP5 00001161: SWAP4 00001162: SWAP3 00001163: SWAP2 00001164: SWAP1 00001165: PUSH2 0x3e8c 00001168: JUMP 00001169: JUMPDEST 0000116a: PUSH1 0x00 0000116c: PUSH1 0x40 0000116e: MLOAD 0000116f: DUP1 00001170: DUP4 00001171: SUB 00001172: DUP2 00001173: PUSH1 0x00 00001175: DUP8 00001176: DUP1 00001177: EXTCODESIZE 00001178: ISZERO 00001179: DUP1 0000117a: ISZERO 0000117b: PUSH2 0x1183 0000117e: JUMPI 0000117f: PUSH1 0x00 00001181: DUP1 00001182: REVERT 00001183: JUMPDEST 00001184: POP 00001185: GAS 00001186: CALL 00001187: ISZERO 00001188: DUP1 00001189: ISZERO 0000118a: PUSH2 0x1197 0000118d: JUMPI 0000118e: RETURNDATASIZE 0000118f: PUSH1 0x00 00001191: DUP1 00001192: RETURNDATACOPY 00001193: RETURNDATASIZE 00001194: PUSH1 0x00 00001196: REVERT 00001197: JUMPDEST 00001198: POP 00001199: POP 0000119a: POP 0000119b: POP 0000119c: PUSH1 0x00 0000119e: PUSH1 0x06 000011a0: PUSH1 0x00 000011a2: DUP9 000011a3: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000011c0: NOT 000011c1: AND 000011c2: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000011df: NOT 000011e0: AND 000011e1: DUP2 000011e2: MSTORE 000011e3: PUSH1 0x20 000011e5: ADD 000011e6: SWAP1 000011e7: DUP2 000011e8: MSTORE 000011e9: PUSH1 0x20 000011eb: ADD 000011ec: PUSH1 0x00 000011ee: KECCAK256 000011ef: PUSH1 0x00 000011f1: DUP8 000011f2: DUP2 000011f3: MSTORE 000011f4: PUSH1 0x20 000011f6: ADD 000011f7: SWAP1 000011f8: DUP2 000011f9: MSTORE 000011fa: PUSH1 0x20 000011fc: ADD 000011fd: PUSH1 0x00 000011ff: KECCAK256 00001200: PUSH1 0x00 00001202: SWAP1 00001203: SLOAD 00001204: SWAP1 00001205: PUSH2 0x0100 00001208: EXP 00001209: SWAP1 0000120a: DIV 0000120b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001220: AND 00001221: SWAP1 00001222: POP 00001223: PUSH1 0x00 00001225: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000123a: AND 0000123b: DUP2 0000123c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001251: AND 00001252: SUB 00001253: PUSH2 0x1291 00001256: JUMPI 00001257: PUSH1 0x40 00001259: MLOAD 0000125a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000127b: DUP2 0000127c: MSTORE 0000127d: PUSH1 0x04 0000127f: ADD 00001280: PUSH2 0x1288 00001283: SWAP1 00001284: PUSH2 0x3bf1 00001287: JUMP 00001288: JUMPDEST 00001289: PUSH1 0x40 0000128b: MLOAD 0000128c: DUP1 0000128d: SWAP2 0000128e: SUB 0000128f: SWAP1 00001290: REVERT 00001291: JUMPDEST 00001292: PUSH1 0x00 00001294: PUSH1 0x05 00001296: PUSH1 0x00 00001298: DUP4 00001299: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012ae: AND 000012af: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012c4: AND 000012c5: DUP2 000012c6: MSTORE 000012c7: PUSH1 0x20 000012c9: ADD 000012ca: SWAP1 000012cb: DUP2 000012cc: MSTORE 000012cd: PUSH1 0x20 000012cf: ADD 000012d0: PUSH1 0x00 000012d2: KECCAK256 000012d3: PUSH1 0x40 000012d5: MLOAD 000012d6: DUP1 000012d7: PUSH1 0xa0 000012d9: ADD 000012da: PUSH1 0x40 000012dc: MSTORE 000012dd: SWAP1 000012de: DUP2 000012df: PUSH1 0x00 000012e1: DUP3 000012e2: ADD 000012e3: PUSH1 0x00 000012e5: SWAP1 000012e6: SLOAD 000012e7: SWAP1 000012e8: PUSH2 0x0100 000012eb: EXP 000012ec: SWAP1 000012ed: DIV 000012ee: PUSH1 0xe0 000012f0: SHL 000012f1: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000130e: NOT 0000130f: AND 00001310: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000132d: NOT 0000132e: AND 0000132f: DUP2 00001330: MSTORE 00001331: PUSH1 0x20 00001333: ADD 00001334: PUSH1 0x01 00001336: DUP3 00001337: ADD 00001338: SLOAD 00001339: DUP2 0000133a: MSTORE 0000133b: PUSH1 0x20 0000133d: ADD 0000133e: PUSH1 0x02 00001340: DUP3 00001341: ADD 00001342: PUSH1 0x00 00001344: SWAP1 00001345: SLOAD 00001346: SWAP1 00001347: PUSH2 0x0100 0000134a: EXP 0000134b: SWAP1 0000134c: DIV 0000134d: PUSH1 0xff 0000134f: AND 00001350: PUSH1 0xff 00001352: AND 00001353: PUSH1 0xff 00001355: AND 00001356: DUP2 00001357: MSTORE 00001358: PUSH1 0x20 0000135a: ADD 0000135b: PUSH1 0x02 0000135d: DUP3 0000135e: ADD 0000135f: PUSH1 0x01 00001361: SWAP1 00001362: SLOAD 00001363: SWAP1 00001364: PUSH2 0x0100 00001367: EXP 00001368: SWAP1 00001369: DIV 0000136a: PUSH1 0xff 0000136c: AND 0000136d: PUSH1 0x03 0000136f: DUP2 00001370: GT 00001371: ISZERO 00001372: PUSH2 0x137e 00001375: JUMPI 00001376: PUSH2 0x137d 00001379: PUSH2 0x39a3 0000137c: JUMP 0000137d: JUMPDEST 0000137e: JUMPDEST 0000137f: PUSH1 0x03 00001381: DUP2 00001382: GT 00001383: ISZERO 00001384: PUSH2 0x1390 00001387: JUMPI 00001388: PUSH2 0x138f 0000138b: PUSH2 0x39a3 0000138e: JUMP 0000138f: JUMPDEST 00001390: JUMPDEST 00001391: DUP2 00001392: MSTORE 00001393: PUSH1 0x20 00001395: ADD 00001396: PUSH1 0x02 00001398: DUP3 00001399: ADD 0000139a: PUSH1 0x02 0000139c: SWAP1 0000139d: SLOAD 0000139e: SWAP1 0000139f: PUSH2 0x0100 000013a2: EXP 000013a3: SWAP1 000013a4: DIV 000013a5: PUSH1 0xff 000013a7: AND 000013a8: PUSH1 0x01 000013aa: DUP2 000013ab: GT 000013ac: ISZERO 000013ad: PUSH2 0x13b9 000013b0: JUMPI 000013b1: PUSH2 0x13b8 000013b4: PUSH2 0x39a3 000013b7: JUMP 000013b8: JUMPDEST 000013b9: JUMPDEST 000013ba: PUSH1 0x01 000013bc: DUP2 000013bd: GT 000013be: ISZERO 000013bf: PUSH2 0x13cb 000013c2: JUMPI 000013c3: PUSH2 0x13ca 000013c6: PUSH2 0x39a3 000013c9: JUMP 000013ca: JUMPDEST 000013cb: JUMPDEST 000013cc: DUP2 000013cd: MSTORE 000013ce: POP 000013cf: POP 000013d0: SWAP1 000013d1: POP 000013d2: PUSH1 0x00 000013d4: PUSH2 0x13e1 000013d7: DUP12 000013d8: DUP4 000013d9: PUSH1 0x40 000013db: ADD 000013dc: MLOAD 000013dd: PUSH2 0x2d29 000013e0: JUMP 000013e1: JUMPDEST 000013e2: SWAP1 000013e3: POP 000013e4: PUSH1 0x00 000013e6: PUSH1 0x04 000013e8: PUSH1 0x00 000013ea: SWAP1 000013eb: SLOAD 000013ec: SWAP1 000013ed: PUSH2 0x0100 000013f0: EXP 000013f1: SWAP1 000013f2: DIV 000013f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001408: AND 00001409: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000141e: AND 0000141f: CALLER 00001420: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001435: AND 00001436: SUB 00001437: PUSH2 0x1529 0000143a: JUMPI 0000143b: PUSH1 0x03 0000143d: PUSH1 0x00 0000143f: SWAP1 00001440: SLOAD 00001441: SWAP1 00001442: PUSH2 0x0100 00001445: EXP 00001446: SWAP1 00001447: DIV 00001448: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000145d: AND 0000145e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001473: AND 00001474: PUSH4 0x5c9edb87 00001479: DUP6 0000147a: PUSH1 0x40 0000147c: MLOAD 0000147d: DUP3 0000147e: PUSH4 0xffffffff 00001483: AND 00001484: PUSH1 0xe0 00001486: SHL 00001487: DUP2 00001488: MSTORE 00001489: PUSH1 0x04 0000148b: ADD 0000148c: PUSH2 0x1495 0000148f: SWAP2 00001490: SWAP1 00001491: PUSH2 0x3411 00001494: JUMP 00001495: JUMPDEST 00001496: PUSH1 0x20 00001498: PUSH1 0x40 0000149a: MLOAD 0000149b: DUP1 0000149c: DUP4 0000149d: SUB 0000149e: DUP2 0000149f: DUP7 000014a0: GAS 000014a1: STATICCALL 000014a2: ISZERO 000014a3: DUP1 000014a4: ISZERO 000014a5: PUSH2 0x14b2 000014a8: JUMPI 000014a9: RETURNDATASIZE 000014aa: PUSH1 0x00 000014ac: DUP1 000014ad: RETURNDATACOPY 000014ae: RETURNDATASIZE 000014af: PUSH1 0x00 000014b1: REVERT 000014b2: JUMPDEST 000014b3: POP 000014b4: POP 000014b5: POP 000014b6: POP 000014b7: PUSH1 0x40 000014b9: MLOAD 000014ba: RETURNDATASIZE 000014bb: PUSH1 0x1f 000014bd: NOT 000014be: PUSH1 0x1f 000014c0: DUP3 000014c1: ADD 000014c2: AND 000014c3: DUP3 000014c4: ADD 000014c5: DUP1 000014c6: PUSH1 0x40 000014c8: MSTORE 000014c9: POP 000014ca: DUP2 000014cb: ADD 000014cc: SWAP1 000014cd: PUSH2 0x14d6 000014d0: SWAP2 000014d1: SWAP1 000014d2: PUSH2 0x3f31 000014d5: JUMP 000014d6: JUMPDEST 000014d7: SWAP1 000014d8: POP 000014d9: DUP1 000014da: DUP3 000014db: GT 000014dc: PUSH2 0x151a 000014df: JUMPI 000014e0: PUSH1 0x40 000014e2: MLOAD 000014e3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001504: DUP2 00001505: MSTORE 00001506: PUSH1 0x04 00001508: ADD 00001509: PUSH2 0x1511 0000150c: SWAP1 0000150d: PUSH2 0x3faa 00001510: JUMP 00001511: JUMPDEST 00001512: PUSH1 0x40 00001514: MLOAD 00001515: DUP1 00001516: SWAP2 00001517: SUB 00001518: SWAP1 00001519: REVERT 0000151a: JUMPDEST 0000151b: DUP1 0000151c: DUP3 0000151d: PUSH2 0x1526 00001520: SWAP2 00001521: SWAP1 00001522: PUSH2 0x3ff9 00001525: JUMP 00001526: JUMPDEST 00001527: SWAP2 00001528: POP 00001529: JUMPDEST 0000152a: PUSH1 0x00 0000152c: PUSH1 0x03 0000152e: DUP2 0000152f: GT 00001530: ISZERO 00001531: PUSH2 0x153d 00001534: JUMPI 00001535: PUSH2 0x153c 00001538: PUSH2 0x39a3 0000153b: JUMP 0000153c: JUMPDEST 0000153d: JUMPDEST 0000153e: DUP4 0000153f: PUSH1 0x60 00001541: ADD 00001542: MLOAD 00001543: PUSH1 0x03 00001545: DUP2 00001546: GT 00001547: ISZERO 00001548: PUSH2 0x1554 0000154b: JUMPI 0000154c: PUSH2 0x1553 0000154f: PUSH2 0x39a3 00001552: JUMP 00001553: JUMPDEST 00001554: JUMPDEST 00001555: SUB 00001556: PUSH2 0x1618 00001559: JUMPI 0000155a: DUP13 0000155b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001570: AND 00001571: PUSH2 0x08fc 00001574: DUP4 00001575: SWAP1 00001576: DUP2 00001577: ISZERO 00001578: MUL 00001579: SWAP1 0000157a: PUSH1 0x40 0000157c: MLOAD 0000157d: PUSH1 0x00 0000157f: PUSH1 0x40 00001581: MLOAD 00001582: DUP1 00001583: DUP4 00001584: SUB 00001585: DUP2 00001586: DUP6 00001587: DUP9 00001588: DUP9 00001589: CALL 0000158a: SWAP4 0000158b: POP 0000158c: POP 0000158d: POP 0000158e: POP 0000158f: ISZERO 00001590: DUP1 00001591: ISZERO 00001592: PUSH2 0x159f 00001595: JUMPI 00001596: RETURNDATASIZE 00001597: PUSH1 0x00 00001599: DUP1 0000159a: RETURNDATACOPY 0000159b: RETURNDATASIZE 0000159c: PUSH1 0x00 0000159e: REVERT 0000159f: JUMPDEST 000015a0: POP 000015a1: PUSH1 0x00 000015a3: DUP2 000015a4: GT 000015a5: ISZERO 000015a6: PUSH2 0x1613 000015a9: JUMPI 000015aa: PUSH1 0x02 000015ac: PUSH1 0x00 000015ae: SWAP1 000015af: SLOAD 000015b0: SWAP1 000015b1: PUSH2 0x0100 000015b4: EXP 000015b5: SWAP1 000015b6: DIV 000015b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015cc: AND 000015cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015e2: AND 000015e3: PUSH2 0x08fc 000015e6: DUP3 000015e7: SWAP1 000015e8: DUP2 000015e9: ISZERO 000015ea: MUL 000015eb: SWAP1 000015ec: PUSH1 0x40 000015ee: MLOAD 000015ef: PUSH1 0x00 000015f1: PUSH1 0x40 000015f3: MLOAD 000015f4: DUP1 000015f5: DUP4 000015f6: SUB 000015f7: DUP2 000015f8: DUP6 000015f9: DUP9 000015fa: DUP9 000015fb: CALL 000015fc: SWAP4 000015fd: POP 000015fe: POP 000015ff: POP 00001600: POP 00001601: ISZERO 00001602: DUP1 00001603: ISZERO 00001604: PUSH2 0x1611 00001607: JUMPI 00001608: RETURNDATASIZE 00001609: PUSH1 0x00 0000160b: DUP1 0000160c: RETURNDATACOPY 0000160d: RETURNDATASIZE 0000160e: PUSH1 0x00 00001610: REVERT 00001611: JUMPDEST 00001612: POP 00001613: JUMPDEST 00001614: PUSH2 0x1943 00001617: JUMP 00001618: JUMPDEST 00001619: PUSH1 0x01 0000161b: PUSH1 0x03 0000161d: DUP2 0000161e: GT 0000161f: ISZERO 00001620: PUSH2 0x162c 00001623: JUMPI 00001624: PUSH2 0x162b 00001627: PUSH2 0x39a3 0000162a: JUMP 0000162b: JUMPDEST 0000162c: JUMPDEST 0000162d: DUP4 0000162e: PUSH1 0x60 00001630: ADD 00001631: MLOAD 00001632: PUSH1 0x03 00001634: DUP2 00001635: GT 00001636: ISZERO 00001637: PUSH2 0x1643 0000163a: JUMPI 0000163b: PUSH2 0x1642 0000163e: PUSH2 0x39a3 00001641: JUMP 00001642: JUMPDEST 00001643: JUMPDEST 00001644: SUB 00001645: PUSH2 0x16cf 00001648: JUMPI 00001649: PUSH2 0x1673 0000164c: DUP14 0000164d: DUP4 0000164e: DUP7 0000164f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001664: AND 00001665: PUSH2 0x2da9 00001668: SWAP1 00001669: SWAP3 0000166a: SWAP2 0000166b: SWAP1 0000166c: PUSH4 0xffffffff 00001671: AND 00001672: JUMP 00001673: JUMPDEST 00001674: PUSH1 0x00 00001676: DUP2 00001677: GT 00001678: ISZERO 00001679: PUSH2 0x16ca 0000167c: JUMPI 0000167d: PUSH2 0x16c9 00001680: PUSH1 0x02 00001682: PUSH1 0x00 00001684: SWAP1 00001685: SLOAD 00001686: SWAP1 00001687: PUSH2 0x0100 0000168a: EXP 0000168b: SWAP1 0000168c: DIV 0000168d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016a2: AND 000016a3: DUP3 000016a4: DUP7 000016a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016ba: AND 000016bb: PUSH2 0x2da9 000016be: SWAP1 000016bf: SWAP3 000016c0: SWAP2 000016c1: SWAP1 000016c2: PUSH4 0xffffffff 000016c7: AND 000016c8: JUMP 000016c9: JUMPDEST 000016ca: JUMPDEST 000016cb: PUSH2 0x1942 000016ce: JUMP 000016cf: JUMPDEST 000016d0: PUSH1 0x03 000016d2: DUP1 000016d3: DUP2 000016d4: GT 000016d5: ISZERO 000016d6: PUSH2 0x16e2 000016d9: JUMPI 000016da: PUSH2 0x16e1 000016dd: PUSH2 0x39a3 000016e0: JUMP 000016e1: JUMPDEST 000016e2: JUMPDEST 000016e3: DUP4 000016e4: PUSH1 0x60 000016e6: ADD 000016e7: MLOAD 000016e8: PUSH1 0x03 000016ea: DUP2 000016eb: GT 000016ec: ISZERO 000016ed: PUSH2 0x16f9 000016f0: JUMPI 000016f1: PUSH2 0x16f8 000016f4: PUSH2 0x39a3 000016f7: JUMP 000016f8: JUMPDEST 000016f9: JUMPDEST 000016fa: SUB 000016fb: PUSH2 0x1809 000016fe: JUMPI 000016ff: DUP4 00001700: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001715: AND 00001716: PUSH4 0x40c10f19 0000171b: DUP15 0000171c: DUP5 0000171d: PUSH1 0x40 0000171f: MLOAD 00001720: DUP4 00001721: PUSH4 0xffffffff 00001726: AND 00001727: PUSH1 0xe0 00001729: SHL 0000172a: DUP2 0000172b: MSTORE 0000172c: PUSH1 0x04 0000172e: ADD 0000172f: PUSH2 0x1739 00001732: SWAP3 00001733: SWAP2 00001734: SWAP1 00001735: PUSH2 0x3df6 00001738: JUMP 00001739: JUMPDEST 0000173a: PUSH1 0x00 0000173c: PUSH1 0x40 0000173e: MLOAD 0000173f: DUP1 00001740: DUP4 00001741: SUB 00001742: DUP2 00001743: PUSH1 0x00 00001745: DUP8 00001746: DUP1 00001747: EXTCODESIZE 00001748: ISZERO 00001749: DUP1 0000174a: ISZERO 0000174b: PUSH2 0x1753 0000174e: JUMPI 0000174f: PUSH1 0x00 00001751: DUP1 00001752: REVERT 00001753: JUMPDEST 00001754: POP 00001755: GAS 00001756: CALL 00001757: ISZERO 00001758: DUP1 00001759: ISZERO 0000175a: PUSH2 0x1767 0000175d: JUMPI 0000175e: RETURNDATASIZE 0000175f: PUSH1 0x00 00001761: DUP1 00001762: RETURNDATACOPY 00001763: RETURNDATASIZE 00001764: PUSH1 0x00 00001766: REVERT 00001767: JUMPDEST 00001768: POP 00001769: POP 0000176a: POP 0000176b: POP 0000176c: PUSH1 0x00 0000176e: DUP2 0000176f: GT 00001770: ISZERO 00001771: PUSH2 0x1804 00001774: JUMPI 00001775: DUP4 00001776: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000178b: AND 0000178c: PUSH4 0x40c10f19 00001791: PUSH1 0x02 00001793: PUSH1 0x00 00001795: SWAP1 00001796: SLOAD 00001797: SWAP1 00001798: PUSH2 0x0100 0000179b: EXP 0000179c: SWAP1 0000179d: DIV 0000179e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017b3: AND 000017b4: DUP4 000017b5: PUSH1 0x40 000017b7: MLOAD 000017b8: DUP4 000017b9: PUSH4 0xffffffff 000017be: AND 000017bf: PUSH1 0xe0 000017c1: SHL 000017c2: DUP2 000017c3: MSTORE 000017c4: PUSH1 0x04 000017c6: ADD 000017c7: PUSH2 0x17d1 000017ca: SWAP3 000017cb: SWAP2 000017cc: SWAP1 000017cd: PUSH2 0x3df6 000017d0: JUMP 000017d1: JUMPDEST 000017d2: PUSH1 0x00 000017d4: PUSH1 0x40 000017d6: MLOAD 000017d7: DUP1 000017d8: DUP4 000017d9: SUB 000017da: DUP2 000017db: PUSH1 0x00 000017dd: DUP8 000017de: DUP1 000017df: EXTCODESIZE 000017e0: ISZERO 000017e1: DUP1 000017e2: ISZERO 000017e3: PUSH2 0x17eb 000017e6: JUMPI 000017e7: PUSH1 0x00 000017e9: DUP1 000017ea: REVERT 000017eb: JUMPDEST 000017ec: POP 000017ed: GAS 000017ee: CALL 000017ef: ISZERO 000017f0: DUP1 000017f1: ISZERO 000017f2: PUSH2 0x17ff 000017f5: JUMPI 000017f6: RETURNDATASIZE 000017f7: PUSH1 0x00 000017f9: DUP1 000017fa: RETURNDATACOPY 000017fb: RETURNDATASIZE 000017fc: PUSH1 0x00 000017fe: REVERT 000017ff: JUMPDEST 00001800: POP 00001801: POP 00001802: POP 00001803: POP 00001804: JUMPDEST 00001805: PUSH2 0x1941 00001808: JUMP 00001809: JUMPDEST 0000180a: PUSH1 0x02 0000180c: PUSH1 0x03 0000180e: DUP2 0000180f: GT 00001810: ISZERO 00001811: PUSH2 0x181d 00001814: JUMPI 00001815: PUSH2 0x181c 00001818: PUSH2 0x39a3 0000181b: JUMP 0000181c: JUMPDEST 0000181d: JUMPDEST 0000181e: DUP4 0000181f: PUSH1 0x60 00001821: ADD 00001822: MLOAD 00001823: PUSH1 0x03 00001825: DUP2 00001826: GT 00001827: ISZERO 00001828: PUSH2 0x1834 0000182b: JUMPI 0000182c: PUSH2 0x1833 0000182f: PUSH2 0x39a3 00001832: JUMP 00001833: JUMPDEST 00001834: JUMPDEST 00001835: SUB 00001836: PUSH2 0x1940 00001839: JUMPI 0000183a: DUP4 0000183b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001850: AND 00001851: PUSH4 0x40c10f19 00001856: DUP15 00001857: DUP5 00001858: PUSH1 0x40 0000185a: MLOAD 0000185b: DUP4 0000185c: PUSH4 0xffffffff 00001861: AND 00001862: PUSH1 0xe0 00001864: SHL 00001865: DUP2 00001866: MSTORE 00001867: PUSH1 0x04 00001869: ADD 0000186a: PUSH2 0x1874 0000186d: SWAP3 0000186e: SWAP2 0000186f: SWAP1 00001870: PUSH2 0x3df6 00001873: JUMP 00001874: JUMPDEST 00001875: PUSH1 0x00 00001877: PUSH1 0x40 00001879: MLOAD 0000187a: DUP1 0000187b: DUP4 0000187c: SUB 0000187d: DUP2 0000187e: PUSH1 0x00 00001880: DUP8 00001881: DUP1 00001882: EXTCODESIZE 00001883: ISZERO 00001884: DUP1 00001885: ISZERO 00001886: PUSH2 0x188e 00001889: JUMPI 0000188a: PUSH1 0x00 0000188c: DUP1 0000188d: REVERT 0000188e: JUMPDEST 0000188f: POP 00001890: GAS 00001891: CALL 00001892: ISZERO 00001893: DUP1 00001894: ISZERO 00001895: PUSH2 0x18a2 00001898: JUMPI 00001899: RETURNDATASIZE 0000189a: PUSH1 0x00 0000189c: DUP1 0000189d: RETURNDATACOPY 0000189e: RETURNDATASIZE 0000189f: PUSH1 0x00 000018a1: REVERT 000018a2: JUMPDEST 000018a3: POP 000018a4: POP 000018a5: POP 000018a6: POP 000018a7: PUSH1 0x00 000018a9: DUP2 000018aa: GT 000018ab: ISZERO 000018ac: PUSH2 0x193f 000018af: JUMPI 000018b0: DUP4 000018b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018c6: AND 000018c7: PUSH4 0x40c10f19 000018cc: PUSH1 0x02 000018ce: PUSH1 0x00 000018d0: SWAP1 000018d1: SLOAD 000018d2: SWAP1 000018d3: PUSH2 0x0100 000018d6: EXP 000018d7: SWAP1 000018d8: DIV 000018d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018ee: AND 000018ef: DUP4 000018f0: PUSH1 0x40 000018f2: MLOAD 000018f3: DUP4 000018f4: PUSH4 0xffffffff 000018f9: AND 000018fa: PUSH1 0xe0 000018fc: SHL 000018fd: DUP2 000018fe: MSTORE 000018ff: PUSH1 0x04 00001901: ADD 00001902: PUSH2 0x190c 00001905: SWAP3 00001906: SWAP2 00001907: SWAP1 00001908: PUSH2 0x3df6 0000190b: JUMP 0000190c: JUMPDEST 0000190d: PUSH1 0x00 0000190f: PUSH1 0x40 00001911: MLOAD 00001912: DUP1 00001913: DUP4 00001914: SUB 00001915: DUP2 00001916: PUSH1 0x00 00001918: DUP8 00001919: DUP1 0000191a: EXTCODESIZE 0000191b: ISZERO 0000191c: DUP1 0000191d: ISZERO 0000191e: PUSH2 0x1926 00001921: JUMPI 00001922: PUSH1 0x00 00001924: DUP1 00001925: REVERT 00001926: JUMPDEST 00001927: POP 00001928: GAS 00001929: CALL 0000192a: ISZERO 0000192b: DUP1 0000192c: ISZERO 0000192d: PUSH2 0x193a 00001930: JUMPI 00001931: RETURNDATASIZE 00001932: PUSH1 0x00 00001934: DUP1 00001935: RETURNDATACOPY 00001936: RETURNDATASIZE 00001937: PUSH1 0x00 00001939: REVERT 0000193a: JUMPDEST 0000193b: POP 0000193c: POP 0000193d: POP 0000193e: POP 0000193f: JUMPDEST 00001940: JUMPDEST 00001941: JUMPDEST 00001942: JUMPDEST 00001943: JUMPDEST 00001944: DUP14 00001945: PUSH16 0xffffffffffffffffffffffffffffffff 00001956: AND 00001957: DUP14 00001958: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000196d: AND 0000196e: PUSH32 0xeeff8dc309b75f785752dd67594b2d8a3a9fd4ff6ecd65fcfe670cee0d851ce4 0000198f: DUP7 00001990: DUP6 00001991: DUP16 00001992: PUSH1 0x40 00001994: MLOAD 00001995: PUSH2 0x19a0 00001998: SWAP4 00001999: SWAP3 0000199a: SWAP2 0000199b: SWAP1 0000199c: PUSH2 0x402d 0000199f: JUMP 000019a0: JUMPDEST 000019a1: PUSH1 0x40 000019a3: MLOAD 000019a4: DUP1 000019a5: SWAP2 000019a6: SUB 000019a7: SWAP1 000019a8: LOG3 000019a9: POP 000019aa: POP 000019ab: POP 000019ac: POP 000019ad: POP 000019ae: POP 000019af: POP 000019b0: POP 000019b1: POP 000019b2: POP 000019b3: POP 000019b4: POP 000019b5: POP 000019b6: POP 000019b7: JUMP 000019b8: JUMPDEST 000019b9: PUSH1 0x05 000019bb: PUSH1 0x20 000019bd: MSTORE 000019be: DUP1 000019bf: PUSH1 0x00 000019c1: MSTORE 000019c2: PUSH1 0x40 000019c4: PUSH1 0x00 000019c6: KECCAK256 000019c7: PUSH1 0x00 000019c9: SWAP2 000019ca: POP 000019cb: SWAP1 000019cc: POP 000019cd: DUP1 000019ce: PUSH1 0x00 000019d0: ADD 000019d1: PUSH1 0x00 000019d3: SWAP1 000019d4: SLOAD 000019d5: SWAP1 000019d6: PUSH2 0x0100 000019d9: EXP 000019da: SWAP1 000019db: DIV 000019dc: PUSH1 0xe0 000019de: SHL 000019df: SWAP1 000019e0: DUP1 000019e1: PUSH1 0x01 000019e3: ADD 000019e4: SLOAD 000019e5: SWAP1 000019e6: DUP1 000019e7: PUSH1 0x02 000019e9: ADD 000019ea: PUSH1 0x00 000019ec: SWAP1 000019ed: SLOAD 000019ee: SWAP1 000019ef: PUSH2 0x0100 000019f2: EXP 000019f3: SWAP1 000019f4: DIV 000019f5: PUSH1 0xff 000019f7: AND 000019f8: SWAP1 000019f9: DUP1 000019fa: PUSH1 0x02 000019fc: ADD 000019fd: PUSH1 0x01 000019ff: SWAP1 00001a00: SLOAD 00001a01: SWAP1 00001a02: PUSH2 0x0100 00001a05: EXP 00001a06: SWAP1 00001a07: DIV 00001a08: PUSH1 0xff 00001a0a: AND 00001a0b: SWAP1 00001a0c: DUP1 00001a0d: PUSH1 0x02 00001a0f: ADD 00001a10: PUSH1 0x02 00001a12: SWAP1 00001a13: SLOAD 00001a14: SWAP1 00001a15: PUSH2 0x0100 00001a18: EXP 00001a19: SWAP1 00001a1a: DIV 00001a1b: PUSH1 0xff 00001a1d: AND 00001a1e: SWAP1 00001a1f: POP 00001a20: DUP6 00001a21: JUMP 00001a22: JUMPDEST 00001a23: PUSH32 0x593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a0 00001a44: PUSH2 0x1a54 00001a47: DUP2 00001a48: PUSH2 0x1a4f 00001a4b: PUSH2 0x264d 00001a4e: JUMP 00001a4f: JUMPDEST 00001a50: PUSH2 0x2655 00001a53: JUMP 00001a54: JUMPDEST 00001a55: PUSH1 0x00 00001a57: DUP1 00001a58: SHL 00001a59: PUSH1 0x05 00001a5b: PUSH1 0x00 00001a5d: DUP6 00001a5e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a73: AND 00001a74: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a89: AND 00001a8a: DUP2 00001a8b: MSTORE 00001a8c: PUSH1 0x20 00001a8e: ADD 00001a8f: SWAP1 00001a90: DUP2 00001a91: MSTORE 00001a92: PUSH1 0x20 00001a94: ADD 00001a95: PUSH1 0x00 00001a97: KECCAK256 00001a98: PUSH1 0x01 00001a9a: ADD 00001a9b: SLOAD 00001a9c: EQ 00001a9d: DUP1 00001a9e: ISZERO 00001a9f: PUSH2 0x1b56 00001aa2: JUMPI 00001aa3: POP 00001aa4: PUSH1 0x00 00001aa6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001abb: AND 00001abc: PUSH1 0x06 00001abe: PUSH1 0x00 00001ac0: DUP8 00001ac1: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001ade: NOT 00001adf: AND 00001ae0: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001afd: NOT 00001afe: AND 00001aff: DUP2 00001b00: MSTORE 00001b01: PUSH1 0x20 00001b03: ADD 00001b04: SWAP1 00001b05: DUP2 00001b06: MSTORE 00001b07: PUSH1 0x20 00001b09: ADD 00001b0a: PUSH1 0x00 00001b0c: KECCAK256 00001b0d: PUSH1 0x00 00001b0f: DUP7 00001b10: DUP2 00001b11: MSTORE 00001b12: PUSH1 0x20 00001b14: ADD 00001b15: SWAP1 00001b16: DUP2 00001b17: MSTORE 00001b18: PUSH1 0x20 00001b1a: ADD 00001b1b: PUSH1 0x00 00001b1d: KECCAK256 00001b1e: PUSH1 0x00 00001b20: SWAP1 00001b21: SLOAD 00001b22: SWAP1 00001b23: PUSH2 0x0100 00001b26: EXP 00001b27: SWAP1 00001b28: DIV 00001b29: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b3e: AND 00001b3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b54: AND 00001b55: EQ 00001b56: JUMPDEST 00001b57: PUSH2 0x1b95 00001b5a: JUMPI 00001b5b: PUSH1 0x40 00001b5d: MLOAD 00001b5e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001b7f: DUP2 00001b80: MSTORE 00001b81: PUSH1 0x04 00001b83: ADD 00001b84: PUSH2 0x1b8c 00001b87: SWAP1 00001b88: PUSH2 0x40b0 00001b8b: JUMP 00001b8c: JUMPDEST 00001b8d: PUSH1 0x40 00001b8f: MLOAD 00001b90: DUP1 00001b91: SWAP2 00001b92: SUB 00001b93: SWAP1 00001b94: REVERT 00001b95: JUMPDEST 00001b96: PUSH1 0x00 00001b98: DUP4 00001b99: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bae: AND 00001baf: PUSH4 0x313ce567 00001bb4: PUSH1 0x40 00001bb6: MLOAD 00001bb7: DUP2 00001bb8: PUSH4 0xffffffff 00001bbd: AND 00001bbe: PUSH1 0xe0 00001bc0: SHL 00001bc1: DUP2 00001bc2: MSTORE 00001bc3: PUSH1 0x04 00001bc5: ADD 00001bc6: PUSH1 0x20 00001bc8: PUSH1 0x40 00001bca: MLOAD 00001bcb: DUP1 00001bcc: DUP4 00001bcd: SUB 00001bce: DUP2 00001bcf: DUP7 00001bd0: GAS 00001bd1: STATICCALL 00001bd2: ISZERO 00001bd3: DUP1 00001bd4: ISZERO 00001bd5: PUSH2 0x1be2 00001bd8: JUMPI 00001bd9: RETURNDATASIZE 00001bda: PUSH1 0x00 00001bdc: DUP1 00001bdd: RETURNDATACOPY 00001bde: RETURNDATASIZE 00001bdf: PUSH1 0x00 00001be1: REVERT 00001be2: JUMPDEST 00001be3: POP 00001be4: POP 00001be5: POP 00001be6: POP 00001be7: PUSH1 0x40 00001be9: MLOAD 00001bea: RETURNDATASIZE 00001beb: PUSH1 0x1f 00001bed: NOT 00001bee: PUSH1 0x1f 00001bf0: DUP3 00001bf1: ADD 00001bf2: AND 00001bf3: DUP3 00001bf4: ADD 00001bf5: DUP1 00001bf6: PUSH1 0x40 00001bf8: MSTORE 00001bf9: POP 00001bfa: DUP2 00001bfb: ADD 00001bfc: SWAP1 00001bfd: PUSH2 0x1c06 00001c00: SWAP2 00001c01: SWAP1 00001c02: PUSH2 0x40fc 00001c05: JUMP 00001c06: JUMPDEST 00001c07: SWAP1 00001c08: POP 00001c09: DUP4 00001c0a: PUSH1 0x06 00001c0c: PUSH1 0x00 00001c0e: DUP9 00001c0f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001c2c: NOT 00001c2d: AND 00001c2e: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001c4b: NOT 00001c4c: AND 00001c4d: DUP2 00001c4e: MSTORE 00001c4f: PUSH1 0x20 00001c51: ADD 00001c52: SWAP1 00001c53: DUP2 00001c54: MSTORE 00001c55: PUSH1 0x20 00001c57: ADD 00001c58: PUSH1 0x00 00001c5a: KECCAK256 00001c5b: PUSH1 0x00 00001c5d: DUP8 00001c5e: DUP2 00001c5f: MSTORE 00001c60: PUSH1 0x20 00001c62: ADD 00001c63: SWAP1 00001c64: DUP2 00001c65: MSTORE 00001c66: PUSH1 0x20 00001c68: ADD 00001c69: PUSH1 0x00 00001c6b: KECCAK256 00001c6c: PUSH1 0x00 00001c6e: PUSH2 0x0100 00001c71: EXP 00001c72: DUP2 00001c73: SLOAD 00001c74: DUP2 00001c75: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c8a: MUL 00001c8b: NOT 00001c8c: AND 00001c8d: SWAP1 00001c8e: DUP4 00001c8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ca4: AND 00001ca5: MUL 00001ca6: OR 00001ca7: SWAP1 00001ca8: SSTORE 00001ca9: POP 00001caa: PUSH1 0x40 00001cac: MLOAD 00001cad: DUP1 00001cae: PUSH1 0xa0 00001cb0: ADD 00001cb1: PUSH1 0x40 00001cb3: MSTORE 00001cb4: DUP1 00001cb5: DUP8 00001cb6: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001cd3: NOT 00001cd4: AND 00001cd5: DUP2 00001cd6: MSTORE 00001cd7: PUSH1 0x20 00001cd9: ADD 00001cda: DUP7 00001cdb: DUP2 00001cdc: MSTORE 00001cdd: PUSH1 0x20 00001cdf: ADD 00001ce0: DUP3 00001ce1: PUSH1 0xff 00001ce3: AND 00001ce4: DUP2 00001ce5: MSTORE 00001ce6: PUSH1 0x20 00001ce8: ADD 00001ce9: DUP5 00001cea: PUSH1 0x03 00001cec: DUP2 00001ced: GT 00001cee: ISZERO 00001cef: PUSH2 0x1cfb 00001cf2: JUMPI 00001cf3: PUSH2 0x1cfa 00001cf6: PUSH2 0x39a3 00001cf9: JUMP 00001cfa: JUMPDEST 00001cfb: JUMPDEST 00001cfc: DUP2 00001cfd: MSTORE 00001cfe: PUSH1 0x20 00001d00: ADD 00001d01: PUSH1 0x01 00001d03: DUP1 00001d04: DUP2 00001d05: GT 00001d06: ISZERO 00001d07: PUSH2 0x1d13 00001d0a: JUMPI 00001d0b: PUSH2 0x1d12 00001d0e: PUSH2 0x39a3 00001d11: JUMP 00001d12: JUMPDEST 00001d13: JUMPDEST 00001d14: DUP2 00001d15: MSTORE 00001d16: POP 00001d17: PUSH1 0x05 00001d19: PUSH1 0x00 00001d1b: DUP7 00001d1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d31: AND 00001d32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d47: AND 00001d48: DUP2 00001d49: MSTORE 00001d4a: PUSH1 0x20 00001d4c: ADD 00001d4d: SWAP1 00001d4e: DUP2 00001d4f: MSTORE 00001d50: PUSH1 0x20 00001d52: ADD 00001d53: PUSH1 0x00 00001d55: KECCAK256 00001d56: PUSH1 0x00 00001d58: DUP3 00001d59: ADD 00001d5a: MLOAD 00001d5b: DUP2 00001d5c: PUSH1 0x00 00001d5e: ADD 00001d5f: PUSH1 0x00 00001d61: PUSH2 0x0100 00001d64: EXP 00001d65: DUP2 00001d66: SLOAD 00001d67: DUP2 00001d68: PUSH4 0xffffffff 00001d6d: MUL 00001d6e: NOT 00001d6f: AND 00001d70: SWAP1 00001d71: DUP4 00001d72: PUSH1 0xe0 00001d74: SHR 00001d75: MUL 00001d76: OR 00001d77: SWAP1 00001d78: SSTORE 00001d79: POP 00001d7a: PUSH1 0x20 00001d7c: DUP3 00001d7d: ADD 00001d7e: MLOAD 00001d7f: DUP2 00001d80: PUSH1 0x01 00001d82: ADD 00001d83: SSTORE 00001d84: PUSH1 0x40 00001d86: DUP3 00001d87: ADD 00001d88: MLOAD 00001d89: DUP2 00001d8a: PUSH1 0x02 00001d8c: ADD 00001d8d: PUSH1 0x00 00001d8f: PUSH2 0x0100 00001d92: EXP 00001d93: DUP2 00001d94: SLOAD 00001d95: DUP2 00001d96: PUSH1 0xff 00001d98: MUL 00001d99: NOT 00001d9a: AND 00001d9b: SWAP1 00001d9c: DUP4 00001d9d: PUSH1 0xff 00001d9f: AND 00001da0: MUL 00001da1: OR 00001da2: SWAP1 00001da3: SSTORE 00001da4: POP 00001da5: PUSH1 0x60 00001da7: DUP3 00001da8: ADD 00001da9: MLOAD 00001daa: DUP2 00001dab: PUSH1 0x02 00001dad: ADD 00001dae: PUSH1 0x01 00001db0: PUSH2 0x0100 00001db3: EXP 00001db4: DUP2 00001db5: SLOAD 00001db6: DUP2 00001db7: PUSH1 0xff 00001db9: MUL 00001dba: NOT 00001dbb: AND 00001dbc: SWAP1 00001dbd: DUP4 00001dbe: PUSH1 0x03 00001dc0: DUP2 00001dc1: GT 00001dc2: ISZERO 00001dc3: PUSH2 0x1dcf 00001dc6: JUMPI 00001dc7: PUSH2 0x1dce 00001dca: PUSH2 0x39a3 00001dcd: JUMP 00001dce: JUMPDEST 00001dcf: JUMPDEST 00001dd0: MUL 00001dd1: OR 00001dd2: SWAP1 00001dd3: SSTORE 00001dd4: POP 00001dd5: PUSH1 0x80 00001dd7: DUP3 00001dd8: ADD 00001dd9: MLOAD 00001dda: DUP2 00001ddb: PUSH1 0x02 00001ddd: ADD 00001dde: PUSH1 0x02 00001de0: PUSH2 0x0100 00001de3: EXP 00001de4: DUP2 00001de5: SLOAD 00001de6: DUP2 00001de7: PUSH1 0xff 00001de9: MUL 00001dea: NOT 00001deb: AND 00001dec: SWAP1 00001ded: DUP4 00001dee: PUSH1 0x01 00001df0: DUP2 00001df1: GT 00001df2: ISZERO 00001df3: PUSH2 0x1dff 00001df6: JUMPI 00001df7: PUSH2 0x1dfe 00001dfa: PUSH2 0x39a3 00001dfd: JUMP 00001dfe: JUMPDEST 00001dff: JUMPDEST 00001e00: MUL 00001e01: OR 00001e02: SWAP1 00001e03: SSTORE 00001e04: POP 00001e05: SWAP1 00001e06: POP 00001e07: POP 00001e08: POP 00001e09: POP 00001e0a: POP 00001e0b: POP 00001e0c: POP 00001e0d: POP 00001e0e: JUMP 00001e0f: JUMPDEST 00001e10: PUSH1 0x02 00001e12: PUSH1 0x00 00001e14: SWAP1 00001e15: SLOAD 00001e16: SWAP1 00001e17: PUSH2 0x0100 00001e1a: EXP 00001e1b: SWAP1 00001e1c: DIV 00001e1d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e32: AND 00001e33: DUP2 00001e34: JUMP 00001e35: JUMPDEST 00001e36: PUSH32 0x77eacfcb6207f26b72edc4f15c48e5518843e7e98ccfd7e0d6c16f92ed1fef8d 00001e57: PUSH2 0x1e67 00001e5a: DUP2 00001e5b: PUSH2 0x1e62 00001e5e: PUSH2 0x264d 00001e61: JUMP 00001e62: JUMPDEST 00001e63: PUSH2 0x2655 00001e66: JUMP 00001e67: JUMPDEST 00001e68: DUP2 00001e69: PUSH1 0x04 00001e6b: PUSH1 0x00 00001e6d: PUSH2 0x0100 00001e70: EXP 00001e71: DUP2 00001e72: SLOAD 00001e73: DUP2 00001e74: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e89: MUL 00001e8a: NOT 00001e8b: AND 00001e8c: SWAP1 00001e8d: DUP4 00001e8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ea3: AND 00001ea4: MUL 00001ea5: OR 00001ea6: SWAP1 00001ea7: SSTORE 00001ea8: POP 00001ea9: POP 00001eaa: POP 00001eab: JUMP 00001eac: JUMPDEST 00001ead: PUSH2 0x1eb5 00001eb0: DUP3 00001eb1: PUSH2 0x090b 00001eb4: JUMP 00001eb5: JUMPDEST 00001eb6: PUSH2 0x1ec6 00001eb9: DUP2 00001eba: PUSH2 0x1ec1 00001ebd: PUSH2 0x264d 00001ec0: JUMP 00001ec1: JUMPDEST 00001ec2: PUSH2 0x2655 00001ec5: JUMP 00001ec6: JUMPDEST 00001ec7: PUSH2 0x1ed0 00001eca: DUP4 00001ecb: DUP4 00001ecc: PUSH2 0x27d2 00001ecf: JUMP 00001ed0: JUMPDEST 00001ed1: POP 00001ed2: POP 00001ed3: POP 00001ed4: JUMP 00001ed5: JUMPDEST 00001ed6: PUSH32 0x593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a0 00001ef7: DUP2 00001ef8: JUMP 00001ef9: JUMPDEST 00001efa: PUSH32 0x55ca0725c70a9ecebe86dd2b8b3a414983f6cb638e1a0fa17c64bbdd59b4d4c1 00001f1b: DUP2 00001f1c: JUMP 00001f1d: JUMPDEST 00001f1e: PUSH32 0x593fb413ec9f9ad9f53f309300b515310ff474591268ca3cbe9752fd88eb76a0 00001f3f: PUSH2 0x1f4f 00001f42: DUP2 00001f43: PUSH2 0x1f4a 00001f46: PUSH2 0x264d 00001f49: JUMP 00001f4a: JUMPDEST 00001f4b: PUSH2 0x2655 00001f4e: JUMP 00001f4f: JUMPDEST 00001f50: PUSH1 0x00 00001f52: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f67: AND 00001f68: DUP3 00001f69: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f7e: AND 00001f7f: SUB 00001f80: PUSH2 0x1fbe 00001f83: JUMPI 00001f84: PUSH1 0x40 00001f86: MLOAD 00001f87: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001fa8: DUP2 00001fa9: MSTORE 00001faa: PUSH1 0x04 00001fac: ADD 00001fad: PUSH2 0x1fb5 00001fb0: SWAP1 00001fb1: PUSH2 0x4175 00001fb4: JUMP 00001fb5: JUMPDEST 00001fb6: PUSH1 0x40 00001fb8: MLOAD 00001fb9: DUP1 00001fba: SWAP2 00001fbb: SUB 00001fbc: SWAP1 00001fbd: REVERT 00001fbe: JUMPDEST 00001fbf: PUSH1 0x00 00001fc1: PUSH1 0x06 00001fc3: PUSH1 0x00 00001fc5: DUP7 00001fc6: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001fe3: NOT 00001fe4: AND 00001fe5: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002002: NOT 00002003: AND 00002004: DUP2 00002005: MSTORE 00002006: PUSH1 0x20 00002008: ADD 00002009: SWAP1 0000200a: DUP2 0000200b: MSTORE 0000200c: PUSH1 0x20 0000200e: ADD 0000200f: PUSH1 0x00 00002011: KECCAK256 00002012: PUSH1 0x00 00002014: DUP6 00002015: DUP2 00002016: MSTORE 00002017: PUSH1 0x20 00002019: ADD 0000201a: SWAP1 0000201b: DUP2 0000201c: MSTORE 0000201d: PUSH1 0x20 0000201f: ADD 00002020: PUSH1 0x00 00002022: KECCAK256 00002023: PUSH1 0x00 00002025: SWAP1 00002026: SLOAD 00002027: SWAP1 00002028: PUSH2 0x0100 0000202b: EXP 0000202c: SWAP1 0000202d: DIV 0000202e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002043: AND 00002044: SWAP1 00002045: POP 00002046: PUSH1 0x00 00002048: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000205d: AND 0000205e: DUP2 0000205f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002074: AND 00002075: SUB 00002076: PUSH2 0x20b4 00002079: JUMPI 0000207a: PUSH1 0x40 0000207c: MLOAD 0000207d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000209e: DUP2 0000209f: MSTORE 000020a0: PUSH1 0x04 000020a2: ADD 000020a3: PUSH2 0x20ab 000020a6: SWAP1 000020a7: PUSH2 0x41e1 000020aa: JUMP 000020ab: JUMPDEST 000020ac: PUSH1 0x40 000020ae: MLOAD 000020af: DUP1 000020b0: SWAP2 000020b1: SUB 000020b2: SWAP1 000020b3: REVERT 000020b4: JUMPDEST 000020b5: PUSH1 0x00 000020b7: PUSH1 0x05 000020b9: PUSH1 0x00 000020bb: DUP4 000020bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000020d1: AND 000020d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000020e7: AND 000020e8: DUP2 000020e9: MSTORE 000020ea: PUSH1 0x20 000020ec: ADD 000020ed: SWAP1 000020ee: DUP2 000020ef: MSTORE 000020f0: PUSH1 0x20 000020f2: ADD 000020f3: PUSH1 0x00 000020f5: KECCAK256 000020f6: PUSH1 0x40 000020f8: MLOAD 000020f9: DUP1 000020fa: PUSH1 0xa0 000020fc: ADD 000020fd: PUSH1 0x40 000020ff: MSTORE 00002100: SWAP1 00002101: DUP2 00002102: PUSH1 0x00 00002104: DUP3 00002105: ADD 00002106: PUSH1 0x00 00002108: SWAP1 00002109: SLOAD 0000210a: SWAP1 0000210b: PUSH2 0x0100 0000210e: EXP 0000210f: SWAP1 00002110: DIV 00002111: PUSH1 0xe0 00002113: SHL 00002114: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002131: NOT 00002132: AND 00002133: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002150: NOT 00002151: AND 00002152: DUP2 00002153: MSTORE 00002154: PUSH1 0x20 00002156: ADD 00002157: PUSH1 0x01 00002159: DUP3 0000215a: ADD 0000215b: SLOAD 0000215c: DUP2 0000215d: MSTORE 0000215e: PUSH1 0x20 00002160: ADD 00002161: PUSH1 0x02 00002163: DUP3 00002164: ADD 00002165: PUSH1 0x00 00002167: SWAP1 00002168: SLOAD 00002169: SWAP1 0000216a: PUSH2 0x0100 0000216d: EXP 0000216e: SWAP1 0000216f: DIV 00002170: PUSH1 0xff 00002172: AND 00002173: PUSH1 0xff 00002175: AND 00002176: PUSH1 0xff 00002178: AND 00002179: DUP2 0000217a: MSTORE 0000217b: PUSH1 0x20 0000217d: ADD 0000217e: PUSH1 0x02 00002180: DUP3 00002181: ADD 00002182: PUSH1 0x01 00002184: SWAP1 00002185: SLOAD 00002186: SWAP1 00002187: PUSH2 0x0100 0000218a: EXP 0000218b: SWAP1 0000218c: DIV 0000218d: PUSH1 0xff 0000218f: AND 00002190: PUSH1 0x03 00002192: DUP2 00002193: GT 00002194: ISZERO 00002195: PUSH2 0x21a1 00002198: JUMPI 00002199: PUSH2 0x21a0 0000219c: PUSH2 0x39a3 0000219f: JUMP 000021a0: JUMPDEST 000021a1: JUMPDEST 000021a2: PUSH1 0x03 000021a4: DUP2 000021a5: GT 000021a6: ISZERO 000021a7: PUSH2 0x21b3 000021aa: JUMPI 000021ab: PUSH2 0x21b2 000021ae: PUSH2 0x39a3 000021b1: JUMP 000021b2: JUMPDEST 000021b3: JUMPDEST 000021b4: DUP2 000021b5: MSTORE 000021b6: PUSH1 0x20 000021b8: ADD 000021b9: PUSH1 0x02 000021bb: DUP3 000021bc: ADD 000021bd: PUSH1 0x02 000021bf: SWAP1 000021c0: SLOAD 000021c1: SWAP1 000021c2: PUSH2 0x0100 000021c5: EXP 000021c6: SWAP1 000021c7: DIV 000021c8: PUSH1 0xff 000021ca: AND 000021cb: PUSH1 0x01 000021cd: DUP2 000021ce: GT 000021cf: ISZERO 000021d0: PUSH2 0x21dc 000021d3: JUMPI 000021d4: PUSH2 0x21db 000021d7: PUSH2 0x39a3 000021da: JUMP 000021db: JUMPDEST 000021dc: JUMPDEST 000021dd: PUSH1 0x01 000021df: DUP2 000021e0: GT 000021e1: ISZERO 000021e2: PUSH2 0x21ee 000021e5: JUMPI 000021e6: PUSH2 0x21ed 000021e9: PUSH2 0x39a3 000021ec: JUMP 000021ed: JUMPDEST 000021ee: JUMPDEST 000021ef: DUP2 000021f0: MSTORE 000021f1: POP 000021f2: POP 000021f3: SWAP1 000021f4: POP 000021f5: PUSH1 0x00 000021f7: PUSH1 0x03 000021f9: DUP2 000021fa: GT 000021fb: ISZERO 000021fc: PUSH2 0x2208 000021ff: JUMPI 00002200: PUSH2 0x2207 00002203: PUSH2 0x39a3 00002206: JUMP 00002207: JUMPDEST 00002208: JUMPDEST 00002209: DUP2 0000220a: PUSH1 0x60 0000220c: ADD 0000220d: MLOAD 0000220e: PUSH1 0x03 00002210: DUP2 00002211: GT 00002212: ISZERO 00002213: PUSH2 0x221f 00002216: JUMPI 00002217: PUSH2 0x221e 0000221a: PUSH2 0x39a3 0000221d: JUMP 0000221e: JUMPDEST 0000221f: JUMPDEST 00002220: EQ 00002221: DUP1 00002222: ISZERO 00002223: PUSH2 0x222c 00002226: JUMPI 00002227: POP 00002228: PUSH1 0x00 0000222a: SELFBALANCE 0000222b: GT 0000222c: JUMPDEST 0000222d: ISZERO 0000222e: PUSH2 0x2279 00002231: JUMPI 00002232: DUP4 00002233: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002248: AND 00002249: PUSH2 0x08fc 0000224c: SELFBALANCE 0000224d: SWAP1 0000224e: DUP2 0000224f: ISZERO 00002250: MUL 00002251: SWAP1 00002252: PUSH1 0x40 00002254: MLOAD 00002255: PUSH1 0x00 00002257: PUSH1 0x40 00002259: MLOAD 0000225a: DUP1 0000225b: DUP4 0000225c: SUB 0000225d: DUP2 0000225e: DUP6 0000225f: DUP9 00002260: DUP9 00002261: CALL 00002262: SWAP4 00002263: POP 00002264: POP 00002265: POP 00002266: POP 00002267: ISZERO 00002268: DUP1 00002269: ISZERO 0000226a: PUSH2 0x2277 0000226d: JUMPI 0000226e: RETURNDATASIZE 0000226f: PUSH1 0x00 00002271: DUP1 00002272: RETURNDATACOPY 00002273: RETURNDATASIZE 00002274: PUSH1 0x00 00002276: REVERT 00002277: JUMPDEST 00002278: POP 00002279: JUMPDEST 0000227a: PUSH1 0x00 0000227c: DUP3 0000227d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002292: AND 00002293: PUSH4 0x70a08231 00002298: ADDRESS 00002299: PUSH1 0x40 0000229b: MLOAD 0000229c: DUP3 0000229d: PUSH4 0xffffffff 000022a2: AND 000022a3: PUSH1 0xe0 000022a5: SHL 000022a6: DUP2 000022a7: MSTORE 000022a8: PUSH1 0x04 000022aa: ADD 000022ab: PUSH2 0x22b4 000022ae: SWAP2 000022af: SWAP1 000022b0: PUSH2 0x3411 000022b3: JUMP 000022b4: JUMPDEST 000022b5: PUSH1 0x20 000022b7: PUSH1 0x40 000022b9: MLOAD 000022ba: DUP1 000022bb: DUP4 000022bc: SUB 000022bd: DUP2 000022be: DUP7 000022bf: GAS 000022c0: STATICCALL 000022c1: ISZERO 000022c2: DUP1 000022c3: ISZERO 000022c4: PUSH2 0x22d1 000022c7: JUMPI 000022c8: RETURNDATASIZE 000022c9: PUSH1 0x00 000022cb: DUP1 000022cc: RETURNDATACOPY 000022cd: RETURNDATASIZE 000022ce: PUSH1 0x00 000022d0: REVERT 000022d1: JUMPDEST 000022d2: POP 000022d3: POP 000022d4: POP 000022d5: POP 000022d6: PUSH1 0x40 000022d8: MLOAD 000022d9: RETURNDATASIZE 000022da: PUSH1 0x1f 000022dc: NOT 000022dd: PUSH1 0x1f 000022df: DUP3 000022e0: ADD 000022e1: AND 000022e2: DUP3 000022e3: ADD 000022e4: DUP1 000022e5: PUSH1 0x40 000022e7: MSTORE 000022e8: POP 000022e9: DUP2 000022ea: ADD 000022eb: SWAP1 000022ec: PUSH2 0x22f5 000022ef: SWAP2 000022f0: SWAP1 000022f1: PUSH2 0x3f31 000022f4: JUMP 000022f5: JUMPDEST 000022f6: SWAP1 000022f7: POP 000022f8: PUSH1 0x00 000022fa: DUP2 000022fb: GT 000022fc: ISZERO 000022fd: PUSH2 0x232c 00002300: JUMPI 00002301: PUSH2 0x232b 00002304: DUP6 00002305: DUP3 00002306: DUP6 00002307: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000231c: AND 0000231d: PUSH2 0x2da9 00002320: SWAP1 00002321: SWAP3 00002322: SWAP2 00002323: SWAP1 00002324: PUSH4 0xffffffff 00002329: AND 0000232a: JUMP 0000232b: JUMPDEST 0000232c: JUMPDEST 0000232d: PUSH1 0x03 0000232f: DUP1 00002330: DUP2 00002331: GT 00002332: ISZERO 00002333: PUSH2 0x233f 00002336: JUMPI 00002337: PUSH2 0x233e 0000233a: PUSH2 0x39a3 0000233d: JUMP 0000233e: JUMPDEST 0000233f: JUMPDEST 00002340: DUP3 00002341: PUSH1 0x60 00002343: ADD 00002344: MLOAD 00002345: PUSH1 0x03 00002347: DUP2 00002348: GT 00002349: ISZERO 0000234a: PUSH2 0x2356 0000234d: JUMPI 0000234e: PUSH2 0x2355 00002351: PUSH2 0x39a3 00002354: JUMP 00002355: JUMPDEST 00002356: JUMPDEST 00002357: SUB 00002358: PUSH2 0x23cb 0000235b: JUMPI 0000235c: DUP3 0000235d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002372: AND 00002373: PUSH4 0xf2fde38b 00002378: DUP7 00002379: PUSH1 0x40 0000237b: MLOAD 0000237c: DUP3 0000237d: PUSH4 0xffffffff 00002382: AND 00002383: PUSH1 0xe0 00002385: SHL 00002386: DUP2 00002387: MSTORE 00002388: PUSH1 0x04 0000238a: ADD 0000238b: PUSH2 0x2394 0000238e: SWAP2 0000238f: SWAP1 00002390: PUSH2 0x3411 00002393: JUMP 00002394: JUMPDEST 00002395: PUSH1 0x00 00002397: PUSH1 0x40 00002399: MLOAD 0000239a: DUP1 0000239b: DUP4 0000239c: SUB 0000239d: DUP2 0000239e: PUSH1 0x00 000023a0: DUP8 000023a1: DUP1 000023a2: EXTCODESIZE 000023a3: ISZERO 000023a4: DUP1 000023a5: ISZERO 000023a6: PUSH2 0x23ae 000023a9: JUMPI 000023aa: PUSH1 0x00 000023ac: DUP1 000023ad: REVERT 000023ae: JUMPDEST 000023af: POP 000023b0: GAS 000023b1: CALL 000023b2: ISZERO 000023b3: DUP1 000023b4: ISZERO 000023b5: PUSH2 0x23c2 000023b8: JUMPI 000023b9: RETURNDATASIZE 000023ba: PUSH1 0x00 000023bc: DUP1 000023bd: RETURNDATACOPY 000023be: RETURNDATASIZE 000023bf: PUSH1 0x00 000023c1: REVERT 000023c2: JUMPDEST 000023c3: POP 000023c4: POP 000023c5: POP 000023c6: POP 000023c7: PUSH2 0x2468 000023ca: JUMP 000023cb: JUMPDEST 000023cc: PUSH1 0x02 000023ce: PUSH1 0x03 000023d0: DUP2 000023d1: GT 000023d2: ISZERO 000023d3: PUSH2 0x23df 000023d6: JUMPI 000023d7: PUSH2 0x23de 000023da: PUSH2 0x39a3 000023dd: JUMP 000023de: JUMPDEST 000023df: JUMPDEST 000023e0: DUP3 000023e1: PUSH1 0x60 000023e3: ADD 000023e4: MLOAD 000023e5: PUSH1 0x03 000023e7: DUP2 000023e8: GT 000023e9: ISZERO 000023ea: PUSH2 0x23f6 000023ed: JUMPI 000023ee: PUSH2 0x23f5 000023f1: PUSH2 0x39a3 000023f4: JUMP 000023f5: JUMPDEST 000023f6: JUMPDEST 000023f7: SUB 000023f8: PUSH2 0x2467 000023fb: JUMPI 000023fc: DUP3 000023fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002412: AND 00002413: PUSH4 0x116877cc 00002418: DUP7 00002419: PUSH1 0x40 0000241b: MLOAD 0000241c: DUP3 0000241d: PUSH4 0xffffffff 00002422: AND 00002423: PUSH1 0xe0 00002425: SHL 00002426: DUP2 00002427: MSTORE 00002428: PUSH1 0x04 0000242a: ADD 0000242b: PUSH2 0x2434 0000242e: SWAP2 0000242f: SWAP1 00002430: PUSH2 0x3411 00002433: JUMP 00002434: JUMPDEST 00002435: PUSH1 0x00 00002437: PUSH1 0x40 00002439: MLOAD 0000243a: DUP1 0000243b: DUP4 0000243c: SUB 0000243d: DUP2 0000243e: PUSH1 0x00 00002440: DUP8 00002441: DUP1 00002442: EXTCODESIZE 00002443: ISZERO 00002444: DUP1 00002445: ISZERO 00002446: PUSH2 0x244e 00002449: JUMPI 0000244a: PUSH1 0x00 0000244c: DUP1 0000244d: REVERT 0000244e: JUMPDEST 0000244f: POP 00002450: GAS 00002451: CALL 00002452: ISZERO 00002453: DUP1 00002454: ISZERO 00002455: PUSH2 0x2462 00002458: JUMPI 00002459: RETURNDATASIZE 0000245a: PUSH1 0x00 0000245c: DUP1 0000245d: RETURNDATACOPY 0000245e: RETURNDATASIZE 0000245f: PUSH1 0x00 00002461: REVERT 00002462: JUMPDEST 00002463: POP 00002464: POP 00002465: POP 00002466: POP 00002467: JUMPDEST 00002468: JUMPDEST 00002469: PUSH1 0x05 0000246b: PUSH1 0x00 0000246d: DUP5 0000246e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002483: AND 00002484: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002499: AND 0000249a: DUP2 0000249b: MSTORE 0000249c: PUSH1 0x20 0000249e: ADD 0000249f: SWAP1 000024a0: DUP2 000024a1: MSTORE 000024a2: PUSH1 0x20 000024a4: ADD 000024a5: PUSH1 0x00 000024a7: KECCAK256 000024a8: PUSH1 0x00 000024aa: DUP1 000024ab: DUP3 000024ac: ADD 000024ad: PUSH1 0x00 000024af: PUSH2 0x0100 000024b2: EXP 000024b3: DUP2 000024b4: SLOAD 000024b5: SWAP1 000024b6: PUSH4 0xffffffff 000024bb: MUL 000024bc: NOT 000024bd: AND 000024be: SWAP1 000024bf: SSTORE 000024c0: PUSH1 0x01 000024c2: DUP3 000024c3: ADD 000024c4: PUSH1 0x00 000024c6: SWAP1 000024c7: SSTORE 000024c8: PUSH1 0x02 000024ca: DUP3 000024cb: ADD 000024cc: PUSH1 0x00 000024ce: PUSH2 0x0100 000024d1: EXP 000024d2: DUP2 000024d3: SLOAD 000024d4: SWAP1 000024d5: PUSH1 0xff 000024d7: MUL 000024d8: NOT 000024d9: AND 000024da: SWAP1 000024db: SSTORE 000024dc: PUSH1 0x02 000024de: DUP3 000024df: ADD 000024e0: PUSH1 0x01 000024e2: PUSH2 0x0100 000024e5: EXP 000024e6: DUP2 000024e7: SLOAD 000024e8: SWAP1 000024e9: PUSH1 0xff 000024eb: MUL 000024ec: NOT 000024ed: AND 000024ee: SWAP1 000024ef: SSTORE 000024f0: PUSH1 0x02 000024f2: DUP3 000024f3: ADD 000024f4: PUSH1 0x02 000024f6: PUSH2 0x0100 000024f9: EXP 000024fa: DUP2 000024fb: SLOAD 000024fc: SWAP1 000024fd: PUSH1 0xff 000024ff: MUL 00002500: NOT 00002501: AND 00002502: SWAP1 00002503: SSTORE 00002504: POP 00002505: POP 00002506: PUSH1 0x06 00002508: PUSH1 0x00 0000250a: DUP9 0000250b: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002528: NOT 00002529: AND 0000252a: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002547: NOT 00002548: AND 00002549: DUP2 0000254a: MSTORE 0000254b: PUSH1 0x20 0000254d: ADD 0000254e: SWAP1 0000254f: DUP2 00002550: MSTORE 00002551: PUSH1 0x20 00002553: ADD 00002554: PUSH1 0x00 00002556: KECCAK256 00002557: PUSH1 0x00 00002559: DUP8 0000255a: DUP2 0000255b: MSTORE 0000255c: PUSH1 0x20 0000255e: ADD 0000255f: SWAP1 00002560: DUP2 00002561: MSTORE 00002562: PUSH1 0x20 00002564: ADD 00002565: PUSH1 0x00 00002567: KECCAK256 00002568: PUSH1 0x00 0000256a: PUSH2 0x0100 0000256d: EXP 0000256e: DUP2 0000256f: SLOAD 00002570: SWAP1 00002571: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002586: MUL 00002587: NOT 00002588: AND 00002589: SWAP1 0000258a: SSTORE 0000258b: POP 0000258c: POP 0000258d: POP 0000258e: POP 0000258f: POP 00002590: POP 00002591: POP 00002592: JUMP 00002593: JUMPDEST 00002594: PUSH32 0x55ca0725c70a9ecebe86dd2b8b3a414983f6cb638e1a0fa17c64bbdd59b4d4c1 000025b5: PUSH2 0x25c5 000025b8: DUP2 000025b9: PUSH2 0x25c0 000025bc: PUSH2 0x264d 000025bf: JUMP 000025c0: JUMPDEST 000025c1: PUSH2 0x2655 000025c4: JUMP 000025c5: JUMPDEST 000025c6: PUSH1 0x00 000025c8: PUSH1 0x01 000025ca: PUSH1 0x00 000025cc: PUSH2 0x0100 000025cf: EXP 000025d0: DUP2 000025d1: SLOAD 000025d2: DUP2 000025d3: PUSH1 0xff 000025d5: MUL 000025d6: NOT 000025d7: AND 000025d8: SWAP1 000025d9: DUP4 000025da: ISZERO 000025db: ISZERO 000025dc: MUL 000025dd: OR 000025de: SWAP1 000025df: SSTORE 000025e0: POP 000025e1: POP 000025e2: JUMP 000025e3: JUMPDEST 000025e4: PUSH1 0x00 000025e6: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000 00002607: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002624: NOT 00002625: AND 00002626: DUP3 00002627: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002644: NOT 00002645: AND 00002646: EQ 00002647: SWAP1 00002648: POP 00002649: SWAP2 0000264a: SWAP1 0000264b: POP 0000264c: JUMP 0000264d: JUMPDEST 0000264e: PUSH1 0x00 00002650: CALLER 00002651: SWAP1 00002652: POP 00002653: SWAP1 00002654: JUMP 00002655: JUMPDEST 00002656: PUSH2 0x265f 00002659: DUP3 0000265a: DUP3 0000265b: PUSH2 0x0f50 0000265e: JUMP 0000265f: JUMPDEST 00002660: PUSH2 0x26ee 00002663: JUMPI 00002664: PUSH2 0x2684 00002667: DUP2 00002668: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000267d: AND 0000267e: PUSH1 0x14 00002680: PUSH2 0x2e2f 00002683: JUMP 00002684: JUMPDEST 00002685: PUSH2 0x2692 00002688: DUP4 00002689: PUSH1 0x00 0000268b: SHR 0000268c: PUSH1 0x20 0000268e: PUSH2 0x2e2f 00002691: JUMP 00002692: JUMPDEST 00002693: PUSH1 0x40 00002695: MLOAD 00002696: PUSH1 0x20 00002698: ADD 00002699: PUSH2 0x26a3 0000269c: SWAP3 0000269d: SWAP2 0000269e: SWAP1 0000269f: PUSH2 0x430a 000026a2: JUMP 000026a3: JUMPDEST 000026a4: PUSH1 0x40 000026a6: MLOAD 000026a7: PUSH1 0x20 000026a9: DUP2 000026aa: DUP4 000026ab: SUB 000026ac: SUB 000026ad: DUP2 000026ae: MSTORE 000026af: SWAP1 000026b0: PUSH1 0x40 000026b2: MSTORE 000026b3: PUSH1 0x40 000026b5: MLOAD 000026b6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000026d7: DUP2 000026d8: MSTORE 000026d9: PUSH1 0x04 000026db: ADD 000026dc: PUSH2 0x26e5 000026df: SWAP2 000026e0: SWAP1 000026e1: PUSH2 0x437d 000026e4: JUMP 000026e5: JUMPDEST 000026e6: PUSH1 0x40 000026e8: MLOAD 000026e9: DUP1 000026ea: SWAP2 000026eb: SUB 000026ec: SWAP1 000026ed: REVERT 000026ee: JUMPDEST 000026ef: POP 000026f0: POP 000026f1: JUMP 000026f2: JUMPDEST 000026f3: PUSH2 0x26fc 000026f6: DUP3 000026f7: DUP3 000026f8: PUSH2 0x0f50 000026fb: JUMP 000026fc: JUMPDEST 000026fd: PUSH2 0x27ce 00002700: JUMPI 00002701: PUSH1 0x01 00002703: PUSH1 0x00 00002705: DUP1 00002706: DUP5 00002707: DUP2 00002708: MSTORE 00002709: PUSH1 0x20 0000270b: ADD 0000270c: SWAP1 0000270d: DUP2 0000270e: MSTORE 0000270f: PUSH1 0x20 00002711: ADD 00002712: PUSH1 0x00 00002714: KECCAK256 00002715: PUSH1 0x00 00002717: ADD 00002718: PUSH1 0x00 0000271a: DUP4 0000271b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002730: AND 00002731: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002746: AND 00002747: DUP2 00002748: MSTORE 00002749: PUSH1 0x20 0000274b: ADD 0000274c: SWAP1 0000274d: DUP2 0000274e: MSTORE 0000274f: PUSH1 0x20 00002751: ADD 00002752: PUSH1 0x00 00002754: KECCAK256 00002755: PUSH1 0x00 00002757: PUSH2 0x0100 0000275a: EXP 0000275b: DUP2 0000275c: SLOAD 0000275d: DUP2 0000275e: PUSH1 0xff 00002760: MUL 00002761: NOT 00002762: AND 00002763: SWAP1 00002764: DUP4 00002765: ISZERO 00002766: ISZERO 00002767: MUL 00002768: OR 00002769: SWAP1 0000276a: SSTORE 0000276b: POP 0000276c: PUSH2 0x2773 0000276f: PUSH2 0x264d 00002772: JUMP 00002773: JUMPDEST 00002774: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002789: AND 0000278a: DUP2 0000278b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000027a0: AND 000027a1: DUP4 000027a2: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d 000027c3: PUSH1 0x40 000027c5: MLOAD 000027c6: PUSH1 0x40 000027c8: MLOAD 000027c9: DUP1 000027ca: SWAP2 000027cb: SUB 000027cc: SWAP1 000027cd: LOG4 000027ce: JUMPDEST 000027cf: POP 000027d0: POP 000027d1: JUMP 000027d2: JUMPDEST 000027d3: PUSH2 0x27dc 000027d6: DUP3 000027d7: DUP3 000027d8: PUSH2 0x0f50 000027db: JUMP 000027dc: JUMPDEST 000027dd: ISZERO 000027de: PUSH2 0x28af 000027e1: JUMPI 000027e2: PUSH1 0x00 000027e4: DUP1 000027e5: PUSH1 0x00 000027e7: DUP5 000027e8: DUP2 000027e9: MSTORE 000027ea: PUSH1 0x20 000027ec: ADD 000027ed: SWAP1 000027ee: DUP2 000027ef: MSTORE 000027f0: PUSH1 0x20 000027f2: ADD 000027f3: PUSH1 0x00 000027f5: KECCAK256 000027f6: PUSH1 0x00 000027f8: ADD 000027f9: PUSH1 0x00 000027fb: DUP4 000027fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002811: AND 00002812: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002827: AND 00002828: DUP2 00002829: MSTORE 0000282a: PUSH1 0x20 0000282c: ADD 0000282d: SWAP1 0000282e: DUP2 0000282f: MSTORE 00002830: PUSH1 0x20 00002832: ADD 00002833: PUSH1 0x00 00002835: KECCAK256 00002836: PUSH1 0x00 00002838: PUSH2 0x0100 0000283b: EXP 0000283c: DUP2 0000283d: SLOAD 0000283e: DUP2 0000283f: PUSH1 0xff 00002841: MUL 00002842: NOT 00002843: AND 00002844: SWAP1 00002845: DUP4 00002846: ISZERO 00002847: ISZERO 00002848: MUL 00002849: OR 0000284a: SWAP1 0000284b: SSTORE 0000284c: POP 0000284d: PUSH2 0x2854 00002850: PUSH2 0x264d 00002853: JUMP 00002854: JUMPDEST 00002855: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000286a: AND 0000286b: DUP2 0000286c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002881: AND 00002882: DUP4 00002883: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b 000028a4: PUSH1 0x40 000028a6: MLOAD 000028a7: PUSH1 0x40 000028a9: MLOAD 000028aa: DUP1 000028ab: SWAP2 000028ac: SUB 000028ad: SWAP1 000028ae: LOG4 000028af: JUMPDEST 000028b0: POP 000028b1: POP 000028b2: JUMP 000028b3: JUMPDEST 000028b4: PUSH1 0x00 000028b6: DUP1 000028b7: PUSH2 0x28be 000028ba: PUSH2 0x3358 000028bd: JUMP 000028be: JUMPDEST 000028bf: PUSH1 0x00 000028c1: DUP7 000028c2: GT 000028c3: PUSH2 0x2901 000028c6: JUMPI 000028c7: PUSH1 0x40 000028c9: MLOAD 000028ca: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000028eb: DUP2 000028ec: MSTORE 000028ed: PUSH1 0x04 000028ef: ADD 000028f0: PUSH2 0x28f8 000028f3: SWAP1 000028f4: PUSH2 0x43eb 000028f7: JUMP 000028f8: JUMPDEST 000028f9: PUSH1 0x40 000028fb: MLOAD 000028fc: DUP1 000028fd: SWAP2 000028fe: SUB 000028ff: SWAP1 00002900: REVERT 00002901: JUMPDEST 00002902: PUSH1 0x00 00002904: PUSH1 0x05 00002906: PUSH1 0x00 00002908: DUP10 00002909: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000291e: AND 0000291f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002934: AND 00002935: DUP2 00002936: MSTORE 00002937: PUSH1 0x20 00002939: ADD 0000293a: SWAP1 0000293b: DUP2 0000293c: MSTORE 0000293d: PUSH1 0x20 0000293f: ADD 00002940: PUSH1 0x00 00002942: KECCAK256 00002943: PUSH1 0x40 00002945: MLOAD 00002946: DUP1 00002947: PUSH1 0xa0 00002949: ADD 0000294a: PUSH1 0x40 0000294c: MSTORE 0000294d: SWAP1 0000294e: DUP2 0000294f: PUSH1 0x00 00002951: DUP3 00002952: ADD 00002953: PUSH1 0x00 00002955: SWAP1 00002956: SLOAD 00002957: SWAP1 00002958: PUSH2 0x0100 0000295b: EXP 0000295c: SWAP1 0000295d: DIV 0000295e: PUSH1 0xe0 00002960: SHL 00002961: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000297e: NOT 0000297f: AND 00002980: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000299d: NOT 0000299e: AND 0000299f: DUP2 000029a0: MSTORE 000029a1: PUSH1 0x20 000029a3: ADD 000029a4: PUSH1 0x01 000029a6: DUP3 000029a7: ADD 000029a8: SLOAD 000029a9: DUP2 000029aa: MSTORE 000029ab: PUSH1 0x20 000029ad: ADD 000029ae: PUSH1 0x02 000029b0: DUP3 000029b1: ADD 000029b2: PUSH1 0x00 000029b4: SWAP1 000029b5: SLOAD 000029b6: SWAP1 000029b7: PUSH2 0x0100 000029ba: EXP 000029bb: SWAP1 000029bc: DIV 000029bd: PUSH1 0xff 000029bf: AND 000029c0: PUSH1 0xff 000029c2: AND 000029c3: PUSH1 0xff 000029c5: AND 000029c6: DUP2 000029c7: MSTORE 000029c8: PUSH1 0x20 000029ca: ADD 000029cb: PUSH1 0x02 000029cd: DUP3 000029ce: ADD 000029cf: PUSH1 0x01 000029d1: SWAP1 000029d2: SLOAD 000029d3: SWAP1 000029d4: PUSH2 0x0100 000029d7: EXP 000029d8: SWAP1 000029d9: DIV 000029da: PUSH1 0xff 000029dc: AND 000029dd: PUSH1 0x03 000029df: DUP2 000029e0: GT 000029e1: ISZERO 000029e2: PUSH2 0x29ee 000029e5: JUMPI 000029e6: PUSH2 0x29ed 000029e9: PUSH2 0x39a3 000029ec: JUMP 000029ed: JUMPDEST 000029ee: JUMPDEST 000029ef: PUSH1 0x03 000029f1: DUP2 000029f2: GT 000029f3: ISZERO 000029f4: PUSH2 0x2a00 000029f7: JUMPI 000029f8: PUSH2 0x29ff 000029fb: PUSH2 0x39a3 000029fe: JUMP 000029ff: JUMPDEST 00002a00: JUMPDEST 00002a01: DUP2 00002a02: MSTORE 00002a03: PUSH1 0x20 00002a05: ADD 00002a06: PUSH1 0x02 00002a08: DUP3 00002a09: ADD 00002a0a: PUSH1 0x02 00002a0c: SWAP1 00002a0d: SLOAD 00002a0e: SWAP1 00002a0f: PUSH2 0x0100 00002a12: EXP 00002a13: SWAP1 00002a14: DIV 00002a15: PUSH1 0xff 00002a17: AND 00002a18: PUSH1 0x01 00002a1a: DUP2 00002a1b: GT 00002a1c: ISZERO 00002a1d: PUSH2 0x2a29 00002a20: JUMPI 00002a21: PUSH2 0x2a28 00002a24: PUSH2 0x39a3 00002a27: JUMP 00002a28: JUMPDEST 00002a29: JUMPDEST 00002a2a: PUSH1 0x01 00002a2c: DUP2 00002a2d: GT 00002a2e: ISZERO 00002a2f: PUSH2 0x2a3b 00002a32: JUMPI 00002a33: PUSH2 0x2a3a 00002a36: PUSH2 0x39a3 00002a39: JUMP 00002a3a: JUMPDEST 00002a3b: JUMPDEST 00002a3c: DUP2 00002a3d: MSTORE 00002a3e: POP 00002a3f: POP 00002a40: SWAP1 00002a41: POP 00002a42: PUSH1 0x00 00002a44: DUP1 00002a45: SHL 00002a46: DUP2 00002a47: PUSH1 0x20 00002a49: ADD 00002a4a: MLOAD 00002a4b: SUB 00002a4c: PUSH2 0x2a8a 00002a4f: JUMPI 00002a50: PUSH1 0x40 00002a52: MLOAD 00002a53: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002a74: DUP2 00002a75: MSTORE 00002a76: PUSH1 0x04 00002a78: ADD 00002a79: PUSH2 0x2a81 00002a7c: SWAP1 00002a7d: PUSH2 0x3bf1 00002a80: JUMP 00002a81: JUMPDEST 00002a82: PUSH1 0x40 00002a84: MLOAD 00002a85: DUP1 00002a86: SWAP2 00002a87: SUB 00002a88: SWAP1 00002a89: REVERT 00002a8a: JUMPDEST 00002a8b: PUSH1 0x00 00002a8d: PUSH1 0x03 00002a8f: PUSH1 0x00 00002a91: SWAP1 00002a92: SLOAD 00002a93: SWAP1 00002a94: PUSH2 0x0100 00002a97: EXP 00002a98: SWAP1 00002a99: DIV 00002a9a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002aaf: AND 00002ab0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002ac5: AND 00002ac6: PUSH4 0x16b6ecb0 00002acb: DUP11 00002acc: CALLER 00002acd: DUP12 00002ace: DUP11 00002acf: PUSH1 0x40 00002ad1: MLOAD 00002ad2: DUP6 00002ad3: PUSH4 0xffffffff 00002ad8: AND 00002ad9: PUSH1 0xe0 00002adb: SHL 00002adc: DUP2 00002add: MSTORE 00002ade: PUSH1 0x04 00002ae0: ADD 00002ae1: PUSH2 0x2aed 00002ae4: SWAP5 00002ae5: SWAP4 00002ae6: SWAP3 00002ae7: SWAP2 00002ae8: SWAP1 00002ae9: PUSH2 0x440b 00002aec: JUMP 00002aed: JUMPDEST 00002aee: PUSH1 0x20 00002af0: PUSH1 0x40 00002af2: MLOAD 00002af3: DUP1 00002af4: DUP4 00002af5: SUB 00002af6: DUP2 00002af7: DUP7 00002af8: GAS 00002af9: STATICCALL 00002afa: ISZERO 00002afb: DUP1 00002afc: ISZERO 00002afd: PUSH2 0x2b0a 00002b00: JUMPI 00002b01: RETURNDATASIZE 00002b02: PUSH1 0x00 00002b04: DUP1 00002b05: RETURNDATACOPY 00002b06: RETURNDATASIZE 00002b07: PUSH1 0x00 00002b09: REVERT 00002b0a: JUMPDEST 00002b0b: POP 00002b0c: POP 00002b0d: POP 00002b0e: POP 00002b0f: PUSH1 0x40 00002b11: MLOAD 00002b12: RETURNDATASIZE 00002b13: PUSH1 0x1f 00002b15: NOT 00002b16: PUSH1 0x1f 00002b18: DUP3 00002b19: ADD 00002b1a: AND 00002b1b: DUP3 00002b1c: ADD 00002b1d: DUP1 00002b1e: PUSH1 0x40 00002b20: MSTORE 00002b21: POP 00002b22: DUP2 00002b23: ADD 00002b24: SWAP1 00002b25: PUSH2 0x2b2e 00002b28: SWAP2 00002b29: SWAP1 00002b2a: PUSH2 0x3f31 00002b2d: JUMP 00002b2e: JUMPDEST 00002b2f: SWAP1 00002b30: POP 00002b31: DUP1 00002b32: DUP9 00002b33: GT 00002b34: PUSH2 0x2b72 00002b37: JUMPI 00002b38: PUSH1 0x40 00002b3a: MLOAD 00002b3b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002b5c: DUP2 00002b5d: MSTORE 00002b5e: PUSH1 0x04 00002b60: ADD 00002b61: PUSH2 0x2b69 00002b64: SWAP1 00002b65: PUSH2 0x3faa 00002b68: JUMP 00002b69: JUMPDEST 00002b6a: PUSH1 0x40 00002b6c: MLOAD 00002b6d: DUP1 00002b6e: SWAP2 00002b6f: SUB 00002b70: SWAP1 00002b71: REVERT 00002b72: JUMPDEST 00002b73: PUSH1 0x00 00002b75: DUP2 00002b76: DUP10 00002b77: PUSH2 0x2b80 00002b7a: SWAP2 00002b7b: SWAP1 00002b7c: PUSH2 0x3ff9 00002b7f: JUMP 00002b80: JUMPDEST 00002b81: SWAP1 00002b82: POP 00002b83: PUSH1 0x01 00002b85: DUP1 00002b86: SLOAD 00002b87: SWAP1 00002b88: PUSH2 0x0100 00002b8b: EXP 00002b8c: SWAP1 00002b8d: DIV 00002b8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002ba3: AND 00002ba4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002bb9: AND 00002bba: PUSH4 0x7a6a5e3c 00002bbf: DUP13 00002bc0: CALLER 00002bc1: DUP12 00002bc2: PUSH2 0x2bcf 00002bc5: DUP7 00002bc6: DUP10 00002bc7: PUSH1 0x40 00002bc9: ADD 00002bca: MLOAD 00002bcb: PUSH2 0x306b 00002bce: JUMP 00002bcf: JUMPDEST 00002bd0: DUP13 00002bd1: DUP10 00002bd2: PUSH1 0x00 00002bd4: ADD 00002bd5: MLOAD 00002bd6: DUP11 00002bd7: PUSH1 0x20 00002bd9: ADD 00002bda: MLOAD 00002bdb: PUSH1 0x40 00002bdd: MLOAD 00002bde: DUP9 00002bdf: PUSH4 0xffffffff 00002be4: AND 00002be5: PUSH1 0xe0 00002be7: SHL 00002be8: DUP2 00002be9: MSTORE 00002bea: PUSH1 0x04 00002bec: ADD 00002bed: PUSH2 0x2bfc 00002bf0: SWAP8 00002bf1: SWAP7 00002bf2: SWAP6 00002bf3: SWAP5 00002bf4: SWAP4 00002bf5: SWAP3 00002bf6: SWAP2 00002bf7: SWAP1 00002bf8: PUSH2 0x4450 00002bfb: JUMP 00002bfc: JUMPDEST 00002bfd: PUSH1 0x00 00002bff: PUSH1 0x40 00002c01: MLOAD 00002c02: DUP1 00002c03: DUP4 00002c04: SUB 00002c05: DUP2 00002c06: PUSH1 0x00 00002c08: DUP8 00002c09: DUP1 00002c0a: EXTCODESIZE 00002c0b: ISZERO 00002c0c: DUP1 00002c0d: ISZERO 00002c0e: PUSH2 0x2c16 00002c11: JUMPI 00002c12: PUSH1 0x00 00002c14: DUP1 00002c15: REVERT 00002c16: JUMPDEST 00002c17: POP 00002c18: GAS 00002c19: CALL 00002c1a: ISZERO 00002c1b: DUP1 00002c1c: ISZERO 00002c1d: PUSH2 0x2c2a 00002c20: JUMPI 00002c21: RETURNDATASIZE 00002c22: PUSH1 0x00 00002c24: DUP1 00002c25: RETURNDATACOPY 00002c26: RETURNDATASIZE 00002c27: PUSH1 0x00 00002c29: REVERT 00002c2a: JUMPDEST 00002c2b: POP 00002c2c: POP 00002c2d: POP 00002c2e: POP 00002c2f: DUP11 00002c30: PUSH16 0xffffffffffffffffffffffffffffffff 00002c41: AND 00002c42: DUP9 00002c43: PUSH32 0x884a8def17f0d5bbb3fef53f3136b5320c9b39f75afb8985eeab9ea1153ee56d 00002c64: DUP6 00002c65: PUSH1 0x00 00002c67: ADD 00002c68: MLOAD 00002c69: DUP7 00002c6a: PUSH1 0x20 00002c6c: ADD 00002c6d: MLOAD 00002c6e: CALLER 00002c6f: DUP7 00002c70: DUP14 00002c71: PUSH1 0x40 00002c73: MLOAD 00002c74: PUSH2 0x2c81 00002c77: SWAP6 00002c78: SWAP5 00002c79: SWAP4 00002c7a: SWAP3 00002c7b: SWAP2 00002c7c: SWAP1 00002c7d: PUSH2 0x44bf 00002c80: JUMP 00002c81: JUMPDEST 00002c82: PUSH1 0x40 00002c84: MLOAD 00002c85: DUP1 00002c86: SWAP2 00002c87: SUB 00002c88: SWAP1 00002c89: LOG3 00002c8a: DUP1 00002c8b: DUP3 00002c8c: DUP5 00002c8d: SWAP6 00002c8e: POP 00002c8f: SWAP6 00002c90: POP 00002c91: SWAP6 00002c92: POP 00002c93: POP 00002c94: POP 00002c95: POP 00002c96: SWAP6 00002c97: POP 00002c98: SWAP6 00002c99: POP 00002c9a: SWAP6 00002c9b: SWAP3 00002c9c: POP 00002c9d: POP 00002c9e: POP 00002c9f: JUMP 00002ca0: JUMPDEST 00002ca1: PUSH2 0x2d23 00002ca4: DUP5 00002ca5: PUSH4 0x23b872dd 00002caa: PUSH1 0xe0 00002cac: SHL 00002cad: DUP6 00002cae: DUP6 00002caf: DUP6 00002cb0: PUSH1 0x40 00002cb2: MLOAD 00002cb3: PUSH1 0x24 00002cb5: ADD 00002cb6: PUSH2 0x2cc1 00002cb9: SWAP4 00002cba: SWAP3 00002cbb: SWAP2 00002cbc: SWAP1 00002cbd: PUSH2 0x4512 00002cc0: JUMP 00002cc1: JUMPDEST 00002cc2: PUSH1 0x40 00002cc4: MLOAD 00002cc5: PUSH1 0x20 00002cc7: DUP2 00002cc8: DUP4 00002cc9: SUB 00002cca: SUB 00002ccb: DUP2 00002ccc: MSTORE 00002ccd: SWAP1 00002cce: PUSH1 0x40 00002cd0: MSTORE 00002cd1: SWAP1 00002cd2: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002cef: NOT 00002cf0: AND 00002cf1: PUSH1 0x20 00002cf3: DUP3 00002cf4: ADD 00002cf5: DUP1 00002cf6: MLOAD 00002cf7: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002d14: DUP4 00002d15: DUP2 00002d16: DUP4 00002d17: AND 00002d18: OR 00002d19: DUP4 00002d1a: MSTORE 00002d1b: POP 00002d1c: POP 00002d1d: POP 00002d1e: POP 00002d1f: PUSH2 0x30eb 00002d22: JUMP 00002d23: JUMPDEST 00002d24: POP 00002d25: POP 00002d26: POP 00002d27: POP 00002d28: JUMP 00002d29: JUMPDEST 00002d2a: PUSH1 0x00 00002d2c: PUSH1 0x09 00002d2e: DUP3 00002d2f: PUSH1 0xff 00002d31: AND 00002d32: GT 00002d33: ISZERO 00002d34: PUSH2 0x2d65 00002d37: JUMPI 00002d38: PUSH1 0x09 00002d3a: DUP3 00002d3b: PUSH1 0xff 00002d3d: AND 00002d3e: PUSH2 0x2d47 00002d41: SWAP2 00002d42: SWAP1 00002d43: PUSH2 0x3ff9 00002d46: JUMP 00002d47: JUMPDEST 00002d48: PUSH1 0x0a 00002d4a: PUSH2 0x2d53 00002d4d: SWAP2 00002d4e: SWAP1 00002d4f: PUSH2 0x467c 00002d52: JUMP 00002d53: JUMPDEST 00002d54: DUP4 00002d55: PUSH2 0x2d5e 00002d58: SWAP2 00002d59: SWAP1 00002d5a: PUSH2 0x46c7 00002d5d: JUMP 00002d5e: JUMPDEST 00002d5f: SWAP1 00002d60: POP 00002d61: PUSH2 0x2da3 00002d64: JUMP 00002d65: JUMPDEST 00002d66: PUSH1 0x09 00002d68: DUP3 00002d69: PUSH1 0xff 00002d6b: AND 00002d6c: LT 00002d6d: ISZERO 00002d6e: PUSH2 0x2d9f 00002d71: JUMPI 00002d72: DUP2 00002d73: PUSH1 0xff 00002d75: AND 00002d76: PUSH1 0x09 00002d78: PUSH2 0x2d81 00002d7b: SWAP2 00002d7c: SWAP1 00002d7d: PUSH2 0x3ff9 00002d80: JUMP 00002d81: JUMPDEST 00002d82: PUSH1 0x0a 00002d84: PUSH2 0x2d8d 00002d87: SWAP2 00002d88: SWAP1 00002d89: PUSH2 0x467c 00002d8c: JUMP 00002d8d: JUMPDEST 00002d8e: DUP4 00002d8f: PUSH2 0x2d98 00002d92: SWAP2 00002d93: SWAP1 00002d94: PUSH2 0x4738 00002d97: JUMP 00002d98: JUMPDEST 00002d99: SWAP1 00002d9a: POP 00002d9b: PUSH2 0x2da3 00002d9e: JUMP 00002d9f: JUMPDEST 00002da0: DUP3 00002da1: SWAP1 00002da2: POP 00002da3: JUMPDEST 00002da4: SWAP3 00002da5: SWAP2 00002da6: POP 00002da7: POP 00002da8: JUMP 00002da9: JUMPDEST 00002daa: PUSH2 0x2e2a 00002dad: DUP4 00002dae: PUSH4 0xa9059cbb 00002db3: PUSH1 0xe0 00002db5: SHL 00002db6: DUP5 00002db7: DUP5 00002db8: PUSH1 0x40 00002dba: MLOAD 00002dbb: PUSH1 0x24 00002dbd: ADD 00002dbe: PUSH2 0x2dc8 00002dc1: SWAP3 00002dc2: SWAP2 00002dc3: SWAP1 00002dc4: PUSH2 0x3df6 00002dc7: JUMP 00002dc8: JUMPDEST 00002dc9: PUSH1 0x40 00002dcb: MLOAD 00002dcc: PUSH1 0x20 00002dce: DUP2 00002dcf: DUP4 00002dd0: SUB 00002dd1: SUB 00002dd2: DUP2 00002dd3: MSTORE 00002dd4: SWAP1 00002dd5: PUSH1 0x40 00002dd7: MSTORE 00002dd8: SWAP1 00002dd9: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002df6: NOT 00002df7: AND 00002df8: PUSH1 0x20 00002dfa: DUP3 00002dfb: ADD 00002dfc: DUP1 00002dfd: MLOAD 00002dfe: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002e1b: DUP4 00002e1c: DUP2 00002e1d: DUP4 00002e1e: AND 00002e1f: OR 00002e20: DUP4 00002e21: MSTORE 00002e22: POP 00002e23: POP 00002e24: POP 00002e25: POP 00002e26: PUSH2 0x30eb 00002e29: JUMP 00002e2a: JUMPDEST 00002e2b: POP 00002e2c: POP 00002e2d: POP 00002e2e: JUMP 00002e2f: JUMPDEST 00002e30: PUSH1 0x60 00002e32: PUSH1 0x00 00002e34: PUSH1 0x02 00002e36: DUP4 00002e37: PUSH1 0x02 00002e39: PUSH2 0x2e42 00002e3c: SWAP2 00002e3d: SWAP1 00002e3e: PUSH2 0x46c7 00002e41: JUMP 00002e42: JUMPDEST 00002e43: PUSH2 0x2e4c 00002e46: SWAP2 00002e47: SWAP1 00002e48: PUSH2 0x4769 00002e4b: JUMP 00002e4c: JUMPDEST 00002e4d: PUSH8 0xffffffffffffffff 00002e56: DUP2 00002e57: GT 00002e58: ISZERO 00002e59: PUSH2 0x2e65 00002e5c: JUMPI 00002e5d: PUSH2 0x2e64 00002e60: PUSH2 0x479d 00002e63: JUMP 00002e64: JUMPDEST 00002e65: JUMPDEST 00002e66: PUSH1 0x40 00002e68: MLOAD 00002e69: SWAP1 00002e6a: DUP1 00002e6b: DUP3 00002e6c: MSTORE 00002e6d: DUP1 00002e6e: PUSH1 0x1f 00002e70: ADD 00002e71: PUSH1 0x1f 00002e73: NOT 00002e74: AND 00002e75: PUSH1 0x20 00002e77: ADD 00002e78: DUP3 00002e79: ADD 00002e7a: PUSH1 0x40 00002e7c: MSTORE 00002e7d: DUP1 00002e7e: ISZERO 00002e7f: PUSH2 0x2e97 00002e82: JUMPI 00002e83: DUP2 00002e84: PUSH1 0x20 00002e86: ADD 00002e87: PUSH1 0x01 00002e89: DUP3 00002e8a: MUL 00002e8b: DUP1 00002e8c: CALLDATASIZE 00002e8d: DUP4 00002e8e: CALLDATACOPY 00002e8f: DUP1 00002e90: DUP3 00002e91: ADD 00002e92: SWAP2 00002e93: POP 00002e94: POP 00002e95: SWAP1 00002e96: POP 00002e97: JUMPDEST 00002e98: POP 00002e99: SWAP1 00002e9a: POP 00002e9b: PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 00002ebc: DUP2 00002ebd: PUSH1 0x00 00002ebf: DUP2 00002ec0: MLOAD 00002ec1: DUP2 00002ec2: LT 00002ec3: PUSH2 0x2ecf 00002ec6: JUMPI 00002ec7: PUSH2 0x2ece 00002eca: PUSH2 0x47cc 00002ecd: JUMP 00002ece: JUMPDEST 00002ecf: JUMPDEST 00002ed0: PUSH1 0x20 00002ed2: ADD 00002ed3: ADD 00002ed4: SWAP1 00002ed5: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002ef5: NOT 00002ef6: AND 00002ef7: SWAP1 00002ef8: DUP2 00002ef9: PUSH1 0x00 00002efb: BYTE 00002efc: SWAP1 00002efd: MSTORE8 00002efe: POP 00002eff: PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 00002f20: DUP2 00002f21: PUSH1 0x01 00002f23: DUP2 00002f24: MLOAD 00002f25: DUP2 00002f26: LT 00002f27: PUSH2 0x2f33 00002f2a: JUMPI 00002f2b: PUSH2 0x2f32 00002f2e: PUSH2 0x47cc 00002f31: JUMP 00002f32: JUMPDEST 00002f33: JUMPDEST 00002f34: PUSH1 0x20 00002f36: ADD 00002f37: ADD 00002f38: SWAP1 00002f39: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002f59: NOT 00002f5a: AND 00002f5b: SWAP1 00002f5c: DUP2 00002f5d: PUSH1 0x00 00002f5f: BYTE 00002f60: SWAP1 00002f61: MSTORE8 00002f62: POP 00002f63: PUSH1 0x00 00002f65: PUSH1 0x01 00002f67: DUP5 00002f68: PUSH1 0x02 00002f6a: PUSH2 0x2f73 00002f6d: SWAP2 00002f6e: SWAP1 00002f6f: PUSH2 0x46c7 00002f72: JUMP 00002f73: JUMPDEST 00002f74: PUSH2 0x2f7d 00002f77: SWAP2 00002f78: SWAP1 00002f79: PUSH2 0x4769 00002f7c: JUMP 00002f7d: JUMPDEST 00002f7e: SWAP1 00002f7f: POP 00002f80: JUMPDEST 00002f81: PUSH1 0x01 00002f83: DUP2 00002f84: GT 00002f85: ISZERO 00002f86: PUSH2 0x301d 00002f89: JUMPI 00002f8a: PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 00002fab: PUSH1 0x0f 00002fad: DUP7 00002fae: AND 00002faf: PUSH1 0x10 00002fb1: DUP2 00002fb2: LT 00002fb3: PUSH2 0x2fbf 00002fb6: JUMPI 00002fb7: PUSH2 0x2fbe 00002fba: PUSH2 0x47cc 00002fbd: JUMP 00002fbe: JUMPDEST 00002fbf: JUMPDEST 00002fc0: BYTE 00002fc1: PUSH1 0xf8 00002fc3: SHL 00002fc4: DUP3 00002fc5: DUP3 00002fc6: DUP2 00002fc7: MLOAD 00002fc8: DUP2 00002fc9: LT 00002fca: PUSH2 0x2fd6 00002fcd: JUMPI 00002fce: PUSH2 0x2fd5 00002fd1: PUSH2 0x47cc 00002fd4: JUMP 00002fd5: JUMPDEST 00002fd6: JUMPDEST 00002fd7: PUSH1 0x20 00002fd9: ADD 00002fda: ADD 00002fdb: SWAP1 00002fdc: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002ffc: NOT 00002ffd: AND 00002ffe: SWAP1 00002fff: DUP2 00003000: PUSH1 0x00 00003002: BYTE 00003003: SWAP1 00003004: MSTORE8 00003005: POP 00003006: PUSH1 0x04 00003008: DUP6 00003009: SWAP1 0000300a: SHR 0000300b: SWAP5 0000300c: POP 0000300d: DUP1 0000300e: PUSH2 0x3016 00003011: SWAP1 00003012: PUSH2 0x47fb 00003015: JUMP 00003016: JUMPDEST 00003017: SWAP1 00003018: POP 00003019: PUSH2 0x2f80 0000301c: JUMP 0000301d: JUMPDEST 0000301e: POP 0000301f: PUSH1 0x00 00003021: DUP5 00003022: EQ 00003023: PUSH2 0x3061 00003026: JUMPI 00003027: PUSH1 0x40 00003029: MLOAD 0000302a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000304b: DUP2 0000304c: MSTORE 0000304d: PUSH1 0x04 0000304f: ADD 00003050: PUSH2 0x3058 00003053: SWAP1 00003054: PUSH2 0x4870 00003057: JUMP 00003058: JUMPDEST 00003059: PUSH1 0x40 0000305b: MLOAD 0000305c: DUP1 0000305d: SWAP2 0000305e: SUB 0000305f: SWAP1 00003060: REVERT 00003061: JUMPDEST 00003062: DUP1 00003063: SWAP2 00003064: POP 00003065: POP 00003066: SWAP3 00003067: SWAP2 00003068: POP 00003069: POP 0000306a: JUMP 0000306b: JUMPDEST 0000306c: PUSH1 0x00 0000306e: PUSH1 0x09 00003070: DUP3 00003071: PUSH1 0xff 00003073: AND 00003074: GT 00003075: ISZERO 00003076: PUSH2 0x30a7 00003079: JUMPI 0000307a: PUSH1 0x09 0000307c: DUP3 0000307d: PUSH1 0xff 0000307f: AND 00003080: PUSH2 0x3089 00003083: SWAP2 00003084: SWAP1 00003085: PUSH2 0x3ff9 00003088: JUMP 00003089: JUMPDEST 0000308a: PUSH1 0x0a 0000308c: PUSH2 0x3095 0000308f: SWAP2 00003090: SWAP1 00003091: PUSH2 0x467c 00003094: JUMP 00003095: JUMPDEST 00003096: DUP4 00003097: PUSH2 0x30a0 0000309a: SWAP2 0000309b: SWAP1 0000309c: PUSH2 0x4738 0000309f: JUMP 000030a0: JUMPDEST 000030a1: SWAP1 000030a2: POP 000030a3: PUSH2 0x30e5 000030a6: JUMP 000030a7: JUMPDEST 000030a8: PUSH1 0x09 000030aa: DUP3 000030ab: PUSH1 0xff 000030ad: AND 000030ae: LT 000030af: ISZERO 000030b0: PUSH2 0x30e1 000030b3: JUMPI 000030b4: DUP2 000030b5: PUSH1 0xff 000030b7: AND 000030b8: PUSH1 0x09 000030ba: PUSH2 0x30c3 000030bd: SWAP2 000030be: SWAP1 000030bf: PUSH2 0x3ff9 000030c2: JUMP 000030c3: JUMPDEST 000030c4: PUSH1 0x0a 000030c6: PUSH2 0x30cf 000030c9: SWAP2 000030ca: SWAP1 000030cb: PUSH2 0x467c 000030ce: JUMP 000030cf: JUMPDEST 000030d0: DUP4 000030d1: PUSH2 0x30da 000030d4: SWAP2 000030d5: SWAP1 000030d6: PUSH2 0x46c7 000030d9: JUMP 000030da: JUMPDEST 000030db: SWAP1 000030dc: POP 000030dd: PUSH2 0x30e5 000030e0: JUMP 000030e1: JUMPDEST 000030e2: DUP3 000030e3: SWAP1 000030e4: POP 000030e5: JUMPDEST 000030e6: SWAP3 000030e7: SWAP2 000030e8: POP 000030e9: POP 000030ea: JUMP 000030eb: JUMPDEST 000030ec: PUSH1 0x00 000030ee: PUSH2 0x314d 000030f1: DUP3 000030f2: PUSH1 0x40 000030f4: MLOAD 000030f5: DUP1 000030f6: PUSH1 0x40 000030f8: ADD 000030f9: PUSH1 0x40 000030fb: MSTORE 000030fc: DUP1 000030fd: PUSH1 0x20 000030ff: DUP2 00003100: MSTORE 00003101: PUSH1 0x20 00003103: ADD 00003104: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00003125: DUP2 00003126: MSTORE 00003127: POP 00003128: DUP6 00003129: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000313e: AND 0000313f: PUSH2 0x31b2 00003142: SWAP1 00003143: SWAP3 00003144: SWAP2 00003145: SWAP1 00003146: PUSH4 0xffffffff 0000314b: AND 0000314c: JUMP 0000314d: JUMPDEST 0000314e: SWAP1 0000314f: POP 00003150: PUSH1 0x00 00003152: DUP2 00003153: MLOAD 00003154: GT 00003155: ISZERO 00003156: PUSH2 0x31ad 00003159: JUMPI 0000315a: DUP1 0000315b: DUP1 0000315c: PUSH1 0x20 0000315e: ADD 0000315f: SWAP1 00003160: MLOAD 00003161: DUP2 00003162: ADD 00003163: SWAP1 00003164: PUSH2 0x316d 00003167: SWAP2 00003168: SWAP1 00003169: PUSH2 0x48bc 0000316c: JUMP 0000316d: JUMPDEST 0000316e: PUSH2 0x31ac 00003171: JUMPI 00003172: PUSH1 0x40 00003174: MLOAD 00003175: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00003196: DUP2 00003197: MSTORE 00003198: PUSH1 0x04 0000319a: ADD 0000319b: PUSH2 0x31a3 0000319e: SWAP1 0000319f: PUSH2 0x495b 000031a2: JUMP 000031a3: JUMPDEST 000031a4: PUSH1 0x40 000031a6: MLOAD 000031a7: DUP1 000031a8: SWAP2 000031a9: SUB 000031aa: SWAP1 000031ab: REVERT 000031ac: JUMPDEST 000031ad: JUMPDEST 000031ae: POP 000031af: POP 000031b0: POP 000031b1: JUMP 000031b2: JUMPDEST 000031b3: PUSH1 0x60 000031b5: PUSH2 0x31c1 000031b8: DUP5 000031b9: DUP5 000031ba: PUSH1 0x00 000031bc: DUP6 000031bd: PUSH2 0x31ca 000031c0: JUMP 000031c1: JUMPDEST 000031c2: SWAP1 000031c3: POP 000031c4: SWAP4 000031c5: SWAP3 000031c6: POP 000031c7: POP 000031c8: POP 000031c9: JUMP 000031ca: JUMPDEST 000031cb: PUSH1 0x60 000031cd: DUP3 000031ce: SELFBALANCE 000031cf: LT 000031d0: ISZERO 000031d1: PUSH2 0x320f 000031d4: JUMPI 000031d5: PUSH1 0x40 000031d7: MLOAD 000031d8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000031f9: DUP2 000031fa: MSTORE 000031fb: PUSH1 0x04 000031fd: ADD 000031fe: PUSH2 0x3206 00003201: SWAP1 00003202: PUSH2 0x49ed 00003205: JUMP 00003206: JUMPDEST 00003207: PUSH1 0x40 00003209: MLOAD 0000320a: DUP1 0000320b: SWAP2 0000320c: SUB 0000320d: SWAP1 0000320e: REVERT 0000320f: JUMPDEST 00003210: PUSH2 0x3218 00003213: DUP6 00003214: PUSH2 0x32de 00003217: JUMP 00003218: JUMPDEST 00003219: PUSH2 0x3257 0000321c: JUMPI 0000321d: PUSH1 0x40 0000321f: MLOAD 00003220: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00003241: DUP2 00003242: MSTORE 00003243: PUSH1 0x04 00003245: ADD 00003246: PUSH2 0x324e 00003249: SWAP1 0000324a: PUSH2 0x4a59 0000324d: JUMP 0000324e: JUMPDEST 0000324f: PUSH1 0x40 00003251: MLOAD 00003252: DUP1 00003253: SWAP2 00003254: SUB 00003255: SWAP1 00003256: REVERT 00003257: JUMPDEST 00003258: PUSH1 0x00 0000325a: DUP1 0000325b: DUP7 0000325c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003271: AND 00003272: DUP6 00003273: DUP8 00003274: PUSH1 0x40 00003276: MLOAD 00003277: PUSH2 0x3280 0000327a: SWAP2 0000327b: SWAP1 0000327c: PUSH2 0x4ac0 0000327f: JUMP 00003280: JUMPDEST 00003281: PUSH1 0x00 00003283: PUSH1 0x40 00003285: MLOAD 00003286: DUP1 00003287: DUP4 00003288: SUB 00003289: DUP2 0000328a: DUP6 0000328b: DUP8 0000328c: GAS 0000328d: CALL 0000328e: SWAP3 0000328f: POP 00003290: POP 00003291: POP 00003292: RETURNDATASIZE 00003293: DUP1 00003294: PUSH1 0x00 00003296: DUP2 00003297: EQ 00003298: PUSH2 0x32bd 0000329b: JUMPI 0000329c: PUSH1 0x40 0000329e: MLOAD 0000329f: SWAP2 000032a0: POP 000032a1: PUSH1 0x1f 000032a3: NOT 000032a4: PUSH1 0x3f 000032a6: RETURNDATASIZE 000032a7: ADD 000032a8: AND 000032a9: DUP3 000032aa: ADD 000032ab: PUSH1 0x40 000032ad: MSTORE 000032ae: RETURNDATASIZE 000032af: DUP3 000032b0: MSTORE 000032b1: RETURNDATASIZE 000032b2: PUSH1 0x00 000032b4: PUSH1 0x20 000032b6: DUP5 000032b7: ADD 000032b8: RETURNDATACOPY 000032b9: PUSH2 0x32c2 000032bc: JUMP 000032bd: JUMPDEST 000032be: PUSH1 0x60 000032c0: SWAP2 000032c1: POP 000032c2: JUMPDEST 000032c3: POP 000032c4: SWAP2 000032c5: POP 000032c6: SWAP2 000032c7: POP 000032c8: PUSH2 0x32d2 000032cb: DUP3 000032cc: DUP3 000032cd: DUP7 000032ce: PUSH2 0x32f1 000032d1: JUMP 000032d2: JUMPDEST 000032d3: SWAP3 000032d4: POP 000032d5: POP 000032d6: POP 000032d7: SWAP5 000032d8: SWAP4 000032d9: POP 000032da: POP 000032db: POP 000032dc: POP 000032dd: JUMP 000032de: JUMPDEST 000032df: PUSH1 0x00 000032e1: DUP1 000032e2: DUP3 000032e3: EXTCODESIZE 000032e4: SWAP1 000032e5: POP 000032e6: PUSH1 0x00 000032e8: DUP2 000032e9: GT 000032ea: SWAP2 000032eb: POP 000032ec: POP 000032ed: SWAP2 000032ee: SWAP1 000032ef: POP 000032f0: JUMP 000032f1: JUMPDEST 000032f2: PUSH1 0x60 000032f4: DUP4 000032f5: ISZERO 000032f6: PUSH2 0x3301 000032f9: JUMPI 000032fa: DUP3 000032fb: SWAP1 000032fc: POP 000032fd: PUSH2 0x3351 00003300: JUMP 00003301: JUMPDEST 00003302: PUSH1 0x00 00003304: DUP4 00003305: MLOAD 00003306: GT 00003307: ISZERO 00003308: PUSH2 0x3314 0000330b: JUMPI 0000330c: DUP3 0000330d: MLOAD 0000330e: DUP1 0000330f: DUP5 00003310: PUSH1 0x20 00003312: ADD 00003313: REVERT 00003314: JUMPDEST 00003315: DUP2 00003316: PUSH1 0x40 00003318: MLOAD 00003319: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000333a: DUP2 0000333b: MSTORE 0000333c: PUSH1 0x04 0000333e: ADD 0000333f: PUSH2 0x3348 00003342: SWAP2 00003343: SWAP1 00003344: PUSH2 0x437d 00003347: JUMP 00003348: JUMPDEST 00003349: PUSH1 0x40 0000334b: MLOAD 0000334c: DUP1 0000334d: SWAP2 0000334e: SUB 0000334f: SWAP1 00003350: REVERT 00003351: JUMPDEST 00003352: SWAP4 00003353: SWAP3 00003354: POP 00003355: POP 00003356: POP 00003357: JUMP 00003358: JUMPDEST 00003359: PUSH1 0x40 0000335b: MLOAD 0000335c: DUP1 0000335d: PUSH1 0xa0 0000335f: ADD 00003360: PUSH1 0x40 00003362: MSTORE 00003363: DUP1 00003364: PUSH1 0x00 00003366: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00003383: NOT 00003384: AND 00003385: DUP2 00003386: MSTORE 00003387: PUSH1 0x20 00003389: ADD 0000338a: PUSH1 0x00 0000338c: DUP1 0000338d: NOT 0000338e: AND 0000338f: DUP2 00003390: MSTORE 00003391: PUSH1 0x20 00003393: ADD 00003394: PUSH1 0x00 00003396: PUSH1 0xff 00003398: AND 00003399: DUP2 0000339a: MSTORE 0000339b: PUSH1 0x20 0000339d: ADD 0000339e: PUSH1 0x00 000033a0: PUSH1 0x03 000033a2: DUP2 000033a3: GT 000033a4: ISZERO 000033a5: PUSH2 0x33b1 000033a8: JUMPI 000033a9: PUSH2 0x33b0 000033ac: PUSH2 0x39a3 000033af: JUMP 000033b0: JUMPDEST 000033b1: JUMPDEST 000033b2: DUP2 000033b3: MSTORE 000033b4: PUSH1 0x20 000033b6: ADD 000033b7: PUSH1 0x00 000033b9: PUSH1 0x01 000033bb: DUP2 000033bc: GT 000033bd: ISZERO 000033be: PUSH2 0x33ca 000033c1: JUMPI 000033c2: PUSH2 0x33c9 000033c5: PUSH2 0x39a3 000033c8: JUMP 000033c9: JUMPDEST 000033ca: JUMPDEST 000033cb: DUP2 000033cc: MSTORE 000033cd: POP 000033ce: SWAP1 000033cf: JUMP 000033d0: JUMPDEST 000033d1: PUSH1 0x00 000033d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000033e8: DUP3 000033e9: AND 000033ea: SWAP1 000033eb: POP 000033ec: SWAP2 000033ed: SWAP1 000033ee: POP 000033ef: JUMP 000033f0: JUMPDEST 000033f1: PUSH1 0x00 000033f3: PUSH2 0x33fb 000033f6: DUP3 000033f7: PUSH2 0x33d0 000033fa: JUMP 000033fb: JUMPDEST 000033fc: SWAP1 000033fd: POP 000033fe: SWAP2 000033ff: SWAP1 00003400: POP 00003401: JUMP 00003402: JUMPDEST 00003403: PUSH2 0x340b 00003406: DUP2 00003407: PUSH2 0x33f0 0000340a: JUMP 0000340b: JUMPDEST 0000340c: DUP3 0000340d: MSTORE 0000340e: POP 0000340f: POP 00003410: JUMP 00003411: JUMPDEST 00003412: PUSH1 0x00 00003414: PUSH1 0x20 00003416: DUP3 00003417: ADD 00003418: SWAP1 00003419: POP 0000341a: PUSH2 0x3426 0000341d: PUSH1 0x00 0000341f: DUP4 00003420: ADD 00003421: DUP5 00003422: PUSH2 0x3402 00003425: JUMP 00003426: JUMPDEST 00003427: SWAP3 00003428: SWAP2 00003429: POP 0000342a: POP 0000342b: JUMP 0000342c: JUMPDEST 0000342d: PUSH1 0x00 0000342f: DUP1 00003430: REVERT 00003431: JUMPDEST 00003432: PUSH1 0x00 00003434: DUP1 00003435: REVERT 00003436: JUMPDEST 00003437: PUSH1 0x00 00003439: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 0000345a: DUP3 0000345b: AND 0000345c: SWAP1 0000345d: POP 0000345e: SWAP2 0000345f: SWAP1 00003460: POP 00003461: JUMP 00003462: JUMPDEST 00003463: PUSH2 0x346b 00003466: DUP2 00003467: PUSH2 0x3436 0000346a: JUMP 0000346b: JUMPDEST 0000346c: DUP2 0000346d: EQ 0000346e: PUSH2 0x3476 00003471: JUMPI 00003472: PUSH1 0x00 00003474: DUP1 00003475: REVERT 00003476: JUMPDEST 00003477: POP 00003478: JUMP 00003479: JUMPDEST 0000347a: PUSH1 0x00 0000347c: DUP2 0000347d: CALLDATALOAD 0000347e: SWAP1 0000347f: POP 00003480: PUSH2 0x3488 00003483: DUP2 00003484: PUSH2 0x3462 00003487: JUMP 00003488: JUMPDEST 00003489: SWAP3 0000348a: SWAP2 0000348b: POP 0000348c: POP 0000348d: JUMP 0000348e: JUMPDEST 0000348f: PUSH1 0x00 00003491: PUSH1 0x20 00003493: DUP3 00003494: DUP5 00003495: SUB 00003496: SLT 00003497: ISZERO 00003498: PUSH2 0x34a4 0000349b: JUMPI 0000349c: PUSH2 0x34a3 0000349f: PUSH2 0x342c 000034a2: JUMP 000034a3: JUMPDEST 000034a4: JUMPDEST 000034a5: PUSH1 0x00 000034a7: PUSH2 0x34b2 000034aa: DUP5 000034ab: DUP3 000034ac: DUP6 000034ad: ADD 000034ae: PUSH2 0x3479 000034b1: JUMP 000034b2: JUMPDEST 000034b3: SWAP2 000034b4: POP 000034b5: POP 000034b6: SWAP3 000034b7: SWAP2 000034b8: POP 000034b9: POP 000034ba: JUMP 000034bb: JUMPDEST 000034bc: PUSH1 0x00 000034be: DUP2 000034bf: ISZERO 000034c0: ISZERO 000034c1: SWAP1 000034c2: POP 000034c3: SWAP2 000034c4: SWAP1 000034c5: POP 000034c6: JUMP 000034c7: JUMPDEST 000034c8: PUSH2 0x34d0 000034cb: DUP2 000034cc: PUSH2 0x34bb 000034cf: JUMP 000034d0: JUMPDEST 000034d1: DUP3 000034d2: MSTORE 000034d3: POP 000034d4: POP 000034d5: JUMP 000034d6: JUMPDEST 000034d7: PUSH1 0x00 000034d9: PUSH1 0x20 000034db: DUP3 000034dc: ADD 000034dd: SWAP1 000034de: POP 000034df: PUSH2 0x34eb 000034e2: PUSH1 0x00 000034e4: DUP4 000034e5: ADD 000034e6: DUP5 000034e7: PUSH2 0x34c7 000034ea: JUMP 000034eb: JUMPDEST 000034ec: SWAP3 000034ed: SWAP2 000034ee: POP 000034ef: POP 000034f0: JUMP 000034f1: JUMPDEST 000034f2: PUSH2 0x34fa 000034f5: DUP2 000034f6: PUSH2 0x33f0 000034f9: JUMP 000034fa: JUMPDEST 000034fb: DUP2 000034fc: EQ 000034fd: PUSH2 0x3505 00003500: JUMPI 00003501: PUSH1 0x00 00003503: DUP1 00003504: REVERT 00003505: JUMPDEST 00003506: POP 00003507: JUMP 00003508: JUMPDEST 00003509: PUSH1 0x00 0000350b: DUP2 0000350c: CALLDATALOAD 0000350d: SWAP1 0000350e: POP 0000350f: PUSH2 0x3517 00003512: DUP2 00003513: PUSH2 0x34f1 00003516: JUMP 00003517: JUMPDEST 00003518: SWAP3 00003519: SWAP2 0000351a: POP 0000351b: POP 0000351c: JUMP 0000351d: JUMPDEST 0000351e: PUSH1 0x00 00003520: PUSH1 0x20 00003522: DUP3 00003523: DUP5 00003524: SUB 00003525: SLT 00003526: ISZERO 00003527: PUSH2 0x3533 0000352a: JUMPI 0000352b: PUSH2 0x3532 0000352e: PUSH2 0x342c 00003531: JUMP 00003532: JUMPDEST 00003533: JUMPDEST 00003534: PUSH1 0x00 00003536: PUSH2 0x3541 00003539: DUP5 0000353a: DUP3 0000353b: DUP6 0000353c: ADD 0000353d: PUSH2 0x3508 00003540: JUMP 00003541: JUMPDEST 00003542: SWAP2 00003543: POP 00003544: POP 00003545: SWAP3 00003546: SWAP2 00003547: POP 00003548: POP 00003549: JUMP 0000354a: JUMPDEST 0000354b: PUSH1 0x02 0000354d: DUP2 0000354e: LT 0000354f: PUSH2 0x3557 00003552: JUMPI 00003553: PUSH1 0x00 00003555: DUP1 00003556: REVERT 00003557: JUMPDEST 00003558: POP 00003559: JUMP 0000355a: JUMPDEST 0000355b: PUSH1 0x00 0000355d: DUP2 0000355e: CALLDATALOAD 0000355f: SWAP1 00003560: POP 00003561: PUSH2 0x3569 00003564: DUP2 00003565: PUSH2 0x354a 00003568: JUMP 00003569: JUMPDEST 0000356a: SWAP3 0000356b: SWAP2 0000356c: POP 0000356d: POP 0000356e: JUMP 0000356f: JUMPDEST 00003570: PUSH1 0x00 00003572: DUP1 00003573: PUSH1 0x40 00003575: DUP4 00003576: DUP6 00003577: SUB 00003578: SLT 00003579: ISZERO 0000357a: PUSH2 0x3586 0000357d: JUMPI 0000357e: PUSH2 0x3585 00003581: PUSH2 0x342c 00003584: JUMP 00003585: JUMPDEST 00003586: JUMPDEST 00003587: PUSH1 0x00 00003589: PUSH2 0x3594 0000358c: DUP6 0000358d: DUP3 0000358e: DUP7 0000358f: ADD 00003590: PUSH2 0x3508 00003593: JUMP 00003594: JUMPDEST 00003595: SWAP3 00003596: POP 00003597: POP 00003598: PUSH1 0x20 0000359a: PUSH2 0x35a5 0000359d: DUP6 0000359e: DUP3 0000359f: DUP7 000035a0: ADD 000035a1: PUSH2 0x355a 000035a4: JUMP 000035a5: JUMPDEST 000035a6: SWAP2 000035a7: POP 000035a8: POP 000035a9: SWAP3 000035aa: POP 000035ab: SWAP3 000035ac: SWAP1 000035ad: POP 000035ae: JUMP 000035af: JUMPDEST 000035b0: PUSH1 0x00 000035b2: DUP2 000035b3: SWAP1 000035b4: POP 000035b5: SWAP2 000035b6: SWAP1 000035b7: POP 000035b8: JUMP 000035b9: JUMPDEST 000035ba: PUSH2 0x35c2 000035bd: DUP2 000035be: PUSH2 0x35af 000035c1: JUMP 000035c2: JUMPDEST 000035c3: DUP2 000035c4: EQ 000035c5: PUSH2 0x35cd 000035c8: JUMPI 000035c9: PUSH1 0x00 000035cb: DUP1 000035cc: REVERT 000035cd: JUMPDEST 000035ce: POP 000035cf: JUMP 000035d0: JUMPDEST 000035d1: PUSH1 0x00 000035d3: DUP2 000035d4: CALLDATALOAD 000035d5: SWAP1 000035d6: POP 000035d7: PUSH2 0x35df 000035da: DUP2 000035db: PUSH2 0x35b9 000035de: JUMP 000035df: JUMPDEST 000035e0: SWAP3 000035e1: SWAP2 000035e2: POP 000035e3: POP 000035e4: JUMP 000035e5: JUMPDEST 000035e6: PUSH1 0x00 000035e8: PUSH1 0x20 000035ea: DUP3 000035eb: DUP5 000035ec: SUB 000035ed: SLT 000035ee: ISZERO 000035ef: PUSH2 0x35fb 000035f2: JUMPI 000035f3: PUSH2 0x35fa 000035f6: PUSH2 0x342c 000035f9: JUMP 000035fa: JUMPDEST 000035fb: JUMPDEST 000035fc: PUSH1 0x00 000035fe: PUSH2 0x3609 00003601: DUP5 00003602: DUP3 00003603: DUP6 00003604: ADD 00003605: PUSH2 0x35d0 00003608: JUMP 00003609: JUMPDEST 0000360a: SWAP2 0000360b: POP 0000360c: POP 0000360d: SWAP3 0000360e: SWAP2 0000360f: POP 00003610: POP 00003611: JUMP 00003612: JUMPDEST 00003613: PUSH2 0x361b 00003616: DUP2 00003617: PUSH2 0x35af 0000361a: JUMP 0000361b: JUMPDEST 0000361c: DUP3 0000361d: MSTORE 0000361e: POP 0000361f: POP 00003620: JUMP 00003621: JUMPDEST 00003622: PUSH1 0x00 00003624: PUSH1 0x20 00003626: DUP3 00003627: ADD 00003628: SWAP1 00003629: POP 0000362a: PUSH2 0x3636 0000362d: PUSH1 0x00 0000362f: DUP4 00003630: ADD 00003631: DUP5 00003632: PUSH2 0x3612 00003635: JUMP 00003636: JUMPDEST 00003637: SWAP3 00003638: SWAP2 00003639: POP 0000363a: POP 0000363b: JUMP 0000363c: JUMPDEST 0000363d: PUSH1 0x00 0000363f: DUP1 00003640: PUSH1 0x40 00003642: DUP4 00003643: DUP6 00003644: SUB 00003645: SLT 00003646: ISZERO 00003647: PUSH2 0x3653 0000364a: JUMPI 0000364b: PUSH2 0x3652 0000364e: PUSH2 0x342c 00003651: JUMP 00003652: JUMPDEST 00003653: JUMPDEST 00003654: PUSH1 0x00 00003656: PUSH2 0x3661 00003659: DUP6 0000365a: DUP3 0000365b: DUP7 0000365c: ADD 0000365d: PUSH2 0x35d0 00003660: JUMP 00003661: JUMPDEST 00003662: SWAP3 00003663: POP 00003664: POP 00003665: PUSH1 0x20 00003667: PUSH2 0x3672 0000366a: DUP6 0000366b: DUP3 0000366c: DUP7 0000366d: ADD 0000366e: PUSH2 0x3508 00003671: JUMP 00003672: JUMPDEST 00003673: SWAP2 00003674: POP 00003675: POP 00003676: SWAP3 00003677: POP 00003678: SWAP3 00003679: SWAP1 0000367a: POP 0000367b: JUMP 0000367c: JUMPDEST 0000367d: PUSH1 0x00 0000367f: PUSH16 0xffffffffffffffffffffffffffffffff 00003690: DUP3 00003691: AND 00003692: SWAP1 00003693: POP 00003694: SWAP2 00003695: SWAP1 00003696: POP 00003697: JUMP 00003698: JUMPDEST 00003699: PUSH2 0x36a1 0000369c: DUP2 0000369d: PUSH2 0x367c 000036a0: JUMP 000036a1: JUMPDEST 000036a2: DUP2 000036a3: EQ 000036a4: PUSH2 0x36ac 000036a7: JUMPI 000036a8: PUSH1 0x00 000036aa: DUP1 000036ab: REVERT 000036ac: JUMPDEST 000036ad: POP 000036ae: JUMP 000036af: JUMPDEST 000036b0: PUSH1 0x00 000036b2: DUP2 000036b3: CALLDATALOAD 000036b4: SWAP1 000036b5: POP 000036b6: PUSH2 0x36be 000036b9: DUP2 000036ba: PUSH2 0x3698 000036bd: JUMP 000036be: JUMPDEST 000036bf: SWAP3 000036c0: SWAP2 000036c1: POP 000036c2: POP 000036c3: JUMP 000036c4: JUMPDEST 000036c5: PUSH1 0x00 000036c7: DUP1 000036c8: PUSH1 0x00 000036ca: DUP1 000036cb: PUSH1 0x80 000036cd: DUP6 000036ce: DUP8 000036cf: SUB 000036d0: SLT 000036d1: ISZERO 000036d2: PUSH2 0x36de 000036d5: JUMPI 000036d6: PUSH2 0x36dd 000036d9: PUSH2 0x342c 000036dc: JUMP 000036dd: JUMPDEST 000036de: JUMPDEST 000036df: PUSH1 0x00 000036e1: PUSH2 0x36ec 000036e4: DUP8 000036e5: DUP3 000036e6: DUP9 000036e7: ADD 000036e8: PUSH2 0x36af 000036eb: JUMP 000036ec: JUMPDEST 000036ed: SWAP5 000036ee: POP 000036ef: POP 000036f0: PUSH1 0x20 000036f2: PUSH2 0x36fd 000036f5: DUP8 000036f6: DUP3 000036f7: DUP9 000036f8: ADD 000036f9: PUSH2 0x3508 000036fc: JUMP 000036fd: JUMPDEST 000036fe: SWAP4 000036ff: POP 00003700: POP 00003701: PUSH1 0x40 00003703: PUSH2 0x370e 00003706: DUP8 00003707: DUP3 00003708: DUP9 00003709: ADD 0000370a: PUSH2 0x35d0 0000370d: JUMP 0000370e: JUMPDEST 0000370f: SWAP3 00003710: POP 00003711: POP 00003712: PUSH1 0x60 00003714: PUSH2 0x371f 00003717: DUP8 00003718: DUP3 00003719: DUP9 0000371a: ADD 0000371b: PUSH2 0x3479 0000371e: JUMP 0000371f: JUMPDEST 00003720: SWAP2 00003721: POP 00003722: POP 00003723: SWAP3 00003724: SWAP6 00003725: SWAP2 00003726: SWAP5 00003727: POP 00003728: SWAP3 00003729: POP 0000372a: JUMP 0000372b: JUMPDEST 0000372c: PUSH1 0x00 0000372e: DUP1 0000372f: PUSH1 0x40 00003731: DUP4 00003732: DUP6 00003733: SUB 00003734: SLT 00003735: ISZERO 00003736: PUSH2 0x3742 00003739: JUMPI 0000373a: PUSH2 0x3741 0000373d: PUSH2 0x342c 00003740: JUMP 00003741: JUMPDEST 00003742: JUMPDEST 00003743: PUSH1 0x00 00003745: PUSH2 0x3750 00003748: DUP6 00003749: DUP3 0000374a: DUP7 0000374b: ADD 0000374c: PUSH2 0x3479 0000374f: JUMP 00003750: JUMPDEST 00003751: SWAP3 00003752: POP 00003753: POP 00003754: PUSH1 0x20 00003756: PUSH2 0x3761 00003759: DUP6 0000375a: DUP3 0000375b: DUP7 0000375c: ADD 0000375d: PUSH2 0x35d0 00003760: JUMP 00003761: JUMPDEST 00003762: SWAP2 00003763: POP 00003764: POP 00003765: SWAP3 00003766: POP 00003767: SWAP3 00003768: SWAP1 00003769: POP 0000376a: JUMP 0000376b: JUMPDEST 0000376c: PUSH1 0x00 0000376e: DUP2 0000376f: SWAP1 00003770: POP 00003771: SWAP2 00003772: SWAP1 00003773: POP 00003774: JUMP 00003775: JUMPDEST 00003776: PUSH2 0x377e 00003779: DUP2 0000377a: PUSH2 0x376b 0000377d: JUMP 0000377e: JUMPDEST 0000377f: DUP2 00003780: EQ 00003781: PUSH2 0x3789 00003784: JUMPI 00003785: PUSH1 0x00 00003787: DUP1 00003788: REVERT 00003789: JUMPDEST 0000378a: POP 0000378b: JUMP 0000378c: JUMPDEST 0000378d: PUSH1 0x00 0000378f: DUP2 00003790: CALLDATALOAD 00003791: SWAP1 00003792: POP 00003793: PUSH2 0x379b 00003796: DUP2 00003797: PUSH2 0x3775 0000379a: JUMP 0000379b: JUMPDEST 0000379c: SWAP3 0000379d: SWAP2 0000379e: POP 0000379f: POP 000037a0: JUMP 000037a1: JUMPDEST 000037a2: PUSH1 0x00 000037a4: DUP1 000037a5: PUSH1 0x00 000037a7: DUP1 000037a8: PUSH1 0x00 000037aa: PUSH1 0xa0 000037ac: DUP7 000037ad: DUP9 000037ae: SUB 000037af: SLT 000037b0: ISZERO 000037b1: PUSH2 0x37bd 000037b4: JUMPI 000037b5: PUSH2 0x37bc 000037b8: PUSH2 0x342c 000037bb: JUMP 000037bc: JUMPDEST 000037bd: JUMPDEST 000037be: PUSH1 0x00 000037c0: PUSH2 0x37cb 000037c3: DUP9 000037c4: DUP3 000037c5: DUP10 000037c6: ADD 000037c7: PUSH2 0x36af 000037ca: JUMP 000037cb: JUMPDEST 000037cc: SWAP6 000037cd: POP 000037ce: POP 000037cf: PUSH1 0x20 000037d1: PUSH2 0x37dc 000037d4: DUP9 000037d5: DUP3 000037d6: DUP10 000037d7: ADD 000037d8: PUSH2 0x3508 000037db: JUMP 000037dc: JUMPDEST 000037dd: SWAP5 000037de: POP 000037df: POP 000037e0: PUSH1 0x40 000037e2: PUSH2 0x37ed 000037e5: DUP9 000037e6: DUP3 000037e7: DUP10 000037e8: ADD 000037e9: PUSH2 0x35d0 000037ec: JUMP 000037ed: JUMPDEST 000037ee: SWAP4 000037ef: POP 000037f0: POP 000037f1: PUSH1 0x60 000037f3: PUSH2 0x37fe 000037f6: DUP9 000037f7: DUP3 000037f8: DUP10 000037f9: ADD 000037fa: PUSH2 0x3479 000037fd: JUMP 000037fe: JUMPDEST 000037ff: SWAP3 00003800: POP 00003801: POP 00003802: PUSH1 0x80 00003804: PUSH2 0x380f 00003807: DUP9 00003808: DUP3 00003809: DUP10 0000380a: ADD 0000380b: PUSH2 0x378c 0000380e: JUMP 0000380f: JUMPDEST 00003810: SWAP2 00003811: POP 00003812: POP 00003813: SWAP3 00003814: SWAP6 00003815: POP 00003816: SWAP3 00003817: SWAP6 00003818: SWAP1 00003819: SWAP4 0000381a: POP 0000381b: JUMP 0000381c: JUMPDEST 0000381d: PUSH1 0x00 0000381f: DUP1 00003820: REVERT 00003821: JUMPDEST 00003822: PUSH1 0x00 00003824: DUP1 00003825: REVERT 00003826: JUMPDEST 00003827: PUSH1 0x00 00003829: DUP1 0000382a: REVERT 0000382b: JUMPDEST 0000382c: PUSH1 0x00 0000382e: DUP1 0000382f: DUP4 00003830: PUSH1 0x1f 00003832: DUP5 00003833: ADD 00003834: SLT 00003835: PUSH2 0x3841 00003838: JUMPI 00003839: PUSH2 0x3840 0000383c: PUSH2 0x381c 0000383f: JUMP 00003840: JUMPDEST 00003841: JUMPDEST 00003842: DUP3 00003843: CALLDATALOAD 00003844: SWAP1 00003845: POP 00003846: PUSH8 0xffffffffffffffff 0000384f: DUP2 00003850: GT 00003851: ISZERO 00003852: PUSH2 0x385e 00003855: JUMPI 00003856: PUSH2 0x385d 00003859: PUSH2 0x3821 0000385c: JUMP 0000385d: JUMPDEST 0000385e: JUMPDEST 0000385f: PUSH1 0x20 00003861: DUP4 00003862: ADD 00003863: SWAP2 00003864: POP 00003865: DUP4 00003866: PUSH1 0x01 00003868: DUP3 00003869: MUL 0000386a: DUP4 0000386b: ADD 0000386c: GT 0000386d: ISZERO 0000386e: PUSH2 0x387a 00003871: JUMPI 00003872: PUSH2 0x3879 00003875: PUSH2 0x3826 00003878: JUMP 00003879: JUMPDEST 0000387a: JUMPDEST 0000387b: SWAP3 0000387c: POP 0000387d: SWAP3 0000387e: SWAP1 0000387f: POP 00003880: JUMP 00003881: JUMPDEST 00003882: PUSH1 0x00 00003884: DUP1 00003885: PUSH1 0x00 00003887: DUP1 00003888: PUSH1 0x00 0000388a: DUP1 0000388b: PUSH1 0x00 0000388d: DUP1 0000388e: PUSH1 0x00 00003890: DUP1 00003891: PUSH2 0x0100 00003894: DUP12 00003895: DUP14 00003896: SUB 00003897: SLT 00003898: ISZERO 00003899: PUSH2 0x38a5 0000389c: JUMPI 0000389d: PUSH2 0x38a4 000038a0: PUSH2 0x342c 000038a3: JUMP 000038a4: JUMPDEST 000038a5: JUMPDEST 000038a6: PUSH1 0x00 000038a8: PUSH2 0x38b3 000038ab: DUP14 000038ac: DUP3 000038ad: DUP15 000038ae: ADD 000038af: PUSH2 0x36af 000038b2: JUMP 000038b3: JUMPDEST 000038b4: SWAP11 000038b5: POP 000038b6: POP 000038b7: PUSH1 0x20 000038b9: PUSH2 0x38c4 000038bc: DUP14 000038bd: DUP3 000038be: DUP15 000038bf: ADD 000038c0: PUSH2 0x3508 000038c3: JUMP 000038c4: JUMPDEST 000038c5: SWAP10 000038c6: POP 000038c7: POP 000038c8: PUSH1 0x40 000038ca: PUSH2 0x38d5 000038cd: DUP14 000038ce: DUP3 000038cf: DUP15 000038d0: ADD 000038d1: PUSH2 0x378c 000038d4: JUMP 000038d5: JUMPDEST 000038d6: SWAP9 000038d7: POP 000038d8: POP 000038d9: PUSH1 0x60 000038db: PUSH2 0x38e6 000038de: DUP14 000038df: DUP3 000038e0: DUP15 000038e1: ADD 000038e2: PUSH2 0x3479 000038e5: JUMP 000038e6: JUMPDEST 000038e7: SWAP8 000038e8: POP 000038e9: POP 000038ea: PUSH1 0x80 000038ec: PUSH2 0x38f7 000038ef: DUP14 000038f0: DUP3 000038f1: DUP15 000038f2: ADD 000038f3: PUSH2 0x3479 000038f6: JUMP 000038f7: JUMPDEST 000038f8: SWAP7 000038f9: POP 000038fa: POP 000038fb: PUSH1 0xa0 000038fd: PUSH2 0x3908 00003900: DUP14 00003901: DUP3 00003902: DUP15 00003903: ADD 00003904: PUSH2 0x35d0 00003907: JUMP 00003908: JUMPDEST 00003909: SWAP6 0000390a: POP 0000390b: POP 0000390c: PUSH1 0xc0 0000390e: DUP12 0000390f: ADD 00003910: CALLDATALOAD 00003911: PUSH8 0xffffffffffffffff 0000391a: DUP2 0000391b: GT 0000391c: ISZERO 0000391d: PUSH2 0x3929 00003920: JUMPI 00003921: PUSH2 0x3928 00003924: PUSH2 0x3431 00003927: JUMP 00003928: JUMPDEST 00003929: JUMPDEST 0000392a: PUSH2 0x3935 0000392d: DUP14 0000392e: DUP3 0000392f: DUP15 00003930: ADD 00003931: PUSH2 0x382b 00003934: JUMP 00003935: JUMPDEST 00003936: SWAP5 00003937: POP 00003938: SWAP5 00003939: POP 0000393a: POP 0000393b: PUSH1 0xe0 0000393d: DUP12 0000393e: ADD 0000393f: CALLDATALOAD 00003940: PUSH8 0xffffffffffffffff 00003949: DUP2 0000394a: GT 0000394b: ISZERO 0000394c: PUSH2 0x3958 0000394f: JUMPI 00003950: PUSH2 0x3957 00003953: PUSH2 0x3431 00003956: JUMP 00003957: JUMPDEST 00003958: JUMPDEST 00003959: PUSH2 0x3964 0000395c: DUP14 0000395d: DUP3 0000395e: DUP15 0000395f: ADD 00003960: PUSH2 0x382b 00003963: JUMP 00003964: JUMPDEST 00003965: SWAP3 00003966: POP 00003967: SWAP3 00003968: POP 00003969: POP 0000396a: SWAP3 0000396b: SWAP6 0000396c: SWAP9 0000396d: SWAP12 0000396e: SWAP2 0000396f: SWAP5 00003970: SWAP8 00003971: SWAP11 00003972: POP 00003973: SWAP3 00003974: SWAP6 00003975: SWAP9 00003976: POP 00003977: JUMP 00003978: JUMPDEST 00003979: PUSH2 0x3981 0000397c: DUP2 0000397d: PUSH2 0x3436 00003980: JUMP 00003981: JUMPDEST 00003982: DUP3 00003983: MSTORE 00003984: POP 00003985: POP 00003986: JUMP 00003987: JUMPDEST 00003988: PUSH1 0x00 0000398a: PUSH1 0xff 0000398c: DUP3 0000398d: AND 0000398e: SWAP1 0000398f: POP 00003990: SWAP2 00003991: SWAP1 00003992: POP 00003993: JUMP 00003994: JUMPDEST 00003995: PUSH2 0x399d 00003998: DUP2 00003999: PUSH2 0x3987 0000399c: JUMP 0000399d: JUMPDEST 0000399e: DUP3 0000399f: MSTORE 000039a0: POP 000039a1: POP 000039a2: JUMP 000039a3: JUMPDEST 000039a4: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000039c5: PUSH1 0x00 000039c7: MSTORE 000039c8: PUSH1 0x21 000039ca: PUSH1 0x04 000039cc: MSTORE 000039cd: PUSH1 0x24 000039cf: PUSH1 0x00 000039d1: REVERT 000039d2: JUMPDEST 000039d3: PUSH1 0x04 000039d5: DUP2 000039d6: LT 000039d7: PUSH2 0x39e3 000039da: JUMPI 000039db: PUSH2 0x39e2 000039de: PUSH2 0x39a3 000039e1: JUMP 000039e2: JUMPDEST 000039e3: JUMPDEST 000039e4: POP 000039e5: JUMP 000039e6: JUMPDEST 000039e7: PUSH1 0x00 000039e9: DUP2 000039ea: SWAP1 000039eb: POP 000039ec: PUSH2 0x39f4 000039ef: DUP3 000039f0: PUSH2 0x39d2 000039f3: JUMP 000039f4: JUMPDEST 000039f5: SWAP2 000039f6: SWAP1 000039f7: POP 000039f8: JUMP 000039f9: JUMPDEST 000039fa: PUSH1 0x00 000039fc: PUSH2 0x3a04 000039ff: DUP3 00003a00: PUSH2 0x39e6 00003a03: JUMP 00003a04: JUMPDEST 00003a05: SWAP1 00003a06: POP 00003a07: SWAP2 00003a08: SWAP1 00003a09: POP 00003a0a: JUMP 00003a0b: JUMPDEST 00003a0c: PUSH2 0x3a14 00003a0f: DUP2 00003a10: PUSH2 0x39f9 00003a13: JUMP 00003a14: JUMPDEST 00003a15: DUP3 00003a16: MSTORE 00003a17: POP 00003a18: POP 00003a19: JUMP 00003a1a: JUMPDEST 00003a1b: PUSH1 0x02 00003a1d: DUP2 00003a1e: LT 00003a1f: PUSH2 0x3a2b 00003a22: JUMPI 00003a23: PUSH2 0x3a2a 00003a26: PUSH2 0x39a3 00003a29: JUMP 00003a2a: JUMPDEST 00003a2b: JUMPDEST 00003a2c: POP 00003a2d: JUMP 00003a2e: JUMPDEST 00003a2f: PUSH1 0x00 00003a31: DUP2 00003a32: SWAP1 00003a33: POP 00003a34: PUSH2 0x3a3c 00003a37: DUP3 00003a38: PUSH2 0x3a1a 00003a3b: JUMP 00003a3c: JUMPDEST 00003a3d: SWAP2 00003a3e: SWAP1 00003a3f: POP 00003a40: JUMP 00003a41: JUMPDEST 00003a42: PUSH1 0x00 00003a44: PUSH2 0x3a4c 00003a47: DUP3 00003a48: PUSH2 0x3a2e 00003a4b: JUMP 00003a4c: JUMPDEST 00003a4d: SWAP1 00003a4e: POP 00003a4f: SWAP2 00003a50: SWAP1 00003a51: POP 00003a52: JUMP 00003a53: JUMPDEST 00003a54: PUSH2 0x3a5c 00003a57: DUP2 00003a58: PUSH2 0x3a41 00003a5b: JUMP 00003a5c: JUMPDEST 00003a5d: DUP3 00003a5e: MSTORE 00003a5f: POP 00003a60: POP 00003a61: JUMP 00003a62: JUMPDEST 00003a63: PUSH1 0x00 00003a65: PUSH1 0xa0 00003a67: DUP3 00003a68: ADD 00003a69: SWAP1 00003a6a: POP 00003a6b: PUSH2 0x3a77 00003a6e: PUSH1 0x00 00003a70: DUP4 00003a71: ADD 00003a72: DUP9 00003a73: PUSH2 0x3978 00003a76: JUMP 00003a77: JUMPDEST 00003a78: PUSH2 0x3a84 00003a7b: PUSH1 0x20 00003a7d: DUP4 00003a7e: ADD 00003a7f: DUP8 00003a80: PUSH2 0x3612 00003a83: JUMP 00003a84: JUMPDEST 00003a85: PUSH2 0x3a91 00003a88: PUSH1 0x40 00003a8a: DUP4 00003a8b: ADD 00003a8c: DUP7 00003a8d: PUSH2 0x3994 00003a90: JUMP 00003a91: JUMPDEST 00003a92: PUSH2 0x3a9e 00003a95: PUSH1 0x60 00003a97: DUP4 00003a98: ADD 00003a99: DUP6 00003a9a: PUSH2 0x3a0b 00003a9d: JUMP 00003a9e: JUMPDEST 00003a9f: PUSH2 0x3aab 00003aa2: PUSH1 0x80 00003aa4: DUP4 00003aa5: ADD 00003aa6: DUP5 00003aa7: PUSH2 0x3a53 00003aaa: JUMP 00003aab: JUMPDEST 00003aac: SWAP7 00003aad: SWAP6 00003aae: POP 00003aaf: POP 00003ab0: POP 00003ab1: POP 00003ab2: POP 00003ab3: POP 00003ab4: JUMP 00003ab5: JUMPDEST 00003ab6: PUSH1 0x04 00003ab8: DUP2 00003ab9: LT 00003aba: PUSH2 0x3ac2 00003abd: JUMPI 00003abe: PUSH1 0x00 00003ac0: DUP1 00003ac1: REVERT 00003ac2: JUMPDEST 00003ac3: POP 00003ac4: JUMP 00003ac5: JUMPDEST 00003ac6: PUSH1 0x00 00003ac8: DUP2 00003ac9: CALLDATALOAD 00003aca: SWAP1 00003acb: POP 00003acc: PUSH2 0x3ad4 00003acf: DUP2 00003ad0: PUSH2 0x3ab5 00003ad3: JUMP 00003ad4: JUMPDEST 00003ad5: SWAP3 00003ad6: SWAP2 00003ad7: POP 00003ad8: POP 00003ad9: JUMP 00003ada: JUMPDEST 00003adb: PUSH1 0x00 00003add: DUP1 00003ade: PUSH1 0x00 00003ae0: DUP1 00003ae1: PUSH1 0x80 00003ae3: DUP6 00003ae4: DUP8 00003ae5: SUB 00003ae6: SLT 00003ae7: ISZERO 00003ae8: PUSH2 0x3af4 00003aeb: JUMPI 00003aec: PUSH2 0x3af3 00003aef: PUSH2 0x342c 00003af2: JUMP 00003af3: JUMPDEST 00003af4: JUMPDEST 00003af5: PUSH1 0x00 00003af7: PUSH2 0x3b02 00003afa: DUP8 00003afb: DUP3 00003afc: DUP9 00003afd: ADD 00003afe: PUSH2 0x3479 00003b01: JUMP 00003b02: JUMPDEST 00003b03: SWAP5 00003b04: POP 00003b05: POP 00003b06: PUSH1 0x20 00003b08: PUSH2 0x3b13 00003b0b: DUP8 00003b0c: DUP3 00003b0d: DUP9 00003b0e: ADD 00003b0f: PUSH2 0x35d0 00003b12: JUMP 00003b13: JUMPDEST 00003b14: SWAP4 00003b15: POP 00003b16: POP 00003b17: PUSH1 0x40 00003b19: PUSH2 0x3b24 00003b1c: DUP8 00003b1d: DUP3 00003b1e: DUP9 00003b1f: ADD 00003b20: PUSH2 0x3508 00003b23: JUMP 00003b24: JUMPDEST 00003b25: SWAP3 00003b26: POP 00003b27: POP 00003b28: PUSH1 0x60 00003b2a: PUSH2 0x3b35 00003b2d: DUP8 00003b2e: DUP3 00003b2f: DUP9 00003b30: ADD 00003b31: PUSH2 0x3ac5 00003b34: JUMP 00003b35: JUMPDEST 00003b36: SWAP2 00003b37: POP 00003b38: POP 00003b39: SWAP3 00003b3a: SWAP6 00003b3b: SWAP2 00003b3c: SWAP5 00003b3d: POP 00003b3e: SWAP3 00003b3f: POP 00003b40: JUMP 00003b41: JUMPDEST 00003b42: PUSH1 0x00 00003b44: DUP1 00003b45: PUSH1 0x00 00003b47: PUSH1 0x60 00003b49: DUP5 00003b4a: DUP7 00003b4b: SUB 00003b4c: SLT 00003b4d: ISZERO 00003b4e: PUSH2 0x3b5a 00003b51: JUMPI 00003b52: PUSH2 0x3b59 00003b55: PUSH2 0x342c 00003b58: JUMP 00003b59: JUMPDEST 00003b5a: JUMPDEST 00003b5b: PUSH1 0x00 00003b5d: PUSH2 0x3b68 00003b60: DUP7 00003b61: DUP3 00003b62: DUP8 00003b63: ADD 00003b64: PUSH2 0x3479 00003b67: JUMP 00003b68: JUMPDEST 00003b69: SWAP4 00003b6a: POP 00003b6b: POP 00003b6c: PUSH1 0x20 00003b6e: PUSH2 0x3b79 00003b71: DUP7 00003b72: DUP3 00003b73: DUP8 00003b74: ADD 00003b75: PUSH2 0x35d0 00003b78: JUMP 00003b79: JUMPDEST 00003b7a: SWAP3 00003b7b: POP 00003b7c: POP 00003b7d: PUSH1 0x40 00003b7f: PUSH2 0x3b8a 00003b82: DUP7 00003b83: DUP3 00003b84: DUP8 00003b85: ADD 00003b86: PUSH2 0x3508 00003b89: JUMP 00003b8a: JUMPDEST 00003b8b: SWAP2 00003b8c: POP 00003b8d: POP 00003b8e: SWAP3 00003b8f: POP 00003b90: SWAP3 00003b91: POP 00003b92: SWAP3 00003b93: JUMP 00003b94: JUMPDEST 00003b95: PUSH1 0x00 00003b97: DUP3 00003b98: DUP3 00003b99: MSTORE 00003b9a: PUSH1 0x20 00003b9c: DUP3 00003b9d: ADD 00003b9e: SWAP1 00003b9f: POP 00003ba0: SWAP3 00003ba1: SWAP2 00003ba2: POP 00003ba3: POP 00003ba4: JUMP 00003ba5: JUMPDEST 00003ba6: PUSH32 0x4272696467653a20756e737570706f7274656420746f6b656e00000000000000 00003bc7: PUSH1 0x00 00003bc9: DUP3 00003bca: ADD 00003bcb: MSTORE 00003bcc: POP 00003bcd: JUMP 00003bce: JUMPDEST 00003bcf: PUSH1 0x00 00003bd1: PUSH2 0x3bdb 00003bd4: PUSH1 0x19 00003bd6: DUP4 00003bd7: PUSH2 0x3b94 00003bda: JUMP 00003bdb: JUMPDEST 00003bdc: SWAP2 00003bdd: POP 00003bde: PUSH2 0x3be6 00003be1: DUP3 00003be2: PUSH2 0x3ba5 00003be5: JUMP 00003be6: JUMPDEST 00003be7: PUSH1 0x20 00003be9: DUP3 00003bea: ADD 00003beb: SWAP1 00003bec: POP 00003bed: SWAP2 00003bee: SWAP1 00003bef: POP 00003bf0: JUMP 00003bf1: JUMPDEST 00003bf2: PUSH1 0x00 00003bf4: PUSH1 0x20 00003bf6: DUP3 00003bf7: ADD 00003bf8: SWAP1 00003bf9: POP 00003bfa: DUP2 00003bfb: DUP2 00003bfc: SUB 00003bfd: PUSH1 0x00 00003bff: DUP4 00003c00: ADD 00003c01: MSTORE 00003c02: PUSH2 0x3c0a 00003c05: DUP2 00003c06: PUSH2 0x3bce 00003c09: JUMP 00003c0a: JUMPDEST 00003c0b: SWAP1 00003c0c: POP 00003c0d: SWAP2 00003c0e: SWAP1 00003c0f: POP 00003c10: JUMP 00003c11: JUMPDEST 00003c12: PUSH32 0x416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365 00003c33: PUSH1 0x00 00003c35: DUP3 00003c36: ADD 00003c37: MSTORE 00003c38: PUSH32 0x20726f6c657320666f722073656c660000000000000000000000000000000000 00003c59: PUSH1 0x20 00003c5b: DUP3 00003c5c: ADD 00003c5d: MSTORE 00003c5e: POP 00003c5f: JUMP 00003c60: JUMPDEST 00003c61: PUSH1 0x00 00003c63: PUSH2 0x3c6d 00003c66: PUSH1 0x2f 00003c68: DUP4 00003c69: PUSH2 0x3b94 00003c6c: JUMP 00003c6d: JUMPDEST 00003c6e: SWAP2 00003c6f: POP 00003c70: PUSH2 0x3c78 00003c73: DUP3 00003c74: PUSH2 0x3c11 00003c77: JUMP 00003c78: JUMPDEST 00003c79: PUSH1 0x40 00003c7b: DUP3 00003c7c: ADD 00003c7d: SWAP1 00003c7e: POP 00003c7f: SWAP2 00003c80: SWAP1 00003c81: POP 00003c82: JUMP 00003c83: JUMPDEST 00003c84: PUSH1 0x00 00003c86: PUSH1 0x20 00003c88: DUP3 00003c89: ADD 00003c8a: SWAP1 00003c8b: POP 00003c8c: DUP2 00003c8d: DUP2 00003c8e: SUB 00003c8f: PUSH1 0x00 00003c91: DUP4 00003c92: ADD 00003c93: MSTORE 00003c94: PUSH2 0x3c9c 00003c97: DUP2 00003c98: PUSH2 0x3c60 00003c9b: JUMP 00003c9c: JUMPDEST 00003c9d: SWAP1 00003c9e: POP 00003c9f: SWAP2 00003ca0: SWAP1 00003ca1: POP 00003ca2: JUMP 00003ca3: JUMPDEST 00003ca4: PUSH32 0x4272696467653a206973206e6f74206163746976650000000000000000000000 00003cc5: PUSH1 0x00 00003cc7: DUP3 00003cc8: ADD 00003cc9: MSTORE 00003cca: POP 00003ccb: JUMP 00003ccc: JUMPDEST 00003ccd: PUSH1 0x00 00003ccf: PUSH2 0x3cd9 00003cd2: PUSH1 0x15 00003cd4: DUP4 00003cd5: PUSH2 0x3b94 00003cd8: JUMP 00003cd9: JUMPDEST 00003cda: SWAP2 00003cdb: POP 00003cdc: PUSH2 0x3ce4 00003cdf: DUP3 00003ce0: PUSH2 0x3ca3 00003ce3: JUMP 00003ce4: JUMPDEST 00003ce5: PUSH1 0x20 00003ce7: DUP3 00003ce8: ADD 00003ce9: SWAP1 00003cea: POP 00003ceb: SWAP2 00003cec: SWAP1 00003ced: POP 00003cee: JUMP 00003cef: JUMPDEST 00003cf0: PUSH1 0x00 00003cf2: PUSH1 0x20 00003cf4: DUP3 00003cf5: ADD 00003cf6: SWAP1 00003cf7: POP 00003cf8: DUP2 00003cf9: DUP2 00003cfa: SUB 00003cfb: PUSH1 0x00 00003cfd: DUP4 00003cfe: ADD 00003cff: MSTORE 00003d00: PUSH2 0x3d08 00003d03: DUP2 00003d04: PUSH2 0x3ccc 00003d07: JUMP 00003d08: JUMPDEST 00003d09: SWAP1 00003d0a: POP 00003d0b: SWAP2 00003d0c: SWAP1 00003d0d: POP 00003d0e: JUMP 00003d0f: JUMPDEST 00003d10: PUSH32 0x4272696467653a2064697361626c656420746f6b656e00000000000000000000 00003d31: PUSH1 0x00 00003d33: DUP3 00003d34: ADD 00003d35: MSTORE 00003d36: POP 00003d37: JUMP 00003d38: JUMPDEST 00003d39: PUSH1 0x00 00003d3b: PUSH2 0x3d45 00003d3e: PUSH1 0x16 00003d40: DUP4 00003d41: PUSH2 0x3b94 00003d44: JUMP 00003d45: JUMPDEST 00003d46: SWAP2 00003d47: POP 00003d48: PUSH2 0x3d50 00003d4b: DUP3 00003d4c: PUSH2 0x3d0f 00003d4f: JUMP 00003d50: JUMPDEST 00003d51: PUSH1 0x20 00003d53: DUP3 00003d54: ADD 00003d55: SWAP1 00003d56: POP 00003d57: SWAP2 00003d58: SWAP1 00003d59: POP 00003d5a: JUMP 00003d5b: JUMPDEST 00003d5c: PUSH1 0x00 00003d5e: PUSH1 0x20 00003d60: DUP3 00003d61: ADD 00003d62: SWAP1 00003d63: POP 00003d64: DUP2 00003d65: DUP2 00003d66: SUB 00003d67: PUSH1 0x00 00003d69: DUP4 00003d6a: ADD 00003d6b: MSTORE 00003d6c: PUSH2 0x3d74 00003d6f: DUP2 00003d70: PUSH2 0x3d38 00003d73: JUMP 00003d74: JUMPDEST 00003d75: SWAP1 00003d76: POP 00003d77: SWAP2 00003d78: SWAP1 00003d79: POP 00003d7a: JUMP 00003d7b: JUMPDEST 00003d7c: PUSH32 0x4272696467653a20696e76616c696420746f6b656e2074797065000000000000 00003d9d: PUSH1 0x00 00003d9f: DUP3 00003da0: ADD 00003da1: MSTORE 00003da2: POP 00003da3: JUMP 00003da4: JUMPDEST 00003da5: PUSH1 0x00 00003da7: PUSH2 0x3db1 00003daa: PUSH1 0x1a 00003dac: DUP4 00003dad: PUSH2 0x3b94 00003db0: JUMP 00003db1: JUMPDEST 00003db2: SWAP2 00003db3: POP 00003db4: PUSH2 0x3dbc 00003db7: DUP3 00003db8: PUSH2 0x3d7b 00003dbb: JUMP 00003dbc: JUMPDEST 00003dbd: PUSH1 0x20 00003dbf: DUP3 00003dc0: ADD 00003dc1: SWAP1 00003dc2: POP 00003dc3: SWAP2 00003dc4: SWAP1 00003dc5: POP 00003dc6: JUMP 00003dc7: JUMPDEST 00003dc8: PUSH1 0x00 00003dca: PUSH1 0x20 00003dcc: DUP3 00003dcd: ADD 00003dce: SWAP1 00003dcf: POP 00003dd0: DUP2 00003dd1: DUP2 00003dd2: SUB 00003dd3: PUSH1 0x00 00003dd5: DUP4 00003dd6: ADD 00003dd7: MSTORE 00003dd8: PUSH2 0x3de0 00003ddb: DUP2 00003ddc: PUSH2 0x3da4 00003ddf: JUMP 00003de0: JUMPDEST 00003de1: SWAP1 00003de2: POP 00003de3: SWAP2 00003de4: SWAP1 00003de5: POP 00003de6: JUMP 00003de7: JUMPDEST 00003de8: PUSH2 0x3df0 00003deb: DUP2 00003dec: PUSH2 0x376b 00003def: JUMP 00003df0: JUMPDEST 00003df1: DUP3 00003df2: MSTORE 00003df3: POP 00003df4: POP 00003df5: JUMP 00003df6: JUMPDEST 00003df7: PUSH1 0x00 00003df9: PUSH1 0x40 00003dfb: DUP3 00003dfc: ADD 00003dfd: SWAP1 00003dfe: POP 00003dff: PUSH2 0x3e0b 00003e02: PUSH1 0x00 00003e04: DUP4 00003e05: ADD 00003e06: DUP6 00003e07: PUSH2 0x3402 00003e0a: JUMP 00003e0b: JUMPDEST 00003e0c: PUSH2 0x3e18 00003e0f: PUSH1 0x20 00003e11: DUP4 00003e12: ADD 00003e13: DUP5 00003e14: PUSH2 0x3de7 00003e17: JUMP 00003e18: JUMPDEST 00003e19: SWAP4 00003e1a: SWAP3 00003e1b: POP 00003e1c: POP 00003e1d: POP 00003e1e: JUMP 00003e1f: JUMPDEST 00003e20: PUSH2 0x3e28 00003e23: DUP2 00003e24: PUSH2 0x367c 00003e27: JUMP 00003e28: JUMPDEST 00003e29: DUP3 00003e2a: MSTORE 00003e2b: POP 00003e2c: POP 00003e2d: JUMP 00003e2e: JUMPDEST 00003e2f: PUSH1 0x00 00003e31: DUP3 00003e32: DUP3 00003e33: MSTORE 00003e34: PUSH1 0x20 00003e36: DUP3 00003e37: ADD 00003e38: SWAP1 00003e39: POP 00003e3a: SWAP3 00003e3b: SWAP2 00003e3c: POP 00003e3d: POP 00003e3e: JUMP 00003e3f: JUMPDEST 00003e40: DUP3 00003e41: DUP2 00003e42: DUP4 00003e43: CALLDATACOPY 00003e44: PUSH1 0x00 00003e46: DUP4 00003e47: DUP4 00003e48: ADD 00003e49: MSTORE 00003e4a: POP 00003e4b: POP 00003e4c: POP 00003e4d: JUMP 00003e4e: JUMPDEST 00003e4f: PUSH1 0x00 00003e51: PUSH1 0x1f 00003e53: NOT 00003e54: PUSH1 0x1f 00003e56: DUP4 00003e57: ADD 00003e58: AND 00003e59: SWAP1 00003e5a: POP 00003e5b: SWAP2 00003e5c: SWAP1 00003e5d: POP 00003e5e: JUMP 00003e5f: JUMPDEST 00003e60: PUSH1 0x00 00003e62: PUSH2 0x3e6b 00003e65: DUP4 00003e66: DUP6 00003e67: PUSH2 0x3e2e 00003e6a: JUMP 00003e6b: JUMPDEST 00003e6c: SWAP4 00003e6d: POP 00003e6e: PUSH2 0x3e78 00003e71: DUP4 00003e72: DUP6 00003e73: DUP5 00003e74: PUSH2 0x3e3f 00003e77: JUMP 00003e78: JUMPDEST 00003e79: PUSH2 0x3e81 00003e7c: DUP4 00003e7d: PUSH2 0x3e4e 00003e80: JUMP 00003e81: JUMPDEST 00003e82: DUP5 00003e83: ADD 00003e84: SWAP1 00003e85: POP 00003e86: SWAP4 00003e87: SWAP3 00003e88: POP 00003e89: POP 00003e8a: POP 00003e8b: JUMP 00003e8c: JUMPDEST 00003e8d: PUSH1 0x00 00003e8f: PUSH2 0x0100 00003e92: DUP3 00003e93: ADD 00003e94: SWAP1 00003e95: POP 00003e96: PUSH2 0x3ea2 00003e99: PUSH1 0x00 00003e9b: DUP4 00003e9c: ADD 00003e9d: DUP14 00003e9e: PUSH2 0x3e1f 00003ea1: JUMP 00003ea2: JUMPDEST 00003ea3: PUSH2 0x3eaf 00003ea6: PUSH1 0x20 00003ea8: DUP4 00003ea9: ADD 00003eaa: DUP13 00003eab: PUSH2 0x3402 00003eae: JUMP 00003eaf: JUMPDEST 00003eb0: PUSH2 0x3ebc 00003eb3: PUSH1 0x40 00003eb5: DUP4 00003eb6: ADD 00003eb7: DUP12 00003eb8: PUSH2 0x3de7 00003ebb: JUMP 00003ebc: JUMPDEST 00003ebd: PUSH2 0x3ec9 00003ec0: PUSH1 0x60 00003ec2: DUP4 00003ec3: ADD 00003ec4: DUP11 00003ec5: PUSH2 0x3978 00003ec8: JUMP 00003ec9: JUMPDEST 00003eca: PUSH2 0x3ed6 00003ecd: PUSH1 0x80 00003ecf: DUP4 00003ed0: ADD 00003ed1: DUP10 00003ed2: PUSH2 0x3978 00003ed5: JUMP 00003ed6: JUMPDEST 00003ed7: PUSH2 0x3ee3 00003eda: PUSH1 0xa0 00003edc: DUP4 00003edd: ADD 00003ede: DUP9 00003edf: PUSH2 0x3612 00003ee2: JUMP 00003ee3: JUMPDEST 00003ee4: DUP2 00003ee5: DUP2 00003ee6: SUB 00003ee7: PUSH1 0xc0 00003ee9: DUP4 00003eea: ADD 00003eeb: MSTORE 00003eec: PUSH2 0x3ef6 00003eef: DUP2 00003ef0: DUP7 00003ef1: DUP9 00003ef2: PUSH2 0x3e5f 00003ef5: JUMP 00003ef6: JUMPDEST 00003ef7: SWAP1 00003ef8: POP 00003ef9: DUP2 00003efa: DUP2 00003efb: SUB 00003efc: PUSH1 0xe0 00003efe: DUP4 00003eff: ADD 00003f00: MSTORE 00003f01: PUSH2 0x3f0b 00003f04: DUP2 00003f05: DUP5 00003f06: DUP7 00003f07: PUSH2 0x3e5f 00003f0a: JUMP 00003f0b: JUMPDEST 00003f0c: SWAP1 00003f0d: POP 00003f0e: SWAP12 00003f0f: SWAP11 00003f10: POP 00003f11: POP 00003f12: POP 00003f13: POP 00003f14: POP 00003f15: POP 00003f16: POP 00003f17: POP 00003f18: POP 00003f19: POP 00003f1a: POP 00003f1b: JUMP 00003f1c: JUMPDEST 00003f1d: PUSH1 0x00 00003f1f: DUP2 00003f20: MLOAD 00003f21: SWAP1 00003f22: POP 00003f23: PUSH2 0x3f2b 00003f26: DUP2 00003f27: PUSH2 0x3775 00003f2a: JUMP 00003f2b: JUMPDEST 00003f2c: SWAP3 00003f2d: SWAP2 00003f2e: POP 00003f2f: POP 00003f30: JUMP 00003f31: JUMPDEST 00003f32: PUSH1 0x00 00003f34: PUSH1 0x20 00003f36: DUP3 00003f37: DUP5 00003f38: SUB 00003f39: SLT 00003f3a: ISZERO 00003f3b: PUSH2 0x3f47 00003f3e: JUMPI 00003f3f: PUSH2 0x3f46 00003f42: PUSH2 0x342c 00003f45: JUMP 00003f46: JUMPDEST 00003f47: JUMPDEST 00003f48: PUSH1 0x00 00003f4a: PUSH2 0x3f55 00003f4d: DUP5 00003f4e: DUP3 00003f4f: DUP6 00003f50: ADD 00003f51: PUSH2 0x3f1c 00003f54: JUMP 00003f55: JUMPDEST 00003f56: SWAP2 00003f57: POP 00003f58: POP 00003f59: SWAP3 00003f5a: SWAP2 00003f5b: POP 00003f5c: POP 00003f5d: JUMP 00003f5e: JUMPDEST 00003f5f: PUSH32 0x4272696467653a20616d6f756e7420746f6f20736d616c6c0000000000000000 00003f80: PUSH1 0x00 00003f82: DUP3 00003f83: ADD 00003f84: MSTORE 00003f85: POP 00003f86: JUMP 00003f87: JUMPDEST 00003f88: PUSH1 0x00 00003f8a: PUSH2 0x3f94 00003f8d: PUSH1 0x18 00003f8f: DUP4 00003f90: PUSH2 0x3b94 00003f93: JUMP 00003f94: JUMPDEST 00003f95: SWAP2 00003f96: POP 00003f97: PUSH2 0x3f9f 00003f9a: DUP3 00003f9b: PUSH2 0x3f5e 00003f9e: JUMP 00003f9f: JUMPDEST 00003fa0: PUSH1 0x20 00003fa2: DUP3 00003fa3: ADD 00003fa4: SWAP1 00003fa5: POP 00003fa6: SWAP2 00003fa7: SWAP1 00003fa8: POP 00003fa9: JUMP 00003faa: JUMPDEST 00003fab: PUSH1 0x00 00003fad: PUSH1 0x20 00003faf: DUP3 00003fb0: ADD 00003fb1: SWAP1 00003fb2: POP 00003fb3: DUP2 00003fb4: DUP2 00003fb5: SUB 00003fb6: PUSH1 0x00 00003fb8: DUP4 00003fb9: ADD 00003fba: MSTORE 00003fbb: PUSH2 0x3fc3 00003fbe: DUP2 00003fbf: PUSH2 0x3f87 00003fc2: JUMP 00003fc3: JUMPDEST 00003fc4: SWAP1 00003fc5: POP 00003fc6: SWAP2 00003fc7: SWAP1 00003fc8: POP 00003fc9: JUMP 00003fca: JUMPDEST 00003fcb: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00003fec: PUSH1 0x00 00003fee: MSTORE 00003fef: PUSH1 0x11 00003ff1: PUSH1 0x04 00003ff3: MSTORE 00003ff4: PUSH1 0x24 00003ff6: PUSH1 0x00 00003ff8: REVERT 00003ff9: JUMPDEST 00003ffa: PUSH1 0x00 00003ffc: PUSH2 0x4004 00003fff: DUP3 00004000: PUSH2 0x376b 00004003: JUMP 00004004: JUMPDEST 00004005: SWAP2 00004006: POP 00004007: PUSH2 0x400f 0000400a: DUP4 0000400b: PUSH2 0x376b 0000400e: JUMP 0000400f: JUMPDEST 00004010: SWAP3 00004011: POP 00004012: DUP3 00004013: DUP3 00004014: SUB 00004015: SWAP1 00004016: POP 00004017: DUP2 00004018: DUP2 00004019: GT 0000401a: ISZERO 0000401b: PUSH2 0x4027 0000401e: JUMPI 0000401f: PUSH2 0x4026 00004022: PUSH2 0x3fca 00004025: JUMP 00004026: JUMPDEST 00004027: JUMPDEST 00004028: SWAP3 00004029: SWAP2 0000402a: POP 0000402b: POP 0000402c: JUMP 0000402d: JUMPDEST 0000402e: PUSH1 0x00 00004030: PUSH1 0x60 00004032: DUP3 00004033: ADD 00004034: SWAP1 00004035: POP 00004036: PUSH2 0x4042 00004039: PUSH1 0x00 0000403b: DUP4 0000403c: ADD 0000403d: DUP7 0000403e: PUSH2 0x3402 00004041: JUMP 00004042: JUMPDEST 00004043: PUSH2 0x404f 00004046: PUSH1 0x20 00004048: DUP4 00004049: ADD 0000404a: DUP6 0000404b: PUSH2 0x3de7 0000404e: JUMP 0000404f: JUMPDEST 00004050: PUSH2 0x405c 00004053: PUSH1 0x40 00004055: DUP4 00004056: ADD 00004057: DUP5 00004058: PUSH2 0x3978 0000405b: JUMP 0000405c: JUMPDEST 0000405d: SWAP5 0000405e: SWAP4 0000405f: POP 00004060: POP 00004061: POP 00004062: POP 00004063: JUMP 00004064: JUMPDEST 00004065: PUSH32 0x4272696467653a20657869737473000000000000000000000000000000000000 00004086: PUSH1 0x00 00004088: DUP3 00004089: ADD 0000408a: MSTORE 0000408b: POP 0000408c: JUMP 0000408d: JUMPDEST 0000408e: PUSH1 0x00 00004090: PUSH2 0x409a 00004093: PUSH1 0x0e 00004095: DUP4 00004096: PUSH2 0x3b94 00004099: JUMP 0000409a: JUMPDEST 0000409b: SWAP2 0000409c: POP 0000409d: PUSH2 0x40a5 000040a0: DUP3 000040a1: PUSH2 0x4064 000040a4: JUMP 000040a5: JUMPDEST 000040a6: PUSH1 0x20 000040a8: DUP3 000040a9: ADD 000040aa: SWAP1 000040ab: POP 000040ac: SWAP2 000040ad: SWAP1 000040ae: POP 000040af: JUMP 000040b0: JUMPDEST 000040b1: PUSH1 0x00 000040b3: PUSH1 0x20 000040b5: DUP3 000040b6: ADD 000040b7: SWAP1 000040b8: POP 000040b9: DUP2 000040ba: DUP2 000040bb: SUB 000040bc: PUSH1 0x00 000040be: DUP4 000040bf: ADD 000040c0: MSTORE 000040c1: PUSH2 0x40c9 000040c4: DUP2 000040c5: PUSH2 0x408d 000040c8: JUMP 000040c9: JUMPDEST 000040ca: SWAP1 000040cb: POP 000040cc: SWAP2 000040cd: SWAP1 000040ce: POP 000040cf: JUMP 000040d0: JUMPDEST 000040d1: PUSH2 0x40d9 000040d4: DUP2 000040d5: PUSH2 0x3987 000040d8: JUMP 000040d9: JUMPDEST 000040da: DUP2 000040db: EQ 000040dc: PUSH2 0x40e4 000040df: JUMPI 000040e0: PUSH1 0x00 000040e2: DUP1 000040e3: REVERT 000040e4: JUMPDEST 000040e5: POP 000040e6: JUMP 000040e7: JUMPDEST 000040e8: PUSH1 0x00 000040ea: DUP2 000040eb: MLOAD 000040ec: SWAP1 000040ed: POP 000040ee: PUSH2 0x40f6 000040f1: DUP2 000040f2: PUSH2 0x40d0 000040f5: JUMP 000040f6: JUMPDEST 000040f7: SWAP3 000040f8: SWAP2 000040f9: POP 000040fa: POP 000040fb: JUMP 000040fc: JUMPDEST 000040fd: PUSH1 0x00 000040ff: PUSH1 0x20 00004101: DUP3 00004102: DUP5 00004103: SUB 00004104: SLT 00004105: ISZERO 00004106: PUSH2 0x4112 00004109: JUMPI 0000410a: PUSH2 0x4111 0000410d: PUSH2 0x342c 00004110: JUMP 00004111: JUMPDEST 00004112: JUMPDEST 00004113: PUSH1 0x00 00004115: PUSH2 0x4120 00004118: DUP5 00004119: DUP3 0000411a: DUP6 0000411b: ADD 0000411c: PUSH2 0x40e7 0000411f: JUMP 00004120: JUMPDEST 00004121: SWAP2 00004122: POP 00004123: POP 00004124: SWAP3 00004125: SWAP2 00004126: POP 00004127: POP 00004128: JUMP 00004129: JUMPDEST 0000412a: PUSH32 0x4272696467653a207a65726f206164647265737320617574686f726974790000 0000414b: PUSH1 0x00 0000414d: DUP3 0000414e: ADD 0000414f: MSTORE 00004150: POP 00004151: JUMP 00004152: JUMPDEST 00004153: PUSH1 0x00 00004155: PUSH2 0x415f 00004158: PUSH1 0x1e 0000415a: DUP4 0000415b: PUSH2 0x3b94 0000415e: JUMP 0000415f: JUMPDEST 00004160: SWAP2 00004161: POP 00004162: PUSH2 0x416a 00004165: DUP3 00004166: PUSH2 0x4129 00004169: JUMP 0000416a: JUMPDEST 0000416b: PUSH1 0x20 0000416d: DUP3 0000416e: ADD 0000416f: SWAP1 00004170: POP 00004171: SWAP2 00004172: SWAP1 00004173: POP 00004174: JUMP 00004175: JUMPDEST 00004176: PUSH1 0x00 00004178: PUSH1 0x20 0000417a: DUP3 0000417b: ADD 0000417c: SWAP1 0000417d: POP 0000417e: DUP2 0000417f: DUP2 00004180: SUB 00004181: PUSH1 0x00 00004183: DUP4 00004184: ADD 00004185: MSTORE 00004186: PUSH2 0x418e 00004189: DUP2 0000418a: PUSH2 0x4152 0000418d: JUMP 0000418e: JUMPDEST 0000418f: SWAP1 00004190: POP 00004191: SWAP2 00004192: SWAP1 00004193: POP 00004194: JUMP 00004195: JUMPDEST 00004196: PUSH32 0x4272696467653a20746f6b656e206e6f7420666f756e64000000000000000000 000041b7: PUSH1 0x00 000041b9: DUP3 000041ba: ADD 000041bb: MSTORE 000041bc: POP 000041bd: JUMP 000041be: JUMPDEST 000041bf: PUSH1 0x00 000041c1: PUSH2 0x41cb 000041c4: PUSH1 0x17 000041c6: DUP4 000041c7: PUSH2 0x3b94 000041ca: JUMP 000041cb: JUMPDEST 000041cc: SWAP2 000041cd: POP 000041ce: PUSH2 0x41d6 000041d1: DUP3 000041d2: PUSH2 0x4195 000041d5: JUMP 000041d6: JUMPDEST 000041d7: PUSH1 0x20 000041d9: DUP3 000041da: ADD 000041db: SWAP1 000041dc: POP 000041dd: SWAP2 000041de: SWAP1 000041df: POP 000041e0: JUMP 000041e1: JUMPDEST 000041e2: PUSH1 0x00 000041e4: PUSH1 0x20 000041e6: DUP3 000041e7: ADD 000041e8: SWAP1 000041e9: POP 000041ea: DUP2 000041eb: DUP2 000041ec: SUB 000041ed: PUSH1 0x00 000041ef: DUP4 000041f0: ADD 000041f1: MSTORE 000041f2: PUSH2 0x41fa 000041f5: DUP2 000041f6: PUSH2 0x41be 000041f9: JUMP 000041fa: JUMPDEST 000041fb: SWAP1 000041fc: POP 000041fd: SWAP2 000041fe: SWAP1 000041ff: POP 00004200: JUMP 00004201: JUMPDEST 00004202: PUSH1 0x00 00004204: DUP2 00004205: SWAP1 00004206: POP 00004207: SWAP3 00004208: SWAP2 00004209: POP 0000420a: POP 0000420b: JUMP 0000420c: JUMPDEST 0000420d: PUSH32 0x416363657373436f6e74726f6c3a206163636f756e7420000000000000000000 0000422e: PUSH1 0x00 00004230: DUP3 00004231: ADD 00004232: MSTORE 00004233: POP 00004234: JUMP 00004235: JUMPDEST 00004236: PUSH1 0x00 00004238: PUSH2 0x4242 0000423b: PUSH1 0x17 0000423d: DUP4 0000423e: PUSH2 0x4201 00004241: JUMP 00004242: JUMPDEST 00004243: SWAP2 00004244: POP 00004245: PUSH2 0x424d 00004248: DUP3 00004249: PUSH2 0x420c 0000424c: JUMP 0000424d: JUMPDEST 0000424e: PUSH1 0x17 00004250: DUP3 00004251: ADD 00004252: SWAP1 00004253: POP 00004254: SWAP2 00004255: SWAP1 00004256: POP 00004257: JUMP 00004258: JUMPDEST 00004259: PUSH1 0x00 0000425b: DUP2 0000425c: MLOAD 0000425d: SWAP1 0000425e: POP 0000425f: SWAP2 00004260: SWAP1 00004261: POP 00004262: JUMP 00004263: JUMPDEST 00004264: PUSH1 0x00 00004266: JUMPDEST 00004267: DUP4 00004268: DUP2 00004269: LT 0000426a: ISZERO 0000426b: PUSH2 0x4281 0000426e: JUMPI 0000426f: DUP1 00004270: DUP3 00004271: ADD 00004272: MLOAD 00004273: DUP2 00004274: DUP5 00004275: ADD 00004276: MSTORE 00004277: PUSH1 0x20 00004279: DUP2 0000427a: ADD 0000427b: SWAP1 0000427c: POP 0000427d: PUSH2 0x4266 00004280: JUMP 00004281: JUMPDEST 00004282: PUSH1 0x00 00004284: DUP5 00004285: DUP5 00004286: ADD 00004287: MSTORE 00004288: POP 00004289: POP 0000428a: POP 0000428b: POP 0000428c: JUMP 0000428d: JUMPDEST 0000428e: PUSH1 0x00 00004290: PUSH2 0x4298 00004293: DUP3 00004294: PUSH2 0x4258 00004297: JUMP 00004298: JUMPDEST 00004299: PUSH2 0x42a2 0000429c: DUP2 0000429d: DUP6 0000429e: PUSH2 0x4201 000042a1: JUMP 000042a2: JUMPDEST 000042a3: SWAP4 000042a4: POP 000042a5: PUSH2 0x42b2 000042a8: DUP2 000042a9: DUP6 000042aa: PUSH1 0x20 000042ac: DUP7 000042ad: ADD 000042ae: PUSH2 0x4263 000042b1: JUMP 000042b2: JUMPDEST 000042b3: DUP1 000042b4: DUP5 000042b5: ADD 000042b6: SWAP2 000042b7: POP 000042b8: POP 000042b9: SWAP3 000042ba: SWAP2 000042bb: POP 000042bc: POP 000042bd: JUMP 000042be: JUMPDEST 000042bf: PUSH32 0x206973206d697373696e6720726f6c6520000000000000000000000000000000 000042e0: PUSH1 0x00 000042e2: DUP3 000042e3: ADD 000042e4: MSTORE 000042e5: POP 000042e6: JUMP 000042e7: JUMPDEST 000042e8: PUSH1 0x00 000042ea: PUSH2 0x42f4 000042ed: PUSH1 0x11 000042ef: DUP4 000042f0: PUSH2 0x4201 000042f3: JUMP 000042f4: JUMPDEST 000042f5: SWAP2 000042f6: POP 000042f7: PUSH2 0x42ff 000042fa: DUP3 000042fb: PUSH2 0x42be 000042fe: JUMP 000042ff: JUMPDEST 00004300: PUSH1 0x11 00004302: DUP3 00004303: ADD 00004304: SWAP1 00004305: POP 00004306: SWAP2 00004307: SWAP1 00004308: POP 00004309: JUMP 0000430a: JUMPDEST 0000430b: PUSH1 0x00 0000430d: PUSH2 0x4315 00004310: DUP3 00004311: PUSH2 0x4235 00004314: JUMP 00004315: JUMPDEST 00004316: SWAP2 00004317: POP 00004318: PUSH2 0x4321 0000431b: DUP3 0000431c: DUP6 0000431d: PUSH2 0x428d 00004320: JUMP 00004321: JUMPDEST 00004322: SWAP2 00004323: POP 00004324: PUSH2 0x432c 00004327: DUP3 00004328: PUSH2 0x42e7 0000432b: JUMP 0000432c: JUMPDEST 0000432d: SWAP2 0000432e: POP 0000432f: PUSH2 0x4338 00004332: DUP3 00004333: DUP5 00004334: PUSH2 0x428d 00004337: JUMP 00004338: JUMPDEST 00004339: SWAP2 0000433a: POP 0000433b: DUP2 0000433c: SWAP1 0000433d: POP 0000433e: SWAP4 0000433f: SWAP3 00004340: POP 00004341: POP 00004342: POP 00004343: JUMP 00004344: JUMPDEST 00004345: PUSH1 0x00 00004347: PUSH2 0x434f 0000434a: DUP3 0000434b: PUSH2 0x4258 0000434e: JUMP 0000434f: JUMPDEST 00004350: PUSH2 0x4359 00004353: DUP2 00004354: DUP6 00004355: PUSH2 0x3b94 00004358: JUMP 00004359: JUMPDEST 0000435a: SWAP4 0000435b: POP 0000435c: PUSH2 0x4369 0000435f: DUP2 00004360: DUP6 00004361: PUSH1 0x20 00004363: DUP7 00004364: ADD 00004365: PUSH2 0x4263 00004368: JUMP 00004369: JUMPDEST 0000436a: PUSH2 0x4372 0000436d: DUP2 0000436e: PUSH2 0x3e4e 00004371: JUMP 00004372: JUMPDEST 00004373: DUP5 00004374: ADD 00004375: SWAP2 00004376: POP 00004377: POP 00004378: SWAP3 00004379: SWAP2 0000437a: POP 0000437b: POP 0000437c: JUMP 0000437d: JUMPDEST 0000437e: PUSH1 0x00 00004380: PUSH1 0x20 00004382: DUP3 00004383: ADD 00004384: SWAP1 00004385: POP 00004386: DUP2 00004387: DUP2 00004388: SUB 00004389: PUSH1 0x00 0000438b: DUP4 0000438c: ADD 0000438d: MSTORE 0000438e: PUSH2 0x4397 00004391: DUP2 00004392: DUP5 00004393: PUSH2 0x4344 00004396: JUMP 00004397: JUMPDEST 00004398: SWAP1 00004399: POP 0000439a: SWAP3 0000439b: SWAP2 0000439c: POP 0000439d: POP 0000439e: JUMP 0000439f: JUMPDEST 000043a0: PUSH32 0x4272696467653a20616d6f756e74206973203000000000000000000000000000 000043c1: PUSH1 0x00 000043c3: DUP3 000043c4: ADD 000043c5: MSTORE 000043c6: POP 000043c7: JUMP 000043c8: JUMPDEST 000043c9: PUSH1 0x00 000043cb: PUSH2 0x43d5 000043ce: PUSH1 0x13 000043d0: DUP4 000043d1: PUSH2 0x3b94 000043d4: JUMP 000043d5: JUMPDEST 000043d6: SWAP2 000043d7: POP 000043d8: PUSH2 0x43e0 000043db: DUP3 000043dc: PUSH2 0x439f 000043df: JUMP 000043e0: JUMPDEST 000043e1: PUSH1 0x20 000043e3: DUP3 000043e4: ADD 000043e5: SWAP1 000043e6: POP 000043e7: SWAP2 000043e8: SWAP1 000043e9: POP 000043ea: JUMP 000043eb: JUMPDEST 000043ec: PUSH1 0x00 000043ee: PUSH1 0x20 000043f0: DUP3 000043f1: ADD 000043f2: SWAP1 000043f3: POP 000043f4: DUP2 000043f5: DUP2 000043f6: SUB 000043f7: PUSH1 0x00 000043f9: DUP4 000043fa: ADD 000043fb: MSTORE 000043fc: PUSH2 0x4404 000043ff: DUP2 00004400: PUSH2 0x43c8 00004403: JUMP 00004404: JUMPDEST 00004405: SWAP1 00004406: POP 00004407: SWAP2 00004408: SWAP1 00004409: POP 0000440a: JUMP 0000440b: JUMPDEST 0000440c: PUSH1 0x00 0000440e: PUSH1 0x80 00004410: DUP3 00004411: ADD 00004412: SWAP1 00004413: POP 00004414: PUSH2 0x4420 00004417: PUSH1 0x00 00004419: DUP4 0000441a: ADD 0000441b: DUP8 0000441c: PUSH2 0x3402 0000441f: JUMP 00004420: JUMPDEST 00004421: PUSH2 0x442d 00004424: PUSH1 0x20 00004426: DUP4 00004427: ADD 00004428: DUP7 00004429: PUSH2 0x3402 0000442c: JUMP 0000442d: JUMPDEST 0000442e: PUSH2 0x443a 00004431: PUSH1 0x40 00004433: DUP4 00004434: ADD 00004435: DUP6 00004436: PUSH2 0x3de7 00004439: JUMP 0000443a: JUMPDEST 0000443b: PUSH2 0x4447 0000443e: PUSH1 0x60 00004440: DUP4 00004441: ADD 00004442: DUP5 00004443: PUSH2 0x3978 00004446: JUMP 00004447: JUMPDEST 00004448: SWAP6 00004449: SWAP5 0000444a: POP 0000444b: POP 0000444c: POP 0000444d: POP 0000444e: POP 0000444f: JUMP 00004450: JUMPDEST 00004451: PUSH1 0x00 00004453: PUSH1 0xe0 00004455: DUP3 00004456: ADD 00004457: SWAP1 00004458: POP 00004459: PUSH2 0x4465 0000445c: PUSH1 0x00 0000445e: DUP4 0000445f: ADD 00004460: DUP11 00004461: PUSH2 0x3e1f 00004464: JUMP 00004465: JUMPDEST 00004466: PUSH2 0x4472 00004469: PUSH1 0x20 0000446b: DUP4 0000446c: ADD 0000446d: DUP10 0000446e: PUSH2 0x3402 00004471: JUMP 00004472: JUMPDEST 00004473: PUSH2 0x447f 00004476: PUSH1 0x40 00004478: DUP4 00004479: ADD 0000447a: DUP9 0000447b: PUSH2 0x3612 0000447e: JUMP 0000447f: JUMPDEST 00004480: PUSH2 0x448c 00004483: PUSH1 0x60 00004485: DUP4 00004486: ADD 00004487: DUP8 00004488: PUSH2 0x3de7 0000448b: JUMP 0000448c: JUMPDEST 0000448d: PUSH2 0x4499 00004490: PUSH1 0x80 00004492: DUP4 00004493: ADD 00004494: DUP7 00004495: PUSH2 0x3978 00004498: JUMP 00004499: JUMPDEST 0000449a: PUSH2 0x44a6 0000449d: PUSH1 0xa0 0000449f: DUP4 000044a0: ADD 000044a1: DUP6 000044a2: PUSH2 0x3978 000044a5: JUMP 000044a6: JUMPDEST 000044a7: PUSH2 0x44b3 000044aa: PUSH1 0xc0 000044ac: DUP4 000044ad: ADD 000044ae: DUP5 000044af: PUSH2 0x3612 000044b2: JUMP 000044b3: JUMPDEST 000044b4: SWAP9 000044b5: SWAP8 000044b6: POP 000044b7: POP 000044b8: POP 000044b9: POP 000044ba: POP 000044bb: POP 000044bc: POP 000044bd: POP 000044be: JUMP 000044bf: JUMPDEST 000044c0: PUSH1 0x00 000044c2: PUSH1 0xa0 000044c4: DUP3 000044c5: ADD 000044c6: SWAP1 000044c7: POP 000044c8: PUSH2 0x44d4 000044cb: PUSH1 0x00 000044cd: DUP4 000044ce: ADD 000044cf: DUP9 000044d0: PUSH2 0x3978 000044d3: JUMP 000044d4: JUMPDEST 000044d5: PUSH2 0x44e1 000044d8: PUSH1 0x20 000044da: DUP4 000044db: ADD 000044dc: DUP8 000044dd: PUSH2 0x3612 000044e0: JUMP 000044e1: JUMPDEST 000044e2: PUSH2 0x44ee 000044e5: PUSH1 0x40 000044e7: DUP4 000044e8: ADD 000044e9: DUP7 000044ea: PUSH2 0x3402 000044ed: JUMP 000044ee: JUMPDEST 000044ef: PUSH2 0x44fb 000044f2: PUSH1 0x60 000044f4: DUP4 000044f5: ADD 000044f6: DUP6 000044f7: PUSH2 0x3de7 000044fa: JUMP 000044fb: JUMPDEST 000044fc: PUSH2 0x4508 000044ff: PUSH1 0x80 00004501: DUP4 00004502: ADD 00004503: DUP5 00004504: PUSH2 0x3978 00004507: JUMP 00004508: JUMPDEST 00004509: SWAP7 0000450a: SWAP6 0000450b: POP 0000450c: POP 0000450d: POP 0000450e: POP 0000450f: POP 00004510: POP 00004511: JUMP 00004512: JUMPDEST 00004513: PUSH1 0x00 00004515: PUSH1 0x60 00004517: DUP3 00004518: ADD 00004519: SWAP1 0000451a: POP 0000451b: PUSH2 0x4527 0000451e: PUSH1 0x00 00004520: DUP4 00004521: ADD 00004522: DUP7 00004523: PUSH2 0x3402 00004526: JUMP 00004527: JUMPDEST 00004528: PUSH2 0x4534 0000452b: PUSH1 0x20 0000452d: DUP4 0000452e: ADD 0000452f: DUP6 00004530: PUSH2 0x3402 00004533: JUMP 00004534: JUMPDEST 00004535: PUSH2 0x4541 00004538: PUSH1 0x40 0000453a: DUP4 0000453b: ADD 0000453c: DUP5 0000453d: PUSH2 0x3de7 00004540: JUMP 00004541: JUMPDEST 00004542: SWAP5 00004543: SWAP4 00004544: POP 00004545: POP 00004546: POP 00004547: POP 00004548: JUMP 00004549: JUMPDEST 0000454a: PUSH1 0x00 0000454c: DUP2 0000454d: PUSH1 0x01 0000454f: SHR 00004550: SWAP1 00004551: POP 00004552: SWAP2 00004553: SWAP1 00004554: POP 00004555: JUMP 00004556: JUMPDEST 00004557: PUSH1 0x00 00004559: DUP1 0000455a: DUP3 0000455b: SWAP2 0000455c: POP 0000455d: DUP4 0000455e: SWAP1 0000455f: POP 00004560: JUMPDEST 00004561: PUSH1 0x01 00004563: DUP6 00004564: GT 00004565: ISZERO 00004566: PUSH2 0x45a0 00004569: JUMPI 0000456a: DUP1 0000456b: DUP7 0000456c: DIV 0000456d: DUP2 0000456e: GT 0000456f: ISZERO 00004570: PUSH2 0x457c 00004573: JUMPI 00004574: PUSH2 0x457b 00004577: PUSH2 0x3fca 0000457a: JUMP 0000457b: JUMPDEST 0000457c: JUMPDEST 0000457d: PUSH1 0x01 0000457f: DUP6 00004580: AND 00004581: ISZERO 00004582: PUSH2 0x458b 00004585: JUMPI 00004586: DUP1 00004587: DUP3 00004588: MUL 00004589: SWAP2 0000458a: POP 0000458b: JUMPDEST 0000458c: DUP1 0000458d: DUP2 0000458e: MUL 0000458f: SWAP1 00004590: POP 00004591: PUSH2 0x4599 00004594: DUP6 00004595: PUSH2 0x4549 00004598: JUMP 00004599: JUMPDEST 0000459a: SWAP5 0000459b: POP 0000459c: PUSH2 0x4560 0000459f: JUMP 000045a0: JUMPDEST 000045a1: SWAP5 000045a2: POP 000045a3: SWAP5 000045a4: SWAP3 000045a5: POP 000045a6: POP 000045a7: POP 000045a8: JUMP 000045a9: JUMPDEST 000045aa: PUSH1 0x00 000045ac: DUP3 000045ad: PUSH2 0x45b9 000045b0: JUMPI 000045b1: PUSH1 0x01 000045b3: SWAP1 000045b4: POP 000045b5: PUSH2 0x4675 000045b8: JUMP 000045b9: JUMPDEST 000045ba: DUP2 000045bb: PUSH2 0x45c7 000045be: JUMPI 000045bf: PUSH1 0x00 000045c1: SWAP1 000045c2: POP 000045c3: PUSH2 0x4675 000045c6: JUMP 000045c7: JUMPDEST 000045c8: DUP2 000045c9: PUSH1 0x01 000045cb: DUP2 000045cc: EQ 000045cd: PUSH2 0x45dd 000045d0: JUMPI 000045d1: PUSH1 0x02 000045d3: DUP2 000045d4: EQ 000045d5: PUSH2 0x45e7 000045d8: JUMPI 000045d9: PUSH2 0x4616 000045dc: JUMP 000045dd: JUMPDEST 000045de: PUSH1 0x01 000045e0: SWAP2 000045e1: POP 000045e2: POP 000045e3: PUSH2 0x4675 000045e6: JUMP 000045e7: JUMPDEST 000045e8: PUSH1 0xff 000045ea: DUP5 000045eb: GT 000045ec: ISZERO 000045ed: PUSH2 0x45f9 000045f0: JUMPI 000045f1: PUSH2 0x45f8 000045f4: PUSH2 0x3fca 000045f7: JUMP 000045f8: JUMPDEST 000045f9: JUMPDEST 000045fa: DUP4 000045fb: PUSH1 0x02 000045fd: EXP 000045fe: SWAP2 000045ff: POP 00004600: DUP5 00004601: DUP3 00004602: GT 00004603: ISZERO 00004604: PUSH2 0x4610 00004607: JUMPI 00004608: PUSH2 0x460f 0000460b: PUSH2 0x3fca 0000460e: JUMP 0000460f: JUMPDEST 00004610: JUMPDEST 00004611: POP 00004612: PUSH2 0x4675 00004615: JUMP 00004616: JUMPDEST 00004617: POP 00004618: PUSH1 0x20 0000461a: DUP4 0000461b: LT 0000461c: PUSH2 0x0133 0000461f: DUP4 00004620: LT 00004621: AND 00004622: PUSH1 0x4e 00004624: DUP5 00004625: LT 00004626: PUSH1 0x0b 00004628: DUP5 00004629: LT 0000462a: AND 0000462b: OR 0000462c: ISZERO 0000462d: PUSH2 0x464b 00004630: JUMPI 00004631: DUP3 00004632: DUP3 00004633: EXP 00004634: SWAP1 00004635: POP 00004636: DUP4 00004637: DUP2 00004638: GT 00004639: ISZERO 0000463a: PUSH2 0x4646 0000463d: JUMPI 0000463e: PUSH2 0x4645 00004641: PUSH2 0x3fca 00004644: JUMP 00004645: JUMPDEST 00004646: JUMPDEST 00004647: PUSH2 0x4675 0000464a: JUMP 0000464b: JUMPDEST 0000464c: PUSH2 0x4658 0000464f: DUP5 00004650: DUP5 00004651: DUP5 00004652: PUSH1 0x01 00004654: PUSH2 0x4556 00004657: JUMP 00004658: JUMPDEST 00004659: SWAP3 0000465a: POP 0000465b: SWAP1 0000465c: POP 0000465d: DUP2 0000465e: DUP5 0000465f: DIV 00004660: DUP2 00004661: GT 00004662: ISZERO 00004663: PUSH2 0x466f 00004666: JUMPI 00004667: PUSH2 0x466e 0000466a: PUSH2 0x3fca 0000466d: JUMP 0000466e: JUMPDEST 0000466f: JUMPDEST 00004670: DUP2 00004671: DUP2 00004672: MUL 00004673: SWAP1 00004674: POP 00004675: JUMPDEST 00004676: SWAP4 00004677: SWAP3 00004678: POP 00004679: POP 0000467a: POP 0000467b: JUMP 0000467c: JUMPDEST 0000467d: PUSH1 0x00 0000467f: PUSH2 0x4687 00004682: DUP3 00004683: PUSH2 0x376b 00004686: JUMP 00004687: JUMPDEST 00004688: SWAP2 00004689: POP 0000468a: PUSH2 0x4692 0000468d: DUP4 0000468e: PUSH2 0x376b 00004691: JUMP 00004692: JUMPDEST 00004693: SWAP3 00004694: POP 00004695: PUSH2 0x46bf 00004698: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000046b9: DUP5 000046ba: DUP5 000046bb: PUSH2 0x45a9 000046be: JUMP 000046bf: JUMPDEST 000046c0: SWAP1 000046c1: POP 000046c2: SWAP3 000046c3: SWAP2 000046c4: POP 000046c5: POP 000046c6: JUMP 000046c7: JUMPDEST 000046c8: PUSH1 0x00 000046ca: PUSH2 0x46d2 000046cd: DUP3 000046ce: PUSH2 0x376b 000046d1: JUMP 000046d2: JUMPDEST 000046d3: SWAP2 000046d4: POP 000046d5: PUSH2 0x46dd 000046d8: DUP4 000046d9: PUSH2 0x376b 000046dc: JUMP 000046dd: JUMPDEST 000046de: SWAP3 000046df: POP 000046e0: DUP3 000046e1: DUP3 000046e2: MUL 000046e3: PUSH2 0x46eb 000046e6: DUP2 000046e7: PUSH2 0x376b 000046ea: JUMP 000046eb: JUMPDEST 000046ec: SWAP2 000046ed: POP 000046ee: DUP3 000046ef: DUP3 000046f0: DIV 000046f1: DUP5 000046f2: EQ 000046f3: DUP4 000046f4: ISZERO 000046f5: OR 000046f6: PUSH2 0x4702 000046f9: JUMPI 000046fa: PUSH2 0x4701 000046fd: PUSH2 0x3fca 00004700: JUMP 00004701: JUMPDEST 00004702: JUMPDEST 00004703: POP 00004704: SWAP3 00004705: SWAP2 00004706: POP 00004707: POP 00004708: JUMP 00004709: JUMPDEST 0000470a: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000472b: PUSH1 0x00 0000472d: MSTORE 0000472e: PUSH1 0x12 00004730: PUSH1 0x04 00004732: MSTORE 00004733: PUSH1 0x24 00004735: PUSH1 0x00 00004737: REVERT 00004738: JUMPDEST 00004739: PUSH1 0x00 0000473b: PUSH2 0x4743 0000473e: DUP3 0000473f: PUSH2 0x376b 00004742: JUMP 00004743: JUMPDEST 00004744: SWAP2 00004745: POP 00004746: PUSH2 0x474e 00004749: DUP4 0000474a: PUSH2 0x376b 0000474d: JUMP 0000474e: JUMPDEST 0000474f: SWAP3 00004750: POP 00004751: DUP3 00004752: PUSH2 0x475e 00004755: JUMPI 00004756: PUSH2 0x475d 00004759: PUSH2 0x4709 0000475c: JUMP 0000475d: JUMPDEST 0000475e: JUMPDEST 0000475f: DUP3 00004760: DUP3 00004761: DIV 00004762: SWAP1 00004763: POP 00004764: SWAP3 00004765: SWAP2 00004766: POP 00004767: POP 00004768: JUMP 00004769: JUMPDEST 0000476a: PUSH1 0x00 0000476c: PUSH2 0x4774 0000476f: DUP3 00004770: PUSH2 0x376b 00004773: JUMP 00004774: JUMPDEST 00004775: SWAP2 00004776: POP 00004777: PUSH2 0x477f 0000477a: DUP4 0000477b: PUSH2 0x376b 0000477e: JUMP 0000477f: JUMPDEST 00004780: SWAP3 00004781: POP 00004782: DUP3 00004783: DUP3 00004784: ADD 00004785: SWAP1 00004786: POP 00004787: DUP1 00004788: DUP3 00004789: GT 0000478a: ISZERO 0000478b: PUSH2 0x4797 0000478e: JUMPI 0000478f: PUSH2 0x4796 00004792: PUSH2 0x3fca 00004795: JUMP 00004796: JUMPDEST 00004797: JUMPDEST 00004798: SWAP3 00004799: SWAP2 0000479a: POP 0000479b: POP 0000479c: JUMP 0000479d: JUMPDEST 0000479e: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000047bf: PUSH1 0x00 000047c1: MSTORE 000047c2: PUSH1 0x41 000047c4: PUSH1 0x04 000047c6: MSTORE 000047c7: PUSH1 0x24 000047c9: PUSH1 0x00 000047cb: REVERT 000047cc: JUMPDEST 000047cd: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000047ee: PUSH1 0x00 000047f0: MSTORE 000047f1: PUSH1 0x32 000047f3: PUSH1 0x04 000047f5: MSTORE 000047f6: PUSH1 0x24 000047f8: PUSH1 0x00 000047fa: REVERT 000047fb: JUMPDEST 000047fc: PUSH1 0x00 000047fe: PUSH2 0x4806 00004801: DUP3 00004802: PUSH2 0x376b 00004805: JUMP 00004806: JUMPDEST 00004807: SWAP2 00004808: POP 00004809: PUSH1 0x00 0000480b: DUP3 0000480c: SUB 0000480d: PUSH2 0x4819 00004810: JUMPI 00004811: PUSH2 0x4818 00004814: PUSH2 0x3fca 00004817: JUMP 00004818: JUMPDEST 00004819: JUMPDEST 0000481a: PUSH1 0x01 0000481c: DUP3 0000481d: SUB 0000481e: SWAP1 0000481f: POP 00004820: SWAP2 00004821: SWAP1 00004822: POP 00004823: JUMP 00004824: JUMPDEST 00004825: PUSH32 0x537472696e67733a20686578206c656e67746820696e73756666696369656e74 00004846: PUSH1 0x00 00004848: DUP3 00004849: ADD 0000484a: MSTORE 0000484b: POP 0000484c: JUMP 0000484d: JUMPDEST 0000484e: PUSH1 0x00 00004850: PUSH2 0x485a 00004853: PUSH1 0x20 00004855: DUP4 00004856: PUSH2 0x3b94 00004859: JUMP 0000485a: JUMPDEST 0000485b: SWAP2 0000485c: POP 0000485d: PUSH2 0x4865 00004860: DUP3 00004861: PUSH2 0x4824 00004864: JUMP 00004865: JUMPDEST 00004866: PUSH1 0x20 00004868: DUP3 00004869: ADD 0000486a: SWAP1 0000486b: POP 0000486c: SWAP2 0000486d: SWAP1 0000486e: POP 0000486f: JUMP 00004870: JUMPDEST 00004871: PUSH1 0x00 00004873: PUSH1 0x20 00004875: DUP3 00004876: ADD 00004877: SWAP1 00004878: POP 00004879: DUP2 0000487a: DUP2 0000487b: SUB 0000487c: PUSH1 0x00 0000487e: DUP4 0000487f: ADD 00004880: MSTORE 00004881: PUSH2 0x4889 00004884: DUP2 00004885: PUSH2 0x484d 00004888: JUMP 00004889: JUMPDEST 0000488a: SWAP1 0000488b: POP 0000488c: SWAP2 0000488d: SWAP1 0000488e: POP 0000488f: JUMP 00004890: JUMPDEST 00004891: PUSH2 0x4899 00004894: DUP2 00004895: PUSH2 0x34bb 00004898: JUMP 00004899: JUMPDEST 0000489a: DUP2 0000489b: EQ 0000489c: PUSH2 0x48a4 0000489f: JUMPI 000048a0: PUSH1 0x00 000048a2: DUP1 000048a3: REVERT 000048a4: JUMPDEST 000048a5: POP 000048a6: JUMP 000048a7: JUMPDEST 000048a8: PUSH1 0x00 000048aa: DUP2 000048ab: MLOAD 000048ac: SWAP1 000048ad: POP 000048ae: PUSH2 0x48b6 000048b1: DUP2 000048b2: PUSH2 0x4890 000048b5: JUMP 000048b6: JUMPDEST 000048b7: SWAP3 000048b8: SWAP2 000048b9: POP 000048ba: POP 000048bb: JUMP 000048bc: JUMPDEST 000048bd: PUSH1 0x00 000048bf: PUSH1 0x20 000048c1: DUP3 000048c2: DUP5 000048c3: SUB 000048c4: SLT 000048c5: ISZERO 000048c6: PUSH2 0x48d2 000048c9: JUMPI 000048ca: PUSH2 0x48d1 000048cd: PUSH2 0x342c 000048d0: JUMP 000048d1: JUMPDEST 000048d2: JUMPDEST 000048d3: PUSH1 0x00 000048d5: PUSH2 0x48e0 000048d8: DUP5 000048d9: DUP3 000048da: DUP6 000048db: ADD 000048dc: PUSH2 0x48a7 000048df: JUMP 000048e0: JUMPDEST 000048e1: SWAP2 000048e2: POP 000048e3: POP 000048e4: SWAP3 000048e5: SWAP2 000048e6: POP 000048e7: POP 000048e8: JUMP 000048e9: JUMPDEST 000048ea: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 0000490b: PUSH1 0x00 0000490d: DUP3 0000490e: ADD 0000490f: MSTORE 00004910: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00004931: PUSH1 0x20 00004933: DUP3 00004934: ADD 00004935: MSTORE 00004936: POP 00004937: JUMP 00004938: JUMPDEST 00004939: PUSH1 0x00 0000493b: PUSH2 0x4945 0000493e: PUSH1 0x2a 00004940: DUP4 00004941: PUSH2 0x3b94 00004944: JUMP 00004945: JUMPDEST 00004946: SWAP2 00004947: POP 00004948: PUSH2 0x4950 0000494b: DUP3 0000494c: PUSH2 0x48e9 0000494f: JUMP 00004950: JUMPDEST 00004951: PUSH1 0x40 00004953: DUP3 00004954: ADD 00004955: SWAP1 00004956: POP 00004957: SWAP2 00004958: SWAP1 00004959: POP 0000495a: JUMP 0000495b: JUMPDEST 0000495c: PUSH1 0x00 0000495e: PUSH1 0x20 00004960: DUP3 00004961: ADD 00004962: SWAP1 00004963: POP 00004964: DUP2 00004965: DUP2 00004966: SUB 00004967: PUSH1 0x00 00004969: DUP4 0000496a: ADD 0000496b: MSTORE 0000496c: PUSH2 0x4974 0000496f: DUP2 00004970: PUSH2 0x4938 00004973: JUMP 00004974: JUMPDEST 00004975: SWAP1 00004976: POP 00004977: SWAP2 00004978: SWAP1 00004979: POP 0000497a: JUMP 0000497b: JUMPDEST 0000497c: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 0000499d: PUSH1 0x00 0000499f: DUP3 000049a0: ADD 000049a1: MSTORE 000049a2: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 000049c3: PUSH1 0x20 000049c5: DUP3 000049c6: ADD 000049c7: MSTORE 000049c8: POP 000049c9: JUMP 000049ca: JUMPDEST 000049cb: PUSH1 0x00 000049cd: PUSH2 0x49d7 000049d0: PUSH1 0x26 000049d2: DUP4 000049d3: PUSH2 0x3b94 000049d6: JUMP 000049d7: JUMPDEST 000049d8: SWAP2 000049d9: POP 000049da: PUSH2 0x49e2 000049dd: DUP3 000049de: PUSH2 0x497b 000049e1: JUMP 000049e2: JUMPDEST 000049e3: PUSH1 0x40 000049e5: DUP3 000049e6: ADD 000049e7: SWAP1 000049e8: POP 000049e9: SWAP2 000049ea: SWAP1 000049eb: POP 000049ec: JUMP 000049ed: JUMPDEST 000049ee: PUSH1 0x00 000049f0: PUSH1 0x20 000049f2: DUP3 000049f3: ADD 000049f4: SWAP1 000049f5: POP 000049f6: DUP2 000049f7: DUP2 000049f8: SUB 000049f9: PUSH1 0x00 000049fb: DUP4 000049fc: ADD 000049fd: MSTORE 000049fe: PUSH2 0x4a06 00004a01: DUP2 00004a02: PUSH2 0x49ca 00004a05: JUMP 00004a06: JUMPDEST 00004a07: SWAP1 00004a08: POP 00004a09: SWAP2 00004a0a: SWAP1 00004a0b: POP 00004a0c: JUMP 00004a0d: JUMPDEST 00004a0e: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00004a2f: PUSH1 0x00 00004a31: DUP3 00004a32: ADD 00004a33: MSTORE 00004a34: POP 00004a35: JUMP 00004a36: JUMPDEST 00004a37: PUSH1 0x00 00004a39: PUSH2 0x4a43 00004a3c: PUSH1 0x1d 00004a3e: DUP4 00004a3f: PUSH2 0x3b94 00004a42: JUMP 00004a43: JUMPDEST 00004a44: SWAP2 00004a45: POP 00004a46: PUSH2 0x4a4e 00004a49: DUP3 00004a4a: PUSH2 0x4a0d 00004a4d: JUMP 00004a4e: JUMPDEST 00004a4f: PUSH1 0x20 00004a51: DUP3 00004a52: ADD 00004a53: SWAP1 00004a54: POP 00004a55: SWAP2 00004a56: SWAP1 00004a57: POP 00004a58: JUMP 00004a59: JUMPDEST 00004a5a: PUSH1 0x00 00004a5c: PUSH1 0x20 00004a5e: DUP3 00004a5f: ADD 00004a60: SWAP1 00004a61: POP 00004a62: DUP2 00004a63: DUP2 00004a64: SUB 00004a65: PUSH1 0x00 00004a67: DUP4 00004a68: ADD 00004a69: MSTORE 00004a6a: PUSH2 0x4a72 00004a6d: DUP2 00004a6e: PUSH2 0x4a36 00004a71: JUMP 00004a72: JUMPDEST 00004a73: SWAP1 00004a74: POP 00004a75: SWAP2 00004a76: SWAP1 00004a77: POP 00004a78: JUMP 00004a79: JUMPDEST 00004a7a: PUSH1 0x00 00004a7c: DUP2 00004a7d: MLOAD 00004a7e: SWAP1 00004a7f: POP 00004a80: SWAP2 00004a81: SWAP1 00004a82: POP 00004a83: JUMP 00004a84: JUMPDEST 00004a85: PUSH1 0x00 00004a87: DUP2 00004a88: SWAP1 00004a89: POP 00004a8a: SWAP3 00004a8b: SWAP2 00004a8c: POP 00004a8d: POP 00004a8e: JUMP 00004a8f: JUMPDEST 00004a90: PUSH1 0x00 00004a92: PUSH2 0x4a9a 00004a95: DUP3 00004a96: PUSH2 0x4a79 00004a99: JUMP 00004a9a: JUMPDEST 00004a9b: PUSH2 0x4aa4 00004a9e: DUP2 00004a9f: DUP6 00004aa0: PUSH2 0x4a84 00004aa3: JUMP 00004aa4: JUMPDEST 00004aa5: SWAP4 00004aa6: POP 00004aa7: PUSH2 0x4ab4 00004aaa: DUP2 00004aab: DUP6 00004aac: PUSH1 0x20 00004aae: DUP7 00004aaf: ADD 00004ab0: PUSH2 0x4263 00004ab3: JUMP 00004ab4: JUMPDEST 00004ab5: DUP1 00004ab6: DUP5 00004ab7: ADD 00004ab8: SWAP2 00004ab9: POP 00004aba: POP 00004abb: SWAP3 00004abc: SWAP2 00004abd: POP 00004abe: POP 00004abf: JUMP 00004ac0: JUMPDEST 00004ac1: PUSH1 0x00 00004ac3: PUSH2 0x4acc 00004ac6: DUP3 00004ac7: DUP5 00004ac8: PUSH2 0x4a8f 00004acb: JUMP 00004acc: JUMPDEST 00004acd: SWAP2 00004ace: POP 00004acf: DUP2 00004ad0: SWAP1 00004ad1: POP 00004ad2: SWAP3 00004ad3: SWAP2 00004ad4: POP 00004ad5: POP 00004ad6: JUMP 00004ad7: INVALID 00004ad8: LOG2 00004ad9: PUSH5 0x6970667358 00004adf: UNKNOWN(0x22) 00004ae0: SLT 00004ae1: KECCAK256 00004ae2: UNKNOWN(0xDF) 00004ae3: SWAP12 00004ae4: SAR 00004ae5: CREATE2 00004ae6: UNKNOWN(0xFC) 00004ae7: UNKNOWN(0x2E) 00004ae8: GT 00004ae9: UNKNOWN(0xCF) 00004aea: PUSH30 0xe02b42755cb19a3895ac4ee05c3cfcb53ff53afba89ea164736f6c634300 00004b09: ADDMOD 00004b0a: GT 00004b0b: STOP 00004b0c: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | slither | Staking.withdraw(uint256) (contracts/Contract.sol#1300-1310) ignores return value by ABR.transfer(msg.sender,what) (contracts/Contract.sol#1309-1310) | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "unchecked-transfer",
"elements": [
{
"name": "withdraw",
"type": "function",
"source_mapping": {
"lines": [
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310
],
"start": 45405,
"length": 350,
"ending_column": 24,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 68,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Staking",
"type": "contract",
"source_mapping": {
"lines": [
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310
],
"start": 44319,
"length": 1438,
"ending_column": 26,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "withdraw(uint256)"
}
},
{
"name": "ABR.transfer(msg.sender,what)",
"type": "node",
"source_mapping": {
"lines": [
1309,
1310
],
"start": 45718,
"length": 30,
"ending_column": 17,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 25,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "withdraw",
"type": "function",
"source_mapping": {
"lines": [
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310
],
"start": 45405,
"length": 350,
"ending_column": 24,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 68,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Staking",
"type": "contract",
"source_mapping": {
"lines": [
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310
],
"start": 44319,
"length": 1438,
"ending_column": 26,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "withdraw(uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "withdraw",
"type": "function",
"lines": [
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310
]
},
{
"file": "contracts/Contract.sol",
"name": "ABR.transfer(msg.sender,what)",
"type": "node",
"lines": [
1309,
1310
]
}
],
"description": "Staking.withdraw(uint256) (contracts/Contract.sol#1300-1310) ignores return value by ABR.transfer(msg.sender,what) (contracts/Contract.sol#1309-1310)"
}
|
| high | auth | slither | Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "removeToken",
"type": "function",
"source_mapping": {
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
],
"start": 55931,
"length": 1191,
"ending_column": 29,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Bridge",
"type": "contract",
"source_mapping": {
"lines": [
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551,
1552,
1553,
1554,
1555,
1556,
1557,
1558,
1559,
1560,
1561,
1562,
1563,
1564,
1565,
1566,
1567,
1568,
1569,
1570,
1571,
1572,
1573,
1574,
1575,
1576,
1577,
1578,
1579,
1580,
1581,
1582,
1583,
1584,
1585,
1586,
1587,
1588,
1589,
1590,
1591,
1592,
1593,
1594,
1595,
1596,
1597,
1598,
1599,
1600,
1601,
1602,
1603,
1604,
1605,
1606,
1607,
1608,
1609,
1610,
1611,
1612,
1613,
1614,
1615,
1616,
1617,
1618,
1619,
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646,
1647,
1648,
1649,
1650,
1651,
1652,
1653,
1654,
1655,
1656,
1657,
1658,
1659,
1660,
1661,
1662,
1663,
1664,
1665,
1666,
1667,
1668,
1669,
1670,
1671,
1672,
1673,
1674,
1675,
1676,
1677,
1678,
1679,
1680,
1681,
1682,
1683,
1684,
1685,
1686,
1687,
1688,
1689,
1690,
1691,
1692,
1693,
1694,
1695,
1696,
1697,
1698,
1699,
1700,
1701,
1702,
1703,
1704,
1705,
1706,
1707,
1708,
1709,
1710,
1711,
1712,
1713,
1714,
1715,
1716,
1717,
1718,
1719,
1720,
1721,
1722,
1723,
1724,
1725,
1726,
1727,
1728,
1729,
1730,
1731,
1732,
1733,
1734
],
"start": 47976,
"length": 12543,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 6,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "removeToken(bytes4,bytes32,address)"
}
},
{
"name": "address(newAuthority).transfer(address(this).balance)",
"type": "node",
"source_mapping": {
"lines": [
1630,
1631,
1632,
1633
],
"start": 56473,
"length": 53,
"ending_column": 33,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "removeToken",
"type": "function",
"source_mapping": {
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
],
"start": 55931,
"length": 1191,
"ending_column": 29,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Bridge",
"type": "contract",
"source_mapping": {
"lines": [
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551,
1552,
1553,
1554,
1555,
1556,
1557,
1558,
1559,
1560,
1561,
1562,
1563,
1564,
1565,
1566,
1567,
1568,
1569,
1570,
1571,
1572,
1573,
1574,
1575,
1576,
1577,
1578,
1579,
1580,
1581,
1582,
1583,
1584,
1585,
1586,
1587,
1588,
1589,
1590,
1591,
1592,
1593,
1594,
1595,
1596,
1597,
1598,
1599,
1600,
1601,
1602,
1603,
1604,
1605,
1606,
1607,
1608,
1609,
1610,
1611,
1612,
1613,
1614,
1615,
1616,
1617,
1618,
1619,
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646,
1647,
1648,
1649,
1650,
1651,
1652,
1653,
1654,
1655,
1656,
1657,
1658,
1659,
1660,
1661,
1662,
1663,
1664,
1665,
1666,
1667,
1668,
1669,
1670,
1671,
1672,
1673,
1674,
1675,
1676,
1677,
1678,
1679,
1680,
1681,
1682,
1683,
1684,
1685,
1686,
1687,
1688,
1689,
1690,
1691,
1692,
1693,
1694,
1695,
1696,
1697,
1698,
1699,
1700,
1701,
1702,
1703,
1704,
1705,
1706,
1707,
1708,
1709,
1710,
1711,
1712,
1713,
1714,
1715,
1716,
1717,
1718,
1719,
1720,
1721,
1722,
1723,
1724,
1725,
1726,
1727,
1728,
1729,
1730,
1731,
1732,
1733,
1734
],
"start": 47976,
"length": 12543,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 6,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "removeToken(bytes4,bytes32,address)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "removeToken",
"type": "function",
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
]
},
{
"file": "contracts/Contract.sol",
"name": "address(newAuthority).transfer(address(this).balance)",
"type": "node",
"lines": [
1630,
1631,
1632,
1633
]
}
],
"description": "Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646) sends eth to arbitrary user\n\tDangerous calls:\n\t- address(newAuthority).transfer(address(this).balance) (contracts/Contract.sol#1630-1633)"
}
|
| high | reentrancy | slither | Reentrancy in Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "removeToken",
"type": "function",
"source_mapping": {
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
],
"start": 55931,
"length": 1191,
"ending_column": 29,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Bridge",
"type": "contract",
"source_mapping": {
"lines": [
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551,
1552,
1553,
1554,
1555,
1556,
1557,
1558,
1559,
1560,
1561,
1562,
1563,
1564,
1565,
1566,
1567,
1568,
1569,
1570,
1571,
1572,
1573,
1574,
1575,
1576,
1577,
1578,
1579,
1580,
1581,
1582,
1583,
1584,
1585,
1586,
1587,
1588,
1589,
1590,
1591,
1592,
1593,
1594,
1595,
1596,
1597,
1598,
1599,
1600,
1601,
1602,
1603,
1604,
1605,
1606,
1607,
1608,
1609,
1610,
1611,
1612,
1613,
1614,
1615,
1616,
1617,
1618,
1619,
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646,
1647,
1648,
1649,
1650,
1651,
1652,
1653,
1654,
1655,
1656,
1657,
1658,
1659,
1660,
1661,
1662,
1663,
1664,
1665,
1666,
1667,
1668,
1669,
1670,
1671,
1672,
1673,
1674,
1675,
1676,
1677,
1678,
1679,
1680,
1681,
1682,
1683,
1684,
1685,
1686,
1687,
1688,
1689,
1690,
1691,
1692,
1693,
1694,
1695,
1696,
1697,
1698,
1699,
1700,
1701,
1702,
1703,
1704,
1705,
1706,
1707,
1708,
1709,
1710,
1711,
1712,
1713,
1714,
1715,
1716,
1717,
1718,
1719,
1720,
1721,
1722,
1723,
1724,
1725,
1726,
1727,
1728,
1729,
1730,
1731,
1732,
1733,
1734
],
"start": 47976,
"length": 12543,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 6,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "removeToken(bytes4,bytes32,address)"
}
},
{
"name": "IERC20(tokenAddress).safeTransfer(newAuthority,tokenBalance)",
"type": "node",
"source_mapping": {
"lines": [
1636,
1637,
1638
],
"start": 56661,
"length": 61,
"ending_column": 10,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 64,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "removeToken",
"type": "function",
"source_mapping": {
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
],
"start": 55931,
"length": 1191,
"ending_column": 29,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Bridge",
"type": "contract",
"source_mapping": {
"lines": [
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551,
1552,
1553,
1554,
1555,
1556,
1557,
1558,
1559,
1560,
1561,
1562,
1563,
1564,
1565,
1566,
1567,
1568,
1569,
1570,
1571,
1572,
1573,
1574,
1575,
1576,
1577,
1578,
1579,
1580,
1581,
1582,
1583,
1584,
1585,
1586,
1587,
1588,
1589,
1590,
1591,
1592,
1593,
1594,
1595,
1596,
1597,
1598,
1599,
1600,
1601,
1602,
1603,
1604,
1605,
1606,
1607,
1608,
1609,
1610,
1611,
1612,
1613,
1614,
1615,
1616,
1617,
1618,
1619,
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646,
1647,
1648,
1649,
1650,
1651,
1652,
1653,
1654,
1655,
1656,
1657,
1658,
1659,
1660,
1661,
1662,
1663,
1664,
1665,
1666,
1667,
1668,
1669,
1670,
1671,
1672,
1673,
1674,
1675,
1676,
1677,
1678,
1679,
1680,
1681,
1682,
1683,
1684,
1685,
1686,
1687,
1688,
1689,
1690,
1691,
1692,
1693,
1694,
1695,
1696,
1697,
1698,
1699,
1700,
1701,
1702,
1703,
1704,
1705,
1706,
1707,
1708,
1709,
1710,
1711,
1712,
1713,
1714,
1715,
1716,
1717,
1718,
1719,
1720,
1721,
1722,
1723,
1724,
1725,
1726,
1727,
1728,
1729,
1730,
1731,
1732,
1733,
1734
],
"start": 47976,
"length": 12543,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 6,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "removeToken(bytes4,bytes32,address)"
}
}
}
},
{
"name": "WrappedToken(tokenAddress).transferOwnership(newAuthority)",
"type": "node",
"source_mapping": {
"lines": [
1639,
1640,
1641
],
"start": 56803,
"length": 58,
"ending_column": 7,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "removeToken",
"type": "function",
"source_mapping": {
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
],
"start": 55931,
"length": 1191,
"ending_column": 29,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Bridge",
"type": "contract",
"source_mapping": {
"lines": [
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551,
1552,
1553,
1554,
1555,
1556,
1557,
1558,
1559,
1560,
1561,
1562,
1563,
1564,
1565,
1566,
1567,
1568,
1569,
1570,
1571,
1572,
1573,
1574,
1575,
1576,
1577,
1578,
1579,
1580,
1581,
1582,
1583,
1584,
1585,
1586,
1587,
1588,
1589,
1590,
1591,
1592,
1593,
1594,
1595,
1596,
1597,
1598,
1599,
1600,
1601,
1602,
1603,
1604,
1605,
1606,
1607,
1608,
1609,
1610,
1611,
1612,
1613,
1614,
1615,
1616,
1617,
1618,
1619,
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646,
1647,
1648,
1649,
1650,
1651,
1652,
1653,
1654,
1655,
1656,
1657,
1658,
1659,
1660,
1661,
1662,
1663,
1664,
1665,
1666,
1667,
1668,
1669,
1670,
1671,
1672,
1673,
1674,
1675,
1676,
1677,
1678,
1679,
1680,
1681,
1682,
1683,
1684,
1685,
1686,
1687,
1688,
1689,
1690,
1691,
1692,
1693,
1694,
1695,
1696,
1697,
1698,
1699,
1700,
1701,
1702,
1703,
1704,
1705,
1706,
1707,
1708,
1709,
1710,
1711,
1712,
1713,
1714,
1715,
1716,
1717,
1718,
1719,
1720,
1721,
1722,
1723,
1724,
1725,
1726,
1727,
1728,
1729,
1730,
1731,
1732,
1733,
1734
],
"start": 47976,
"length": 12543,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 6,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "removeToken(bytes4,bytes32,address)"
}
}
}
},
{
"name": "IWrappedTokenV0(tokenAddress).changeAuthority(newAuthority)",
"type": "node",
"source_mapping": {
"lines": [
1643,
1644
],
"start": 56940,
"length": 59,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 10,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "removeToken",
"type": "function",
"source_mapping": {
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
],
"start": 55931,
"length": 1191,
"ending_column": 29,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Bridge",
"type": "contract",
"source_mapping": {
"lines": [
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551,
1552,
1553,
1554,
1555,
1556,
1557,
1558,
1559,
1560,
1561,
1562,
1563,
1564,
1565,
1566,
1567,
1568,
1569,
1570,
1571,
1572,
1573,
1574,
1575,
1576,
1577,
1578,
1579,
1580,
1581,
1582,
1583,
1584,
1585,
1586,
1587,
1588,
1589,
1590,
1591,
1592,
1593,
1594,
1595,
1596,
1597,
1598,
1599,
1600,
1601,
1602,
1603,
1604,
1605,
1606,
1607,
1608,
1609,
1610,
1611,
1612,
1613,
1614,
1615,
1616,
1617,
1618,
1619,
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646,
1647,
1648,
1649,
1650,
1651,
1652,
1653,
1654,
1655,
1656,
1657,
1658,
1659,
1660,
1661,
1662,
1663,
1664,
1665,
1666,
1667,
1668,
1669,
1670,
1671,
1672,
1673,
1674,
1675,
1676,
1677,
1678,
1679,
1680,
1681,
1682,
1683,
1684,
1685,
1686,
1687,
1688,
1689,
1690,
1691,
1692,
1693,
1694,
1695,
1696,
1697,
1698,
1699,
1700,
1701,
1702,
1703,
1704,
1705,
1706,
1707,
1708,
1709,
1710,
1711,
1712,
1713,
1714,
1715,
1716,
1717,
1718,
1719,
1720,
1721,
1722,
1723,
1724,
1725,
1726,
1727,
1728,
1729,
1730,
1731,
1732,
1733,
1734
],
"start": 47976,
"length": 12543,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 6,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "removeToken(bytes4,bytes32,address)"
}
}
}
},
{
"name": "address(newAuthority).transfer(address(this).balance)",
"type": "node",
"source_mapping": {
"lines": [
1630,
1631,
1632,
1633
],
"start": 56473,
"length": 53,
"ending_column": 33,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 8,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "removeToken",
"type": "function",
"source_mapping": {
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
],
"start": 55931,
"length": 1191,
"ending_column": 29,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 14,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Bridge",
"type": "contract",
"source_mapping": {
"lines": [
1377,
1378,
1379,
1380,
1381,
1382,
1383,
1384,
1385,
1386,
1387,
1388,
1389,
1390,
1391,
1392,
1393,
1394,
1395,
1396,
1397,
1398,
1399,
1400,
1401,
1402,
1403,
1404,
1405,
1406,
1407,
1408,
1409,
1410,
1411,
1412,
1413,
1414,
1415,
1416,
1417,
1418,
1419,
1420,
1421,
1422,
1423,
1424,
1425,
1426,
1427,
1428,
1429,
1430,
1431,
1432,
1433,
1434,
1435,
1436,
1437,
1438,
1439,
1440,
1441,
1442,
1443,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
1451,
1452,
1453,
1454,
1455,
1456,
1457,
1458,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
1479,
1480,
1481,
1482,
1483,
1484,
1485,
1486,
1487,
1488,
1489,
1490,
1491,
1492,
1493,
1494,
1495,
1496,
1497,
1498,
1499,
1500,
1501,
1502,
1503,
1504,
1505,
1506,
1507,
1508,
1509,
1510,
1511,
1512,
1513,
1514,
1515,
1516,
1517,
1518,
1519,
1520,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
1531,
1532,
1533,
1534,
1535,
1536,
1537,
1538,
1539,
1540,
1541,
1542,
1543,
1544,
1545,
1546,
1547,
1548,
1549,
1550,
1551,
1552,
1553,
1554,
1555,
1556,
1557,
1558,
1559,
1560,
1561,
1562,
1563,
1564,
1565,
1566,
1567,
1568,
1569,
1570,
1571,
1572,
1573,
1574,
1575,
1576,
1577,
1578,
1579,
1580,
1581,
1582,
1583,
1584,
1585,
1586,
1587,
1588,
1589,
1590,
1591,
1592,
1593,
1594,
1595,
1596,
1597,
1598,
1599,
1600,
1601,
1602,
1603,
1604,
1605,
1606,
1607,
1608,
1609,
1610,
1611,
1612,
1613,
1614,
1615,
1616,
1617,
1618,
1619,
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646,
1647,
1648,
1649,
1650,
1651,
1652,
1653,
1654,
1655,
1656,
1657,
1658,
1659,
1660,
1661,
1662,
1663,
1664,
1665,
1666,
1667,
1668,
1669,
1670,
1671,
1672,
1673,
1674,
1675,
1676,
1677,
1678,
1679,
1680,
1681,
1682,
1683,
1684,
1685,
1686,
1687,
1688,
1689,
1690,
1691,
1692,
1693,
1694,
1695,
1696,
1697,
1698,
1699,
1700,
1701,
1702,
1703,
1704,
1705,
1706,
1707,
1708,
1709,
1710,
1711,
1712,
1713,
1714,
1715,
1716,
1717,
1718,
1719,
1720,
1721,
1722,
1723,
1724,
1725,
1726,
1727,
1728,
1729,
1730,
1731,
1732,
1733,
1734
],
"start": 47976,
"length": 12543,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 6,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "removeToken(bytes4,bytes32,address)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "removeToken",
"type": "function",
"lines": [
1620,
1621,
1622,
1623,
1624,
1625,
1626,
1627,
1628,
1629,
1630,
1631,
1632,
1633,
1634,
1635,
1636,
1637,
1638,
1639,
1640,
1641,
1642,
1643,
1644,
1645,
1646
]
},
{
"file": "contracts/Contract.sol",
"name": "IERC20(tokenAddress).safeTransfer(newAuthority,tokenBalance)",
"type": "node",
"lines": [
1636,
1637,
1638
]
},
{
"file": "contracts/Contract.sol",
"name": "WrappedToken(tokenAddress).transferOwnership(newAuthority)",
"type": "node",
"lines": [
1639,
1640,
1641
]
},
{
"file": "contracts/Contract.sol",
"name": "IWrappedTokenV0(tokenAddress).changeAuthority(newAuthority)",
"type": "node",
"lines": [
1643,
1644
]
},
{
"file": "contracts/Contract.sol",
"name": "address(newAuthority).transfer(address(this).balance)",
"type": "node",
"lines": [
1630,
1631,
1632,
1633
]
},
{
"file": "contracts/Contract.sol",
"name": "delete tokenInfos[tokenAddress]",
"type": "node",
"lines": [
1645
]
},
{
"file": "contracts/Contract.sol",
"name": "delete tokenSourceMap[tokenSource][tokenSourceAddress]",
"type": "node",
"lines": [
1645,
1646
]
}
],
"description": "Reentrancy in Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646):\n\tExternal calls:\n\t- IERC20(tokenAddress).safeTransfer(newAuthority,tokenBalance) (contracts/Contract.sol#1636-1638)\n\t- WrappedToken(tokenAddress).transferOwnership(newAuthority) (contracts/Contract.sol#1639-1641)\n\t- IWrappedTokenV0(tokenAddress).changeAuthority(newAuthority) (contracts/Contract.sol#1643-1644)\n\tExternal calls sending eth:\n\t- address(newAuthority).transfer(address(this).balance) (contracts/Contract.sol#1630-1633)\n\tState variables written after the call(s):\n\t- delete tokenInfos[tokenAddress] (contracts/Contract.sol#1645)\n\tBridge.tokenInfos (contracts/Contract.sol#1421) can be used in cross function reentrancies:\n\t- Bridge._createLock(uint128,address,uint256,bytes32,bytes4) (contracts/Contract.sol#1672-1705)\n\t- Bridge.addToken(bytes4,bytes32,address,Bridge.TokenType) (contracts/Contract.sol#1603-1619)\n\t- Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646)\n\t- Bridge.setTokenStatus(address,Bridge.TokenStatus) (contracts/Contract.sol#1660-1664)\n\t- Bridge.tokenInfos (contracts/Contract.sol#1421)\n\t- Bridge.unlock(uint128,address,uint256,bytes4,bytes4,bytes32,bytes,bytes) (contracts/Contract.sol#1528-1599)\n\t- delete tokenSourceMap[tokenSource][tokenSourceAddress] (contracts/Contract.sol#1645-1646)\n\tBridge.tokenSourceMap (contracts/Contract.sol#1427-1428) can be used in cross function reentrancies:\n\t- Bridge.addToken(bytes4,bytes32,address,Bridge.TokenType) (contracts/Contract.sol#1603-1619)\n\t- Bridge.removeToken(bytes4,bytes32,address) (contracts/Contract.sol#1620-1646)\n\t- Bridge.tokenSourceMap (contracts/Contract.sol#1427-1428)\n\t- Bridge.unlock(uint128,address,uint256,bytes4,bytes4,bytes32,bytes,bytes) (contracts/Contract.sol#1528-1599)"
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x8063e6c738abc170807c71e747359ac5c3a15f2fc7340ed96cf085dca2def5a8
call_targets:
0xd5d6b2f2d7a7506c49bb0cb6fb39a67f065d6fc4
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x8063e6c738abc170807c71e747359ac5c3a15f2fc7340ed96cf085dca2def5a8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xd5d6b2f2d7a7506c49bb0cb6fb39a67f065d6fc4"
],
"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": "0xe0956e0f",
"selector": "0xe0956e0f",
"calldata_variants": [
"0xe0956e0f",
"0xe0956e0f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1e1935a",
"selector": "0xe1e1935a",
"calldata_variants": [
"0xe1e1935a",
"0xe1e1935a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec3794ff",
"selector": "0xec3794ff",
"calldata_variants": [
"0xec3794ff",
"0xec3794ff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4bd4829",
"selector": "0xf4bd4829",
"calldata_variants": [
"0xf4bd4829",
"0xf4bd48290000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc415b95c",
"selector": "0xc415b95c",
"calldata_variants": [
"0xc415b95c",
"0xc415b95c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc8594418",
"selector": "0xc8594418",
"calldata_variants": [
"0xc8594418",
"0xc85944180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa8a98962",
"selector": "0xa8a98962",
"calldata_variants": [
"0xa8a98962",
"0xa8a989620000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2996,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3536,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3698,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 15,
"guards_detected": []
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x8063e6c738abc170807c71e747359ac5c3a15f2fc7340ed96cf085dca2def5a8
call_targets:
0xd5d6b2f2d7a7506c49bb0cb6fb39a67f065d6fc4
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x8063e6c738abc170807c71e747359ac5c3a15f2fc7340ed96cf085dca2def5a8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xd5d6b2f2d7a7506c49bb0cb6fb39a67f065d6fc4"
],
"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": "0xe0956e0f",
"selector": "0xe0956e0f",
"calldata_variants": [
"0xe0956e0f",
"0xe0956e0f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1e1935a",
"selector": "0xe1e1935a",
"calldata_variants": [
"0xe1e1935a",
"0xe1e1935a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec3794ff",
"selector": "0xec3794ff",
"calldata_variants": [
"0xec3794ff",
"0xec3794ff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4bd4829",
"selector": "0xf4bd4829",
"calldata_variants": [
"0xf4bd4829",
"0xf4bd48290000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc415b95c",
"selector": "0xc415b95c",
"calldata_variants": [
"0xc415b95c",
"0xc415b95c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc8594418",
"selector": "0xc8594418",
"calldata_variants": [
"0xc8594418",
"0xc85944180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa8a98962",
"selector": "0xa8a98962",
"calldata_variants": [
"0xa8a98962",
"0xa8a989620000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2996,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3536,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3698,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 15,
"guards_detected": [],
"untrusted_call_count": 15
}
|
| high | other | slither | Staking.deposit(uint256) (contracts/Contract.sol#1272-1300) ignores return value by ABR.transferFrom(msg.sender,address(this),_amount) (contracts/Contract.sol#1297-1300) | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "unchecked-transfer",
"elements": [
{
"name": "deposit",
"type": "function",
"source_mapping": {
"lines": [
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300
],
"start": 44517,
"length": 828,
"ending_column": 8,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Staking",
"type": "contract",
"source_mapping": {
"lines": [
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310
],
"start": 44319,
"length": 1438,
"ending_column": 26,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "deposit(uint256)"
}
},
{
"name": "ABR.transferFrom(msg.sender,address(this),_amount)",
"type": "node",
"source_mapping": {
"lines": [
1297,
1298,
1299,
1300
],
"start": 45286,
"length": 52,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 66,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "deposit",
"type": "function",
"source_mapping": {
"lines": [
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300
],
"start": 44517,
"length": 828,
"ending_column": 8,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "Staking",
"type": "contract",
"source_mapping": {
"lines": [
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300,
1301,
1302,
1303,
1304,
1305,
1306,
1307,
1308,
1309,
1310
],
"start": 44319,
"length": 1438,
"ending_column": 26,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-3c45bxap/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "deposit(uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "deposit",
"type": "function",
"lines": [
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279,
1280,
1281,
1282,
1283,
1284,
1285,
1286,
1287,
1288,
1289,
1290,
1291,
1292,
1293,
1294,
1295,
1296,
1297,
1298,
1299,
1300
]
},
{
"file": "contracts/Contract.sol",
"name": "ABR.transferFrom(msg.sender,address(this),_amount)",
"type": "node",
"lines": [
1297,
1298,
1299,
1300
]
}
],
"description": "Staking.deposit(uint256) (contracts/Contract.sol#1272-1300) ignores return value by ABR.transferFrom(msg.sender,address(this),_amount) (contracts/Contract.sol#1297-1300)"
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0xb21f66f41a83ebb6cb2d8aed17a2b79b0f696ff80ef07a8524487b803b2cefed
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0xb21f66f41a83ebb6cb2d8aed17a2b79b0f696ff80ef07a8524487b803b2cefed",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xe0956e0f",
"selector": "0xe0956e0f",
"calldata_variants": [
"0xe0956e0f",
"0xe0956e0f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe1e1935a",
"selector": "0xe1e1935a",
"calldata_variants": [
"0xe1e1935a",
"0xe1e1935a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec3794ff",
"selector": "0xec3794ff",
"calldata_variants": [
"0xec3794ff",
"0xec3794ff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4bd4829",
"selector": "0xf4bd4829",
"calldata_variants": [
"0xf4bd4829",
"0xf4bd48290000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc415b95c",
"selector": "0xc415b95c",
"calldata_variants": [
"0xc415b95c",
"0xc415b95c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc8594418",
"selector": "0xc8594418",
"calldata_variants": [
"0xc8594418",
"0xc85944180000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa8a98962",
"selector": "0xa8a98962",
"calldata_variants": [
"0xa8a98962",
"0xa8a989620000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 1
}
|
| medium | other | codex | Unchecked ERC20 return values can mint unbacked xABR | 75 | no | — |
viewevidence_json{
"evidence": "Staking uses `ABR.transferFrom` and `ABR.transfer` without checking the returned boolean.",
"locations": [
"contracts/Contract.sol#L1330",
"contracts/Contract.sol#L1341"
],
"recommendation": "Use SafeERC20 (safeTransferFrom/safeTransfer) or explicitly require the return value to be true to ensure the transfer succeeded before minting/burning shares.",
"exploit_scenario": "If the ABR token returns false instead of reverting (e.g., insufficient allowance or transfer restrictions), `deposit` mints xABR before the transfer succeeds. An attacker can mint xABR without actually transferring ABR, then `withdraw` to drain ABR from the pool."
}
|
| medium | other | codex | Bridge accounting breaks with fee-on-transfer or rebasing tokens | 75 | no | — |
viewevidence_json{
"evidence": "`amountToLock` is computed from user input and passed to the validator, while `safeTransferFrom` does not verify the actual amount received.",
"locations": [
"contracts/Contract.sol#L1514",
"contracts/Contract.sol#L1524",
"contracts/Contract.sol#L1732",
"contracts/Contract.sol#L1740"
],
"recommendation": "Reject fee-on-transfer/rebasing tokens, or compute actual received amounts via balance-before/after and use that for lock records and fee calculations.",
"exploit_scenario": "If a token with transfer fees/rebasing is added as `TokenType.Native`, `lock` records `amountToLock` but the contract receives less due to transfer mechanics. Users can unlock the full recorded amount on the destination chain, creating a deficit in the bridge reserves."
}
|
| low | other | codex | ETH transfers use `transfer`, enabling recipient DoS | 65 | no | — |
viewevidence_json{
"evidence": "ETH payouts use `transfer` in `lockBase` and `unlock`.",
"locations": [
"contracts/Contract.sol#L1567",
"contracts/Contract.sol#L1607"
],
"recommendation": "Use `call` with success checks and reentrancy protection, or adopt a pull-payment pattern for ETH transfers.",
"exploit_scenario": "If `recipient` or `feeCollector` is a contract that requires more than 2300 gas to receive ETH, `transfer` will revert, causing `lockBase` or `unlock` to fail and potentially locking funds for that recipient."
}
|
| low | oracle | codex | FeeOracle can be manipulated via temporary xABR balances | 65 | no | — |
viewevidence_json{
"evidence": "Fee calculation relies on current `xABR.balanceOf(sender)` and `xABR.totalSupply()` with no time weighting.",
"locations": [
"contracts/Contract.sol#L1378",
"contracts/Contract.sol#L1383"
],
"recommendation": "Use time-weighted balance snapshots, enforce staking lockups, or base fees on longer-term holdings rather than instantaneous balances.",
"exploit_scenario": "A user can temporarily inflate their xABR holdings (e.g., flashloan ABR, deposit to mint xABR, call `lock`, then withdraw) to reduce the computed fee for that transaction."
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 1
}
|
| 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": 19
}
|
| 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": 11
}
|