019bab3b-ac7d-7233-9fb9-aff5ddce53e8
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 |
|---|---|---|---|---|
| 38772 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38773 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38774 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38775 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38776 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38777 | detector.run | complete | 1 / 3 | 3 months ago |
| 38778 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39171 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39172 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-c2y3lrj7)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-c2y3lrj7)
LiquidityMining2.update() (contracts/Contract.sol#1054-1084) performs a multiplication on the result of a division:
- perSecondReward = totalRewards.div(endTime.sub(firstStakeTime)) (contracts/Contract.sol#1068-1069)
- value = (sinceLastCalc.sub(sinceEndTime)).mul(perSecondReward) (contracts/Contract.sol#1079)
LiquidityMining2.update() (contracts/Contract.sol#1054-1084) performs a multiplication on the result of a division:
- perSecondReward = totalRewards.div(endTime.sub(firstStakeTime)) (contracts/Contract.sol#1068-1069)
- value = sinceLastCalc.mul(perSecondReward) (contracts/Contract.sol#1072-1073)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
LiquidityMining2.deposit(uint256,uint256,uint256) (contracts/Contract.sol#1009-1040) uses a dangerous strict equality:
- require(bool,string)(sarco.balanceOf(address(this)) == _totalRewards,LiquidityMining::deposit: contract balance does not equal expected _totalRewards) (contracts/Contract.sol#1027-1035)
LiquidityMining2.stake(uint256,uint256,uint256) (contracts/Contract.sol#1105-1154) uses a dangerous strict equality:
- firstStakeTime == 0 (contracts/Contract.sol#1122)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
Reentrancy in LiquidityMining2.payout(address) (contracts/Contract.sol#1193-1221):
External calls:
- sarco.safeTransfer(to,reward) (contracts/Contract.sol#1209-1211)
State variables written after the call(s):
- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)
- _totalStakeDai = _totalStakeDai.sub(daiOut) (contracts/Contract.sol#1303-1305)
- _totalStakeDai = _totalStakeDai.add(daiIn) (contracts/Contract.sol#1262-1265)
- _totalStakeDai = _totalStakeDai.add(addBackDai) (contracts/Contract.sol#1276-1278)
LiquidityMining2._totalStakeDai (contracts/Contract.sol#931-933) can be used in cross function reentrancies:
- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)
- LiquidityMining2.totalStakeDai() (contracts/Contract.sol#984-987)
- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)
- _totalStakeUsdc = _totalStakeUsdc.sub(usdcOut) (contracts/Contract.sol#1300-1301)
- _totalStakeUsdc = _totalStakeUsdc.add(usdcIn) (contracts/Contract.sol#1259-1261)
- _totalStakeUsdc = _totalStakeUsdc.add(addBackUsdc) (contracts/Contract.sol#1267-1270)
LiquidityMining2._totalStakeUsdc (contracts/Contract.sol#930-931) can be used in cross function reentrancies:
- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)
- LiquidityMining2.totalStakeUsdc() (contracts/Contract.sol#978-980)
- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)
- _totalStakeUsdt = _totalStakeUsdt.sub(usdtOut) (contracts/Contract.sol#1301-1303)
- _totalStakeUsdt = _totalStakeUsdt.add(usdtIn) (contracts/Contract.sol#1262)
- _totalStakeUsdt = _totalStakeUsdt.add(addBackUsdt) (contracts/Contract.sol#1272-1274)
LiquidityMining2._totalStakeUsdt (contracts/Contract.sol#931) can be used in cross function reentrancies:
- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)
- LiquidityMining2.totalStakeUsdt() (contracts/Contract.sol#981-984)
- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)
- _userStakedDai[account] = 0 (contracts/Contract.sol#1307)
- _userStakedDai[account] = daiOut (contracts/Contract.sol#1246-1248)
- _userStakedDai[account] = _userStakedDai[account].add(daiIn) (contracts/Contract.sol#1257-1259)
LiquidityMining2._userStakedDai (contracts/Contract.sol#940-944) can be used in cross function reentrancies:
- LiquidityMining2.totalUserStake(address) (contracts/Contract.sol#1044-1053)
- LiquidityMining2.userStakeDai(address) (contracts/Contract.sol#1003-1008)
- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)
- _userStakedUsdc[account] = 0 (contracts/Contract.sol#1305-1306)
- _userStakedUsdc[account] = usdcOut (contracts/Contract.sol#1242-1243)
- _userStakedUsdc[account] = _userStakedUsdc[account].add(usdcIn) (contracts/Contract.sol#1251-1253)
LiquidityMining2._userStakedUsdc (contracts/Contract.sol#938-939) can be used in cross function reentrancies:
- LiquidityMining2.totalUserStake(address) (contracts/Contract.sol#1044-1053)
- LiquidityMining2.userStakeUsdc(address) (contracts/Contract.sol#987-993)
- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)
- _userStakedUsdt[account] = 0 (contracts/Contract.sol#1306)
- _userStakedUsdt[account] = usdtOut (contracts/Contract.sol#1244-1246)
- _userStakedUsdt[account] = _userStakedUsdt[account].add(usdtIn) (contracts/Contract.sol#1253-1257)
LiquidityMining2._userStakedUsdt (contracts/Contract.sol#939-940) can be used in cross function reentrancies:
- LiquidityMining2.totalUserStake(address) (contracts/Contract.sol#1044-1053)
- LiquidityMining2.userStakeUsdt(address) (contracts/Contract.sol#993-1002)
Reentrancy in LiquidityMining2.stake(uint256,uint256,uint256) (contracts/Contract.sol#1105-1154):
External calls:
- usdc.safeTransferFrom(msg.sender,address(this),usdcIn) (contracts/Contract.sol#1132-1133)
- usdt.safeTransferFrom(msg.sender,address(this),usdtIn) (contracts/Contract.sol#1136-1137)
- dai.safeTransferFrom(msg.sender,address(this),daiIn) (contracts/Contract.sol#1139-1141)
State variables written after the call(s):
- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)
- _totalStakeDai = _totalStakeDai.sub(daiOut) (contracts/Contract.sol#1303-1305)
- _totalStakeDai = _totalStakeDai.add(daiIn) (contracts/Contract.sol#1262-1265)
- _totalStakeDai = _totalStakeDai.add(addBackDai) (contracts/Contract.sol#1276-1278)
LiquidityMining2._totalStakeDai (contracts/Contract.sol#931-933) can be used in cross function reentrancies:
- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)
- LiquidityMining2.totalStakeDai() (contracts/Contract.sol#984-987)
- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)
- _totalStakeUsdc = _totalStakeUsdc.sub(usdcOut) (contracts/Contract.sol#1300-1301)
- _totalStakeUsdc = _totalStakeUsdc.add(usdcIn) (contracts/Contract.sol#1259-1261)
- _totalStakeUsdc = _totalStakeUsdc.add(addBackUsdc) (contracts/Contract.sol#1267-1270)
LiquidityMining2._totalStakeUsdc (contracts/Contract.sol#930-931) can be used in cross function reentrancies:
- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)
- LiquidityMining2.totalStakeUsdc() (contracts/Contract.sol#978-980)
- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)
- _totalStakeUsdt = _totalStakeUsdt.sub(usdtOut) (contracts/Contract.sol#1301-1303)
- _totalStakeUsdt = _totalStakeUsdt.add(usdtIn) (contracts/Contract.sol#1262)
- _totalStakeUsdt = _totalStakeUsdt.add(addBackUsdt) (contracts/Contract.sol#1272-1274)
LiquidityMining2._totalStakeUsdt (contracts/Contract.sol#931) can be used in cross function reentrancies:
- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)
- LiquidityMining2.totalStakeUsdt() (contracts/Contract.sol#981-984)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
LiquidityMining2._stake(uint256,uint256,uint256,address).addBackDai (contracts/Contract.sol#1230) is a local variable never initialized
LiquidityMining2._stake(uint256,uint256,uint256,address).addBackUsdc (contracts/Contract.sol#1227-1229) is a local variable never initialized
LiquidityMining2._stake(uint256,uint256,uint256,address).addBackUsdt (contracts/Contract.sol#1229-1230) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
LiquidityMining2.constructor(address,address,address,address,address).owner (contracts/Contract.sol#972-973) shadows:
- Ownable.owner() (contracts/Contract.sol#59-61) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
Reentrancy in LiquidityMining2.payout(address) (contracts/Contract.sol#1193-1221):
External calls:
- sarco.safeTransfer(to,reward) (contracts/Contract.sol#1209-1211)
State variables written after the call(s):
- totalClaimedRewards = totalClaimedRewards.add(reward) (contracts/Contract.sol#1214-1215)
- userClaimedRewards[msg.sender] = userClaimedRewards[msg.sender].add(reward) (contracts/Contract.sol#1211-1214)
Reentrancy in LiquidityMining2.stake(uint256,uint256,uint256) (contracts/Contract.sol#1105-1154):
External calls:
- usdc.safeTransferFrom(msg.sender,address(this),usdcIn) (contracts/Contract.sol#1132-1133)
- usdt.safeTransferFrom(msg.sender,address(this),usdtIn) (contracts/Contract.sol#1136-1137)
- dai.safeTransferFrom(msg.sender,address(this),daiIn) (contracts/Contract.sol#1139-1141)
State variables written after the call(s):
- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)
- _userAccumulated[account] = 0 (contracts/Contract.sol#1307-1309)
- _userAccumulated[account] = reward (contracts/Contract.sol#1249-1250)
- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)
- _userStakedDai[account] = 0 (contracts/Contract.sol#1307)
- _userStakedDai[account] = daiOut (contracts/Contract.sol#1246-1248)
- _userStakedDai[account] = _userStakedDai[account].add(daiIn) (contracts/Contract.sol#1257-1259)
- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)
- _userStakedUsdc[account] = 0 (contracts/Contract.sol#1305-1306)
- _userStakedUsdc[account] = usdcOut (contracts/Contract.sol#1242-1243)
- _userStakedUsdc[account] = _userStakedUsdc[account].add(usdcIn) (contracts/Contract.sol#1251-1253)
- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)
- _userStakedUsdt[account] = 0 (contracts/Contract.sol#1306)
- _userStakedUsdt[account] = usdtOut (contracts/Contract.sol#1244-1246)
- _userStakedUsdt[account] = _userStakedUsdt[account].add(usdtIn) (contracts/Contract.sol#1253-1257)
- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)
- _userWeighted[account] = _totalWeight (contracts/Contract.sol#1259)
- totalStakers = totalStakers.add(1) (contracts/Contract.sol#1145-1146)
Reentrancy in LiquidityMining2.withdraw(address) (contracts/Contract.sol#1154-1192):
External calls:
- usdc.safeTransfer(to,usdcOut) (contracts/Contract.sol#1171-1173)
- usdt.safeTransfer(to,usdtOut) (contracts/Contract.sol#1173-1176)
- dai.safeTransfer(to,daiOut) (contracts/Contract.sol#1177)
- sarco.safeTransfer(to,reward) (contracts/Contract.sol#1180-1181)
State variables written after the call(s):
- totalClaimedRewards = totalClaimedRewards.add(reward) (contracts/Contract.sol#1185-1189)
- userClaimedRewards[msg.sender] = userClaimedRewards[msg.sender].add(reward) (contracts/Contract.sol#1181-1185)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
LiquidityMining2.deposit(uint256,uint256,uint256) (contracts/Contract.sol#1009-1040) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_startTime >= block.timestamp,LiquidityMining::deposit: start time must be in future) (contracts/Contract.sol#1019-1023)
LiquidityMining2.stake(uint256,uint256,uint256) (contracts/Contract.sol#1105-1154) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= startTime,LiquidityMining::stake: staking isn't live yet) (contracts/Contract.sol#1110-1114)
- firstStakeTime == 0 (contracts/Contract.sol#1122)
- require(bool,string)(block.timestamp < endTime,LiquidityMining::stake: staking is over) (contracts/Contract.sol#1124-1130)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
Address.isContract(address) (contracts/Contract.sol#645-657) uses assembly
- INLINE ASM (contracts/Contract.sol#656)
Address._verifyCallResult(bool,bytes,string) (contracts/Contract.sol#768-783) uses assembly
- INLINE ASM (contracts/Contract.sol#778-782)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
3 different versions of Solidity are used:
- Version constraint >=0.6.0<0.8.0 is used by:
->=0.6.0<0.8.0 (contracts/Contract.sol#3-5)
->=0.6.0<0.8.0 (contracts/Contract.sol#28-30)
->=0.6.0<0.8.0 (contracts/Contract.sol#91-93)
->=0.6.0<0.8.0 (contracts/Contract.sol#248-250)
->=0.6.0<0.8.0 (contracts/Contract.sol#325-327)
->=0.6.0<0.8.0 (contracts/Contract.sol#786)
->=0.6.0<0.8.0 (contracts/Contract.sol#866)
- Version constraint >=0.6.2<0.8.0 is used by:
->=0.6.2<0.8.0 (contracts/Contract.sol#625-627)
- Version constraint ^0.6.12 is used by:
-^0.6.12 (contracts/Contract.sol#918-919)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
Context._msgData() (contracts/Contract.sol#19-24) is never used and should be removed
ERC20._burn(address,uint256) (contracts/Contract.sol#561-574) is never used and should be removed
ERC20._mint(address,uint256) (contracts/Contract.sol#544-552) is never used and should be removed
ERC20._setupDecimals(uint8) (contracts/Contract.sol#604-605) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
Version constraint >=0.6.0<0.8.0 is too complex.
It is used by:
- >=0.6.0<0.8.0 (contracts/Contract.sol#3-5)
- >=0.6.0<0.8.0 (contracts/Contract.sol#28-30)
- >=0.6.0<0.8.0 (contracts/Contract.sol#91-93)
- >=0.6.0<0.8.0 (contracts/Contract.sol#248-250)
- >=0.6.0<0.8.0 (contracts/Contract.sol#325-327)
- >=0.6.0<0.8.0 (contracts/Contract.sol#786)
- >=0.6.0<0.8.0 (contracts/Contract.sol#866)
Version constraint >=0.6.2<0.8.0 is too complex.
It is used by:
- >=0.6.2<0.8.0 (contracts/Contract.sol#625-627)
Version constraint ^0.6.12 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching
- EmptyByteArrayCopy
- DynamicArrayCleanup.
It is used by:
- ^0.6.12 (contracts/Contract.sol#918-919)
solc-0.6.12 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in Address.sendValue(address,uint256) (contracts/Contract.sol#680-687):
- (success,None) = recipient.call{value: amount}() (contracts/Contract.sol#685)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (contracts/Contract.sol#734-748):
- (success,returndata) = target.call{value: value}(data) (contracts/Contract.sol#743-744)
Low level call in Address.functionStaticCall(address,bytes,string) (contracts/Contract.sol#757-768):
- (success,returndata) = target.staticcall(data) (contracts/Contract.sol#763-765)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Parameter LiquidityMining2.deposit(uint256,uint256,uint256)._totalRewards (contracts/Contract.sol#1010) is not in mixedCase
Parameter LiquidityMining2.deposit(uint256,uint256,uint256)._startTime (contracts/Contract.sol#1011-1012) is not in mixedCase
Parameter LiquidityMining2.deposit(uint256,uint256,uint256)._endTime (contracts/Contract.sol#1012-1014) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Redundant expression "this (contracts/Contract.sol#22)" inContext (contracts/Contract.sol#15-24)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
. analyzed (9 contracts with 100 detectors), 33 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.6.12",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.6.12",
"install_stderr": null,
"install_stdout": "Version '0.6.12' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-c2y3lrj7 --allow-paths /tmp/slither-c2y3lrj7,/tmp/slither-c2y3lrj7/lib,/tmp/slither-c2y3lrj7/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 33,
"workspace_hash": "2da8ee2b99dbc2c12fe1b089899f1193b6765780724f70a7a81f064757c943e7",
"duration_seconds": 1.4873006343841553,
"solc_version_requested": "0.6.12"
}
{"no_findings":false,"summary":"Found one accounting flaw that lets late stakers capture rewards from idle periods, plus a low-severity rescue-token accounting bug for USDC/USDT/DAI decimals.","findings":[{"severity":"medium","category":"other","title":"Rewards accrue during zero-stake periods, letting late stakers capture idle rewards","exploit_scenario":"All stakers withdraw so totalStake becomes 0 and _mostRecentValueCalcTime stops advancing. An attacker waits (rewards accrue “implicitly”), then stakes a minimal amount and calls payout; the update modifier mints rewards for the entire idle interval using the attacker’s current stake, allowing them to capture rewards for time when no one was staked.","recommendation":"When totalStake == 0, advance _mostRecentValueCalcTime to block.timestamp (capped by endTime) so idle periods do not accrue rewards; alternatively track a lastRewardTime that always advances regardless of stake and skip weight increases when totalStake is zero.","evidence":"update() only advances _mostRecentValueCalcTime when totalCurrentStake > 0, so idle periods remain unaccounted until a later interaction and are then distributed to current stakers.","locations":["contracts/Contract.sol:1089","contracts/Contract.sol:1096","contracts/Contract.sol:1116","contracts/Contract.sol:1145","contracts/Contract.sol:1242"]},{"severity":"low","category":"other","title":"rescueTokens compares normalized stake totals against raw token balances","exploit_scenario":"USDC/USDT/DAI stakes are stored normalized to 18 decimals, but rescueTokens subtracts these normalized values from raw ERC20 balances. For 6‑decimals tokens this underflows and reverts, preventing rescue of excess tokens and potentially trapping funds.","recommendation":"Compare raw balances to denormalized stake totals (or store raw amounts in parallel) before subtracting; use denormalize(usdc, _totalStakeUsdc) etc. in rescueTokens.","evidence":"normalize/denormalize scale amounts by 10**shift, while rescueTokens uses _totalStakeUsdc/_totalStakeUsdt/_totalStakeDai directly against balanceOf.","locations":["contracts/Contract.sol:1122","contracts/Contract.sol:1127","contracts/Contract.sol:1136","contracts/Contract.sol:1357","contracts/Contract.sol:1364","contracts/Contract.sol:1369","contracts/Contract.sol:1374"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-eke0ztc_
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019babe9-f4d7-70f2-9437-7dbce54ecf18
--------
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
**Reviewing AUDIT_BUNDLE file**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-eke0ztc_ succeeded in 8ms:
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
================================================================================
// File: @openzeppelin/contracts/GSN/Context.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/*
* @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
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
thinking
**Examining contract accounting and reward logic**
I’m analyzing a liquidity mining contract for vulnerabilities around stake accounting, normalized token decimals, reward timing, and owner rescue functions. There’s an interesting interplay of normalized vs raw token amounts causing potential underflows in rescue logic, plus a timing issue that could let late stakers claim unallocated rewards after a pool idle period. I’m piecing these details together to identify the most critical risks and potential exploit vectors.
thinking
**Reviewing withdraw flow and reward timing nuances**
I’m verifying that state updates happen before token transfers in withdraw and checking reentrancy protections. I’m also digging into how reward timing based on firstStakeTime can let late stakers gain all rewards by staking near the end, which looks like an economic quirk rather than a strict bug. I plan to locate relevant code lines to support findings.
exec
/bin/bash -lc 'rg -n "modifier update|function update|_mostRecentValueCalcTime|_totalWeight" contracts/Contract.sol' in /tmp/codex-eke0ztc_ succeeded in 34ms:
973: uint256 private _totalWeight;
974: uint256 private _mostRecentValueCalcTime;
1089: modifier update() {
1090: if (_mostRecentValueCalcTime == 0) {
1091: _mostRecentValueCalcTime = firstStakeTime;
1096: if (totalCurrentStake > 0 && _mostRecentValueCalcTime < endTime) {
1099: _mostRecentValueCalcTime
1112: _totalWeight = _totalWeight.add(
1116: _mostRecentValueCalcTime = block.timestamp;
1303: _userWeighted[account] = _totalWeight;
1342: .mul(_totalWeight.sub(_userWeighted[account]))
thinking
**Identifying lines for update, stake, and payout**
exec
/bin/bash -lc 'rg -n "function stake|function payout|function withdraw" contracts/Contract.sol' in /tmp/codex-eke0ztc_ succeeded in 16ms:
1145: function stake(
1198: function withdraw(address to)
1242: function payout(address to)
thinking
**Identifying location for rescueTokens bug**
exec
/bin/bash -lc 'rg -n "rescueTokens|_totalStakeUsdc|_totalStakeUsdt|_totalStakeDai" contracts/Contract.sol' in /tmp/codex-eke0ztc_ succeeded in 32ms:
970: uint256 private _totalStakeUsdc;
971: uint256 private _totalStakeUsdt;
972: uint256 private _totalStakeDai;
1016: totalUsdc = denormalize(usdc, _totalStakeUsdc);
1020: totalUsdt = denormalize(usdt, _totalStakeUsdt);
1024: totalDai = denormalize(dai, _totalStakeDai);
1080: total = _totalStakeUsdc.add(_totalStakeUsdt).add(_totalStakeDai);
1305: _totalStakeUsdc = _totalStakeUsdc.add(usdcIn);
1306: _totalStakeUsdt = _totalStakeUsdt.add(usdtIn);
1307: _totalStakeDai = _totalStakeDai.add(daiIn);
1310: _totalStakeUsdc = _totalStakeUsdc.add(addBackUsdc);
1314: _totalStakeUsdt = _totalStakeUsdt.add(addBackUsdt);
1318: _totalStakeDai = _totalStakeDai.add(addBackDai);
1346: _totalStakeUsdc = _totalStakeUsdc.sub(usdcOut);
1347: _totalStakeUsdt = _totalStakeUsdt.sub(usdtOut);
1348: _totalStakeDai = _totalStakeDai.sub(daiOut);
1357: function rescueTokens(
1364: amount <= usdc.balanceOf(address(this)).sub(_totalStakeUsdc),
1365: "LiquidityMining::rescueTokens: that usdc belongs to stakers"
1369: amount <= usdt.balanceOf(address(this)).sub(_totalStakeUsdt),
thinking
**Gathering line numbers for normalize and denormalize**
exec
/bin/bash -lc 'rg -n "function normalize|function denormalize|function shift" contracts/Contract.sol' in /tmp/codex-eke0ztc_ succeeded in 21ms:
1122: function shift(ERC20 token) private view returns (uint8 shifted) {
1127: function normalize(ERC20 token, uint256 tokenIn)
1136: function denormalize(ERC20 token, uint256 tokenIn)
thinking
**Preparing JSON findings summary**
codex
{"no_findings":false,"summary":"Found one accounting flaw that lets late stakers capture rewards from idle periods, plus a low-severity rescue-token accounting bug for USDC/USDT/DAI decimals.","findings":[{"severity":"medium","category":"other","title":"Rewards accrue during zero-stake periods, letting late stakers capture idle rewards","exploit_scenario":"All stakers withdraw so totalStake becomes 0 and _mostRecentValueCalcTime stops advancing. An attacker waits (rewards accrue “implicitly”), then stakes a minimal amount and calls payout; the update modifier mints rewards for the entire idle interval using the attacker’s current stake, allowing them to capture rewards for time when no one was staked.","recommendation":"When totalStake == 0, advance _mostRecentValueCalcTime to block.timestamp (capped by endTime) so idle periods do not accrue rewards; alternatively track a lastRewardTime that always advances regardless of stake and skip weight increases when totalStake is zero.","evidence":"update() only advances _mostRecentValueCalcTime when totalCurrentStake > 0, so idle periods remain unaccounted until a later interaction and are then distributed to current stakers.","locations":["contracts/Contract.sol:1089","contracts/Contract.sol:1096","contracts/Contract.sol:1116","contracts/Contract.sol:1145","contracts/Contract.sol:1242"]},{"severity":"low","category":"other","title":"rescueTokens compares normalized stake totals against raw token balances","exploit_scenario":"USDC/USDT/DAI stakes are stored normalized to 18 decimals, but rescueTokens subtracts these normalized values from raw ERC20 balances. For 6‑decimals tokens this underflows and reverts, preventing rescue of excess tokens and potentially trapping funds.","recommendation":"Compare raw balances to denormalized stake totals (or store raw amounts in parallel) before subtracting; use denormalize(usdc, _totalStakeUsdc) etc. in rescueTokens.","evidence":"normalize/denormalize scale amounts by 10**shift, while rescueTokens uses _totalStakeUsdc/_totalStakeUsdt/_totalStakeDai directly against balanceOf.","locations":["contracts/Contract.sol:1122","contracts/Contract.sol:1127","contracts/Contract.sol:1136","contracts/Contract.sol:1357","contracts/Contract.sol:1364","contracts/Contract.sol:1369","contracts/Contract.sol:1374"]}]}
tokens used
26,833
{
"codex": {
"ran_at": "2026-01-11T07:18:49.860329+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found one accounting flaw that lets late stakers capture rewards from idle periods, plus a low-severity rescue-token accounting bug for USDC/USDT/DAI decimals.",
"raw_final": {
"summary": "Found one accounting flaw that lets late stakers capture rewards from idle periods, plus a low-severity rescue-token accounting bug for USDC/USDT/DAI decimals.",
"findings": [
{
"title": "Rewards accrue during zero-stake periods, letting late stakers capture idle rewards",
"category": "other",
"evidence": "update() only advances _mostRecentValueCalcTime when totalCurrentStake > 0, so idle periods remain unaccounted until a later interaction and are then distributed to current stakers.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:1089",
"contracts/Contract.sol:1096",
"contracts/Contract.sol:1116",
"contracts/Contract.sol:1145",
"contracts/Contract.sol:1242"
],
"recommendation": "When totalStake == 0, advance _mostRecentValueCalcTime to block.timestamp (capped by endTime) so idle periods do not accrue rewards; alternatively track a lastRewardTime that always advances regardless of stake and skip weight increases when totalStake is zero.",
"exploit_scenario": "All stakers withdraw so totalStake becomes 0 and _mostRecentValueCalcTime stops advancing. An attacker waits (rewards accrue \u201cimplicitly\u201d), then stakes a minimal amount and calls payout; the update modifier mints rewards for the entire idle interval using the attacker\u2019s current stake, allowing them to capture rewards for time when no one was staked."
},
{
"title": "rescueTokens compares normalized stake totals against raw token balances",
"category": "other",
"evidence": "normalize/denormalize scale amounts by 10**shift, while rescueTokens uses _totalStakeUsdc/_totalStakeUsdt/_totalStakeDai directly against balanceOf.",
"severity": "low",
"locations": [
"contracts/Contract.sol:1122",
"contracts/Contract.sol:1127",
"contracts/Contract.sol:1136",
"contracts/Contract.sol:1357",
"contracts/Contract.sol:1364",
"contracts/Contract.sol:1369",
"contracts/Contract.sol:1374"
],
"recommendation": "Compare raw balances to denormalized stake totals (or store raw amounts in parallel) before subtracting; use denormalize(usdc, _totalStakeUsdc) etc. in rescueTokens.",
"exploit_scenario": "USDC/USDT/DAI stakes are stored normalized to 18 decimals, but rescueTokens subtracts these normalized values from raw ERC20 balances. For 6\u2011decimals tokens this underflows and reverts, preventing rescue of excess tokens and potentially trapping funds."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x01b7 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x78e97925 00000026: GT 00000027: PUSH2 0x00f9 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xaf2f3ebf 00000031: GT 00000032: PUSH2 0x0097 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xd76dac51 0000003c: GT 0000003d: PUSH2 0x0071 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xd76dac51 00000047: EQ 00000048: PUSH2 0x03ee 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xebf86d39 00000052: EQ 00000053: PUSH2 0x0414 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xf2fde38b 0000005d: EQ 0000005e: PUSH2 0x041c 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xf4b9fa75 00000068: EQ 00000069: PUSH2 0x0442 0000006c: JUMPI 0000006d: PUSH2 0x01b7 00000070: JUMP 00000071: JUMPDEST 00000072: DUP1 00000073: PUSH4 0xaf2f3ebf 00000078: EQ 00000079: PUSH2 0x03a8 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0xcea9d26f 00000083: EQ 00000084: PUSH2 0x03b0 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0xd578ceab 0000008e: EQ 0000008f: PUSH2 0x03e6 00000092: JUMPI 00000093: PUSH2 0x01b7 00000096: JUMP 00000097: JUMPDEST 00000098: DUP1 00000099: PUSH4 0x8da5cb5b 0000009e: GT 0000009f: PUSH2 0x00d3 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0x8da5cb5b 000000a9: EQ 000000aa: PUSH2 0x032b 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0x9be6f7a2 000000b4: EQ 000000b5: PUSH2 0x0333 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0xa638f2e2 000000bf: EQ 000000c0: PUSH2 0x0359 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0xa97ed486 000000ca: EQ 000000cb: PUSH2 0x0382 000000ce: JUMPI 000000cf: PUSH2 0x01b7 000000d2: JUMP 000000d3: JUMPDEST 000000d4: DUP1 000000d5: PUSH4 0x78e97925 000000da: EQ 000000db: PUSH2 0x0313 000000de: JUMPI 000000df: DUP1 000000e0: PUSH4 0x86989038 000000e5: EQ 000000e6: PUSH2 0x031b 000000e9: JUMPI 000000ea: DUP1 000000eb: PUSH4 0x8b0e9f3f 000000f0: EQ 000000f1: PUSH2 0x0323 000000f4: JUMPI 000000f5: PUSH2 0x01b7 000000f8: JUMP 000000f9: JUMPDEST 000000fa: DUP1 000000fb: PUSH4 0x3197cbb6 00000100: GT 00000101: PUSH2 0x0166 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x4fed4dfd 0000010b: GT 0000010c: PUSH2 0x0140 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0x4fed4dfd 00000116: EQ 00000117: PUSH2 0x0291 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0x51cff8d9 00000121: EQ 00000122: PUSH2 0x0299 00000125: JUMPI 00000126: DUP1 00000127: PUSH4 0x55d5847b 0000012c: EQ 0000012d: PUSH2 0x02e5 00000130: JUMPI 00000131: DUP1 00000132: PUSH4 0x715018a6 00000137: EQ 00000138: PUSH2 0x030b 0000013b: JUMPI 0000013c: PUSH2 0x01b7 0000013f: JUMP 00000140: JUMPDEST 00000141: DUP1 00000142: PUSH4 0x3197cbb6 00000147: EQ 00000148: PUSH2 0x0279 0000014b: JUMPI 0000014c: DUP1 0000014d: PUSH4 0x3bf760a1 00000152: EQ 00000153: PUSH2 0x0281 00000156: JUMPI 00000157: DUP1 00000158: PUSH4 0x3e413bee 0000015d: EQ 0000015e: PUSH2 0x0289 00000161: JUMPI 00000162: PUSH2 0x01b7 00000165: JUMP 00000166: JUMPDEST 00000167: DUP1 00000168: PUSH4 0x0e15561a 0000016d: GT 0000016e: PUSH2 0x0197 00000171: JUMPI 00000172: DUP1 00000173: PUSH4 0x0e15561a 00000178: EQ 00000179: PUSH2 0x0245 0000017c: JUMPI 0000017d: DUP1 0000017e: PUSH4 0x22090de2 00000183: EQ 00000184: PUSH2 0x024d 00000187: JUMPI 00000188: DUP1 00000189: PUSH4 0x2f48ab7d 0000018e: EQ 0000018f: PUSH2 0x0255 00000192: JUMPI 00000193: PUSH2 0x01b7 00000196: JUMP 00000197: JUMPDEST 00000198: DUP1 00000199: PUSH3 0xaeef8a 0000019d: EQ 0000019e: PUSH2 0x01bc 000001a1: JUMPI 000001a2: DUP1 000001a3: PUSH3 0xf1197c 000001a7: EQ 000001a8: PUSH2 0x01e7 000001ab: JUMPI 000001ac: DUP1 000001ad: PUSH4 0x0b7e9c44 000001b2: EQ 000001b3: PUSH2 0x021f 000001b6: JUMPI 000001b7: JUMPDEST 000001b8: PUSH1 0x00 000001ba: DUP1 000001bb: REVERT 000001bc: JUMPDEST 000001bd: PUSH2 0x01e5 000001c0: PUSH1 0x04 000001c2: DUP1 000001c3: CALLDATASIZE 000001c4: SUB 000001c5: PUSH1 0x60 000001c7: DUP2 000001c8: LT 000001c9: ISZERO 000001ca: PUSH2 0x01d2 000001cd: JUMPI 000001ce: PUSH1 0x00 000001d0: DUP1 000001d1: REVERT 000001d2: JUMPDEST 000001d3: POP 000001d4: DUP1 000001d5: CALLDATALOAD 000001d6: SWAP1 000001d7: PUSH1 0x20 000001d9: DUP2 000001da: ADD 000001db: CALLDATALOAD 000001dc: SWAP1 000001dd: PUSH1 0x40 000001df: ADD 000001e0: CALLDATALOAD 000001e1: PUSH2 0x044a 000001e4: JUMP 000001e5: JUMPDEST 000001e6: STOP 000001e7: JUMPDEST 000001e8: PUSH2 0x020d 000001eb: PUSH1 0x04 000001ed: DUP1 000001ee: CALLDATASIZE 000001ef: SUB 000001f0: PUSH1 0x20 000001f2: DUP2 000001f3: LT 000001f4: ISZERO 000001f5: PUSH2 0x01fd 000001f8: JUMPI 000001f9: PUSH1 0x00 000001fb: DUP1 000001fc: REVERT 000001fd: JUMPDEST 000001fe: POP 000001ff: CALLDATALOAD 00000200: PUSH1 0x01 00000202: PUSH1 0x01 00000204: PUSH1 0xa0 00000206: SHL 00000207: SUB 00000208: AND 00000209: PUSH2 0x069a 0000020c: JUMP 0000020d: JUMPDEST 0000020e: PUSH1 0x40 00000210: DUP1 00000211: MLOAD 00000212: SWAP2 00000213: DUP3 00000214: MSTORE 00000215: MLOAD 00000216: SWAP1 00000217: DUP2 00000218: SWAP1 00000219: SUB 0000021a: PUSH1 0x20 0000021c: ADD 0000021d: SWAP1 0000021e: RETURN 0000021f: JUMPDEST 00000220: PUSH2 0x020d 00000223: PUSH1 0x04 00000225: DUP1 00000226: CALLDATASIZE 00000227: SUB 00000228: PUSH1 0x20 0000022a: DUP2 0000022b: LT 0000022c: ISZERO 0000022d: PUSH2 0x0235 00000230: JUMPI 00000231: PUSH1 0x00 00000233: DUP1 00000234: REVERT 00000235: JUMPDEST 00000236: POP 00000237: CALLDATALOAD 00000238: PUSH1 0x01 0000023a: PUSH1 0x01 0000023c: PUSH1 0xa0 0000023e: SHL 0000023f: SUB 00000240: AND 00000241: PUSH2 0x06ac 00000244: JUMP 00000245: JUMPDEST 00000246: PUSH2 0x020d 00000249: PUSH2 0x08ed 0000024c: JUMP 0000024d: JUMPDEST 0000024e: PUSH2 0x020d 00000251: PUSH2 0x08f3 00000254: JUMP 00000255: JUMPDEST 00000256: PUSH2 0x025d 00000259: PUSH2 0x0926 0000025c: JUMP 0000025d: JUMPDEST 0000025e: PUSH1 0x40 00000260: DUP1 00000261: MLOAD 00000262: PUSH1 0x01 00000264: PUSH1 0x01 00000266: PUSH1 0xa0 00000268: SHL 00000269: SUB 0000026a: SWAP1 0000026b: SWAP3 0000026c: AND 0000026d: DUP3 0000026e: MSTORE 0000026f: MLOAD 00000270: SWAP1 00000271: DUP2 00000272: SWAP1 00000273: SUB 00000274: PUSH1 0x20 00000276: ADD 00000277: SWAP1 00000278: RETURN 00000279: JUMPDEST 0000027a: PUSH2 0x020d 0000027d: PUSH2 0x094a 00000280: JUMP 00000281: JUMPDEST 00000282: PUSH2 0x020d 00000285: PUSH2 0x0950 00000288: JUMP 00000289: JUMPDEST 0000028a: PUSH2 0x025d 0000028d: PUSH2 0x0956 00000290: JUMP 00000291: JUMPDEST 00000292: PUSH2 0x020d 00000295: PUSH2 0x097a 00000298: JUMP 00000299: JUMPDEST 0000029a: PUSH2 0x02bf 0000029d: PUSH1 0x04 0000029f: DUP1 000002a0: CALLDATASIZE 000002a1: SUB 000002a2: PUSH1 0x20 000002a4: DUP2 000002a5: LT 000002a6: ISZERO 000002a7: PUSH2 0x02af 000002aa: JUMPI 000002ab: PUSH1 0x00 000002ad: DUP1 000002ae: REVERT 000002af: JUMPDEST 000002b0: POP 000002b1: CALLDATALOAD 000002b2: PUSH1 0x01 000002b4: PUSH1 0x01 000002b6: PUSH1 0xa0 000002b8: SHL 000002b9: SUB 000002ba: AND 000002bb: PUSH2 0x09a8 000002be: JUMP 000002bf: JUMPDEST 000002c0: PUSH1 0x40 000002c2: DUP1 000002c3: MLOAD 000002c4: SWAP5 000002c5: DUP6 000002c6: MSTORE 000002c7: PUSH1 0x20 000002c9: DUP6 000002ca: ADD 000002cb: SWAP4 000002cc: SWAP1 000002cd: SWAP4 000002ce: MSTORE 000002cf: DUP4 000002d0: DUP4 000002d1: ADD 000002d2: SWAP2 000002d3: SWAP1 000002d4: SWAP2 000002d5: MSTORE 000002d6: PUSH1 0x60 000002d8: DUP4 000002d9: ADD 000002da: MSTORE 000002db: MLOAD 000002dc: SWAP1 000002dd: DUP2 000002de: SWAP1 000002df: SUB 000002e0: PUSH1 0x80 000002e2: ADD 000002e3: SWAP1 000002e4: RETURN 000002e5: JUMPDEST 000002e6: PUSH2 0x020d 000002e9: PUSH1 0x04 000002eb: DUP1 000002ec: CALLDATASIZE 000002ed: SUB 000002ee: PUSH1 0x20 000002f0: DUP2 000002f1: LT 000002f2: ISZERO 000002f3: PUSH2 0x02fb 000002f6: JUMPI 000002f7: PUSH1 0x00 000002f9: DUP1 000002fa: REVERT 000002fb: JUMPDEST 000002fc: POP 000002fd: CALLDATALOAD 000002fe: PUSH1 0x01 00000300: PUSH1 0x01 00000302: PUSH1 0xa0 00000304: SHL 00000305: SUB 00000306: AND 00000307: PUSH2 0x0d4f 0000030a: JUMP 0000030b: JUMPDEST 0000030c: PUSH2 0x01e5 0000030f: PUSH2 0x0d99 00000312: JUMP 00000313: JUMPDEST 00000314: PUSH2 0x020d 00000317: PUSH2 0x0e5a 0000031a: JUMP 0000031b: JUMPDEST 0000031c: PUSH2 0x020d 0000031f: PUSH2 0x0e60 00000322: JUMP 00000323: JUMPDEST 00000324: PUSH2 0x020d 00000327: PUSH2 0x0e66 0000032a: JUMP 0000032b: JUMPDEST 0000032c: PUSH2 0x025d 0000032f: PUSH2 0x0e8b 00000332: JUMP 00000333: JUMPDEST 00000334: PUSH2 0x020d 00000337: PUSH1 0x04 00000339: DUP1 0000033a: CALLDATASIZE 0000033b: SUB 0000033c: PUSH1 0x20 0000033e: DUP2 0000033f: LT 00000340: ISZERO 00000341: PUSH2 0x0349 00000344: JUMPI 00000345: PUSH1 0x00 00000347: DUP1 00000348: REVERT 00000349: JUMPDEST 0000034a: POP 0000034b: CALLDATALOAD 0000034c: PUSH1 0x01 0000034e: PUSH1 0x01 00000350: PUSH1 0xa0 00000352: SHL 00000353: SUB 00000354: AND 00000355: PUSH2 0x0e9a 00000358: JUMP 00000359: JUMPDEST 0000035a: PUSH2 0x01e5 0000035d: PUSH1 0x04 0000035f: DUP1 00000360: CALLDATASIZE 00000361: SUB 00000362: PUSH1 0x60 00000364: DUP2 00000365: LT 00000366: ISZERO 00000367: PUSH2 0x036f 0000036a: JUMPI 0000036b: PUSH1 0x00 0000036d: DUP1 0000036e: REVERT 0000036f: JUMPDEST 00000370: POP 00000371: DUP1 00000372: CALLDATALOAD 00000373: SWAP1 00000374: PUSH1 0x20 00000376: DUP2 00000377: ADD 00000378: CALLDATALOAD 00000379: SWAP1 0000037a: PUSH1 0x40 0000037c: ADD 0000037d: CALLDATALOAD 0000037e: PUSH2 0x0ede 00000381: JUMP 00000382: JUMPDEST 00000383: PUSH2 0x020d 00000386: PUSH1 0x04 00000388: DUP1 00000389: CALLDATASIZE 0000038a: SUB 0000038b: PUSH1 0x20 0000038d: DUP2 0000038e: LT 0000038f: ISZERO 00000390: PUSH2 0x0398 00000393: JUMPI 00000394: PUSH1 0x00 00000396: DUP1 00000397: REVERT 00000398: JUMPDEST 00000399: POP 0000039a: CALLDATALOAD 0000039b: PUSH1 0x01 0000039d: PUSH1 0x01 0000039f: PUSH1 0xa0 000003a1: SHL 000003a2: SUB 000003a3: AND 000003a4: PUSH2 0x136f 000003a7: JUMP 000003a8: JUMPDEST 000003a9: PUSH2 0x020d 000003ac: PUSH2 0x13aa 000003af: JUMP 000003b0: JUMPDEST 000003b1: PUSH2 0x01e5 000003b4: PUSH1 0x04 000003b6: DUP1 000003b7: CALLDATASIZE 000003b8: SUB 000003b9: PUSH1 0x60 000003bb: DUP2 000003bc: LT 000003bd: ISZERO 000003be: PUSH2 0x03c6 000003c1: JUMPI 000003c2: PUSH1 0x00 000003c4: DUP1 000003c5: REVERT 000003c6: JUMPDEST 000003c7: POP 000003c8: PUSH1 0x01 000003ca: PUSH1 0x01 000003cc: PUSH1 0xa0 000003ce: SHL 000003cf: SUB 000003d0: DUP2 000003d1: CALLDATALOAD 000003d2: DUP2 000003d3: AND 000003d4: SWAP2 000003d5: PUSH1 0x20 000003d7: DUP2 000003d8: ADD 000003d9: CALLDATALOAD 000003da: SWAP1 000003db: SWAP2 000003dc: AND 000003dd: SWAP1 000003de: PUSH1 0x40 000003e0: ADD 000003e1: CALLDATALOAD 000003e2: PUSH2 0x13d8 000003e5: JUMP 000003e6: JUMPDEST 000003e7: PUSH2 0x020d 000003ea: PUSH2 0x18d0 000003ed: JUMP 000003ee: JUMPDEST 000003ef: PUSH2 0x020d 000003f2: PUSH1 0x04 000003f4: DUP1 000003f5: CALLDATASIZE 000003f6: SUB 000003f7: PUSH1 0x20 000003f9: DUP2 000003fa: LT 000003fb: ISZERO 000003fc: PUSH2 0x0404 000003ff: JUMPI 00000400: PUSH1 0x00 00000402: DUP1 00000403: REVERT 00000404: JUMPDEST 00000405: POP 00000406: CALLDATALOAD 00000407: PUSH1 0x01 00000409: PUSH1 0x01 0000040b: PUSH1 0xa0 0000040d: SHL 0000040e: SUB 0000040f: AND 00000410: PUSH2 0x18d6 00000413: JUMP 00000414: JUMPDEST 00000415: PUSH2 0x025d 00000418: PUSH2 0x191a 0000041b: JUMP 0000041c: JUMPDEST 0000041d: PUSH2 0x01e5 00000420: PUSH1 0x04 00000422: DUP1 00000423: CALLDATASIZE 00000424: SUB 00000425: PUSH1 0x20 00000427: DUP2 00000428: LT 00000429: ISZERO 0000042a: PUSH2 0x0432 0000042d: JUMPI 0000042e: PUSH1 0x00 00000430: DUP1 00000431: REVERT 00000432: JUMPDEST 00000433: POP 00000434: CALLDATALOAD 00000435: PUSH1 0x01 00000437: PUSH1 0x01 00000439: PUSH1 0xa0 0000043b: SHL 0000043c: SUB 0000043d: AND 0000043e: PUSH2 0x193e 00000441: JUMP 00000442: JUMPDEST 00000443: PUSH2 0x025d 00000446: PUSH2 0x1a55 00000449: JUMP 0000044a: JUMPDEST 0000044b: PUSH2 0x0452 0000044e: PUSH2 0x1a79 00000451: JUMP 00000452: JUMPDEST 00000453: PUSH1 0x00 00000455: SLOAD 00000456: PUSH1 0x01 00000458: PUSH1 0x01 0000045a: PUSH1 0xa0 0000045c: SHL 0000045d: SUB 0000045e: SWAP1 0000045f: DUP2 00000460: AND 00000461: SWAP2 00000462: AND 00000463: EQ 00000464: PUSH2 0x04b4 00000467: JUMPI 00000468: PUSH1 0x40 0000046a: DUP1 0000046b: MLOAD 0000046c: PUSH3 0x461bcd 00000470: PUSH1 0xe5 00000472: SHL 00000473: DUP2 00000474: MSTORE 00000475: PUSH1 0x20 00000477: PUSH1 0x04 00000479: DUP3 0000047a: ADD 0000047b: DUP2 0000047c: SWAP1 0000047d: MSTORE 0000047e: PUSH1 0x24 00000480: DUP3 00000481: ADD 00000482: MSTORE 00000483: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 000004a4: PUSH1 0x44 000004a6: DUP3 000004a7: ADD 000004a8: MSTORE 000004a9: SWAP1 000004aa: MLOAD 000004ab: SWAP1 000004ac: DUP2 000004ad: SWAP1 000004ae: SUB 000004af: PUSH1 0x64 000004b1: ADD 000004b2: SWAP1 000004b3: REVERT 000004b4: JUMPDEST 000004b5: PUSH1 0x05 000004b7: SLOAD 000004b8: ISZERO 000004b9: PUSH2 0x04f3 000004bc: JUMPI 000004bd: PUSH1 0x40 000004bf: MLOAD 000004c0: PUSH3 0x461bcd 000004c4: PUSH1 0xe5 000004c6: SHL 000004c7: DUP2 000004c8: MSTORE 000004c9: PUSH1 0x04 000004cb: ADD 000004cc: DUP1 000004cd: DUP1 000004ce: PUSH1 0x20 000004d0: ADD 000004d1: DUP3 000004d2: DUP2 000004d3: SUB 000004d4: DUP3 000004d5: MSTORE 000004d6: PUSH1 0x32 000004d8: DUP2 000004d9: MSTORE 000004da: PUSH1 0x20 000004dc: ADD 000004dd: DUP1 000004de: PUSH2 0x242d 000004e1: PUSH1 0x32 000004e3: SWAP2 000004e4: CODECOPY 000004e5: PUSH1 0x40 000004e7: ADD 000004e8: SWAP2 000004e9: POP 000004ea: POP 000004eb: PUSH1 0x40 000004ed: MLOAD 000004ee: DUP1 000004ef: SWAP2 000004f0: SUB 000004f1: SWAP1 000004f2: REVERT 000004f3: JUMPDEST 000004f4: TIMESTAMP 000004f5: DUP3 000004f6: LT 000004f7: ISZERO 000004f8: PUSH2 0x0532 000004fb: JUMPI 000004fc: PUSH1 0x40 000004fe: MLOAD 000004ff: PUSH3 0x461bcd 00000503: PUSH1 0xe5 00000505: SHL 00000506: DUP2 00000507: MSTORE 00000508: PUSH1 0x04 0000050a: ADD 0000050b: DUP1 0000050c: DUP1 0000050d: PUSH1 0x20 0000050f: ADD 00000510: DUP3 00000511: DUP2 00000512: SUB 00000513: DUP3 00000514: MSTORE 00000515: PUSH1 0x36 00000517: DUP2 00000518: MSTORE 00000519: PUSH1 0x20 0000051b: ADD 0000051c: DUP1 0000051d: PUSH2 0x2396 00000520: PUSH1 0x36 00000522: SWAP2 00000523: CODECOPY 00000524: PUSH1 0x40 00000526: ADD 00000527: SWAP2 00000528: POP 00000529: POP 0000052a: PUSH1 0x40 0000052c: MLOAD 0000052d: DUP1 0000052e: SWAP2 0000052f: SUB 00000530: SWAP1 00000531: REVERT 00000532: JUMPDEST 00000533: DUP2 00000534: DUP2 00000535: GT 00000536: PUSH2 0x0570 00000539: JUMPI 0000053a: PUSH1 0x40 0000053c: MLOAD 0000053d: PUSH3 0x461bcd 00000541: PUSH1 0xe5 00000543: SHL 00000544: DUP2 00000545: MSTORE 00000546: PUSH1 0x04 00000548: ADD 00000549: DUP1 0000054a: DUP1 0000054b: PUSH1 0x20 0000054d: ADD 0000054e: DUP3 0000054f: DUP2 00000550: SUB 00000551: DUP3 00000552: MSTORE 00000553: PUSH1 0x38 00000555: DUP2 00000556: MSTORE 00000557: PUSH1 0x20 00000559: ADD 0000055a: DUP1 0000055b: PUSH2 0x245f 0000055e: PUSH1 0x38 00000560: SWAP2 00000561: CODECOPY 00000562: PUSH1 0x40 00000564: ADD 00000565: SWAP2 00000566: POP 00000567: POP 00000568: PUSH1 0x40 0000056a: MLOAD 0000056b: DUP1 0000056c: SWAP2 0000056d: SUB 0000056e: SWAP1 0000056f: REVERT 00000570: JUMPDEST 00000571: DUP3 00000572: PUSH32 0x0000000000000000000000007697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a 00000593: PUSH1 0x01 00000595: PUSH1 0x01 00000597: PUSH1 0xa0 00000599: SHL 0000059a: SUB 0000059b: AND 0000059c: PUSH4 0x70a08231 000005a1: ADDRESS 000005a2: PUSH1 0x40 000005a4: MLOAD 000005a5: DUP3 000005a6: PUSH4 0xffffffff 000005ab: AND 000005ac: PUSH1 0xe0 000005ae: SHL 000005af: DUP2 000005b0: MSTORE 000005b1: PUSH1 0x04 000005b3: ADD 000005b4: DUP1 000005b5: DUP3 000005b6: PUSH1 0x01 000005b8: PUSH1 0x01 000005ba: PUSH1 0xa0 000005bc: SHL 000005bd: SUB 000005be: AND 000005bf: DUP2 000005c0: MSTORE 000005c1: PUSH1 0x20 000005c3: ADD 000005c4: SWAP2 000005c5: POP 000005c6: POP 000005c7: PUSH1 0x20 000005c9: PUSH1 0x40 000005cb: MLOAD 000005cc: DUP1 000005cd: DUP4 000005ce: SUB 000005cf: DUP2 000005d0: DUP7 000005d1: DUP1 000005d2: EXTCODESIZE 000005d3: ISZERO 000005d4: DUP1 000005d5: ISZERO 000005d6: PUSH2 0x05de 000005d9: JUMPI 000005da: PUSH1 0x00 000005dc: DUP1 000005dd: REVERT 000005de: JUMPDEST 000005df: POP 000005e0: GAS 000005e1: STATICCALL 000005e2: ISZERO 000005e3: DUP1 000005e4: ISZERO 000005e5: PUSH2 0x05f2 000005e8: JUMPI 000005e9: RETURNDATASIZE 000005ea: PUSH1 0x00 000005ec: DUP1 000005ed: RETURNDATACOPY 000005ee: RETURNDATASIZE 000005ef: PUSH1 0x00 000005f1: REVERT 000005f2: JUMPDEST 000005f3: POP 000005f4: POP 000005f5: POP 000005f6: POP 000005f7: PUSH1 0x40 000005f9: MLOAD 000005fa: RETURNDATASIZE 000005fb: PUSH1 0x20 000005fd: DUP2 000005fe: LT 000005ff: ISZERO 00000600: PUSH2 0x0608 00000603: JUMPI 00000604: PUSH1 0x00 00000606: DUP1 00000607: REVERT 00000608: JUMPDEST 00000609: POP 0000060a: MLOAD 0000060b: EQ 0000060c: PUSH2 0x0646 0000060f: JUMPI 00000610: PUSH1 0x40 00000612: MLOAD 00000613: PUSH3 0x461bcd 00000617: PUSH1 0xe5 00000619: SHL 0000061a: DUP2 0000061b: MSTORE 0000061c: PUSH1 0x04 0000061e: ADD 0000061f: DUP1 00000620: DUP1 00000621: PUSH1 0x20 00000623: ADD 00000624: DUP3 00000625: DUP2 00000626: SUB 00000627: DUP3 00000628: MSTORE 00000629: PUSH1 0x50 0000062b: DUP2 0000062c: MSTORE 0000062d: PUSH1 0x20 0000062f: ADD 00000630: DUP1 00000631: PUSH2 0x2497 00000634: PUSH1 0x50 00000636: SWAP2 00000637: CODECOPY 00000638: PUSH1 0x60 0000063a: ADD 0000063b: SWAP2 0000063c: POP 0000063d: POP 0000063e: PUSH1 0x40 00000640: MLOAD 00000641: DUP1 00000642: SWAP2 00000643: SUB 00000644: SWAP1 00000645: REVERT 00000646: JUMPDEST 00000647: PUSH1 0x03 00000649: DUP4 0000064a: SWAP1 0000064b: SSTORE 0000064c: PUSH1 0x05 0000064e: DUP3 0000064f: SWAP1 00000650: SSTORE 00000651: PUSH1 0x07 00000653: DUP2 00000654: SWAP1 00000655: SSTORE 00000656: PUSH1 0x40 00000658: DUP1 00000659: MLOAD 0000065a: DUP5 0000065b: DUP2 0000065c: MSTORE 0000065d: PUSH1 0x20 0000065f: DUP2 00000660: ADD 00000661: DUP5 00000662: SWAP1 00000663: MSTORE 00000664: DUP1 00000665: DUP3 00000666: ADD 00000667: DUP4 00000668: SWAP1 00000669: MSTORE 0000066a: SWAP1 0000066b: MLOAD 0000066c: PUSH32 0x33da4f9b82b3e18a281ca2cabbe2f076925692abb593b7ea3f850009e8ec9770 0000068d: SWAP2 0000068e: DUP2 0000068f: SWAP1 00000690: SUB 00000691: PUSH1 0x60 00000693: ADD 00000694: SWAP1 00000695: LOG1 00000696: POP 00000697: POP 00000698: POP 00000699: JUMP 0000069a: JUMPDEST 0000069b: PUSH1 0x0d 0000069d: PUSH1 0x20 0000069f: MSTORE 000006a0: PUSH1 0x00 000006a2: SWAP1 000006a3: DUP2 000006a4: MSTORE 000006a5: PUSH1 0x40 000006a7: SWAP1 000006a8: KECCAK256 000006a9: SLOAD 000006aa: DUP2 000006ab: JUMP 000006ac: JUMPDEST 000006ad: PUSH1 0x00 000006af: PUSH1 0x0c 000006b1: SLOAD 000006b2: PUSH1 0x00 000006b4: EQ 000006b5: ISZERO 000006b6: PUSH2 0x06c0 000006b9: JUMPI 000006ba: PUSH1 0x06 000006bc: SLOAD 000006bd: PUSH1 0x0c 000006bf: SSTORE 000006c0: JUMPDEST 000006c1: PUSH1 0x00 000006c3: PUSH2 0x06ca 000006c6: PUSH2 0x0e66 000006c9: JUMP 000006ca: JUMPDEST 000006cb: SWAP1 000006cc: POP 000006cd: PUSH1 0x00 000006cf: DUP2 000006d0: GT 000006d1: DUP1 000006d2: ISZERO 000006d3: PUSH2 0x06df 000006d6: JUMPI 000006d7: POP 000006d8: PUSH1 0x07 000006da: SLOAD 000006db: PUSH1 0x0c 000006dd: SLOAD 000006de: LT 000006df: JUMPDEST 000006e0: ISZERO 000006e1: PUSH2 0x07a4 000006e4: JUMPI 000006e5: PUSH1 0x00 000006e7: DUP1 000006e8: PUSH2 0x06fc 000006eb: PUSH1 0x0c 000006ed: SLOAD 000006ee: TIMESTAMP 000006ef: PUSH2 0x1a7d 000006f2: SWAP1 000006f3: SWAP2 000006f4: SWAP1 000006f5: PUSH4 0xffffffff 000006fa: AND 000006fb: JUMP 000006fc: JUMPDEST 000006fd: SWAP1 000006fe: POP 000006ff: PUSH1 0x00 00000701: PUSH2 0x0723 00000704: PUSH2 0x071a 00000707: PUSH1 0x06 00000709: SLOAD 0000070a: PUSH1 0x07 0000070c: SLOAD 0000070d: PUSH2 0x1a7d 00000710: SWAP1 00000711: SWAP2 00000712: SWAP1 00000713: PUSH4 0xffffffff 00000718: AND 00000719: JUMP 0000071a: JUMPDEST 0000071b: PUSH1 0x03 0000071d: SLOAD 0000071e: SWAP1 0000071f: PUSH2 0x1ac6 00000722: JUMP 00000723: JUMPDEST 00000724: SWAP1 00000725: POP 00000726: PUSH1 0x07 00000728: SLOAD 00000729: TIMESTAMP 0000072a: LT 0000072b: ISZERO 0000072c: PUSH2 0x0740 0000072f: JUMPI 00000730: PUSH2 0x0739 00000733: DUP3 00000734: DUP3 00000735: PUSH2 0x1b08 00000738: JUMP 00000739: JUMPDEST 0000073a: SWAP3 0000073b: POP 0000073c: PUSH2 0x0771 0000073f: JUMP 00000740: JUMPDEST 00000741: PUSH1 0x00 00000743: PUSH2 0x0757 00000746: PUSH1 0x07 00000748: SLOAD 00000749: TIMESTAMP 0000074a: PUSH2 0x1a7d 0000074d: SWAP1 0000074e: SWAP2 0000074f: SWAP1 00000750: PUSH4 0xffffffff 00000755: AND 00000756: JUMP 00000757: JUMPDEST 00000758: SWAP1 00000759: POP 0000075a: PUSH2 0x076d 0000075d: DUP3 0000075e: PUSH2 0x0767 00000761: DUP6 00000762: DUP5 00000763: PUSH2 0x1a7d 00000766: JUMP 00000767: JUMPDEST 00000768: SWAP1 00000769: PUSH2 0x1b08 0000076c: JUMP 0000076d: JUMPDEST 0000076e: SWAP4 0000076f: POP 00000770: POP 00000771: JUMPDEST 00000772: PUSH2 0x0799 00000775: PUSH2 0x0790 00000778: DUP6 00000779: PUSH2 0x078a 0000077c: DUP7 0000077d: PUSH8 0x0de0b6b3a7640000 00000786: PUSH2 0x1b08 00000789: JUMP 0000078a: JUMPDEST 0000078b: SWAP1 0000078c: PUSH2 0x1ac6 0000078f: JUMP 00000790: JUMPDEST 00000791: PUSH1 0x0b 00000793: SLOAD 00000794: SWAP1 00000795: PUSH2 0x1b61 00000798: JUMP 00000799: JUMPDEST 0000079a: PUSH1 0x0b 0000079c: SSTORE 0000079d: POP 0000079e: POP 0000079f: TIMESTAMP 000007a0: PUSH1 0x0c 000007a2: SSTORE 000007a3: POP 000007a4: JUMPDEST 000007a5: PUSH1 0x02 000007a7: PUSH1 0x01 000007a9: SLOAD 000007aa: EQ 000007ab: ISZERO 000007ac: PUSH2 0x07fc 000007af: JUMPI 000007b0: PUSH1 0x40 000007b2: DUP1 000007b3: MLOAD 000007b4: PUSH3 0x461bcd 000007b8: PUSH1 0xe5 000007ba: SHL 000007bb: DUP2 000007bc: MSTORE 000007bd: PUSH1 0x20 000007bf: PUSH1 0x04 000007c1: DUP3 000007c2: ADD 000007c3: MSTORE 000007c4: PUSH1 0x1f 000007c6: PUSH1 0x24 000007c8: DUP3 000007c9: ADD 000007ca: MSTORE 000007cb: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 000007ec: PUSH1 0x44 000007ee: DUP3 000007ef: ADD 000007f0: MSTORE 000007f1: SWAP1 000007f2: MLOAD 000007f3: SWAP1 000007f4: DUP2 000007f5: SWAP1 000007f6: SUB 000007f7: PUSH1 0x64 000007f9: ADD 000007fa: SWAP1 000007fb: REVERT 000007fc: JUMPDEST 000007fd: PUSH1 0x02 000007ff: PUSH1 0x01 00000801: SSTORE 00000802: PUSH1 0x00 00000804: DUP1 00000805: DUP1 00000806: DUP1 00000807: PUSH2 0x080f 0000080a: CALLER 0000080b: PUSH2 0x1bbb 0000080e: JUMP 0000080f: JUMPDEST 00000810: SWAP9 00000811: POP 00000812: SWAP2 00000813: SWAP6 00000814: POP 00000815: SWAP4 00000816: POP 00000817: SWAP2 00000818: POP 00000819: DUP6 0000081a: SWAP1 0000081b: POP 0000081c: DUP1 0000081d: ISZERO 0000081e: PUSH2 0x0890 00000821: JUMPI 00000822: PUSH2 0x0855 00000825: PUSH1 0x01 00000827: PUSH1 0x01 00000829: PUSH1 0xa0 0000082b: SHL 0000082c: SUB 0000082d: PUSH32 0x0000000000000000000000007697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a 0000084e: AND 0000084f: DUP9 00000850: DUP9 00000851: PUSH2 0x1cf3 00000854: JUMP 00000855: JUMPDEST 00000856: CALLER 00000857: PUSH1 0x00 00000859: SWAP1 0000085a: DUP2 0000085b: MSTORE 0000085c: PUSH1 0x0d 0000085e: PUSH1 0x20 00000860: MSTORE 00000861: PUSH1 0x40 00000863: SWAP1 00000864: KECCAK256 00000865: SLOAD 00000866: PUSH2 0x086f 00000869: SWAP1 0000086a: DUP8 0000086b: PUSH2 0x1b61 0000086e: JUMP 0000086f: JUMPDEST 00000870: CALLER 00000871: PUSH1 0x00 00000873: SWAP1 00000874: DUP2 00000875: MSTORE 00000876: PUSH1 0x0d 00000878: PUSH1 0x20 0000087a: MSTORE 0000087b: PUSH1 0x40 0000087d: SWAP1 0000087e: KECCAK256 0000087f: SSTORE 00000880: PUSH1 0x04 00000882: SLOAD 00000883: PUSH2 0x088c 00000886: SWAP1 00000887: DUP8 00000888: PUSH2 0x1b61 0000088b: JUMP 0000088c: JUMPDEST 0000088d: PUSH1 0x04 0000088f: SSTORE 00000890: JUMPDEST 00000891: PUSH2 0x089c 00000894: DUP5 00000895: DUP5 00000896: DUP5 00000897: CALLER 00000898: PUSH2 0x1d78 0000089b: JUMP 0000089c: JUMPDEST 0000089d: PUSH1 0x40 0000089f: DUP1 000008a0: MLOAD 000008a1: DUP3 000008a2: DUP2 000008a3: MSTORE 000008a4: PUSH1 0x01 000008a6: PUSH1 0x01 000008a8: PUSH1 0xa0 000008aa: SHL 000008ab: SUB 000008ac: DUP10 000008ad: AND 000008ae: PUSH1 0x20 000008b0: DUP3 000008b1: ADD 000008b2: MSTORE 000008b3: DUP2 000008b4: MLOAD 000008b5: CALLER 000008b6: SWAP3 000008b7: PUSH32 0x1be0a78bb08f226c98376fe01c6b0037104329761c8799e7d9f3ba5599c9eba7 000008d8: SWAP3 000008d9: DUP3 000008da: SWAP1 000008db: SUB 000008dc: ADD 000008dd: SWAP1 000008de: LOG2 000008df: POP 000008e0: POP 000008e1: PUSH1 0x01 000008e3: DUP1 000008e4: SSTORE 000008e5: POP 000008e6: SWAP2 000008e7: SWAP4 000008e8: SWAP3 000008e9: POP 000008ea: POP 000008eb: POP 000008ec: JUMP 000008ed: JUMPDEST 000008ee: PUSH1 0x03 000008f0: SLOAD 000008f1: DUP2 000008f2: JUMP 000008f3: JUMPDEST 000008f4: PUSH1 0x00 000008f6: PUSH2 0x0921 000008f9: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000091a: PUSH1 0x08 0000091c: SLOAD 0000091d: PUSH2 0x1f0c 00000920: JUMP 00000921: JUMPDEST 00000922: SWAP1 00000923: POP 00000924: SWAP1 00000925: JUMP 00000926: JUMPDEST 00000927: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 00000948: DUP2 00000949: JUMP 0000094a: JUMPDEST 0000094b: PUSH1 0x07 0000094d: SLOAD 0000094e: DUP2 0000094f: JUMP 00000950: JUMPDEST 00000951: PUSH1 0x06 00000953: SLOAD 00000954: DUP2 00000955: JUMP 00000956: JUMPDEST 00000957: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000978: DUP2 00000979: JUMP 0000097a: JUMPDEST 0000097b: PUSH1 0x00 0000097d: PUSH2 0x0921 00000980: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 000009a1: PUSH1 0x0a 000009a3: SLOAD 000009a4: PUSH2 0x1f0c 000009a7: JUMP 000009a8: JUMPDEST 000009a9: PUSH1 0x00 000009ab: DUP1 000009ac: PUSH1 0x00 000009ae: DUP1 000009af: PUSH1 0x0c 000009b1: SLOAD 000009b2: PUSH1 0x00 000009b4: EQ 000009b5: ISZERO 000009b6: PUSH2 0x09c0 000009b9: JUMPI 000009ba: PUSH1 0x06 000009bc: SLOAD 000009bd: PUSH1 0x0c 000009bf: SSTORE 000009c0: JUMPDEST 000009c1: PUSH1 0x00 000009c3: PUSH2 0x09ca 000009c6: PUSH2 0x0e66 000009c9: JUMP 000009ca: JUMPDEST 000009cb: SWAP1 000009cc: POP 000009cd: PUSH1 0x00 000009cf: DUP2 000009d0: GT 000009d1: DUP1 000009d2: ISZERO 000009d3: PUSH2 0x09df 000009d6: JUMPI 000009d7: POP 000009d8: PUSH1 0x07 000009da: SLOAD 000009db: PUSH1 0x0c 000009dd: SLOAD 000009de: LT 000009df: JUMPDEST 000009e0: ISZERO 000009e1: PUSH2 0x0a86 000009e4: JUMPI 000009e5: PUSH1 0x00 000009e7: DUP1 000009e8: PUSH2 0x09fc 000009eb: PUSH1 0x0c 000009ed: SLOAD 000009ee: TIMESTAMP 000009ef: PUSH2 0x1a7d 000009f2: SWAP1 000009f3: SWAP2 000009f4: SWAP1 000009f5: PUSH4 0xffffffff 000009fa: AND 000009fb: JUMP 000009fc: JUMPDEST 000009fd: SWAP1 000009fe: POP 000009ff: PUSH1 0x00 00000a01: PUSH2 0x0a1a 00000a04: PUSH2 0x071a 00000a07: PUSH1 0x06 00000a09: SLOAD 00000a0a: PUSH1 0x07 00000a0c: SLOAD 00000a0d: PUSH2 0x1a7d 00000a10: SWAP1 00000a11: SWAP2 00000a12: SWAP1 00000a13: PUSH4 0xffffffff 00000a18: AND 00000a19: JUMP 00000a1a: JUMPDEST 00000a1b: SWAP1 00000a1c: POP 00000a1d: PUSH1 0x07 00000a1f: SLOAD 00000a20: TIMESTAMP 00000a21: LT 00000a22: ISZERO 00000a23: PUSH2 0x0a37 00000a26: JUMPI 00000a27: PUSH2 0x0a30 00000a2a: DUP3 00000a2b: DUP3 00000a2c: PUSH2 0x1b08 00000a2f: JUMP 00000a30: JUMPDEST 00000a31: SWAP3 00000a32: POP 00000a33: PUSH2 0x0a62 00000a36: JUMP 00000a37: JUMPDEST 00000a38: PUSH1 0x00 00000a3a: PUSH2 0x0a4e 00000a3d: PUSH1 0x07 00000a3f: SLOAD 00000a40: TIMESTAMP 00000a41: PUSH2 0x1a7d 00000a44: SWAP1 00000a45: SWAP2 00000a46: SWAP1 00000a47: PUSH4 0xffffffff 00000a4c: AND 00000a4d: JUMP 00000a4e: JUMPDEST 00000a4f: SWAP1 00000a50: POP 00000a51: PUSH2 0x0a5e 00000a54: DUP3 00000a55: PUSH2 0x0767 00000a58: DUP6 00000a59: DUP5 00000a5a: PUSH2 0x1a7d 00000a5d: JUMP 00000a5e: JUMPDEST 00000a5f: SWAP4 00000a60: POP 00000a61: POP 00000a62: JUMPDEST 00000a63: PUSH2 0x0a7b 00000a66: PUSH2 0x0790 00000a69: DUP6 00000a6a: PUSH2 0x078a 00000a6d: DUP7 00000a6e: PUSH8 0x0de0b6b3a7640000 00000a77: PUSH2 0x1b08 00000a7a: JUMP 00000a7b: JUMPDEST 00000a7c: PUSH1 0x0b 00000a7e: SSTORE 00000a7f: POP 00000a80: POP 00000a81: TIMESTAMP 00000a82: PUSH1 0x0c 00000a84: SSTORE 00000a85: POP 00000a86: JUMPDEST 00000a87: PUSH1 0x02 00000a89: PUSH1 0x01 00000a8b: SLOAD 00000a8c: EQ 00000a8d: ISZERO 00000a8e: PUSH2 0x0ade 00000a91: JUMPI 00000a92: PUSH1 0x40 00000a94: DUP1 00000a95: MLOAD 00000a96: PUSH3 0x461bcd 00000a9a: PUSH1 0xe5 00000a9c: SHL 00000a9d: DUP2 00000a9e: MSTORE 00000a9f: PUSH1 0x20 00000aa1: PUSH1 0x04 00000aa3: DUP3 00000aa4: ADD 00000aa5: MSTORE 00000aa6: PUSH1 0x1f 00000aa8: PUSH1 0x24 00000aaa: DUP3 00000aab: ADD 00000aac: MSTORE 00000aad: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00000ace: PUSH1 0x44 00000ad0: DUP3 00000ad1: ADD 00000ad2: MSTORE 00000ad3: SWAP1 00000ad4: MLOAD 00000ad5: SWAP1 00000ad6: DUP2 00000ad7: SWAP1 00000ad8: SUB 00000ad9: PUSH1 0x64 00000adb: ADD 00000adc: SWAP1 00000add: REVERT 00000ade: JUMPDEST 00000adf: PUSH1 0x02 00000ae1: PUSH1 0x01 00000ae3: DUP2 00000ae4: DUP2 00000ae5: SSTORE 00000ae6: SWAP1 00000ae7: SLOAD 00000ae8: PUSH2 0x0af0 00000aeb: SWAP2 00000aec: PUSH2 0x1a7d 00000aef: JUMP 00000af0: JUMPDEST 00000af1: PUSH1 0x02 00000af3: SSTORE 00000af4: PUSH2 0x0afc 00000af7: CALLER 00000af8: PUSH2 0x1bbb 00000afb: JUMP 00000afc: JUMPDEST 00000afd: SWAP3 00000afe: SWAP8 00000aff: POP 00000b00: SWAP1 00000b01: SWAP6 00000b02: POP 00000b03: SWAP4 00000b04: POP 00000b05: SWAP2 00000b06: POP 00000b07: PUSH2 0x0b30 00000b0a: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000b2b: DUP7 00000b2c: PUSH2 0x1f0c 00000b2f: JUMP 00000b30: JUMPDEST 00000b31: SWAP5 00000b32: POP 00000b33: PUSH2 0x0b5c 00000b36: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 00000b57: DUP6 00000b58: PUSH2 0x1f0c 00000b5b: JUMP 00000b5c: JUMPDEST 00000b5d: SWAP4 00000b5e: POP 00000b5f: PUSH2 0x0b88 00000b62: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 00000b83: DUP5 00000b84: PUSH2 0x1f0c 00000b87: JUMP 00000b88: JUMPDEST 00000b89: SWAP3 00000b8a: POP 00000b8b: DUP5 00000b8c: ISZERO 00000b8d: PUSH2 0x0bc4 00000b90: JUMPI 00000b91: PUSH2 0x0bc4 00000b94: PUSH1 0x01 00000b96: PUSH1 0x01 00000b98: PUSH1 0xa0 00000b9a: SHL 00000b9b: SUB 00000b9c: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000bbd: AND 00000bbe: DUP8 00000bbf: DUP8 00000bc0: PUSH2 0x1cf3 00000bc3: JUMP 00000bc4: JUMPDEST 00000bc5: DUP4 00000bc6: ISZERO 00000bc7: PUSH2 0x0bfe 00000bca: JUMPI 00000bcb: PUSH2 0x0bfe 00000bce: PUSH1 0x01 00000bd0: PUSH1 0x01 00000bd2: PUSH1 0xa0 00000bd4: SHL 00000bd5: SUB 00000bd6: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 00000bf7: AND 00000bf8: DUP8 00000bf9: DUP7 00000bfa: PUSH2 0x1cf3 00000bfd: JUMP 00000bfe: JUMPDEST 00000bff: DUP3 00000c00: ISZERO 00000c01: PUSH2 0x0c38 00000c04: JUMPI 00000c05: PUSH2 0x0c38 00000c08: PUSH1 0x01 00000c0a: PUSH1 0x01 00000c0c: PUSH1 0xa0 00000c0e: SHL 00000c0f: SUB 00000c10: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 00000c31: AND 00000c32: DUP8 00000c33: DUP6 00000c34: PUSH2 0x1cf3 00000c37: JUMP 00000c38: JUMPDEST 00000c39: DUP2 00000c3a: ISZERO 00000c3b: PUSH2 0x0cef 00000c3e: JUMPI 00000c3f: PUSH2 0x0c72 00000c42: PUSH1 0x01 00000c44: PUSH1 0x01 00000c46: PUSH1 0xa0 00000c48: SHL 00000c49: SUB 00000c4a: PUSH32 0x0000000000000000000000007697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a 00000c6b: AND 00000c6c: DUP8 00000c6d: DUP5 00000c6e: PUSH2 0x1cf3 00000c71: JUMP 00000c72: JUMPDEST 00000c73: CALLER 00000c74: PUSH1 0x00 00000c76: SWAP1 00000c77: DUP2 00000c78: MSTORE 00000c79: PUSH1 0x0d 00000c7b: PUSH1 0x20 00000c7d: MSTORE 00000c7e: PUSH1 0x40 00000c80: SWAP1 00000c81: KECCAK256 00000c82: SLOAD 00000c83: PUSH2 0x0c8c 00000c86: SWAP1 00000c87: DUP4 00000c88: PUSH2 0x1b61 00000c8b: JUMP 00000c8c: JUMPDEST 00000c8d: CALLER 00000c8e: PUSH1 0x00 00000c90: SWAP1 00000c91: DUP2 00000c92: MSTORE 00000c93: PUSH1 0x0d 00000c95: PUSH1 0x20 00000c97: MSTORE 00000c98: PUSH1 0x40 00000c9a: SWAP1 00000c9b: KECCAK256 00000c9c: SSTORE 00000c9d: PUSH1 0x04 00000c9f: SLOAD 00000ca0: PUSH2 0x0ca9 00000ca3: SWAP1 00000ca4: DUP4 00000ca5: PUSH2 0x1b61 00000ca8: JUMP 00000ca9: JUMPDEST 00000caa: PUSH1 0x04 00000cac: SSTORE 00000cad: PUSH1 0x40 00000caf: DUP1 00000cb0: MLOAD 00000cb1: DUP4 00000cb2: DUP2 00000cb3: MSTORE 00000cb4: PUSH1 0x01 00000cb6: PUSH1 0x01 00000cb8: PUSH1 0xa0 00000cba: SHL 00000cbb: SUB 00000cbc: DUP9 00000cbd: AND 00000cbe: PUSH1 0x20 00000cc0: DUP3 00000cc1: ADD 00000cc2: MSTORE 00000cc3: DUP2 00000cc4: MLOAD 00000cc5: CALLER 00000cc6: SWAP3 00000cc7: PUSH32 0x1be0a78bb08f226c98376fe01c6b0037104329761c8799e7d9f3ba5599c9eba7 00000ce8: SWAP3 00000ce9: DUP3 00000cea: SWAP1 00000ceb: SUB 00000cec: ADD 00000ced: SWAP1 00000cee: LOG2 00000cef: JUMPDEST 00000cf0: PUSH1 0x40 00000cf2: DUP1 00000cf3: MLOAD 00000cf4: DUP7 00000cf5: DUP2 00000cf6: MSTORE 00000cf7: PUSH1 0x20 00000cf9: DUP2 00000cfa: ADD 00000cfb: DUP7 00000cfc: SWAP1 00000cfd: MSTORE 00000cfe: DUP1 00000cff: DUP3 00000d00: ADD 00000d01: DUP6 00000d02: SWAP1 00000d03: MSTORE 00000d04: PUSH1 0x01 00000d06: PUSH1 0x01 00000d08: PUSH1 0xa0 00000d0a: SHL 00000d0b: SUB 00000d0c: DUP9 00000d0d: AND 00000d0e: PUSH1 0x60 00000d10: DUP3 00000d11: ADD 00000d12: MSTORE 00000d13: SWAP1 00000d14: MLOAD 00000d15: CALLER 00000d16: SWAP2 00000d17: PUSH32 0x8ed279c5019a3bdd23e10a89bf0c4747ec75d0f3cdbea74b432c60aa63c0b75b 00000d38: SWAP2 00000d39: SWAP1 00000d3a: DUP2 00000d3b: SWAP1 00000d3c: SUB 00000d3d: PUSH1 0x80 00000d3f: ADD 00000d40: SWAP1 00000d41: LOG2 00000d42: POP 00000d43: PUSH1 0x01 00000d45: DUP1 00000d46: SSTORE 00000d47: SWAP3 00000d48: SWAP5 00000d49: SWAP2 00000d4a: SWAP4 00000d4b: POP 00000d4c: SWAP2 00000d4d: SWAP1 00000d4e: JUMP 00000d4f: JUMPDEST 00000d50: PUSH1 0x01 00000d52: PUSH1 0x01 00000d54: PUSH1 0xa0 00000d56: SHL 00000d57: SUB 00000d58: DUP2 00000d59: AND 00000d5a: PUSH1 0x00 00000d5c: SWAP1 00000d5d: DUP2 00000d5e: MSTORE 00000d5f: PUSH1 0x10 00000d61: PUSH1 0x20 00000d63: MSTORE 00000d64: PUSH1 0x40 00000d66: DUP2 00000d67: KECCAK256 00000d68: SLOAD 00000d69: PUSH2 0x0d93 00000d6c: SWAP1 00000d6d: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 00000d8e: SWAP1 00000d8f: PUSH2 0x1f0c 00000d92: JUMP 00000d93: JUMPDEST 00000d94: SWAP3 00000d95: SWAP2 00000d96: POP 00000d97: POP 00000d98: JUMP 00000d99: JUMPDEST 00000d9a: PUSH2 0x0da1 00000d9d: PUSH2 0x1a79 00000da0: JUMP 00000da1: JUMPDEST 00000da2: PUSH1 0x00 00000da4: SLOAD 00000da5: PUSH1 0x01 00000da7: PUSH1 0x01 00000da9: PUSH1 0xa0 00000dab: SHL 00000dac: SUB 00000dad: SWAP1 00000dae: DUP2 00000daf: AND 00000db0: SWAP2 00000db1: AND 00000db2: EQ 00000db3: PUSH2 0x0e03 00000db6: JUMPI 00000db7: PUSH1 0x40 00000db9: DUP1 00000dba: MLOAD 00000dbb: PUSH3 0x461bcd 00000dbf: PUSH1 0xe5 00000dc1: SHL 00000dc2: DUP2 00000dc3: MSTORE 00000dc4: PUSH1 0x20 00000dc6: PUSH1 0x04 00000dc8: DUP3 00000dc9: ADD 00000dca: DUP2 00000dcb: SWAP1 00000dcc: MSTORE 00000dcd: PUSH1 0x24 00000dcf: DUP3 00000dd0: ADD 00000dd1: MSTORE 00000dd2: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00000df3: PUSH1 0x44 00000df5: DUP3 00000df6: ADD 00000df7: MSTORE 00000df8: SWAP1 00000df9: MLOAD 00000dfa: SWAP1 00000dfb: DUP2 00000dfc: SWAP1 00000dfd: SUB 00000dfe: PUSH1 0x64 00000e00: ADD 00000e01: SWAP1 00000e02: REVERT 00000e03: JUMPDEST 00000e04: PUSH1 0x00 00000e06: DUP1 00000e07: SLOAD 00000e08: PUSH1 0x40 00000e0a: MLOAD 00000e0b: PUSH1 0x01 00000e0d: PUSH1 0x01 00000e0f: PUSH1 0xa0 00000e11: SHL 00000e12: SUB 00000e13: SWAP1 00000e14: SWAP2 00000e15: AND 00000e16: SWAP1 00000e17: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000e38: SWAP1 00000e39: DUP4 00000e3a: SWAP1 00000e3b: LOG3 00000e3c: PUSH1 0x00 00000e3e: DUP1 00000e3f: SLOAD 00000e40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e55: NOT 00000e56: AND 00000e57: SWAP1 00000e58: SSTORE 00000e59: JUMP 00000e5a: JUMPDEST 00000e5b: PUSH1 0x05 00000e5d: SLOAD 00000e5e: DUP2 00000e5f: JUMP 00000e60: JUMPDEST 00000e61: PUSH1 0x02 00000e63: SLOAD 00000e64: DUP2 00000e65: JUMP 00000e66: JUMPDEST 00000e67: PUSH1 0x00 00000e69: PUSH2 0x0921 00000e6c: PUSH1 0x0a 00000e6e: SLOAD 00000e6f: PUSH2 0x0e85 00000e72: PUSH1 0x09 00000e74: SLOAD 00000e75: PUSH1 0x08 00000e77: SLOAD 00000e78: PUSH2 0x1b61 00000e7b: SWAP1 00000e7c: SWAP2 00000e7d: SWAP1 00000e7e: PUSH4 0xffffffff 00000e83: AND 00000e84: JUMP 00000e85: JUMPDEST 00000e86: SWAP1 00000e87: PUSH2 0x1b61 00000e8a: JUMP 00000e8b: JUMPDEST 00000e8c: PUSH1 0x00 00000e8e: SLOAD 00000e8f: PUSH1 0x01 00000e91: PUSH1 0x01 00000e93: PUSH1 0xa0 00000e95: SHL 00000e96: SUB 00000e97: AND 00000e98: SWAP1 00000e99: JUMP 00000e9a: JUMPDEST 00000e9b: PUSH1 0x01 00000e9d: PUSH1 0x01 00000e9f: PUSH1 0xa0 00000ea1: SHL 00000ea2: SUB 00000ea3: DUP2 00000ea4: AND 00000ea5: PUSH1 0x00 00000ea7: SWAP1 00000ea8: DUP2 00000ea9: MSTORE 00000eaa: PUSH1 0x0f 00000eac: PUSH1 0x20 00000eae: MSTORE 00000eaf: PUSH1 0x40 00000eb1: DUP2 00000eb2: KECCAK256 00000eb3: SLOAD 00000eb4: PUSH2 0x0d93 00000eb7: SWAP1 00000eb8: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 00000ed9: SWAP1 00000eda: PUSH2 0x1f0c 00000edd: JUMP 00000ede: JUMPDEST 00000edf: PUSH1 0x0c 00000ee1: SLOAD 00000ee2: PUSH2 0x0eec 00000ee5: JUMPI 00000ee6: PUSH1 0x06 00000ee8: SLOAD 00000ee9: PUSH1 0x0c 00000eeb: SSTORE 00000eec: JUMPDEST 00000eed: PUSH1 0x00 00000eef: PUSH2 0x0ef6 00000ef2: PUSH2 0x0e66 00000ef5: JUMP 00000ef6: JUMPDEST 00000ef7: SWAP1 00000ef8: POP 00000ef9: PUSH1 0x00 00000efb: DUP2 00000efc: GT 00000efd: DUP1 00000efe: ISZERO 00000eff: PUSH2 0x0f0b 00000f02: JUMPI 00000f03: POP 00000f04: PUSH1 0x07 00000f06: SLOAD 00000f07: PUSH1 0x0c 00000f09: SLOAD 00000f0a: LT 00000f0b: JUMPDEST 00000f0c: ISZERO 00000f0d: PUSH2 0x0fb2 00000f10: JUMPI 00000f11: PUSH1 0x00 00000f13: DUP1 00000f14: PUSH2 0x0f28 00000f17: PUSH1 0x0c 00000f19: SLOAD 00000f1a: TIMESTAMP 00000f1b: PUSH2 0x1a7d 00000f1e: SWAP1 00000f1f: SWAP2 00000f20: SWAP1 00000f21: PUSH4 0xffffffff 00000f26: AND 00000f27: JUMP 00000f28: JUMPDEST 00000f29: SWAP1 00000f2a: POP 00000f2b: PUSH1 0x00 00000f2d: PUSH2 0x0f46 00000f30: PUSH2 0x071a 00000f33: PUSH1 0x06 00000f35: SLOAD 00000f36: PUSH1 0x07 00000f38: SLOAD 00000f39: PUSH2 0x1a7d 00000f3c: SWAP1 00000f3d: SWAP2 00000f3e: SWAP1 00000f3f: PUSH4 0xffffffff 00000f44: AND 00000f45: JUMP 00000f46: JUMPDEST 00000f47: SWAP1 00000f48: POP 00000f49: PUSH1 0x07 00000f4b: SLOAD 00000f4c: TIMESTAMP 00000f4d: LT 00000f4e: ISZERO 00000f4f: PUSH2 0x0f63 00000f52: JUMPI 00000f53: PUSH2 0x0f5c 00000f56: DUP3 00000f57: DUP3 00000f58: PUSH2 0x1b08 00000f5b: JUMP 00000f5c: JUMPDEST 00000f5d: SWAP3 00000f5e: POP 00000f5f: PUSH2 0x0f8e 00000f62: JUMP 00000f63: JUMPDEST 00000f64: PUSH1 0x00 00000f66: PUSH2 0x0f7a 00000f69: PUSH1 0x07 00000f6b: SLOAD 00000f6c: TIMESTAMP 00000f6d: PUSH2 0x1a7d 00000f70: SWAP1 00000f71: SWAP2 00000f72: SWAP1 00000f73: PUSH4 0xffffffff 00000f78: AND 00000f79: JUMP 00000f7a: JUMPDEST 00000f7b: SWAP1 00000f7c: POP 00000f7d: PUSH2 0x0f8a 00000f80: DUP3 00000f81: PUSH2 0x0767 00000f84: DUP6 00000f85: DUP5 00000f86: PUSH2 0x1a7d 00000f89: JUMP 00000f8a: JUMPDEST 00000f8b: SWAP4 00000f8c: POP 00000f8d: POP 00000f8e: JUMPDEST 00000f8f: PUSH2 0x0fa7 00000f92: PUSH2 0x0790 00000f95: DUP6 00000f96: PUSH2 0x078a 00000f99: DUP7 00000f9a: PUSH8 0x0de0b6b3a7640000 00000fa3: PUSH2 0x1b08 00000fa6: JUMP 00000fa7: JUMPDEST 00000fa8: PUSH1 0x0b 00000faa: SSTORE 00000fab: POP 00000fac: POP 00000fad: TIMESTAMP 00000fae: PUSH1 0x0c 00000fb0: SSTORE 00000fb1: POP 00000fb2: JUMPDEST 00000fb3: PUSH1 0x02 00000fb5: PUSH1 0x01 00000fb7: SLOAD 00000fb8: EQ 00000fb9: ISZERO 00000fba: PUSH2 0x100a 00000fbd: JUMPI 00000fbe: PUSH1 0x40 00000fc0: DUP1 00000fc1: MLOAD 00000fc2: PUSH3 0x461bcd 00000fc6: PUSH1 0xe5 00000fc8: SHL 00000fc9: DUP2 00000fca: MSTORE 00000fcb: PUSH1 0x20 00000fcd: PUSH1 0x04 00000fcf: DUP3 00000fd0: ADD 00000fd1: MSTORE 00000fd2: PUSH1 0x1f 00000fd4: PUSH1 0x24 00000fd6: DUP3 00000fd7: ADD 00000fd8: MSTORE 00000fd9: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 00000ffa: PUSH1 0x44 00000ffc: DUP3 00000ffd: ADD 00000ffe: MSTORE 00000fff: SWAP1 00001000: MLOAD 00001001: SWAP1 00001002: DUP2 00001003: SWAP1 00001004: SUB 00001005: PUSH1 0x64 00001007: ADD 00001008: SWAP1 00001009: REVERT 0000100a: JUMPDEST 0000100b: PUSH1 0x02 0000100d: PUSH1 0x01 0000100f: SSTORE 00001010: DUP4 00001011: ISZERO 00001012: ISZERO 00001013: DUP1 00001014: PUSH2 0x101d 00001017: JUMPI 00001018: POP 00001019: PUSH1 0x00 0000101b: DUP4 0000101c: GT 0000101d: JUMPDEST 0000101e: DUP1 0000101f: PUSH2 0x1028 00001022: JUMPI 00001023: POP 00001024: PUSH1 0x00 00001026: DUP3 00001027: GT 00001028: JUMPDEST 00001029: PUSH2 0x1063 0000102c: JUMPI 0000102d: PUSH1 0x40 0000102f: MLOAD 00001030: PUSH3 0x461bcd 00001034: PUSH1 0xe5 00001036: SHL 00001037: DUP2 00001038: MSTORE 00001039: PUSH1 0x04 0000103b: ADD 0000103c: DUP1 0000103d: DUP1 0000103e: PUSH1 0x20 00001040: ADD 00001041: DUP3 00001042: DUP2 00001043: SUB 00001044: DUP3 00001045: MSTORE 00001046: PUSH1 0x2a 00001048: DUP2 00001049: MSTORE 0000104a: PUSH1 0x20 0000104c: ADD 0000104d: DUP1 0000104e: PUSH2 0x25c5 00001051: PUSH1 0x2a 00001053: SWAP2 00001054: CODECOPY 00001055: PUSH1 0x40 00001057: ADD 00001058: SWAP2 00001059: POP 0000105a: POP 0000105b: PUSH1 0x40 0000105d: MLOAD 0000105e: DUP1 0000105f: SWAP2 00001060: SUB 00001061: SWAP1 00001062: REVERT 00001063: JUMPDEST 00001064: PUSH1 0x05 00001066: SLOAD 00001067: TIMESTAMP 00001068: LT 00001069: ISZERO 0000106a: PUSH2 0x10a4 0000106d: JUMPI 0000106e: PUSH1 0x40 00001070: MLOAD 00001071: PUSH3 0x461bcd 00001075: PUSH1 0xe5 00001077: SHL 00001078: DUP2 00001079: MSTORE 0000107a: PUSH1 0x04 0000107c: ADD 0000107d: DUP1 0000107e: DUP1 0000107f: PUSH1 0x20 00001081: ADD 00001082: DUP3 00001083: DUP2 00001084: SUB 00001085: DUP3 00001086: MSTORE 00001087: PUSH1 0x2e 00001089: DUP2 0000108a: MSTORE 0000108b: PUSH1 0x20 0000108d: ADD 0000108e: DUP1 0000108f: PUSH2 0x2690 00001092: PUSH1 0x2e 00001094: SWAP2 00001095: CODECOPY 00001096: PUSH1 0x40 00001098: ADD 00001099: SWAP2 0000109a: POP 0000109b: POP 0000109c: PUSH1 0x40 0000109e: MLOAD 0000109f: DUP1 000010a0: SWAP2 000010a1: SUB 000010a2: SWAP1 000010a3: REVERT 000010a4: JUMPDEST 000010a5: PUSH1 0x00 000010a7: PUSH32 0x0000000000000000000000007697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a 000010c8: PUSH1 0x01 000010ca: PUSH1 0x01 000010cc: PUSH1 0xa0 000010ce: SHL 000010cf: SUB 000010d0: AND 000010d1: PUSH4 0x70a08231 000010d6: ADDRESS 000010d7: PUSH1 0x40 000010d9: MLOAD 000010da: DUP3 000010db: PUSH4 0xffffffff 000010e0: AND 000010e1: PUSH1 0xe0 000010e3: SHL 000010e4: DUP2 000010e5: MSTORE 000010e6: PUSH1 0x04 000010e8: ADD 000010e9: DUP1 000010ea: DUP3 000010eb: PUSH1 0x01 000010ed: PUSH1 0x01 000010ef: PUSH1 0xa0 000010f1: SHL 000010f2: SUB 000010f3: AND 000010f4: DUP2 000010f5: MSTORE 000010f6: PUSH1 0x20 000010f8: ADD 000010f9: SWAP2 000010fa: POP 000010fb: POP 000010fc: PUSH1 0x20 000010fe: PUSH1 0x40 00001100: MLOAD 00001101: DUP1 00001102: DUP4 00001103: SUB 00001104: DUP2 00001105: DUP7 00001106: DUP1 00001107: EXTCODESIZE 00001108: ISZERO 00001109: DUP1 0000110a: ISZERO 0000110b: PUSH2 0x1113 0000110e: JUMPI 0000110f: PUSH1 0x00 00001111: DUP1 00001112: REVERT 00001113: JUMPDEST 00001114: POP 00001115: GAS 00001116: STATICCALL 00001117: ISZERO 00001118: DUP1 00001119: ISZERO 0000111a: PUSH2 0x1127 0000111d: JUMPI 0000111e: RETURNDATASIZE 0000111f: PUSH1 0x00 00001121: DUP1 00001122: RETURNDATACOPY 00001123: RETURNDATASIZE 00001124: PUSH1 0x00 00001126: REVERT 00001127: JUMPDEST 00001128: POP 00001129: POP 0000112a: POP 0000112b: POP 0000112c: PUSH1 0x40 0000112e: MLOAD 0000112f: RETURNDATASIZE 00001130: PUSH1 0x20 00001132: DUP2 00001133: LT 00001134: ISZERO 00001135: PUSH2 0x113d 00001138: JUMPI 00001139: PUSH1 0x00 0000113b: DUP1 0000113c: REVERT 0000113d: JUMPDEST 0000113e: POP 0000113f: MLOAD 00001140: GT 00001141: PUSH2 0x117b 00001144: JUMPI 00001145: PUSH1 0x40 00001147: MLOAD 00001148: PUSH3 0x461bcd 0000114c: PUSH1 0xe5 0000114e: SHL 0000114f: DUP2 00001150: MSTORE 00001151: PUSH1 0x04 00001153: ADD 00001154: DUP1 00001155: DUP1 00001156: PUSH1 0x20 00001158: ADD 00001159: DUP3 0000115a: DUP2 0000115b: SUB 0000115c: DUP3 0000115d: MSTORE 0000115e: PUSH1 0x28 00001160: DUP2 00001161: MSTORE 00001162: PUSH1 0x20 00001164: ADD 00001165: DUP1 00001166: PUSH2 0x257c 00001169: PUSH1 0x28 0000116b: SWAP2 0000116c: CODECOPY 0000116d: PUSH1 0x40 0000116f: ADD 00001170: SWAP2 00001171: POP 00001172: POP 00001173: PUSH1 0x40 00001175: MLOAD 00001176: DUP1 00001177: SWAP2 00001178: SUB 00001179: SWAP1 0000117a: REVERT 0000117b: JUMPDEST 0000117c: PUSH1 0x06 0000117e: SLOAD 0000117f: PUSH2 0x118b 00001182: JUMPI 00001183: TIMESTAMP 00001184: PUSH1 0x06 00001186: SSTORE 00001187: PUSH2 0x11cb 0000118a: JUMP 0000118b: JUMPDEST 0000118c: PUSH1 0x07 0000118e: SLOAD 0000118f: TIMESTAMP 00001190: LT 00001191: PUSH2 0x11cb 00001194: JUMPI 00001195: PUSH1 0x40 00001197: MLOAD 00001198: PUSH3 0x461bcd 0000119c: PUSH1 0xe5 0000119e: SHL 0000119f: DUP2 000011a0: MSTORE 000011a1: PUSH1 0x04 000011a3: ADD 000011a4: DUP1 000011a5: DUP1 000011a6: PUSH1 0x20 000011a8: ADD 000011a9: DUP3 000011aa: DUP2 000011ab: SUB 000011ac: DUP3 000011ad: MSTORE 000011ae: PUSH1 0x27 000011b0: DUP2 000011b1: MSTORE 000011b2: PUSH1 0x20 000011b4: ADD 000011b5: DUP1 000011b6: PUSH2 0x2555 000011b9: PUSH1 0x27 000011bb: SWAP2 000011bc: CODECOPY 000011bd: PUSH1 0x40 000011bf: ADD 000011c0: SWAP2 000011c1: POP 000011c2: POP 000011c3: PUSH1 0x40 000011c5: MLOAD 000011c6: DUP1 000011c7: SWAP2 000011c8: SUB 000011c9: SWAP1 000011ca: REVERT 000011cb: JUMPDEST 000011cc: DUP4 000011cd: ISZERO 000011ce: PUSH2 0x1206 000011d1: JUMPI 000011d2: PUSH2 0x1206 000011d5: PUSH1 0x01 000011d7: PUSH1 0x01 000011d9: PUSH1 0xa0 000011db: SHL 000011dc: SUB 000011dd: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000011fe: AND 000011ff: CALLER 00001200: ADDRESS 00001201: DUP8 00001202: PUSH2 0x1f32 00001205: JUMP 00001206: JUMPDEST 00001207: DUP3 00001208: ISZERO 00001209: PUSH2 0x1241 0000120c: JUMPI 0000120d: PUSH2 0x1241 00001210: PUSH1 0x01 00001212: PUSH1 0x01 00001214: PUSH1 0xa0 00001216: SHL 00001217: SUB 00001218: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 00001239: AND 0000123a: CALLER 0000123b: ADDRESS 0000123c: DUP7 0000123d: PUSH2 0x1f32 00001240: JUMP 00001241: JUMPDEST 00001242: DUP2 00001243: ISZERO 00001244: PUSH2 0x127c 00001247: JUMPI 00001248: PUSH2 0x127c 0000124b: PUSH1 0x01 0000124d: PUSH1 0x01 0000124f: PUSH1 0xa0 00001251: SHL 00001252: SUB 00001253: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 00001274: AND 00001275: CALLER 00001276: ADDRESS 00001277: DUP6 00001278: PUSH2 0x1f32 0000127b: JUMP 0000127c: JUMPDEST 0000127d: PUSH2 0x1285 00001280: CALLER 00001281: PUSH2 0x136f 00001284: JUMP 00001285: JUMPDEST 00001286: PUSH2 0x129b 00001289: JUMPI 0000128a: PUSH1 0x02 0000128c: SLOAD 0000128d: PUSH2 0x1297 00001290: SWAP1 00001291: PUSH1 0x01 00001293: PUSH2 0x1b61 00001296: JUMP 00001297: JUMPDEST 00001298: PUSH1 0x02 0000129a: SSTORE 0000129b: JUMPDEST 0000129c: PUSH2 0x1322 0000129f: PUSH2 0x12c8 000012a2: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000012c3: DUP7 000012c4: PUSH2 0x1fc0 000012c7: JUMP 000012c8: JUMPDEST 000012c9: PUSH2 0x12f2 000012cc: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 000012ed: DUP7 000012ee: PUSH2 0x1fc0 000012f1: JUMP 000012f2: JUMPDEST 000012f3: PUSH2 0x131c 000012f6: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 00001317: DUP7 00001318: PUSH2 0x1fc0 0000131b: JUMP 0000131c: JUMPDEST 0000131d: CALLER 0000131e: PUSH2 0x1d78 00001321: JUMP 00001322: JUMPDEST 00001323: PUSH1 0x40 00001325: DUP1 00001326: MLOAD 00001327: DUP6 00001328: DUP2 00001329: MSTORE 0000132a: PUSH1 0x20 0000132c: DUP2 0000132d: ADD 0000132e: DUP6 0000132f: SWAP1 00001330: MSTORE 00001331: DUP1 00001332: DUP3 00001333: ADD 00001334: DUP5 00001335: SWAP1 00001336: MSTORE 00001337: SWAP1 00001338: MLOAD 00001339: CALLER 0000133a: SWAP2 0000133b: PUSH32 0xf556991011e831bcfac4f406d547e5e32cdd98267efab83935230d5f8d02c446 0000135c: SWAP2 0000135d: SWAP1 0000135e: DUP2 0000135f: SWAP1 00001360: SUB 00001361: PUSH1 0x60 00001363: ADD 00001364: SWAP1 00001365: LOG2 00001366: POP 00001367: POP 00001368: PUSH1 0x01 0000136a: DUP1 0000136b: SSTORE 0000136c: POP 0000136d: POP 0000136e: JUMP 0000136f: JUMPDEST 00001370: PUSH1 0x01 00001372: PUSH1 0x01 00001374: PUSH1 0xa0 00001376: SHL 00001377: SUB 00001378: DUP2 00001379: AND 0000137a: PUSH1 0x00 0000137c: SWAP1 0000137d: DUP2 0000137e: MSTORE 0000137f: PUSH1 0x10 00001381: PUSH1 0x20 00001383: SWAP1 00001384: DUP2 00001385: MSTORE 00001386: PUSH1 0x40 00001388: DUP1 00001389: DUP4 0000138a: KECCAK256 0000138b: SLOAD 0000138c: PUSH1 0x0f 0000138e: DUP4 0000138f: MSTORE 00001390: DUP2 00001391: DUP5 00001392: KECCAK256 00001393: SLOAD 00001394: PUSH1 0x0e 00001396: SWAP1 00001397: SWAP4 00001398: MSTORE 00001399: SWAP1 0000139a: DUP4 0000139b: KECCAK256 0000139c: SLOAD 0000139d: PUSH2 0x0d93 000013a0: SWAP3 000013a1: PUSH2 0x0e85 000013a4: SWAP2 000013a5: SWAP1 000013a6: PUSH2 0x1b61 000013a9: JUMP 000013aa: JUMPDEST 000013ab: PUSH1 0x00 000013ad: PUSH2 0x0921 000013b0: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 000013d1: PUSH1 0x09 000013d3: SLOAD 000013d4: PUSH2 0x1f0c 000013d7: JUMP 000013d8: JUMPDEST 000013d9: PUSH2 0x13e0 000013dc: PUSH2 0x1a79 000013df: JUMP 000013e0: JUMPDEST 000013e1: PUSH1 0x00 000013e3: SLOAD 000013e4: PUSH1 0x01 000013e6: PUSH1 0x01 000013e8: PUSH1 0xa0 000013ea: SHL 000013eb: SUB 000013ec: SWAP1 000013ed: DUP2 000013ee: AND 000013ef: SWAP2 000013f0: AND 000013f1: EQ 000013f2: PUSH2 0x1442 000013f5: JUMPI 000013f6: PUSH1 0x40 000013f8: DUP1 000013f9: MLOAD 000013fa: PUSH3 0x461bcd 000013fe: PUSH1 0xe5 00001400: SHL 00001401: DUP2 00001402: MSTORE 00001403: PUSH1 0x20 00001405: PUSH1 0x04 00001407: DUP3 00001408: ADD 00001409: DUP2 0000140a: SWAP1 0000140b: MSTORE 0000140c: PUSH1 0x24 0000140e: DUP3 0000140f: ADD 00001410: MSTORE 00001411: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001432: PUSH1 0x44 00001434: DUP3 00001435: ADD 00001436: MSTORE 00001437: SWAP1 00001438: MLOAD 00001439: SWAP1 0000143a: DUP2 0000143b: SWAP1 0000143c: SUB 0000143d: PUSH1 0x64 0000143f: ADD 00001440: SWAP1 00001441: REVERT 00001442: JUMPDEST 00001443: PUSH1 0x02 00001445: PUSH1 0x01 00001447: SLOAD 00001448: EQ 00001449: ISZERO 0000144a: PUSH2 0x149a 0000144d: JUMPI 0000144e: PUSH1 0x40 00001450: DUP1 00001451: MLOAD 00001452: PUSH3 0x461bcd 00001456: PUSH1 0xe5 00001458: SHL 00001459: DUP2 0000145a: MSTORE 0000145b: PUSH1 0x20 0000145d: PUSH1 0x04 0000145f: DUP3 00001460: ADD 00001461: MSTORE 00001462: PUSH1 0x1f 00001464: PUSH1 0x24 00001466: DUP3 00001467: ADD 00001468: MSTORE 00001469: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 0000148a: PUSH1 0x44 0000148c: DUP3 0000148d: ADD 0000148e: MSTORE 0000148f: SWAP1 00001490: MLOAD 00001491: SWAP1 00001492: DUP2 00001493: SWAP1 00001494: SUB 00001495: PUSH1 0x64 00001497: ADD 00001498: SWAP1 00001499: REVERT 0000149a: JUMPDEST 0000149b: PUSH1 0x02 0000149d: PUSH1 0x01 0000149f: DUP2 000014a0: SWAP1 000014a1: SSTORE 000014a2: POP 000014a3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000014c4: PUSH1 0x01 000014c6: PUSH1 0x01 000014c8: PUSH1 0xa0 000014ca: SHL 000014cb: SUB 000014cc: AND 000014cd: DUP4 000014ce: PUSH1 0x01 000014d0: PUSH1 0x01 000014d2: PUSH1 0xa0 000014d4: SHL 000014d5: SUB 000014d6: AND 000014d7: EQ 000014d8: ISZERO 000014d9: PUSH2 0x15c4 000014dc: JUMPI 000014dd: PUSH2 0x1581 000014e0: PUSH1 0x08 000014e2: SLOAD 000014e3: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001504: PUSH1 0x01 00001506: PUSH1 0x01 00001508: PUSH1 0xa0 0000150a: SHL 0000150b: SUB 0000150c: AND 0000150d: PUSH4 0x70a08231 00001512: ADDRESS 00001513: PUSH1 0x40 00001515: MLOAD 00001516: DUP3 00001517: PUSH4 0xffffffff 0000151c: AND 0000151d: PUSH1 0xe0 0000151f: SHL 00001520: DUP2 00001521: MSTORE 00001522: PUSH1 0x04 00001524: ADD 00001525: DUP1 00001526: DUP3 00001527: PUSH1 0x01 00001529: PUSH1 0x01 0000152b: PUSH1 0xa0 0000152d: SHL 0000152e: SUB 0000152f: AND 00001530: DUP2 00001531: MSTORE 00001532: PUSH1 0x20 00001534: ADD 00001535: SWAP2 00001536: POP 00001537: POP 00001538: PUSH1 0x20 0000153a: PUSH1 0x40 0000153c: MLOAD 0000153d: DUP1 0000153e: DUP4 0000153f: SUB 00001540: DUP2 00001541: DUP7 00001542: DUP1 00001543: EXTCODESIZE 00001544: ISZERO 00001545: DUP1 00001546: ISZERO 00001547: PUSH2 0x154f 0000154a: JUMPI 0000154b: PUSH1 0x00 0000154d: DUP1 0000154e: REVERT 0000154f: JUMPDEST 00001550: POP 00001551: GAS 00001552: STATICCALL 00001553: ISZERO 00001554: DUP1 00001555: ISZERO 00001556: PUSH2 0x1563 00001559: JUMPI 0000155a: RETURNDATASIZE 0000155b: PUSH1 0x00 0000155d: DUP1 0000155e: RETURNDATACOPY 0000155f: RETURNDATASIZE 00001560: PUSH1 0x00 00001562: REVERT 00001563: JUMPDEST 00001564: POP 00001565: POP 00001566: POP 00001567: POP 00001568: PUSH1 0x40 0000156a: MLOAD 0000156b: RETURNDATASIZE 0000156c: PUSH1 0x20 0000156e: DUP2 0000156f: LT 00001570: ISZERO 00001571: PUSH2 0x1579 00001574: JUMPI 00001575: PUSH1 0x00 00001577: DUP1 00001578: REVERT 00001579: JUMPDEST 0000157a: POP 0000157b: MLOAD 0000157c: SWAP1 0000157d: PUSH2 0x1a7d 00001580: JUMP 00001581: JUMPDEST 00001582: DUP2 00001583: GT 00001584: ISZERO 00001585: PUSH2 0x15bf 00001588: JUMPI 00001589: PUSH1 0x40 0000158b: MLOAD 0000158c: PUSH3 0x461bcd 00001590: PUSH1 0xe5 00001592: SHL 00001593: DUP2 00001594: MSTORE 00001595: PUSH1 0x04 00001597: ADD 00001598: DUP1 00001599: DUP1 0000159a: PUSH1 0x20 0000159c: ADD 0000159d: DUP3 0000159e: DUP2 0000159f: SUB 000015a0: DUP3 000015a1: MSTORE 000015a2: PUSH1 0x3b 000015a4: DUP2 000015a5: MSTORE 000015a6: PUSH1 0x20 000015a8: ADD 000015a9: DUP1 000015aa: PUSH2 0x25ef 000015ad: PUSH1 0x3b 000015af: SWAP2 000015b0: CODECOPY 000015b1: PUSH1 0x40 000015b3: ADD 000015b4: SWAP2 000015b5: POP 000015b6: POP 000015b7: PUSH1 0x40 000015b9: MLOAD 000015ba: DUP1 000015bb: SWAP2 000015bc: SUB 000015bd: SWAP1 000015be: REVERT 000015bf: JUMPDEST 000015c0: PUSH2 0x18b3 000015c3: JUMP 000015c4: JUMPDEST 000015c5: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 000015e6: PUSH1 0x01 000015e8: PUSH1 0x01 000015ea: PUSH1 0xa0 000015ec: SHL 000015ed: SUB 000015ee: AND 000015ef: DUP4 000015f0: PUSH1 0x01 000015f2: PUSH1 0x01 000015f4: PUSH1 0xa0 000015f6: SHL 000015f7: SUB 000015f8: AND 000015f9: EQ 000015fa: ISZERO 000015fb: PUSH2 0x16af 000015fe: JUMPI 000015ff: PUSH2 0x1671 00001602: PUSH1 0x09 00001604: SLOAD 00001605: PUSH32 0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7 00001626: PUSH1 0x01 00001628: PUSH1 0x01 0000162a: PUSH1 0xa0 0000162c: SHL 0000162d: SUB 0000162e: AND 0000162f: PUSH4 0x70a08231 00001634: ADDRESS 00001635: PUSH1 0x40 00001637: MLOAD 00001638: DUP3 00001639: PUSH4 0xffffffff 0000163e: AND 0000163f: PUSH1 0xe0 00001641: SHL 00001642: DUP2 00001643: MSTORE 00001644: PUSH1 0x04 00001646: ADD 00001647: DUP1 00001648: DUP3 00001649: PUSH1 0x01 0000164b: PUSH1 0x01 0000164d: PUSH1 0xa0 0000164f: SHL 00001650: SUB 00001651: AND 00001652: DUP2 00001653: MSTORE 00001654: PUSH1 0x20 00001656: ADD 00001657: SWAP2 00001658: POP 00001659: POP 0000165a: PUSH1 0x20 0000165c: PUSH1 0x40 0000165e: MLOAD 0000165f: DUP1 00001660: DUP4 00001661: SUB 00001662: DUP2 00001663: DUP7 00001664: DUP1 00001665: EXTCODESIZE 00001666: ISZERO 00001667: DUP1 00001668: ISZERO 00001669: PUSH2 0x154f 0000166c: JUMPI 0000166d: PUSH1 0x00 0000166f: DUP1 00001670: REVERT 00001671: JUMPDEST 00001672: DUP2 00001673: GT 00001674: ISZERO 00001675: PUSH2 0x15bf 00001678: JUMPI 00001679: PUSH1 0x40 0000167b: MLOAD 0000167c: PUSH3 0x461bcd 00001680: PUSH1 0xe5 00001682: SHL 00001683: DUP2 00001684: MSTORE 00001685: PUSH1 0x04 00001687: ADD 00001688: DUP1 00001689: DUP1 0000168a: PUSH1 0x20 0000168c: ADD 0000168d: DUP3 0000168e: DUP2 0000168f: SUB 00001690: DUP3 00001691: MSTORE 00001692: PUSH1 0x3b 00001694: DUP2 00001695: MSTORE 00001696: PUSH1 0x20 00001698: ADD 00001699: DUP1 0000169a: PUSH2 0x23cc 0000169d: PUSH1 0x3b 0000169f: SWAP2 000016a0: CODECOPY 000016a1: PUSH1 0x40 000016a3: ADD 000016a4: SWAP2 000016a5: POP 000016a6: POP 000016a7: PUSH1 0x40 000016a9: MLOAD 000016aa: DUP1 000016ab: SWAP2 000016ac: SUB 000016ad: SWAP1 000016ae: REVERT 000016af: JUMPDEST 000016b0: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 000016d1: PUSH1 0x01 000016d3: PUSH1 0x01 000016d5: PUSH1 0xa0 000016d7: SHL 000016d8: SUB 000016d9: AND 000016da: DUP4 000016db: PUSH1 0x01 000016dd: PUSH1 0x01 000016df: PUSH1 0xa0 000016e1: SHL 000016e2: SUB 000016e3: AND 000016e4: EQ 000016e5: ISZERO 000016e6: PUSH2 0x179a 000016e9: JUMPI 000016ea: PUSH2 0x175c 000016ed: PUSH1 0x0a 000016ef: SLOAD 000016f0: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 00001711: PUSH1 0x01 00001713: PUSH1 0x01 00001715: PUSH1 0xa0 00001717: SHL 00001718: SUB 00001719: AND 0000171a: PUSH4 0x70a08231 0000171f: ADDRESS 00001720: PUSH1 0x40 00001722: MLOAD 00001723: DUP3 00001724: PUSH4 0xffffffff 00001729: AND 0000172a: PUSH1 0xe0 0000172c: SHL 0000172d: DUP2 0000172e: MSTORE 0000172f: PUSH1 0x04 00001731: ADD 00001732: DUP1 00001733: DUP3 00001734: PUSH1 0x01 00001736: PUSH1 0x01 00001738: PUSH1 0xa0 0000173a: SHL 0000173b: SUB 0000173c: AND 0000173d: DUP2 0000173e: MSTORE 0000173f: PUSH1 0x20 00001741: ADD 00001742: SWAP2 00001743: POP 00001744: POP 00001745: PUSH1 0x20 00001747: PUSH1 0x40 00001749: MLOAD 0000174a: DUP1 0000174b: DUP4 0000174c: SUB 0000174d: DUP2 0000174e: DUP7 0000174f: DUP1 00001750: EXTCODESIZE 00001751: ISZERO 00001752: DUP1 00001753: ISZERO 00001754: PUSH2 0x154f 00001757: JUMPI 00001758: PUSH1 0x00 0000175a: DUP1 0000175b: REVERT 0000175c: JUMPDEST 0000175d: DUP2 0000175e: GT 0000175f: ISZERO 00001760: PUSH2 0x15bf 00001763: JUMPI 00001764: PUSH1 0x40 00001766: MLOAD 00001767: PUSH3 0x461bcd 0000176b: PUSH1 0xe5 0000176d: SHL 0000176e: DUP2 0000176f: MSTORE 00001770: PUSH1 0x04 00001772: ADD 00001773: DUP1 00001774: DUP1 00001775: PUSH1 0x20 00001777: ADD 00001778: DUP3 00001779: DUP2 0000177a: SUB 0000177b: DUP3 0000177c: MSTORE 0000177d: PUSH1 0x3a 0000177f: DUP2 00001780: MSTORE 00001781: PUSH1 0x20 00001783: ADD 00001784: DUP1 00001785: PUSH2 0x24e7 00001788: PUSH1 0x3a 0000178a: SWAP2 0000178b: CODECOPY 0000178c: PUSH1 0x40 0000178e: ADD 0000178f: SWAP2 00001790: POP 00001791: POP 00001792: PUSH1 0x40 00001794: MLOAD 00001795: DUP1 00001796: SWAP2 00001797: SUB 00001798: SWAP1 00001799: REVERT 0000179a: JUMPDEST 0000179b: PUSH32 0x0000000000000000000000007697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a 000017bc: PUSH1 0x01 000017be: PUSH1 0x01 000017c0: PUSH1 0xa0 000017c2: SHL 000017c3: SUB 000017c4: AND 000017c5: DUP4 000017c6: PUSH1 0x01 000017c8: PUSH1 0x01 000017ca: PUSH1 0xa0 000017cc: SHL 000017cd: SUB 000017ce: AND 000017cf: EQ 000017d0: ISZERO 000017d1: PUSH2 0x18b3 000017d4: JUMPI 000017d5: PUSH1 0x02 000017d7: SLOAD 000017d8: ISZERO 000017d9: PUSH2 0x18b3 000017dc: JUMPI 000017dd: PUSH2 0x1875 000017e0: PUSH2 0x17f6 000017e3: PUSH1 0x04 000017e5: SLOAD 000017e6: PUSH1 0x03 000017e8: SLOAD 000017e9: PUSH2 0x1a7d 000017ec: SWAP1 000017ed: SWAP2 000017ee: SWAP1 000017ef: PUSH4 0xffffffff 000017f4: AND 000017f5: JUMP 000017f6: JUMPDEST 000017f7: PUSH1 0x40 000017f9: DUP1 000017fa: MLOAD 000017fb: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000 0000181c: DUP2 0000181d: MSTORE 0000181e: ADDRESS 0000181f: PUSH1 0x04 00001821: DUP3 00001822: ADD 00001823: MSTORE 00001824: SWAP1 00001825: MLOAD 00001826: PUSH1 0x01 00001828: PUSH1 0x01 0000182a: PUSH1 0xa0 0000182c: SHL 0000182d: SUB 0000182e: PUSH32 0x0000000000000000000000007697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a 0000184f: AND 00001850: SWAP2 00001851: PUSH4 0x70a08231 00001856: SWAP2 00001857: PUSH1 0x24 00001859: DUP1 0000185a: DUP4 0000185b: ADD 0000185c: SWAP3 0000185d: PUSH1 0x20 0000185f: SWAP3 00001860: SWAP2 00001861: SWAP1 00001862: DUP3 00001863: SWAP1 00001864: SUB 00001865: ADD 00001866: DUP2 00001867: DUP7 00001868: DUP1 00001869: EXTCODESIZE 0000186a: ISZERO 0000186b: DUP1 0000186c: ISZERO 0000186d: PUSH2 0x154f 00001870: JUMPI 00001871: PUSH1 0x00 00001873: DUP1 00001874: REVERT 00001875: JUMPDEST 00001876: DUP2 00001877: GT 00001878: ISZERO 00001879: PUSH2 0x18b3 0000187c: JUMPI 0000187d: PUSH1 0x40 0000187f: MLOAD 00001880: PUSH3 0x461bcd 00001884: PUSH1 0xe5 00001886: SHL 00001887: DUP2 00001888: MSTORE 00001889: PUSH1 0x04 0000188b: ADD 0000188c: DUP1 0000188d: DUP1 0000188e: PUSH1 0x20 00001890: ADD 00001891: DUP3 00001892: DUP2 00001893: SUB 00001894: DUP3 00001895: MSTORE 00001896: PUSH1 0x3c 00001898: DUP2 00001899: MSTORE 0000189a: PUSH1 0x20 0000189c: ADD 0000189d: DUP1 0000189e: PUSH2 0x262a 000018a1: PUSH1 0x3c 000018a3: SWAP2 000018a4: CODECOPY 000018a5: PUSH1 0x40 000018a7: ADD 000018a8: SWAP2 000018a9: POP 000018aa: POP 000018ab: PUSH1 0x40 000018ad: MLOAD 000018ae: DUP1 000018af: SWAP2 000018b0: SUB 000018b1: SWAP1 000018b2: REVERT 000018b3: JUMPDEST 000018b4: PUSH2 0x18c7 000018b7: PUSH1 0x01 000018b9: PUSH1 0x01 000018bb: PUSH1 0xa0 000018bd: SHL 000018be: SUB 000018bf: DUP5 000018c0: AND 000018c1: DUP4 000018c2: DUP4 000018c3: PUSH2 0x1cf3 000018c6: JUMP 000018c7: JUMPDEST 000018c8: POP 000018c9: POP 000018ca: PUSH1 0x01 000018cc: DUP1 000018cd: SSTORE 000018ce: POP 000018cf: JUMP 000018d0: JUMPDEST 000018d1: PUSH1 0x04 000018d3: SLOAD 000018d4: DUP2 000018d5: JUMP 000018d6: JUMPDEST 000018d7: PUSH1 0x01 000018d9: PUSH1 0x01 000018db: PUSH1 0xa0 000018dd: SHL 000018de: SUB 000018df: DUP2 000018e0: AND 000018e1: PUSH1 0x00 000018e3: SWAP1 000018e4: DUP2 000018e5: MSTORE 000018e6: PUSH1 0x0e 000018e8: PUSH1 0x20 000018ea: MSTORE 000018eb: PUSH1 0x40 000018ed: DUP2 000018ee: KECCAK256 000018ef: SLOAD 000018f0: PUSH2 0x0d93 000018f3: SWAP1 000018f4: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001915: SWAP1 00001916: PUSH2 0x1f0c 00001919: JUMP 0000191a: JUMPDEST 0000191b: PUSH32 0x0000000000000000000000007697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a 0000193c: DUP2 0000193d: JUMP 0000193e: JUMPDEST 0000193f: PUSH2 0x1946 00001942: PUSH2 0x1a79 00001945: JUMP 00001946: JUMPDEST 00001947: PUSH1 0x00 00001949: SLOAD 0000194a: PUSH1 0x01 0000194c: PUSH1 0x01 0000194e: PUSH1 0xa0 00001950: SHL 00001951: SUB 00001952: SWAP1 00001953: DUP2 00001954: AND 00001955: SWAP2 00001956: AND 00001957: EQ 00001958: PUSH2 0x19a8 0000195b: JUMPI 0000195c: PUSH1 0x40 0000195e: DUP1 0000195f: MLOAD 00001960: PUSH3 0x461bcd 00001964: PUSH1 0xe5 00001966: SHL 00001967: DUP2 00001968: MSTORE 00001969: PUSH1 0x20 0000196b: PUSH1 0x04 0000196d: DUP3 0000196e: ADD 0000196f: DUP2 00001970: SWAP1 00001971: MSTORE 00001972: PUSH1 0x24 00001974: DUP3 00001975: ADD 00001976: MSTORE 00001977: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001998: PUSH1 0x44 0000199a: DUP3 0000199b: ADD 0000199c: MSTORE 0000199d: SWAP1 0000199e: MLOAD 0000199f: SWAP1 000019a0: DUP2 000019a1: SWAP1 000019a2: SUB 000019a3: PUSH1 0x64 000019a5: ADD 000019a6: SWAP1 000019a7: REVERT 000019a8: JUMPDEST 000019a9: PUSH1 0x01 000019ab: PUSH1 0x01 000019ad: PUSH1 0xa0 000019af: SHL 000019b0: SUB 000019b1: DUP2 000019b2: AND 000019b3: PUSH2 0x19ed 000019b6: JUMPI 000019b7: PUSH1 0x40 000019b9: MLOAD 000019ba: PUSH3 0x461bcd 000019be: PUSH1 0xe5 000019c0: SHL 000019c1: DUP2 000019c2: MSTORE 000019c3: PUSH1 0x04 000019c5: ADD 000019c6: DUP1 000019c7: DUP1 000019c8: PUSH1 0x20 000019ca: ADD 000019cb: DUP3 000019cc: DUP2 000019cd: SUB 000019ce: DUP3 000019cf: MSTORE 000019d0: PUSH1 0x26 000019d2: DUP2 000019d3: MSTORE 000019d4: PUSH1 0x20 000019d6: ADD 000019d7: DUP1 000019d8: PUSH2 0x2407 000019db: PUSH1 0x26 000019dd: SWAP2 000019de: CODECOPY 000019df: PUSH1 0x40 000019e1: ADD 000019e2: SWAP2 000019e3: POP 000019e4: POP 000019e5: PUSH1 0x40 000019e7: MLOAD 000019e8: DUP1 000019e9: SWAP2 000019ea: SUB 000019eb: SWAP1 000019ec: REVERT 000019ed: JUMPDEST 000019ee: PUSH1 0x00 000019f0: DUP1 000019f1: SLOAD 000019f2: PUSH1 0x40 000019f4: MLOAD 000019f5: PUSH1 0x01 000019f7: PUSH1 0x01 000019f9: PUSH1 0xa0 000019fb: SHL 000019fc: SUB 000019fd: DUP1 000019fe: DUP6 000019ff: AND 00001a00: SWAP4 00001a01: SWAP3 00001a02: AND 00001a03: SWAP2 00001a04: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00001a25: SWAP2 00001a26: LOG3 00001a27: PUSH1 0x00 00001a29: DUP1 00001a2a: SLOAD 00001a2b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a40: NOT 00001a41: AND 00001a42: PUSH1 0x01 00001a44: PUSH1 0x01 00001a46: PUSH1 0xa0 00001a48: SHL 00001a49: SUB 00001a4a: SWAP3 00001a4b: SWAP1 00001a4c: SWAP3 00001a4d: AND 00001a4e: SWAP2 00001a4f: SWAP1 00001a50: SWAP2 00001a51: OR 00001a52: SWAP1 00001a53: SSTORE 00001a54: JUMP 00001a55: JUMPDEST 00001a56: PUSH32 0x0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f 00001a77: DUP2 00001a78: JUMP 00001a79: JUMPDEST 00001a7a: CALLER 00001a7b: SWAP1 00001a7c: JUMP 00001a7d: JUMPDEST 00001a7e: PUSH1 0x00 00001a80: PUSH2 0x1abf 00001a83: DUP4 00001a84: DUP4 00001a85: PUSH1 0x40 00001a87: MLOAD 00001a88: DUP1 00001a89: PUSH1 0x40 00001a8b: ADD 00001a8c: PUSH1 0x40 00001a8e: MSTORE 00001a8f: DUP1 00001a90: PUSH1 0x1e 00001a92: DUP2 00001a93: MSTORE 00001a94: PUSH1 0x20 00001a96: ADD 00001a97: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00001ab8: DUP2 00001ab9: MSTORE 00001aba: POP 00001abb: PUSH2 0x1fde 00001abe: JUMP 00001abf: JUMPDEST 00001ac0: SWAP4 00001ac1: SWAP3 00001ac2: POP 00001ac3: POP 00001ac4: POP 00001ac5: JUMP 00001ac6: JUMPDEST 00001ac7: PUSH1 0x00 00001ac9: PUSH2 0x1abf 00001acc: DUP4 00001acd: DUP4 00001ace: PUSH1 0x40 00001ad0: MLOAD 00001ad1: DUP1 00001ad2: PUSH1 0x40 00001ad4: ADD 00001ad5: PUSH1 0x40 00001ad7: MSTORE 00001ad8: DUP1 00001ad9: PUSH1 0x1a 00001adb: DUP2 00001adc: MSTORE 00001add: PUSH1 0x20 00001adf: ADD 00001ae0: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00001b01: DUP2 00001b02: MSTORE 00001b03: POP 00001b04: PUSH2 0x2075 00001b07: JUMP 00001b08: JUMPDEST 00001b09: PUSH1 0x00 00001b0b: DUP3 00001b0c: PUSH2 0x1b17 00001b0f: JUMPI 00001b10: POP 00001b11: PUSH1 0x00 00001b13: PUSH2 0x0d93 00001b16: JUMP 00001b17: JUMPDEST 00001b18: DUP3 00001b19: DUP3 00001b1a: MUL 00001b1b: DUP3 00001b1c: DUP5 00001b1d: DUP3 00001b1e: DUP2 00001b1f: PUSH2 0x1b24 00001b22: JUMPI 00001b23: INVALID 00001b24: JUMPDEST 00001b25: DIV 00001b26: EQ 00001b27: PUSH2 0x1abf 00001b2a: JUMPI 00001b2b: PUSH1 0x40 00001b2d: MLOAD 00001b2e: PUSH3 0x461bcd 00001b32: PUSH1 0xe5 00001b34: SHL 00001b35: DUP2 00001b36: MSTORE 00001b37: PUSH1 0x04 00001b39: ADD 00001b3a: DUP1 00001b3b: DUP1 00001b3c: PUSH1 0x20 00001b3e: ADD 00001b3f: DUP3 00001b40: DUP2 00001b41: SUB 00001b42: DUP3 00001b43: MSTORE 00001b44: PUSH1 0x21 00001b46: DUP2 00001b47: MSTORE 00001b48: PUSH1 0x20 00001b4a: ADD 00001b4b: DUP1 00001b4c: PUSH2 0x25a4 00001b4f: PUSH1 0x21 00001b51: SWAP2 00001b52: CODECOPY 00001b53: PUSH1 0x40 00001b55: ADD 00001b56: SWAP2 00001b57: POP 00001b58: POP 00001b59: PUSH1 0x40 00001b5b: MLOAD 00001b5c: DUP1 00001b5d: SWAP2 00001b5e: SUB 00001b5f: SWAP1 00001b60: REVERT 00001b61: JUMPDEST 00001b62: PUSH1 0x00 00001b64: DUP3 00001b65: DUP3 00001b66: ADD 00001b67: DUP4 00001b68: DUP2 00001b69: LT 00001b6a: ISZERO 00001b6b: PUSH2 0x1abf 00001b6e: JUMPI 00001b6f: PUSH1 0x40 00001b71: DUP1 00001b72: MLOAD 00001b73: PUSH3 0x461bcd 00001b77: PUSH1 0xe5 00001b79: SHL 00001b7a: DUP2 00001b7b: MSTORE 00001b7c: PUSH1 0x20 00001b7e: PUSH1 0x04 00001b80: DUP3 00001b81: ADD 00001b82: MSTORE 00001b83: PUSH1 0x1b 00001b85: PUSH1 0x24 00001b87: DUP3 00001b88: ADD 00001b89: MSTORE 00001b8a: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 00001bab: PUSH1 0x44 00001bad: DUP3 00001bae: ADD 00001baf: MSTORE 00001bb0: SWAP1 00001bb1: MLOAD 00001bb2: SWAP1 00001bb3: DUP2 00001bb4: SWAP1 00001bb5: SUB 00001bb6: PUSH1 0x64 00001bb8: ADD 00001bb9: SWAP1 00001bba: REVERT 00001bbb: JUMPDEST 00001bbc: PUSH1 0x00 00001bbe: DUP1 00001bbf: PUSH1 0x00 00001bc1: DUP1 00001bc2: PUSH1 0x00 00001bc4: PUSH2 0x1bcc 00001bc7: DUP7 00001bc8: PUSH2 0x136f 00001bcb: JUMP 00001bcc: JUMPDEST 00001bcd: SWAP1 00001bce: POP 00001bcf: PUSH1 0x00 00001bd1: DUP2 00001bd2: GT 00001bd3: PUSH2 0x1c0d 00001bd6: JUMPI 00001bd7: PUSH1 0x40 00001bd9: MLOAD 00001bda: PUSH3 0x461bcd 00001bde: PUSH1 0xe5 00001be0: SHL 00001be1: DUP2 00001be2: MSTORE 00001be3: PUSH1 0x04 00001be5: ADD 00001be6: DUP1 00001be7: DUP1 00001be8: PUSH1 0x20 00001bea: ADD 00001beb: DUP3 00001bec: DUP2 00001bed: SUB 00001bee: DUP3 00001bef: MSTORE 00001bf0: PUSH1 0x34 00001bf2: DUP2 00001bf3: MSTORE 00001bf4: PUSH1 0x20 00001bf6: ADD 00001bf7: DUP1 00001bf8: PUSH2 0x2521 00001bfb: PUSH1 0x34 00001bfd: SWAP2 00001bfe: CODECOPY 00001bff: PUSH1 0x40 00001c01: ADD 00001c02: SWAP2 00001c03: POP 00001c04: POP 00001c05: PUSH1 0x40 00001c07: MLOAD 00001c08: DUP1 00001c09: SWAP2 00001c0a: SUB 00001c0b: SWAP1 00001c0c: REVERT 00001c0d: JUMPDEST 00001c0e: PUSH1 0x01 00001c10: PUSH1 0x01 00001c12: PUSH1 0xa0 00001c14: SHL 00001c15: SUB 00001c16: DUP7 00001c17: AND 00001c18: PUSH1 0x00 00001c1a: SWAP1 00001c1b: DUP2 00001c1c: MSTORE 00001c1d: PUSH1 0x0e 00001c1f: PUSH1 0x20 00001c21: SWAP1 00001c22: DUP2 00001c23: MSTORE 00001c24: PUSH1 0x40 00001c26: DUP1 00001c27: DUP4 00001c28: KECCAK256 00001c29: SLOAD 00001c2a: PUSH1 0x0f 00001c2c: DUP4 00001c2d: MSTORE 00001c2e: DUP2 00001c2f: DUP5 00001c30: KECCAK256 00001c31: SLOAD 00001c32: PUSH1 0x10 00001c34: DUP5 00001c35: MSTORE 00001c36: DUP3 00001c37: DUP6 00001c38: KECCAK256 00001c39: SLOAD 00001c3a: PUSH1 0x12 00001c3c: DUP6 00001c3d: MSTORE 00001c3e: DUP4 00001c3f: DUP7 00001c40: KECCAK256 00001c41: SLOAD 00001c42: PUSH1 0x11 00001c44: SWAP1 00001c45: SWAP6 00001c46: MSTORE 00001c47: SWAP3 00001c48: SWAP1 00001c49: SWAP5 00001c4a: KECCAK256 00001c4b: SLOAD 00001c4c: PUSH1 0x0b 00001c4e: SLOAD 00001c4f: SWAP2 00001c50: SWAP10 00001c51: POP 00001c52: SWAP4 00001c53: SWAP8 00001c54: POP 00001c55: SWAP1 00001c56: SWAP6 00001c57: POP 00001c58: PUSH2 0x1c7d 00001c5b: SWAP3 00001c5c: PUSH2 0x0e85 00001c5f: SWAP2 00001c60: PUSH8 0x0de0b6b3a7640000 00001c69: SWAP2 00001c6a: PUSH2 0x078a 00001c6d: SWAP2 00001c6e: PUSH2 0x1c76 00001c71: SWAP2 00001c72: PUSH2 0x1a7d 00001c75: JUMP 00001c76: JUMPDEST 00001c77: DUP7 00001c78: SWAP1 00001c79: PUSH2 0x1b08 00001c7c: JUMP 00001c7d: JUMPDEST 00001c7e: PUSH1 0x08 00001c80: SLOAD 00001c81: SWAP1 00001c82: SWAP3 00001c83: POP 00001c84: PUSH2 0x1c8d 00001c87: SWAP1 00001c88: DUP7 00001c89: PUSH2 0x1a7d 00001c8c: JUMP 00001c8d: JUMPDEST 00001c8e: PUSH1 0x08 00001c90: SSTORE 00001c91: PUSH1 0x09 00001c93: SLOAD 00001c94: PUSH2 0x1c9d 00001c97: SWAP1 00001c98: DUP6 00001c99: PUSH2 0x1a7d 00001c9c: JUMP 00001c9d: JUMPDEST 00001c9e: PUSH1 0x09 00001ca0: SSTORE 00001ca1: PUSH1 0x0a 00001ca3: SLOAD 00001ca4: PUSH2 0x1cad 00001ca7: SWAP1 00001ca8: DUP5 00001ca9: PUSH2 0x1a7d 00001cac: JUMP 00001cad: JUMPDEST 00001cae: PUSH1 0x0a 00001cb0: SSTORE 00001cb1: POP 00001cb2: PUSH1 0x01 00001cb4: PUSH1 0x01 00001cb6: PUSH1 0xa0 00001cb8: SHL 00001cb9: SUB 00001cba: SWAP1 00001cbb: SWAP5 00001cbc: AND 00001cbd: PUSH1 0x00 00001cbf: SWAP1 00001cc0: DUP2 00001cc1: MSTORE 00001cc2: PUSH1 0x0e 00001cc4: PUSH1 0x20 00001cc6: SWAP1 00001cc7: DUP2 00001cc8: MSTORE 00001cc9: PUSH1 0x40 00001ccb: DUP1 00001ccc: DUP4 00001ccd: KECCAK256 00001cce: DUP4 00001ccf: SWAP1 00001cd0: SSTORE 00001cd1: PUSH1 0x0f 00001cd3: DUP3 00001cd4: MSTORE 00001cd5: DUP1 00001cd6: DUP4 00001cd7: KECCAK256 00001cd8: DUP4 00001cd9: SWAP1 00001cda: SSTORE 00001cdb: PUSH1 0x10 00001cdd: DUP3 00001cde: MSTORE 00001cdf: DUP1 00001ce0: DUP4 00001ce1: KECCAK256 00001ce2: DUP4 00001ce3: SWAP1 00001ce4: SSTORE 00001ce5: PUSH1 0x12 00001ce7: SWAP1 00001ce8: SWAP2 00001ce9: MSTORE 00001cea: DUP2 00001ceb: KECCAK256 00001cec: SSTORE 00001ced: SWAP2 00001cee: SWAP4 00001cef: SWAP1 00001cf0: SWAP3 00001cf1: SWAP1 00001cf2: JUMP 00001cf3: JUMPDEST 00001cf4: PUSH1 0x40 00001cf6: DUP1 00001cf7: MLOAD 00001cf8: PUSH1 0x01 00001cfa: PUSH1 0x01 00001cfc: PUSH1 0xa0 00001cfe: SHL 00001cff: SUB 00001d00: DUP5 00001d01: AND 00001d02: PUSH1 0x24 00001d04: DUP3 00001d05: ADD 00001d06: MSTORE 00001d07: PUSH1 0x44 00001d09: DUP1 00001d0a: DUP3 00001d0b: ADD 00001d0c: DUP5 00001d0d: SWAP1 00001d0e: MSTORE 00001d0f: DUP3 00001d10: MLOAD 00001d11: DUP1 00001d12: DUP4 00001d13: SUB 00001d14: SWAP1 00001d15: SWAP2 00001d16: ADD 00001d17: DUP2 00001d18: MSTORE 00001d19: PUSH1 0x64 00001d1b: SWAP1 00001d1c: SWAP2 00001d1d: ADD 00001d1e: SWAP1 00001d1f: SWAP2 00001d20: MSTORE 00001d21: PUSH1 0x20 00001d23: DUP2 00001d24: ADD 00001d25: DUP1 00001d26: MLOAD 00001d27: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001d44: AND 00001d45: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00001d66: OR 00001d67: SWAP1 00001d68: MSTORE 00001d69: PUSH2 0x1d73 00001d6c: SWAP1 00001d6d: DUP5 00001d6e: SWAP1 00001d6f: PUSH2 0x20da 00001d72: JUMP 00001d73: JUMPDEST 00001d74: POP 00001d75: POP 00001d76: POP 00001d77: JUMP 00001d78: JUMPDEST 00001d79: PUSH1 0x00 00001d7b: DUP1 00001d7c: PUSH1 0x00 00001d7e: DUP1 00001d7f: PUSH2 0x1d87 00001d82: DUP6 00001d83: PUSH2 0x136f 00001d86: JUMP 00001d87: JUMPDEST 00001d88: GT 00001d89: ISZERO 00001d8a: PUSH2 0x1de2 00001d8d: JUMPI 00001d8e: PUSH1 0x00 00001d90: DUP1 00001d91: PUSH1 0x00 00001d93: DUP1 00001d94: PUSH2 0x1d9c 00001d97: DUP9 00001d98: PUSH2 0x1bbb 00001d9b: JUMP 00001d9c: JUMPDEST 00001d9d: PUSH1 0x01 00001d9f: PUSH1 0x01 00001da1: PUSH1 0xa0 00001da3: SHL 00001da4: SUB 00001da5: DUP13 00001da6: AND 00001da7: PUSH1 0x00 00001da9: SWAP1 00001daa: DUP2 00001dab: MSTORE 00001dac: PUSH1 0x0e 00001dae: PUSH1 0x20 00001db0: SWAP1 00001db1: DUP2 00001db2: MSTORE 00001db3: PUSH1 0x40 00001db5: DUP1 00001db6: DUP4 00001db7: KECCAK256 00001db8: DUP8 00001db9: SWAP1 00001dba: SSTORE 00001dbb: PUSH1 0x0f 00001dbd: DUP3 00001dbe: MSTORE 00001dbf: DUP1 00001dc0: DUP4 00001dc1: KECCAK256 00001dc2: DUP7 00001dc3: SWAP1 00001dc4: SSTORE 00001dc5: PUSH1 0x10 00001dc7: DUP3 00001dc8: MSTORE 00001dc9: DUP1 00001dca: DUP4 00001dcb: KECCAK256 00001dcc: DUP6 00001dcd: SWAP1 00001dce: SSTORE 00001dcf: PUSH1 0x12 00001dd1: SWAP1 00001dd2: SWAP2 00001dd3: MSTORE 00001dd4: SWAP1 00001dd5: KECCAK256 00001dd6: SSTORE 00001dd7: SWAP2 00001dd8: SWAP9 00001dd9: POP 00001dda: SWAP7 00001ddb: POP 00001ddc: SWAP5 00001ddd: POP 00001dde: POP 00001ddf: POP 00001de0: POP 00001de1: POP 00001de2: JUMPDEST 00001de3: PUSH1 0x01 00001de5: PUSH1 0x01 00001de7: PUSH1 0xa0 00001de9: SHL 00001dea: SUB 00001deb: DUP5 00001dec: AND 00001ded: PUSH1 0x00 00001def: SWAP1 00001df0: DUP2 00001df1: MSTORE 00001df2: PUSH1 0x0e 00001df4: PUSH1 0x20 00001df6: MSTORE 00001df7: PUSH1 0x40 00001df9: SWAP1 00001dfa: KECCAK256 00001dfb: SLOAD 00001dfc: PUSH2 0x1e05 00001dff: SWAP1 00001e00: DUP9 00001e01: PUSH2 0x1b61 00001e04: JUMP 00001e05: JUMPDEST 00001e06: PUSH1 0x01 00001e08: PUSH1 0x01 00001e0a: PUSH1 0xa0 00001e0c: SHL 00001e0d: SUB 00001e0e: DUP6 00001e0f: AND 00001e10: PUSH1 0x00 00001e12: SWAP1 00001e13: DUP2 00001e14: MSTORE 00001e15: PUSH1 0x0e 00001e17: PUSH1 0x20 00001e19: SWAP1 00001e1a: DUP2 00001e1b: MSTORE 00001e1c: PUSH1 0x40 00001e1e: DUP1 00001e1f: DUP4 00001e20: KECCAK256 00001e21: SWAP4 00001e22: SWAP1 00001e23: SWAP4 00001e24: SSTORE 00001e25: PUSH1 0x0f 00001e27: SWAP1 00001e28: MSTORE 00001e29: KECCAK256 00001e2a: SLOAD 00001e2b: PUSH2 0x1e34 00001e2e: SWAP1 00001e2f: DUP8 00001e30: PUSH2 0x1b61 00001e33: JUMP 00001e34: JUMPDEST 00001e35: PUSH1 0x01 00001e37: PUSH1 0x01 00001e39: PUSH1 0xa0 00001e3b: SHL 00001e3c: SUB 00001e3d: DUP6 00001e3e: AND 00001e3f: PUSH1 0x00 00001e41: SWAP1 00001e42: DUP2 00001e43: MSTORE 00001e44: PUSH1 0x0f 00001e46: PUSH1 0x20 00001e48: SWAP1 00001e49: DUP2 00001e4a: MSTORE 00001e4b: PUSH1 0x40 00001e4d: DUP1 00001e4e: DUP4 00001e4f: KECCAK256 00001e50: SWAP4 00001e51: SWAP1 00001e52: SWAP4 00001e53: SSTORE 00001e54: PUSH1 0x10 00001e56: SWAP1 00001e57: MSTORE 00001e58: KECCAK256 00001e59: SLOAD 00001e5a: PUSH2 0x1e63 00001e5d: SWAP1 00001e5e: DUP7 00001e5f: PUSH2 0x1b61 00001e62: JUMP 00001e63: JUMPDEST 00001e64: PUSH1 0x01 00001e66: PUSH1 0x01 00001e68: PUSH1 0xa0 00001e6a: SHL 00001e6b: SUB 00001e6c: DUP6 00001e6d: AND 00001e6e: PUSH1 0x00 00001e70: SWAP1 00001e71: DUP2 00001e72: MSTORE 00001e73: PUSH1 0x10 00001e75: PUSH1 0x20 00001e77: SWAP1 00001e78: DUP2 00001e79: MSTORE 00001e7a: PUSH1 0x40 00001e7c: DUP1 00001e7d: DUP4 00001e7e: KECCAK256 00001e7f: SWAP4 00001e80: SWAP1 00001e81: SWAP4 00001e82: SSTORE 00001e83: PUSH1 0x0b 00001e85: SLOAD 00001e86: PUSH1 0x11 00001e88: SWAP1 00001e89: SWAP2 00001e8a: MSTORE 00001e8b: SWAP2 00001e8c: SWAP1 00001e8d: KECCAK256 00001e8e: SSTORE 00001e8f: PUSH1 0x08 00001e91: SLOAD 00001e92: PUSH2 0x1e9b 00001e95: SWAP1 00001e96: DUP9 00001e97: PUSH2 0x1b61 00001e9a: JUMP 00001e9b: JUMPDEST 00001e9c: PUSH1 0x08 00001e9e: SSTORE 00001e9f: PUSH1 0x09 00001ea1: SLOAD 00001ea2: PUSH2 0x1eab 00001ea5: SWAP1 00001ea6: DUP8 00001ea7: PUSH2 0x1b61 00001eaa: JUMP 00001eab: JUMPDEST 00001eac: PUSH1 0x09 00001eae: SSTORE 00001eaf: PUSH1 0x0a 00001eb1: SLOAD 00001eb2: PUSH2 0x1ebb 00001eb5: SWAP1 00001eb6: DUP7 00001eb7: PUSH2 0x1b61 00001eba: JUMP 00001ebb: JUMPDEST 00001ebc: PUSH1 0x0a 00001ebe: SSTORE 00001ebf: DUP3 00001ec0: ISZERO 00001ec1: PUSH2 0x1ed5 00001ec4: JUMPI 00001ec5: PUSH1 0x08 00001ec7: SLOAD 00001ec8: PUSH2 0x1ed1 00001ecb: SWAP1 00001ecc: DUP5 00001ecd: PUSH2 0x1b61 00001ed0: JUMP 00001ed1: JUMPDEST 00001ed2: PUSH1 0x08 00001ed4: SSTORE 00001ed5: JUMPDEST 00001ed6: DUP2 00001ed7: ISZERO 00001ed8: PUSH2 0x1eec 00001edb: JUMPI 00001edc: PUSH1 0x09 00001ede: SLOAD 00001edf: PUSH2 0x1ee8 00001ee2: SWAP1 00001ee3: DUP4 00001ee4: PUSH2 0x1b61 00001ee7: JUMP 00001ee8: JUMPDEST 00001ee9: PUSH1 0x09 00001eeb: SSTORE 00001eec: JUMPDEST 00001eed: DUP1 00001eee: ISZERO 00001eef: PUSH2 0x1f03 00001ef2: JUMPI 00001ef3: PUSH1 0x0a 00001ef5: SLOAD 00001ef6: PUSH2 0x1eff 00001ef9: SWAP1 00001efa: DUP3 00001efb: PUSH2 0x1b61 00001efe: JUMP 00001eff: JUMPDEST 00001f00: PUSH1 0x0a 00001f02: SSTORE 00001f03: JUMPDEST 00001f04: POP 00001f05: POP 00001f06: POP 00001f07: POP 00001f08: POP 00001f09: POP 00001f0a: POP 00001f0b: JUMP 00001f0c: JUMPDEST 00001f0d: PUSH1 0x00 00001f0f: DUP1 00001f10: PUSH2 0x1f18 00001f13: DUP5 00001f14: PUSH2 0x218b 00001f17: JUMP 00001f18: JUMPDEST 00001f19: SWAP1 00001f1a: POP 00001f1b: PUSH2 0x1f2a 00001f1e: DUP4 00001f1f: PUSH1 0xff 00001f21: DUP4 00001f22: AND 00001f23: PUSH1 0x0a 00001f25: EXP 00001f26: PUSH2 0x1ac6 00001f29: JUMP 00001f2a: JUMPDEST 00001f2b: SWAP5 00001f2c: SWAP4 00001f2d: POP 00001f2e: POP 00001f2f: POP 00001f30: POP 00001f31: JUMP 00001f32: JUMPDEST 00001f33: PUSH1 0x40 00001f35: DUP1 00001f36: MLOAD 00001f37: PUSH1 0x01 00001f39: PUSH1 0x01 00001f3b: PUSH1 0xa0 00001f3d: SHL 00001f3e: SUB 00001f3f: DUP1 00001f40: DUP7 00001f41: AND 00001f42: PUSH1 0x24 00001f44: DUP4 00001f45: ADD 00001f46: MSTORE 00001f47: DUP5 00001f48: AND 00001f49: PUSH1 0x44 00001f4b: DUP3 00001f4c: ADD 00001f4d: MSTORE 00001f4e: PUSH1 0x64 00001f50: DUP1 00001f51: DUP3 00001f52: ADD 00001f53: DUP5 00001f54: SWAP1 00001f55: MSTORE 00001f56: DUP3 00001f57: MLOAD 00001f58: DUP1 00001f59: DUP4 00001f5a: SUB 00001f5b: SWAP1 00001f5c: SWAP2 00001f5d: ADD 00001f5e: DUP2 00001f5f: MSTORE 00001f60: PUSH1 0x84 00001f62: SWAP1 00001f63: SWAP2 00001f64: ADD 00001f65: SWAP1 00001f66: SWAP2 00001f67: MSTORE 00001f68: PUSH1 0x20 00001f6a: DUP2 00001f6b: ADD 00001f6c: DUP1 00001f6d: MLOAD 00001f6e: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001f8b: AND 00001f8c: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00001fad: OR 00001fae: SWAP1 00001faf: MSTORE 00001fb0: PUSH2 0x1fba 00001fb3: SWAP1 00001fb4: DUP6 00001fb5: SWAP1 00001fb6: PUSH2 0x20da 00001fb9: JUMP 00001fba: JUMPDEST 00001fbb: POP 00001fbc: POP 00001fbd: POP 00001fbe: POP 00001fbf: JUMP 00001fc0: JUMPDEST 00001fc1: PUSH1 0x00 00001fc3: DUP1 00001fc4: PUSH2 0x1fcc 00001fc7: DUP5 00001fc8: PUSH2 0x218b 00001fcb: JUMP 00001fcc: JUMPDEST 00001fcd: SWAP1 00001fce: POP 00001fcf: PUSH2 0x1f2a 00001fd2: DUP4 00001fd3: PUSH1 0xff 00001fd5: DUP4 00001fd6: AND 00001fd7: PUSH1 0x0a 00001fd9: EXP 00001fda: PUSH2 0x1b08 00001fdd: JUMP 00001fde: JUMPDEST 00001fdf: PUSH1 0x00 00001fe1: DUP2 00001fe2: DUP5 00001fe3: DUP5 00001fe4: GT 00001fe5: ISZERO 00001fe6: PUSH2 0x206d 00001fe9: JUMPI 00001fea: PUSH1 0x40 00001fec: MLOAD 00001fed: PUSH3 0x461bcd 00001ff1: PUSH1 0xe5 00001ff3: SHL 00001ff4: DUP2 00001ff5: MSTORE 00001ff6: PUSH1 0x04 00001ff8: ADD 00001ff9: DUP1 00001ffa: DUP1 00001ffb: PUSH1 0x20 00001ffd: ADD 00001ffe: DUP3 00001fff: DUP2 00002000: SUB 00002001: DUP3 00002002: MSTORE 00002003: DUP4 00002004: DUP2 00002005: DUP2 00002006: MLOAD 00002007: DUP2 00002008: MSTORE 00002009: PUSH1 0x20 0000200b: ADD 0000200c: SWAP2 0000200d: POP 0000200e: DUP1 0000200f: MLOAD 00002010: SWAP1 00002011: PUSH1 0x20 00002013: ADD 00002014: SWAP1 00002015: DUP1 00002016: DUP4 00002017: DUP4 00002018: PUSH1 0x00 0000201a: JUMPDEST 0000201b: DUP4 0000201c: DUP2 0000201d: LT 0000201e: ISZERO 0000201f: PUSH2 0x2032 00002022: JUMPI 00002023: DUP2 00002024: DUP2 00002025: ADD 00002026: MLOAD 00002027: DUP4 00002028: DUP3 00002029: ADD 0000202a: MSTORE 0000202b: PUSH1 0x20 0000202d: ADD 0000202e: PUSH2 0x201a 00002031: JUMP 00002032: JUMPDEST 00002033: POP 00002034: POP 00002035: POP 00002036: POP 00002037: SWAP1 00002038: POP 00002039: SWAP1 0000203a: DUP2 0000203b: ADD 0000203c: SWAP1 0000203d: PUSH1 0x1f 0000203f: AND 00002040: DUP1 00002041: ISZERO 00002042: PUSH2 0x205f 00002045: JUMPI 00002046: DUP1 00002047: DUP3 00002048: SUB 00002049: DUP1 0000204a: MLOAD 0000204b: PUSH1 0x01 0000204d: DUP4 0000204e: PUSH1 0x20 00002050: SUB 00002051: PUSH2 0x0100 00002054: EXP 00002055: SUB 00002056: NOT 00002057: AND 00002058: DUP2 00002059: MSTORE 0000205a: PUSH1 0x20 0000205c: ADD 0000205d: SWAP2 0000205e: POP 0000205f: JUMPDEST 00002060: POP 00002061: SWAP3 00002062: POP 00002063: POP 00002064: POP 00002065: PUSH1 0x40 00002067: MLOAD 00002068: DUP1 00002069: SWAP2 0000206a: SUB 0000206b: SWAP1 0000206c: REVERT 0000206d: JUMPDEST 0000206e: POP 0000206f: POP 00002070: POP 00002071: SWAP1 00002072: SUB 00002073: SWAP1 00002074: JUMP 00002075: JUMPDEST 00002076: PUSH1 0x00 00002078: DUP2 00002079: DUP4 0000207a: PUSH2 0x20c4 0000207d: JUMPI 0000207e: PUSH1 0x40 00002080: MLOAD 00002081: PUSH3 0x461bcd 00002085: PUSH1 0xe5 00002087: SHL 00002088: DUP2 00002089: MSTORE 0000208a: PUSH1 0x20 0000208c: PUSH1 0x04 0000208e: DUP3 0000208f: ADD 00002090: DUP2 00002091: DUP2 00002092: MSTORE 00002093: DUP4 00002094: MLOAD 00002095: PUSH1 0x24 00002097: DUP5 00002098: ADD 00002099: MSTORE 0000209a: DUP4 0000209b: MLOAD 0000209c: SWAP1 0000209d: SWAP3 0000209e: DUP4 0000209f: SWAP3 000020a0: PUSH1 0x44 000020a2: SWAP1 000020a3: SWAP2 000020a4: ADD 000020a5: SWAP2 000020a6: SWAP1 000020a7: DUP6 000020a8: ADD 000020a9: SWAP1 000020aa: DUP1 000020ab: DUP4 000020ac: DUP4 000020ad: PUSH1 0x00 000020af: DUP4 000020b0: ISZERO 000020b1: PUSH2 0x2032 000020b4: JUMPI 000020b5: DUP2 000020b6: DUP2 000020b7: ADD 000020b8: MLOAD 000020b9: DUP4 000020ba: DUP3 000020bb: ADD 000020bc: MSTORE 000020bd: PUSH1 0x20 000020bf: ADD 000020c0: PUSH2 0x201a 000020c3: JUMP 000020c4: JUMPDEST 000020c5: POP 000020c6: PUSH1 0x00 000020c8: DUP4 000020c9: DUP6 000020ca: DUP2 000020cb: PUSH2 0x20d0 000020ce: JUMPI 000020cf: INVALID 000020d0: JUMPDEST 000020d1: DIV 000020d2: SWAP6 000020d3: SWAP5 000020d4: POP 000020d5: POP 000020d6: POP 000020d7: POP 000020d8: POP 000020d9: JUMP 000020da: JUMPDEST 000020db: PUSH1 0x60 000020dd: PUSH2 0x212f 000020e0: DUP3 000020e1: PUSH1 0x40 000020e3: MLOAD 000020e4: DUP1 000020e5: PUSH1 0x40 000020e7: ADD 000020e8: PUSH1 0x40 000020ea: MSTORE 000020eb: DUP1 000020ec: PUSH1 0x20 000020ee: DUP2 000020ef: MSTORE 000020f0: PUSH1 0x20 000020f2: ADD 000020f3: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00002114: DUP2 00002115: MSTORE 00002116: POP 00002117: DUP6 00002118: PUSH1 0x01 0000211a: PUSH1 0x01 0000211c: PUSH1 0xa0 0000211e: SHL 0000211f: SUB 00002120: AND 00002121: PUSH2 0x2203 00002124: SWAP1 00002125: SWAP3 00002126: SWAP2 00002127: SWAP1 00002128: PUSH4 0xffffffff 0000212d: AND 0000212e: JUMP 0000212f: JUMPDEST 00002130: DUP1 00002131: MLOAD 00002132: SWAP1 00002133: SWAP2 00002134: POP 00002135: ISZERO 00002136: PUSH2 0x1d73 00002139: JUMPI 0000213a: DUP1 0000213b: DUP1 0000213c: PUSH1 0x20 0000213e: ADD 0000213f: SWAP1 00002140: MLOAD 00002141: PUSH1 0x20 00002143: DUP2 00002144: LT 00002145: ISZERO 00002146: PUSH2 0x214e 00002149: JUMPI 0000214a: PUSH1 0x00 0000214c: DUP1 0000214d: REVERT 0000214e: JUMPDEST 0000214f: POP 00002150: MLOAD 00002151: PUSH2 0x1d73 00002154: JUMPI 00002155: PUSH1 0x40 00002157: MLOAD 00002158: PUSH3 0x461bcd 0000215c: PUSH1 0xe5 0000215e: SHL 0000215f: DUP2 00002160: MSTORE 00002161: PUSH1 0x04 00002163: ADD 00002164: DUP1 00002165: DUP1 00002166: PUSH1 0x20 00002168: ADD 00002169: DUP3 0000216a: DUP2 0000216b: SUB 0000216c: DUP3 0000216d: MSTORE 0000216e: PUSH1 0x2a 00002170: DUP2 00002171: MSTORE 00002172: PUSH1 0x20 00002174: ADD 00002175: DUP1 00002176: PUSH2 0x2666 00002179: PUSH1 0x2a 0000217b: SWAP2 0000217c: CODECOPY 0000217d: PUSH1 0x40 0000217f: ADD 00002180: SWAP2 00002181: POP 00002182: POP 00002183: PUSH1 0x40 00002185: MLOAD 00002186: DUP1 00002187: SWAP2 00002188: SUB 00002189: SWAP1 0000218a: REVERT 0000218b: JUMPDEST 0000218c: PUSH1 0x00 0000218e: DUP1 0000218f: DUP3 00002190: PUSH1 0x01 00002192: PUSH1 0x01 00002194: PUSH1 0xa0 00002196: SHL 00002197: SUB 00002198: AND 00002199: PUSH4 0x313ce567 0000219e: PUSH1 0x40 000021a0: MLOAD 000021a1: DUP2 000021a2: PUSH4 0xffffffff 000021a7: AND 000021a8: PUSH1 0xe0 000021aa: SHL 000021ab: DUP2 000021ac: MSTORE 000021ad: PUSH1 0x04 000021af: ADD 000021b0: PUSH1 0x20 000021b2: PUSH1 0x40 000021b4: MLOAD 000021b5: DUP1 000021b6: DUP4 000021b7: SUB 000021b8: DUP2 000021b9: DUP7 000021ba: DUP1 000021bb: EXTCODESIZE 000021bc: ISZERO 000021bd: DUP1 000021be: ISZERO 000021bf: PUSH2 0x21c7 000021c2: JUMPI 000021c3: PUSH1 0x00 000021c5: DUP1 000021c6: REVERT 000021c7: JUMPDEST 000021c8: POP 000021c9: GAS 000021ca: STATICCALL 000021cb: ISZERO 000021cc: DUP1 000021cd: ISZERO 000021ce: PUSH2 0x21db 000021d1: JUMPI 000021d2: RETURNDATASIZE 000021d3: PUSH1 0x00 000021d5: DUP1 000021d6: RETURNDATACOPY 000021d7: RETURNDATASIZE 000021d8: PUSH1 0x00 000021da: REVERT 000021db: JUMPDEST 000021dc: POP 000021dd: POP 000021de: POP 000021df: POP 000021e0: PUSH1 0x40 000021e2: MLOAD 000021e3: RETURNDATASIZE 000021e4: PUSH1 0x20 000021e6: DUP2 000021e7: LT 000021e8: ISZERO 000021e9: PUSH2 0x21f1 000021ec: JUMPI 000021ed: PUSH1 0x00 000021ef: DUP1 000021f0: REVERT 000021f1: JUMPDEST 000021f2: POP 000021f3: MLOAD 000021f4: SWAP1 000021f5: POP 000021f6: PUSH2 0x1abf 000021f9: PUSH1 0x12 000021fb: PUSH1 0xff 000021fd: DUP4 000021fe: AND 000021ff: PUSH2 0x1a7d 00002202: JUMP 00002203: JUMPDEST 00002204: PUSH1 0x60 00002206: PUSH2 0x1f2a 00002209: DUP5 0000220a: DUP5 0000220b: PUSH1 0x00 0000220d: DUP6 0000220e: DUP6 0000220f: PUSH2 0x2217 00002212: DUP6 00002213: PUSH2 0x2329 00002216: JUMP 00002217: JUMPDEST 00002218: PUSH2 0x2268 0000221b: JUMPI 0000221c: PUSH1 0x40 0000221e: DUP1 0000221f: MLOAD 00002220: PUSH3 0x461bcd 00002224: PUSH1 0xe5 00002226: SHL 00002227: DUP2 00002228: MSTORE 00002229: PUSH1 0x20 0000222b: PUSH1 0x04 0000222d: DUP3 0000222e: ADD 0000222f: MSTORE 00002230: PUSH1 0x1d 00002232: PUSH1 0x24 00002234: DUP3 00002235: ADD 00002236: MSTORE 00002237: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00002258: PUSH1 0x44 0000225a: DUP3 0000225b: ADD 0000225c: MSTORE 0000225d: SWAP1 0000225e: MLOAD 0000225f: SWAP1 00002260: DUP2 00002261: SWAP1 00002262: SUB 00002263: PUSH1 0x64 00002265: ADD 00002266: SWAP1 00002267: REVERT 00002268: JUMPDEST 00002269: PUSH1 0x00 0000226b: PUSH1 0x60 0000226d: DUP7 0000226e: PUSH1 0x01 00002270: PUSH1 0x01 00002272: PUSH1 0xa0 00002274: SHL 00002275: SUB 00002276: AND 00002277: DUP6 00002278: DUP8 00002279: PUSH1 0x40 0000227b: MLOAD 0000227c: DUP1 0000227d: DUP3 0000227e: DUP1 0000227f: MLOAD 00002280: SWAP1 00002281: PUSH1 0x20 00002283: ADD 00002284: SWAP1 00002285: DUP1 00002286: DUP4 00002287: DUP4 00002288: JUMPDEST 00002289: PUSH1 0x20 0000228b: DUP4 0000228c: LT 0000228d: PUSH2 0x22a7 00002290: JUMPI 00002291: DUP1 00002292: MLOAD 00002293: DUP3 00002294: MSTORE 00002295: PUSH1 0x1f 00002297: NOT 00002298: SWAP1 00002299: SWAP3 0000229a: ADD 0000229b: SWAP2 0000229c: PUSH1 0x20 0000229e: SWAP2 0000229f: DUP3 000022a0: ADD 000022a1: SWAP2 000022a2: ADD 000022a3: PUSH2 0x2288 000022a6: JUMP 000022a7: JUMPDEST 000022a8: PUSH1 0x01 000022aa: DUP4 000022ab: PUSH1 0x20 000022ad: SUB 000022ae: PUSH2 0x0100 000022b1: EXP 000022b2: SUB 000022b3: DUP1 000022b4: NOT 000022b5: DUP3 000022b6: MLOAD 000022b7: AND 000022b8: DUP2 000022b9: DUP5 000022ba: MLOAD 000022bb: AND 000022bc: DUP1 000022bd: DUP3 000022be: OR 000022bf: DUP6 000022c0: MSTORE 000022c1: POP 000022c2: POP 000022c3: POP 000022c4: POP 000022c5: POP 000022c6: POP 000022c7: SWAP1 000022c8: POP 000022c9: ADD 000022ca: SWAP2 000022cb: POP 000022cc: POP 000022cd: PUSH1 0x00 000022cf: PUSH1 0x40 000022d1: MLOAD 000022d2: DUP1 000022d3: DUP4 000022d4: SUB 000022d5: DUP2 000022d6: DUP6 000022d7: DUP8 000022d8: GAS 000022d9: CALL 000022da: SWAP3 000022db: POP 000022dc: POP 000022dd: POP 000022de: RETURNDATASIZE 000022df: DUP1 000022e0: PUSH1 0x00 000022e2: DUP2 000022e3: EQ 000022e4: PUSH2 0x2309 000022e7: JUMPI 000022e8: PUSH1 0x40 000022ea: MLOAD 000022eb: SWAP2 000022ec: POP 000022ed: PUSH1 0x1f 000022ef: NOT 000022f0: PUSH1 0x3f 000022f2: RETURNDATASIZE 000022f3: ADD 000022f4: AND 000022f5: DUP3 000022f6: ADD 000022f7: PUSH1 0x40 000022f9: MSTORE 000022fa: RETURNDATASIZE 000022fb: DUP3 000022fc: MSTORE 000022fd: RETURNDATASIZE 000022fe: PUSH1 0x00 00002300: PUSH1 0x20 00002302: DUP5 00002303: ADD 00002304: RETURNDATACOPY 00002305: PUSH2 0x230e 00002308: JUMP 00002309: JUMPDEST 0000230a: PUSH1 0x60 0000230c: SWAP2 0000230d: POP 0000230e: JUMPDEST 0000230f: POP 00002310: SWAP2 00002311: POP 00002312: SWAP2 00002313: POP 00002314: PUSH2 0x231e 00002317: DUP3 00002318: DUP3 00002319: DUP7 0000231a: PUSH2 0x232f 0000231d: JUMP 0000231e: JUMPDEST 0000231f: SWAP8 00002320: SWAP7 00002321: POP 00002322: POP 00002323: POP 00002324: POP 00002325: POP 00002326: POP 00002327: POP 00002328: JUMP 00002329: JUMPDEST 0000232a: EXTCODESIZE 0000232b: ISZERO 0000232c: ISZERO 0000232d: SWAP1 0000232e: JUMP 0000232f: JUMPDEST 00002330: PUSH1 0x60 00002332: DUP4 00002333: ISZERO 00002334: PUSH2 0x233e 00002337: JUMPI 00002338: POP 00002339: DUP2 0000233a: PUSH2 0x1abf 0000233d: JUMP 0000233e: JUMPDEST 0000233f: DUP3 00002340: MLOAD 00002341: ISZERO 00002342: PUSH2 0x234e 00002345: JUMPI 00002346: DUP3 00002347: MLOAD 00002348: DUP1 00002349: DUP5 0000234a: PUSH1 0x20 0000234c: ADD 0000234d: REVERT 0000234e: JUMPDEST 0000234f: PUSH1 0x40 00002351: MLOAD 00002352: PUSH3 0x461bcd 00002356: PUSH1 0xe5 00002358: SHL 00002359: DUP2 0000235a: MSTORE 0000235b: PUSH1 0x20 0000235d: PUSH1 0x04 0000235f: DUP3 00002360: ADD 00002361: DUP2 00002362: DUP2 00002363: MSTORE 00002364: DUP5 00002365: MLOAD 00002366: PUSH1 0x24 00002368: DUP5 00002369: ADD 0000236a: MSTORE 0000236b: DUP5 0000236c: MLOAD 0000236d: DUP6 0000236e: SWAP4 0000236f: SWAP2 00002370: SWAP3 00002371: DUP4 00002372: SWAP3 00002373: PUSH1 0x44 00002375: ADD 00002376: SWAP2 00002377: SWAP1 00002378: DUP6 00002379: ADD 0000237a: SWAP1 0000237b: DUP1 0000237c: DUP4 0000237d: DUP4 0000237e: PUSH1 0x00 00002380: DUP4 00002381: ISZERO 00002382: PUSH2 0x2032 00002385: JUMPI 00002386: DUP2 00002387: DUP2 00002388: ADD 00002389: MLOAD 0000238a: DUP4 0000238b: DUP3 0000238c: ADD 0000238d: MSTORE 0000238e: PUSH1 0x20 00002390: ADD 00002391: PUSH2 0x201a 00002394: JUMP 00002395: INVALID 00002396: UNKNOWN(0x4C) 00002397: PUSH10 0x717569646974794d696e 000023a2: PUSH10 0x6e673a3a6465706f7369 000023ad: PUSH21 0x3a2073746172742074696d65206d75737420626520 000023c3: PUSH10 0x6e206675747572654c69 000023ce: PUSH18 0x7569646974794d696e696e673a3a72657363 000023e1: PUSH22 0x65546f6b656e733a207468617420757364742062656c 000023f8: PUSH16 0x6e677320746f207374616b6572734f77 00002409: PUSH15 0x61626c653a206e6577206f776e6572 00002419: KECCAK256 0000241a: PUSH10 0x7320746865207a65726f 00002425: KECCAK256 00002426: PUSH2 0x6464 00002429: PUSH19 0x6573734c69717569646974794d696e696e673a 0000243d: GASPRICE 0000243e: PUSH5 0x65706f7369 00002444: PUSH21 0x3a20616c7265616479207265636569766564206465 0000245a: PUSH17 0x6f7369744c69717569646974794d696e69 0000246c: PUSH15 0x673a3a6465706f7369743a20656e64 0000247c: KECCAK256 0000247d: PUSH21 0x696d65206d75737420616674657220737461727420 00002493: PUSH21 0x696d654c69717569646974794d696e696e673a3a64 000024a9: PUSH6 0x706f7369743a 000024b0: KECCAK256 000024b1: PUSH4 0x6f6e7472 000024b6: PUSH2 0x6374 000024b9: KECCAK256 000024ba: PUSH3 0x616c61 000024be: PUSH15 0x636520646f6573206e6f7420657175 000024ce: PUSH2 0x6c20 000024d1: PUSH6 0x787065637465 000024d8: PUSH5 0x205f746f74 000024de: PUSH2 0x6c52 000024e1: PUSH6 0x77617264734c 000024e8: PUSH10 0x717569646974794d696e 000024f3: PUSH10 0x6e673a3a726573637565 000024fe: SLOAD 000024ff: PUSH16 0x6b656e733a2074686174206461692062 00002510: PUSH6 0x6c6f6e677320 00002517: PUSH21 0x6f207374616b6572734c69717569646974794d696e 0000252d: PUSH10 0x6e673a3a5f6170706c79 00002538: MSTORE 00002539: PUSH6 0x776172643a20 00002540: PUSH15 0x6f20737461626c65636f696e732073 00002550: PUSH21 0x616b65644c69717569646974794d696e696e673a3a 00002566: PUSH20 0x74616b653a207374616b696e67206973206f7665 0000257b: PUSH19 0x4c69717569646974794d696e696e673a3a7374 0000258f: PUSH2 0x6b65 00002592: GASPRICE 00002593: KECCAK256 00002594: PUSH15 0x6f20736172636f2062616c616e6365 000025a4: MSTORE8 000025a5: PUSH2 0x6665 000025a8: UNKNOWN(0x4D) 000025a9: PUSH2 0x7468 000025ac: GASPRICE 000025ad: KECCAK256 000025ae: PUSH14 0x756c7469706c69636174696f6e20 000025bd: PUSH16 0x766572666c6f774c6971756964697479 000025ce: UNKNOWN(0x4D) 000025cf: PUSH10 0x6e696e673a3a7374616b 000025da: PUSH6 0x3a206d697373 000025e1: PUSH10 0x6e6720737461626c6563 000025ec: PUSH16 0x696e4c69717569646974794d696e696e 000025fd: PUSH8 0x3a3a726573637565 00002606: SLOAD 00002607: PUSH16 0x6b656e733a2074686174207573646320 00002618: PUSH3 0x656c6f 0000261c: PUSH15 0x677320746f207374616b6572734c69 0000262c: PUSH18 0x7569646974794d696e696e673a3a72657363 0000263f: PUSH22 0x65546f6b656e733a207468617420736172636f206265 00002656: PUSH13 0x6f6e677320746f207374616b65 00002664: PUSH19 0x735361666545524332303a204552433230206f 00002678: PUSH17 0x65726174696f6e20646964206e6f742073 0000268a: PUSH22 0x63636565644c69717569646974794d696e696e673a3a 000026a1: PUSH20 0x74616b653a207374616b696e672069736e277420 000026b6: PUSH13 0x69766520796574a26469706673 000026c4: PC 000026c5: UNKNOWN(0x22) 000026c6: SLT 000026c7: KECCAK256 000026c8: PUSH1 0x77 000026ca: UNKNOWN(0xCB) 000026cb: UNKNOWN(0xAA) 000026cc: UNKNOWN(0xC2) 000026cd: DUP16 000026ce: BLOCKHASH 000026cf: REVERT 000026d0: JUMP 000026d1: PUSH18 0xc2c430175103bd5e04c81ec504e98d8c16f2 000026e4: EXTCODECOPY 000026e5: PUSH10 0x620264736f6c63430006 000026f0: UNKNOWN(0x0C) 000026f1: STOP 000026f2: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x2535db2dfa25ea8bafec64fe6b73c32a0cd794ba1ebecd509a714db05717738a
call_targets:
0x7a9a0d2ae824ba57a5fe7dabaf7e6846021d4e8e
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x2535db2dfa25ea8bafec64fe6b73c32a0cd794ba1ebecd509a714db05717738a",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x7a9a0d2ae824ba57a5fe7dabaf7e6846021d4e8e"
],
"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": "0xd76dac51",
"selector": "0xd76dac51",
"calldata_variants": [
"0xd76dac51",
"0xd76dac510000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebf86d39",
"selector": "0xebf86d39",
"calldata_variants": [
"0xebf86d39",
"0xebf86d390000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4b9fa75",
"selector": "0xf4b9fa75",
"calldata_variants": [
"0xf4b9fa75",
"0xf4b9fa750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xaf2f3ebf",
"selector": "0xaf2f3ebf",
"calldata_variants": [
"0xaf2f3ebf",
"0xaf2f3ebf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcea9d26f",
"selector": "0xcea9d26f",
"calldata_variants": [
"0xcea9d26f",
"0xcea9d26f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd578ceab",
"selector": "0xd578ceab",
"calldata_variants": [
"0xd578ceab",
"0xd578ceab0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 8921,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x2535db2dfa25ea8bafec64fe6b73c32a0cd794ba1ebecd509a714db05717738a
call_targets:
0x7a9a0d2ae824ba57a5fe7dabaf7e6846021d4e8e
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x2535db2dfa25ea8bafec64fe6b73c32a0cd794ba1ebecd509a714db05717738a",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x7a9a0d2ae824ba57a5fe7dabaf7e6846021d4e8e"
],
"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": "0xd76dac51",
"selector": "0xd76dac51",
"calldata_variants": [
"0xd76dac51",
"0xd76dac510000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebf86d39",
"selector": "0xebf86d39",
"calldata_variants": [
"0xebf86d39",
"0xebf86d390000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4b9fa75",
"selector": "0xf4b9fa75",
"calldata_variants": [
"0xf4b9fa75",
"0xf4b9fa750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xaf2f3ebf",
"selector": "0xaf2f3ebf",
"calldata_variants": [
"0xaf2f3ebf",
"0xaf2f3ebf0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcea9d26f",
"selector": "0xcea9d26f",
"calldata_variants": [
"0xcea9d26f",
"0xcea9d26f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd578ceab",
"selector": "0xd578ceab",
"calldata_variants": [
"0xd578ceab",
"0xd578ceab0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 8921,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| medium | reentrancy | slither | Reentrancy in LiquidityMining2.stake(uint256,uint256,uint256) (contracts/Contract.sol#1105-1154): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "stake",
"type": "function",
"source_mapping": {
"lines": [
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154
],
"start": 40622,
"length": 1410,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "stake(uint256,uint256,uint256)"
}
},
{
"name": "usdc.safeTransferFrom(msg.sender,address(this),usdcIn)",
"type": "node",
"source_mapping": {
"lines": [
1132,
1133
],
"start": 41426,
"length": 56,
"ending_column": 25,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 7,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "stake",
"type": "function",
"source_mapping": {
"lines": [
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154
],
"start": 40622,
"length": 1410,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "stake(uint256,uint256,uint256)"
}
}
}
},
{
"name": "usdt.safeTransferFrom(msg.sender,address(this),usdtIn)",
"type": "node",
"source_mapping": {
"lines": [
1136,
1137
],
"start": 41533,
"length": 56,
"ending_column": 11,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 11,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "stake",
"type": "function",
"source_mapping": {
"lines": [
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154
],
"start": 40622,
"length": 1410,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "stake(uint256,uint256,uint256)"
}
}
}
},
{
"name": "dai.safeTransferFrom(msg.sender,address(this),daiIn)",
"type": "node",
"source_mapping": {
"lines": [
1139,
1140,
1141
],
"start": 41639,
"length": 54,
"ending_column": 37,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "stake",
"type": "function",
"source_mapping": {
"lines": [
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154
],
"start": 40622,
"length": 1410,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "stake(uint256,uint256,uint256)"
}
}
}
},
{
"name": "_stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender)",
"type": "node",
"source_mapping": {
"lines": [
1147,
1148,
1149,
1150,
1151,
1152
],
"start": 41820,
"length": 149,
"ending_column": 8,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_totalStakeDai",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "stake",
"type": "function",
"source_mapping": {
"lines": [
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154
],
"start": 40622,
"length": 1410,
"ending_column": 1,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "stake(uint256,uint256,uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "stake",
"type": "function",
"lines": [
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154
]
},
{
"file": "contracts/Contract.sol",
"name": "usdc.safeTransferFrom(msg.sender,address(this),usdcIn)",
"type": "node",
"lines": [
1132,
1133
]
},
{
"file": "contracts/Contract.sol",
"name": "usdt.safeTransferFrom(msg.sender,address(this),usdtIn)",
"type": "node",
"lines": [
1136,
1137
]
},
{
"file": "contracts/Contract.sol",
"name": "dai.safeTransferFrom(msg.sender,address(this),daiIn)",
"type": "node",
"lines": [
1139,
1140,
1141
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender)",
"type": "node",
"lines": [
1147,
1148,
1149,
1150,
1151,
1152
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeDai = _totalStakeDai.sub(daiOut)",
"type": "node",
"lines": [
1303,
1304,
1305
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeDai = _totalStakeDai.add(daiIn)",
"type": "node",
"lines": [
1262,
1263,
1264,
1265
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeDai = _totalStakeDai.add(addBackDai)",
"type": "node",
"lines": [
1276,
1277,
1278
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender)",
"type": "node",
"lines": [
1147,
1148,
1149,
1150,
1151,
1152
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdc = _totalStakeUsdc.sub(usdcOut)",
"type": "node",
"lines": [
1300,
1301
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdc = _totalStakeUsdc.add(usdcIn)",
"type": "node",
"lines": [
1259,
1260,
1261
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdc = _totalStakeUsdc.add(addBackUsdc)",
"type": "node",
"lines": [
1267,
1268,
1269,
1270
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender)",
"type": "node",
"lines": [
1147,
1148,
1149,
1150,
1151,
1152
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdt = _totalStakeUsdt.sub(usdtOut)",
"type": "node",
"lines": [
1301,
1302,
1303
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdt = _totalStakeUsdt.add(usdtIn)",
"type": "node",
"lines": [
1262
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdt = _totalStakeUsdt.add(addBackUsdt)",
"type": "node",
"lines": [
1272,
1273,
1274
]
}
],
"description": "Reentrancy in LiquidityMining2.stake(uint256,uint256,uint256) (contracts/Contract.sol#1105-1154):\n\tExternal calls:\n\t- usdc.safeTransferFrom(msg.sender,address(this),usdcIn) (contracts/Contract.sol#1132-1133)\n\t- usdt.safeTransferFrom(msg.sender,address(this),usdtIn) (contracts/Contract.sol#1136-1137)\n\t- dai.safeTransferFrom(msg.sender,address(this),daiIn) (contracts/Contract.sol#1139-1141)\n\tState variables written after the call(s):\n\t- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)\n\t\t- _totalStakeDai = _totalStakeDai.sub(daiOut) (contracts/Contract.sol#1303-1305)\n\t\t- _totalStakeDai = _totalStakeDai.add(daiIn) (contracts/Contract.sol#1262-1265)\n\t\t- _totalStakeDai = _totalStakeDai.add(addBackDai) (contracts/Contract.sol#1276-1278)\n\tLiquidityMining2._totalStakeDai (contracts/Contract.sol#931-933) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)\n\t- LiquidityMining2.totalStakeDai() (contracts/Contract.sol#984-987)\n\t- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)\n\t\t- _totalStakeUsdc = _totalStakeUsdc.sub(usdcOut) (contracts/Contract.sol#1300-1301)\n\t\t- _totalStakeUsdc = _totalStakeUsdc.add(usdcIn) (contracts/Contract.sol#1259-1261)\n\t\t- _totalStakeUsdc = _totalStakeUsdc.add(addBackUsdc) (contracts/Contract.sol#1267-1270)\n\tLiquidityMining2._totalStakeUsdc (contracts/Contract.sol#930-931) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)\n\t- LiquidityMining2.totalStakeUsdc() (contracts/Contract.sol#978-980)\n\t- _stake(normalize(usdc,usdcIn),normalize(usdt,usdtIn),normalize(dai,daiIn),msg.sender) (contracts/Contract.sol#1147-1152)\n\t\t- _totalStakeUsdt = _totalStakeUsdt.sub(usdtOut) (contracts/Contract.sol#1301-1303)\n\t\t- _totalStakeUsdt = _totalStakeUsdt.add(usdtIn) (contracts/Contract.sol#1262)\n\t\t- _totalStakeUsdt = _totalStakeUsdt.add(addBackUsdt) (contracts/Contract.sol#1272-1274)\n\tLiquidityMining2._totalStakeUsdt (contracts/Contract.sol#931) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)\n\t- LiquidityMining2.totalStakeUsdt() (contracts/Contract.sol#981-984)"
}
|
| medium | reentrancy | slither | Reentrancy in LiquidityMining2.payout(address) (contracts/Contract.sol#1193-1221): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "payout",
"type": "function",
"source_mapping": {
"lines": [
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221
],
"start": 43155,
"length": 681,
"ending_column": 16,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 4,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "payout(address)"
}
},
{
"name": "sarco.safeTransfer(to,reward)",
"type": "node",
"source_mapping": {
"lines": [
1209,
1210,
1211
],
"start": 43501,
"length": 30,
"ending_column": 11,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 28,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "payout",
"type": "function",
"source_mapping": {
"lines": [
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221
],
"start": 43155,
"length": 681,
"ending_column": 16,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 4,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "payout(address)"
}
}
}
},
{
"name": "_stake(usdcOut,usdtOut,daiOut,msg.sender)",
"type": "node",
"source_mapping": {
"lines": [
1217,
1218
],
"start": 43738,
"length": 44,
"ending_column": 20,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 4,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_totalStakeDai",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "payout",
"type": "function",
"source_mapping": {
"lines": [
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221
],
"start": 43155,
"length": 681,
"ending_column": 16,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 4,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "payout(address)"
}
}
}
},
{
"name": "_totalStakeDai = _totalStakeDai.sub(daiOut)",
"type": "node",
"source_mapping": {
"lines": [
1303,
1304,
1305
],
"start": 46145,
"length": 43,
"ending_column": 31,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 38,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_totalStakeDai",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "_applyReward",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 45341,
"length": 1008,
"ending_column": 25,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 6,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_applyReward(address)"
}
}
}
},
{
"name": "_totalStakeDai = _totalStakeDai.add(daiIn)",
"type": "node",
"source_mapping": {
"lines": [
1262,
1263,
1264,
1265
],
"start": 44972,
"length": 42,
"ending_column": 21,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 60,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_totalStakeDai",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "_stake",
"type": "function",
"source_mapping": {
"lines": [
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
1262,
1263,
1264,
1265,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
1275,
1276,
1277,
1278,
1279
],
"start": 43842,
"length": 1493,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "LiquidityMining2",
"type": "contract",
"source_mapping": {
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067,
1068,
1069,
1070,
1071,
1072,
1073,
1074,
1075,
1076,
1077,
1078,
1079,
1080,
1081,
1082,
1083,
1084,
1085,
1086,
1087,
1088,
1089,
1090,
1091,
1092,
1093,
1094,
1095,
1096,
1097,
1098,
1099,
1100,
1101,
1102,
1103,
1104,
1105,
1106,
1107,
1108,
1109,
1110,
1111,
1112,
1113,
1114,
1115,
1116,
1117,
1118,
1119,
1120,
1121,
1122,
1123,
1124,
1125,
1126,
1127,
1128,
1129,
1130,
1131,
1132,
1133,
1134,
1135,
1136,
1137,
1138,
1139,
1140,
1141,
1142,
1143,
1144,
1145,
1146,
1147,
1148,
1149,
1150,
1151,
1152,
1153,
1154,
1155,
1156,
1157,
1158,
1159,
1160,
1161,
1162,
1163,
1164,
1165,
1166,
1167,
1168,
1169,
1170,
1171,
1172,
1173,
1174,
1175,
1176,
1177,
1178,
1179,
1180,
1181,
1182,
1183,
1184,
1185,
1186,
1187,
1188,
1189,
1190,
1191,
1192,
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221,
1222,
1223,
1224,
1225,
1226,
1227,
1228,
1229,
1230,
1231,
1232,
1233,
1234,
1235,
1236,
1237,
1238,
1239,
1240,
1241,
1242,
1243,
1244,
1245,
1246,
1247,
1248,
1249,
1250,
1251,
1252,
1253,
1254,
1255,
1256,
1257,
1258,
1259,
1260,
1261,
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,
1311,
1312,
1313,
1314,
1315,
1316,
1317,
1318,
1319,
1320,
1321,
1322,
1323,
1324,
1325,
1326,
1327,
1328,
1329,
1330,
1331,
1332,
1333,
1334,
1335,
1336,
1337,
1338,
1339,
1340,
1341,
1342,
1343,
1344,
1345,
1346,
1347,
1348,
1349,
1350,
1351,
1352,
1353,
1354,
1355
],
"start": 35099,
"length": 12602,
"ending_column": 4,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-c2y3lrj7/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_stake(uint256,uint256,uint256,address)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "payout",
"type": "function",
"lines": [
1193,
1194,
1195,
1196,
1197,
1198,
1199,
1200,
1201,
1202,
1203,
1204,
1205,
1206,
1207,
1208,
1209,
1210,
1211,
1212,
1213,
1214,
1215,
1216,
1217,
1218,
1219,
1220,
1221
]
},
{
"file": "contracts/Contract.sol",
"name": "sarco.safeTransfer(to,reward)",
"type": "node",
"lines": [
1209,
1210,
1211
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(usdcOut,usdtOut,daiOut,msg.sender)",
"type": "node",
"lines": [
1217,
1218
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeDai = _totalStakeDai.sub(daiOut)",
"type": "node",
"lines": [
1303,
1304,
1305
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeDai = _totalStakeDai.add(daiIn)",
"type": "node",
"lines": [
1262,
1263,
1264,
1265
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeDai = _totalStakeDai.add(addBackDai)",
"type": "node",
"lines": [
1276,
1277,
1278
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(usdcOut,usdtOut,daiOut,msg.sender)",
"type": "node",
"lines": [
1217,
1218
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdc = _totalStakeUsdc.sub(usdcOut)",
"type": "node",
"lines": [
1300,
1301
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdc = _totalStakeUsdc.add(usdcIn)",
"type": "node",
"lines": [
1259,
1260,
1261
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdc = _totalStakeUsdc.add(addBackUsdc)",
"type": "node",
"lines": [
1267,
1268,
1269,
1270
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(usdcOut,usdtOut,daiOut,msg.sender)",
"type": "node",
"lines": [
1217,
1218
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdt = _totalStakeUsdt.sub(usdtOut)",
"type": "node",
"lines": [
1301,
1302,
1303
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdt = _totalStakeUsdt.add(usdtIn)",
"type": "node",
"lines": [
1262
]
},
{
"file": "contracts/Contract.sol",
"name": "_totalStakeUsdt = _totalStakeUsdt.add(addBackUsdt)",
"type": "node",
"lines": [
1272,
1273,
1274
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(usdcOut,usdtOut,daiOut,msg.sender)",
"type": "node",
"lines": [
1217,
1218
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedDai[account] = 0",
"type": "node",
"lines": [
1307
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedDai[account] = daiOut",
"type": "node",
"lines": [
1246,
1247,
1248
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedDai[account] = _userStakedDai[account].add(daiIn)",
"type": "node",
"lines": [
1257,
1258,
1259
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(usdcOut,usdtOut,daiOut,msg.sender)",
"type": "node",
"lines": [
1217,
1218
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedUsdc[account] = 0",
"type": "node",
"lines": [
1305,
1306
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedUsdc[account] = usdcOut",
"type": "node",
"lines": [
1242,
1243
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedUsdc[account] = _userStakedUsdc[account].add(usdcIn)",
"type": "node",
"lines": [
1251,
1252,
1253
]
},
{
"file": "contracts/Contract.sol",
"name": "_stake(usdcOut,usdtOut,daiOut,msg.sender)",
"type": "node",
"lines": [
1217,
1218
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedUsdt[account] = 0",
"type": "node",
"lines": [
1306
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedUsdt[account] = usdtOut",
"type": "node",
"lines": [
1244,
1245,
1246
]
},
{
"file": "contracts/Contract.sol",
"name": "_userStakedUsdt[account] = _userStakedUsdt[account].add(usdtIn)",
"type": "node",
"lines": [
1253,
1254,
1255,
1256,
1257
]
}
],
"description": "Reentrancy in LiquidityMining2.payout(address) (contracts/Contract.sol#1193-1221):\n\tExternal calls:\n\t- sarco.safeTransfer(to,reward) (contracts/Contract.sol#1209-1211)\n\tState variables written after the call(s):\n\t- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)\n\t\t- _totalStakeDai = _totalStakeDai.sub(daiOut) (contracts/Contract.sol#1303-1305)\n\t\t- _totalStakeDai = _totalStakeDai.add(daiIn) (contracts/Contract.sol#1262-1265)\n\t\t- _totalStakeDai = _totalStakeDai.add(addBackDai) (contracts/Contract.sol#1276-1278)\n\tLiquidityMining2._totalStakeDai (contracts/Contract.sol#931-933) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)\n\t- LiquidityMining2.totalStakeDai() (contracts/Contract.sol#984-987)\n\t- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)\n\t\t- _totalStakeUsdc = _totalStakeUsdc.sub(usdcOut) (contracts/Contract.sol#1300-1301)\n\t\t- _totalStakeUsdc = _totalStakeUsdc.add(usdcIn) (contracts/Contract.sol#1259-1261)\n\t\t- _totalStakeUsdc = _totalStakeUsdc.add(addBackUsdc) (contracts/Contract.sol#1267-1270)\n\tLiquidityMining2._totalStakeUsdc (contracts/Contract.sol#930-931) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)\n\t- LiquidityMining2.totalStakeUsdc() (contracts/Contract.sol#978-980)\n\t- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)\n\t\t- _totalStakeUsdt = _totalStakeUsdt.sub(usdtOut) (contracts/Contract.sol#1301-1303)\n\t\t- _totalStakeUsdt = _totalStakeUsdt.add(usdtIn) (contracts/Contract.sol#1262)\n\t\t- _totalStakeUsdt = _totalStakeUsdt.add(addBackUsdt) (contracts/Contract.sol#1272-1274)\n\tLiquidityMining2._totalStakeUsdt (contracts/Contract.sol#931) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalStake() (contracts/Contract.sol#1040-1044)\n\t- LiquidityMining2.totalStakeUsdt() (contracts/Contract.sol#981-984)\n\t- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)\n\t\t- _userStakedDai[account] = 0 (contracts/Contract.sol#1307)\n\t\t- _userStakedDai[account] = daiOut (contracts/Contract.sol#1246-1248)\n\t\t- _userStakedDai[account] = _userStakedDai[account].add(daiIn) (contracts/Contract.sol#1257-1259)\n\tLiquidityMining2._userStakedDai (contracts/Contract.sol#940-944) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalUserStake(address) (contracts/Contract.sol#1044-1053)\n\t- LiquidityMining2.userStakeDai(address) (contracts/Contract.sol#1003-1008)\n\t- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)\n\t\t- _userStakedUsdc[account] = 0 (contracts/Contract.sol#1305-1306)\n\t\t- _userStakedUsdc[account] = usdcOut (contracts/Contract.sol#1242-1243)\n\t\t- _userStakedUsdc[account] = _userStakedUsdc[account].add(usdcIn) (contracts/Contract.sol#1251-1253)\n\tLiquidityMining2._userStakedUsdc (contracts/Contract.sol#938-939) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalUserStake(address) (contracts/Contract.sol#1044-1053)\n\t- LiquidityMining2.userStakeUsdc(address) (contracts/Contract.sol#987-993)\n\t- _stake(usdcOut,usdtOut,daiOut,msg.sender) (contracts/Contract.sol#1217-1218)\n\t\t- _userStakedUsdt[account] = 0 (contracts/Contract.sol#1306)\n\t\t- _userStakedUsdt[account] = usdtOut (contracts/Contract.sol#1244-1246)\n\t\t- _userStakedUsdt[account] = _userStakedUsdt[account].add(usdtIn) (contracts/Contract.sol#1253-1257)\n\tLiquidityMining2._userStakedUsdt (contracts/Contract.sol#939-940) can be used in cross function reentrancies:\n\t- LiquidityMining2.totalUserStake(address) (contracts/Contract.sol#1044-1053)\n\t- LiquidityMining2.userStakeUsdt(address) (contracts/Contract.sol#993-1002)"
}
|
| medium | other | codex | Rewards accrue during zero-stake periods, letting late stakers capture idle rewards | 75 | no | — |
viewevidence_json{
"evidence": "update() only advances _mostRecentValueCalcTime when totalCurrentStake > 0, so idle periods remain unaccounted until a later interaction and are then distributed to current stakers.",
"locations": [
"contracts/Contract.sol:1089",
"contracts/Contract.sol:1096",
"contracts/Contract.sol:1116",
"contracts/Contract.sol:1145",
"contracts/Contract.sol:1242"
],
"recommendation": "When totalStake == 0, advance _mostRecentValueCalcTime to block.timestamp (capped by endTime) so idle periods do not accrue rewards; alternatively track a lastRewardTime that always advances regardless of stake and skip weight increases when totalStake is zero.",
"exploit_scenario": "All stakers withdraw so totalStake becomes 0 and _mostRecentValueCalcTime stops advancing. An attacker waits (rewards accrue \u201cimplicitly\u201d), then stakes a minimal amount and calls payout; the update modifier mints rewards for the entire idle interval using the attacker\u2019s current stake, allowing them to capture rewards for time when no one was staked."
}
|
| low | other | codex | rescueTokens compares normalized stake totals against raw token balances | 65 | no | — |
viewevidence_json{
"evidence": "normalize/denormalize scale amounts by 10**shift, while rescueTokens uses _totalStakeUsdc/_totalStakeUsdt/_totalStakeDai directly against balanceOf.",
"locations": [
"contracts/Contract.sol:1122",
"contracts/Contract.sol:1127",
"contracts/Contract.sol:1136",
"contracts/Contract.sol:1357",
"contracts/Contract.sol:1364",
"contracts/Contract.sol:1369",
"contracts/Contract.sol:1374"
],
"recommendation": "Compare raw balances to denormalized stake totals (or store raw amounts in parallel) before subtracting; use denormalize(usdc, _totalStakeUsdc) etc. in rescueTokens.",
"exploit_scenario": "USDC/USDT/DAI stakes are stored normalized to 18 decimals, but rescueTokens subtracts these normalized values from raw ERC20 balances. For 6\u2011decimals tokens this underflows and reverts, preventing rescue of excess tokens and potentially trapping funds."
}
|
| 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": 9
}
|