Overview
ETH Balance
45 ETH
Eth Value
$176,392.10 (@ $3,919.82/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake | 21385875 | 11 mins ago | IN | 0 ETH | 0.00227848 |
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||||
---|---|---|---|---|---|---|---|---|---|
There are no matching entriesUpdate your filters to view other transactions |
Loading...
Loading
Contract Name:
oGPUStaking
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-11 */ /* * OpenGPU Network World's Leading Decentralized GPU Ecosystem * * Website: https://opengpu.network/ * Staking: https://stake.opengpu.network/ * Telegram: https://t.me/opengpuportal * Twitter: https://x.com/opengpunetwork * Whitepaper: https://opengpu.network/docs/whitepaper.pdf * Yellowpaper: https://opengpu.network/docs/yellowpaper.pdf * */ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, * consider using {ReentrancyGuardTransient} instead. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; uint256 private _status; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); constructor() { _status = NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be NOT_ENTERED if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail _status = ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract oGPUStaking is Ownable, ReentrancyGuard { IERC20 public oGPU; uint256 public gpuId; bool private isClaimable = false; struct UserInfo { address user; // User address uint256 poolId; // Pool ID uint256 amount; // How many oGPU tokens the user has provided. uint256 stakeTime; // Time when user staked uint256 points; // How many points the user has, accumulated. uint256 gpuId; // GPU gpuId bool claimed; // default false uint256 lastBoostTime; // Last time user boosted uint256 claimedETH; // Claimed ETH uint256 claimedoGPU; // Claimed oGPU } struct UserInfoWithShares { address user; // User address uint256 poolId; // Pool ID uint256 amount; // How many oGPU tokens the user has provided. uint256 stakeTime; // Time when user staked uint256 points; // How many points the user has, accumulated. uint256 gpuId; // GPU gpuId bool claimed; // default false uint256 lastBoostTime; // Last time user boosted uint256 claimedETH; // Claimed ETH uint256 claimedoGPU; // Claimed oGPU uint256 share; // User share of ETH } struct PoolInfo { uint256 poolId; // Pool ID uint256 totalPoints; // Total points accumulated by all users uint256 totalAmount; // Total amount of oGPU tokens staked uint256 totalETHStaked; // Total ETH share uint256 startTime; // Start time of the pool uint256 duration; // Duration of the pool uint256 endTime; // End time of the pools bool ended; // default false } PoolInfo[] public poolInfo; mapping (uint256 => mapping (address => UserInfo)) public userInfoMap; mapping (uint256 => UserInfo[]) public poolUsers; mapping (address => mapping (uint256 => uint256)) public userPoolIndex; event EmergencyWithdraw(address indexed user, uint256 poolId, uint256 amount); event Claimed(address indexed user, uint256 poolId, uint256 amount); event PoolEnded(uint256 poolId, uint256 endTime); event Staked(address indexed user, uint256 amount, uint256 gpuType); event PoolCreated(uint256 stakeID, uint256 stakingStartTimestamp, uint256 duration, uint256 stakingEndTimestamp); constructor(IERC20 _oGPU) { oGPU = _oGPU; } receive() external payable { } function createPool() external onlyOwner { uint256 _poolId = poolInfo.length; uint256 _startTime = block.timestamp; poolInfo.push(PoolInfo({ poolId: _poolId, totalPoints: 0, totalAmount: 0, totalETHStaked: 0, startTime: _startTime, duration: 0, endTime: 0, ended: false })); emit PoolCreated(_poolId, _startTime, 0, 0); } function stake(uint256 _poolId, uint256 _amount, uint256 _gpuID) external nonReentrant { require(_amount > 0, "Staking: amount must be greater than 0"); require(_poolId < poolInfo.length, "Staking: invalid pool id"); PoolInfo storage pool = poolInfo[_poolId]; require(block.timestamp >= pool.startTime, "Staking: pool not started"); require(pool.endTime == 0, "Staking: pool ended"); require(!pool.ended, "Staking: pool ended"); oGPU.transferFrom(msg.sender, address(this), _amount); UserInfo storage user = userInfoMap[_poolId][msg.sender]; // if user.amount is zero and userpoolindex is zero, then user is new if (user.amount == 0 && userPoolIndex[msg.sender][_poolId] == 0) { user.user = msg.sender; user.stakeTime = block.timestamp; user.poolId = _poolId; user.lastBoostTime = block.timestamp; user.gpuId = _gpuID; user.amount = _amount; uint256 totalStakeTime = 0; if ((pool.startTime + 120 days) > block.timestamp) { totalStakeTime = (pool.startTime + 120 days) - block.timestamp; } uint256 _points = _amount * (totalStakeTime / 2 days + 1); pool.totalAmount = pool.totalAmount + _amount; if (_gpuID < 130) { _points += (_points * 15) / 100; } else if (_gpuID < 360) { _points += (_points * 10) / 100; } else { _points += (_points * 5) / 100; } user.points = _points; pool.totalPoints = pool.totalPoints + user.points; uint256 userLength = poolUsers[_poolId].length; poolUsers[_poolId].push(user); userPoolIndex[msg.sender][_poolId] = userLength; } else { user.gpuId = _gpuID; user.amount = user.amount + _amount; uint256 totalStakeTime = 0; if ((pool.startTime + 120 days) > block.timestamp) { totalStakeTime = (pool.startTime + 120 days) - block.timestamp; } uint256 _points = _amount * (totalStakeTime / 2 days + 1); if (_gpuID < 130) { _points += (_points * 15) / 100; } else if (_gpuID < 360) { _points += (_points * 10) / 100; } else { _points += (_points * 5) / 100; } user.points += _points; pool.totalAmount = pool.totalAmount + _amount; pool.totalPoints = pool.totalPoints + _points; uint256 userIndex = userPoolIndex[msg.sender][_poolId]; poolUsers[_poolId][userIndex] = user; } emit Staked(msg.sender, _poolId, _amount); } function claim(uint256 _poolId) external nonReentrant { require(_poolId < poolInfo.length, "Staking: invalid pool id"); PoolInfo storage pool = poolInfo[_poolId]; UserInfo storage user = userInfoMap[_poolId][msg.sender]; require(pool.ended, "Staking: claim period is not started"); require(user.amount > 0, "Staking: user has no stake"); require(pool.endTime != 0, "Staking: pool live"); require(block.timestamp >= pool.endTime, "Staking: pool not ended"); require(!user.claimed, "Staking: user already claimed"); user.claimed = true; uint256 _amount = user.amount; user.claimedoGPU = _amount; user.amount = 0; if (isClaimable){ oGPU.transfer(msg.sender, _amount); } uint256 _points = user.points; user.points = 0; // userpoolindex uint256 userIndex = userPoolIndex[msg.sender][_poolId]; uint256 _share = (_points * pool.totalETHStaked) / pool.totalPoints; user.claimedETH = _share; poolUsers[_poolId][userIndex] = user; payable(msg.sender).transfer(_share); emit Claimed(msg.sender, _poolId, _amount); } function emergencyWithdraw(uint256 _poolId) external nonReentrant { require(_poolId < poolInfo.length, "Staking: invalid pool id"); PoolInfo storage pool = poolInfo[_poolId]; UserInfo storage user = userInfoMap[_poolId][msg.sender]; require(user.amount > 0, "Staking: user has no stake"); require(pool.endTime == 0, "Staking: pool ended"); require(pool.ended == false, "Staking: pool ended"); uint256 _amount = user.amount; pool.totalAmount -= _amount; pool.totalPoints -= user.points; user.amount = 0; user.points = 0; uint256 userIndex = userPoolIndex[msg.sender][_poolId]; poolUsers[_poolId][userIndex] = user; oGPU.transfer(msg.sender, (_amount * 75) / 100); oGPU.transfer(address(owner()),(_amount * 25)/ 100); emit EmergencyWithdraw(msg.sender, _poolId, _amount); } function enableClaim(bool _claim) external onlyOwner{ isClaimable = _claim; } function endPool(uint256 _poolId) external onlyOwner { require(_poolId < poolInfo.length, "Staking: invalid pool id"); PoolInfo storage pool = poolInfo[_poolId]; pool.endTime = block.timestamp; pool.ended = true; emit PoolEnded(_poolId, block.timestamp); } function getUserInfo(uint256 _poolId, address _user) external view returns (UserInfo memory) { require(_poolId < poolInfo.length, "Staking: invalid pool id"); return userInfoMap[_poolId][_user]; } function getPoolUsers(uint256 _poolId) external view returns (UserInfo[] memory) { require(_poolId < poolInfo.length, "Staking: invalid pool id"); return poolUsers[_poolId]; } function getPoolUsersWithShares(uint256 _poolId) external view returns (UserInfoWithShares[] memory) { require(_poolId < poolInfo.length, "Staking: invalid pool id"); if (poolInfo[_poolId].totalPoints == 0) { return new UserInfoWithShares[](0); } UserInfo[] memory users = poolUsers[_poolId]; UserInfoWithShares[] memory usersWithShares = new UserInfoWithShares[](users.length); for (uint256 i = 0; i < users.length; i++) { UserInfo memory user = users[i]; usersWithShares[i] = UserInfoWithShares({ user: user.user, poolId: user.poolId, amount: user.amount, stakeTime: user.stakeTime, points: user.points, gpuId: user.gpuId, claimed: user.claimed, lastBoostTime: user.lastBoostTime, claimedETH: user.claimedETH, claimedoGPU: user.claimedoGPU, share: (user.points * poolInfo[_poolId].totalETHStaked) / poolInfo[_poolId].totalPoints }); } return usersWithShares; } function getPoolUsersWithSharesRange(uint256 _poolId, uint256 _start, uint256 _end) external view returns (UserInfoWithShares[] memory) { require(_poolId < poolInfo.length, "Staking: invalid pool id"); require(_start < poolUsers[_poolId].length, "Staking: invalid start index"); require(_end < poolUsers[_poolId].length, "Staking: invalid end index"); UserInfo[] memory users = poolUsers[_poolId]; UserInfoWithShares[] memory usersWithShares = new UserInfoWithShares[](_end - _start + 1); for (uint256 i = _start; i <= _end; i++) { UserInfo memory user = users[i]; usersWithShares[i - _start] = UserInfoWithShares({ user: user.user, poolId: user.poolId, amount: user.amount, stakeTime: user.stakeTime, points: user.points, gpuId: user.gpuId, claimed: user.claimed, lastBoostTime: user.lastBoostTime, claimedETH: user.claimedETH, claimedoGPU: user.claimedoGPU, share: (user.points * poolInfo[_poolId].totalETHStaked) / poolInfo[_poolId].totalPoints }); } return usersWithShares; } function getPoolUser(uint256 _poolId, address _user) external view returns (UserInfo memory) { require(_poolId < poolInfo.length, "Staking: invalid pool id"); return userInfoMap[_poolId][_user]; } function getPoolUsersLength(uint256 _poolId) external view returns (uint256) { require(_poolId < poolInfo.length, "Staking: invalid pool id"); return poolUsers[_poolId].length; } function getPoolUserReward(uint256 _poolId, address _user) external view returns (uint256) { require(_poolId < poolInfo.length, "Staking: invalid pool id"); UserInfo storage user = userInfoMap[_poolId][_user]; PoolInfo storage pool = poolInfo[_poolId]; // Reward on ETH is calculated based on the points uint256 _points = user.points; uint256 _share = (_points * pool.totalETHStaked) / pool.totalPoints; return _share; } function addETHToPool(uint256 _poolId, uint256 _amount) external payable onlyOwner { require(_amount > 0, "Staking: amount must be greater than 0"); require(_amount == msg.value, "Staking: invalid amount"); require(_poolId < poolInfo.length, "Staking: invalid pool id"); PoolInfo storage pool = poolInfo[_poolId]; require(block.timestamp >= pool.startTime, "Staking: pool not started"); require(pool.endTime == 0, "Staking: pool ended"); require(!pool.ended, "Staking: pool ended"); pool.totalETHStaked += _amount; } // retrieve all ETH from the contract function retrieveETH() external onlyOwner { payable(msg.sender).transfer(address(this).balance); } // retrieve all oGPU from the contract function retrieveoGPU() external onlyOwner { oGPU.transfer(msg.sender, oGPU.balanceOf(address(this))); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_oGPU","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"stakeID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakingStartTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakingEndTimestamp","type":"uint256"}],"name":"PoolCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"PoolEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gpuType","type":"uint256"}],"name":"Staked","type":"event"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addETHToPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_claim","type":"bool"}],"name":"enableClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"endPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"getPoolUser","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"gpuId","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"lastBoostTime","type":"uint256"},{"internalType":"uint256","name":"claimedETH","type":"uint256"},{"internalType":"uint256","name":"claimedoGPU","type":"uint256"}],"internalType":"struct oGPUStaking.UserInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"getPoolUserReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"getPoolUsers","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"gpuId","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"lastBoostTime","type":"uint256"},{"internalType":"uint256","name":"claimedETH","type":"uint256"},{"internalType":"uint256","name":"claimedoGPU","type":"uint256"}],"internalType":"struct oGPUStaking.UserInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"getPoolUsersLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"getPoolUsersWithShares","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"gpuId","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"lastBoostTime","type":"uint256"},{"internalType":"uint256","name":"claimedETH","type":"uint256"},{"internalType":"uint256","name":"claimedoGPU","type":"uint256"},{"internalType":"uint256","name":"share","type":"uint256"}],"internalType":"struct oGPUStaking.UserInfoWithShares[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"}],"name":"getPoolUsersWithSharesRange","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"gpuId","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"lastBoostTime","type":"uint256"},{"internalType":"uint256","name":"claimedETH","type":"uint256"},{"internalType":"uint256","name":"claimedoGPU","type":"uint256"},{"internalType":"uint256","name":"share","type":"uint256"}],"internalType":"struct oGPUStaking.UserInfoWithShares[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"getUserInfo","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"gpuId","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"lastBoostTime","type":"uint256"},{"internalType":"uint256","name":"claimedETH","type":"uint256"},{"internalType":"uint256","name":"claimedoGPU","type":"uint256"}],"internalType":"struct oGPUStaking.UserInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gpuId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oGPU","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"totalPoints","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"totalETHStaked","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"bool","name":"ended","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolUsers","outputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"gpuId","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"lastBoostTime","type":"uint256"},{"internalType":"uint256","name":"claimedETH","type":"uint256"},{"internalType":"uint256","name":"claimedoGPU","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrieveETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrieveoGPU","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_gpuID","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfoMap","outputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"gpuId","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"lastBoostTime","type":"uint256"},{"internalType":"uint256","name":"claimedETH","type":"uint256"},{"internalType":"uint256","name":"claimedoGPU","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userPoolIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526004805460ff191690553480156200001b57600080fd5b5060405162002b6638038062002b668339810160408190526200003e91620000a9565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055600280546001600160a01b0319166001600160a01b0392909216919091179055620000db565b600060208284031215620000bc57600080fd5b81516001600160a01b0381168114620000d457600080fd5b9392505050565b612a7b80620000eb6000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063a17be43a1161008a578063c964ee9f11610064578063c964ee9f1461051b578063d13284b11461053b578063d5b014c31461055b578063f2fde38b1461057057600080fd5b8063a17be43a146104b0578063a638f2e2146104e8578063b49947e11461050857600080fd5b8063715018a6146103f057806373274b141461040557806373e22641146104335780638da5cb5b146104495780638eb352511461047b5780639a06b1131461049b57600080fd5b8063379607f511610123578063379607f5146102ea5780634ccb529a1461030a5780635237f7311461031f5780635312ea8e1461034c5780635e61b984146102135780635f02c1451461036c57600080fd5b80630ccf0664146101765780630f2b7cc9146101985780631069f3b5146102135780631526fe27146102405780632dd896991461029d57806335e2ce21146102ca57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101966101913660046125d3565b610590565b005b3480156101a457600080fd5b506101b86101b33660046125f7565b6105d6565b604080516001600160a01b03909b168b5260208b0199909952978901969096526060880194909452608087019290925260a0860152151560c085015260e0840152610100830152610120820152610140015b60405180910390f35b34801561021f57600080fd5b5061023361022e366004612635565b610653565b60405161020a91906126d5565b34801561024c57600080fd5b5061026061025b3660046126e4565b610772565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e08201526101000161020a565b3480156102a957600080fd5b506102bd6102b83660046126fd565b6107cb565b60405161020a9190612729565b3480156102d657600080fd5b506102bd6102e53660046126e4565b610b36565b3480156102f657600080fd5b506101966103053660046126e4565b610e2f565b34801561031657600080fd5b50610196611269565b34801561032b57600080fd5b5061033f61033a3660046126e4565b611378565b60405161020a91906127e2565b34801561035857600080fd5b506101966103673660046126e4565b611471565b34801561037857600080fd5b506101b8610387366004612635565b6006602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009909801546001600160a01b03909716989597949693959294929360ff9092169290918a565b3480156103fc57600080fd5b50610196611814565b34801561041157600080fd5b506104256104203660046126e4565b611888565b60405190815260200161020a565b34801561043f57600080fd5b5061042560035481565b34801561045557600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161020a565b34801561048757600080fd5b50610425610496366004612635565b6118bf565b3480156104a757600080fd5b50610196611961565b3480156104bc57600080fd5b506104256104cb366004612831565b600860209081526000928352604080842090915290825290205481565b3480156104f457600080fd5b506101966105033660046126fd565b611b7b565b6101966105163660046125f7565b61219e565b34801561052757600080fd5b506101966105363660046126e4565b612332565b34801561054757600080fd5b50600254610463906001600160a01b031681565b34801561056757600080fd5b506101966123f6565b34801561057c57600080fd5b5061019661058b36600461285b565b61244c565b6000546001600160a01b031633146105c35760405162461bcd60e51b81526004016105ba90612876565b60405180910390fd5b6004805460ff1916911515919091179055565b600760205281600052604060002081815481106105f257600080fd5b60009182526020909120600a909102018054600182015460028301546003840154600485015460058601546006870154600788015460088901546009909901546001600160a01b039098169a50959850939692959194909360ff169290918a565b6106b460405180610140016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160008152602001600081525090565b60055483106106d55760405162461bcd60e51b81526004016105ba906128ab565b5060008281526006602081815260408084206001600160a01b03808716865290835293819020815161014081018352815490951685526001810154928501929092526002820154908401526003810154606084015260048101546080840152600581015460a08401529081015460ff16151560c0830152600781015460e08301526008810154610100830152600901546101208201525b92915050565b6005818154811061078257600080fd5b6000918252602090912060089091020180546001820154600283015460038401546004850154600586015460068701546007909701549597509395929491939092909160ff1688565b60055460609084106107ef5760405162461bcd60e51b81526004016105ba906128ab565b600084815260076020526040902054831061084c5760405162461bcd60e51b815260206004820152601c60248201527f5374616b696e673a20696e76616c696420737461727420696e6465780000000060448201526064016105ba565b60008481526007602052604090205482106108a95760405162461bcd60e51b815260206004820152601a60248201527f5374616b696e673a20696e76616c696420656e6420696e64657800000000000060448201526064016105ba565b600084815260076020908152604080832080548251818502810185019093528083529192909190849084015b828210156109765760008481526020908190206040805161014081018252600a860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460ff16151560c0840152600781015460e084015260088101546101008401526009015461012083015290835290920191016108d5565b5050505090506000848461098a91906128f8565b61099590600161290b565b67ffffffffffffffff8111156109ad576109ad61291e565b6040519080825280602002602001820160405280156109e657816020015b6109d3612560565b8152602001906001900390816109cb5790505b509050845b848111610b2c576000838281518110610a0657610a06612934565b6020026020010151905060405180610160016040528082600001516001600160a01b03168152602001826020015181526020018260400151815260200182606001518152602001826080015181526020018260a0015181526020018260c00151151581526020018260e0015181526020018261010001518152602001826101200151815260200160058a81548110610aa057610aa0612934565b90600052602060002090600802016001015460058b81548110610ac557610ac5612934565b9060005260206000209060080201600301548460800151610ae6919061294a565b610af09190612961565b905283610afd89856128f8565b81518110610b0d57610b0d612934565b6020026020010181905250508080610b2490612983565b9150506109eb565b5095945050505050565b6005546060908210610b5a5760405162461bcd60e51b81526004016105ba906128ab565b60058281548110610b6d57610b6d612934565b906000526020600020906008020160010154600003610bbe576040805160008082526020820190925290610bb7565b610ba4612560565b815260200190600190039081610b9c5790505b5092915050565b600082815260076020908152604080832080548251818502810185019093528083529192909190849084015b82821015610c8b5760008481526020908190206040805161014081018252600a860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460ff16151560c0840152600781015460e08401526008810154610100840152600901546101208301529083529092019101610bea565b5050505090506000815167ffffffffffffffff811115610cad57610cad61291e565b604051908082528060200260200182016040528015610ce657816020015b610cd3612560565b815260200190600190039081610ccb5790505b50905060005b8251811015610e27576000838281518110610d0957610d09612934565b6020026020010151905060405180610160016040528082600001516001600160a01b03168152602001826020015181526020018260400151815260200182606001518152602001826080015181526020018260a0015181526020018260c00151151581526020018260e0015181526020018261010001518152602001826101200151815260200160058881548110610da357610da3612934565b90600052602060002090600802016001015460058981548110610dc857610dc8612934565b9060005260206000209060080201600301548460800151610de9919061294a565b610df39190612961565b815250838381518110610e0857610e08612934565b6020026020010181905250508080610e1f90612983565b915050610cec565b509392505050565b610e37612536565b6005548110610e585760405162461bcd60e51b81526004016105ba906128ab565b600060058281548110610e6d57610e6d612934565b600091825260208083208584526006825260408085203386529092529220600760089092029092019081015490925060ff16610ef75760405162461bcd60e51b8152602060048201526024808201527f5374616b696e673a20636c61696d20706572696f64206973206e6f74207374616044820152631c9d195960e21b60648201526084016105ba565b6000816002015411610f4b5760405162461bcd60e51b815260206004820152601a60248201527f5374616b696e673a207573657220686173206e6f207374616b6500000000000060448201526064016105ba565b8160060154600003610f945760405162461bcd60e51b81526020600482015260126024820152715374616b696e673a20706f6f6c206c69766560701b60448201526064016105ba565b8160060154421015610fe85760405162461bcd60e51b815260206004820152601760248201527f5374616b696e673a20706f6f6c206e6f7420656e64656400000000000000000060448201526064016105ba565b600681015460ff161561103d5760405162461bcd60e51b815260206004820152601d60248201527f5374616b696e673a207573657220616c726561647920636c61696d656400000060448201526064016105ba565b60068101805460ff1916600117905560028101805460098301819055600090915560045460ff16156110e05760025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de919061299c565b505b600482018054600091829055338252600860209081526040808420888552909152822054600186015460038701549293919261111c908561294a565b6111269190612961565b600886018190556000888152600760205260409020805491925086918490811061115257611152612934565b6000918252602082208354600a9092020180546001600160a01b0319166001600160a01b039092169190911781556001808401549082015560028084015490820155600380840154908201556004808401549082015560058084015490820155600680840154908201805460ff909216151560ff199092169190911790556007808401549082015560088084015490820155600992830154920191909155604051339183156108fc02918491818181858888f1935050505015801561121b573d6000803e3d6000fd5b50604080518881526020810186905233917f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a910160405180910390a250505050505061126660018055565b50565b6000546001600160a01b031633146112935760405162461bcd60e51b81526004016105ba90612876565b6002546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156112e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130991906129b9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611354573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611266919061299c565b600554606090821061139c5760405162461bcd60e51b81526004016105ba906128ab565b600082815260076020908152604080832080548251818502810185019093528083529193909284015b828210156114665760008481526020908190206040805161014081018252600a860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460ff16151560c0840152600781015460e084015260088101546101008401526009015461012083015290835290920191016113c5565b505050509050919050565b611479612536565b600554811061149a5760405162461bcd60e51b81526004016105ba906128ab565b6000600582815481106114af576114af612934565b6000918252602080832085845260068252604080852033865290925292206002810154600890920290920192506115285760405162461bcd60e51b815260206004820152601a60248201527f5374616b696e673a207573657220686173206e6f207374616b6500000000000060448201526064016105ba565b60068201541561154a5760405162461bcd60e51b81526004016105ba906129d2565b600782015460ff161561156f5760405162461bcd60e51b81526004016105ba906129d2565b6000816002015490508083600201600082825461158c91906128f8565b909155505060048201546001840180546000906115aa9084906128f8565b90915550506000600283018190556004830181905533815260086020908152604080832087845282528083205460079092529091208054849190839081106115f4576115f4612934565b600091825260209091208254600a9092020180546001600160a01b0319166001600160a01b039283161781556001808401549082015560028084015481830155600380850154908301556004808501549083015560058085015490830155600680850154908301805460ff909216151560ff199092169190911790556007808501549083015560088085015490830155600993840154939091019290925590541663a9059cbb3360646116a886604b61294a565b6116b29190612961565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156116fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611721919061299c565b506002546001600160a01b031663a9059cbb6117456000546001600160a01b031690565b606461175286601961294a565b61175c9190612961565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb919061299c565b50604080518681526020810184905233917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595910160405180910390a25050505061126660018055565b6000546001600160a01b0316331461183e5760405162461bcd60e51b81526004016105ba90612876565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60055460009082106118ac5760405162461bcd60e51b81526004016105ba906128ab565b5060009081526007602052604090205490565b60055460009083106118e35760405162461bcd60e51b81526004016105ba906128ab565b60008381526006602090815260408083206001600160a01b03861684529091528120600580549192918690811061191c5761191c612934565b906000526020600020906008020190506000826004015490506000826001015483600301548361194c919061294a565b6119569190612961565b979650505050505050565b6000546001600160a01b0316331461198b5760405162461bcd60e51b81526004016105ba90612876565b60058054604080516101008101825282815260006020820181815282840182815260608401838152426080860181815260a0870186815260c0880187815260e0890188815260018c018d559b8852975160088b027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081019190915595517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db187015593517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db286015591517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db385015590517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db484015590517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db583015592517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db682015594517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db7909501805495151560ff19909616959095179094559051919290917f370b09ab844737f9ba8d7e02c6bb837b4ecacd3de27024c04e2fc44c1dce65b191611b6f9185918591819093845260208401929092526040830152606082015260800190565b60405180910390a15050565b611b83612536565b60008211611ba35760405162461bcd60e51b81526004016105ba906129ff565b6005548310611bc45760405162461bcd60e51b81526004016105ba906128ab565b600060058481548110611bd957611bd9612934565b906000526020600020906008020190508060040154421015611c395760405162461bcd60e51b815260206004820152601960248201527814dd185ada5b99ce881c1bdbdb081b9bdd081cdd185c9d1959603a1b60448201526064016105ba565b600681015415611c5b5760405162461bcd60e51b81526004016105ba906129d2565b600781015460ff1615611c805760405162461bcd60e51b81526004016105ba906129d2565b6002546040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfb919061299c565b50600084815260066020908152604080832033845290915290206002810154158015611d3f5750336000908152600860209081526040808320888452909152902054155b15611f4c5780546001600160a01b03191633178155426003820181905560018201869055600782018190556005820184905560028201859055600483015460009190611d8e90629e340061290b565b1115611db557428360040154629e3400611da8919061290b565b611db291906128f8565b90505b6000611dc46202a30083612961565b611dcf90600161290b565b611dd9908761294a565b9050858460020154611deb919061290b565b60028501556082851015611e21576064611e0682600f61294a565b611e109190612961565b611e1a908261290b565b9050611e5c565b610168851015611e38576064611e0682600a61294a565b6064611e4582600561294a565b611e4f9190612961565b611e59908261290b565b90505b600483018190556001840154611e7390829061290b565b6001808601919091556000888152600760208181526040808420805480870182559085528285208954600a830290910180546001600160a01b0319166001600160a01b0390921691909117815589870154968101969096556002808a0154908701556003808a0154908701556004808a0154908701556005808a0154908701556006808a0154908701805460ff909216151560ff199092169190911790558884015493860193909355600880890154818701556009808a01549601959095553384529381528383208b8452905291902055506121539050565b600581018390556002810154611f6390859061290b565b600282015560048201546000904290611f7f90629e340061290b565b1115611fa657428360040154629e3400611f99919061290b565b611fa391906128f8565b90505b6000611fb56202a30083612961565b611fc090600161290b565b611fca908761294a565b90506082851015611ffd576064611fe282600f61294a565b611fec9190612961565b611ff6908261290b565b9050612038565b610168851015612014576064611fe282600a61294a565b606461202182600561294a565b61202b9190612961565b612035908261290b565b90505b8083600401600082825461204c919061290b565b9091555050600284015461206190879061290b565b6002850155600184015461207690829061290b565b60018501553360009081526008602090815260408083208a845282528083205460079092529091208054859190839081106120b3576120b3612934565b600091825260209091208254600a9092020180546001600160a01b0319166001600160a01b039092169190911781556001808301549082015560028083015490820155600380830154908201556004808301549082015560058083015490820155600680830154908201805460ff909216151560ff1990921691909117905560078083015490820155600880830154908201556009918201549101555050505b604080518681526020810186905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a2505061219960018055565b505050565b6000546001600160a01b031633146121c85760405162461bcd60e51b81526004016105ba90612876565b600081116121e85760405162461bcd60e51b81526004016105ba906129ff565b3481146122375760405162461bcd60e51b815260206004820152601760248201527f5374616b696e673a20696e76616c696420616d6f756e7400000000000000000060448201526064016105ba565b60055482106122585760405162461bcd60e51b81526004016105ba906128ab565b60006005838154811061226d5761226d612934565b9060005260206000209060080201905080600401544210156122cd5760405162461bcd60e51b815260206004820152601960248201527814dd185ada5b99ce881c1bdbdb081b9bdd081cdd185c9d1959603a1b60448201526064016105ba565b6006810154156122ef5760405162461bcd60e51b81526004016105ba906129d2565b600781015460ff16156123145760405162461bcd60e51b81526004016105ba906129d2565b81816003016000828254612328919061290b565b9091555050505050565b6000546001600160a01b0316331461235c5760405162461bcd60e51b81526004016105ba90612876565b600554811061237d5760405162461bcd60e51b81526004016105ba906128ab565b60006005828154811061239257612392612934565b60009182526020909120426006600890930290910191820181905560078201805460ff191660011790556040519192507fd716c70bf1c08d6bad08ed17106b326a57bab58f18d5e4b3ccef3f314c5afce191611b6f91858252602082015260400190565b6000546001600160a01b031633146124205760405162461bcd60e51b81526004016105ba90612876565b60405133904780156108fc02916000818181858888f19350505050158015611266573d6000803e3d6000fd5b6000546001600160a01b031633146124765760405162461bcd60e51b81526004016105ba90612876565b6001600160a01b0381166124db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ba565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60026001540361255957604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b60405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b801515811461126657600080fd5b6000602082840312156125e557600080fd5b81356125f0816125c5565b9392505050565b6000806040838503121561260a57600080fd5b50508035926020909101359150565b80356001600160a01b038116811461263057600080fd5b919050565b6000806040838503121561264857600080fd5b8235915061265860208401612619565b90509250929050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c08101516126b360c084018215159052565b5060e08181015190830152610100808201519083015261012090810151910152565b610140810161076c8284612661565b6000602082840312156126f657600080fd5b5035919050565b60008060006060848603121561271257600080fd5b505081359360208301359350604090920135919050565b602080825282518282018190526000919060409081850190868401855b828110156127d557815180516001600160a01b0316855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c08082015115159086015260e080820151908601526101008082015190860152610120808201519086015261014090810151908501526101609093019290850190600101612746565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561282557612811838551612661565b9284019261014092909201916001016127fe565b50909695505050505050565b6000806040838503121561284457600080fd5b61284d83612619565b946020939093013593505050565b60006020828403121561286d57600080fd5b6125f082612619565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f5374616b696e673a20696e76616c696420706f6f6c2069640000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561076c5761076c6128e2565b8082018082111561076c5761076c6128e2565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761076c5761076c6128e2565b60008261297e57634e487b7160e01b600052601260045260246000fd5b500490565b600060018201612995576129956128e2565b5060010190565b6000602082840312156129ae57600080fd5b81516125f0816125c5565b6000602082840312156129cb57600080fd5b5051919050565b60208082526013908201527214dd185ada5b99ce881c1bdbdb08195b991959606a1b604082015260600190565b60208082526026908201527f5374616b696e673a20616d6f756e74206d75737420626520677265617465722060408201526507468616e20360d41b60608201526080019056fea2646970667358221220efa30561b18acc15104db1022e9201f270f998fee70efd7a556f8806ba037d4664736f6c63430008130033000000000000000000000000067def80d66fb69c276e53b641f37ff7525162f6
Deployed Bytecode
0x60806040526004361061016a5760003560e01c8063715018a6116100d1578063a17be43a1161008a578063c964ee9f11610064578063c964ee9f1461051b578063d13284b11461053b578063d5b014c31461055b578063f2fde38b1461057057600080fd5b8063a17be43a146104b0578063a638f2e2146104e8578063b49947e11461050857600080fd5b8063715018a6146103f057806373274b141461040557806373e22641146104335780638da5cb5b146104495780638eb352511461047b5780639a06b1131461049b57600080fd5b8063379607f511610123578063379607f5146102ea5780634ccb529a1461030a5780635237f7311461031f5780635312ea8e1461034c5780635e61b984146102135780635f02c1451461036c57600080fd5b80630ccf0664146101765780630f2b7cc9146101985780631069f3b5146102135780631526fe27146102405780632dd896991461029d57806335e2ce21146102ca57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101966101913660046125d3565b610590565b005b3480156101a457600080fd5b506101b86101b33660046125f7565b6105d6565b604080516001600160a01b03909b168b5260208b0199909952978901969096526060880194909452608087019290925260a0860152151560c085015260e0840152610100830152610120820152610140015b60405180910390f35b34801561021f57600080fd5b5061023361022e366004612635565b610653565b60405161020a91906126d5565b34801561024c57600080fd5b5061026061025b3660046126e4565b610772565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e08201526101000161020a565b3480156102a957600080fd5b506102bd6102b83660046126fd565b6107cb565b60405161020a9190612729565b3480156102d657600080fd5b506102bd6102e53660046126e4565b610b36565b3480156102f657600080fd5b506101966103053660046126e4565b610e2f565b34801561031657600080fd5b50610196611269565b34801561032b57600080fd5b5061033f61033a3660046126e4565b611378565b60405161020a91906127e2565b34801561035857600080fd5b506101966103673660046126e4565b611471565b34801561037857600080fd5b506101b8610387366004612635565b6006602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009909801546001600160a01b03909716989597949693959294929360ff9092169290918a565b3480156103fc57600080fd5b50610196611814565b34801561041157600080fd5b506104256104203660046126e4565b611888565b60405190815260200161020a565b34801561043f57600080fd5b5061042560035481565b34801561045557600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161020a565b34801561048757600080fd5b50610425610496366004612635565b6118bf565b3480156104a757600080fd5b50610196611961565b3480156104bc57600080fd5b506104256104cb366004612831565b600860209081526000928352604080842090915290825290205481565b3480156104f457600080fd5b506101966105033660046126fd565b611b7b565b6101966105163660046125f7565b61219e565b34801561052757600080fd5b506101966105363660046126e4565b612332565b34801561054757600080fd5b50600254610463906001600160a01b031681565b34801561056757600080fd5b506101966123f6565b34801561057c57600080fd5b5061019661058b36600461285b565b61244c565b6000546001600160a01b031633146105c35760405162461bcd60e51b81526004016105ba90612876565b60405180910390fd5b6004805460ff1916911515919091179055565b600760205281600052604060002081815481106105f257600080fd5b60009182526020909120600a909102018054600182015460028301546003840154600485015460058601546006870154600788015460088901546009909901546001600160a01b039098169a50959850939692959194909360ff169290918a565b6106b460405180610140016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160008152602001600081525090565b60055483106106d55760405162461bcd60e51b81526004016105ba906128ab565b5060008281526006602081815260408084206001600160a01b03808716865290835293819020815161014081018352815490951685526001810154928501929092526002820154908401526003810154606084015260048101546080840152600581015460a08401529081015460ff16151560c0830152600781015460e08301526008810154610100830152600901546101208201525b92915050565b6005818154811061078257600080fd5b6000918252602090912060089091020180546001820154600283015460038401546004850154600586015460068701546007909701549597509395929491939092909160ff1688565b60055460609084106107ef5760405162461bcd60e51b81526004016105ba906128ab565b600084815260076020526040902054831061084c5760405162461bcd60e51b815260206004820152601c60248201527f5374616b696e673a20696e76616c696420737461727420696e6465780000000060448201526064016105ba565b60008481526007602052604090205482106108a95760405162461bcd60e51b815260206004820152601a60248201527f5374616b696e673a20696e76616c696420656e6420696e64657800000000000060448201526064016105ba565b600084815260076020908152604080832080548251818502810185019093528083529192909190849084015b828210156109765760008481526020908190206040805161014081018252600a860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460ff16151560c0840152600781015460e084015260088101546101008401526009015461012083015290835290920191016108d5565b5050505090506000848461098a91906128f8565b61099590600161290b565b67ffffffffffffffff8111156109ad576109ad61291e565b6040519080825280602002602001820160405280156109e657816020015b6109d3612560565b8152602001906001900390816109cb5790505b509050845b848111610b2c576000838281518110610a0657610a06612934565b6020026020010151905060405180610160016040528082600001516001600160a01b03168152602001826020015181526020018260400151815260200182606001518152602001826080015181526020018260a0015181526020018260c00151151581526020018260e0015181526020018261010001518152602001826101200151815260200160058a81548110610aa057610aa0612934565b90600052602060002090600802016001015460058b81548110610ac557610ac5612934565b9060005260206000209060080201600301548460800151610ae6919061294a565b610af09190612961565b905283610afd89856128f8565b81518110610b0d57610b0d612934565b6020026020010181905250508080610b2490612983565b9150506109eb565b5095945050505050565b6005546060908210610b5a5760405162461bcd60e51b81526004016105ba906128ab565b60058281548110610b6d57610b6d612934565b906000526020600020906008020160010154600003610bbe576040805160008082526020820190925290610bb7565b610ba4612560565b815260200190600190039081610b9c5790505b5092915050565b600082815260076020908152604080832080548251818502810185019093528083529192909190849084015b82821015610c8b5760008481526020908190206040805161014081018252600a860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460ff16151560c0840152600781015460e08401526008810154610100840152600901546101208301529083529092019101610bea565b5050505090506000815167ffffffffffffffff811115610cad57610cad61291e565b604051908082528060200260200182016040528015610ce657816020015b610cd3612560565b815260200190600190039081610ccb5790505b50905060005b8251811015610e27576000838281518110610d0957610d09612934565b6020026020010151905060405180610160016040528082600001516001600160a01b03168152602001826020015181526020018260400151815260200182606001518152602001826080015181526020018260a0015181526020018260c00151151581526020018260e0015181526020018261010001518152602001826101200151815260200160058881548110610da357610da3612934565b90600052602060002090600802016001015460058981548110610dc857610dc8612934565b9060005260206000209060080201600301548460800151610de9919061294a565b610df39190612961565b815250838381518110610e0857610e08612934565b6020026020010181905250508080610e1f90612983565b915050610cec565b509392505050565b610e37612536565b6005548110610e585760405162461bcd60e51b81526004016105ba906128ab565b600060058281548110610e6d57610e6d612934565b600091825260208083208584526006825260408085203386529092529220600760089092029092019081015490925060ff16610ef75760405162461bcd60e51b8152602060048201526024808201527f5374616b696e673a20636c61696d20706572696f64206973206e6f74207374616044820152631c9d195960e21b60648201526084016105ba565b6000816002015411610f4b5760405162461bcd60e51b815260206004820152601a60248201527f5374616b696e673a207573657220686173206e6f207374616b6500000000000060448201526064016105ba565b8160060154600003610f945760405162461bcd60e51b81526020600482015260126024820152715374616b696e673a20706f6f6c206c69766560701b60448201526064016105ba565b8160060154421015610fe85760405162461bcd60e51b815260206004820152601760248201527f5374616b696e673a20706f6f6c206e6f7420656e64656400000000000000000060448201526064016105ba565b600681015460ff161561103d5760405162461bcd60e51b815260206004820152601d60248201527f5374616b696e673a207573657220616c726561647920636c61696d656400000060448201526064016105ba565b60068101805460ff1916600117905560028101805460098301819055600090915560045460ff16156110e05760025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de919061299c565b505b600482018054600091829055338252600860209081526040808420888552909152822054600186015460038701549293919261111c908561294a565b6111269190612961565b600886018190556000888152600760205260409020805491925086918490811061115257611152612934565b6000918252602082208354600a9092020180546001600160a01b0319166001600160a01b039092169190911781556001808401549082015560028084015490820155600380840154908201556004808401549082015560058084015490820155600680840154908201805460ff909216151560ff199092169190911790556007808401549082015560088084015490820155600992830154920191909155604051339183156108fc02918491818181858888f1935050505015801561121b573d6000803e3d6000fd5b50604080518881526020810186905233917f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a910160405180910390a250505050505061126660018055565b50565b6000546001600160a01b031633146112935760405162461bcd60e51b81526004016105ba90612876565b6002546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156112e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130991906129b9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611354573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611266919061299c565b600554606090821061139c5760405162461bcd60e51b81526004016105ba906128ab565b600082815260076020908152604080832080548251818502810185019093528083529193909284015b828210156114665760008481526020908190206040805161014081018252600a860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460ff16151560c0840152600781015460e084015260088101546101008401526009015461012083015290835290920191016113c5565b505050509050919050565b611479612536565b600554811061149a5760405162461bcd60e51b81526004016105ba906128ab565b6000600582815481106114af576114af612934565b6000918252602080832085845260068252604080852033865290925292206002810154600890920290920192506115285760405162461bcd60e51b815260206004820152601a60248201527f5374616b696e673a207573657220686173206e6f207374616b6500000000000060448201526064016105ba565b60068201541561154a5760405162461bcd60e51b81526004016105ba906129d2565b600782015460ff161561156f5760405162461bcd60e51b81526004016105ba906129d2565b6000816002015490508083600201600082825461158c91906128f8565b909155505060048201546001840180546000906115aa9084906128f8565b90915550506000600283018190556004830181905533815260086020908152604080832087845282528083205460079092529091208054849190839081106115f4576115f4612934565b600091825260209091208254600a9092020180546001600160a01b0319166001600160a01b039283161781556001808401549082015560028084015481830155600380850154908301556004808501549083015560058085015490830155600680850154908301805460ff909216151560ff199092169190911790556007808501549083015560088085015490830155600993840154939091019290925590541663a9059cbb3360646116a886604b61294a565b6116b29190612961565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156116fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611721919061299c565b506002546001600160a01b031663a9059cbb6117456000546001600160a01b031690565b606461175286601961294a565b61175c9190612961565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb919061299c565b50604080518681526020810184905233917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595910160405180910390a25050505061126660018055565b6000546001600160a01b0316331461183e5760405162461bcd60e51b81526004016105ba90612876565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60055460009082106118ac5760405162461bcd60e51b81526004016105ba906128ab565b5060009081526007602052604090205490565b60055460009083106118e35760405162461bcd60e51b81526004016105ba906128ab565b60008381526006602090815260408083206001600160a01b03861684529091528120600580549192918690811061191c5761191c612934565b906000526020600020906008020190506000826004015490506000826001015483600301548361194c919061294a565b6119569190612961565b979650505050505050565b6000546001600160a01b0316331461198b5760405162461bcd60e51b81526004016105ba90612876565b60058054604080516101008101825282815260006020820181815282840182815260608401838152426080860181815260a0870186815260c0880187815260e0890188815260018c018d559b8852975160088b027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081019190915595517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db187015593517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db286015591517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db385015590517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db484015590517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db583015592517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db682015594517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db7909501805495151560ff19909616959095179094559051919290917f370b09ab844737f9ba8d7e02c6bb837b4ecacd3de27024c04e2fc44c1dce65b191611b6f9185918591819093845260208401929092526040830152606082015260800190565b60405180910390a15050565b611b83612536565b60008211611ba35760405162461bcd60e51b81526004016105ba906129ff565b6005548310611bc45760405162461bcd60e51b81526004016105ba906128ab565b600060058481548110611bd957611bd9612934565b906000526020600020906008020190508060040154421015611c395760405162461bcd60e51b815260206004820152601960248201527814dd185ada5b99ce881c1bdbdb081b9bdd081cdd185c9d1959603a1b60448201526064016105ba565b600681015415611c5b5760405162461bcd60e51b81526004016105ba906129d2565b600781015460ff1615611c805760405162461bcd60e51b81526004016105ba906129d2565b6002546040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfb919061299c565b50600084815260066020908152604080832033845290915290206002810154158015611d3f5750336000908152600860209081526040808320888452909152902054155b15611f4c5780546001600160a01b03191633178155426003820181905560018201869055600782018190556005820184905560028201859055600483015460009190611d8e90629e340061290b565b1115611db557428360040154629e3400611da8919061290b565b611db291906128f8565b90505b6000611dc46202a30083612961565b611dcf90600161290b565b611dd9908761294a565b9050858460020154611deb919061290b565b60028501556082851015611e21576064611e0682600f61294a565b611e109190612961565b611e1a908261290b565b9050611e5c565b610168851015611e38576064611e0682600a61294a565b6064611e4582600561294a565b611e4f9190612961565b611e59908261290b565b90505b600483018190556001840154611e7390829061290b565b6001808601919091556000888152600760208181526040808420805480870182559085528285208954600a830290910180546001600160a01b0319166001600160a01b0390921691909117815589870154968101969096556002808a0154908701556003808a0154908701556004808a0154908701556005808a0154908701556006808a0154908701805460ff909216151560ff199092169190911790558884015493860193909355600880890154818701556009808a01549601959095553384529381528383208b8452905291902055506121539050565b600581018390556002810154611f6390859061290b565b600282015560048201546000904290611f7f90629e340061290b565b1115611fa657428360040154629e3400611f99919061290b565b611fa391906128f8565b90505b6000611fb56202a30083612961565b611fc090600161290b565b611fca908761294a565b90506082851015611ffd576064611fe282600f61294a565b611fec9190612961565b611ff6908261290b565b9050612038565b610168851015612014576064611fe282600a61294a565b606461202182600561294a565b61202b9190612961565b612035908261290b565b90505b8083600401600082825461204c919061290b565b9091555050600284015461206190879061290b565b6002850155600184015461207690829061290b565b60018501553360009081526008602090815260408083208a845282528083205460079092529091208054859190839081106120b3576120b3612934565b600091825260209091208254600a9092020180546001600160a01b0319166001600160a01b039092169190911781556001808301549082015560028083015490820155600380830154908201556004808301549082015560058083015490820155600680830154908201805460ff909216151560ff1990921691909117905560078083015490820155600880830154908201556009918201549101555050505b604080518681526020810186905233917f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a2505061219960018055565b505050565b6000546001600160a01b031633146121c85760405162461bcd60e51b81526004016105ba90612876565b600081116121e85760405162461bcd60e51b81526004016105ba906129ff565b3481146122375760405162461bcd60e51b815260206004820152601760248201527f5374616b696e673a20696e76616c696420616d6f756e7400000000000000000060448201526064016105ba565b60055482106122585760405162461bcd60e51b81526004016105ba906128ab565b60006005838154811061226d5761226d612934565b9060005260206000209060080201905080600401544210156122cd5760405162461bcd60e51b815260206004820152601960248201527814dd185ada5b99ce881c1bdbdb081b9bdd081cdd185c9d1959603a1b60448201526064016105ba565b6006810154156122ef5760405162461bcd60e51b81526004016105ba906129d2565b600781015460ff16156123145760405162461bcd60e51b81526004016105ba906129d2565b81816003016000828254612328919061290b565b9091555050505050565b6000546001600160a01b0316331461235c5760405162461bcd60e51b81526004016105ba90612876565b600554811061237d5760405162461bcd60e51b81526004016105ba906128ab565b60006005828154811061239257612392612934565b60009182526020909120426006600890930290910191820181905560078201805460ff191660011790556040519192507fd716c70bf1c08d6bad08ed17106b326a57bab58f18d5e4b3ccef3f314c5afce191611b6f91858252602082015260400190565b6000546001600160a01b031633146124205760405162461bcd60e51b81526004016105ba90612876565b60405133904780156108fc02916000818181858888f19350505050158015611266573d6000803e3d6000fd5b6000546001600160a01b031633146124765760405162461bcd60e51b81526004016105ba90612876565b6001600160a01b0381166124db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ba565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60026001540361255957604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b60405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b801515811461126657600080fd5b6000602082840312156125e557600080fd5b81356125f0816125c5565b9392505050565b6000806040838503121561260a57600080fd5b50508035926020909101359150565b80356001600160a01b038116811461263057600080fd5b919050565b6000806040838503121561264857600080fd5b8235915061265860208401612619565b90509250929050565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c08101516126b360c084018215159052565b5060e08181015190830152610100808201519083015261012090810151910152565b610140810161076c8284612661565b6000602082840312156126f657600080fd5b5035919050565b60008060006060848603121561271257600080fd5b505081359360208301359350604090920135919050565b602080825282518282018190526000919060409081850190868401855b828110156127d557815180516001600160a01b0316855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c08082015115159086015260e080820151908601526101008082015190860152610120808201519086015261014090810151908501526101609093019290850190600101612746565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561282557612811838551612661565b9284019261014092909201916001016127fe565b50909695505050505050565b6000806040838503121561284457600080fd5b61284d83612619565b946020939093013593505050565b60006020828403121561286d57600080fd5b6125f082612619565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f5374616b696e673a20696e76616c696420706f6f6c2069640000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561076c5761076c6128e2565b8082018082111561076c5761076c6128e2565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761076c5761076c6128e2565b60008261297e57634e487b7160e01b600052601260045260246000fd5b500490565b600060018201612995576129956128e2565b5060010190565b6000602082840312156129ae57600080fd5b81516125f0816125c5565b6000602082840312156129cb57600080fd5b5051919050565b60208082526013908201527214dd185ada5b99ce881c1bdbdb08195b991959606a1b604082015260600190565b60208082526026908201527f5374616b696e673a20616d6f756e74206d75737420626520677265617465722060408201526507468616e20360d41b60608201526080019056fea2646970667358221220efa30561b18acc15104db1022e9201f270f998fee70efd7a556f8806ba037d4664736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000067def80d66fb69c276e53b641f37ff7525162f6
-----Decoded View---------------
Arg [0] : _oGPU (address): 0x067Def80D66fB69C276e53b641f37ff7525162f6
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000067def80d66fb69c276e53b641f37ff7525162f6
Deployed Bytecode Sourcemap
6310:13428:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14547:91;;;;;;;;;;-1:-1:-1;14547:91:0;;;;;:::i;:::-;;:::i;:::-;;8351:48;;;;;;;;;;-1:-1:-1;8351:48:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;1252:32:1;;;1234:51;;1316:2;1301:18;;1294:34;;;;1344:18;;;1337:34;;;;1402:2;1387:18;;1380:34;;;;1445:3;1430:19;;1423:35;;;;1272:3;1474:19;;1467:35;1546:14;1539:22;1533:3;1518:19;;1511:51;1593:3;1578:19;;1571:35;1637:3;1622:19;;1615:35;1681:3;1666:19;;1659:35;1221:3;1206:19;8351:48:0;;;;;;;;14964:219;;;;;;;;;;-1:-1:-1;14964:219:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8242:26::-;;;;;;;;;;-1:-1:-1;8242:26:0;;;;;:::i;:::-;;:::i;:::-;;;;3623:25:1;;;3679:2;3664:18;;3657:34;;;;3707:18;;;3700:34;;;;3765:2;3750:18;;3743:34;;;;3808:3;3793:19;;3786:35;3852:3;3837:19;;3830:35;3896:3;3881:19;;3874:35;3953:14;3946:22;3940:3;3925:19;;3918:51;3610:3;3595:19;8242:26:0;3286:689:1;16583:1282:0;;;;;;;;;;-1:-1:-1;16583:1282:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15397:1178::-;;;;;;;;;;-1:-1:-1;15397:1178:0;;;;;:::i;:::-;;:::i;12380:1231::-;;;;;;;;;;-1:-1:-1;12380:1231:0;;;;;:::i;:::-;;:::i;19615:118::-;;;;;;;;;;;;;:::i;15191:198::-;;;;;;;;;;-1:-1:-1;15191:198:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13619:920::-;;;;;;;;;;-1:-1:-1;13619:920:0;;;;;:::i;:::-;;:::i;8275:69::-;;;;;;;;;;-1:-1:-1;8275:69:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8275:69:0;;;;;;;;;;;;;;;;;;;;;;;2083:148;;;;;;;;;;;;;:::i;18100:201::-;;;;;;;;;;-1:-1:-1;18100:201:0;;;;;:::i;:::-;;:::i;:::-;;;6746:25:1;;;6734:2;6719:18;18100:201:0;6600:177:1;6392:20:0;;;;;;;;;;;;;;;;1869:79;;;;;;;;;;-1:-1:-1;1907:7:0;1934:6;-1:-1:-1;;;;;1934:6:0;1869:79;;;-1:-1:-1;;;;;6946:32:1;;;6928:51;;6916:2;6901:18;1869:79:0;6782:203:1;18309:490:0;;;;;;;;;;-1:-1:-1;18309:490:0;;;;;:::i;:::-;;:::i;9001:477::-;;;;;;;;;;;;;:::i;8406:70::-;;;;;;;;;;-1:-1:-1;8406:70:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9486:2886;;;;;;;;;;-1:-1:-1;9486:2886:0;;;;;:::i;:::-;;:::i;18807:593::-;;;;;;:::i;:::-;;:::i;14650:306::-;;;;;;;;;;-1:-1:-1;14650:306:0;;;;;:::i;:::-;;:::i;6366:19::-;;;;;;;;;;-1:-1:-1;6366:19:0;;;;-1:-1:-1;;;;;6366:19:0;;;19451:112;;;;;;;;;;;;;:::i;2239:244::-;;;;;;;;;;-1:-1:-1;2239:244:0;;;;;:::i;:::-;;:::i;14547:91::-;1996:6;;-1:-1:-1;;;;;1996:6:0;1272:10;1996:22;1988:67;;;;-1:-1:-1;;;1988:67:0;;;;;;;:::i;:::-;;;;;;;;;14610:11:::1;:20:::0;;-1:-1:-1;;14610:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14547:91::o;8351:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8351:48:0;;;;-1:-1:-1;8351:48:0;;-1:-1:-1;8351:48:0;;;;;;;;;;;;;;:::o;14964:219::-;15040:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15040:15:0;15086:8;:15;15076:25;;15068:62;;;;-1:-1:-1;;;15068:62:0;;;;;;;:::i;:::-;-1:-1:-1;15148:20:0;;;;:11;:20;;;;;;;;-1:-1:-1;;;;;15148:27:0;;;;;;;;;;;;15141:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14964:219;;;;;:::o;8242:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8242:26:0;;;;;;;;;;;;;:::o;16583:1282::-;16748:8;:15;16690:27;;16738:25;;16730:62;;;;-1:-1:-1;;;16730:62:0;;;;;;;:::i;:::-;16820:18;;;;:9;:18;;;;;:25;16811:34;;16803:75;;;;-1:-1:-1;;;16803:75:0;;8577:2:1;16803:75:0;;;8559:21:1;8616:2;8596:18;;;8589:30;8655;8635:18;;;8628:58;8703:18;;16803:75:0;8375:352:1;16803:75:0;16904:18;;;;:9;:18;;;;;:25;16897:32;;16889:71;;;;-1:-1:-1;;;16889:71:0;;8934:2:1;16889:71:0;;;8916:21:1;8973:2;8953:18;;;8946:30;9012:28;8992:18;;;8985:56;9058:18;;16889:71:0;8732:350:1;16889:71:0;16971:23;16997:18;;;:9;:18;;;;;;;;16971:44;;;;;;;;;;;;;;;;;;;16997:18;;16971:44;:23;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16971:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17026:43;17104:6;17097:4;:13;;;;:::i;:::-;:17;;17113:1;17097:17;:::i;:::-;17072:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;17026:89:0;-1:-1:-1;17143:6:0;17126:699;17156:4;17151:1;:9;17126:699;;17182:20;17205:5;17211:1;17205:8;;;;;;;;:::i;:::-;;;;;;;17182:31;;17258:555;;;;;;;;17302:4;:9;;;-1:-1:-1;;;;;17258:555:0;;;;;17338:4;:11;;;17258:555;;;;17376:4;:11;;;17258:555;;;;17417:4;:14;;;17258:555;;;;17458:4;:11;;;17258:555;;;;17495:4;:10;;;17258:555;;;;17533:4;:12;;;17258:555;;;;;;17579:4;:18;;;17258:555;;;;17628:4;:15;;;17258:555;;;;17675:4;:16;;;17258:555;;;;17768:8;17777:7;17768:17;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;;17732:8;17741:7;17732:17;;;;;;;;:::i;:::-;;;;;;;;;;;:32;;;17718:4;:11;;;:46;;;;:::i;:::-;17717:80;;;;:::i;:::-;17258:555;;17228:15;17244:10;17248:6;17244:1;:10;:::i;:::-;17228:27;;;;;;;;:::i;:::-;;;;;;:585;;;;17167:658;17162:3;;;;;:::i;:::-;;;;17126:699;;;-1:-1:-1;17842:15:0;16583:1282;-1:-1:-1;;;;;16583:1282:0:o;15397:1178::-;15527:8;:15;15469:27;;15517:25;;15509:62;;;;-1:-1:-1;;;15509:62:0;;;;;;;:::i;:::-;15586:8;15595:7;15586:17;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;;15619:1;15586:34;15582:101;;15644:27;;;15669:1;15644:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;15637:34:0;15397:1178;-1:-1:-1;;15397:1178:0:o;15582:101::-;15693:23;15719:18;;;:9;:18;;;;;;;;15693:44;;;;;;;;;;;;;;;;;;;15719:18;;15693:44;:23;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15693:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15748:43;15819:5;:12;15794:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;15748:84;;15848:9;15843:692;15867:5;:12;15863:1;:16;15843:692;;;15901:20;15924:5;15930:1;15924:8;;;;;;;;:::i;:::-;;;;;;;15901:31;;15968:555;;;;;;;;16012:4;:9;;;-1:-1:-1;;;;;15968:555:0;;;;;16048:4;:11;;;15968:555;;;;16086:4;:11;;;15968:555;;;;16127:4;:14;;;15968:555;;;;16168:4;:11;;;15968:555;;;;16205:4;:10;;;15968:555;;;;16243:4;:12;;;15968:555;;;;;;16289:4;:18;;;15968:555;;;;16338:4;:15;;;15968:555;;;;16385:4;:16;;;15968:555;;;;16478:8;16487:7;16478:17;;;;;;;;:::i;:::-;;;;;;;;;;;:29;;;16442:8;16451:7;16442:17;;;;;;;;:::i;:::-;;;;;;;;;;;:32;;;16428:4;:11;;;:46;;;;:::i;:::-;16427:80;;;;:::i;:::-;15968:555;;;15947:15;15963:1;15947:18;;;;;;;;:::i;:::-;;;;;;:576;;;;15886:649;15881:3;;;;;:::i;:::-;;;;15843:692;;;-1:-1:-1;16552:15:0;15397:1178;-1:-1:-1;;;15397:1178:0:o;12380:1231::-;4908:21;:19;:21::i;:::-;12463:8:::1;:15:::0;12453:25;::::1;12445:62;;;;-1:-1:-1::0;;;12445:62:0::1;;;;;;;:::i;:::-;12518:21;12542:8;12551:7;12542:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;12594:20;;;:11:::1;:20:::0;;;;;;12615:10:::1;12594:32:::0;;;;;;;12645:10:::1;12542:17;::::0;;::::1;::::0;;::::1;12645:10:::0;;::::1;::::0;12542:17;;-1:-1:-1;12645:10:0::1;;12637:59;;;::::0;-1:-1:-1;;;12637:59:0;;10483:2:1;12637:59:0::1;::::0;::::1;10465:21:1::0;10522:2;10502:18;;;10495:30;10561:34;10541:18;;;10534:62;-1:-1:-1;;;10612:18:1;;;10605:34;10656:19;;12637:59:0::1;10281:400:1::0;12637:59:0::1;12729:1;12715:4;:11;;;:15;12707:54;;;::::0;-1:-1:-1;;;12707:54:0;;10888:2:1;12707:54:0::1;::::0;::::1;10870:21:1::0;10927:2;10907:18;;;10900:30;10966:28;10946:18;;;10939:56;11012:18;;12707:54:0::1;10686:350:1::0;12707:54:0::1;12780:4;:12;;;12796:1;12780:17:::0;12772:48:::1;;;::::0;-1:-1:-1;;;12772:48:0;;11243:2:1;12772:48:0::1;::::0;::::1;11225:21:1::0;11282:2;11262:18;;;11255:30;-1:-1:-1;;;11301:18:1;;;11294:48;11359:18;;12772:48:0::1;11041:342:1::0;12772:48:0::1;12858:4;:12;;;12839:15;:31;;12831:67;;;::::0;-1:-1:-1;;;12831:67:0;;11590:2:1;12831:67:0::1;::::0;::::1;11572:21:1::0;11629:2;11609:18;;;11602:30;11668:25;11648:18;;;11641:53;11711:18;;12831:67:0::1;11388:347:1::0;12831:67:0::1;12918:12;::::0;::::1;::::0;::::1;;12917:13;12909:55;;;::::0;-1:-1:-1;;;12909:55:0;;11942:2:1;12909:55:0::1;::::0;::::1;11924:21:1::0;11981:2;11961:18;;;11954:30;12020:31;12000:18;;;11993:59;12069:18;;12909:55:0::1;11740:353:1::0;12909:55:0::1;12977:12;::::0;::::1;:19:::0;;-1:-1:-1;;12977:19:0::1;12992:4;12977:19;::::0;;13025:11:::1;::::0;::::1;::::0;;13047:16:::1;::::0;::::1;:26:::0;;;12977:12:::1;13084:15:::0;;;-1:-1:-1;13114:11:0;12977:19:::1;13114:11;13110:77;;;13141:4;::::0;:34:::1;::::0;-1:-1:-1;;;13141:34:0;;13155:10:::1;13141:34;::::0;::::1;12272:51:1::0;12339:18;;;12332:34;;;-1:-1:-1;;;;;13141:4:0;;::::1;::::0;:13:::1;::::0;12245:18:1;;13141:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13110:77;13215:11;::::0;::::1;::::0;;13197:15:::1;13237::::0;;;;13323:10:::1;13309:25:::0;;:13:::1;:25;::::0;;;;;;;:34;;;;;;;;;-1:-1:-1;13405:16:0;::::1;::::0;13382:19:::1;::::0;::::1;::::0;13215:11;;13309:34;;13372:29:::1;::::0;13215:11;13372:29:::1;:::i;:::-;13371:50;;;;:::i;:::-;13432:15;::::0;::::1;:24:::0;;;13467:18:::1;::::0;;;:9:::1;:18;::::0;;;;:29;;13354:67;;-1:-1:-1;13432:4:0;;13486:9;;13467:29;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;:36;;:29:::1;::::0;;::::1;;:36:::0;;-1:-1:-1;;;;;;13467:36:0::1;-1:-1:-1::0;;;;;13467:36:0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;13467:36:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;13514::::1;::::0;13522:10:::1;::::0;13514:36;::::1;;;::::0;13543:6;;13514:36;13467:29;13514:36;13543:6;13522:10;13514:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13566:37:0::1;::::0;;12801:25:1;;;12857:2;12842:18;;12835:34;;;13574:10:0::1;::::0;13566:37:::1;::::0;12774:18:1;13566:37:0::1;;;;;;;12434:1177;;;;;;4952:20:::0;4243:1;5494:21;;5311:212;4952:20;12380:1231;:::o;19615:118::-;1996:6;;-1:-1:-1;;;;;1996:6:0;1272:10;1996:22;1988:67;;;;-1:-1:-1;;;1988:67:0;;;;;;;:::i;:::-;19669:4:::1;::::0;19695:29:::1;::::0;-1:-1:-1;;;19695:29:0;;19718:4:::1;19695:29;::::0;::::1;6928:51:1::0;-1:-1:-1;;;;;19669:4:0;;::::1;::::0;:13:::1;::::0;19683:10:::1;::::0;19669:4;;19695:14:::1;::::0;6901:18:1;;19695:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19669:56;::::0;-1:-1:-1;;;;;;19669:56:0::1;::::0;;;;;;-1:-1:-1;;;;;12290:32:1;;;19669:56:0::1;::::0;::::1;12272:51:1::0;12339:18;;;12332:34;12245:18;;19669:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15191:198::-:0;15301:8;:15;15253:17;;15291:25;;15283:62;;;;-1:-1:-1;;;15283:62:0;;;;;;;:::i;:::-;15363:18;;;;:9;:18;;;;;;;;15356:25;;;;;;;;;;;;;;;;;;;15363:18;;15356:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15356:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15191:198;;;:::o;13619:920::-;4908:21;:19;:21::i;:::-;13714:8:::1;:15:::0;13704:25;::::1;13696:62;;;;-1:-1:-1::0;;;13696:62:0::1;;;;;;;:::i;:::-;13769:21;13793:8;13802:7;13793:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;13845:20;;;:11:::1;:20:::0;;;;;;13866:10:::1;13845:32:::0;;;;;;;13896:11:::1;::::0;::::1;::::0;13793:17:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;13888:54:0::1;;;::::0;-1:-1:-1;;;13888:54:0;;10888:2:1;13888:54:0::1;::::0;::::1;10870:21:1::0;10927:2;10907:18;;;10900:30;10966:28;10946:18;;;10939:56;11012:18;;13888:54:0::1;10686:350:1::0;13888:54:0::1;13961:12;::::0;::::1;::::0;:17;13953:49:::1;;;;-1:-1:-1::0;;;13953:49:0::1;;;;;;;:::i;:::-;14021:10;::::0;::::1;::::0;::::1;;:19;14013:51;;;;-1:-1:-1::0;;;14013:51:0::1;;;;;;;:::i;:::-;14075:15;14093:4;:11;;;14075:29;;14135:7;14115:4;:16;;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;14173:11:0::1;::::0;::::1;::::0;14153:16:::1;::::0;::::1;:31:::0;;:16:::1;::::0;:31:::1;::::0;14173:11;;14153:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;14209:1:0::1;14195:11;::::0;::::1;:15:::0;;;14221:11:::1;::::0;::::1;:15:::0;;;14281:10:::1;14267:25:::0;;:13:::1;:25;::::0;;;;;;;:34;;;;;;;;;14312:9:::1;:18:::0;;;;;;:29;;14195:4;;14312:18;14267:34;;14312:29;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:36;;:29:::1;::::0;;::::1;;:36:::0;;-1:-1:-1;;;;;;14312:36:0::1;-1:-1:-1::0;;;;;14312:36:0;;::::1;;::::0;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;14312:36:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;14359:4;;::::1;:13;14373:10;14402:3;14386:12;:7:::0;14396:2:::1;14386:12;:::i;:::-;14385:20;;;;:::i;:::-;14359:47;::::0;-1:-1:-1;;;;;;14359:47:0::1;::::0;;;;;;-1:-1:-1;;;;;12290:32:1;;;14359:47:0::1;::::0;::::1;12272:51:1::0;12339:18;;;12332:34;12245:18;;14359:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14417:4:0::1;::::0;-1:-1:-1;;;;;14417:4:0::1;:13;14439:7;1907::::0;1934:6;-1:-1:-1;;;;;1934:6:0;;1869:79;14439:7:::1;14464:3;14449:12;:7:::0;14459:2:::1;14449:12;:::i;:::-;14448:19;;;;:::i;:::-;14417:51;::::0;-1:-1:-1;;;;;;14417:51:0::1;::::0;;;;;;-1:-1:-1;;;;;12290:32:1;;;14417:51:0::1;::::0;::::1;12272::1::0;12339:18;;;12332:34;12245:18;;14417:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14484:47:0::1;::::0;;12801:25:1;;;12857:2;12842:18;;12835:34;;;14502:10:0::1;::::0;14484:47:::1;::::0;12774:18:1;14484:47:0::1;;;;;;;13685:854;;;;4952:20:::0;4243:1;5494:21;;5311:212;2083:148;1996:6;;-1:-1:-1;;;;;1996:6:0;1272:10;1996:22;1988:67;;;;-1:-1:-1;;;1988:67:0;;;;;;;:::i;:::-;2190:1:::1;2174:6:::0;;2153:40:::1;::::0;-1:-1:-1;;;;;2174:6:0;;::::1;::::0;2153:40:::1;::::0;2190:1;;2153:40:::1;2221:1;2204:19:::0;;-1:-1:-1;;;;;;2204:19:0::1;::::0;;2083:148::o;18100:201::-;18206:8;:15;18168:7;;18196:25;;18188:62;;;;-1:-1:-1;;;18188:62:0;;;;;;;:::i;:::-;-1:-1:-1;18268:18:0;;;;:9;:18;;;;;:25;;18100:201::o;18309:490::-;18429:8;:15;18391:7;;18419:25;;18411:62;;;;-1:-1:-1;;;18411:62:0;;;;;;;:::i;:::-;18484:21;18508:20;;;:11;:20;;;;;;;;-1:-1:-1;;;;;18508:27:0;;;;;;;;;18570:8;:17;;18508:27;;18484:21;18520:7;;18570:17;;;;;;:::i;:::-;;;;;;;;;;;18546:41;;18660:15;18678:4;:11;;;18660:29;;18700:14;18751:4;:16;;;18728:4;:19;;;18718:7;:29;;;;:::i;:::-;18717:50;;;;:::i;:::-;18700:67;18309:490;-1:-1:-1;;;;;;;18309:490:0:o;9001:477::-;1996:6;;-1:-1:-1;;;;;1996:6:0;1272:10;1996:22;1988:67;;;;-1:-1:-1;;;1988:67:0;;;;;;;:::i;:::-;9071:8:::1;:15:::0;;9160:255:::1;::::0;;::::1;::::0;::::1;::::0;;;;;9053:15:::1;9160:255;::::0;::::1;::::0;;;;;;;;;;;;;;;9118:15:::1;9160:255:::0;;;;;;;;;;;;;;;;;;;;;;;;;9146:270;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;9146:270:0;;::::1;::::0;;;::::1;::::0;;;9432:38;;9071:15;;9118;;9432:38:::1;::::0;::::1;::::0;9071:15;;9118;;9053;;13664:25:1;;;13720:2;13705:18;;13698:34;;;;13763:2;13748:18;;13741:34;13806:2;13791:18;;13784:34;13651:3;13636:19;;13417:407;9432:38:0::1;;;;;;;;9042:436;;9001:477::o:0;9486:2886::-;4908:21;:19;:21::i;:::-;9602:1:::1;9592:7;:11;9584:62;;;;-1:-1:-1::0;;;9584:62:0::1;;;;;;;:::i;:::-;9675:8;:15:::0;9665:25;::::1;9657:62;;;;-1:-1:-1::0;;;9657:62:0::1;;;;;;;:::i;:::-;9730:21;9754:8;9763:7;9754:17;;;;;;;;:::i;:::-;;;;;;;;;;;9730:41;;9809:4;:14;;;9790:15;:33;;9782:71;;;::::0;-1:-1:-1;;;9782:71:0;;14438:2:1;9782:71:0::1;::::0;::::1;14420:21:1::0;14477:2;14457:18;;;14450:30;-1:-1:-1;;;14496:18:1;;;14489:55;14561:18;;9782:71:0::1;14236:349:1::0;9782:71:0::1;9872:12;::::0;::::1;::::0;:17;9864:49:::1;;;;-1:-1:-1::0;;;9864:49:0::1;;;;;;;:::i;:::-;9933:10;::::0;::::1;::::0;::::1;;9932:11;9924:43;;;;-1:-1:-1::0;;;9924:43:0::1;;;;;;;:::i;:::-;9978:4;::::0;:53:::1;::::0;-1:-1:-1;;;9978:53:0;;9996:10:::1;9978:53;::::0;::::1;14830:34:1::0;10016:4:0::1;14880:18:1::0;;;14873:43;14932:18;;;14925:34;;;-1:-1:-1;;;;;9978:4:0;;::::1;::::0;:17:::1;::::0;14765:18:1;;9978:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10042:21:0::1;10066:20:::0;;;:11:::1;:20;::::0;;;;;;;10087:10:::1;10066:32:::0;;;;;;;10192:11:::1;::::0;::::1;::::0;:16;:59;::::1;;;-1:-1:-1::0;10226:10:0::1;10212:25;::::0;;;:13:::1;:25;::::0;;;;;;;:34;;;;;;;;;:39;10192:59:::1;10188:2125;;;10268:22:::0;;-1:-1:-1;;;;;;10268:22:0::1;10280:10;10268:22;::::0;;10322:15:::1;10305:14;::::0;::::1;:32:::0;;;10268:22;10352:11;::::1;:21:::0;;;10388:18:::1;::::0;::::1;:36:::0;;;10439:10:::1;::::0;::::1;:19:::0;;;-1:-1:-1;10473:11:0;::::1;:21:::0;;;10555:14:::1;::::0;::::1;::::0;10268:9:::1;::::0;10322:15;10555:25:::1;::::0;10572:8:::1;10555:25;:::i;:::-;10554:45;10550:161;;;10680:15;10651:4;:14;;;10668:8;10651:25;;;;:::i;:::-;10650:45;;;;:::i;:::-;10633:62;;10550:161;10725:15;10754:23;10771:6;10754:14:::0;:23:::1;:::i;:::-;:27;::::0;10780:1:::1;10754:27;:::i;:::-;10743:39;::::0;:7;:39:::1;:::i;:::-;10725:57;;10835:7;10816:4;:16;;;:26;;;;:::i;:::-;10797:16;::::0;::::1;:45:::0;10870:3:::1;10861:12:::0;::::1;10857:246;;;10922:3;10906:12;:7:::0;10916:2:::1;10906:12;:::i;:::-;10905:20;;;;:::i;:::-;10894:31;::::0;;::::1;:::i;:::-;;;10857:246;;;10960:3;10951:6;:12;10947:156;;;11012:3;10996:12;:7:::0;11006:2:::1;10996:12;:::i;10947:156::-;11084:3;11069:11;:7:::0;11079:1:::1;11069:11;:::i;:::-;11068:19;;;;:::i;:::-;11057:30;::::0;;::::1;:::i;:::-;;;10947:156;11117:11;::::0;::::1;:21:::0;;;11172:16:::1;::::0;::::1;::::0;:30:::1;::::0;11131:7;;11172:30:::1;:::i;:::-;11153:16;::::0;;::::1;:49:::0;;;;11217:18:::1;11238::::0;;;:9:::1;:18;::::0;;;;;;;:25;;11278:29;;::::1;::::0;;;;;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;11278:29:0::1;-1:-1:-1::0;;;;;11278:29:0;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;11278:29:0;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;11336:10:::1;11322:25:::0;;;;;;;;:34;;;;;;;;:47;-1:-1:-1;10188:2125:0::1;::::0;-1:-1:-1;10188:2125:0::1;;11404:10;::::0;::::1;:19:::0;;;11452:11:::1;::::0;::::1;::::0;:21:::1;::::0;11466:7;;11452:21:::1;:::i;:::-;11438:11;::::0;::::1;:35:::0;11534:14:::1;::::0;::::1;::::0;11488:22:::1;::::0;11563:15:::1;::::0;11534:25:::1;::::0;11551:8:::1;11534:25;:::i;:::-;11533:45;11529:161;;;11659:15;11630:4;:14;;;11647:8;11630:25;;;;:::i;:::-;11629:45;;;;:::i;:::-;11612:62;;11529:161;11704:15;11733:23;11750:6;11733:14:::0;:23:::1;:::i;:::-;:27;::::0;11759:1:::1;11733:27;:::i;:::-;11722:39;::::0;:7;:39:::1;:::i;:::-;11704:57;;11791:3;11782:6;:12;11778:246;;;11843:3;11827:12;:7:::0;11837:2:::1;11827:12;:::i;:::-;11826:20;;;;:::i;:::-;11815:31;::::0;;::::1;:::i;:::-;;;11778:246;;;11881:3;11872:6;:12;11868:156;;;11933:3;11917:12;:7:::0;11927:2:::1;11917:12;:::i;11868:156::-;12005:3;11990:11;:7:::0;12000:1:::1;11990:11;:::i;:::-;11989:19;;;;:::i;:::-;11978:30;::::0;;::::1;:::i;:::-;;;11868:156;12053:7;12038:4;:11;;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12094:16:0::1;::::0;::::1;::::0;:26:::1;::::0;12113:7;;12094:26:::1;:::i;:::-;12075:16;::::0;::::1;:45:::0;12154:16:::1;::::0;::::1;::::0;:27:::1;::::0;12174:7;;12154:27:::1;:::i;:::-;12135:16;::::0;::::1;:46:::0;12230:10:::1;12196:17;12216:25:::0;;;:13:::1;:25;::::0;;;;;;;:34;;;;;;;;;12265:9:::1;:18:::0;;;;;;:29;;12297:4;;12265:18;12216:34;;12265:29;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:36;;:29:::1;::::0;;::::1;;:36:::0;;-1:-1:-1;;;;;;12265:36:0::1;-1:-1:-1::0;;;;;12265:36:0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;12265:36:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;10188:2125:0::1;12328:36;::::0;;12801:25:1;;;12857:2;12842:18;;12835:34;;;12335:10:0::1;::::0;12328:36:::1;::::0;12774:18:1;12328:36:0::1;;;;;;;9573:2799;;4952:20:::0;4243:1;5494:21;;5311:212;4952:20;9486:2886;;;:::o;18807:593::-;1996:6;;-1:-1:-1;;;;;1996:6:0;1272:10;1996:22;1988:67;;;;-1:-1:-1;;;1988:67:0;;;;;;;:::i;:::-;18919:1:::1;18909:7;:11;18901:62;;;;-1:-1:-1::0;;;18901:62:0::1;;;;;;;:::i;:::-;18993:9;18982:7;:20;18974:56;;;::::0;-1:-1:-1;;;18974:56:0;;15172:2:1;18974:56:0::1;::::0;::::1;15154:21:1::0;15211:2;15191:18;;;15184:30;15250:25;15230:18;;;15223:53;15293:18;;18974:56:0::1;14970:347:1::0;18974:56:0::1;19059:8;:15:::0;19049:25;::::1;19041:62;;;;-1:-1:-1::0;;;19041:62:0::1;;;;;;;:::i;:::-;19114:21;19138:8;19147:7;19138:17;;;;;;;;:::i;:::-;;;;;;;;;;;19114:41;;19193:4;:14;;;19174:15;:33;;19166:71;;;::::0;-1:-1:-1;;;19166:71:0;;14438:2:1;19166:71:0::1;::::0;::::1;14420:21:1::0;14477:2;14457:18;;;14450:30;-1:-1:-1;;;14496:18:1;;;14489:55;14561:18;;19166:71:0::1;14236:349:1::0;19166:71:0::1;19256:12;::::0;::::1;::::0;:17;19248:49:::1;;;;-1:-1:-1::0;;;19248:49:0::1;;;;;;;:::i;:::-;19317:10;::::0;::::1;::::0;::::1;;19316:11;19308:43;;;;-1:-1:-1::0;;;19308:43:0::1;;;;;;;:::i;:::-;19385:7;19362:4;:19;;;:30;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;18807:593:0:o;14650:306::-;1996:6;;-1:-1:-1;;;;;1996:6:0;1272:10;1996:22;1988:67;;;;-1:-1:-1;;;1988:67:0;;;;;;;:::i;:::-;14732:8:::1;:15:::0;14722:25;::::1;14714:62;;;;-1:-1:-1::0;;;14714:62:0::1;;;;;;;:::i;:::-;14787:21;14811:8;14820:7;14811:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;14854:15:::1;14839:12;14811:17;::::0;;::::1;::::0;;::::1;14839:12:::0;;::::1;:30:::0;;;14880:10:::1;::::0;::::1;:17:::0;;-1:-1:-1;;14880:17:0::1;14893:4;14880:17;::::0;;14913:35:::1;::::0;14811:17;;-1:-1:-1;14913:35:0::1;::::0;::::1;::::0;14923:7;12801:25:1;;12857:2;12842:18;;12835:34;12789:2;12774:18;;12627:248;19451:112:0;1996:6;;-1:-1:-1;;;;;1996:6:0;1272:10;1996:22;1988:67;;;;-1:-1:-1;;;1988:67:0;;;;;;;:::i;:::-;19504:51:::1;::::0;19512:10:::1;::::0;19533:21:::1;19504:51:::0;::::1;;;::::0;::::1;::::0;;;19533:21;19512:10;19504:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;2239:244:::0;1996:6;;-1:-1:-1;;;;;1996:6:0;1272:10;1996:22;1988:67;;;;-1:-1:-1;;;1988:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2328:22:0;::::1;2320:73;;;::::0;-1:-1:-1;;;2320:73:0;;15524:2:1;2320:73:0::1;::::0;::::1;15506:21:1::0;15563:2;15543:18;;;15536:30;15602:34;15582:18;;;15575:62;-1:-1:-1;;;15653:18:1;;;15646:36;15699:19;;2320:73:0::1;15322:402:1::0;2320:73:0::1;2430:6;::::0;;2409:38:::1;::::0;-1:-1:-1;;;;;2409:38:0;;::::1;::::0;2430:6;::::1;::::0;2409:38:::1;::::0;::::1;2458:6;:17:::0;;-1:-1:-1;;;;;;2458:17:0::1;-1:-1:-1::0;;;;;2458:17:0;;;::::1;::::0;;;::::1;::::0;;2239:244::o;4988:315::-;4286:1;5117:7;;:18;5113:88;;5159:30;;-1:-1:-1;;;5159:30:0;;;;;;;;;;;5113:88;4286:1;5278:7;:17;4988:315::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:241;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;:::-;367:5;137:241;-1:-1:-1;;;137:241:1:o;383:248::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;-1:-1:-1;;551:23:1;;;621:2;606:18;;;593:32;;-1:-1:-1;383:248:1:o;1705:173::-;1773:20;;-1:-1:-1;;;;;1822:31:1;;1812:42;;1802:70;;1868:1;1865;1858:12;1802:70;1705:173;;;:::o;1883:254::-;1951:6;1959;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2064:9;2051:23;2041:33;;2093:38;2127:2;2116:9;2112:18;2093:38;:::i;:::-;2083:48;;1883:254;;;;;:::o;2142:701::-;2223:12;;-1:-1:-1;;;;;702:31:1;690:44;;2290:4;2283:5;2279:16;2273:23;2266:4;2261:3;2257:14;2250:47;2346:4;2339:5;2335:16;2329:23;2322:4;2317:3;2313:14;2306:47;2402:4;2395:5;2391:16;2385:23;2378:4;2373:3;2369:14;2362:47;2458:4;2451:5;2447:16;2441:23;2434:4;2429:3;2425:14;2418:47;2514:4;2507:5;2503:16;2497:23;2490:4;2485:3;2481:14;2474:47;2567:4;2560:5;2556:16;2550:23;2582:45;2621:4;2616:3;2612:14;2598:12;815:13;808:21;796:34;;745:91;2582:45;-1:-1:-1;2676:4:1;2665:16;;;2659:23;2643:14;;;2636:47;2702:6;2744:14;;;2738:21;2724:12;;;2717:43;2779:6;2821:14;;;2815:21;2801:12;;2794:43;2142:701::o;2848:248::-;3032:3;3017:19;;3045:45;3021:9;3072:6;3045:45;:::i;3101:180::-;3160:6;3213:2;3201:9;3192:7;3188:23;3184:32;3181:52;;;3229:1;3226;3219:12;3181:52;-1:-1:-1;3252:23:1;;3101:180;-1:-1:-1;3101:180:1:o;3980:316::-;4057:6;4065;4073;4126:2;4114:9;4105:7;4101:23;4097:32;4094:52;;;4142:1;4139;4132:12;4094:52;-1:-1:-1;;4165:23:1;;;4235:2;4220:18;;4207:32;;-1:-1:-1;4286:2:1;4271:18;;;4258:32;;3980:316;-1:-1:-1;3980:316:1:o;4301:1583::-;4542:2;4594:21;;;4664:13;;4567:18;;;4686:22;;;4513:4;;4542:2;4727;;4745:18;;;;4786:15;;;4513:4;4829:1029;4843:6;4840:1;4837:13;4829:1029;;;4902:13;;4947:9;;-1:-1:-1;;;;;702:31:1;690:44;;5002:11;;;4996:18;4982:12;;;4975:40;5055:11;;;5049:18;5035:12;;;5028:40;5091:4;5135:11;;;5129:18;5115:12;;;5108:40;5171:4;5215:11;;;5209:18;5195:12;;;5188:40;5251:4;5295:11;;;5289:18;5275:12;;;5268:40;5331:4;5374:11;;;5368:18;815:13;808:21;5429:12;;;796:34;5465:4;5509:11;;;5503:18;5489:12;;;5482:40;5545:6;5591:11;;;5585:18;5571:12;;;5564:40;5628:6;5675:12;;;5669:19;5654:13;;;5647:42;5713:6;5760:12;;;5754:19;5739:13;;;5732:42;5803:6;5794:16;;;;5833:15;;;;4865:1;4858:9;4829:1029;;;-1:-1:-1;5875:3:1;;4301:1583;-1:-1:-1;;;;;;;4301:1583:1:o;5889:706::-;6110:2;6162:21;;;6232:13;;6135:18;;;6254:22;;;6081:4;;6110:2;6333:15;;;;6307:2;6292:18;;;6081:4;6376:193;6390:6;6387:1;6384:13;6376:193;;;6439:46;6481:3;6472:6;6466:13;6439:46;:::i;:::-;6544:15;;;;6514:6;6505:16;;;;;6412:1;6405:9;6376:193;;;-1:-1:-1;6586:3:1;;5889:706;-1:-1:-1;;;;;;5889:706:1:o;6990:254::-;7058:6;7066;7119:2;7107:9;7098:7;7094:23;7090:32;7087:52;;;7135:1;7132;7125:12;7087:52;7158:29;7177:9;7158:29;:::i;:::-;7148:39;7234:2;7219:18;;;;7206:32;;-1:-1:-1;;;6990:254:1:o;7470:186::-;7529:6;7582:2;7570:9;7561:7;7557:23;7553:32;7550:52;;;7598:1;7595;7588:12;7550:52;7621:29;7640:9;7621:29;:::i;7661:356::-;7863:2;7845:21;;;7882:18;;;7875:30;7941:34;7936:2;7921:18;;7914:62;8008:2;7993:18;;7661:356::o;8022:348::-;8224:2;8206:21;;;8263:2;8243:18;;;8236:30;8302:26;8297:2;8282:18;;8275:54;8361:2;8346:18;;8022:348::o;9087:127::-;9148:10;9143:3;9139:20;9136:1;9129:31;9179:4;9176:1;9169:15;9203:4;9200:1;9193:15;9219:128;9286:9;;;9307:11;;;9304:37;;;9321:18;;:::i;9352:125::-;9417:9;;;9438:10;;;9435:36;;;9451:18;;:::i;9482:127::-;9543:10;9538:3;9534:20;9531:1;9524:31;9574:4;9571:1;9564:15;9598:4;9595:1;9588:15;9614:127;9675:10;9670:3;9666:20;9663:1;9656:31;9706:4;9703:1;9696:15;9730:4;9727:1;9720:15;9746:168;9819:9;;;9850;;9867:15;;;9861:22;;9847:37;9837:71;;9888:18;;:::i;9919:217::-;9959:1;9985;9975:132;;10029:10;10024:3;10020:20;10017:1;10010:31;10064:4;10061:1;10054:15;10092:4;10089:1;10082:15;9975:132;-1:-1:-1;10121:9:1;;9919:217::o;10141:135::-;10180:3;10201:17;;;10198:43;;10221:18;;:::i;:::-;-1:-1:-1;10268:1:1;10257:13;;10141:135::o;12377:245::-;12444:6;12497:2;12485:9;12476:7;12472:23;12468:32;12465:52;;;12513:1;12510;12503:12;12465:52;12545:9;12539:16;12564:28;12586:5;12564:28;:::i;12880:184::-;12950:6;13003:2;12991:9;12982:7;12978:23;12974:32;12971:52;;;13019:1;13016;13009:12;12971:52;-1:-1:-1;13042:16:1;;12880:184;-1:-1:-1;12880:184:1:o;13069:343::-;13271:2;13253:21;;;13310:2;13290:18;;;13283:30;-1:-1:-1;;;13344:2:1;13329:18;;13322:49;13403:2;13388:18;;13069:343::o;13829:402::-;14031:2;14013:21;;;14070:2;14050:18;;;14043:30;14109:34;14104:2;14089:18;;14082:62;-1:-1:-1;;;14175:2:1;14160:18;;14153:36;14221:3;14206:19;;13829:402::o
Swarm Source
ipfs://efa30561b18acc15104db1022e9201f270f998fee70efd7a556f8806ba037d46
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.