TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

019bb2d5-fdc8-7030-9e45-b14b77f6baec

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 12, 2026 3:32 PM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
39692 artifact.fetch complete 1 / 3 3 months ago
39693 proxy.resolve complete 1 / 3 3 months ago
39694 tool.cast_disasm complete 1 / 3 3 months ago
39695 analysis.bundle complete 1 / 3 3 months ago
39696 capability.graph complete 1 / 3 3 months ago
39697 detector.run complete 1 / 3 3 months ago
39698 validation.fork complete 1 / 3 3 months ago
39756 report.consolidate complete 1 / 6 3 months ago
39757 tool.slither complete 1 / 2 3 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither
Status
complete
Attempts
1 / 2
Findings
1
Solc
0.5.5 (solc-select)
View stderr
'forge clean' running (wd: /tmp/slither-7nja2kqw)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-7nja2kqw)

GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713) performs a multiplication on the result of a division:
	- rewardRate = reward.div(DURATION) (contracts/Contract.sol#706)
	- check = DURATION.mul(rewardRate).mul(1e18) (contracts/Contract.sol#712)
GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713) performs a multiplication on the result of a division:
	- leftover = remaining.mul(rewardRate) (contracts/Contract.sol#699)
	- rewardRate = reward.div(DURATION) (contracts/Contract.sol#706)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply

Reentrancy in GRAPETHPool.exit() (contracts/Contract.sol#673-676):
	External calls:
	- withdraw(balanceOf(msg.sender)) (contracts/Contract.sol#674)
		- weth.safeTransfer(msg.sender,amount) (contracts/Contract.sol#598)
		- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)
	- getReward() (contracts/Contract.sol#675)
		- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)
		- scalingFactor = GRAP(address(grap)).grapsScalingFactor() (contracts/Contract.sol#682)
		- grap.safeTransfer(msg.sender,trueReward) (contracts/Contract.sol#684)
	State variables written after the call(s):
	- getReward() (contracts/Contract.sol#675)
		- lastUpdateTime = lastTimeRewardApplicable() (contracts/Contract.sol#626)
	GRAPETHPool.lastUpdateTime (contracts/Contract.sol#609) can be used in cross function reentrancies:
	- GRAPETHPool.lastUpdateTime (contracts/Contract.sol#609)
	- GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713)
	- GRAPETHPool.rewardPerToken() (contracts/Contract.sol#638-650)
	- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)
	- getReward() (contracts/Contract.sol#675)
		- rewardPerTokenStored = rewardPerToken() (contracts/Contract.sol#625)
	GRAPETHPool.rewardPerTokenStored (contracts/Contract.sol#610) can be used in cross function reentrancies:
	- GRAPETHPool.rewardPerToken() (contracts/Contract.sol#638-650)
	- GRAPETHPool.rewardPerTokenStored (contracts/Contract.sol#610)
	- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)
	- getReward() (contracts/Contract.sol#675)
		- rewards[msg.sender] = 0 (contracts/Contract.sol#681)
		- rewards[account] = earned(account) (contracts/Contract.sol#628)
	GRAPETHPool.rewards (contracts/Contract.sol#612) can be used in cross function reentrancies:
	- GRAPETHPool.earned(address) (contracts/Contract.sol#652-658)
	- GRAPETHPool.getReward() (contracts/Contract.sol#678-687)
	- GRAPETHPool.rewards (contracts/Contract.sol#612)
	- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)
	- getReward() (contracts/Contract.sol#675)
		- userRewardPerTokenPaid[account] = rewardPerTokenStored (contracts/Contract.sol#629)
	GRAPETHPool.userRewardPerTokenPaid (contracts/Contract.sol#611) can be used in cross function reentrancies:
	- GRAPETHPool.earned(address) (contracts/Contract.sol#652-658)
	- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)
	- GRAPETHPool.userRewardPerTokenPaid (contracts/Contract.sol#611)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1

IRewardDistributionRecipient.setRewardDistribution(address) (contracts/Contract.sol#559-564) should emit an event for: 
	- rewardDistribution = _rewardDistribution (contracts/Contract.sol#563) 
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control

IRewardDistributionRecipient.setRewardDistribution(address)._rewardDistribution (contracts/Contract.sol#559) lacks a zero-check on :
		- rewardDistribution = _rewardDistribution (contracts/Contract.sol#563)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation

Reentrancy in GRAPETHPool.exit() (contracts/Contract.sol#673-676):
	External calls:
	- withdraw(balanceOf(msg.sender)) (contracts/Contract.sol#674)
		- weth.safeTransfer(msg.sender,amount) (contracts/Contract.sol#598)
		- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)
	- getReward() (contracts/Contract.sol#675)
		- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)
		- scalingFactor = GRAP(address(grap)).grapsScalingFactor() (contracts/Contract.sol#682)
		- grap.safeTransfer(msg.sender,trueReward) (contracts/Contract.sol#684)
	Event emitted after the call(s):
	- RewardPaid(msg.sender,trueReward) (contracts/Contract.sol#685)
		- getReward() (contracts/Contract.sol#675)
Reentrancy in GRAPETHPool.getReward() (contracts/Contract.sol#678-687):
	External calls:
	- scalingFactor = GRAP(address(grap)).grapsScalingFactor() (contracts/Contract.sol#682)
	- grap.safeTransfer(msg.sender,trueReward) (contracts/Contract.sol#684)
	Event emitted after the call(s):
	- RewardPaid(msg.sender,trueReward) (contracts/Contract.sol#685)
Reentrancy in GRAPETHPool.stake(uint256) (contracts/Contract.sol#661-665):
	External calls:
	- super.stake(amount) (contracts/Contract.sol#663)
		- weth.safeTransferFrom(msg.sender,address(this),amount) (contracts/Contract.sol#592)
		- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)
	Event emitted after the call(s):
	- Staked(msg.sender,amount) (contracts/Contract.sol#664)
Reentrancy in GRAPETHPool.withdraw(uint256) (contracts/Contract.sol#667-671):
	External calls:
	- super.withdraw(amount) (contracts/Contract.sol#669)
		- weth.safeTransfer(msg.sender,amount) (contracts/Contract.sol#598)
		- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)
	Event emitted after the call(s):
	- Withdrawn(msg.sender,amount) (contracts/Contract.sol#670)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3

GRAPETHPool.getReward() (contracts/Contract.sol#678-687) uses timestamp for comparisons
	Dangerous comparisons:
	- reward > 0 (contracts/Contract.sol#680)
GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713) uses timestamp for comparisons
	Dangerous comparisons:
	- block.timestamp > starttime (contracts/Contract.sol#694)
	- block.timestamp >= periodFinish (contracts/Contract.sol#695)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp

Address.isContract(address) (contracts/Contract.sol#425-438) uses assembly
	- INLINE ASM (contracts/Contract.sol#436-437)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage

2 different versions of Solidity are used:
	- Version constraint ^0.5.0 is used by:
		-^0.5.0 (contracts/Contract.sol#1)
		-^0.5.0 (contracts/Contract.sol#2)
		-^0.5.0 (contracts/Contract.sol#3)
		-^0.5.0 (contracts/Contract.sol#4)
		-^0.5.0 (contracts/Contract.sol#5)
		-^0.5.0 (contracts/Contract.sol#7)
		-^0.5.0 (contracts/Contract.sol#8)
		-^0.5.0 (contracts/Contract.sol#9)
	- Version constraint ^0.5.5 is used by:
		-^0.5.5 (contracts/Contract.sol#6)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used

Context._msgData() (contracts/Contract.sol#252-255) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code

Version constraint ^0.5.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- ABIEncoderV2StorageArrayWithMultiSlotElement
	- DynamicConstructorArgumentsClippedABIV2
	- UninitializedFunctionPointerInConstructor
	- IncorrectEventSignatureInLibraries
	- ABIEncoderV2PackedStorage.
It is used by:
	- ^0.5.0 (contracts/Contract.sol#1)
	- ^0.5.0 (contracts/Contract.sol#2)
	- ^0.5.0 (contracts/Contract.sol#3)
	- ^0.5.0 (contracts/Contract.sol#4)
	- ^0.5.0 (contracts/Contract.sol#5)
	- ^0.5.0 (contracts/Contract.sol#7)
	- ^0.5.0 (contracts/Contract.sol#8)
	- ^0.5.0 (contracts/Contract.sol#9)
Version constraint ^0.5.5 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- ABIEncoderV2StorageArrayWithMultiSlotElement
	- DynamicConstructorArgumentsClippedABIV2
	- UninitializedFunctionPointerInConstructor
	- IncorrectEventSignatureInLibraries
	- ABIEncoderV2PackedStorage
	- IncorrectByteInstructionOptimization
	- DoubleShiftSizeOverflow.
It is used by:
	- ^0.5.5 (contracts/Contract.sol#6)
solc-0.5.5 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#468-474):
	- (success,None) = recipient.call.value(amount)() (contracts/Contract.sol#472)
Low level call in SafeERC20.callOptionalReturn(IERC20,bytes) (contracts/Contract.sol#526-545):
	- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls

Parameter IRewardDistributionRecipient.setRewardDistribution(address)._rewardDistribution (contracts/Contract.sol#559) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions

Redundant expression "this (contracts/Contract.sol#253)" inContext (contracts/Contract.sol#242-256)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements

GRAPETHPool.grap (contracts/Contract.sol#603) should be constant 
GRAPETHPool.starttime (contracts/Contract.sol#606) should be constant 
LPTokenWrapper.weth (contracts/Contract.sol#576) should be constant 
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant
. analyzed (11 contracts with 100 detectors), 24 result(s) found
Metadata
{
    "solc": {
        "status": "ok",
        "use_rc": 0,
        "version": "0.5.5",
        "strategy": "solc-select",
        "solc_path": "/var/www/tripwire/.venv/bin/solc",
        "install_rc": 0,
        "use_stderr": null,
        "use_stdout": "Switched global version to 0.5.5",
        "install_stderr": null,
        "install_stdout": "Installing solc '0.5.5'...\nVersion '0.5.5' installed."
    },
    "solc_args": "--base-path /tmp/slither-7nja2kqw --allow-paths /tmp/slither-7nja2kqw,/tmp/slither-7nja2kqw/lib,/tmp/slither-7nja2kqw/src",
    "remappings": [],
    "source_files": [
        "contracts/Contract.sol"
    ],
    "contract_count": 0,
    "contract_names": [],
    "detector_count": 24,
    "workspace_hash": "a3c4c366517389f718bf3651997f91c2ae154c353437a19cfbfa04633f659a9f",
    "duration_seconds": 0.8481094837188721,
    "solc_version_requested": "0.5.17"
}

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
0
No findings?
yes
Summary
No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.
View stdout
{"no_findings":true,"summary":"No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.","findings":[]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-03e7fa8r
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb30c-e6e3-7773-813e-3cd1d154c217
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers

thinking
**Reading AUDIT_BUNDLE.txt file**
exec
/bin/bash -lc ls in /tmp/codex-03e7fa8r succeeded in 10ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-03e7fa8r succeeded in 5ms:
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
================================================================================
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.5;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;
pragma solidity ^0.5.0;


/*
   ____            __   __        __   _
  / __/__ __ ___  / /_ / /  ___  / /_ (_)__ __


thinking
**Analyzing reward pool reentrancy and accounting risks**

I’m carefully auditing the first-party reward distribution contracts, focusing on reentrancy and access control. I see safe external calls to fixed tokens like WETH reduce reentrancy risk, but the external call to the grap token’s scaling factor is a potential oracle manipulation vector and might be exploited if the token admin changes it arbitrarily. The missing check that rewardRate matches actual token balance in notifyRewardAmount could cause misconfigured reward distribution rates, leading to DoS scenarios though not direct exploits. Overall, the main concerns are external calls before transfers without reentrancy guards and relying on uncertified external scaling factors for reward calculation.
thinking
**Confirming absence of exploitable vulnerabilities**

I’m wrapping up the audit with no exploitable issues found in the main contracts; the reward and access controls follow expected patterns. I note residual trust assumptions remain on the rewardDistribution’s proper funding and the behavior of the GRAP and WETH tokens, but no clear vulnerabilities surfaced in the first-party code. I’ll summarize this with a concise JSON output reflecting no findings and a brief summary of residual risks.
codex
{"no_findings":true,"summary":"No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.","findings":[]}
tokens used
20,103
Metadata
{
    "codex": {
        "ran_at": "2026-01-12T16:33:40.747042+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.",
    "raw_final": {
        "summary": "No exploitable vulnerabilities identified in the first-party contracts; remaining risk is limited to trust assumptions around rewardDistribution funding and external GRAP/WETH token behavior.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
2
Total opcodes
2823
Flags
No heuristic flags raised.
View cast disassembly output
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 0x01ad
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x80faa57d
00000026: GT
00000027: PUSH2 0x00ee
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0xc8f33c91
00000031: GT
00000032: PUSH2 0x0097
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0xe9fad8ee
0000003c: GT
0000003d: PUSH2 0x0071
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xe9fad8ee
00000047: EQ
00000048: PUSH2 0x03c9
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xebe2b12b
00000052: EQ
00000053: PUSH2 0x03d1
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xf2fde38b
0000005d: EQ
0000005e: PUSH2 0x03d9
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0xfc965d52
00000068: EQ
00000069: PUSH2 0x040c
0000006c: JUMPI
0000006d: PUSH2 0x01ad
00000070: JUMP
00000071: JUMPDEST
00000072: DUP1
00000073: PUSH4 0xc8f33c91
00000078: EQ
00000079: PUSH2 0x03b1
0000007c: JUMPI
0000007d: DUP1
0000007e: PUSH4 0xcd3daf9d
00000083: EQ
00000084: PUSH2 0x03b9
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0xdf136d65
0000008e: EQ
0000008f: PUSH2 0x03c1
00000092: JUMPI
00000093: PUSH2 0x01ad
00000096: JUMP
00000097: JUMPDEST
00000098: DUP1
00000099: PUSH4 0x8da5cb5b
0000009e: GT
0000009f: PUSH2 0x00c8
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0x8da5cb5b
000000a9: EQ
000000aa: PUSH2 0x0370
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0x8f32d59b
000000b4: EQ
000000b5: PUSH2 0x0378
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0xa694fc3a
000000bf: EQ
000000c0: PUSH2 0x0394
000000c3: JUMPI
000000c4: PUSH2 0x01ad
000000c7: JUMP
000000c8: JUMPDEST
000000c9: DUP1
000000ca: PUSH4 0x80faa57d
000000cf: EQ
000000d0: PUSH2 0x032d
000000d3: JUMPI
000000d4: DUP1
000000d5: PUSH4 0x8b876347
000000da: EQ
000000db: PUSH2 0x0335
000000de: JUMPI
000000df: DUP1
000000e0: PUSH4 0x8da58897
000000e5: EQ
000000e6: PUSH2 0x0368
000000e9: JUMPI
000000ea: PUSH2 0x01ad
000000ed: JUMP
000000ee: JUMPDEST
000000ef: DUP1
000000f0: PUSH4 0x2e1a7d4d
000000f5: GT
000000f6: PUSH2 0x015b
000000f9: JUMPI
000000fa: DUP1
000000fb: PUSH4 0x3fc8cef3
00000100: GT
00000101: PUSH2 0x0135
00000104: JUMPI
00000105: DUP1
00000106: PUSH4 0x3fc8cef3
0000010b: EQ
0000010c: PUSH2 0x02e2
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0x70a08231
00000116: EQ
00000117: PUSH2 0x02ea
0000011a: JUMPI
0000011b: DUP1
0000011c: PUSH4 0x715018a6
00000121: EQ
00000122: PUSH2 0x031d
00000125: JUMPI
00000126: DUP1
00000127: PUSH4 0x7b0a47ee
0000012c: EQ
0000012d: PUSH2 0x0325
00000130: JUMPI
00000131: PUSH2 0x01ad
00000134: JUMP
00000135: JUMPDEST
00000136: DUP1
00000137: PUSH4 0x2e1a7d4d
0000013c: EQ
0000013d: PUSH2 0x02a0
00000140: JUMPI
00000141: DUP1
00000142: PUSH4 0x3c6b16ab
00000147: EQ
00000148: PUSH2 0x02bd
0000014b: JUMPI
0000014c: DUP1
0000014d: PUSH4 0x3d18b912
00000152: EQ
00000153: PUSH2 0x02da
00000156: JUMPI
00000157: PUSH2 0x01ad
0000015a: JUMP
0000015b: JUMPDEST
0000015c: DUP1
0000015d: PUSH4 0x101114cf
00000162: GT
00000163: PUSH2 0x018c
00000166: JUMPI
00000167: DUP1
00000168: PUSH4 0x101114cf
0000016d: EQ
0000016e: PUSH2 0x025f
00000171: JUMPI
00000172: DUP1
00000173: PUSH4 0x18160ddd
00000178: EQ
00000179: PUSH2 0x0290
0000017c: JUMPI
0000017d: DUP1
0000017e: PUSH4 0x1be05289
00000183: EQ
00000184: PUSH2 0x0298
00000187: JUMPI
00000188: PUSH2 0x01ad
0000018b: JUMP
0000018c: JUMPDEST
0000018d: DUP1
0000018e: PUSH3 0x8cc262
00000192: EQ
00000193: PUSH2 0x01b2
00000196: JUMPI
00000197: DUP1
00000198: PUSH4 0x0700037d
0000019d: EQ
0000019e: PUSH2 0x01f7
000001a1: JUMPI
000001a2: DUP1
000001a3: PUSH4 0x0d68b761
000001a8: EQ
000001a9: PUSH2 0x022a
000001ac: JUMPI
000001ad: JUMPDEST
000001ae: PUSH1 0x00
000001b0: DUP1
000001b1: REVERT
000001b2: JUMPDEST
000001b3: PUSH2 0x01e5
000001b6: PUSH1 0x04
000001b8: DUP1
000001b9: CALLDATASIZE
000001ba: SUB
000001bb: PUSH1 0x20
000001bd: DUP2
000001be: LT
000001bf: ISZERO
000001c0: PUSH2 0x01c8
000001c3: JUMPI
000001c4: PUSH1 0x00
000001c6: DUP1
000001c7: REVERT
000001c8: JUMPDEST
000001c9: POP
000001ca: CALLDATALOAD
000001cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001e0: AND
000001e1: PUSH2 0x0414
000001e4: JUMP
000001e5: JUMPDEST
000001e6: PUSH1 0x40
000001e8: DUP1
000001e9: MLOAD
000001ea: SWAP2
000001eb: DUP3
000001ec: MSTORE
000001ed: MLOAD
000001ee: SWAP1
000001ef: DUP2
000001f0: SWAP1
000001f1: SUB
000001f2: PUSH1 0x20
000001f4: ADD
000001f5: SWAP1
000001f6: RETURN
000001f7: JUMPDEST
000001f8: PUSH2 0x01e5
000001fb: PUSH1 0x04
000001fd: DUP1
000001fe: CALLDATASIZE
000001ff: SUB
00000200: PUSH1 0x20
00000202: DUP2
00000203: LT
00000204: ISZERO
00000205: PUSH2 0x020d
00000208: JUMPI
00000209: PUSH1 0x00
0000020b: DUP1
0000020c: REVERT
0000020d: JUMPDEST
0000020e: POP
0000020f: CALLDATALOAD
00000210: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000225: AND
00000226: PUSH2 0x04a7
00000229: JUMP
0000022a: JUMPDEST
0000022b: PUSH2 0x025d
0000022e: PUSH1 0x04
00000230: DUP1
00000231: CALLDATASIZE
00000232: SUB
00000233: PUSH1 0x20
00000235: DUP2
00000236: LT
00000237: ISZERO
00000238: PUSH2 0x0240
0000023b: JUMPI
0000023c: PUSH1 0x00
0000023e: DUP1
0000023f: REVERT
00000240: JUMPDEST
00000241: POP
00000242: CALLDATALOAD
00000243: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000258: AND
00000259: PUSH2 0x04b9
0000025c: JUMP
0000025d: JUMPDEST
0000025e: STOP
0000025f: JUMPDEST
00000260: PUSH2 0x0267
00000263: PUSH2 0x0573
00000266: JUMP
00000267: JUMPDEST
00000268: PUSH1 0x40
0000026a: DUP1
0000026b: MLOAD
0000026c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000281: SWAP1
00000282: SWAP3
00000283: AND
00000284: DUP3
00000285: MSTORE
00000286: MLOAD
00000287: SWAP1
00000288: DUP2
00000289: SWAP1
0000028a: SUB
0000028b: PUSH1 0x20
0000028d: ADD
0000028e: SWAP1
0000028f: RETURN
00000290: JUMPDEST
00000291: PUSH2 0x01e5
00000294: PUSH2 0x058f
00000297: JUMP
00000298: JUMPDEST
00000299: PUSH2 0x01e5
0000029c: PUSH2 0x0596
0000029f: JUMP
000002a0: JUMPDEST
000002a1: PUSH2 0x025d
000002a4: PUSH1 0x04
000002a6: DUP1
000002a7: CALLDATASIZE
000002a8: SUB
000002a9: PUSH1 0x20
000002ab: DUP2
000002ac: LT
000002ad: ISZERO
000002ae: PUSH2 0x02b6
000002b1: JUMPI
000002b2: PUSH1 0x00
000002b4: DUP1
000002b5: REVERT
000002b6: JUMPDEST
000002b7: POP
000002b8: CALLDATALOAD
000002b9: PUSH2 0x059d
000002bc: JUMP
000002bd: JUMPDEST
000002be: PUSH2 0x025d
000002c1: PUSH1 0x04
000002c3: DUP1
000002c4: CALLDATASIZE
000002c5: SUB
000002c6: PUSH1 0x20
000002c8: DUP2
000002c9: LT
000002ca: ISZERO
000002cb: PUSH2 0x02d3
000002ce: JUMPI
000002cf: PUSH1 0x00
000002d1: DUP1
000002d2: REVERT
000002d3: JUMPDEST
000002d4: POP
000002d5: CALLDATALOAD
000002d6: PUSH2 0x0735
000002d9: JUMP
000002da: JUMPDEST
000002db: PUSH2 0x025d
000002de: PUSH2 0x099c
000002e1: JUMP
000002e2: JUMPDEST
000002e3: PUSH2 0x0267
000002e6: PUSH2 0x0bc5
000002e9: JUMP
000002ea: JUMPDEST
000002eb: PUSH2 0x01e5
000002ee: PUSH1 0x04
000002f0: DUP1
000002f1: CALLDATASIZE
000002f2: SUB
000002f3: PUSH1 0x20
000002f5: DUP2
000002f6: LT
000002f7: ISZERO
000002f8: PUSH2 0x0300
000002fb: JUMPI
000002fc: PUSH1 0x00
000002fe: DUP1
000002ff: REVERT
00000300: JUMPDEST
00000301: POP
00000302: CALLDATALOAD
00000303: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000318: AND
00000319: PUSH2 0x0be1
0000031c: JUMP
0000031d: JUMPDEST
0000031e: PUSH2 0x025d
00000321: PUSH2 0x0c09
00000324: JUMP
00000325: JUMPDEST
00000326: PUSH2 0x01e5
00000329: PUSH2 0x0ceb
0000032c: JUMP
0000032d: JUMPDEST
0000032e: PUSH2 0x01e5
00000331: PUSH2 0x0cf1
00000334: JUMP
00000335: JUMPDEST
00000336: PUSH2 0x01e5
00000339: PUSH1 0x04
0000033b: DUP1
0000033c: CALLDATASIZE
0000033d: SUB
0000033e: PUSH1 0x20
00000340: DUP2
00000341: LT
00000342: ISZERO
00000343: PUSH2 0x034b
00000346: JUMPI
00000347: PUSH1 0x00
00000349: DUP1
0000034a: REVERT
0000034b: JUMPDEST
0000034c: POP
0000034d: CALLDATALOAD
0000034e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000363: AND
00000364: PUSH2 0x0d04
00000367: JUMP
00000368: JUMPDEST
00000369: PUSH2 0x01e5
0000036c: PUSH2 0x0d16
0000036f: JUMP
00000370: JUMPDEST
00000371: PUSH2 0x0267
00000374: PUSH2 0x0d1c
00000377: JUMP
00000378: JUMPDEST
00000379: PUSH2 0x0380
0000037c: PUSH2 0x0d38
0000037f: JUMP
00000380: JUMPDEST
00000381: PUSH1 0x40
00000383: DUP1
00000384: MLOAD
00000385: SWAP2
00000386: ISZERO
00000387: ISZERO
00000388: DUP3
00000389: MSTORE
0000038a: MLOAD
0000038b: SWAP1
0000038c: DUP2
0000038d: SWAP1
0000038e: SUB
0000038f: PUSH1 0x20
00000391: ADD
00000392: SWAP1
00000393: RETURN
00000394: JUMPDEST
00000395: PUSH2 0x025d
00000398: PUSH1 0x04
0000039a: DUP1
0000039b: CALLDATASIZE
0000039c: SUB
0000039d: PUSH1 0x20
0000039f: DUP2
000003a0: LT
000003a1: ISZERO
000003a2: PUSH2 0x03aa
000003a5: JUMPI
000003a6: PUSH1 0x00
000003a8: DUP1
000003a9: REVERT
000003aa: JUMPDEST
000003ab: POP
000003ac: CALLDATALOAD
000003ad: PUSH2 0x0d78
000003b0: JUMP
000003b1: JUMPDEST
000003b2: PUSH2 0x01e5
000003b5: PUSH2 0x0f10
000003b8: JUMP
000003b9: JUMPDEST
000003ba: PUSH2 0x01e5
000003bd: PUSH2 0x0f16
000003c0: JUMP
000003c1: JUMPDEST
000003c2: PUSH2 0x01e5
000003c5: PUSH2 0x0f6a
000003c8: JUMP
000003c9: JUMPDEST
000003ca: PUSH2 0x025d
000003cd: PUSH2 0x0f70
000003d0: JUMP
000003d1: JUMPDEST
000003d2: PUSH2 0x01e5
000003d5: PUSH2 0x0f8b
000003d8: JUMP
000003d9: JUMPDEST
000003da: PUSH2 0x025d
000003dd: PUSH1 0x04
000003df: DUP1
000003e0: CALLDATASIZE
000003e1: SUB
000003e2: PUSH1 0x20
000003e4: DUP2
000003e5: LT
000003e6: ISZERO
000003e7: PUSH2 0x03ef
000003ea: JUMPI
000003eb: PUSH1 0x00
000003ed: DUP1
000003ee: REVERT
000003ef: JUMPDEST
000003f0: POP
000003f1: CALLDATALOAD
000003f2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000407: AND
00000408: PUSH2 0x0f91
0000040b: JUMP
0000040c: JUMPDEST
0000040d: PUSH2 0x0267
00000410: PUSH2 0x1010
00000413: JUMP
00000414: JUMPDEST
00000415: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000042a: DUP2
0000042b: AND
0000042c: PUSH1 0x00
0000042e: SWAP1
0000042f: DUP2
00000430: MSTORE
00000431: PUSH1 0x0c
00000433: PUSH1 0x20
00000435: SWAP1
00000436: DUP2
00000437: MSTORE
00000438: PUSH1 0x40
0000043a: DUP1
0000043b: DUP4
0000043c: KECCAK256
0000043d: SLOAD
0000043e: PUSH1 0x0b
00000440: SWAP1
00000441: SWAP3
00000442: MSTORE
00000443: DUP3
00000444: KECCAK256
00000445: SLOAD
00000446: PUSH2 0x04a1
00000449: SWAP2
0000044a: SWAP1
0000044b: PUSH2 0x0495
0000044e: SWAP1
0000044f: PUSH8 0x0de0b6b3a7640000
00000458: SWAP1
00000459: PUSH2 0x0489
0000045c: SWAP1
0000045d: PUSH2 0x0474
00000460: SWAP1
00000461: PUSH2 0x0468
00000464: PUSH2 0x0f16
00000467: JUMP
00000468: JUMPDEST
00000469: SWAP1
0000046a: PUSH4 0xffffffff
0000046f: PUSH2 0x102c
00000472: AND
00000473: JUMP
00000474: JUMPDEST
00000475: PUSH2 0x047d
00000478: DUP9
00000479: PUSH2 0x0be1
0000047c: JUMP
0000047d: JUMPDEST
0000047e: SWAP1
0000047f: PUSH4 0xffffffff
00000484: PUSH2 0x1075
00000487: AND
00000488: JUMP
00000489: JUMPDEST
0000048a: SWAP1
0000048b: PUSH4 0xffffffff
00000490: PUSH2 0x10e8
00000493: AND
00000494: JUMP
00000495: JUMPDEST
00000496: SWAP1
00000497: PUSH4 0xffffffff
0000049c: PUSH2 0x112a
0000049f: AND
000004a0: JUMP
000004a1: JUMPDEST
000004a2: SWAP3
000004a3: SWAP2
000004a4: POP
000004a5: POP
000004a6: JUMP
000004a7: JUMPDEST
000004a8: PUSH1 0x0c
000004aa: PUSH1 0x20
000004ac: MSTORE
000004ad: PUSH1 0x00
000004af: SWAP1
000004b0: DUP2
000004b1: MSTORE
000004b2: PUSH1 0x40
000004b4: SWAP1
000004b5: KECCAK256
000004b6: SLOAD
000004b7: DUP2
000004b8: JUMP
000004b9: JUMPDEST
000004ba: PUSH2 0x04c1
000004bd: PUSH2 0x0d38
000004c0: JUMP
000004c1: JUMPDEST
000004c2: PUSH2 0x052c
000004c5: JUMPI
000004c6: PUSH1 0x40
000004c8: DUP1
000004c9: MLOAD
000004ca: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000004eb: DUP2
000004ec: MSTORE
000004ed: PUSH1 0x20
000004ef: PUSH1 0x04
000004f1: DUP3
000004f2: ADD
000004f3: DUP2
000004f4: SWAP1
000004f5: MSTORE
000004f6: PUSH1 0x24
000004f8: DUP3
000004f9: ADD
000004fa: MSTORE
000004fb: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
0000051c: PUSH1 0x44
0000051e: DUP3
0000051f: ADD
00000520: MSTORE
00000521: SWAP1
00000522: MLOAD
00000523: SWAP1
00000524: DUP2
00000525: SWAP1
00000526: SUB
00000527: PUSH1 0x64
00000529: ADD
0000052a: SWAP1
0000052b: REVERT
0000052c: JUMPDEST
0000052d: PUSH1 0x04
0000052f: DUP1
00000530: SLOAD
00000531: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000552: AND
00000553: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000568: SWAP3
00000569: SWAP1
0000056a: SWAP3
0000056b: AND
0000056c: SWAP2
0000056d: SWAP1
0000056e: SWAP2
0000056f: OR
00000570: SWAP1
00000571: SSTORE
00000572: JUMP
00000573: JUMPDEST
00000574: PUSH1 0x04
00000576: SLOAD
00000577: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000058c: AND
0000058d: DUP2
0000058e: JUMP
0000058f: JUMPDEST
00000590: PUSH1 0x01
00000592: SLOAD
00000593: JUMPDEST
00000594: SWAP1
00000595: JUMP
00000596: JUMPDEST
00000597: PUSH3 0x098968
0000059b: DUP2
0000059c: JUMP
0000059d: JUMPDEST
0000059e: CALLER
0000059f: PUSH2 0x05a6
000005a2: PUSH2 0x0f16
000005a5: JUMP
000005a6: JUMPDEST
000005a7: PUSH1 0x0a
000005a9: SSTORE
000005aa: PUSH2 0x05b1
000005ad: PUSH2 0x0cf1
000005b0: JUMP
000005b1: JUMPDEST
000005b2: PUSH1 0x09
000005b4: SSTORE
000005b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005ca: DUP2
000005cb: AND
000005cc: ISZERO
000005cd: PUSH2 0x0612
000005d0: JUMPI
000005d1: PUSH2 0x05d9
000005d4: DUP2
000005d5: PUSH2 0x0414
000005d8: JUMP
000005d9: JUMPDEST
000005da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005ef: DUP3
000005f0: AND
000005f1: PUSH1 0x00
000005f3: SWAP1
000005f4: DUP2
000005f5: MSTORE
000005f6: PUSH1 0x0c
000005f8: PUSH1 0x20
000005fa: SWAP1
000005fb: DUP2
000005fc: MSTORE
000005fd: PUSH1 0x40
000005ff: DUP1
00000600: DUP4
00000601: KECCAK256
00000602: SWAP4
00000603: SWAP1
00000604: SWAP4
00000605: SSTORE
00000606: PUSH1 0x0a
00000608: SLOAD
00000609: PUSH1 0x0b
0000060b: SWAP1
0000060c: SWAP2
0000060d: MSTORE
0000060e: SWAP2
0000060f: SWAP1
00000610: KECCAK256
00000611: SSTORE
00000612: JUMPDEST
00000613: PUSH1 0x06
00000615: SLOAD
00000616: TIMESTAMP
00000617: LT
00000618: ISZERO
00000619: PUSH2 0x0683
0000061c: JUMPI
0000061d: PUSH1 0x40
0000061f: DUP1
00000620: MLOAD
00000621: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000642: DUP2
00000643: MSTORE
00000644: PUSH1 0x20
00000646: PUSH1 0x04
00000648: DUP3
00000649: ADD
0000064a: MSTORE
0000064b: PUSH1 0x09
0000064d: PUSH1 0x24
0000064f: DUP3
00000650: ADD
00000651: MSTORE
00000652: PUSH32 0x6e6f742073746172740000000000000000000000000000000000000000000000
00000673: PUSH1 0x44
00000675: DUP3
00000676: ADD
00000677: MSTORE
00000678: SWAP1
00000679: MLOAD
0000067a: SWAP1
0000067b: DUP2
0000067c: SWAP1
0000067d: SUB
0000067e: PUSH1 0x64
00000680: ADD
00000681: SWAP1
00000682: REVERT
00000683: JUMPDEST
00000684: PUSH1 0x00
00000686: DUP3
00000687: GT
00000688: PUSH2 0x06f2
0000068b: JUMPI
0000068c: PUSH1 0x40
0000068e: DUP1
0000068f: MLOAD
00000690: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000006b1: DUP2
000006b2: MSTORE
000006b3: PUSH1 0x20
000006b5: PUSH1 0x04
000006b7: DUP3
000006b8: ADD
000006b9: MSTORE
000006ba: PUSH1 0x11
000006bc: PUSH1 0x24
000006be: DUP3
000006bf: ADD
000006c0: MSTORE
000006c1: PUSH32 0x43616e6e6f742077697468647261772030000000000000000000000000000000
000006e2: PUSH1 0x44
000006e4: DUP3
000006e5: ADD
000006e6: MSTORE
000006e7: SWAP1
000006e8: MLOAD
000006e9: SWAP1
000006ea: DUP2
000006eb: SWAP1
000006ec: SUB
000006ed: PUSH1 0x64
000006ef: ADD
000006f0: SWAP1
000006f1: REVERT
000006f2: JUMPDEST
000006f3: PUSH2 0x06fb
000006f6: DUP3
000006f7: PUSH2 0x119e
000006fa: JUMP
000006fb: JUMPDEST
000006fc: PUSH1 0x40
000006fe: DUP1
000006ff: MLOAD
00000700: DUP4
00000701: DUP2
00000702: MSTORE
00000703: SWAP1
00000704: MLOAD
00000705: CALLER
00000706: SWAP2
00000707: PUSH32 0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5
00000728: SWAP2
00000729: SWAP1
0000072a: DUP2
0000072b: SWAP1
0000072c: SUB
0000072d: PUSH1 0x20
0000072f: ADD
00000730: SWAP1
00000731: LOG2
00000732: POP
00000733: POP
00000734: JUMP
00000735: JUMPDEST
00000736: PUSH1 0x04
00000738: SLOAD
00000739: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000074e: AND
0000074f: PUSH2 0x0756
00000752: PUSH2 0x120c
00000755: JUMP
00000756: JUMPDEST
00000757: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000076c: AND
0000076d: EQ
0000076e: PUSH2 0x07c2
00000771: JUMPI
00000772: PUSH1 0x40
00000774: MLOAD
00000775: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000796: DUP2
00000797: MSTORE
00000798: PUSH1 0x04
0000079a: ADD
0000079b: DUP1
0000079c: DUP1
0000079d: PUSH1 0x20
0000079f: ADD
000007a0: DUP3
000007a1: DUP2
000007a2: SUB
000007a3: DUP3
000007a4: MSTORE
000007a5: PUSH1 0x21
000007a7: DUP2
000007a8: MSTORE
000007a9: PUSH1 0x20
000007ab: ADD
000007ac: DUP1
000007ad: PUSH2 0x18a8
000007b0: PUSH1 0x21
000007b2: SWAP2
000007b3: CODECOPY
000007b4: PUSH1 0x40
000007b6: ADD
000007b7: SWAP2
000007b8: POP
000007b9: POP
000007ba: PUSH1 0x40
000007bc: MLOAD
000007bd: DUP1
000007be: SWAP2
000007bf: SUB
000007c0: SWAP1
000007c1: REVERT
000007c2: JUMPDEST
000007c3: PUSH1 0x00
000007c5: PUSH2 0x07cc
000007c8: PUSH2 0x0f16
000007cb: JUMP
000007cc: JUMPDEST
000007cd: PUSH1 0x0a
000007cf: SSTORE
000007d0: PUSH2 0x07d7
000007d3: PUSH2 0x0cf1
000007d6: JUMP
000007d7: JUMPDEST
000007d8: PUSH1 0x09
000007da: SSTORE
000007db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007f0: DUP2
000007f1: AND
000007f2: ISZERO
000007f3: PUSH2 0x0838
000007f6: JUMPI
000007f7: PUSH2 0x07ff
000007fa: DUP2
000007fb: PUSH2 0x0414
000007fe: JUMP
000007ff: JUMPDEST
00000800: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000815: DUP3
00000816: AND
00000817: PUSH1 0x00
00000819: SWAP1
0000081a: DUP2
0000081b: MSTORE
0000081c: PUSH1 0x0c
0000081e: PUSH1 0x20
00000820: SWAP1
00000821: DUP2
00000822: MSTORE
00000823: PUSH1 0x40
00000825: DUP1
00000826: DUP4
00000827: KECCAK256
00000828: SWAP4
00000829: SWAP1
0000082a: SWAP4
0000082b: SSTORE
0000082c: PUSH1 0x0a
0000082e: SLOAD
0000082f: PUSH1 0x0b
00000831: SWAP1
00000832: SWAP2
00000833: MSTORE
00000834: SWAP2
00000835: SWAP1
00000836: KECCAK256
00000837: SSTORE
00000838: JUMPDEST
00000839: PUSH1 0x06
0000083b: SLOAD
0000083c: TIMESTAMP
0000083d: GT
0000083e: ISZERO
0000083f: PUSH2 0x0908
00000842: JUMPI
00000843: PUSH1 0x07
00000845: SLOAD
00000846: TIMESTAMP
00000847: LT
00000848: PUSH2 0x0866
0000084b: JUMPI
0000084c: PUSH2 0x085e
0000084f: DUP3
00000850: PUSH3 0x098968
00000854: PUSH4 0xffffffff
00000859: PUSH2 0x10e8
0000085c: AND
0000085d: JUMP
0000085e: JUMPDEST
0000085f: PUSH1 0x08
00000861: SSTORE
00000862: PUSH2 0x08b4
00000865: JUMP
00000866: JUMPDEST
00000867: PUSH1 0x07
00000869: SLOAD
0000086a: PUSH1 0x00
0000086c: SWAP1
0000086d: PUSH2 0x087c
00000870: SWAP1
00000871: TIMESTAMP
00000872: PUSH4 0xffffffff
00000877: PUSH2 0x102c
0000087a: AND
0000087b: JUMP
0000087c: JUMPDEST
0000087d: SWAP1
0000087e: POP
0000087f: PUSH1 0x00
00000881: PUSH2 0x0895
00000884: PUSH1 0x08
00000886: SLOAD
00000887: DUP4
00000888: PUSH2 0x1075
0000088b: SWAP1
0000088c: SWAP2
0000088d: SWAP1
0000088e: PUSH4 0xffffffff
00000893: AND
00000894: JUMP
00000895: JUMPDEST
00000896: SWAP1
00000897: POP
00000898: PUSH2 0x08ae
0000089b: PUSH3 0x098968
0000089f: PUSH2 0x0489
000008a2: DUP7
000008a3: DUP5
000008a4: PUSH4 0xffffffff
000008a9: PUSH2 0x112a
000008ac: AND
000008ad: JUMP
000008ae: JUMPDEST
000008af: PUSH1 0x08
000008b1: SSTORE
000008b2: POP
000008b3: POP
000008b4: JUMPDEST
000008b5: TIMESTAMP
000008b6: PUSH1 0x09
000008b8: DUP2
000008b9: SWAP1
000008ba: SSTORE
000008bb: PUSH2 0x08cd
000008be: SWAP1
000008bf: PUSH3 0x098968
000008c3: PUSH4 0xffffffff
000008c8: PUSH2 0x112a
000008cb: AND
000008cc: JUMP
000008cd: JUMPDEST
000008ce: PUSH1 0x07
000008d0: SSTORE
000008d1: PUSH1 0x40
000008d3: DUP1
000008d4: MLOAD
000008d5: DUP4
000008d6: DUP2
000008d7: MSTORE
000008d8: SWAP1
000008d9: MLOAD
000008da: PUSH32 0xde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d
000008fb: SWAP2
000008fc: DUP2
000008fd: SWAP1
000008fe: SUB
000008ff: PUSH1 0x20
00000901: ADD
00000902: SWAP1
00000903: LOG1
00000904: PUSH2 0x0970
00000907: JUMP
00000908: JUMPDEST
00000909: PUSH2 0x091b
0000090c: DUP3
0000090d: PUSH3 0x098968
00000911: PUSH4 0xffffffff
00000916: PUSH2 0x10e8
00000919: AND
0000091a: JUMP
0000091b: JUMPDEST
0000091c: PUSH1 0x08
0000091e: SSTORE
0000091f: PUSH1 0x06
00000921: SLOAD
00000922: PUSH1 0x09
00000924: DUP2
00000925: SWAP1
00000926: SSTORE
00000927: PUSH2 0x0939
0000092a: SWAP1
0000092b: PUSH3 0x098968
0000092f: PUSH4 0xffffffff
00000934: PUSH2 0x112a
00000937: AND
00000938: JUMP
00000939: JUMPDEST
0000093a: PUSH1 0x07
0000093c: SSTORE
0000093d: PUSH1 0x40
0000093f: DUP1
00000940: MLOAD
00000941: DUP4
00000942: DUP2
00000943: MSTORE
00000944: SWAP1
00000945: MLOAD
00000946: PUSH32 0xde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d
00000967: SWAP2
00000968: DUP2
00000969: SWAP1
0000096a: SUB
0000096b: PUSH1 0x20
0000096d: ADD
0000096e: SWAP1
0000096f: LOG1
00000970: JUMPDEST
00000971: PUSH1 0x00
00000973: PUSH2 0x0996
00000976: PUSH8 0x0de0b6b3a7640000
0000097f: PUSH2 0x047d
00000982: PUSH1 0x08
00000984: SLOAD
00000985: PUSH3 0x098968
00000989: PUSH2 0x1075
0000098c: SWAP1
0000098d: SWAP2
0000098e: SWAP1
0000098f: PUSH4 0xffffffff
00000994: AND
00000995: JUMP
00000996: JUMPDEST
00000997: POP
00000998: POP
00000999: POP
0000099a: POP
0000099b: JUMP
0000099c: JUMPDEST
0000099d: CALLER
0000099e: PUSH2 0x09a5
000009a1: PUSH2 0x0f16
000009a4: JUMP
000009a5: JUMPDEST
000009a6: PUSH1 0x0a
000009a8: SSTORE
000009a9: PUSH2 0x09b0
000009ac: PUSH2 0x0cf1
000009af: JUMP
000009b0: JUMPDEST
000009b1: PUSH1 0x09
000009b3: SSTORE
000009b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009c9: DUP2
000009ca: AND
000009cb: ISZERO
000009cc: PUSH2 0x0a11
000009cf: JUMPI
000009d0: PUSH2 0x09d8
000009d3: DUP2
000009d4: PUSH2 0x0414
000009d7: JUMP
000009d8: JUMPDEST
000009d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009ee: DUP3
000009ef: AND
000009f0: PUSH1 0x00
000009f2: SWAP1
000009f3: DUP2
000009f4: MSTORE
000009f5: PUSH1 0x0c
000009f7: PUSH1 0x20
000009f9: SWAP1
000009fa: DUP2
000009fb: MSTORE
000009fc: PUSH1 0x40
000009fe: DUP1
000009ff: DUP4
00000a00: KECCAK256
00000a01: SWAP4
00000a02: SWAP1
00000a03: SWAP4
00000a04: SSTORE
00000a05: PUSH1 0x0a
00000a07: SLOAD
00000a08: PUSH1 0x0b
00000a0a: SWAP1
00000a0b: SWAP2
00000a0c: MSTORE
00000a0d: SWAP2
00000a0e: SWAP1
00000a0f: KECCAK256
00000a10: SSTORE
00000a11: JUMPDEST
00000a12: PUSH1 0x06
00000a14: SLOAD
00000a15: TIMESTAMP
00000a16: LT
00000a17: ISZERO
00000a18: PUSH2 0x0a82
00000a1b: JUMPI
00000a1c: PUSH1 0x40
00000a1e: DUP1
00000a1f: MLOAD
00000a20: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000a41: DUP2
00000a42: MSTORE
00000a43: PUSH1 0x20
00000a45: PUSH1 0x04
00000a47: DUP3
00000a48: ADD
00000a49: MSTORE
00000a4a: PUSH1 0x09
00000a4c: PUSH1 0x24
00000a4e: DUP3
00000a4f: ADD
00000a50: MSTORE
00000a51: PUSH32 0x6e6f742073746172740000000000000000000000000000000000000000000000
00000a72: PUSH1 0x44
00000a74: DUP3
00000a75: ADD
00000a76: MSTORE
00000a77: SWAP1
00000a78: MLOAD
00000a79: SWAP1
00000a7a: DUP2
00000a7b: SWAP1
00000a7c: SUB
00000a7d: PUSH1 0x64
00000a7f: ADD
00000a80: SWAP1
00000a81: REVERT
00000a82: JUMPDEST
00000a83: PUSH1 0x00
00000a85: PUSH2 0x0a8d
00000a88: CALLER
00000a89: PUSH2 0x0414
00000a8c: JUMP
00000a8d: JUMPDEST
00000a8e: SWAP1
00000a8f: POP
00000a90: DUP1
00000a91: ISZERO
00000a92: PUSH2 0x0bc1
00000a95: JUMPI
00000a96: CALLER
00000a97: PUSH1 0x00
00000a99: SWAP1
00000a9a: DUP2
00000a9b: MSTORE
00000a9c: PUSH1 0x0c
00000a9e: PUSH1 0x20
00000aa0: SWAP1
00000aa1: DUP2
00000aa2: MSTORE
00000aa3: PUSH1 0x40
00000aa5: DUP1
00000aa6: DUP4
00000aa7: KECCAK256
00000aa8: DUP4
00000aa9: SWAP1
00000aaa: SSTORE
00000aab: PUSH1 0x05
00000aad: SLOAD
00000aae: DUP2
00000aaf: MLOAD
00000ab0: PUSH32 0x8e0d8b7b00000000000000000000000000000000000000000000000000000000
00000ad1: DUP2
00000ad2: MSTORE
00000ad3: SWAP2
00000ad4: MLOAD
00000ad5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aea: SWAP1
00000aeb: SWAP2
00000aec: AND
00000aed: SWAP3
00000aee: PUSH4 0x8e0d8b7b
00000af3: SWAP3
00000af4: PUSH1 0x04
00000af6: DUP1
00000af7: DUP3
00000af8: ADD
00000af9: SWAP4
00000afa: SWAP2
00000afb: DUP3
00000afc: SWAP1
00000afd: SUB
00000afe: ADD
00000aff: DUP2
00000b00: DUP8
00000b01: DUP8
00000b02: DUP1
00000b03: EXTCODESIZE
00000b04: ISZERO
00000b05: DUP1
00000b06: ISZERO
00000b07: PUSH2 0x0b0f
00000b0a: JUMPI
00000b0b: PUSH1 0x00
00000b0d: DUP1
00000b0e: REVERT
00000b0f: JUMPDEST
00000b10: POP
00000b11: GAS
00000b12: CALL
00000b13: ISZERO
00000b14: DUP1
00000b15: ISZERO
00000b16: PUSH2 0x0b23
00000b19: JUMPI
00000b1a: RETURNDATASIZE
00000b1b: PUSH1 0x00
00000b1d: DUP1
00000b1e: RETURNDATACOPY
00000b1f: RETURNDATASIZE
00000b20: PUSH1 0x00
00000b22: REVERT
00000b23: JUMPDEST
00000b24: POP
00000b25: POP
00000b26: POP
00000b27: POP
00000b28: PUSH1 0x40
00000b2a: MLOAD
00000b2b: RETURNDATASIZE
00000b2c: PUSH1 0x20
00000b2e: DUP2
00000b2f: LT
00000b30: ISZERO
00000b31: PUSH2 0x0b39
00000b34: JUMPI
00000b35: PUSH1 0x00
00000b37: DUP1
00000b38: REVERT
00000b39: JUMPDEST
00000b3a: POP
00000b3b: MLOAD
00000b3c: SWAP1
00000b3d: POP
00000b3e: PUSH1 0x00
00000b40: PUSH2 0x0b5b
00000b43: PUSH8 0x0de0b6b3a7640000
00000b4c: PUSH2 0x0489
00000b4f: DUP6
00000b50: DUP6
00000b51: PUSH4 0xffffffff
00000b56: PUSH2 0x1075
00000b59: AND
00000b5a: JUMP
00000b5b: JUMPDEST
00000b5c: PUSH1 0x05
00000b5e: SLOAD
00000b5f: SWAP1
00000b60: SWAP2
00000b61: POP
00000b62: PUSH2 0x0b88
00000b65: SWAP1
00000b66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b7b: AND
00000b7c: CALLER
00000b7d: DUP4
00000b7e: PUSH4 0xffffffff
00000b83: PUSH2 0x1210
00000b86: AND
00000b87: JUMP
00000b88: JUMPDEST
00000b89: PUSH1 0x40
00000b8b: DUP1
00000b8c: MLOAD
00000b8d: DUP3
00000b8e: DUP2
00000b8f: MSTORE
00000b90: SWAP1
00000b91: MLOAD
00000b92: CALLER
00000b93: SWAP2
00000b94: PUSH32 0xe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486
00000bb5: SWAP2
00000bb6: SWAP1
00000bb7: DUP2
00000bb8: SWAP1
00000bb9: SUB
00000bba: PUSH1 0x20
00000bbc: ADD
00000bbd: SWAP1
00000bbe: LOG2
00000bbf: POP
00000bc0: POP
00000bc1: JUMPDEST
00000bc2: POP
00000bc3: POP
00000bc4: JUMP
00000bc5: JUMPDEST
00000bc6: PUSH1 0x00
00000bc8: SLOAD
00000bc9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bde: AND
00000bdf: DUP2
00000be0: JUMP
00000be1: JUMPDEST
00000be2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bf7: AND
00000bf8: PUSH1 0x00
00000bfa: SWAP1
00000bfb: DUP2
00000bfc: MSTORE
00000bfd: PUSH1 0x02
00000bff: PUSH1 0x20
00000c01: MSTORE
00000c02: PUSH1 0x40
00000c04: SWAP1
00000c05: KECCAK256
00000c06: SLOAD
00000c07: SWAP1
00000c08: JUMP
00000c09: JUMPDEST
00000c0a: PUSH2 0x0c11
00000c0d: PUSH2 0x0d38
00000c10: JUMP
00000c11: JUMPDEST
00000c12: PUSH2 0x0c7c
00000c15: JUMPI
00000c16: PUSH1 0x40
00000c18: DUP1
00000c19: MLOAD
00000c1a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000c3b: DUP2
00000c3c: MSTORE
00000c3d: PUSH1 0x20
00000c3f: PUSH1 0x04
00000c41: DUP3
00000c42: ADD
00000c43: DUP2
00000c44: SWAP1
00000c45: MSTORE
00000c46: PUSH1 0x24
00000c48: DUP3
00000c49: ADD
00000c4a: MSTORE
00000c4b: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00000c6c: PUSH1 0x44
00000c6e: DUP3
00000c6f: ADD
00000c70: MSTORE
00000c71: SWAP1
00000c72: MLOAD
00000c73: SWAP1
00000c74: DUP2
00000c75: SWAP1
00000c76: SUB
00000c77: PUSH1 0x64
00000c79: ADD
00000c7a: SWAP1
00000c7b: REVERT
00000c7c: JUMPDEST
00000c7d: PUSH1 0x03
00000c7f: SLOAD
00000c80: PUSH1 0x40
00000c82: MLOAD
00000c83: PUSH1 0x00
00000c85: SWAP2
00000c86: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c9b: AND
00000c9c: SWAP1
00000c9d: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000cbe: SWAP1
00000cbf: DUP4
00000cc0: SWAP1
00000cc1: LOG3
00000cc2: PUSH1 0x03
00000cc4: DUP1
00000cc5: SLOAD
00000cc6: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000ce7: AND
00000ce8: SWAP1
00000ce9: SSTORE
00000cea: JUMP
00000ceb: JUMPDEST
00000cec: PUSH1 0x08
00000cee: SLOAD
00000cef: DUP2
00000cf0: JUMP
00000cf1: JUMPDEST
00000cf2: PUSH1 0x00
00000cf4: PUSH2 0x0cff
00000cf7: TIMESTAMP
00000cf8: PUSH1 0x07
00000cfa: SLOAD
00000cfb: PUSH2 0x12a2
00000cfe: JUMP
00000cff: JUMPDEST
00000d00: SWAP1
00000d01: POP
00000d02: SWAP1
00000d03: JUMP
00000d04: JUMPDEST
00000d05: PUSH1 0x0b
00000d07: PUSH1 0x20
00000d09: MSTORE
00000d0a: PUSH1 0x00
00000d0c: SWAP1
00000d0d: DUP2
00000d0e: MSTORE
00000d0f: PUSH1 0x40
00000d11: SWAP1
00000d12: KECCAK256
00000d13: SLOAD
00000d14: DUP2
00000d15: JUMP
00000d16: JUMPDEST
00000d17: PUSH1 0x06
00000d19: SLOAD
00000d1a: DUP2
00000d1b: JUMP
00000d1c: JUMPDEST
00000d1d: PUSH1 0x03
00000d1f: SLOAD
00000d20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d35: AND
00000d36: SWAP1
00000d37: JUMP
00000d38: JUMPDEST
00000d39: PUSH1 0x03
00000d3b: SLOAD
00000d3c: PUSH1 0x00
00000d3e: SWAP1
00000d3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d54: AND
00000d55: PUSH2 0x0d5c
00000d58: PUSH2 0x120c
00000d5b: JUMP
00000d5c: JUMPDEST
00000d5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d72: AND
00000d73: EQ
00000d74: SWAP1
00000d75: POP
00000d76: SWAP1
00000d77: JUMP
00000d78: JUMPDEST
00000d79: CALLER
00000d7a: PUSH2 0x0d81
00000d7d: PUSH2 0x0f16
00000d80: JUMP
00000d81: JUMPDEST
00000d82: PUSH1 0x0a
00000d84: SSTORE
00000d85: PUSH2 0x0d8c
00000d88: PUSH2 0x0cf1
00000d8b: JUMP
00000d8c: JUMPDEST
00000d8d: PUSH1 0x09
00000d8f: SSTORE
00000d90: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000da5: DUP2
00000da6: AND
00000da7: ISZERO
00000da8: PUSH2 0x0ded
00000dab: JUMPI
00000dac: PUSH2 0x0db4
00000daf: DUP2
00000db0: PUSH2 0x0414
00000db3: JUMP
00000db4: JUMPDEST
00000db5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dca: DUP3
00000dcb: AND
00000dcc: PUSH1 0x00
00000dce: SWAP1
00000dcf: DUP2
00000dd0: MSTORE
00000dd1: PUSH1 0x0c
00000dd3: PUSH1 0x20
00000dd5: SWAP1
00000dd6: DUP2
00000dd7: MSTORE
00000dd8: PUSH1 0x40
00000dda: DUP1
00000ddb: DUP4
00000ddc: KECCAK256
00000ddd: SWAP4
00000dde: SWAP1
00000ddf: SWAP4
00000de0: SSTORE
00000de1: PUSH1 0x0a
00000de3: SLOAD
00000de4: PUSH1 0x0b
00000de6: SWAP1
00000de7: SWAP2
00000de8: MSTORE
00000de9: SWAP2
00000dea: SWAP1
00000deb: KECCAK256
00000dec: SSTORE
00000ded: JUMPDEST
00000dee: PUSH1 0x06
00000df0: SLOAD
00000df1: TIMESTAMP
00000df2: LT
00000df3: ISZERO
00000df4: PUSH2 0x0e5e
00000df7: JUMPI
00000df8: PUSH1 0x40
00000dfa: DUP1
00000dfb: MLOAD
00000dfc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000e1d: DUP2
00000e1e: MSTORE
00000e1f: PUSH1 0x20
00000e21: PUSH1 0x04
00000e23: DUP3
00000e24: ADD
00000e25: MSTORE
00000e26: PUSH1 0x09
00000e28: PUSH1 0x24
00000e2a: DUP3
00000e2b: ADD
00000e2c: MSTORE
00000e2d: PUSH32 0x6e6f742073746172740000000000000000000000000000000000000000000000
00000e4e: PUSH1 0x44
00000e50: DUP3
00000e51: ADD
00000e52: MSTORE
00000e53: SWAP1
00000e54: MLOAD
00000e55: SWAP1
00000e56: DUP2
00000e57: SWAP1
00000e58: SUB
00000e59: PUSH1 0x64
00000e5b: ADD
00000e5c: SWAP1
00000e5d: REVERT
00000e5e: JUMPDEST
00000e5f: PUSH1 0x00
00000e61: DUP3
00000e62: GT
00000e63: PUSH2 0x0ecd
00000e66: JUMPI
00000e67: PUSH1 0x40
00000e69: DUP1
00000e6a: MLOAD
00000e6b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000e8c: DUP2
00000e8d: MSTORE
00000e8e: PUSH1 0x20
00000e90: PUSH1 0x04
00000e92: DUP3
00000e93: ADD
00000e94: MSTORE
00000e95: PUSH1 0x0e
00000e97: PUSH1 0x24
00000e99: DUP3
00000e9a: ADD
00000e9b: MSTORE
00000e9c: PUSH32 0x43616e6e6f74207374616b652030000000000000000000000000000000000000
00000ebd: PUSH1 0x44
00000ebf: DUP3
00000ec0: ADD
00000ec1: MSTORE
00000ec2: SWAP1
00000ec3: MLOAD
00000ec4: SWAP1
00000ec5: DUP2
00000ec6: SWAP1
00000ec7: SUB
00000ec8: PUSH1 0x64
00000eca: ADD
00000ecb: SWAP1
00000ecc: REVERT
00000ecd: JUMPDEST
00000ece: PUSH2 0x0ed6
00000ed1: DUP3
00000ed2: PUSH2 0x12b8
00000ed5: JUMP
00000ed6: JUMPDEST
00000ed7: PUSH1 0x40
00000ed9: DUP1
00000eda: MLOAD
00000edb: DUP4
00000edc: DUP2
00000edd: MSTORE
00000ede: SWAP1
00000edf: MLOAD
00000ee0: CALLER
00000ee1: SWAP2
00000ee2: PUSH32 0x9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d
00000f03: SWAP2
00000f04: SWAP1
00000f05: DUP2
00000f06: SWAP1
00000f07: SUB
00000f08: PUSH1 0x20
00000f0a: ADD
00000f0b: SWAP1
00000f0c: LOG2
00000f0d: POP
00000f0e: POP
00000f0f: JUMP
00000f10: JUMPDEST
00000f11: PUSH1 0x09
00000f13: SLOAD
00000f14: DUP2
00000f15: JUMP
00000f16: JUMPDEST
00000f17: PUSH1 0x00
00000f19: PUSH2 0x0f20
00000f1c: PUSH2 0x058f
00000f1f: JUMP
00000f20: JUMPDEST
00000f21: PUSH2 0x0f2d
00000f24: JUMPI
00000f25: POP
00000f26: PUSH1 0x0a
00000f28: SLOAD
00000f29: PUSH2 0x0593
00000f2c: JUMP
00000f2d: JUMPDEST
00000f2e: PUSH2 0x0cff
00000f31: PUSH2 0x0f5b
00000f34: PUSH2 0x0f3b
00000f37: PUSH2 0x058f
00000f3a: JUMP
00000f3b: JUMPDEST
00000f3c: PUSH2 0x0489
00000f3f: PUSH8 0x0de0b6b3a7640000
00000f48: PUSH2 0x047d
00000f4b: PUSH1 0x08
00000f4d: SLOAD
00000f4e: PUSH2 0x047d
00000f51: PUSH1 0x09
00000f53: SLOAD
00000f54: PUSH2 0x0468
00000f57: PUSH2 0x0cf1
00000f5a: JUMP
00000f5b: JUMPDEST
00000f5c: PUSH1 0x0a
00000f5e: SLOAD
00000f5f: SWAP1
00000f60: PUSH4 0xffffffff
00000f65: PUSH2 0x112a
00000f68: AND
00000f69: JUMP
00000f6a: JUMPDEST
00000f6b: PUSH1 0x0a
00000f6d: SLOAD
00000f6e: DUP2
00000f6f: JUMP
00000f70: JUMPDEST
00000f71: PUSH2 0x0f81
00000f74: PUSH2 0x0f7c
00000f77: CALLER
00000f78: PUSH2 0x0be1
00000f7b: JUMP
00000f7c: JUMPDEST
00000f7d: PUSH2 0x059d
00000f80: JUMP
00000f81: JUMPDEST
00000f82: PUSH2 0x0f89
00000f85: PUSH2 0x099c
00000f88: JUMP
00000f89: JUMPDEST
00000f8a: JUMP
00000f8b: JUMPDEST
00000f8c: PUSH1 0x07
00000f8e: SLOAD
00000f8f: DUP2
00000f90: JUMP
00000f91: JUMPDEST
00000f92: PUSH2 0x0f99
00000f95: PUSH2 0x0d38
00000f98: JUMP
00000f99: JUMPDEST
00000f9a: PUSH2 0x1004
00000f9d: JUMPI
00000f9e: PUSH1 0x40
00000fa0: DUP1
00000fa1: MLOAD
00000fa2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000fc3: DUP2
00000fc4: MSTORE
00000fc5: PUSH1 0x20
00000fc7: PUSH1 0x04
00000fc9: DUP3
00000fca: ADD
00000fcb: DUP2
00000fcc: SWAP1
00000fcd: MSTORE
00000fce: PUSH1 0x24
00000fd0: DUP3
00000fd1: ADD
00000fd2: MSTORE
00000fd3: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00000ff4: PUSH1 0x44
00000ff6: DUP3
00000ff7: ADD
00000ff8: MSTORE
00000ff9: SWAP1
00000ffa: MLOAD
00000ffb: SWAP1
00000ffc: DUP2
00000ffd: SWAP1
00000ffe: SUB
00000fff: PUSH1 0x64
00001001: ADD
00001002: SWAP1
00001003: REVERT
00001004: JUMPDEST
00001005: PUSH2 0x100d
00001008: DUP2
00001009: PUSH2 0x1327
0000100c: JUMP
0000100d: JUMPDEST
0000100e: POP
0000100f: JUMP
00001010: JUMPDEST
00001011: PUSH1 0x05
00001013: SLOAD
00001014: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001029: AND
0000102a: DUP2
0000102b: JUMP
0000102c: JUMPDEST
0000102d: PUSH1 0x00
0000102f: PUSH2 0x106e
00001032: DUP4
00001033: DUP4
00001034: PUSH1 0x40
00001036: MLOAD
00001037: DUP1
00001038: PUSH1 0x40
0000103a: ADD
0000103b: PUSH1 0x40
0000103d: MSTORE
0000103e: DUP1
0000103f: PUSH1 0x1e
00001041: DUP2
00001042: MSTORE
00001043: PUSH1 0x20
00001045: ADD
00001046: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
00001067: DUP2
00001068: MSTORE
00001069: POP
0000106a: PUSH2 0x1421
0000106d: JUMP
0000106e: JUMPDEST
0000106f: SWAP4
00001070: SWAP3
00001071: POP
00001072: POP
00001073: POP
00001074: JUMP
00001075: JUMPDEST
00001076: PUSH1 0x00
00001078: DUP3
00001079: PUSH2 0x1084
0000107c: JUMPI
0000107d: POP
0000107e: PUSH1 0x00
00001080: PUSH2 0x04a1
00001083: JUMP
00001084: JUMPDEST
00001085: DUP3
00001086: DUP3
00001087: MUL
00001088: DUP3
00001089: DUP5
0000108a: DUP3
0000108b: DUP2
0000108c: PUSH2 0x1091
0000108f: JUMPI
00001090: INVALID
00001091: JUMPDEST
00001092: DIV
00001093: EQ
00001094: PUSH2 0x106e
00001097: JUMPI
00001098: PUSH1 0x40
0000109a: MLOAD
0000109b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000010bc: DUP2
000010bd: MSTORE
000010be: PUSH1 0x04
000010c0: ADD
000010c1: DUP1
000010c2: DUP1
000010c3: PUSH1 0x20
000010c5: ADD
000010c6: DUP3
000010c7: DUP2
000010c8: SUB
000010c9: DUP3
000010ca: MSTORE
000010cb: PUSH1 0x21
000010cd: DUP2
000010ce: MSTORE
000010cf: PUSH1 0x20
000010d1: ADD
000010d2: DUP1
000010d3: PUSH2 0x1887
000010d6: PUSH1 0x21
000010d8: SWAP2
000010d9: CODECOPY
000010da: PUSH1 0x40
000010dc: ADD
000010dd: SWAP2
000010de: POP
000010df: POP
000010e0: PUSH1 0x40
000010e2: MLOAD
000010e3: DUP1
000010e4: SWAP2
000010e5: SUB
000010e6: SWAP1
000010e7: REVERT
000010e8: JUMPDEST
000010e9: PUSH1 0x00
000010eb: PUSH2 0x106e
000010ee: DUP4
000010ef: DUP4
000010f0: PUSH1 0x40
000010f2: MLOAD
000010f3: DUP1
000010f4: PUSH1 0x40
000010f6: ADD
000010f7: PUSH1 0x40
000010f9: MSTORE
000010fa: DUP1
000010fb: PUSH1 0x1a
000010fd: DUP2
000010fe: MSTORE
000010ff: PUSH1 0x20
00001101: ADD
00001102: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
00001123: DUP2
00001124: MSTORE
00001125: POP
00001126: PUSH2 0x14d2
00001129: JUMP
0000112a: JUMPDEST
0000112b: PUSH1 0x00
0000112d: DUP3
0000112e: DUP3
0000112f: ADD
00001130: DUP4
00001131: DUP2
00001132: LT
00001133: ISZERO
00001134: PUSH2 0x106e
00001137: JUMPI
00001138: PUSH1 0x40
0000113a: DUP1
0000113b: MLOAD
0000113c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000115d: DUP2
0000115e: MSTORE
0000115f: PUSH1 0x20
00001161: PUSH1 0x04
00001163: DUP3
00001164: ADD
00001165: MSTORE
00001166: PUSH1 0x1b
00001168: PUSH1 0x24
0000116a: DUP3
0000116b: ADD
0000116c: MSTORE
0000116d: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
0000118e: PUSH1 0x44
00001190: DUP3
00001191: ADD
00001192: MSTORE
00001193: SWAP1
00001194: MLOAD
00001195: SWAP1
00001196: DUP2
00001197: SWAP1
00001198: SUB
00001199: PUSH1 0x64
0000119b: ADD
0000119c: SWAP1
0000119d: REVERT
0000119e: JUMPDEST
0000119f: PUSH1 0x01
000011a1: SLOAD
000011a2: PUSH2 0x11b1
000011a5: SWAP1
000011a6: DUP3
000011a7: PUSH4 0xffffffff
000011ac: PUSH2 0x102c
000011af: AND
000011b0: JUMP
000011b1: JUMPDEST
000011b2: PUSH1 0x01
000011b4: SSTORE
000011b5: CALLER
000011b6: PUSH1 0x00
000011b8: SWAP1
000011b9: DUP2
000011ba: MSTORE
000011bb: PUSH1 0x02
000011bd: PUSH1 0x20
000011bf: MSTORE
000011c0: PUSH1 0x40
000011c2: SWAP1
000011c3: KECCAK256
000011c4: SLOAD
000011c5: PUSH2 0x11d4
000011c8: SWAP1
000011c9: DUP3
000011ca: PUSH4 0xffffffff
000011cf: PUSH2 0x102c
000011d2: AND
000011d3: JUMP
000011d4: JUMPDEST
000011d5: CALLER
000011d6: PUSH1 0x00
000011d8: DUP2
000011d9: DUP2
000011da: MSTORE
000011db: PUSH1 0x02
000011dd: PUSH1 0x20
000011df: MSTORE
000011e0: PUSH1 0x40
000011e2: DUP2
000011e3: KECCAK256
000011e4: SWAP3
000011e5: SWAP1
000011e6: SWAP3
000011e7: SSTORE
000011e8: SWAP1
000011e9: SLOAD
000011ea: PUSH2 0x100d
000011ed: SWAP2
000011ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001203: SWAP1
00001204: SWAP2
00001205: AND
00001206: SWAP1
00001207: DUP4
00001208: PUSH2 0x1210
0000120b: JUMP
0000120c: JUMPDEST
0000120d: CALLER
0000120e: SWAP1
0000120f: JUMP
00001210: JUMPDEST
00001211: PUSH1 0x40
00001213: DUP1
00001214: MLOAD
00001215: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000122a: DUP5
0000122b: AND
0000122c: PUSH1 0x24
0000122e: DUP3
0000122f: ADD
00001230: MSTORE
00001231: PUSH1 0x44
00001233: DUP1
00001234: DUP3
00001235: ADD
00001236: DUP5
00001237: SWAP1
00001238: MSTORE
00001239: DUP3
0000123a: MLOAD
0000123b: DUP1
0000123c: DUP4
0000123d: SUB
0000123e: SWAP1
0000123f: SWAP2
00001240: ADD
00001241: DUP2
00001242: MSTORE
00001243: PUSH1 0x64
00001245: SWAP1
00001246: SWAP2
00001247: ADD
00001248: SWAP1
00001249: SWAP2
0000124a: MSTORE
0000124b: PUSH1 0x20
0000124d: DUP2
0000124e: ADD
0000124f: DUP1
00001250: MLOAD
00001251: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000126e: AND
0000126f: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00001290: OR
00001291: SWAP1
00001292: MSTORE
00001293: PUSH2 0x129d
00001296: SWAP1
00001297: DUP5
00001298: SWAP1
00001299: PUSH2 0x1551
0000129c: JUMP
0000129d: JUMPDEST
0000129e: POP
0000129f: POP
000012a0: POP
000012a1: JUMP
000012a2: JUMPDEST
000012a3: PUSH1 0x00
000012a5: DUP2
000012a6: DUP4
000012a7: LT
000012a8: PUSH2 0x12b1
000012ab: JUMPI
000012ac: DUP2
000012ad: PUSH2 0x106e
000012b0: JUMP
000012b1: JUMPDEST
000012b2: POP
000012b3: SWAP1
000012b4: SWAP2
000012b5: SWAP1
000012b6: POP
000012b7: JUMP
000012b8: JUMPDEST
000012b9: PUSH1 0x01
000012bb: SLOAD
000012bc: PUSH2 0x12cb
000012bf: SWAP1
000012c0: DUP3
000012c1: PUSH4 0xffffffff
000012c6: PUSH2 0x112a
000012c9: AND
000012ca: JUMP
000012cb: JUMPDEST
000012cc: PUSH1 0x01
000012ce: SSTORE
000012cf: CALLER
000012d0: PUSH1 0x00
000012d2: SWAP1
000012d3: DUP2
000012d4: MSTORE
000012d5: PUSH1 0x02
000012d7: PUSH1 0x20
000012d9: MSTORE
000012da: PUSH1 0x40
000012dc: SWAP1
000012dd: KECCAK256
000012de: SLOAD
000012df: PUSH2 0x12ee
000012e2: SWAP1
000012e3: DUP3
000012e4: PUSH4 0xffffffff
000012e9: PUSH2 0x112a
000012ec: AND
000012ed: JUMP
000012ee: JUMPDEST
000012ef: CALLER
000012f0: PUSH1 0x00
000012f2: DUP2
000012f3: DUP2
000012f4: MSTORE
000012f5: PUSH1 0x02
000012f7: PUSH1 0x20
000012f9: MSTORE
000012fa: PUSH1 0x40
000012fc: DUP2
000012fd: KECCAK256
000012fe: SWAP3
000012ff: SWAP1
00001300: SWAP3
00001301: SSTORE
00001302: SWAP1
00001303: SLOAD
00001304: PUSH2 0x100d
00001307: SWAP2
00001308: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000131d: SWAP1
0000131e: SWAP2
0000131f: AND
00001320: SWAP1
00001321: ADDRESS
00001322: DUP5
00001323: PUSH2 0x178f
00001326: JUMP
00001327: JUMPDEST
00001328: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000133d: DUP2
0000133e: AND
0000133f: PUSH2 0x1393
00001342: JUMPI
00001343: PUSH1 0x40
00001345: MLOAD
00001346: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001367: DUP2
00001368: MSTORE
00001369: PUSH1 0x04
0000136b: ADD
0000136c: DUP1
0000136d: DUP1
0000136e: PUSH1 0x20
00001370: ADD
00001371: DUP3
00001372: DUP2
00001373: SUB
00001374: DUP3
00001375: MSTORE
00001376: PUSH1 0x26
00001378: DUP2
00001379: MSTORE
0000137a: PUSH1 0x20
0000137c: ADD
0000137d: DUP1
0000137e: PUSH2 0x1861
00001381: PUSH1 0x26
00001383: SWAP2
00001384: CODECOPY
00001385: PUSH1 0x40
00001387: ADD
00001388: SWAP2
00001389: POP
0000138a: POP
0000138b: PUSH1 0x40
0000138d: MLOAD
0000138e: DUP1
0000138f: SWAP2
00001390: SUB
00001391: SWAP1
00001392: REVERT
00001393: JUMPDEST
00001394: PUSH1 0x03
00001396: SLOAD
00001397: PUSH1 0x40
00001399: MLOAD
0000139a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013af: DUP1
000013b0: DUP5
000013b1: AND
000013b2: SWAP3
000013b3: AND
000013b4: SWAP1
000013b5: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000013d6: SWAP1
000013d7: PUSH1 0x00
000013d9: SWAP1
000013da: LOG3
000013db: PUSH1 0x03
000013dd: DUP1
000013de: SLOAD
000013df: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001400: AND
00001401: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001416: SWAP3
00001417: SWAP1
00001418: SWAP3
00001419: AND
0000141a: SWAP2
0000141b: SWAP1
0000141c: SWAP2
0000141d: OR
0000141e: SWAP1
0000141f: SSTORE
00001420: JUMP
00001421: JUMPDEST
00001422: PUSH1 0x00
00001424: DUP2
00001425: DUP5
00001426: DUP5
00001427: GT
00001428: ISZERO
00001429: PUSH2 0x14ca
0000142c: JUMPI
0000142d: PUSH1 0x40
0000142f: MLOAD
00001430: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001451: DUP2
00001452: MSTORE
00001453: PUSH1 0x04
00001455: ADD
00001456: DUP1
00001457: DUP1
00001458: PUSH1 0x20
0000145a: ADD
0000145b: DUP3
0000145c: DUP2
0000145d: SUB
0000145e: DUP3
0000145f: MSTORE
00001460: DUP4
00001461: DUP2
00001462: DUP2
00001463: MLOAD
00001464: DUP2
00001465: MSTORE
00001466: PUSH1 0x20
00001468: ADD
00001469: SWAP2
0000146a: POP
0000146b: DUP1
0000146c: MLOAD
0000146d: SWAP1
0000146e: PUSH1 0x20
00001470: ADD
00001471: SWAP1
00001472: DUP1
00001473: DUP4
00001474: DUP4
00001475: PUSH1 0x00
00001477: JUMPDEST
00001478: DUP4
00001479: DUP2
0000147a: LT
0000147b: ISZERO
0000147c: PUSH2 0x148f
0000147f: JUMPI
00001480: DUP2
00001481: DUP2
00001482: ADD
00001483: MLOAD
00001484: DUP4
00001485: DUP3
00001486: ADD
00001487: MSTORE
00001488: PUSH1 0x20
0000148a: ADD
0000148b: PUSH2 0x1477
0000148e: JUMP
0000148f: JUMPDEST
00001490: POP
00001491: POP
00001492: POP
00001493: POP
00001494: SWAP1
00001495: POP
00001496: SWAP1
00001497: DUP2
00001498: ADD
00001499: SWAP1
0000149a: PUSH1 0x1f
0000149c: AND
0000149d: DUP1
0000149e: ISZERO
0000149f: PUSH2 0x14bc
000014a2: JUMPI
000014a3: DUP1
000014a4: DUP3
000014a5: SUB
000014a6: DUP1
000014a7: MLOAD
000014a8: PUSH1 0x01
000014aa: DUP4
000014ab: PUSH1 0x20
000014ad: SUB
000014ae: PUSH2 0x0100
000014b1: EXP
000014b2: SUB
000014b3: NOT
000014b4: AND
000014b5: DUP2
000014b6: MSTORE
000014b7: PUSH1 0x20
000014b9: ADD
000014ba: SWAP2
000014bb: POP
000014bc: JUMPDEST
000014bd: POP
000014be: SWAP3
000014bf: POP
000014c0: POP
000014c1: POP
000014c2: PUSH1 0x40
000014c4: MLOAD
000014c5: DUP1
000014c6: SWAP2
000014c7: SUB
000014c8: SWAP1
000014c9: REVERT
000014ca: JUMPDEST
000014cb: POP
000014cc: POP
000014cd: POP
000014ce: SWAP1
000014cf: SUB
000014d0: SWAP1
000014d1: JUMP
000014d2: JUMPDEST
000014d3: PUSH1 0x00
000014d5: DUP2
000014d6: DUP4
000014d7: PUSH2 0x153b
000014da: JUMPI
000014db: PUSH1 0x40
000014dd: MLOAD
000014de: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000014ff: DUP2
00001500: MSTORE
00001501: PUSH1 0x20
00001503: PUSH1 0x04
00001505: DUP3
00001506: ADD
00001507: DUP2
00001508: DUP2
00001509: MSTORE
0000150a: DUP4
0000150b: MLOAD
0000150c: PUSH1 0x24
0000150e: DUP5
0000150f: ADD
00001510: MSTORE
00001511: DUP4
00001512: MLOAD
00001513: SWAP1
00001514: SWAP3
00001515: DUP4
00001516: SWAP3
00001517: PUSH1 0x44
00001519: SWAP1
0000151a: SWAP2
0000151b: ADD
0000151c: SWAP2
0000151d: SWAP1
0000151e: DUP6
0000151f: ADD
00001520: SWAP1
00001521: DUP1
00001522: DUP4
00001523: DUP4
00001524: PUSH1 0x00
00001526: DUP4
00001527: ISZERO
00001528: PUSH2 0x148f
0000152b: JUMPI
0000152c: DUP2
0000152d: DUP2
0000152e: ADD
0000152f: MLOAD
00001530: DUP4
00001531: DUP3
00001532: ADD
00001533: MSTORE
00001534: PUSH1 0x20
00001536: ADD
00001537: PUSH2 0x1477
0000153a: JUMP
0000153b: JUMPDEST
0000153c: POP
0000153d: PUSH1 0x00
0000153f: DUP4
00001540: DUP6
00001541: DUP2
00001542: PUSH2 0x1547
00001545: JUMPI
00001546: INVALID
00001547: JUMPDEST
00001548: DIV
00001549: SWAP6
0000154a: SWAP5
0000154b: POP
0000154c: POP
0000154d: POP
0000154e: POP
0000154f: POP
00001550: JUMP
00001551: JUMPDEST
00001552: PUSH2 0x1570
00001555: DUP3
00001556: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000156b: AND
0000156c: PUSH2 0x1824
0000156f: JUMP
00001570: JUMPDEST
00001571: PUSH2 0x15db
00001574: JUMPI
00001575: PUSH1 0x40
00001577: DUP1
00001578: MLOAD
00001579: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000159a: DUP2
0000159b: MSTORE
0000159c: PUSH1 0x20
0000159e: PUSH1 0x04
000015a0: DUP3
000015a1: ADD
000015a2: MSTORE
000015a3: PUSH1 0x1f
000015a5: PUSH1 0x24
000015a7: DUP3
000015a8: ADD
000015a9: MSTORE
000015aa: PUSH32 0x5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400
000015cb: PUSH1 0x44
000015cd: DUP3
000015ce: ADD
000015cf: MSTORE
000015d0: SWAP1
000015d1: MLOAD
000015d2: SWAP1
000015d3: DUP2
000015d4: SWAP1
000015d5: SUB
000015d6: PUSH1 0x64
000015d8: ADD
000015d9: SWAP1
000015da: REVERT
000015db: JUMPDEST
000015dc: PUSH1 0x00
000015de: PUSH1 0x60
000015e0: DUP4
000015e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015f6: AND
000015f7: DUP4
000015f8: PUSH1 0x40
000015fa: MLOAD
000015fb: DUP1
000015fc: DUP3
000015fd: DUP1
000015fe: MLOAD
000015ff: SWAP1
00001600: PUSH1 0x20
00001602: ADD
00001603: SWAP1
00001604: DUP1
00001605: DUP4
00001606: DUP4
00001607: JUMPDEST
00001608: PUSH1 0x20
0000160a: DUP4
0000160b: LT
0000160c: PUSH2 0x1644
0000160f: JUMPI
00001610: DUP1
00001611: MLOAD
00001612: DUP3
00001613: MSTORE
00001614: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001635: SWAP1
00001636: SWAP3
00001637: ADD
00001638: SWAP2
00001639: PUSH1 0x20
0000163b: SWAP2
0000163c: DUP3
0000163d: ADD
0000163e: SWAP2
0000163f: ADD
00001640: PUSH2 0x1607
00001643: JUMP
00001644: JUMPDEST
00001645: PUSH1 0x01
00001647: DUP4
00001648: PUSH1 0x20
0000164a: SUB
0000164b: PUSH2 0x0100
0000164e: EXP
0000164f: SUB
00001650: DUP1
00001651: NOT
00001652: DUP3
00001653: MLOAD
00001654: AND
00001655: DUP2
00001656: DUP5
00001657: MLOAD
00001658: AND
00001659: DUP1
0000165a: DUP3
0000165b: OR
0000165c: DUP6
0000165d: MSTORE
0000165e: POP
0000165f: POP
00001660: POP
00001661: POP
00001662: POP
00001663: POP
00001664: SWAP1
00001665: POP
00001666: ADD
00001667: SWAP2
00001668: POP
00001669: POP
0000166a: PUSH1 0x00
0000166c: PUSH1 0x40
0000166e: MLOAD
0000166f: DUP1
00001670: DUP4
00001671: SUB
00001672: DUP2
00001673: PUSH1 0x00
00001675: DUP7
00001676: GAS
00001677: CALL
00001678: SWAP2
00001679: POP
0000167a: POP
0000167b: RETURNDATASIZE
0000167c: DUP1
0000167d: PUSH1 0x00
0000167f: DUP2
00001680: EQ
00001681: PUSH2 0x16a6
00001684: JUMPI
00001685: PUSH1 0x40
00001687: MLOAD
00001688: SWAP2
00001689: POP
0000168a: PUSH1 0x1f
0000168c: NOT
0000168d: PUSH1 0x3f
0000168f: RETURNDATASIZE
00001690: ADD
00001691: AND
00001692: DUP3
00001693: ADD
00001694: PUSH1 0x40
00001696: MSTORE
00001697: RETURNDATASIZE
00001698: DUP3
00001699: MSTORE
0000169a: RETURNDATASIZE
0000169b: PUSH1 0x00
0000169d: PUSH1 0x20
0000169f: DUP5
000016a0: ADD
000016a1: RETURNDATACOPY
000016a2: PUSH2 0x16ab
000016a5: JUMP
000016a6: JUMPDEST
000016a7: PUSH1 0x60
000016a9: SWAP2
000016aa: POP
000016ab: JUMPDEST
000016ac: POP
000016ad: SWAP2
000016ae: POP
000016af: SWAP2
000016b0: POP
000016b1: DUP2
000016b2: PUSH2 0x171c
000016b5: JUMPI
000016b6: PUSH1 0x40
000016b8: DUP1
000016b9: MLOAD
000016ba: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000016db: DUP2
000016dc: MSTORE
000016dd: PUSH1 0x20
000016df: PUSH1 0x04
000016e1: DUP3
000016e2: ADD
000016e3: DUP2
000016e4: SWAP1
000016e5: MSTORE
000016e6: PUSH1 0x24
000016e8: DUP3
000016e9: ADD
000016ea: MSTORE
000016eb: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
0000170c: PUSH1 0x44
0000170e: DUP3
0000170f: ADD
00001710: MSTORE
00001711: SWAP1
00001712: MLOAD
00001713: SWAP1
00001714: DUP2
00001715: SWAP1
00001716: SUB
00001717: PUSH1 0x64
00001719: ADD
0000171a: SWAP1
0000171b: REVERT
0000171c: JUMPDEST
0000171d: DUP1
0000171e: MLOAD
0000171f: ISZERO
00001720: PUSH2 0x0996
00001723: JUMPI
00001724: DUP1
00001725: DUP1
00001726: PUSH1 0x20
00001728: ADD
00001729: SWAP1
0000172a: MLOAD
0000172b: PUSH1 0x20
0000172d: DUP2
0000172e: LT
0000172f: ISZERO
00001730: PUSH2 0x1738
00001733: JUMPI
00001734: PUSH1 0x00
00001736: DUP1
00001737: REVERT
00001738: JUMPDEST
00001739: POP
0000173a: MLOAD
0000173b: PUSH2 0x0996
0000173e: JUMPI
0000173f: PUSH1 0x40
00001741: MLOAD
00001742: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001763: DUP2
00001764: MSTORE
00001765: PUSH1 0x04
00001767: ADD
00001768: DUP1
00001769: DUP1
0000176a: PUSH1 0x20
0000176c: ADD
0000176d: DUP3
0000176e: DUP2
0000176f: SUB
00001770: DUP3
00001771: MSTORE
00001772: PUSH1 0x2a
00001774: DUP2
00001775: MSTORE
00001776: PUSH1 0x20
00001778: ADD
00001779: DUP1
0000177a: PUSH2 0x18c9
0000177d: PUSH1 0x2a
0000177f: SWAP2
00001780: CODECOPY
00001781: PUSH1 0x40
00001783: ADD
00001784: SWAP2
00001785: POP
00001786: POP
00001787: PUSH1 0x40
00001789: MLOAD
0000178a: DUP1
0000178b: SWAP2
0000178c: SUB
0000178d: SWAP1
0000178e: REVERT
0000178f: JUMPDEST
00001790: PUSH1 0x40
00001792: DUP1
00001793: MLOAD
00001794: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017a9: DUP6
000017aa: DUP2
000017ab: AND
000017ac: PUSH1 0x24
000017ae: DUP4
000017af: ADD
000017b0: MSTORE
000017b1: DUP5
000017b2: AND
000017b3: PUSH1 0x44
000017b5: DUP3
000017b6: ADD
000017b7: MSTORE
000017b8: PUSH1 0x64
000017ba: DUP1
000017bb: DUP3
000017bc: ADD
000017bd: DUP5
000017be: SWAP1
000017bf: MSTORE
000017c0: DUP3
000017c1: MLOAD
000017c2: DUP1
000017c3: DUP4
000017c4: SUB
000017c5: SWAP1
000017c6: SWAP2
000017c7: ADD
000017c8: DUP2
000017c9: MSTORE
000017ca: PUSH1 0x84
000017cc: SWAP1
000017cd: SWAP2
000017ce: ADD
000017cf: SWAP1
000017d0: SWAP2
000017d1: MSTORE
000017d2: PUSH1 0x20
000017d4: DUP2
000017d5: ADD
000017d6: DUP1
000017d7: MLOAD
000017d8: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000017f5: AND
000017f6: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
00001817: OR
00001818: SWAP1
00001819: MSTORE
0000181a: PUSH2 0x0996
0000181d: SWAP1
0000181e: DUP6
0000181f: SWAP1
00001820: PUSH2 0x1551
00001823: JUMP
00001824: JUMPDEST
00001825: PUSH1 0x00
00001827: DUP2
00001828: EXTCODEHASH
00001829: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
0000184a: DUP2
0000184b: ISZERO
0000184c: DUP1
0000184d: ISZERO
0000184e: SWAP1
0000184f: PUSH2 0x1858
00001852: JUMPI
00001853: POP
00001854: DUP1
00001855: DUP3
00001856: EQ
00001857: ISZERO
00001858: JUMPDEST
00001859: SWAP5
0000185a: SWAP4
0000185b: POP
0000185c: POP
0000185d: POP
0000185e: POP
0000185f: JUMP
00001860: INVALID
00001861: UNKNOWN(0x4F)
00001862: PUSH24 0x6e61626c653a206e6577206f776e65722069732074686520
0000187b: PUSH27 0x65726f2061646472657373536166654d6174683a206d756c746970
00001897: PUSH13 0x69636174696f6e206f76657266
000018a5: PUSH13 0x6f7743616c6c6572206973206e
000018b3: PUSH16 0x74207265776172642064697374726962
000018c4: PUSH22 0x74696f6e5361666545524332303a204552433230206f
000018db: PUSH17 0x65726174696f6e20646964206e6f742073
000018ed: PUSH22 0x6363656564a265627a7a7231582097fff6722e633ff6
00001904: UNKNOWN(0xA5)
00001905: UNKNOWN(0x0C)
00001906: CLZ
00001907: UNKNOWN(0xCD)
00001908: UNKNOWN(0x4F)
00001909: NOT
0000190a: MUL
0000190b: STOP
0000190c: PUSH30

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xf817f29459ab5a7b2add462cf61916eed3f5f338ef4716fdc5f644d4b96728d7
call_targets: 0x3e80d57929e177ebc0bbf6a08f98ea20d9b5c3e0
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xf817f29459ab5a7b2add462cf61916eed3f5f338ef4716fdc5f644d4b96728d7",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x3e80d57929e177ebc0bbf6a08f98ea20d9b5c3e0"
    ],
    "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": "0xe9fad8ee",
            "selector": "0xe9fad8ee",
            "calldata_variants": [
                "0xe9fad8ee",
                "0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebe2b12b",
            "selector": "0xebe2b12b",
            "calldata_variants": [
                "0xebe2b12b",
                "0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc965d52",
            "selector": "0xfc965d52",
            "calldata_variants": [
                "0xfc965d52",
                "0xfc965d520000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f33c91",
            "selector": "0xc8f33c91",
            "calldata_variants": [
                "0xc8f33c91",
                "0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd3daf9d",
            "selector": "0xcd3daf9d",
            "calldata_variants": [
                "0xcd3daf9d",
                "0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdf136d65",
            "selector": "0xdf136d65",
            "calldata_variants": [
                "0xdf136d65",
                "0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2834,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5751,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [],
    "untrusted_call_count": 2
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xf817f29459ab5a7b2add462cf61916eed3f5f338ef4716fdc5f644d4b96728d7
call_targets: 0x3e80d57929e177ebc0bbf6a08f98ea20d9b5c3e0
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xf817f29459ab5a7b2add462cf61916eed3f5f338ef4716fdc5f644d4b96728d7",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x3e80d57929e177ebc0bbf6a08f98ea20d9b5c3e0"
    ],
    "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": "0xe9fad8ee",
            "selector": "0xe9fad8ee",
            "calldata_variants": [
                "0xe9fad8ee",
                "0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebe2b12b",
            "selector": "0xebe2b12b",
            "calldata_variants": [
                "0xebe2b12b",
                "0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc965d52",
            "selector": "0xfc965d52",
            "calldata_variants": [
                "0xfc965d52",
                "0xfc965d520000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f33c91",
            "selector": "0xc8f33c91",
            "calldata_variants": [
                "0xc8f33c91",
                "0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd3daf9d",
            "selector": "0xcd3daf9d",
            "calldata_variants": [
                "0xcd3daf9d",
                "0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdf136d65",
            "selector": "0xdf136d65",
            "calldata_variants": [
                "0xdf136d65",
                "0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2834,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 5751,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": []
}
medium reentrancy slither Reentrancy in GRAPETHPool.exit() (contracts/Contract.sol#673-676): 75 no
view
evidence_json
{
    "impact": "Medium",
    "detector": "reentrancy-no-eth",
    "elements": [
        {
            "name": "exit",
            "type": "function",
            "source_mapping": {
                "lines": [
                    673,
                    674,
                    675,
                    676
                ],
                "start": 24803,
                "length": 94,
                "ending_column": 6,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 5,
                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "GRAPETHPool",
                    "type": "contract",
                    "source_mapping": {
                        "lines": [
                            602,
                            603,
                            604,
                            605,
                            606,
                            607,
                            608,
                            609,
                            610,
                            611,
                            612,
                            613,
                            614,
                            615,
                            616,
                            617,
                            618,
                            619,
                            620,
                            621,
                            622,
                            623,
                            624,
                            625,
                            626,
                            627,
                            628,
                            629,
                            630,
                            631,
                            632,
                            633,
                            634,
                            635,
                            636,
                            637,
                            638,
                            639,
                            640,
                            641,
                            642,
                            643,
                            644,
                            645,
                            646,
                            647,
                            648,
                            649,
                            650,
                            651,
                            652,
                            653,
                            654,
                            655,
                            656,
                            657,
                            658,
                            659,
                            660,
                            661,
                            662,
                            663,
                            664,
                            665,
                            666,
                            667,
                            668,
                            669,
                            670,
                            671,
                            672,
                            673,
                            674,
                            675,
                            676,
                            677,
                            678,
                            679,
                            680,
                            681,
                            682,
                            683,
                            684,
                            685,
                            686,
                            687,
                            688,
                            689,
                            690,
                            691,
                            692,
                            693,
                            694,
                            695,
                            696,
                            697,
                            698,
                            699,
                            700,
                            701,
                            702,
                            703,
                            704,
                            705,
                            706,
                            707,
                            708,
                            709,
                            710,
                            711,
                            712,
                            713,
                            714,
                            715
                        ],
                        "start": 22285,
                        "length": 4006,
                        "ending_column": 0,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 1,
                        "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    }
                },
                "signature": "exit()"
            }
        },
        {
            "name": "withdraw(balanceOf(msg.sender))",
            "type": "node",
            "source_mapping": {
                "lines": [
                    674
                ],
                "start": 24838,
                "length": 31,
                "ending_column": 40,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 9,
                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "exit",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            673,
                            674,
                            675,
                            676
                        ],
                        "start": 24803,
                        "length": 94,
                        "ending_column": 6,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 5,
                        "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "GRAPETHPool",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    602,
                                    603,
                                    604,
                                    605,
                                    606,
                                    607,
                                    608,
                                    609,
                                    610,
                                    611,
                                    612,
                                    613,
                                    614,
                                    615,
                                    616,
                                    617,
                                    618,
                                    619,
                                    620,
                                    621,
                                    622,
                                    623,
                                    624,
                                    625,
                                    626,
                                    627,
                                    628,
                                    629,
                                    630,
                                    631,
                                    632,
                                    633,
                                    634,
                                    635,
                                    636,
                                    637,
                                    638,
                                    639,
                                    640,
                                    641,
                                    642,
                                    643,
                                    644,
                                    645,
                                    646,
                                    647,
                                    648,
                                    649,
                                    650,
                                    651,
                                    652,
                                    653,
                                    654,
                                    655,
                                    656,
                                    657,
                                    658,
                                    659,
                                    660,
                                    661,
                                    662,
                                    663,
                                    664,
                                    665,
                                    666,
                                    667,
                                    668,
                                    669,
                                    670,
                                    671,
                                    672,
                                    673,
                                    674,
                                    675,
                                    676,
                                    677,
                                    678,
                                    679,
                                    680,
                                    681,
                                    682,
                                    683,
                                    684,
                                    685,
                                    686,
                                    687,
                                    688,
                                    689,
                                    690,
                                    691,
                                    692,
                                    693,
                                    694,
                                    695,
                                    696,
                                    697,
                                    698,
                                    699,
                                    700,
                                    701,
                                    702,
                                    703,
                                    704,
                                    705,
                                    706,
                                    707,
                                    708,
                                    709,
                                    710,
                                    711,
                                    712,
                                    713,
                                    714,
                                    715
                                ],
                                "start": 22285,
                                "length": 4006,
                                "ending_column": 0,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 1,
                                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "exit()"
                    }
                }
            }
        },
        {
            "name": "weth.safeTransfer(msg.sender,amount)",
            "type": "node",
            "source_mapping": {
                "lines": [
                    598
                ],
                "start": 22237,
                "length": 37,
                "ending_column": 46,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 9,
                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls_sending_eth"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "withdraw",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            595,
                            596,
                            597,
                            598,
                            599
                        ],
                        "start": 22070,
                        "length": 211,
                        "ending_column": 6,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 5,
                        "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "LPTokenWrapper",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    572,
                                    573,
                                    574,
                                    575,
                                    576,
                                    577,
                                    578,
                                    579,
                                    580,
                                    581,
                                    582,
                                    583,
                                    584,
                                    585,
                                    586,
                                    587,
                                    588,
                                    589,
                                    590,
                                    591,
                                    592,
                                    593,
                                    594,
                                    595,
                                    596,
                                    597,
                                    598,
                                    599,
                                    600
                                ],
                                "start": 21369,
                                "length": 914,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 1,
                                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "withdraw(uint256)"
                    }
                }
            }
        },
        {
            "name": "(success,returndata) = address(token).call(data)",
            "type": "node",
            "source_mapping": {
                "lines": [
                    538
                ],
                "start": 20366,
                "length": 67,
                "ending_column": 76,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 9,
                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls_sending_eth"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "callOptionalReturn",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            526,
                            527,
                            528,
                            529,
                            530,
                            531,
                            532,
                            533,
                            534,
                            535,
                            536,
                            537,
                            538,
                            539,
                            540,
                            541,
                            542,
                            543,
                            544,
                            545
                        ],
                        "start": 19638,
                        "length": 1095,
                        "ending_column": 6,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 5,
                        "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "SafeERC20",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    487,
                                    488,
                                    489,
                                    490,
                                    491,
                                    492,
                                    493,
                                    494,
                                    495,
                                    496,
                                    497,
                                    498,
                                    499,
                                    500,
                                    501,
                                    502,
                                    503,
                                    504,
                                    505,
                                    506,
                                    507,
                                    508,
                                    509,
                                    510,
                                    511,
                                    512,
                                    513,
                                    514,
                                    515,
                                    516,
                                    517,
                                    518,
                                    519,
                                    520,
                                    521,
                                    522,
                                    523,
                                    524,
                                    525,
                                    526,
                                    527,
                                    528,
                                    529,
                                    530,
                                    531,
                                    532,
                                    533,
                                    534,
                                    535,
                                    536,
                                    537,
                                    538,
                                    539,
                                    540,
                                    541,
                                    542,
                                    543,
                                    544,
                                    545,
                                    546
                                ],
                                "start": 17546,
                                "length": 3189,
                                "ending_column": 2,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 1,
                                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "callOptionalReturn(IERC20,bytes)"
                    }
                }
            }
        },
        {
            "name": "getReward()",
            "type": "node",
            "source_mapping": {
                "lines": [
                    675
                ],
                "start": 24879,
                "length": 11,
                "ending_column": 20,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 9,
                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "additional_fields": {
                "underlying_type": "external_calls"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "exit",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            673,
                            674,
                            675,
                            676
                        ],
                        "start": 24803,
                        "length": 94,
                        "ending_column": 6,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 5,
                        "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "GRAPETHPool",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    602,
                                    603,
                                    604,
                                    605,
                                    606,
                                    607,
                                    608,
                                    609,
                                    610,
                                    611,
                                    612,
                                    613,
                                    614,
                                    615,
                                    616,
                                    617,
                                    618,
                                    619,
                                    620,
                                    621,
                                    622,
                                    623,
                                    624,
                                    625,
                                    626,
                                    627,
                                    628,
                                    629,
                                    630,
                                    631,
                                    632,
                                    633,
                                    634,
                                    635,
                                    636,
                                    637,
                                    638,
                                    639,
                                    640,
                                    641,
                                    642,
                                    643,
                                    644,
                                    645,
                                    646,
                                    647,
                                    648,
                                    649,
                                    650,
                                    651,
                                    652,
                                    653,
                                    654,
                                    655,
                                    656,
                                    657,
                                    658,
                                    659,
                                    660,
                                    661,
                                    662,
                                    663,
                                    664,
                                    665,
                                    666,
                                    667,
                                    668,
                                    669,
                                    670,
                                    671,
                                    672,
                                    673,
                                    674,
                                    675,
                                    676,
                                    677,
                                    678,
                                    679,
                                    680,
                                    681,
                                    682,
                                    683,
                                    684,
                                    685,
                                    686,
                                    687,
                                    688,
                                    689,
                                    690,
                                    691,
                                    692,
                                    693,
                                    694,
                                    695,
                                    696,
                                    697,
                                    698,
                                    699,
                                    700,
                                    701,
                                    702,
                                    703,
                                    704,
                                    705,
                                    706,
                                    707,
                                    708,
                                    709,
                                    710,
                                    711,
                                    712,
                                    713,
                                    714,
                                    715
                                ],
                                "start": 22285,
                                "length": 4006,
                                "ending_column": 0,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 1,
                                "filename_absolute": "/tmp/slither-7nja2kqw/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "exit()"
                    }
                }
            }
        }
    ],
    "locations": [
        {
            "file": "contracts/Contract.sol",
            "name": "exit",
            "type": "function",
            "lines": [
                673,
                674,
                675,
                676
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "withdraw(balanceOf(msg.sender))",
            "type": "node",
            "lines": [
                674
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "weth.safeTransfer(msg.sender,amount)",
            "type": "node",
            "lines": [
                598
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "(success,returndata) = address(token).call(data)",
            "type": "node",
            "lines": [
                538
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                675
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "(success,returndata) = address(token).call(data)",
            "type": "node",
            "lines": [
                538
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "scalingFactor = GRAP(address(grap)).grapsScalingFactor()",
            "type": "node",
            "lines": [
                682
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "grap.safeTransfer(msg.sender,trueReward)",
            "type": "node",
            "lines": [
                684
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                675
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "lastUpdateTime = lastTimeRewardApplicable()",
            "type": "node",
            "lines": [
                626
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                675
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "rewardPerTokenStored = rewardPerToken()",
            "type": "node",
            "lines": [
                625
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                675
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "rewards[msg.sender] = 0",
            "type": "node",
            "lines": [
                681
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "rewards[account] = earned(account)",
            "type": "node",
            "lines": [
                628
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "getReward()",
            "type": "node",
            "lines": [
                675
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "userRewardPerTokenPaid[account] = rewardPerTokenStored",
            "type": "node",
            "lines": [
                629
            ]
        }
    ],
    "description": "Reentrancy in GRAPETHPool.exit() (contracts/Contract.sol#673-676):\n\tExternal calls:\n\t- withdraw(balanceOf(msg.sender)) (contracts/Contract.sol#674)\n\t\t- weth.safeTransfer(msg.sender,amount) (contracts/Contract.sol#598)\n\t\t- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- (success,returndata) = address(token).call(data) (contracts/Contract.sol#538)\n\t\t- scalingFactor = GRAP(address(grap)).grapsScalingFactor() (contracts/Contract.sol#682)\n\t\t- grap.safeTransfer(msg.sender,trueReward) (contracts/Contract.sol#684)\n\tState variables written after the call(s):\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- lastUpdateTime = lastTimeRewardApplicable() (contracts/Contract.sol#626)\n\tGRAPETHPool.lastUpdateTime (contracts/Contract.sol#609) can be used in cross function reentrancies:\n\t- GRAPETHPool.lastUpdateTime (contracts/Contract.sol#609)\n\t- GRAPETHPool.notifyRewardAmount(uint256) (contracts/Contract.sol#689-713)\n\t- GRAPETHPool.rewardPerToken() (contracts/Contract.sol#638-650)\n\t- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- rewardPerTokenStored = rewardPerToken() (contracts/Contract.sol#625)\n\tGRAPETHPool.rewardPerTokenStored (contracts/Contract.sol#610) can be used in cross function reentrancies:\n\t- GRAPETHPool.rewardPerToken() (contracts/Contract.sol#638-650)\n\t- GRAPETHPool.rewardPerTokenStored (contracts/Contract.sol#610)\n\t- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- rewards[msg.sender] = 0 (contracts/Contract.sol#681)\n\t\t- rewards[account] = earned(account) (contracts/Contract.sol#628)\n\tGRAPETHPool.rewards (contracts/Contract.sol#612) can be used in cross function reentrancies:\n\t- GRAPETHPool.earned(address) (contracts/Contract.sol#652-658)\n\t- GRAPETHPool.getReward() (contracts/Contract.sol#678-687)\n\t- GRAPETHPool.rewards (contracts/Contract.sol#612)\n\t- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)\n\t- getReward() (contracts/Contract.sol#675)\n\t\t- userRewardPerTokenPaid[account] = rewardPerTokenStored (contracts/Contract.sol#629)\n\tGRAPETHPool.userRewardPerTokenPaid (contracts/Contract.sol#611) can be used in cross function reentrancies:\n\t- GRAPETHPool.earned(address) (contracts/Contract.sol#652-658)\n\t- GRAPETHPool.updateReward(address) (contracts/Contract.sol#624-632)\n\t- GRAPETHPool.userRewardPerTokenPaid (contracts/Contract.sol#611)"
}