Source Code
Latest 25 from a total of 98 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 74610027 | 1040 days ago | IN | 0 ETH | 0.00005378 | ||||
| Withdraw | 74608754 | 1040 days ago | IN | 0 ETH | 0.00005851 | ||||
| Withdraw | 74608233 | 1040 days ago | IN | 0 ETH | 0.00005812 | ||||
| Withdraw | 74552706 | 1040 days ago | IN | 0 ETH | 0.00005276 | ||||
| Withdraw | 74551055 | 1040 days ago | IN | 0 ETH | 0.00005375 | ||||
| Withdraw | 74526998 | 1040 days ago | IN | 0 ETH | 0.00004794 | ||||
| Deposit | 73844588 | 1042 days ago | IN | 0 ETH | 0.00004416 | ||||
| Withdraw | 73844044 | 1042 days ago | IN | 0 ETH | 0.00003742 | ||||
| Deposit | 73822089 | 1042 days ago | IN | 0 ETH | 0.0000506 | ||||
| Withdraw | 73820536 | 1042 days ago | IN | 0 ETH | 0.00003898 | ||||
| Withdraw | 73820334 | 1042 days ago | IN | 0 ETH | 0.00003839 | ||||
| Withdraw | 73669304 | 1043 days ago | IN | 0 ETH | 0.00003651 | ||||
| Withdraw | 73593196 | 1043 days ago | IN | 0 ETH | 0.00005605 | ||||
| Deposit | 73475490 | 1043 days ago | IN | 0 ETH | 0.00004963 | ||||
| Withdraw | 73475212 | 1043 days ago | IN | 0 ETH | 0.00004188 | ||||
| Withdraw | 73468769 | 1043 days ago | IN | 0 ETH | 0.00004224 | ||||
| Withdraw | 73400252 | 1044 days ago | IN | 0 ETH | 0.00003391 | ||||
| Deposit | 73341380 | 1044 days ago | IN | 0 ETH | 0.00005216 | ||||
| Withdraw | 73341223 | 1044 days ago | IN | 0 ETH | 0.00004403 | ||||
| Withdraw | 73331222 | 1044 days ago | IN | 0 ETH | 0.00005307 | ||||
| Withdraw | 73324151 | 1044 days ago | IN | 0 ETH | 0.0000622 | ||||
| Deposit | 73299645 | 1044 days ago | IN | 0 ETH | 0.00005442 | ||||
| Withdraw | 73299372 | 1044 days ago | IN | 0 ETH | 0.00004596 | ||||
| Withdraw | 73274072 | 1044 days ago | IN | 0 ETH | 0.00004808 | ||||
| Withdraw | 73272250 | 1044 days ago | IN | 0 ETH | 0.00006 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 71153762 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71151068 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71150795 | 1050 days ago | 0 ETH | ||||
| 71149325 | 1050 days ago | 0 ETH | ||||
| 71149325 | 1050 days ago | 0 ETH | ||||
| 71149325 | 1050 days ago | 0 ETH | ||||
| 71149325 | 1050 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
TearGenesisRewardPool
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Arbiscan.io on 2023-03-18
*/
// 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);
}
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly { size := extcodesize(account) }
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
interface IUniswapRouter{
function WETH() external pure returns (address);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
interface IReferral{
function setReferrer(address _user, address _referrer) external;
function getReferrer(address _user) external view returns (address);
}
interface IBurnable {
function burn(uint256 amount) external;
}
contract TearGenesisRewardPool {
using SafeMath for uint256;
using SafeERC20 for IERC20;
// SushiSwap Router to be used for buyback
IUniswapRouter public constant router = IUniswapRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
uint256 public constant MAX_UINT256 = ~uint256(0);
// governance
address public operator;
// Info of each user.
struct UserInfo {
uint256 amount; // How many tokens the user has provided.
uint256 rewardDebt; // Reward debt. See explanation below.
}
// Info of each pool.
struct PoolInfo {
IERC20 token; // Address of LP token contract.
uint256 allocPoint; // How many allocation points assigned to this pool. TEAR to distribute.
uint256 lastRewardTime; // Last time that TEAR distribution occurs.
uint256 accTearPerShare; // Accumulated TEAR per share, times 1e18. See below.
bool isStarted; // if lastRewardBlock has passed
uint256 depositFeeBP; // deposit fee 0% ~ 2%
bool isLPtoken; // if token is lp token
}
IERC20 public tear;
IReferral public referral;
address public treasuryFund;
// Info of each pool.
PoolInfo[] public poolInfo;
// Info of each user that stakes LP tokens.
mapping(uint256 => mapping(address => UserInfo)) public userInfo;
// Total allocation points. Must be the sum of all allocation points in all pools.
uint256 public totalAllocPoint = 0;
// The time when TEAR mining starts.
uint256 public poolStartTime;
// The time when TEAR mining ends.
uint256 public poolEndTime;
// MAINNET
uint256 public tearPerSecond = 0.0462963 ether; // 20000 TEAR / (5 * 24h * 60min * 60s)
uint256 public runningTime = 5 days; // 5 days
uint256 public constant TOTAL_REWARDS = 20000 ether;
// END MAINNET
event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount);
event RewardPaid(address indexed user, uint256 amount);
event ReferrerReward(address indexed token, address sender, address referrer, uint256 amount);
constructor(
address _tear,
uint256 _poolStartTime,
address _initializer
) {
require(block.timestamp < _poolStartTime, "late");
if (_tear != address(0)) tear = IERC20(_tear);
poolStartTime = _poolStartTime;
poolEndTime = poolStartTime + runningTime;
operator = _initializer;
treasuryFund = _initializer;
}
modifier onlyOperator() {
require(operator == msg.sender, "TearGenesisPool: caller is not the operator");
_;
}
function checkPoolDuplicate(IERC20 _token) internal view {
uint256 length = poolInfo.length;
for (uint256 pid = 0; pid < length; ++pid) {
require(poolInfo[pid].token != _token, "TearGenesisPool: existing pool?");
}
}
// Add a new token to the pool. Can only be called by the owner.
function add(
uint256 _allocPoint,
IERC20 _token,
bool _withUpdate,
uint256 _lastRewardTime,
uint256 _depositFeeBP,
bool _isLPtoken
) public onlyOperator {
require(_depositFeeBP <= 200, "add: deposit fee can not exceed 2%");
checkPoolDuplicate(_token);
if (_withUpdate) {
massUpdatePools();
}
if (block.timestamp < poolStartTime) {
// chef is sleeping
if (_lastRewardTime == 0) {
_lastRewardTime = poolStartTime;
} else {
if (_lastRewardTime < poolStartTime) {
_lastRewardTime = poolStartTime;
}
}
} else {
// chef is cooking
if (_lastRewardTime == 0 || _lastRewardTime < block.timestamp) {
_lastRewardTime = block.timestamp;
}
}
bool _isStarted =
(_lastRewardTime <= poolStartTime) ||
(_lastRewardTime <= block.timestamp);
poolInfo.push(PoolInfo({
token : _token,
allocPoint : _allocPoint,
lastRewardTime : _lastRewardTime,
accTearPerShare : 0,
isStarted : _isStarted,
depositFeeBP: _depositFeeBP,
isLPtoken: _isLPtoken
}));
if (_isStarted) {
totalAllocPoint = totalAllocPoint.add(_allocPoint);
}
_token.approve(address(router), MAX_UINT256);
}
// Update the given pool's TEAR allocation point. Can only be called by the owner.
function set(uint256 _pid, uint256 _allocPoint, uint256 _depositFeeBP) public onlyOperator {
require(_depositFeeBP <= 200, "add: deposit fee can not exceed 2%");
massUpdatePools();
PoolInfo storage pool = poolInfo[_pid];
if (pool.isStarted) {
totalAllocPoint = totalAllocPoint.sub(pool.allocPoint).add(
_allocPoint
);
}
poolInfo[_pid].allocPoint = _allocPoint;
poolInfo[_pid].depositFeeBP = _depositFeeBP;
}
// Return accumulate rewards over the given _from to _to block.
function getGeneratedReward(uint256 _fromTime, uint256 _toTime) public view returns (uint256) {
if (_fromTime >= _toTime) return 0;
if (_toTime >= poolEndTime) {
if (_fromTime >= poolEndTime) return 0;
if (_fromTime <= poolStartTime) return poolEndTime.sub(poolStartTime).mul(tearPerSecond);
return poolEndTime.sub(_fromTime).mul(tearPerSecond);
} else {
if (_toTime <= poolStartTime) return 0;
if (_fromTime <= poolStartTime) return _toTime.sub(poolStartTime).mul(tearPerSecond);
return _toTime.sub(_fromTime).mul(tearPerSecond);
}
}
// View function to see pending TEAR on frontend.
function pendingTEAR(uint256 _pid, address _user) external view returns (uint256) {
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][_user];
uint256 accTearPerShare = pool.accTearPerShare;
uint256 tokenSupply = pool.token.balanceOf(address(this));
if (block.timestamp > pool.lastRewardTime && tokenSupply != 0) {
uint256 _generatedReward = getGeneratedReward(pool.lastRewardTime, block.timestamp);
uint256 _tearReward = _generatedReward.mul(pool.allocPoint).div(totalAllocPoint);
accTearPerShare = accTearPerShare.add(_tearReward.mul(1e18).div(tokenSupply));
}
return user.amount.mul(accTearPerShare).div(1e18).sub(user.rewardDebt);
}
// Update reward variables for all pools. Be careful of gas spending!
function massUpdatePools() public {
uint256 length = poolInfo.length;
for (uint256 pid = 0; pid < length; ++pid) {
updatePool(pid);
}
}
// Update reward variables of the given pool to be up-to-date.
function updatePool(uint256 _pid) public {
PoolInfo storage pool = poolInfo[_pid];
if (block.timestamp <= pool.lastRewardTime) {
return;
}
uint256 tokenSupply = pool.token.balanceOf(address(this));
if (tokenSupply == 0) {
pool.lastRewardTime = block.timestamp;
return;
}
if (!pool.isStarted) {
pool.isStarted = true;
totalAllocPoint = totalAllocPoint.add(pool.allocPoint);
}
if (totalAllocPoint > 0) {
uint256 _generatedReward = getGeneratedReward(pool.lastRewardTime, block.timestamp);
uint256 _tearReward = _generatedReward.mul(pool.allocPoint).div(totalAllocPoint);
pool.accTearPerShare = pool.accTearPerShare.add(_tearReward.mul(1e18).div(tokenSupply));
}
pool.lastRewardTime = block.timestamp;
}
function feeDistribute(
PoolInfo memory _pool,
uint256 _feeAmount,
address _sender,
address _referrer
) internal {
uint256 feeToReferrer = _feeAmount.div(4); // 0.5% max
if (feeToReferrer > 0) {
address referrer = referral.getReferrer(_sender);
if (referrer == address(0)) {
if (_referrer != address(0)) {
referral.setReferrer(_sender, _referrer);
_pool.token.safeTransfer(_referrer, feeToReferrer);
emit ReferrerReward(address(_pool.token), _sender, _referrer, feeToReferrer);
} else {
_pool.token.safeTransfer(treasuryFund, feeToReferrer);
}
} else {
_pool.token.safeTransfer(referrer, feeToReferrer);
emit ReferrerReward(address(_pool.token), _sender, referrer, feeToReferrer);
}
}
uint256 feeToBuyBack = _feeAmount.div(4); // 0.5% max
if (feeToBuyBack > 0) {
if (_pool.isLPtoken) {
_pool.token.safeTransfer(treasuryFund, feeToBuyBack);
} else {
address[] memory path;
if (address(_pool.token) == router.WETH()) {
path = new address[](2);
path[0] = address(_pool.token);
path[1] = address(tear);
} else {
path = new address[](3);
path[0] = address(_pool.token);
path[1] = router.WETH();
path[2] = address(tear);
}
uint256 balanceBefore = tear.balanceOf(address(this));
router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
feeToBuyBack,
0,
path,
address(this),
block.timestamp
);
uint256 amountToBurn = tear.balanceOf(address(this)).sub(balanceBefore);
IBurnable(address(tear)).burn(amountToBurn);
}
}
uint256 feeToTreasuryFund = _feeAmount.sub(feeToReferrer).sub(feeToBuyBack);
if (feeToTreasuryFund > 0) {
_pool.token.safeTransfer(treasuryFund, feeToTreasuryFund);
}
}
// Deposit LP tokens.
function deposit(uint256 _pid, uint256 _amount, address _referrer) public {
address _sender = msg.sender;
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][_sender];
updatePool(_pid);
if (user.amount > 0) {
uint256 _pending = user.amount.mul(pool.accTearPerShare).div(1e18).sub(user.rewardDebt);
if (_pending > 0) {
safeTearTransfer(_sender, _pending);
emit RewardPaid(_sender, _pending);
}
}
if (_amount > 0) {
pool.token.safeTransferFrom(_sender, address(this), _amount);
user.amount = user.amount.add(_amount);
if(pool.depositFeeBP > 0){
uint256 depositFee = _amount.mul(pool.depositFeeBP).div(10000);
feeDistribute(pool, depositFee, _sender, _referrer);
user.amount = user.amount.sub(depositFee);
}
}
user.rewardDebt = user.amount.mul(pool.accTearPerShare).div(1e18);
emit Deposit(_sender, _pid, _amount);
}
// Withdraw LP tokens.
function withdraw(uint256 _pid, uint256 _amount) public {
address _sender = msg.sender;
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][_sender];
require(user.amount >= _amount, "withdraw: not good");
updatePool(_pid);
uint256 _pending = user.amount.mul(pool.accTearPerShare).div(1e18).sub(user.rewardDebt);
if (_pending > 0) {
safeTearTransfer(_sender, _pending);
emit RewardPaid(_sender, _pending);
}
if (_amount > 0) {
user.amount = user.amount.sub(_amount);
pool.token.safeTransfer(_sender, _amount);
}
user.rewardDebt = user.amount.mul(pool.accTearPerShare).div(1e18);
emit Withdraw(_sender, _pid, _amount);
}
// Withdraw without caring about rewards. EMERGENCY ONLY.
function emergencyWithdraw(uint256 _pid) public {
PoolInfo storage pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][msg.sender];
uint256 _amount = user.amount;
user.amount = 0;
user.rewardDebt = 0;
pool.token.safeTransfer(msg.sender, _amount);
emit EmergencyWithdraw(msg.sender, _pid, _amount);
}
// Safe TEAR transfer function, just in case if rounding error causes pool to not have enough TEARs.
function safeTearTransfer(address _to, uint256 _amount) internal {
uint256 _tearBalance = tear.balanceOf(address(this));
if (_tearBalance > 0) {
if (_amount > _tearBalance) {
tear.safeTransfer(_to, _tearBalance);
} else {
tear.safeTransfer(_to, _amount);
}
}
}
function setOperator(address _operator) external onlyOperator {
operator = _operator;
}
function setReferral(address _referral) external onlyOperator {
referral = IReferral(_referral);
}
function setTreasuryFund(address _treasuryFund) public{
require(msg.sender == treasuryFund, "setTreasuryFund: FORBIDDEN");
require(_treasuryFund != address(0), "setTreasuryFund: ZERO");
treasuryFund = _treasuryFund;
}
function governanceRecoverUnsupported(IERC20 _token, uint256 amount, address to) external onlyOperator {
if (block.timestamp < poolEndTime + 90 days) {
// do not allow to drain core token (TEAR or lps) if less than 90 days after pool ends
require(_token != tear, "tear");
uint256 length = poolInfo.length;
for (uint256 pid = 0; pid < length; ++pid) {
PoolInfo storage pool = poolInfo[pid];
require(_token != pool.token, "pool.token");
}
}
_token.safeTransfer(to, amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_tear","type":"address"},{"internalType":"uint256","name":"_poolStartTime","type":"uint256"},{"internalType":"address","name":"_initializer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReferrerReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"MAX_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_REWARDS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"},{"internalType":"uint256","name":"_lastRewardTime","type":"uint256"},{"internalType":"uint256","name":"_depositFeeBP","type":"uint256"},{"internalType":"bool","name":"_isLPtoken","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fromTime","type":"uint256"},{"internalType":"uint256","name":"_toTime","type":"uint256"}],"name":"getGeneratedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"governanceRecoverUnsupported","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingTEAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardTime","type":"uint256"},{"internalType":"uint256","name":"accTearPerShare","type":"uint256"},{"internalType":"bool","name":"isStarted","type":"bool"},{"internalType":"uint256","name":"depositFeeBP","type":"uint256"},{"internalType":"bool","name":"isLPtoken","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referral","outputs":[{"internalType":"contract IReferral","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"runningTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_depositFeeBP","type":"uint256"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_referral","type":"address"}],"name":"setReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryFund","type":"address"}],"name":"setTreasuryFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tear","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tearPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052600060065566a47a3d53ea380060095562069780600a553480156200002857600080fd5b5060405162002568380380620025688339810160408190526200004b9162000121565b8142106200008e5760405162461bcd60e51b815260040162000085906020808252600490820152636c61746560e01b604082015260600190565b60405180910390fd5b6001600160a01b03831615620000ba57600180546001600160a01b0319166001600160a01b0385161790555b6007829055600a54620000ce908362000162565b600855600080546001600160a01b039092166001600160a01b0319928316811790915560038054909216179055506200018a9050565b80516001600160a01b03811681146200011c57600080fd5b919050565b6000806000606084860312156200013757600080fd5b620001428462000104565b925060208401519150620001596040850162000104565b90509250925092565b808201808211156200018457634e487b7160e01b600052601160045260246000fd5b92915050565b6123ce806200019a6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80635d710ad7116100f957806396f703b411610097578063e0c4f12d11610071578063e0c4f12d146103be578063e1362728146103d1578063f746b718146103e4578063f887ea40146103f757600080fd5b806396f703b4146103855780639e5914da14610398578063b3ab15fb146103ab57600080fd5b80636e271dd5116100d35780636e271dd5146103195780638dbdbe6d1461032257806393f1a40b14610335578063943f013d1461037c57600080fd5b80635d710ad7146102f55780635f96dc1114610308578063630b5ba11461031157600080fd5b806343b0e8df116101665780635312ea8e116101405780635312ea8e146102b357806354575af4146102c6578063570ca735146102d95780635c558ba7146102ec57600080fd5b806343b0e8df14610278578063441a3e701461028d57806351eb05a6146102a057600080fd5b806309cf6091146101ae5780631441a5a9146101d25780631526fe27146101fd57806317caf6f114610253578063231f0c6a1461025c57806333a581d21461026f575b600080fd5b6101bf69043c33c193756480000081565b6040519081526020015b60405180910390f35b6002546101e5906001600160a01b031681565b6040516001600160a01b0390911681526020016101c9565b61021061020b366004611f7f565b610412565b604080516001600160a01b03909816885260208801969096529486019390935260608501919091521515608084015260a0830152151560c082015260e0016101c9565b6101bf60065481565b6101bf61026a366004611f98565b610471565b6101bf60001981565b61028b610286366004611fba565b610536565b005b61028b61029b366004611f98565b610646565b61028b6102ae366004611f7f565b610809565b61028b6102c1366004611f7f565b610961565b61028b6102d4366004611ffe565b610a03565b6000546101e5906001600160a01b031681565b6101bf60095481565b61028b61030336600461204e565b610b38565b6101bf60075481565b61028b610e31565b6101bf60085481565b61028b6103303660046120b5565b610e5c565b6103676103433660046120e3565b60056020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101c9565b6101bf600a5481565b6101bf6103933660046120e3565b611072565b61028b6103a6366004612113565b6111ce565b61028b6103b9366004612113565b61121a565b6003546101e5906001600160a01b031681565b6001546101e5906001600160a01b031681565b61028b6103f2366004612113565b611266565b6101e5731b02da8cb0d097eb8d57a175b88c7d8b4799750681565b6004818154811061042257600080fd5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b03909516965092949193909260ff90811692911687565b600081831061048257506000610530565b60085482106104ea57600854831061049c57506000610530565b60075483116104cf576104c86009546104c260075460085461133090919063ffffffff16565b90611393565b9050610530565b6104c86009546104c28560085461133090919063ffffffff16565b60075482116104fb57506000610530565b600754831161051f576104c86009546104c26007548561133090919063ffffffff16565b6009546104c8906104c28486611330565b92915050565b6000546001600160a01b031633146105695760405162461bcd60e51b815260040161056090612130565b60405180910390fd5b60c881111561058a5760405162461bcd60e51b81526004016105609061217b565b610592610e31565b6000600484815481106105a7576105a76121bd565b60009182526020909120600790910201600481015490915060ff16156105ee576105ea836105e4836001015460065461133090919063ffffffff16565b90611415565b6006555b8260048581548110610602576106026121bd565b906000526020600020906007020160010181905550816004858154811061062b5761062b6121bd565b90600052602060002090600702016005018190555050505050565b6000339050600060048481548110610660576106606121bd565b600091825260208083208784526005825260408085206001600160a01b038816865290925292208054600790920290920192508411156106d75760405162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b6044820152606401610560565b6106e085610809565b600061071d8260010154610717670de0b6b3a76400006107118760030154876000015461139390919063ffffffff16565b90611474565b90611330565b905080156107735761072f84826114cf565b836001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04868260405161076a91815260200190565b60405180910390a25b841561079d5781546107859086611330565b8255825461079d906001600160a01b03168587611576565b600383015482546107bb91670de0b6b3a76400009161071191611393565b600183015560405185815286906001600160a01b038616907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568906020015b60405180910390a3505050505050565b60006004828154811061081e5761081e6121bd565b906000526020600020906007020190508060020154421161083d575050565b80546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a991906121d3565b9050806000036108be57504260029091015550565b600482015460ff166108ef5760048201805460ff191660019081179091558201546006546108eb91611415565b6006555b60065415610956576000610907836002015442610471565b9050600061092860065461071186600101548561139390919063ffffffff16565b905061094e6109438461071184670de0b6b3a7640000611393565b600386015490611415565b600385015550505b504260029091015550565b600060048281548110610976576109766121bd565b6000918252602080832085845260058252604080852033808752935284208054858255600182019590955560079093020180549094509192916109c6916001600160a01b03919091169083611576565b604051818152849033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959060200160405180910390a350505050565b6000546001600160a01b03163314610a2d5760405162461bcd60e51b815260040161056090612130565b600854610a3d906276a700612202565b421015610b1f576001546001600160a01b0390811690841603610a8b5760405162461bcd60e51b8152600401610560906020808252600490820152633a32b0b960e11b604082015260600190565b60045460005b81811015610b1c57600060048281548110610aae57610aae6121bd565b6000918252602090912060079091020180549091506001600160a01b0390811690871603610b0b5760405162461bcd60e51b815260206004820152600a6024820152693837b7b6173a37b5b2b760b11b6044820152606401610560565b50610b1581612215565b9050610a91565b50505b610b336001600160a01b0384168284611576565b505050565b6000546001600160a01b03163314610b625760405162461bcd60e51b815260040161056090612130565b60c8821115610b835760405162461bcd60e51b81526004016105609061217b565b610b8c856115d9565b8315610b9a57610b9a610e31565b600754421015610bcb5782600003610bb6576007549250610be0565b600754831015610bc65760075492505b610be0565b821580610bd757504283105b15610be0574292505b600060075484111580610bf35750428411155b6040805160e0810182526001600160a01b038981168252602082018b8152928201888152600060608401818152861580156080870190815260a087018c81528b151560c0890190815260048054600181018255965297517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b600790960295860180546001600160a01b031916919098161790965596517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c84015592517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d830155517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e82015593517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19f8501805460ff1990811692151592909217905591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd1a085015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd1a1909301805490911692151592909217909155909150610da157600654610d9d9088611415565b6006555b60405163095ea7b360e01b8152731b02da8cb0d097eb8d57a175b88c7d8b47997506600482015260001960248201526001600160a01b0387169063095ea7b3906044016020604051808303816000875af1158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e27919061222e565b5050505050505050565b60045460005b81811015610e5857610e4881610809565b610e5181612215565b9050610e37565b5050565b6000339050600060048581548110610e7657610e766121bd565b600091825260208083208884526005825260408085206001600160a01b0388168652909252922060079091029091019150610eb086610809565b805415610f40576000610ee88260010154610717670de0b6b3a76400006107118760030154876000015461139390919063ffffffff16565b90508015610f3e57610efa84826114cf565b836001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048682604051610f3591815260200190565b60405180910390a25b505b8415611012578154610f5d906001600160a01b031684308861167b565b8054610f699086611415565b8155600582015415611012576000610f9461271061071185600501548961139390919063ffffffff16565b6040805160e08101825285546001600160a01b031681526001860154602082015260028601549181019190915260038501546060820152600485015460ff90811615156080830152600586015460a0830152600686015416151560c0820152909150611002908286886116b9565b815461100e9082611330565b8255505b6003820154815461103091670de0b6b3a76400009161071191611393565b600182015560405185815286906001600160a01b038516907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15906020016107f9565b60008060048481548110611088576110886121bd565b600091825260208083208784526005825260408085206001600160a01b03898116875293528085206007949094029091016003810154815492516370a0823160e01b815230600482015291965093949291909116906370a0823190602401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112791906121d3565b905083600201544211801561113b57508015155b15611198576000611150856002015442610471565b9050600061117160065461071188600101548561139390919063ffffffff16565b905061119361118c8461071184670de0b6b3a7640000611393565b8590611415565b935050505b6111c38360010154610717670de0b6b3a764000061071186886000015461139390919063ffffffff16565b979650505050505050565b6000546001600160a01b031633146111f85760405162461bcd60e51b815260040161056090612130565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112445760405162461bcd60e51b815260040161056090612130565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146112c05760405162461bcd60e51b815260206004820152601a60248201527f736574547265617375727946756e643a20464f5242494444454e0000000000006044820152606401610560565b6001600160a01b03811661130e5760405162461bcd60e51b8152602060048201526015602482015274736574547265617375727946756e643a205a45524f60581b6044820152606401610560565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000828211156113825760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610560565b61138c828461224b565b9392505050565b6000826000036113a557506000610530565b60006113b1838561225e565b9050826113be8583612275565b1461138c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610560565b6000806114228385612202565b90508381101561138c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610560565b60008082116114c55760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610560565b61138c8284612275565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c91906121d3565b90508015610b33578082111561156357600154610b33906001600160a01b03168483611576565b600154610b33906001600160a01b031684845b6040516001600160a01b038316602482015260448101829052610b3390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d45565b60045460005b81811015610b3357826001600160a01b031660048281548110611604576116046121bd565b60009182526020909120600790910201546001600160a01b03160361166b5760405162461bcd60e51b815260206004820152601f60248201527f5465617247656e65736973506f6f6c3a206578697374696e6720706f6f6c3f006044820152606401610560565b61167481612215565b90506115df565b6040516001600160a01b03808516602483015283166044820152606481018290526116b39085906323b872dd60e01b906084016115a2565b50505050565b60006116c6846004611474565b905080156118bb57600254604051634a9fefc760e01b81526001600160a01b0385811660048301526000921690634a9fefc790602401602060405180830381865afa158015611719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173d9190612297565b90506001600160a01b038116611851576001600160a01b038316156118305760025460405163bbddaca360e01b81526001600160a01b03868116600483015285811660248301529091169063bbddaca390604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505087516117da92506001600160a01b031690508484611576565b8551604080516001600160a01b03878116825286811660208301529181018590529116907fd1bf4b2e350cb3a3429027215f2f3f7aaeb307fbf5f611bd11fa71b06057a9a59060600160405180910390a26118b9565b600354865161184c916001600160a01b03918216911684611576565b6118b9565b8551611867906001600160a01b03168284611576565b8551604080516001600160a01b03878116825284811660208301529181018590529116907fd1bf4b2e350cb3a3429027215f2f3f7aaeb307fbf5f611bd11fa71b06057a9a59060600160405180910390a25b505b60006118c8856004611474565b90508015611d08578560c00151156118fb5760035486516118f6916001600160a01b03918216911683611576565b611d08565b6060731b02da8cb0d097eb8d57a175b88c7d8b479975066001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119739190612297565b6001600160a01b031687600001516001600160a01b031603611a1c5760408051600280825260608201835290916020830190803683370190505090508660000151816000815181106119c7576119c76121bd565b6001600160a01b03928316602091820292909201015260018054835192169183919081106119f7576119f76121bd565b60200260200101906001600160a01b031690816001600160a01b031681525050611b50565b604080516003808252608082019092529060208201606080368337019050509050866000015181600081518110611a5557611a556121bd565b60200260200101906001600160a01b031690816001600160a01b031681525050731b02da8cb0d097eb8d57a175b88c7d8b479975066001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aeb9190612297565b81600181518110611afe57611afe6121bd565b6001600160a01b039283166020918202929092010152600154825191169082906002908110611b2f57611b2f6121bd565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd91906121d3565b604051635c11d79560e01b8152909150731b02da8cb0d097eb8d57a175b88c7d8b4799750690635c11d79590611c009086906000908790309042906004016122b4565b600060405180830381600087803b158015611c1a57600080fd5b505af1158015611c2e573d6000803e3d6000fd5b50506001546040516370a0823160e01b815230600482015260009350611ca5925084916001600160a01b0316906370a0823190602401602060405180830381865afa158015611c81573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071791906121d3565b600154604051630852cd8d60e31b8152600481018390529192506001600160a01b0316906342966c6890602401600060405180830381600087803b158015611cec57600080fd5b505af1158015611d00573d6000803e3d6000fd5b505050505050505b6000611d18826107178886611330565b90508015611d3c576003548751611d3c916001600160a01b03918216911683611576565b50505050505050565b6000611d9a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e179092919063ffffffff16565b805190915015610b335780806020019051810190611db8919061222e565b610b335760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610560565b6060611e268484600085611e2e565b949350505050565b606082471015611e8f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610560565b843b611edd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610560565b600080866001600160a01b03168587604051611ef99190612349565b60006040518083038185875af1925050503d8060008114611f36576040519150601f19603f3d011682016040523d82523d6000602084013e611f3b565b606091505b50915091506111c382828660608315611f5557508161138c565b825115611f655782518084602001fd5b8160405162461bcd60e51b81526004016105609190612365565b600060208284031215611f9157600080fd5b5035919050565b60008060408385031215611fab57600080fd5b50508035926020909101359150565b600080600060608486031215611fcf57600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611ffb57600080fd5b50565b60008060006060848603121561201357600080fd5b833561201e81611fe6565b925060208401359150604084013561203581611fe6565b809150509250925092565b8015158114611ffb57600080fd5b60008060008060008060c0878903121561206757600080fd5b86359550602087013561207981611fe6565b9450604087013561208981612040565b9350606087013592506080870135915060a08701356120a781612040565b809150509295509295509295565b6000806000606084860312156120ca57600080fd5b8335925060208401359150604084013561203581611fe6565b600080604083850312156120f657600080fd5b82359150602083013561210881611fe6565b809150509250929050565b60006020828403121561212557600080fd5b813561138c81611fe6565b6020808252602b908201527f5465617247656e65736973506f6f6c3a2063616c6c6572206973206e6f74207460408201526a34329037b832b930ba37b960a91b606082015260800190565b60208082526022908201527f6164643a206465706f736974206665652063616e206e6f742065786365656420604082015261322560f01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156121e557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610530576105306121ec565b600060018201612227576122276121ec565b5060010190565b60006020828403121561224057600080fd5b815161138c81612040565b81810381811115610530576105306121ec565b8082028115828204841417610530576105306121ec565b60008261229257634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156122a957600080fd5b815161138c81611fe6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123045784516001600160a01b0316835293830193918301916001016122df565b50506001600160a01b03969096166060850152505050608001529392505050565b60005b83811015612340578181015183820152602001612328565b50506000910152565b6000825161235b818460208701612325565b9190910192915050565b6020815260008251806020840152612384816040850160208701612325565b601f01601f1916919091016040019291505056fea26469706673582212201c8cbe870e2ad05a37470482c56c9874600fa82cbee6dea37873535ab462bb6a64736f6c63430008130033000000000000000000000000f54f8e6bc69761bf38ce506bf79b002163660b5100000000000000000000000000000000000000000000000000000000641c5b6000000000000000000000000083934d244f56963dca0d6426c12c7304c9fd7617
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80635d710ad7116100f957806396f703b411610097578063e0c4f12d11610071578063e0c4f12d146103be578063e1362728146103d1578063f746b718146103e4578063f887ea40146103f757600080fd5b806396f703b4146103855780639e5914da14610398578063b3ab15fb146103ab57600080fd5b80636e271dd5116100d35780636e271dd5146103195780638dbdbe6d1461032257806393f1a40b14610335578063943f013d1461037c57600080fd5b80635d710ad7146102f55780635f96dc1114610308578063630b5ba11461031157600080fd5b806343b0e8df116101665780635312ea8e116101405780635312ea8e146102b357806354575af4146102c6578063570ca735146102d95780635c558ba7146102ec57600080fd5b806343b0e8df14610278578063441a3e701461028d57806351eb05a6146102a057600080fd5b806309cf6091146101ae5780631441a5a9146101d25780631526fe27146101fd57806317caf6f114610253578063231f0c6a1461025c57806333a581d21461026f575b600080fd5b6101bf69043c33c193756480000081565b6040519081526020015b60405180910390f35b6002546101e5906001600160a01b031681565b6040516001600160a01b0390911681526020016101c9565b61021061020b366004611f7f565b610412565b604080516001600160a01b03909816885260208801969096529486019390935260608501919091521515608084015260a0830152151560c082015260e0016101c9565b6101bf60065481565b6101bf61026a366004611f98565b610471565b6101bf60001981565b61028b610286366004611fba565b610536565b005b61028b61029b366004611f98565b610646565b61028b6102ae366004611f7f565b610809565b61028b6102c1366004611f7f565b610961565b61028b6102d4366004611ffe565b610a03565b6000546101e5906001600160a01b031681565b6101bf60095481565b61028b61030336600461204e565b610b38565b6101bf60075481565b61028b610e31565b6101bf60085481565b61028b6103303660046120b5565b610e5c565b6103676103433660046120e3565b60056020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101c9565b6101bf600a5481565b6101bf6103933660046120e3565b611072565b61028b6103a6366004612113565b6111ce565b61028b6103b9366004612113565b61121a565b6003546101e5906001600160a01b031681565b6001546101e5906001600160a01b031681565b61028b6103f2366004612113565b611266565b6101e5731b02da8cb0d097eb8d57a175b88c7d8b4799750681565b6004818154811061042257600080fd5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b03909516965092949193909260ff90811692911687565b600081831061048257506000610530565b60085482106104ea57600854831061049c57506000610530565b60075483116104cf576104c86009546104c260075460085461133090919063ffffffff16565b90611393565b9050610530565b6104c86009546104c28560085461133090919063ffffffff16565b60075482116104fb57506000610530565b600754831161051f576104c86009546104c26007548561133090919063ffffffff16565b6009546104c8906104c28486611330565b92915050565b6000546001600160a01b031633146105695760405162461bcd60e51b815260040161056090612130565b60405180910390fd5b60c881111561058a5760405162461bcd60e51b81526004016105609061217b565b610592610e31565b6000600484815481106105a7576105a76121bd565b60009182526020909120600790910201600481015490915060ff16156105ee576105ea836105e4836001015460065461133090919063ffffffff16565b90611415565b6006555b8260048581548110610602576106026121bd565b906000526020600020906007020160010181905550816004858154811061062b5761062b6121bd565b90600052602060002090600702016005018190555050505050565b6000339050600060048481548110610660576106606121bd565b600091825260208083208784526005825260408085206001600160a01b038816865290925292208054600790920290920192508411156106d75760405162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b6044820152606401610560565b6106e085610809565b600061071d8260010154610717670de0b6b3a76400006107118760030154876000015461139390919063ffffffff16565b90611474565b90611330565b905080156107735761072f84826114cf565b836001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04868260405161076a91815260200190565b60405180910390a25b841561079d5781546107859086611330565b8255825461079d906001600160a01b03168587611576565b600383015482546107bb91670de0b6b3a76400009161071191611393565b600183015560405185815286906001600160a01b038616907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568906020015b60405180910390a3505050505050565b60006004828154811061081e5761081e6121bd565b906000526020600020906007020190508060020154421161083d575050565b80546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a991906121d3565b9050806000036108be57504260029091015550565b600482015460ff166108ef5760048201805460ff191660019081179091558201546006546108eb91611415565b6006555b60065415610956576000610907836002015442610471565b9050600061092860065461071186600101548561139390919063ffffffff16565b905061094e6109438461071184670de0b6b3a7640000611393565b600386015490611415565b600385015550505b504260029091015550565b600060048281548110610976576109766121bd565b6000918252602080832085845260058252604080852033808752935284208054858255600182019590955560079093020180549094509192916109c6916001600160a01b03919091169083611576565b604051818152849033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959060200160405180910390a350505050565b6000546001600160a01b03163314610a2d5760405162461bcd60e51b815260040161056090612130565b600854610a3d906276a700612202565b421015610b1f576001546001600160a01b0390811690841603610a8b5760405162461bcd60e51b8152600401610560906020808252600490820152633a32b0b960e11b604082015260600190565b60045460005b81811015610b1c57600060048281548110610aae57610aae6121bd565b6000918252602090912060079091020180549091506001600160a01b0390811690871603610b0b5760405162461bcd60e51b815260206004820152600a6024820152693837b7b6173a37b5b2b760b11b6044820152606401610560565b50610b1581612215565b9050610a91565b50505b610b336001600160a01b0384168284611576565b505050565b6000546001600160a01b03163314610b625760405162461bcd60e51b815260040161056090612130565b60c8821115610b835760405162461bcd60e51b81526004016105609061217b565b610b8c856115d9565b8315610b9a57610b9a610e31565b600754421015610bcb5782600003610bb6576007549250610be0565b600754831015610bc65760075492505b610be0565b821580610bd757504283105b15610be0574292505b600060075484111580610bf35750428411155b6040805160e0810182526001600160a01b038981168252602082018b8152928201888152600060608401818152861580156080870190815260a087018c81528b151560c0890190815260048054600181018255965297517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b600790960295860180546001600160a01b031916919098161790965596517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c84015592517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d830155517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e82015593517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19f8501805460ff1990811692151592909217905591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd1a085015591517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd1a1909301805490911692151592909217909155909150610da157600654610d9d9088611415565b6006555b60405163095ea7b360e01b8152731b02da8cb0d097eb8d57a175b88c7d8b47997506600482015260001960248201526001600160a01b0387169063095ea7b3906044016020604051808303816000875af1158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e27919061222e565b5050505050505050565b60045460005b81811015610e5857610e4881610809565b610e5181612215565b9050610e37565b5050565b6000339050600060048581548110610e7657610e766121bd565b600091825260208083208884526005825260408085206001600160a01b0388168652909252922060079091029091019150610eb086610809565b805415610f40576000610ee88260010154610717670de0b6b3a76400006107118760030154876000015461139390919063ffffffff16565b90508015610f3e57610efa84826114cf565b836001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048682604051610f3591815260200190565b60405180910390a25b505b8415611012578154610f5d906001600160a01b031684308861167b565b8054610f699086611415565b8155600582015415611012576000610f9461271061071185600501548961139390919063ffffffff16565b6040805160e08101825285546001600160a01b031681526001860154602082015260028601549181019190915260038501546060820152600485015460ff90811615156080830152600586015460a0830152600686015416151560c0820152909150611002908286886116b9565b815461100e9082611330565b8255505b6003820154815461103091670de0b6b3a76400009161071191611393565b600182015560405185815286906001600160a01b038516907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15906020016107f9565b60008060048481548110611088576110886121bd565b600091825260208083208784526005825260408085206001600160a01b03898116875293528085206007949094029091016003810154815492516370a0823160e01b815230600482015291965093949291909116906370a0823190602401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112791906121d3565b905083600201544211801561113b57508015155b15611198576000611150856002015442610471565b9050600061117160065461071188600101548561139390919063ffffffff16565b905061119361118c8461071184670de0b6b3a7640000611393565b8590611415565b935050505b6111c38360010154610717670de0b6b3a764000061071186886000015461139390919063ffffffff16565b979650505050505050565b6000546001600160a01b031633146111f85760405162461bcd60e51b815260040161056090612130565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112445760405162461bcd60e51b815260040161056090612130565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146112c05760405162461bcd60e51b815260206004820152601a60248201527f736574547265617375727946756e643a20464f5242494444454e0000000000006044820152606401610560565b6001600160a01b03811661130e5760405162461bcd60e51b8152602060048201526015602482015274736574547265617375727946756e643a205a45524f60581b6044820152606401610560565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000828211156113825760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610560565b61138c828461224b565b9392505050565b6000826000036113a557506000610530565b60006113b1838561225e565b9050826113be8583612275565b1461138c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610560565b6000806114228385612202565b90508381101561138c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610560565b60008082116114c55760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610560565b61138c8284612275565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c91906121d3565b90508015610b33578082111561156357600154610b33906001600160a01b03168483611576565b600154610b33906001600160a01b031684845b6040516001600160a01b038316602482015260448101829052610b3390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d45565b60045460005b81811015610b3357826001600160a01b031660048281548110611604576116046121bd565b60009182526020909120600790910201546001600160a01b03160361166b5760405162461bcd60e51b815260206004820152601f60248201527f5465617247656e65736973506f6f6c3a206578697374696e6720706f6f6c3f006044820152606401610560565b61167481612215565b90506115df565b6040516001600160a01b03808516602483015283166044820152606481018290526116b39085906323b872dd60e01b906084016115a2565b50505050565b60006116c6846004611474565b905080156118bb57600254604051634a9fefc760e01b81526001600160a01b0385811660048301526000921690634a9fefc790602401602060405180830381865afa158015611719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173d9190612297565b90506001600160a01b038116611851576001600160a01b038316156118305760025460405163bbddaca360e01b81526001600160a01b03868116600483015285811660248301529091169063bbddaca390604401600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b505087516117da92506001600160a01b031690508484611576565b8551604080516001600160a01b03878116825286811660208301529181018590529116907fd1bf4b2e350cb3a3429027215f2f3f7aaeb307fbf5f611bd11fa71b06057a9a59060600160405180910390a26118b9565b600354865161184c916001600160a01b03918216911684611576565b6118b9565b8551611867906001600160a01b03168284611576565b8551604080516001600160a01b03878116825284811660208301529181018590529116907fd1bf4b2e350cb3a3429027215f2f3f7aaeb307fbf5f611bd11fa71b06057a9a59060600160405180910390a25b505b60006118c8856004611474565b90508015611d08578560c00151156118fb5760035486516118f6916001600160a01b03918216911683611576565b611d08565b6060731b02da8cb0d097eb8d57a175b88c7d8b479975066001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119739190612297565b6001600160a01b031687600001516001600160a01b031603611a1c5760408051600280825260608201835290916020830190803683370190505090508660000151816000815181106119c7576119c76121bd565b6001600160a01b03928316602091820292909201015260018054835192169183919081106119f7576119f76121bd565b60200260200101906001600160a01b031690816001600160a01b031681525050611b50565b604080516003808252608082019092529060208201606080368337019050509050866000015181600081518110611a5557611a556121bd565b60200260200101906001600160a01b031690816001600160a01b031681525050731b02da8cb0d097eb8d57a175b88c7d8b479975066001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aeb9190612297565b81600181518110611afe57611afe6121bd565b6001600160a01b039283166020918202929092010152600154825191169082906002908110611b2f57611b2f6121bd565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd91906121d3565b604051635c11d79560e01b8152909150731b02da8cb0d097eb8d57a175b88c7d8b4799750690635c11d79590611c009086906000908790309042906004016122b4565b600060405180830381600087803b158015611c1a57600080fd5b505af1158015611c2e573d6000803e3d6000fd5b50506001546040516370a0823160e01b815230600482015260009350611ca5925084916001600160a01b0316906370a0823190602401602060405180830381865afa158015611c81573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071791906121d3565b600154604051630852cd8d60e31b8152600481018390529192506001600160a01b0316906342966c6890602401600060405180830381600087803b158015611cec57600080fd5b505af1158015611d00573d6000803e3d6000fd5b505050505050505b6000611d18826107178886611330565b90508015611d3c576003548751611d3c916001600160a01b03918216911683611576565b50505050505050565b6000611d9a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e179092919063ffffffff16565b805190915015610b335780806020019051810190611db8919061222e565b610b335760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610560565b6060611e268484600085611e2e565b949350505050565b606082471015611e8f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610560565b843b611edd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610560565b600080866001600160a01b03168587604051611ef99190612349565b60006040518083038185875af1925050503d8060008114611f36576040519150601f19603f3d011682016040523d82523d6000602084013e611f3b565b606091505b50915091506111c382828660608315611f5557508161138c565b825115611f655782518084602001fd5b8160405162461bcd60e51b81526004016105609190612365565b600060208284031215611f9157600080fd5b5035919050565b60008060408385031215611fab57600080fd5b50508035926020909101359150565b600080600060608486031215611fcf57600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611ffb57600080fd5b50565b60008060006060848603121561201357600080fd5b833561201e81611fe6565b925060208401359150604084013561203581611fe6565b809150509250925092565b8015158114611ffb57600080fd5b60008060008060008060c0878903121561206757600080fd5b86359550602087013561207981611fe6565b9450604087013561208981612040565b9350606087013592506080870135915060a08701356120a781612040565b809150509295509295509295565b6000806000606084860312156120ca57600080fd5b8335925060208401359150604084013561203581611fe6565b600080604083850312156120f657600080fd5b82359150602083013561210881611fe6565b809150509250929050565b60006020828403121561212557600080fd5b813561138c81611fe6565b6020808252602b908201527f5465617247656e65736973506f6f6c3a2063616c6c6572206973206e6f74207460408201526a34329037b832b930ba37b960a91b606082015260800190565b60208082526022908201527f6164643a206465706f736974206665652063616e206e6f742065786365656420604082015261322560f01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156121e557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610530576105306121ec565b600060018201612227576122276121ec565b5060010190565b60006020828403121561224057600080fd5b815161138c81612040565b81810381811115610530576105306121ec565b8082028115828204841417610530576105306121ec565b60008261229257634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156122a957600080fd5b815161138c81611fe6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123045784516001600160a01b0316835293830193918301916001016122df565b50506001600160a01b03969096166060850152505050608001529392505050565b60005b83811015612340578181015183820152602001612328565b50506000910152565b6000825161235b818460208701612325565b9190910192915050565b6020815260008251806020840152612384816040850160208701612325565b601f01601f1916919091016040019291505056fea26469706673582212201c8cbe870e2ad05a37470482c56c9874600fa82cbee6dea37873535ab462bb6a64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f54f8e6bc69761bf38ce506bf79b002163660b5100000000000000000000000000000000000000000000000000000000641c5b6000000000000000000000000083934d244f56963dca0d6426c12c7304c9fd7617
-----Decoded View---------------
Arg [0] : _tear (address): 0xf54f8E6Bc69761BF38cE506BF79B002163660B51
Arg [1] : _poolStartTime (uint256): 1679580000
Arg [2] : _initializer (address): 0x83934D244f56963DCa0d6426C12C7304C9Fd7617
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f54f8e6bc69761bf38ce506bf79b002163660b51
Arg [1] : 00000000000000000000000000000000000000000000000000000000641c5b60
Arg [2] : 00000000000000000000000083934d244f56963dca0d6426c12c7304c9fd7617
Deployed Bytecode Sourcemap
8697:14610:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:51;;10565:11;10525:51;;;;;160:25:1;;;148:2;133:18;10525:51:0;;;;;;;;9827:25;;;;;-1:-1:-1;;;;;9827:25:0;;;;;;-1:-1:-1;;;;;377:32:1;;;359:51;;347:2;332:18;9827:25:0;196:220:1;9922:26:0;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;940:32:1;;;922:51;;1004:2;989:18;;982:34;;;;1032:18;;;1025:34;;;;1090:2;1075:18;;1068:34;;;;1146:14;1139:22;1133:3;1118:19;;1111:51;960:3;1178:19;;1171:35;1250:14;1243:22;1237:3;1222:19;;1215:51;909:3;894:19;9922:26:0;606:666:1;10167:34:0;;;;;;14136:653;;;;;;:::i;:::-;;:::i;8956:49::-;;-1:-1:-1;;8956:49:0;;13541:518;;;;;;:::i;:::-;;:::i;:::-;;20469:810;;;;;;:::i;:::-;;:::i;15962:908::-;;;;;;:::i;:::-;;:::i;21350:377::-;;;;;;:::i;:::-;;:::i;22700:604::-;;;;;;:::i;:::-;;:::i;9033:23::-;;;;;-1:-1:-1;;;;;9033:23:0;;;10380:46;;;;;;11900:1545;;;;;;:::i;:::-;;:::i;10252:28::-;;;;;;15706:180;;;:::i;10329:26::-;;;;;;19320:1113;;;;;;:::i;:::-;;:::i;10006:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4464:25:1;;;4520:2;4505:18;;4498:34;;;;4437:18;10006:64:0;4290:248:1;10473:35:0;;;;;;14852:771;;;;;;:::i;:::-;;:::i;22323:112::-;;;;;;:::i;:::-;;:::i;22214:101::-;;;;;;:::i;:::-;;:::i;9859:27::-;;;;;-1:-1:-1;;;;;9859:27:0;;;9802:18;;;;;-1:-1:-1;;;;;9802:18:0;;;22443:249;;;;;;:::i;:::-;;:::i;8851:98::-;;8906:42;8851:98;;9922:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9922:26:0;;;;-1:-1:-1;9922:26:0;;;;;;;;;;;;;;:::o;14136:653::-;14221:7;14258;14245:9;:20;14241:34;;-1:-1:-1;14274:1:0;14267:8;;14241:34;14301:11;;14290:7;:22;14286:496;;14346:11;;14333:9;:24;14329:38;;-1:-1:-1;14366:1:0;14359:8;;14329:38;14399:13;;14386:9;:26;14382:88;;14421:49;14456:13;;14421:30;14437:13;;14421:11;;:15;;:30;;;;:::i;:::-;:34;;:49::i;:::-;14414:56;;;;14382:88;14492:45;14523:13;;14492:26;14508:9;14492:11;;:15;;:26;;;;:::i;14286:496::-;14585:13;;14574:7;:24;14570:38;;-1:-1:-1;14607:1:0;14600:8;;14570:38;14640:13;;14627:9;:26;14623:84;;14662:45;14693:13;;14662:26;14674:13;;14662:7;:11;;:26;;;;:::i;14623:84::-;14756:13;;14729:41;;:22;:7;14741:9;14729:11;:22::i;14286:496::-;14136:653;;;;:::o;13541:518::-;11463:8;;-1:-1:-1;;;;;11463:8:0;11475:10;11463:22;11455:78;;;;-1:-1:-1;;;11455:78:0;;;;;;;:::i;:::-;;;;;;;;;13668:3:::1;13651:13;:20;;13643:67;;;;-1:-1:-1::0;;;13643:67:0::1;;;;;;;:::i;:::-;13721:17;:15;:17::i;:::-;13749:21;13773:8;13782:4;13773:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;13802;::::0;::::1;::::0;13773;;-1:-1:-1;13802:14:0::1;;13798:150;;;13851:85;13910:11;13851:36;13871:4;:15;;;13851;;:19;;:36;;;;:::i;:::-;:40:::0;::::1;:85::i;:::-;13833:15;:103:::0;13798:150:::1;13986:11;13958:8;13967:4;13958:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;:39;;;;14038:13;14008:8;14017:4;14008:14;;;;;;;;:::i;:::-;;;;;;;;;;;:27;;:43;;;;13632:427;13541:518:::0;;;:::o;20469:810::-;20536:15;20554:10;20536:28;;20575:21;20599:8;20608:4;20599:14;;;;;;;;:::i;:::-;;;;;;;;;20648;;;:8;:14;;;;;;-1:-1:-1;;;;;20648:23:0;;;;;;;;;20690:11;;20599:14;;;;;;;;-1:-1:-1;20690:22:0;-1:-1:-1;20690:22:0;20682:53;;;;-1:-1:-1;;;20682:53:0;;6403:2:1;20682:53:0;;;6385:21:1;6442:2;6422:18;;;6415:30;-1:-1:-1;;;6461:18:1;;;6454:48;6519:18;;20682:53:0;6201:342:1;20682:53:0;20746:16;20757:4;20746:10;:16::i;:::-;20773;20792:68;20844:4;:15;;;20792:47;20834:4;20792:37;20808:4;:20;;;20792:4;:11;;;:15;;:37;;;;:::i;:::-;:41;;:47::i;:::-;:51;;:68::i;:::-;20773:87;-1:-1:-1;20875:12:0;;20871:129;;20904:35;20921:7;20930:8;20904:16;:35::i;:::-;20970:7;-1:-1:-1;;;;;20959:29:0;;20979:8;20959:29;;;;160:25:1;;148:2;133:18;;14:177;20959:29:0;;;;;;;;20871:129;21014:11;;21010:138;;21056:11;;:24;;21072:7;21056:15;:24::i;:::-;21042:38;;21095:10;;:41;;-1:-1:-1;;;;;21095:10:0;21119:7;21128;21095:23;:41::i;:::-;21192:20;;;;21176:11;;:47;;21218:4;;21176:37;;:15;:37::i;:47::-;21158:15;;;:65;21239:32;;160:25:1;;;21257:4:0;;-1:-1:-1;;;;;21239:32:0;;;;;148:2:1;133:18;21239:32:0;;;;;;;;20525:754;;;;20469:810;;:::o;15962:908::-;16014:21;16038:8;16047:4;16038:14;;;;;;;;:::i;:::-;;;;;;;;;;;16014:38;;16086:4;:19;;;16067:15;:38;16063:77;;16122:7;15962:908;:::o;16063:77::-;16172:10;;:35;;-1:-1:-1;;;16172:35:0;;16201:4;16172:35;;;359:51:1;16150:19:0;;-1:-1:-1;;;;;16172:10:0;;:20;;332:18:1;;16172:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16150:57;;16222:11;16237:1;16222:16;16218:107;;-1:-1:-1;16277:15:0;16255:19;;;;:37;-1:-1:-1;15962:908:0:o;16218:107::-;16340:14;;;;;;16335:138;;16371:14;;;:21;;-1:-1:-1;;16371:21:0;16388:4;16371:21;;;;;;16445:15;;;16425;;:36;;:19;:36::i;:::-;16407:15;:54;16335:138;16487:15;;:19;16483:332;;16523:24;16550:56;16569:4;:19;;;16590:15;16550:18;:56::i;:::-;16523:83;;16621:19;16643:58;16685:15;;16643:37;16664:4;:15;;;16643:16;:20;;:37;;;;:::i;:58::-;16621:80;-1:-1:-1;16739:64:0;16764:38;16790:11;16764:21;16621:80;16780:4;16764:15;:21::i;:38::-;16739:20;;;;;:24;:64::i;:::-;16716:20;;;:87;-1:-1:-1;;16483:332:0;-1:-1:-1;16847:15:0;16825:19;;;;:37;-1:-1:-1;15962:908:0:o;21350:377::-;21409:21;21433:8;21442:4;21433:14;;;;;;;;:::i;:::-;;;;;;;;;21482;;;:8;:14;;;;;;21497:10;21482:26;;;;;;;21537:11;;21559:15;;;-1:-1:-1;21585:15:0;;:19;;;;21433:14;;;;;21615:10;;21433:14;;-1:-1:-1;21482:26:0;;21537:11;21615:44;;-1:-1:-1;;;;;21615:10:0;;;;;21537:11;21615:23;:44::i;:::-;21675;;160:25:1;;;21705:4:0;;21693:10;;21675:44;;148:2:1;133:18;21675:44:0;;;;;;;21398:329;;;21350:377;:::o;22700:604::-;11463:8;;-1:-1:-1;;;;;11463:8:0;11475:10;11463:22;11455:78;;;;-1:-1:-1;;;11455:78:0;;;;;;;:::i;:::-;22836:11:::1;::::0;:21:::1;::::0;22850:7:::1;22836:21;:::i;:::-;22818:15;:39;22814:441;;;22992:4;::::0;-1:-1:-1;;;;;22992:4:0;;::::1;22982:14:::0;;::::1;::::0;22974:31:::1;;;;-1:-1:-1::0;;;22974:31:0::1;;;;;;7201:2:1::0;7183:21;;;7240:1;7220:18;;;7213:29;-1:-1:-1;;;7273:2:1;7258:18;;7251:34;7317:2;7302:18;;6999:327;22974:31:0::1;23037:8;:15:::0;23020:14:::1;23067:177;23095:6;23089:3;:12;23067:177;;;23129:21;23153:8;23162:3;23153:13;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;23203:10:::0;;23153:13;;-1:-1:-1;;;;;;23203:10:0;;::::1;23193:20:::0;;::::1;::::0;23185:43:::1;;;::::0;-1:-1:-1;;;23185:43:0;;7533:2:1;23185:43:0::1;::::0;::::1;7515:21:1::0;7572:2;7552:18;;;7545:30;-1:-1:-1;;;7591:18:1;;;7584:40;7641:18;;23185:43:0::1;7331:334:1::0;23185:43:0::1;-1:-1:-1::0;23103:5:0::1;::::0;::::1;:::i;:::-;;;23067:177;;;;22859:396;22814:441;23265:31;-1:-1:-1::0;;;;;23265:19:0;::::1;23285:2:::0;23289:6;23265:19:::1;:31::i;:::-;22700:604:::0;;;:::o;11900:1545::-;11463:8;;-1:-1:-1;;;;;11463:8:0;11475:10;11463:22;11455:78;;;;-1:-1:-1;;;11455:78:0;;;;;;;:::i;:::-;12149:3:::1;12132:13;:20;;12124:67;;;;-1:-1:-1::0;;;12124:67:0::1;;;;;;;:::i;:::-;12202:26;12221:6;12202:18;:26::i;:::-;12243:11;12239:61;;;12271:17;:15;:17::i;:::-;12332:13;;12314:15;:31;12310:534;;;12399:15;12418:1;12399:20:::0;12395:243:::1;;12458:13;;12440:31;;12310:534;;12395:243;12534:13;;12516:15;:31;12512:111;;;12590:13;;12572:31;;12512:111;12310:534;;;12706:20:::0;;;:57:::1;;;12748:15;12730;:33;12706:57;12702:131;;;12802:15;12784:33;;12702:131;12854:15;12901:13;;12882:15;:32;;12881:83;;;;12948:15;12929;:34;;12881:83;12989:289;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;12989:289:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;12989:289:0;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;::::1;;::::0;;;;;;12975:8:::1;:304:::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;12975:304:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12975:304:0;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;;;;;;;;;;;;;;;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;;12989:289;;-1:-1:-1;13290:93:0::1;;13339:15;::::0;:32:::1;::::0;13359:11;13339:19:::1;:32::i;:::-;13321:15;:50:::0;13290:93:::1;13393:44;::::0;-1:-1:-1;;;13393:44:0;;8906:42:::1;13393:44;::::0;::::1;7984:51:1::0;-1:-1:-1;;8051:18:1;;;8044:34;-1:-1:-1;;;;;13393:14:0;::::1;::::0;::::1;::::0;7957:18:1;;13393:44:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12113:1332;11900:1545:::0;;;;;;:::o;15706:180::-;15768:8;:15;15751:14;15794:85;15822:6;15816:3;:12;15794:85;;;15852:15;15863:3;15852:10;:15::i;:::-;15830:5;;;:::i;:::-;;;15794:85;;;;15740:146;15706:180::o;19320:1113::-;19405:15;19423:10;19405:28;;19444:21;19468:8;19477:4;19468:14;;;;;;;;:::i;:::-;;;;;;;;;19517;;;:8;:14;;;;;;-1:-1:-1;;;;;19517:23:0;;;;;;;;;19468:14;;;;;;;;-1:-1:-1;19551:16:0;19526:4;19551:10;:16::i;:::-;19582:11;;:15;19578:290;;19614:16;19633:68;19685:4;:15;;;19633:47;19675:4;19633:37;19649:4;:20;;;19633:4;:11;;;:15;;:37;;;;:::i;:68::-;19614:87;-1:-1:-1;19720:12:0;;19716:141;;19753:35;19770:7;19779:8;19753:16;:35::i;:::-;19823:7;-1:-1:-1;;;;;19812:29:0;;19832:8;19812:29;;;;160:25:1;;148:2;133:18;;14:177;19812:29:0;;;;;;;;19716:141;19599:269;19578:290;19882:11;;19878:425;;19910:10;;:60;;-1:-1:-1;;;;;19910:10:0;19938:7;19955:4;19962:7;19910:27;:60::i;:::-;19999:11;;:24;;20015:7;19999:15;:24::i;:::-;19985:38;;20043:17;;;;:21;20040:252;;20084:18;20105:41;20140:5;20105:30;20117:4;:17;;;20105:7;:11;;:30;;;;:::i;:41::-;20165:51;;;;;;;;;;-1:-1:-1;;;;;20165:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20084:62;;-1:-1:-1;20165:51:0;;20084:62;20197:7;20206:9;20165:13;:51::i;:::-;20249:11;;:27;;20265:10;20249:15;:27::i;:::-;20235:41;;-1:-1:-1;20040:252:0;20347:20;;;;20331:11;;:47;;20373:4;;20331:37;;:15;:37::i;:47::-;20313:15;;;:65;20394:31;;160:25:1;;;20411:4:0;;-1:-1:-1;;;;;20394:31:0;;;;;148:2:1;133:18;20394:31:0;14:177:1;14852:771:0;14925:7;14945:21;14969:8;14978:4;14969:14;;;;;;;;:::i;:::-;;;;;;;;;15018;;;:8;:14;;;;;;-1:-1:-1;;;;;15018:21:0;;;;;;;;;;14969:14;;;;;;;;15076:20;;;;15129:10;;:35;;-1:-1:-1;;;15129:35:0;;15158:4;15129:35;;;359:51:1;14969:14:0;;-1:-1:-1;15018:21:0;;14969:14;15129:10;;;;;:20;;332:18:1;;15129:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15107:57;;15197:4;:19;;;15179:15;:37;:57;;;;-1:-1:-1;15220:16:0;;;15179:57;15175:360;;;15253:24;15280:56;15299:4;:19;;;15320:15;15280:18;:56::i;:::-;15253:83;;15351:19;15373:58;15415:15;;15373:37;15394:4;:15;;;15373:16;:20;;:37;;;;:::i;:58::-;15351:80;-1:-1:-1;15464:59:0;15484:38;15510:11;15484:21;15351:80;15500:4;15484:15;:21::i;:38::-;15464:15;;:19;:59::i;:::-;15446:77;;15238:297;;15175:360;15552:63;15599:4;:15;;;15552:42;15589:4;15552:32;15568:15;15552:4;:11;;;:15;;:32;;;;:::i;:63::-;15545:70;14852:771;-1:-1:-1;;;;;;;14852:771:0:o;22323:112::-;11463:8;;-1:-1:-1;;;;;11463:8:0;11475:10;11463:22;11455:78;;;;-1:-1:-1;;;11455:78:0;;;;;;;:::i;:::-;22396:8:::1;:31:::0;;-1:-1:-1;;;;;;22396:31:0::1;-1:-1:-1::0;;;;;22396:31:0;;;::::1;::::0;;;::::1;::::0;;22323:112::o;22214:101::-;11463:8;;-1:-1:-1;;;;;11463:8:0;11475:10;11463:22;11455:78;;;;-1:-1:-1;;;11455:78:0;;;;;;;:::i;:::-;22287:8:::1;:20:::0;;-1:-1:-1;;;;;;22287:20:0::1;-1:-1:-1::0;;;;;22287:20:0;;;::::1;::::0;;;::::1;::::0;;22214:101::o;22443:249::-;22530:12;;-1:-1:-1;;;;;22530:12:0;22516:10;:26;22508:65;;;;-1:-1:-1;;;22508:65:0;;8541:2:1;22508:65:0;;;8523:21:1;8580:2;8560:18;;;8553:30;8619:28;8599:18;;;8592:56;8665:18;;22508:65:0;8339:350:1;22508:65:0;-1:-1:-1;;;;;22592:27:0;;22584:61;;;;-1:-1:-1;;;22584:61:0;;8896:2:1;22584:61:0;;;8878:21:1;8935:2;8915:18;;;8908:30;-1:-1:-1;;;8954:18:1;;;8947:51;9015:18;;22584:61:0;8694:345:1;22584:61:0;22656:12;:28;;-1:-1:-1;;;;;;22656:28:0;-1:-1:-1;;;;;22656:28:0;;;;;;;;;;22443:249::o;1843:158::-;1901:7;1934:1;1929;:6;;1921:49;;;;-1:-1:-1;;;1921:49:0;;9246:2:1;1921:49:0;;;9228:21:1;9285:2;9265:18;;;9258:30;9324:32;9304:18;;;9297:60;9374:18;;1921:49:0;9044:354:1;1921:49:0;1988:5;1992:1;1988;:5;:::i;:::-;1981:12;1843:158;-1:-1:-1;;;1843:158:0:o;2007:220::-;2065:7;2089:1;2094;2089:6;2085:20;;-1:-1:-1;2104:1:0;2097:8;;2085:20;2116:9;2128:5;2132:1;2128;:5;:::i;:::-;2116:17;-1:-1:-1;2161:1:0;2152:5;2156:1;2116:17;2152:5;:::i;:::-;:10;2144:56;;;;-1:-1:-1;;;2144:56:0;;10133:2:1;2144:56:0;;;10115:21:1;10172:2;10152:18;;;10145:30;10211:34;10191:18;;;10184:62;-1:-1:-1;;;10262:18:1;;;10255:31;10303:19;;2144:56:0;9931:397:1;1658:179:0;1716:7;;1748:5;1752:1;1748;:5;:::i;:::-;1736:17;;1777:1;1772;:6;;1764:46;;;;-1:-1:-1;;;1764:46:0;;10535:2:1;1764:46:0;;;10517:21:1;10574:2;10554:18;;;10547:30;10613:29;10593:18;;;10586:57;10660:18;;1764:46:0;10333:351:1;2233:153:0;2291:7;2323:1;2319;:5;2311:44;;;;-1:-1:-1;;;2311:44:0;;10891:2:1;2311:44:0;;;10873:21:1;10930:2;10910:18;;;10903:30;10969:28;10949:18;;;10942:56;11015:18;;2311:44:0;10689:350:1;2311:44:0;2373:5;2377:1;2373;:5;:::i;21841:365::-;21940:4;;:29;;-1:-1:-1;;;21940:29:0;;21963:4;21940:29;;;359:51:1;21917:20:0;;-1:-1:-1;;;;;21940:4:0;;:14;;332:18:1;;21940:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21917:52;-1:-1:-1;21984:16:0;;21980:219;;22031:12;22021:7;:22;22017:171;;;22064:4;;:36;;-1:-1:-1;;;;;22064:4:0;22082:3;22087:12;22064:17;:36::i;22017:171::-;22141:4;;:31;;-1:-1:-1;;;;;22141:4:0;22159:3;22164:7;6434:177;6544:58;;-1:-1:-1;;;;;8002:32:1;;6544:58:0;;;7984:51:1;8051:18;;;8044:34;;;6517:86:0;;6537:5;;-1:-1:-1;;;6567:23:0;7957:18:1;;6544:58:0;;;;-1:-1:-1;;6544:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;6544:58:0;-1:-1:-1;;;;;;6544:58:0;;;;;;;;;;6517:19;:86::i;11561:261::-;11646:8;:15;11629:14;11672:143;11700:6;11694:3;:12;11672:143;;;11761:6;-1:-1:-1;;;;;11738:29:0;:8;11747:3;11738:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:19;-1:-1:-1;;;;;11738:19:0;:29;11730:73;;;;-1:-1:-1;;;11730:73:0;;11246:2:1;11730:73:0;;;11228:21:1;11285:2;11265:18;;;11258:30;11324:33;11304:18;;;11297:61;11375:18;;11730:73:0;11044:355:1;11730:73:0;11708:5;;;:::i;:::-;;;11672:143;;6617:205;6745:68;;-1:-1:-1;;;;;11662:15:1;;;6745:68:0;;;11644:34:1;11714:15;;11694:18;;;11687:43;11746:18;;;11739:34;;;6718:96:0;;6738:5;;-1:-1:-1;;;6768:27:0;11579:18:1;;6745:68:0;11404:375:1;6718:96:0;6617:205;;;;:::o;16878:2407::-;17043:21;17067:17;:10;17082:1;17067:14;:17::i;:::-;17043:41;-1:-1:-1;17111:17:0;;17107:744;;17164:8;;:29;;-1:-1:-1;;;17164:29:0;;-1:-1:-1;;;;;377:32:1;;;17164:29:0;;;359:51:1;17145:16:0;;17164:8;;:20;;332:18:1;;17164:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17145:48;-1:-1:-1;;;;;;17212:22:0;;17208:632;;-1:-1:-1;;;;;17259:23:0;;;17255:386;;17307:8;;:40;;-1:-1:-1;;;17307:40:0;;-1:-1:-1;;;;;12278:15:1;;;17307:40:0;;;12260:34:1;12330:15;;;12310:18;;;12303:43;17307:8:0;;;;:20;;12195:18:1;;17307:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17370:11:0;;:50;;-1:-1:-1;;;;;;17370:24:0;;-1:-1:-1;17395:9:0;17406:13;17370:24;:50::i;:::-;17471:11;;17448:71;;;-1:-1:-1;;;;;11662:15:1;;;11644:34;;11714:15;;;11709:2;11694:18;;11687:43;11746:18;;;11739:34;;;17448:71:0;;;;;11594:2:1;11579:18;17448:71:0;;;;;;;17208:632;;17255:386;17593:12;;17568:11;;:53;;-1:-1:-1;;;;;17568:24:0;;;;17593:12;17607:13;17568:24;:53::i;:::-;17208:632;;;17681:11;;:49;;-1:-1:-1;;;;;17681:24:0;17706:8;17716:13;17681:24;:49::i;:::-;17777:11;;17754:70;;;-1:-1:-1;;;;;11662:15:1;;;11644:34;;11714:15;;;11709:2;11694:18;;11687:43;11746:18;;;11739:34;;;17754:70:0;;;;;11594:2:1;11579:18;17754:70:0;;;;;;;17208:632;17130:721;17107:744;17863:20;17886:17;:10;17901:1;17886:14;:17::i;:::-;17863:40;-1:-1:-1;17930:16:0;;17926:1143;;17967:5;:15;;;17963:1095;;;18028:12;;18003:11;;:52;;-1:-1:-1;;;;;18003:24:0;;;;18028:12;18042;18003:24;:52::i;:::-;17963:1095;;;18096:21;8906:42;-1:-1:-1;;;;;18164:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18140:37:0;18148:5;:11;;;-1:-1:-1;;;;;18140:37:0;;18136:425;;18209:16;;;18223:1;18209:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18209:16:0;18202:23;;18266:5;:11;;;18248:4;18253:1;18248:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18248:30:0;;;:7;;;;;;;;;:30;18319:4;;;18301:7;;18319:4;;;18301;;18319;18301:7;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18301:23:0;;;-1:-1:-1;;;;;18301:23:0;;;;;18136:425;;;18380:16;;;18394:1;18380:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18380:16:0;18373:23;;18437:5;:11;;;18419:4;18424:1;18419:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;18419:30:0;;;-1:-1:-1;;;;;18419:30:0;;;;;8906:42;-1:-1:-1;;;;;18482:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18472:4;18477:1;18472:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18472:23:0;;;:7;;;;;;;;;:23;18536:4;;18518:7;;18536:4;;;18518;;18523:1;;18518:7;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18518:23:0;;;-1:-1:-1;;;;;18518:23:0;;;;;18136:425;18603:4;;:29;;-1:-1:-1;;;18603:29:0;;18626:4;18603:29;;;359:51:1;18579:21:0;;-1:-1:-1;;;;;18603:4:0;;:14;;332:18:1;;18603:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18651:239;;-1:-1:-1;;;18651:239:0;;18579:53;;-1:-1:-1;8906:42:0;;18651:60;;:239;;18734:12;;18769:1;;18793:4;;18828;;18856:15;;18651:239;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18932:4:0;;:29;;-1:-1:-1;;;18932:29:0;;18955:4;18932:29;;;359:51:1;18909:20:0;;-1:-1:-1;18932:48:0;;-1:-1:-1;18966:13:0;;-1:-1:-1;;;;;18932:4:0;;:14;;332:18:1;;18932:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:48::-;19017:4;;18999:43;;-1:-1:-1;;;18999:43:0;;;;;160:25:1;;;18909:71:0;;-1:-1:-1;;;;;;19017:4:0;;18999:29;;133:18:1;;18999:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18077:981;;;17963:1095;19081:25;19109:47;19143:12;19109:29;:10;19124:13;19109:14;:29::i;:47::-;19081:75;-1:-1:-1;19171:21:0;;19167:111;;19234:12;;19209:11;;:57;;-1:-1:-1;;;;;19209:24:0;;;;19234:12;19248:17;19209:24;:57::i;:::-;17032:2253;;;16878:2407;;;;:::o;7811:333::-;7892:23;7918:69;7946:4;7918:69;;;;;;;;;;;;;;;;;7926:5;-1:-1:-1;;;;;7918:27:0;;;:69;;;;;:::i;:::-;8002:17;;7892:95;;-1:-1:-1;8002:21:0;7998:139;;8059:10;8048:30;;;;;;;;;;;;:::i;:::-;8040:85;;;;-1:-1:-1;;;8040:85:0;;13676:2:1;8040:85:0;;;13658:21:1;13715:2;13695:18;;;13688:30;13754:34;13734:18;;;13727:62;-1:-1:-1;;;13805:18:1;;;13798:40;13855:19;;8040:85:0;13474:406:1;3769:195:0;3872:12;3904:52;3926:6;3934:4;3940:1;3943:12;3904:21;:52::i;:::-;3897:59;3769:195;-1:-1:-1;;;;3769:195:0:o;4202:468::-;4329:12;4387:5;4362:21;:30;;4354:81;;;;-1:-1:-1;;;4354:81:0;;14087:2:1;4354:81:0;;;14069:21:1;14126:2;14106:18;;;14099:30;14165:34;14145:18;;;14138:62;-1:-1:-1;;;14216:18:1;;;14209:36;14262:19;;4354:81:0;13885:402:1;4354:81:0;3206:20;;4446:60;;;;-1:-1:-1;;;4446:60:0;;14494:2:1;4446:60:0;;;14476:21:1;14533:2;14513:18;;;14506:30;14572:31;14552:18;;;14545:59;14621:18;;4446:60:0;14292:353:1;4446:60:0;4518:12;4532:23;4559:6;-1:-1:-1;;;;;4559:11:0;4579:5;4587:4;4559:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4517:75;;;;4610:52;4628:7;4637:10;4649:12;5935;5964:7;5960:368;;;-1:-1:-1;5995:10:0;5988:17;;5960:368;6042:17;;:21;6038:279;;6145:10;6139:17;6206:15;6193:10;6189:2;6185:19;6178:44;6038:279;6288:12;6281:20;;-1:-1:-1;;;6281:20:0;;;;;;;;:::i;421:180:1:-;480:6;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;-1:-1:-1;572:23:1;;421:180;-1:-1:-1;421:180:1:o;1277:248::-;1345:6;1353;1406:2;1394:9;1385:7;1381:23;1377:32;1374:52;;;1422:1;1419;1412:12;1374:52;-1:-1:-1;;1445:23:1;;;1515:2;1500:18;;;1487:32;;-1:-1:-1;1277:248:1:o;1530:316::-;1607:6;1615;1623;1676:2;1664:9;1655:7;1651:23;1647:32;1644:52;;;1692:1;1689;1682:12;1644:52;-1:-1:-1;;1715:23:1;;;1785:2;1770:18;;1757:32;;-1:-1:-1;1836:2:1;1821:18;;;1808:32;;1530:316;-1:-1:-1;1530:316:1:o;1851:139::-;-1:-1:-1;;;;;1934:31:1;;1924:42;;1914:70;;1980:1;1977;1970:12;1914:70;1851:139;:::o;1995:485::-;2085:6;2093;2101;2154:2;2142:9;2133:7;2129:23;2125:32;2122:52;;;2170:1;2167;2160:12;2122:52;2209:9;2196:23;2228:39;2261:5;2228:39;:::i;:::-;2286:5;-1:-1:-1;2338:2:1;2323:18;;2310:32;;-1:-1:-1;2394:2:1;2379:18;;2366:32;2407:41;2366:32;2407:41;:::i;:::-;2467:7;2457:17;;;1995:485;;;;;:::o;2693:118::-;2779:5;2772:13;2765:21;2758:5;2755:32;2745:60;;2801:1;2798;2791:12;2816:745;2927:6;2935;2943;2951;2959;2967;3020:3;3008:9;2999:7;2995:23;2991:33;2988:53;;;3037:1;3034;3027:12;2988:53;3073:9;3060:23;3050:33;;3133:2;3122:9;3118:18;3105:32;3146:39;3179:5;3146:39;:::i;:::-;3204:5;-1:-1:-1;3261:2:1;3246:18;;3233:32;3274:30;3233:32;3274:30;:::i;:::-;3323:7;-1:-1:-1;3377:2:1;3362:18;;3349:32;;-1:-1:-1;3428:3:1;3413:19;;3400:33;;-1:-1:-1;3485:3:1;3470:19;;3457:33;3499:30;3457:33;3499:30;:::i;:::-;3548:7;3538:17;;;2816:745;;;;;;;;:::o;3566:391::-;3643:6;3651;3659;3712:2;3700:9;3691:7;3687:23;3683:32;3680:52;;;3728:1;3725;3718:12;3680:52;3764:9;3751:23;3741:33;;3821:2;3810:9;3806:18;3793:32;3783:42;;3875:2;3864:9;3860:18;3847:32;3888:39;3921:5;3888:39;:::i;3962:323::-;4030:6;4038;4091:2;4079:9;4070:7;4066:23;4062:32;4059:52;;;4107:1;4104;4097:12;4059:52;4143:9;4130:23;4120:33;;4203:2;4192:9;4188:18;4175:32;4216:39;4249:5;4216:39;:::i;:::-;4274:5;4264:15;;;3962:323;;;;;:::o;4543:255::-;4602:6;4655:2;4643:9;4634:7;4630:23;4626:32;4623:52;;;4671:1;4668;4661:12;4623:52;4710:9;4697:23;4729:39;4762:5;4729:39;:::i;5254:407::-;5456:2;5438:21;;;5495:2;5475:18;;;5468:30;5534:34;5529:2;5514:18;;5507:62;-1:-1:-1;;;5600:2:1;5585:18;;5578:41;5651:3;5636:19;;5254:407::o;5666:398::-;5868:2;5850:21;;;5907:2;5887:18;;;5880:30;5946:34;5941:2;5926:18;;5919:62;-1:-1:-1;;;6012:2:1;5997:18;;5990:32;6054:3;6039:19;;5666:398::o;6069:127::-;6130:10;6125:3;6121:20;6118:1;6111:31;6161:4;6158:1;6151:15;6185:4;6182:1;6175:15;6548:184;6618:6;6671:2;6659:9;6650:7;6646:23;6642:32;6639:52;;;6687:1;6684;6677:12;6639:52;-1:-1:-1;6710:16:1;;6548:184;-1:-1:-1;6548:184:1:o;6737:127::-;6798:10;6793:3;6789:20;6786:1;6779:31;6829:4;6826:1;6819:15;6853:4;6850:1;6843:15;6869:125;6934:9;;;6955:10;;;6952:36;;;6968:18;;:::i;7670:135::-;7709:3;7730:17;;;7727:43;;7750:18;;:::i;:::-;-1:-1:-1;7797:1:1;7786:13;;7670:135::o;8089:245::-;8156:6;8209:2;8197:9;8188:7;8184:23;8180:32;8177:52;;;8225:1;8222;8215:12;8177:52;8257:9;8251:16;8276:28;8298:5;8276:28;:::i;9403:128::-;9470:9;;;9491:11;;;9488:37;;;9505:18;;:::i;9536:168::-;9609:9;;;9640;;9657:15;;;9651:22;;9637:37;9627:71;;9678:18;;:::i;9709:217::-;9749:1;9775;9765:132;;9819:10;9814:3;9810:20;9807:1;9800:31;9854:4;9851:1;9844:15;9882:4;9879:1;9872:15;9765:132;-1:-1:-1;9911:9:1;;9709:217::o;11784:259::-;11854:6;11907:2;11895:9;11886:7;11882:23;11878:32;11875:52;;;11923:1;11920;11913:12;11875:52;11955:9;11949:16;11974:39;12007:5;11974:39;:::i;12489:980::-;12751:4;12799:3;12788:9;12784:19;12830:6;12819:9;12812:25;12856:2;12894:6;12889:2;12878:9;12874:18;12867:34;12937:3;12932:2;12921:9;12917:18;12910:31;12961:6;12996;12990:13;13027:6;13019;13012:22;13065:3;13054:9;13050:19;13043:26;;13104:2;13096:6;13092:15;13078:29;;13125:1;13135:195;13149:6;13146:1;13143:13;13135:195;;;13214:13;;-1:-1:-1;;;;;13210:39:1;13198:52;;13305:15;;;;13270:12;;;;13246:1;13164:9;13135:195;;;-1:-1:-1;;;;;;;13386:32:1;;;;13381:2;13366:18;;13359:60;-1:-1:-1;;;13450:3:1;13435:19;13428:35;13347:3;12489:980;-1:-1:-1;;;12489:980:1:o;14650:250::-;14735:1;14745:113;14759:6;14756:1;14753:13;14745:113;;;14835:11;;;14829:18;14816:11;;;14809:39;14781:2;14774:10;14745:113;;;-1:-1:-1;;14892:1:1;14874:16;;14867:27;14650:250::o;14905:287::-;15034:3;15072:6;15066:13;15088:66;15147:6;15142:3;15135:4;15127:6;15123:17;15088:66;:::i;:::-;15170:16;;;;;14905:287;-1:-1:-1;;14905:287:1:o;15197:396::-;15346:2;15335:9;15328:21;15309:4;15378:6;15372:13;15421:6;15416:2;15405:9;15401:18;15394:34;15437:79;15509:6;15504:2;15493:9;15489:18;15484:2;15476:6;15472:15;15437:79;:::i;:::-;15577:2;15556:15;-1:-1:-1;;15552:29:1;15537:45;;;;15584:2;15533:54;;15197:396;-1:-1:-1;;15197:396:1:o
Swarm Source
ipfs://1c8cbe870e2ad05a37470482c56c9874600fa82cbee6dea37873535ab462bb6a
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.