Overview
ETH Balance
1.742296251240646027 ETH
Eth Value
$5,446.69 (@ $3,126.15/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,401 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 20493405 | 96 days ago | IN | 0 ETH | 0.0022291 | ||||
Claim Swap Rewar... | 20493053 | 96 days ago | IN | 0 ETH | 0.00113232 | ||||
Claim Yzy Reward | 20492901 | 97 days ago | IN | 0 ETH | 0.00033918 | ||||
Unstake | 19846308 | 187 days ago | IN | 0 ETH | 0.00753809 | ||||
Unstake | 19192674 | 278 days ago | IN | 0 ETH | 0.03702663 | ||||
Unstake | 18589419 | 363 days ago | IN | 0 ETH | 0.01129617 | ||||
Claim Yzy Reward | 13707127 | 1081 days ago | IN | 0 ETH | 0.00826947 | ||||
Unstake | 13707110 | 1081 days ago | IN | 0 ETH | 0.03878691 | ||||
Claim Yzy Availa... | 13497953 | 1114 days ago | IN | 0 ETH | 0.00952665 | ||||
Unstake | 13412946 | 1127 days ago | IN | 0 ETH | 0.04897009 | ||||
Unstake | 13252792 | 1152 days ago | IN | 0 ETH | 0.01728281 | ||||
Unstake | 13251299 | 1153 days ago | IN | 0 ETH | 0.01905394 | ||||
Claim Yzy Availa... | 13251254 | 1153 days ago | IN | 0 ETH | 0.00503935 | ||||
Unstake | 13122072 | 1172 days ago | IN | 0 ETH | 0.06082308 | ||||
Claim Yzy Reward | 13035821 | 1186 days ago | IN | 0 ETH | 0.0037865 | ||||
Claim Yzy Availa... | 13014401 | 1189 days ago | IN | 0 ETH | 0.00287541 | ||||
Claim Yzy Availa... | 13004690 | 1191 days ago | IN | 0 ETH | 0.007188 | ||||
Claim Yzy Availa... | 12919112 | 1204 days ago | IN | 0 ETH | 0.00217586 | ||||
Claim Yzy Availa... | 12874435 | 1211 days ago | IN | 0 ETH | 0.0012553 | ||||
Claim Yzy Availa... | 12868182 | 1212 days ago | IN | 0 ETH | 0.00111873 | ||||
Claim Yzy Availa... | 12778445 | 1226 days ago | IN | 0 ETH | 0.00301273 | ||||
Stake | 12769249 | 1227 days ago | IN | 0.2 ETH | 0.00319079 | ||||
Claim Yzy Availa... | 12755835 | 1230 days ago | IN | 0 ETH | 0.00110865 | ||||
Unstake | 12750879 | 1230 days ago | IN | 0 ETH | 0.00481477 | ||||
Claim Swap Rewar... | 12687895 | 1240 days ago | IN | 0 ETH | 0.01242802 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12769249 | 1227 days ago | 0.1 ETH | ||||
12769249 | 1227 days ago | 0.1 ETH | ||||
12414543 | 1283 days ago | 0.22 ETH | ||||
12414543 | 1283 days ago | 0.22 ETH | ||||
12167169 | 1321 days ago | 10.75 ETH | ||||
12167169 | 1321 days ago | 10.75 ETH | ||||
12165999 | 1321 days ago | 0.00073412 ETH | ||||
12165999 | 1321 days ago | 0.5 ETH | ||||
12165999 | 1321 days ago | 0.5 ETH | ||||
12123709 | 1327 days ago | 0.00137628 ETH | ||||
12123709 | 1327 days ago | 0.25 ETH | ||||
12123709 | 1327 days ago | 0.25 ETH | ||||
12123029 | 1327 days ago | 1 ETH | ||||
12123029 | 1327 days ago | 1 ETH | ||||
12078401 | 1334 days ago | 0.00158052 ETH | ||||
12078401 | 1334 days ago | 0.255 ETH | ||||
12078401 | 1334 days ago | 0.255 ETH | ||||
12054599 | 1338 days ago | 3.7 ETH | ||||
12054599 | 1338 days ago | 3.7 ETH | ||||
11988942 | 1348 days ago | 0.00039067 ETH | ||||
11988942 | 1348 days ago | 0.05 ETH | ||||
11988942 | 1348 days ago | 0.05 ETH | ||||
11988163 | 1348 days ago | 0.00178348 ETH | ||||
11988163 | 1348 days ago | 0.25 ETH | ||||
11988163 | 1348 days ago | 0.25 ETH |
Loading...
Loading
Contract Name:
YZYVault
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-07 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } 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); } interface TokenInterface is IERC20 { function burnFromVault(uint256 amount) external returns (bool); } 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; } } library SafeMath { 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) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } 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) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; } contract YZYVault is Context, Ownable { using SafeMath for uint256; TokenInterface public _yzy; TokenInterface public _yfi; TokenInterface public _wbtc; TokenInterface public _weth; IUniswapV2Pair public _yzyETHV2Pair; IUniswapV2Pair public _usdcETHV2Pair; IUniswapV2Router02 private _uniswapV2Router; address public _daoTreasury; uint16 public _allocPointForYZYReward; uint16 public _allocPointForSwapReward; uint16 public _treasuryFee; uint16 public _rewardFee; uint16 public _lotteryFee; uint16 public _swapRewardFee; uint16 public _burnFee; uint16 public _earlyUnstakeFee; uint16 public _allocPointForYFI; uint16 public _allocPointForWBTC; uint16 public _allocPointForWETH; uint256 public _firstRewardPeriod; uint256 public _secondRewardPeriod; uint256 public _firstRewardAmount; uint256 public _secondRewardAmount; uint256 public _claimPeriodForYzyReward; uint256 public _claimPeriodForSwapReward; uint256 public _lockPeriod; uint256 public _minDepositETHAmount; bool public _enabledLock; bool public _enabledLottery; uint256 public _startBlock; uint256 private _lotteryAmount; uint256 public _lotteryLimit; uint256 public _collectedAmountForStakers; uint256 public _collectedAmountForSwap; uint256 public _collectedAmountForLottery; uint256 public _lotteryPaidOut; struct StakerInfo { uint256 stakedAmount; uint256 lastClimedBlockForYzyReward; uint256 lastClimedBlockForSwapReward; uint256 lockedTo; } mapping(address => StakerInfo) public _stakers; // Info of winners for lottery. struct WinnerInfo { address winner; uint256 amount; uint256 timestamp; } WinnerInfo[] private winnerInfo; event ChangedEnabledLock(address indexed owner, bool lock); event ChangedEnabledLottery(address indexed owner, bool lottery); event ChangedLockPeriod(address indexed owner, uint256 period); event ChangedMinimumETHDepositAmount(address indexed owner, uint256 value); event ChangedRewardPeriod(address indexed owner, uint256 firstRewardPeriod, uint256 secondRewardPeriod); event ChangedClaimPeriod(address indexed owner, uint256 claimPeriodForYzyReward, uint256 claimPeriodForSwapReward); event ChangedYzyAddress(address indexed owner, address indexed yzy); event ChangedYzyETHPair(address indexed owner, address indexed yzyETHPair); event ChangedFeeInfo(address indexed owner, uint16 treasuryFee, uint16 rewardFee, uint16 lotteryFee, uint16 swapRewardFee, uint16 burnFee); event ChangedAllocPointsForSwapReward(address indexed owner, uint16 valueForYFI, uint16 valueForWBTC, uint16 valueForWETH); event ChangedBurnFee(address indexed owner, uint16 value); event ChangedEarlyUnstakeFee(address indexed owner, uint16 value); event ChangedLotteryInfo(address indexed owner, uint16 lotteryFee, uint256 lotteryLimit); event ClaimedYzyAvailableReward(address indexed owner, uint256 amount); event ClaimedSwapAvailableReward(address indexed owner, uint256 amount); event ClaimedYzyReward(address indexed owner, uint256 available, uint256 pending); event ClaimedSwapReward(address indexed owner, uint256 amount); event Staked(address indexed account, uint256 amount); event Unstaked(address indexed account, uint256 amount); event SentLotteryAmount(address indexed owner, uint256 amount, bool status); event EmergencyWithdrawToken(address indexed from, address indexed to, uint256 amount); event SwapAndLiquifyForYZY(address indexed msgSender, uint256 totAmount, uint256 ethAmount, uint256 yzyAmount); // Modifier modifier onlyYzy() { require( address(_yzy) == _msgSender(), "Ownable: caller is not the YZY token contract" ); _; } constructor( address daoTreasury, address yfi, address wbtc, address weth, address usdcETHV2Pair ) { _daoTreasury = daoTreasury; _yfi = TokenInterface(yfi); _wbtc = TokenInterface(wbtc); _weth = TokenInterface(weth); _usdcETHV2Pair = IUniswapV2Pair(usdcETHV2Pair); _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _firstRewardPeriod = 71500; // around 11 days, could be changed by governance _secondRewardPeriod = 429000; // around 66 days, could be changed by governance _firstRewardAmount = 2000e18; // 2000 yzy tokens, could be changed by governance _secondRewardAmount = 7900e18; // 7900 yzy tokens, could be changed by governance _claimPeriodForYzyReward = 91000; // around 14 days, could be changed by governance _claimPeriodForSwapReward = 585000; // around 90 days, could be changed by governance _allocPointForYZYReward = 8000; // 80% of reward will go to YZY reward, could be changed by governance _allocPointForSwapReward = 2000; // 20% of reward will go to swap(weth, wbtc, yfi) reward, could be changed by governance // Set values divited from taxFee _treasuryFee = 2500; // 25% of taxFee to treasuryFee, could be changed by governance _rewardFee = 5000; // 50% of taxFee to stakers, could be changed by governance _lotteryFee = 500; // 5% of lottery Fee, could be changed by governance _swapRewardFee = 2000; // 20% of taxFee to swap tokens, could be changed by governance _earlyUnstakeFee = 1000; // 10% of early unstake fee, could be changed by governance // set alloc points of YFI, WBTC, WETH in swap rewards, could be changed by governance _allocPointForYFI = 3000; // 30% of fee to buy YFI token, could be changed by governance _allocPointForWBTC = 5000; // 50% of fee to buy WBTC token, could be changed by governance _allocPointForWETH = 2000; // 20% of fee to buy WETH token, could be changed by governance // set the burn fee for withdraw early _burnFee = 2000; // 20% of pending reward to burn when staker request to withdraw pending reward, could be changed by governance _minDepositETHAmount = 1e17; // 0.1 ether, could be changed by governance _lockPeriod = 90 days; // could be changed by governance _enabledLock = true; // could be changed by governance _enabledLottery = true; // could be changed by governance _lotteryLimit = 1200e6; // $1200(1200 usd, decimals 6), could be changed by governance _startBlock = block.number; } /** * @dev Change Minimum Deposit ETH Amount. Call by only Governance. */ function changeMinimumDepositETHAmount(uint256 amount) external onlyOwner { _minDepositETHAmount = amount; emit ChangedMinimumETHDepositAmount(_msgSender(), amount); } /** * @dev Change value of reward period. Call by only Governance. */ function changeRewardPeriod(uint256 firstRewardPeriod, uint256 secondRewardPeriod) external onlyOwner { _firstRewardPeriod = firstRewardPeriod; _secondRewardPeriod = secondRewardPeriod; emit ChangedRewardPeriod(_msgSender(), firstRewardPeriod, secondRewardPeriod); } /** * @dev Change value of claim period. Call by only Governance. */ function changeClaimPeriod(uint256 claimPeriodForYzyReward, uint256 claimPeriodForSwapReward) external onlyOwner { _claimPeriodForYzyReward = claimPeriodForYzyReward; _claimPeriodForSwapReward = claimPeriodForSwapReward; emit ChangedClaimPeriod(_msgSender(), claimPeriodForYzyReward, claimPeriodForSwapReward); } /** * @dev Enable lock functionality. Call by only Governance. */ function enableLock(bool isLock) external onlyOwner { _enabledLock = isLock; emit ChangedEnabledLock(_msgSender(), isLock); } /** * @dev Enable lottery functionality. Call by only Governance. */ function enableLottery(bool lottery) external onlyOwner { _enabledLottery = lottery; emit ChangedEnabledLottery(_msgSender(), lottery); } /** * @dev Change maximun lock period. Call by only Governance. */ function changeLockPeriod(uint256 period) external onlyOwner { _lockPeriod = period; emit ChangedLockPeriod(_msgSender(), _lockPeriod); } function changeYzyAddress(address yzy) external onlyOwner { _yzy = TokenInterface(yzy); emit ChangedYzyAddress(_msgSender(), yzy); } function changeYzyETHPair(address yzyETHPair) external onlyOwner { _yzyETHV2Pair = IUniswapV2Pair(yzyETHPair); emit ChangedYzyETHPair(_msgSender(), yzyETHPair); } /** * @dev Update the treasury fee for this contract * defaults at 25% of taxFee, It can be set on only by YZY governance. * Note contract owner is meant to be a governance contract allowing YZY governance consensus */ function changeFeeInfo( uint16 treasuryFee, uint16 rewardFee, uint16 lotteryFee, uint16 swapRewardFee, uint16 burnFee ) external onlyOwner { _treasuryFee = treasuryFee; _rewardFee = rewardFee; _lotteryFee = lotteryFee; _swapRewardFee = swapRewardFee; _burnFee = burnFee; emit ChangedFeeInfo(_msgSender(), treasuryFee, rewardFee, lotteryFee, swapRewardFee, burnFee); } function changeEarlyUnstakeFee(uint16 fee) external onlyOwner { _earlyUnstakeFee = fee; emit ChangedEarlyUnstakeFee(_msgSender(), fee); } /** * @dev Update the dev fee for this contract * defaults at 5% of taxFee, It can be set on only by YZY governance. * Note contract owner is meant to be a governance contract allowing YZY governance consensus */ function changeLotteryInfo(uint16 lotteryFee, uint256 lotteryLimit) external onlyOwner { _lotteryFee = lotteryFee; _lotteryLimit = lotteryLimit; emit ChangedLotteryInfo(_msgSender(), lotteryFee, lotteryLimit); } /** * @dev Update the alloc points for yfi, weth, wbtc rewards * defaults at 50, 30, 20 of * Note contract owner is meant to be a governance contract allowing YZY governance consensus */ function changeAllocPointsForSwapReward( uint16 allocPointForYFI_, uint16 allocPointForWBTC_, uint16 allocPointForWETH_ ) external onlyOwner { _allocPointForYFI = allocPointForYFI_; _allocPointForWBTC = allocPointForWBTC_; _allocPointForWETH = allocPointForWETH_; emit ChangedAllocPointsForSwapReward(_msgSender(), allocPointForYFI_, allocPointForWBTC_, allocPointForWETH_); } function addTaxFee(uint256 amount) external onlyYzy returns (bool) { uint256 daoTreasuryReward = amount.mul(uint256(_treasuryFee)).div(10000); _yzy.transfer(_daoTreasury, daoTreasuryReward); uint256 stakerReward = amount.mul(uint256(_rewardFee)).div(10000); _collectedAmountForStakers = _collectedAmountForStakers.add(stakerReward); uint256 lotteryReward = amount.mul(uint256(_lotteryFee)).div(10000); _collectedAmountForLottery = _collectedAmountForLottery.add(lotteryReward); _collectedAmountForSwap = _collectedAmountForSwap.add(amount.sub(daoTreasuryReward).sub(stakerReward).sub(lotteryReward)); return true; } function getTotalStakedAmount() public view returns (uint256) { return _yzyETHV2Pair.balanceOf(address(this)); } function getWinners() external view returns (uint256) { return winnerInfo.length; } // Get YZY reward per block function getYzyPerBlockForYzyReward() public view returns (uint256) { uint256 multiplier = getMultiplier(_startBlock, block.number); if (multiplier == 0 || getTotalStakedAmount() == 0) { return 0; } else if (multiplier <= _firstRewardPeriod) { return _firstRewardAmount .mul(uint256(_allocPointForYZYReward)) .mul(1 ether) .div(getTotalStakedAmount()) .div(_firstRewardPeriod) .div(10000); } else if (multiplier > _firstRewardPeriod && multiplier <= _secondRewardPeriod) { return _secondRewardAmount .mul(uint256(_allocPointForYZYReward)) .mul(1 ether) .div(getTotalStakedAmount()) .div(_secondRewardPeriod) .div(10000); } else { return _collectedAmountForStakers.mul(1 ether).div(getTotalStakedAmount()).div(multiplier); } } function getYzyPerBlockForSwapReward() public view returns (uint256) { uint256 multiplier = getMultiplier(_startBlock, block.number); if (multiplier == 0 || getTotalStakedAmount() == 0) { return 0; } else if (multiplier <= _firstRewardPeriod) { return _firstRewardAmount .mul(uint256(_allocPointForSwapReward)) .mul(1 ether) .div(getTotalStakedAmount()) .div(_firstRewardPeriod) .div(10000); } else if (multiplier > _firstRewardPeriod && multiplier <= _secondRewardPeriod) { return _secondRewardAmount .mul(uint256(_allocPointForSwapReward)) .mul(1 ether) .div(getTotalStakedAmount()) .div(_secondRewardPeriod) .div(10000); } else { return _collectedAmountForSwap.mul(1 ether).div(getTotalStakedAmount()).div(multiplier); } } // Return reward multiplier over the given _from to _to block. function getMultiplier(uint256 from, uint256 to) public pure returns (uint256) { return to.sub(from); } function _getLastAvailableClaimedBlock( uint256 from, uint256 to, uint256 period ) internal pure returns (uint256) { require(from <= to, "Vault: Invalid parameters for block number."); require(period > 0, "Vault: Invalid period."); uint256 multiplier = getMultiplier(from, to); return from.add(multiplier.sub(multiplier.mod(period))); } function swapETHForTokens(uint256 ethAmount) private { // generate the uniswap pair path of weth -> yzy address[] memory path = new address[](2); path[0] = _uniswapV2Router.WETH(); path[1] = address(_yzy); // make the swap _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: ethAmount }(0, path, address(this), block.timestamp); } function addLiquidityForEth(uint256 tokenAmount, uint256 ethAmount) private { _yzy.approve(address(_uniswapV2Router), tokenAmount); // add the liquidity _uniswapV2Router.addLiquidityETH{value: ethAmount}( address(_yzy), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapAndLiquifyForYZY(uint256 amount) private returns (bool) { uint256 halfForEth = amount.div(2); uint256 otherHalfForYZY = amount.sub(halfForEth); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = _yzy.balanceOf(address(this)); // swap ETH for tokens swapETHForTokens(otherHalfForYZY); // how much YZY did we just swap into? uint256 newBalance = _yzy.balanceOf(address(this)).sub(initialBalance); // add liquidity to uniswap addLiquidityForEth(newBalance, halfForEth); emit SwapAndLiquifyForYZY(_msgSender(), amount, halfForEth, newBalance); return true; } function swapTokensForTokens( address fromTokenAddress, address toTokenAddress, uint256 tokenAmount, address receivedAddress ) private returns (bool) { address[] memory path = new address[](2); path[0] = fromTokenAddress; path[1] = toTokenAddress; IERC20(fromTokenAddress).approve( address(_uniswapV2Router), tokenAmount ); // make the swap _uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of pair token path, receivedAddress, block.timestamp ); return true; } receive() external payable {} function stake() external payable returns (bool) { require(!isContract(_msgSender()), "Vault: Could not be contract."); require(msg.value >= _minDepositETHAmount, "Vault: insufficient staking amount."); // Check Initial Balance uint256 initialBalance = _yzyETHV2Pair.balanceOf(address(this)); // Call swap for YZYÐ require(swapAndLiquifyForYZY(msg.value), "Vault: Failed to get LP tokens."); uint256 newBalance = _yzyETHV2Pair.balanceOf(address(this)).sub(initialBalance); StakerInfo storage staker = _stakers[_msgSender()]; if (staker.stakedAmount > 0) { claimYzyReward(); claimSwapReward(); } else { staker.lastClimedBlockForYzyReward = block.number; staker.lastClimedBlockForSwapReward = block.number; } staker.stakedAmount = staker.stakedAmount.add(newBalance); staker.lockedTo = _lockPeriod.add(block.timestamp); emit Staked(_msgSender(), newBalance); return _sendLotteryAmount(); } /** * @dev Stake LP Token to get YZY-ETH LP tokens */ function stakeLPToken(uint256 amount) external returns (bool) { require(!isContract(_msgSender()), "Vault: Could not be contract."); _yzyETHV2Pair.transferFrom(_msgSender(), address(this), amount); StakerInfo storage staker = _stakers[_msgSender()]; if (staker.stakedAmount > 0) { claimYzyReward(); claimSwapReward(); } else { staker.lastClimedBlockForYzyReward = block.number; staker.lastClimedBlockForSwapReward = block.number; } staker.stakedAmount = staker.stakedAmount.add(amount); staker.lockedTo = _lockPeriod.add(block.timestamp); emit Staked(_msgSender(), amount); return _sendLotteryAmount(); } /** * @dev Unstake staked YZY-ETH LP tokens */ function unstake(uint256 amount) external returns (bool) { require(!isContract(_msgSender()), "Vault: Could not be contract."); StakerInfo storage staker = _stakers[_msgSender()]; require( staker.stakedAmount > 0 && amount > 0 && amount <= staker.stakedAmount, "Vault: Invalid amount to unstake." ); claimYzyReward(); claimSwapReward(); if (_enabledLock && _stakers[_msgSender()].lockedTo > 0 && block.timestamp < _stakers[_msgSender()].lockedTo ) { uint256 feeAmount = amount.mul(uint256(_earlyUnstakeFee)).div(10000); _yzyETHV2Pair.transfer(_daoTreasury, feeAmount); _yzyETHV2Pair.transfer(_msgSender(), amount.sub(feeAmount)); } else { _yzyETHV2Pair.transfer(_msgSender(), amount); } staker.stakedAmount = staker.stakedAmount.sub(amount); emit Unstaked(_msgSender(), amount); return _sendLotteryAmount(); } function getYzyReward(address account) public view returns (uint256 available, uint256 pending) { StakerInfo memory staker = _stakers[account]; uint256 multiplier = getMultiplier(staker.lastClimedBlockForYzyReward, block.number); if (staker.stakedAmount <= 0 || multiplier <= 0) { return (0, 0); } uint256 yzyPerblock = getYzyPerBlockForYzyReward(); uint256 pendingBlockNum = multiplier.mod(_claimPeriodForYzyReward); pending = yzyPerblock.mul(pendingBlockNum).mul(staker.stakedAmount).div(1 ether); available = yzyPerblock.mul(multiplier.sub(pendingBlockNum)).mul(staker.stakedAmount).div(1 ether); } function getSwapReward(address account) public view returns (uint256 available, uint256 pending) { StakerInfo memory staker = _stakers[account]; uint256 multiplier = getMultiplier(staker.lastClimedBlockForSwapReward, block.number); if (staker.stakedAmount <= 0 || multiplier <= 0) { return (0, 0); } uint256 yzyPerblock = getYzyPerBlockForSwapReward(); uint256 pendingBlockNum = multiplier.mod(_claimPeriodForSwapReward); pending = yzyPerblock.mul(pendingBlockNum).mul(staker.stakedAmount).div(1 ether); available = yzyPerblock.mul(multiplier.sub(pendingBlockNum)).mul(staker.stakedAmount).div(1 ether); } function claimYzyAvailableReward() public returns (bool) { (uint256 available, ) = getYzyReward(_msgSender()); require(available > 0, "Vault: No available reward."); require( safeYzyTransfer(_msgSender(), available), "Vault: Failed to transfer." ); emit ClaimedYzyAvailableReward(_msgSender(), available); StakerInfo storage staker = _stakers[_msgSender()]; staker.lastClimedBlockForYzyReward = _getLastAvailableClaimedBlock( staker.lastClimedBlockForYzyReward, block.number, _claimPeriodForYzyReward ); return _sendLotteryAmount(); } function claimYzyReward() public returns (bool) { (uint256 available, uint256 pending) = getYzyReward(_msgSender()); require(available > 0 || pending > 0, "Vault: No rewards"); StakerInfo storage staker = _stakers[_msgSender()]; if (available > 0) { require( safeYzyTransfer(_msgSender(), available), "Vault: Failed to transfer." ); } if (pending > 0) { uint256 burnAmount = pending.mul(_burnFee).div(10000); _yzy.burnFromVault(burnAmount); safeYzyTransfer(_msgSender(), pending.sub(burnAmount)); staker.lastClimedBlockForYzyReward = block.number; } else if (available > 0) { staker.lastClimedBlockForYzyReward = _getLastAvailableClaimedBlock( staker.lastClimedBlockForYzyReward, block.number, _claimPeriodForYzyReward ); } emit ClaimedYzyReward(_msgSender(), available, pending); return _sendLotteryAmount(); } function claimSwapAvailableReward() public returns (bool) { (uint256 available, ) = getSwapReward(_msgSender()); _swapAndClaimTokens(available); emit ClaimedSwapAvailableReward(_msgSender(), available); StakerInfo storage staker = _stakers[_msgSender()]; staker.lastClimedBlockForSwapReward = _getLastAvailableClaimedBlock( staker.lastClimedBlockForSwapReward, block.number, _claimPeriodForSwapReward ); return _sendLotteryAmount(); } function claimSwapReward() public returns (bool) { (uint256 available, uint256 pending) = getSwapReward(_msgSender()); if (pending > 0) { uint256 burnAmount = pending.mul(_burnFee).div(10000); _yzy.burnFromVault(burnAmount); pending = pending.sub(burnAmount); } _swapAndClaimTokens(available.add(pending)); emit ClaimedSwapReward(_msgSender(), available.add(pending)); StakerInfo storage staker = _stakers[_msgSender()]; if (pending > 0) { staker.lastClimedBlockForSwapReward = block.number; } else { staker.lastClimedBlockForSwapReward = _getLastAvailableClaimedBlock( staker.lastClimedBlockForSwapReward, block.number, _claimPeriodForSwapReward ); } return _sendLotteryAmount(); } /** * @dev Withdraw YZY token from vault wallet to owner when only emergency! * */ function emergencyWithdrawToken() external onlyOwner { require(_msgSender() != address(0), "Vault: Invalid address"); uint256 tokenAmount = _yzy.balanceOf(address(this)); require(tokenAmount > 0, "Vault: Insufficient amount"); _yzy.transfer(_msgSender(), tokenAmount); emit EmergencyWithdrawToken(address(this), _msgSender(), tokenAmount); } function _swapAndClaimTokens(uint256 rewards) internal { require(rewards > 0, "Vault: No reward state"); uint256 wethOldBalance = IERC20(_weth).balanceOf(address(this)); // Swap YZY -> WETH And Get Weth Tokens For Reward require( swapTokensForTokens( address(_yzy), address(_weth), rewards, address(this) ), "Vault: Failed to swap from YZY to WETH." ); // Get New Swaped ETH Amount uint256 wethNewBalance = IERC20(_weth).balanceOf(address(this)).sub(wethOldBalance); require(wethNewBalance > 0, "Vault: Invalid WETH amount."); uint256 yfiTokenReward = wethNewBalance.mul(_allocPointForYFI).div(10000); uint256 wbtcTokenReward = wethNewBalance.mul(_allocPointForWBTC).div(10000); uint256 wethTokenReward = wethNewBalance.sub(yfiTokenReward).sub(wbtcTokenReward); // Transfer Weth Reward Tokens From Contract To Staker require( IERC20(_weth).transfer(_msgSender(), wethTokenReward), "Vault: Faild to WETH" ); // Swap WETH -> YFI and give YFI token to User as reward require( swapTokensForTokens( address(_weth), address(_yfi), yfiTokenReward, _msgSender() ), "Vault: Failed to swap YFI." ); // Swap YZY -> WBTC and give WBTC token to User as reward require( swapTokensForTokens( address(_weth), address(_wbtc), wbtcTokenReward, _msgSender() ), "Vault: Failed to swap WBTC." ); } /** * @dev internal function to send lottery rewards */ function _sendLotteryAmount() internal returns (bool) { if (!_enabledLottery || _lotteryAmount <= 0) return false; uint256 usdcReserve = 0; uint256 ethReserve1 = 0; uint256 yzyReserve = 0; uint256 ethReserve2 = 0; address token0 = _usdcETHV2Pair.token0(); if (token0 == address(_weth)){ (ethReserve1, usdcReserve, ) = _usdcETHV2Pair.getReserves(); } else { (usdcReserve, ethReserve1, ) = _usdcETHV2Pair.getReserves(); } token0 = _yzyETHV2Pair.token0(); if (token0 == address(_weth)){ (ethReserve2, yzyReserve, ) = _yzyETHV2Pair.getReserves(); } else { (yzyReserve, ethReserve2, ) = _yzyETHV2Pair.getReserves(); } if (ethReserve1 <= 0 || yzyReserve <= 0) return false; uint256 yzyPrice = usdcReserve.mul(1 ether).div(ethReserve1).mul(ethReserve2).div(yzyReserve); uint256 lotteryValue = yzyPrice.mul(_lotteryAmount).div(1 ether); if (lotteryValue > 0 && lotteryValue >= _lotteryLimit) { uint256 amount = _lotteryLimit.mul(1 ether).div(yzyPrice); if (amount > _lotteryAmount) amount = _lotteryAmount; _yzy.transfer(_msgSender(), amount); _lotteryAmount = _lotteryAmount.sub(amount); _lotteryPaidOut = _lotteryPaidOut.add(amount); emit SentLotteryAmount(_msgSender(), amount, true); winnerInfo.push( WinnerInfo({ winner: _msgSender(), amount: amount, timestamp: block.timestamp }) ); } return false; } function safeYzyTransfer(address to, uint256 amount) internal returns (bool) { uint256 yzyBal = _yzy.balanceOf(address(this)); if (amount > yzyBal) { _yzy.transfer(to, yzyBal); } else { _yzy.transfer(to, amount); } return true; } function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"daoTreasury","type":"address"},{"internalType":"address","name":"yfi","type":"address"},{"internalType":"address","name":"wbtc","type":"address"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"address","name":"usdcETHV2Pair","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint16","name":"valueForYFI","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"valueForWBTC","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"valueForWETH","type":"uint16"}],"name":"ChangedAllocPointsForSwapReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint16","name":"value","type":"uint16"}],"name":"ChangedBurnFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"claimPeriodForYzyReward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimPeriodForSwapReward","type":"uint256"}],"name":"ChangedClaimPeriod","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint16","name":"value","type":"uint16"}],"name":"ChangedEarlyUnstakeFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bool","name":"lock","type":"bool"}],"name":"ChangedEnabledLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bool","name":"lottery","type":"bool"}],"name":"ChangedEnabledLottery","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint16","name":"treasuryFee","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"rewardFee","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"lotteryFee","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"swapRewardFee","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"burnFee","type":"uint16"}],"name":"ChangedFeeInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"period","type":"uint256"}],"name":"ChangedLockPeriod","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint16","name":"lotteryFee","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"lotteryLimit","type":"uint256"}],"name":"ChangedLotteryInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ChangedMinimumETHDepositAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"firstRewardPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"secondRewardPeriod","type":"uint256"}],"name":"ChangedRewardPeriod","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"yzy","type":"address"}],"name":"ChangedYzyAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"yzyETHPair","type":"address"}],"name":"ChangedYzyETHPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedSwapAvailableReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedSwapReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedYzyAvailableReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"available","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pending","type":"uint256"}],"name":"ClaimedYzyReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdrawToken","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":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SentLotteryAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"msgSender","type":"address"},{"indexed":false,"internalType":"uint256","name":"totAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"yzyAmount","type":"uint256"}],"name":"SwapAndLiquifyForYZY","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"_allocPointForSwapReward","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_allocPointForWBTC","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_allocPointForWETH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_allocPointForYFI","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_allocPointForYZYReward","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_claimPeriodForSwapReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_claimPeriodForYzyReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_collectedAmountForLottery","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_collectedAmountForStakers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_collectedAmountForSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_daoTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_earlyUnstakeFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_enabledLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_enabledLottery","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_firstRewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_firstRewardPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lockPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lotteryFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lotteryLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lotteryPaidOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minDepositETHAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_secondRewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_secondRewardPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_stakers","outputs":[{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"lastClimedBlockForYzyReward","type":"uint256"},{"internalType":"uint256","name":"lastClimedBlockForSwapReward","type":"uint256"},{"internalType":"uint256","name":"lockedTo","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRewardFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdcETHV2Pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wbtc","outputs":[{"internalType":"contract TokenInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_weth","outputs":[{"internalType":"contract TokenInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_yfi","outputs":[{"internalType":"contract TokenInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_yzy","outputs":[{"internalType":"contract TokenInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_yzyETHV2Pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addTaxFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"allocPointForYFI_","type":"uint16"},{"internalType":"uint16","name":"allocPointForWBTC_","type":"uint16"},{"internalType":"uint16","name":"allocPointForWETH_","type":"uint16"}],"name":"changeAllocPointsForSwapReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimPeriodForYzyReward","type":"uint256"},{"internalType":"uint256","name":"claimPeriodForSwapReward","type":"uint256"}],"name":"changeClaimPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"name":"changeEarlyUnstakeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"treasuryFee","type":"uint16"},{"internalType":"uint16","name":"rewardFee","type":"uint16"},{"internalType":"uint16","name":"lotteryFee","type":"uint16"},{"internalType":"uint16","name":"swapRewardFee","type":"uint16"},{"internalType":"uint16","name":"burnFee","type":"uint16"}],"name":"changeFeeInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"period","type":"uint256"}],"name":"changeLockPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"lotteryFee","type":"uint16"},{"internalType":"uint256","name":"lotteryLimit","type":"uint256"}],"name":"changeLotteryInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeMinimumDepositETHAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"firstRewardPeriod","type":"uint256"},{"internalType":"uint256","name":"secondRewardPeriod","type":"uint256"}],"name":"changeRewardPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"yzy","type":"address"}],"name":"changeYzyAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"yzyETHPair","type":"address"}],"name":"changeYzyETHPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimSwapAvailableReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimSwapReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimYzyAvailableReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimYzyReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isLock","type":"bool"}],"name":"enableLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"lottery","type":"bool"}],"name":"enableLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getSwapReward","outputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalStakedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWinners","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYzyPerBlockForSwapReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYzyPerBlockForYzyReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getYzyReward","outputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stakeLPToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620047ba380380620047ba833981810160405260a08110156200003757600080fd5b5080516020820151604083015160608401516080909401519293919290919060006200006262000249565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060088054600280546001600160a01b03199081166001600160a01b039889161790915560038054821696881696909617909555600480548616948716949094179093556006805485169286169290921790915560078054737a250d5630b4cf539739df2c5dacb4c659f2488d9085161790556201174c600a5562068bc8600b55686c6b935b8bbd400000600c556901ac4286100191f00000600d5562016378600e556208ed28600f559116929091169190911761ffff60a01b1916607d60a61b1761ffff60b01b1916607d60b41b1761ffff60c01b191661027160c21b1761ffff60d01b191661027160d31b1761ffff60e01b1916607d60e21b176001600160f01b0316607d60f41b179055600980546107d063ffff0000199091166303e800001761ffff60201b1916650bb8000000001761ffff60301b19166713880000000000001761ffff60401b19166907d000000000000000001761ffff191617905567016345785d8a00006011556276a7006010556012805461010060ff1990911660011761ff0019161790556347868c00601555436013556200024d565b3390565b61455d806200025d6000396000f3fe6080604052600436106103dd5760003560e01c80637baec59a116101fd578063a7678a8a11610118578063caf171da116100ab578063e0771cdc1161007a578063e0771cdc14610b7e578063e604a6ab14610ba8578063e73c5eb314610bbd578063f2fde38b14610bd2578063f693a12f14610c05576103e4565b8063caf171da14610b2a578063ce4013db14610b3f578063dc0a15ca14610b54578063df15c37e14610b69576103e4565b8063beb76fb6116100e7578063beb76fb614610aa3578063c0b0fda214610ab8578063c0fd1da414610acd578063c25cf1d014610b00576103e4565b8063a7678a8a14610a21578063acb55ab114610a36578063b65e0dc414610a60578063bb7fddec14610a8e576103e4565b80638da5cb5b116101905780639ab41ec51161015f5780639ab41ec514610984578063a0e0da9714610999578063a1764595146109cc578063a44888af146109e1576103e4565b80638da5cb5b146109155780638dbb1e3a1461092a57806398bd19b71461095a5780639919f8c11461096f576103e4565b806384eedc73116101cc57806384eedc731461088b57806385004983146108a057806387c1ef90146108b557806387c6b8a4146108e1576103e4565b80637baec59a146108195780637d0221b71461082e578063807290eb1461084357806381fa2cd514610876576103e4565b806344c23fa3116102f85780635a1500e51161028b5780636d57ab0b1161025a5780636d57ab0b1461071a578063715018a61461072f57806374a37efc1461074457806375e032f4146107905780637b8f6f4c146107e9576103e4565b80635a1500e5146106ab5780635bf7a644146106db5780635d5acad1146106f05780635f337b8514610705576103e4565b806351fde4bb116102c757806351fde4bb14610642578063527cca57146106575780635737155d1461066c57806358077dfa14610681576103e4565b806344c23fa31461059a578063451a8bd4146105c857806349256047146105dd5780634d9d24b5146105f2576103e4565b806328f41d5f1161037057806338adb6f01161033f57806338adb6f0146105535780633a4b66f1146105685780633e3960fa146105705780634054333914610585576103e4565b806328f41d5f146104ce5780632c71ecb6146104ff5780632e050526146105145780632e17de7814610529576103e4565b80631792d473116103ac5780631792d4731461046657806322d049791461047b57806326231ec8146104a457806328f0b257146104b9576103e4565b806303052cc7146103e9578063082827fa146104155780630b2e48551461043c57806315566a5b14610451576103e4565b366103e457005b600080fd5b3480156103f557600080fd5b506103fe610c1a565b6040805161ffff9092168252519081900360200190f35b34801561042157600080fd5b5061042a610c2b565b60408051918252519081900360200190f35b34801561044857600080fd5b5061042a610c31565b34801561045d57600080fd5b5061042a610c37565b34801561047257600080fd5b506103fe610c3d565b34801561048757600080fd5b50610490610c4e565b604080519115158252519081900360200190f35b3480156104b057600080fd5b506103fe610db9565b3480156104c557600080fd5b506103fe610dca565b3480156104da57600080fd5b506104e3610ddb565b604080516001600160a01b039092168252519081900360200190f35b34801561050b57600080fd5b5061042a610dea565b34801561052057600080fd5b50610490610df0565b34801561053557600080fd5b506104906004803603602081101561054c57600080fd5b5035611034565b34801561055f57600080fd5b5061042a6113e4565b610490611460565b34801561057c57600080fd5b5061042a611721565b34801561059157600080fd5b506103fe611727565b3480156105a657600080fd5b506105c6600480360360208110156105bd57600080fd5b50351515611738565b005b3480156105d457600080fd5b506104e36117f0565b3480156105e957600080fd5b506105c66117ff565b3480156105fe57600080fd5b506105c6600480360360a081101561061557600080fd5b5061ffff813581169160208101358216916040820135811691606081013582169160809091013516611a63565b34801561064e57600080fd5b506103fe611b98565b34801561066357600080fd5b5061042a611ba9565b34801561067857600080fd5b506104e3611baf565b34801561068d57600080fd5b50610490600480360360208110156106a457600080fd5b5035611bbe565b3480156106b757600080fd5b506105c6600480360360408110156106ce57600080fd5b5080359060200135611d80565b3480156106e757600080fd5b506104e3611e36565b3480156106fc57600080fd5b50610490611e45565b34801561071157600080fd5b5061042a611efa565b34801561072657600080fd5b50610490611f00565b34801561073b57600080fd5b506105c661207c565b34801561075057600080fd5b506107776004803603602081101561076757600080fd5b50356001600160a01b031661211e565b6040805192835260208301919091528051918290030190f35b34801561079c57600080fd5b506107c3600480360360208110156107b357600080fd5b50356001600160a01b0316612216565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156107f557600080fd5b506105c66004803603604081101561080c57600080fd5b508035906020013561223d565b34801561082557600080fd5b506103fe6122f3565b34801561083a57600080fd5b5061042a612305565b34801561084f57600080fd5b506105c66004803603602081101561086657600080fd5b50356001600160a01b031661230b565b34801561088257600080fd5b5061042a6123c1565b34801561089757600080fd5b5061042a6123c7565b3480156108ac57600080fd5b5061042a6123cd565b3480156108c157600080fd5b506105c6600480360360208110156108d857600080fd5b503515156124ca565b3480156108ed57600080fd5b506105c66004803603604081101561090457600080fd5b5061ffff813516906020013561257d565b34801561092157600080fd5b506104e361264c565b34801561093657600080fd5b5061042a6004803603604081101561094d57600080fd5b508035906020013561265b565b34801561096657600080fd5b5061042a612670565b34801561097b57600080fd5b506103fe612676565b34801561099057600080fd5b506103fe612687565b3480156109a557600080fd5b506105c6600480360360208110156109bc57600080fd5b50356001600160a01b0316612697565b3480156109d857600080fd5b506104e361274d565b3480156109ed57600080fd5b506105c660048036036060811015610a0457600080fd5b5061ffff813581169160208101358216916040909101351661275c565b348015610a2d57600080fd5b5061042a612866565b348015610a4257600080fd5b5061049060048036036020811015610a5957600080fd5b503561295b565b348015610a6c57600080fd5b506105c660048036036020811015610a8357600080fd5b503561ffff16612afa565b348015610a9a57600080fd5b50610490612bb9565b348015610aaf57600080fd5b506104e3612bc2565b348015610ac457600080fd5b506103fe612bd1565b348015610ad957600080fd5b5061077760048036036020811015610af057600080fd5b50356001600160a01b0316612bdb565b348015610b0c57600080fd5b506105c660048036036020811015610b2357600080fd5b5035612c76565b348015610b3657600080fd5b506104e3612d20565b348015610b4b57600080fd5b5061042a612d2f565b348015610b6057600080fd5b50610490612d35565b348015610b7557600080fd5b5061042a612d43565b348015610b8a57600080fd5b506105c660048036036020811015610ba157600080fd5b5035612d49565b348015610bb457600080fd5b5061042a612df1565b348015610bc957600080fd5b5061042a612df7565b348015610bde57600080fd5b506105c660048036036020811015610bf557600080fd5b50356001600160a01b0316612dfd565b348015610c1157600080fd5b506103fe612ef5565b600854600160f01b900461ffff1681565b600b5481565b60195481565b60105481565b600854600160b01b900461ffff1681565b600080610c61610c5c612f06565b61211e565b50905060008111610cb9576040805162461bcd60e51b815260206004820152601b60248201527f5661756c743a204e6f20617661696c61626c65207265776172642e0000000000604482015290519081900360640190fd5b610cca610cc4612f06565b82612f0a565b610d1b576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a204661696c656420746f207472616e736665722e000000000000604482015290519081900360640190fd5b610d23612f06565b6001600160a01b03167f31f1c72d5a6b4cc395db8810fbf58d082ed36c03086e12944356b84a2c0d4cbd826040518082815260200191505060405180910390a26000601a6000610d71612f06565b6001600160a01b03166001600160a01b031681526020019081526020016000209050610da4816001015443600e546130a5565b6001820155610db1613169565b925050505b90565b600954600160301b900461ffff1681565b600854600160c01b900461ffff1681565b6006546001600160a01b031681565b60135481565b6000806000610e00610c5c612f06565b915091506000821180610e135750600081115b610e58576040805162461bcd60e51b81526020600482015260116024820152705661756c743a204e6f207265776172647360781b604482015290519081900360640190fd5b6000601a6000610e66612f06565b6001600160a01b03168152602081019190915260400160002090508215610ee957610e98610e92612f06565b84612f0a565b610ee9576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a204661696c656420746f207472616e736665722e000000000000604482015290519081900360640190fd5b8115610fb757600954600090610f129061271090610f0c90869061ffff16613739565b90613792565b60015460408051631538c64b60e31b81526004810184905290519293506001600160a01b039091169163a9c63258916024808201926020929091908290030181600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050506040513d6020811015610f8d57600080fd5b50610faa9050610f9b612f06565b610fa585846137d4565b612f0a565b5050436001820155610fd4565b8215610fd457610fce816001015443600e546130a5565b60018201555b610fdc612f06565b6001600160a01b03167fb74a96c7eaedd803d954d202f6a8aeb8fad40fe46bdec45455af3b5e57d934f88484604051808381526020018281526020019250505060405180910390a261102c613169565b935050505090565b6000611046611041612f06565b613816565b15611098576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20436f756c64206e6f7420626520636f6e74726163742e000000604482015290519081900360640190fd5b6000601a60006110a6612f06565b6001600160a01b0316815260208101919091526040016000208054909150158015906110d25750600083115b80156110df575080548311155b61111a5760405162461bcd60e51b815260040180806020018281038252602181526020018061446e6021913960400191505060405180910390fd5b611122610df0565b5061112b611f00565b5060125460ff16801561116d57506000601a6000611147612f06565b6001600160a01b03166001600160a01b0316815260200190815260200160002060030154115b80156111a75750601a6000611180612f06565b6001600160a01b03166001600160a01b031681526020019081526020016000206003015442105b156112f2576009546000906111cf9061271090610f0c90879062010000900461ffff16613739565b6005546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101859052905193945091169163a9059cbb916044808201926020929091908290030181600087803b15801561122a57600080fd5b505af115801561123e573d6000803e3d6000fd5b505050506040513d602081101561125457600080fd5b50506005546001600160a01b031663a9059cbb61126f612f06565b61127987856137d4565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156112bf57600080fd5b505af11580156112d3573d6000803e3d6000fd5b505050506040513d60208110156112e957600080fd5b5061137f915050565b6005546001600160a01b031663a9059cbb61130b612f06565b856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561135257600080fd5b505af1158015611366573d6000803e3d6000fd5b505050506040513d602081101561137c57600080fd5b50505b805461138b90846137d4565b8155611395612f06565b6001600160a01b03167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75846040518082815260200191505060405180910390a26113dd613169565b9392505050565b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561142f57600080fd5b505afa158015611443573d6000803e3d6000fd5b505050506040513d602081101561145957600080fd5b5051905090565b600061146d611041612f06565b156114bf576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20436f756c64206e6f7420626520636f6e74726163742e000000604482015290519081900360640190fd5b6011543410156115005760405162461bcd60e51b81526004018080602001828103825260238152602001806144246023913960400191505060405180910390fd5b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d602081101561157557600080fd5b505190506115823461381c565b6115d3576040805162461bcd60e51b815260206004820152601f60248201527f5661756c743a204661696c656420746f20676574204c5020746f6b656e732e00604482015290519081900360640190fd5b600554604080516370a0823160e01b815230600482015290516000926116599285926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561162757600080fd5b505afa15801561163b573d6000803e3d6000fd5b505050506040513d602081101561165157600080fd5b5051906137d4565b90506000601a6000611669612f06565b6001600160a01b0316815260208101919091526040016000208054909150156116a357611694610df0565b5061169d611f00565b506116b1565b436001820181905560028201555b80546116bd9083613981565b81556010546116cc9042613981565b60038201556116d9612f06565b6001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a261102c613169565b600d5481565b600854600160e01b900461ffff1681565b611740612f06565b6000546001600160a01b03908116911614611790576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6012805461ff001916610100831515021790556117ab612f06565b6001600160a01b03167f40be77546ded0cf2c0243024383f86f5ce93d48fb40745599d592b5a3c5b22428260405180821515815260200191505060405180910390a250565b6005546001600160a01b031681565b611807612f06565b6000546001600160a01b03908116911614611857576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6000611861612f06565b6001600160a01b031614156118b6576040805162461bcd60e51b81526020600482015260166024820152755661756c743a20496e76616c6964206164647265737360501b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561190157600080fd5b505afa158015611915573d6000803e3d6000fd5b505050506040513d602081101561192b57600080fd5b5051905080611981576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a20496e73756666696369656e7420616d6f756e74000000000000604482015290519081900360640190fd5b6001546001600160a01b031663a9059cbb61199a612f06565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156119e157600080fd5b505af11580156119f5573d6000803e3d6000fd5b505050506040513d6020811015611a0b57600080fd5b50611a169050612f06565b6001600160a01b0316306001600160a01b03167fda0612d7ca9ff90ca7143a6021ba8938994f8d045b2834ae585fd07b27ea697c836040518082815260200191505060405180910390a350565b611a6b612f06565b6000546001600160a01b03908116911614611abb576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6008805461ffff60c01b1916600160c01b61ffff888116919091029190911761ffff60d01b1916600160d01b878316021761ffff60e01b1916600160e01b86831602176001600160f01b0316600160f01b85831602179091556009805461ffff1916918316919091179055611b2e612f06565b6040805161ffff808916825280881660208301528087168284015280861660608301528416608082015290516001600160a01b0392909216917f4d47a64130cda9f89e39a96ea1f0d2d6b949553bf6f5420ac044e4fe862f134b9181900360a00190a25050505050565b600854600160d01b900461ffff1681565b600e5481565b6003546001600160a01b031681565b6000611bcb611041612f06565b15611c1d576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20436f756c64206e6f7420626520636f6e74726163742e000000604482015290519081900360640190fd5b6005546001600160a01b03166323b872dd611c36612f06565b30856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b158015611c8e57600080fd5b505af1158015611ca2573d6000803e3d6000fd5b505050506040513d6020811015611cb857600080fd5b5060009050601a81611cc8612f06565b6001600160a01b031681526020810191909152604001600020805490915015611d0257611cf3610df0565b50611cfc611f00565b50611d10565b436001820181905560028201555b8054611d1c9084613981565b8155601054611d2b9042613981565b6003820155611d38612f06565b6001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040518082815260200191505060405180910390a26113dd613169565b611d88612f06565b6000546001600160a01b03908116911614611dd8576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600a829055600b819055611dea612f06565b6001600160a01b03167f5c7c58c03f6082e59d35ca0f5f9913571cb8b42deed4687742641bd55b756e888383604051808381526020018281526020019250505060405180910390a25050565b6008546001600160a01b031681565b600080611e58611e53612f06565b612bdb565b509050611e64816139db565b611e6c612f06565b6001600160a01b03167fe652e6526a9038d6a9dee5630d8a0b4b994d88f8bc96ecd0b78a06945704498e826040518082815260200191505060405180910390a26000601a6000611eba612f06565b6001600160a01b03166001600160a01b031681526020019081526020016000209050611eed816002015443600f546130a5565b6002820155610db1613169565b60115481565b6000806000611f10611e53612f06565b90925090508015611fc457600954600090611f389061271090610f0c90859061ffff16613739565b60015460408051631538c64b60e31b81526004810184905290519293506001600160a01b039091169163a9c63258916024808201926020929091908290030181600087803b158015611f8957600080fd5b505af1158015611f9d573d6000803e3d6000fd5b505050506040513d6020811015611fb357600080fd5b50611fc0905082826137d4565b9150505b611fd6611fd18383613981565b6139db565b611fde612f06565b6001600160a01b03167f724a99a8b8c69616d45ec787e474c4750c629f62c800e10b89a78aa1bf7544436120128484613981565b60408051918252519081900360200190a26000601a6000612031612f06565b6001600160a01b0316815260208101919091526040016000209050811561205d57436002820155612074565b61206e816002015443600f546130a5565b60028201555b61102c613169565b612084612f06565b6000546001600160a01b039081169116146120d4576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001600160a01b0381166000908152601a60209081526040808320815160808101835281548152600182015493810184905260028201549281019290925260030154606082015282918290612173904361265b565b82519091501580612182575080155b1561219557600080935093505050612211565b600061219f6123cd565b905060006121b8600e5484613dd090919063ffffffff16565b84519091506121df90670de0b6b3a764000090610f0c906121d98686613739565b90613739565b845190955061220a90670de0b6b3a764000090610f0c906121d961220388876137d4565b8790613739565b9550505050505b915091565b601a6020526000908152604090208054600182015460028301546003909301549192909184565b612245612f06565b6000546001600160a01b03908116911614612295576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600e829055600f8190556122a7612f06565b6001600160a01b03167fc375b3f815d7577717b75012b2eb8242ec2fb5b7faab45dbaa2f8b5fac2593d38383604051808381526020018281526020019250505060405180910390a25050565b600954640100000000900461ffff1681565b600c5481565b612313612f06565b6000546001600160a01b03908116911614612363576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b038316908117909155612389612f06565b6001600160a01b03167fb19836d509acf8e409be4c0fd5d9bfcfcdb10e9dd0a578a43007bec41602dc8e60405160405180910390a350565b600a5481565b60175481565b6000806123dc6013544361265b565b90508015806123f057506123ee6113e4565b155b156123ff576000915050610db6565b600a54811161244f57612447612710610f0c600a54610f0c61241f6113e4565b600854600c54610f0c91670de0b6b3a7640000916121d991600160a01b900461ffff16613739565b915050610db6565b600a54811180156124625750600b548111155b156124a657612447612710610f0c600b54610f0c61247e6113e4565b600854600d54610f0c91670de0b6b3a7640000916121d991600160a01b900461ffff16613739565b61244781610f0c6124b56113e4565b601654610f0c90670de0b6b3a7640000613739565b6124d2612f06565b6000546001600160a01b03908116911614612522576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6012805460ff1916821515179055612538612f06565b6001600160a01b03167f32a084585e0a2cccdef695374e2eb7aa6c316aac3fb33dd66a1833edbe529a138260405180821515815260200191505060405180910390a250565b612585612f06565b6000546001600160a01b039081169116146125d5576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6008805461ffff60e01b1916600160e01b61ffff85160217905560158190556125fc612f06565b6001600160a01b03167f88ad10bdadc50273be6b02a6dca1617638c3557320b749581d8ac4791c761dc28383604051808361ffff1681526020018281526020019250505060405180910390a25050565b6000546001600160a01b031690565b600061266782846137d4565b90505b92915050565b60165481565b600854600160a01b900461ffff1681565b60095462010000900461ffff1681565b61269f612f06565b6000546001600160a01b039081169116146126ef576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b038316908117909155612715612f06565b6001600160a01b03167fab5c3c25cd7877a6ee85046e4a861dcc060d04cd20596a2072d9cc10f5549ee760405160405180910390a350565b6004546001600160a01b031681565b612764612f06565b6000546001600160a01b039081169116146127b4576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6009805465ffff00000000191664010000000061ffff868116919091029190911767ffff0000000000001916600160301b858316021769ffff00000000000000001916600160401b9184169190910217905561280e612f06565b6040805161ffff8087168252808616602083015284168183015290516001600160a01b0392909216917fbec13a33a11783a706650827af6c735d733608c5a135ef0a3050d89c3bad24cc9181900360600190a2505050565b6000806128756013544361265b565b905080158061288957506128876113e4565b155b15612898576000915050610db6565b600a5481116128e057612447612710610f0c600a54610f0c6128b86113e4565b600854600c54610f0c91670de0b6b3a7640000916121d991600160b01b900461ffff16613739565b600a54811180156128f35750600b548111155b1561293757612447612710610f0c600b54610f0c61290f6113e4565b600854600d54610f0c91670de0b6b3a7640000916121d991600160b01b900461ffff16613739565b61244781610f0c6129466113e4565b601754610f0c90670de0b6b3a7640000613739565b6000612965612f06565b6001546001600160a01b039081169116146129b15760405162461bcd60e51b815260040180806020018281038252602d8152602001806144d0602d913960400191505060405180910390fd5b6008546000906129d59061271090610f0c908690600160c01b900461ffff16613739565b6001546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101859052905193945091169163a9059cbb916044808201926020929091908290030181600087803b158015612a3057600080fd5b505af1158015612a44573d6000803e3d6000fd5b505050506040513d6020811015612a5a57600080fd5b5050600854600090612a809061271090610f0c908790600160d01b900461ffff16613739565b601654909150612a909082613981565b601655600854600090612ab79061271090610f0c908890600160e01b900461ffff16613739565b601854909150612ac79082613981565b601855612aec612ae382612add85818a896137d4565b906137d4565b60175490613981565b601755506001949350505050565b612b02612f06565b6000546001600160a01b03908116911614612b52576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6009805463ffff000019166201000061ffff841602179055612b72612f06565b6001600160a01b03167f89dca1656bdc9ccab0135b15008c5b47c079d53240004b754abe5f2c42def51482604051808261ffff16815260200191505060405180910390a250565b60125460ff1681565b6001546001600160a01b031681565b60095461ffff1681565b6001600160a01b0381166000908152601a6020908152604080832081516080810183528154815260018201549381019390935260028101549183018290526003015460608301528291908290612c31904361265b565b82519091501580612c40575080155b15612c5357600080935093505050612211565b6000612c5d612866565b905060006121b8600f5484613dd090919063ffffffff16565b612c7e612f06565b6000546001600160a01b03908116911614612cce576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6010819055612cdb612f06565b6001600160a01b03167f9453fdd85db416be46a9c93c41b8c7994185d893d5de2618999efc98f812c9956010546040518082815260200191505060405180910390a250565b6002546001600160a01b031681565b600f5481565b601254610100900460ff1681565b601b5490565b612d51612f06565b6000546001600160a01b03908116911614612da1576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6011819055612dae612f06565b6001600160a01b03167f33b702d649ad98aff22a9dfcca51fde88ce0007f4add7fa9a9cc26ffd5d7fba7826040518082815260200191505060405180910390a250565b60185481565b60155481565b612e05612f06565b6000546001600160a01b03908116911614612e55576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6001600160a01b038116612e9a5760405162461bcd60e51b81526004018080602001828103825260268152602001806143fe6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600954600160401b900461ffff1681565b3390565b600154604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612f5a57600080fd5b505afa158015612f6e573d6000803e3d6000fd5b505050506040513d6020811015612f8457600080fd5b5051905080831115613018576001546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015612fe657600080fd5b505af1158015612ffa573d6000803e3d6000fd5b505050506040513d602081101561301057600080fd5b5061309b9050565b6001546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561306e57600080fd5b505af1158015613082573d6000803e3d6000fd5b505050506040513d602081101561309857600080fd5b50505b5060019392505050565b6000828411156130e65760405162461bcd60e51b815260040180806020018281038252602b8152602001806144fd602b913960400191505060405180910390fd5b60008211613134576040805162461bcd60e51b81526020600482015260166024820152752b30bab63a1d1024b73b30b634b2103832b934b7b21760511b604482015290519081900360640190fd5b6000613140858561265b565b90506131606131596131528386613dd0565b83906137d4565b8690613981565b95945050505050565b601254600090610100900460ff1615806131835750601454155b1561319057506000610db6565b6000806000806000600660009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e657600080fd5b505afa1580156131fa573d6000803e3d6000fd5b505050506040513d602081101561321057600080fd5b50516004549091506001600160a01b03808316911614156132c157600660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561327957600080fd5b505afa15801561328d573d6000803e3d6000fd5b505050506040513d60608110156132a357600080fd5b5080516020909101516001600160701b039081169650169350613353565b600660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561330f57600080fd5b505afa158015613323573d6000803e3d6000fd5b505050506040513d606081101561333957600080fd5b5080516020909101516001600160701b0391821696501693505b600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156133a157600080fd5b505afa1580156133b5573d6000803e3d6000fd5b505050506040513d60208110156133cb57600080fd5b50516004549091506001600160a01b038083169116141561347c57600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561343457600080fd5b505afa158015613448573d6000803e3d6000fd5b505050506040513d606081101561345e57600080fd5b5080516020909101516001600160701b03908116945016915061350e565b600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156134ca57600080fd5b505afa1580156134de573d6000803e3d6000fd5b505050506040513d60608110156134f457600080fd5b5080516020909101516001600160701b0391821694501691505b831580613519575082155b1561352c57600095505050505050610db6565b600061354a84610f0c856121d989838c670de0b6b3a7640000613739565b9050600061356f670de0b6b3a7640000610f0c6014548561373990919063ffffffff16565b905060008111801561358357506015548110155b1561372b5760006135ab83610f0c670de0b6b3a764000060155461373990919063ffffffff16565b90506014548111156135bc57506014545b6001546001600160a01b031663a9059cbb6135d5612f06565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561361c57600080fd5b505af1158015613630573d6000803e3d6000fd5b505050506040513d602081101561364657600080fd5b505060145461365590826137d4565b6014556019546136659082613981565b601955613670612f06565b604080518381526001602082015281516001600160a01b0393909316927f84c72a03b6219c0bf233c5f627c81e20c48ac9eb67bc0bac32cb161a1f45febc929181900390910190a2601b60405180606001604052806136cd612f06565b6001600160a01b03908116825260208083019590955242604092830152835460018082018655600095865294869020845160039092020180546001600160a01b03191691909216178155938201519284019290925501516002909101555b600097505050505050505090565b6000826137485750600061266a565b8282028284828161375557fe5b04146126675760405162461bcd60e51b815260040180806020018281038252602181526020018061448f6021913960400191505060405180910390fd5b600061266783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e12565b600061266783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613eb4565b3b151590565b60008061382a836002613792565b9050600061383884836137d4565b600154604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561388957600080fd5b505afa15801561389d573d6000803e3d6000fd5b505050506040513d60208110156138b357600080fd5b505190506138c082613f0e565b600154604080516370a0823160e01b815230600482015290516000926139149285926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561162757600080fd5b905061392081856140ac565b613928612f06565b604080518881526020810187905280820184905290516001600160a01b0392909216917f97e5ad387b7f50d466c893468857e73b9071ab3b1349bf9efd01cfb7ad9e94d09181900360600190a250600195945050505050565b600082820183811015612667576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008111613a29576040805162461bcd60e51b81526020600482015260166024820152755661756c743a204e6f2072657761726420737461746560501b604482015290519081900360640190fd5b60048054604080516370a0823160e01b81523093810193909352516000926001600160a01b03909216916370a08231916024808301926020929190829003018186803b158015613a7857600080fd5b505afa158015613a8c573d6000803e3d6000fd5b505050506040513d6020811015613aa257600080fd5b5051600154600454919250613ac5916001600160a01b03918216911684306141d7565b613b005760405162461bcd60e51b81526004018080602001828103825260278152602001806144476027913960400191505060405180910390fd5b60048054604080516370a0823160e01b8152309381019390935251600092613b559285926001600160a01b03909116916370a08231916024808301926020929190829003018186803b15801561162757600080fd5b905060008111613bac576040805162461bcd60e51b815260206004820152601b60248201527f5661756c743a20496e76616c6964205745544820616d6f756e742e0000000000604482015290519081900360640190fd5b600954600090613bd19061271090610f0c908590640100000000900461ffff16613739565b600954909150600090613bf89061271090610f0c908690600160301b900461ffff16613739565b90506000613c0a82612add86866137d4565b6004549091506001600160a01b031663a9059cbb613c26612f06565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613c6d57600080fd5b505af1158015613c81573d6000803e3d6000fd5b505050506040513d6020811015613c9757600080fd5b5051613ce1576040805162461bcd60e51b81526020600482015260146024820152730acc2ead8e874408cc2d2d8c840e8de40ae8aa8960631b604482015290519081900360640190fd5b600454600254613d06916001600160a01b03908116911685613d01612f06565b6141d7565b613d57576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a204661696c656420746f2073776170205946492e000000000000604482015290519081900360640190fd5b600454600354613d77916001600160a01b03908116911684613d01612f06565b613dc8576040805162461bcd60e51b815260206004820152601b60248201527f5661756c743a204661696c656420746f207377617020574254432e0000000000604482015290519081900360640190fd5b505050505050565b600061266783836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061439b565b60008183613e9e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e63578181015183820152602001613e4b565b50505050905090810190601f168015613e905780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613eaa57fe5b0495945050505050565b60008184841115613f065760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613e63578181015183820152602001613e4b565b505050900390565b6040805160028082526060820183526000926020830190803683375050600754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613f7357600080fd5b505afa158015613f87573d6000803e3d6000fd5b505050506040513d6020811015613f9d57600080fd5b505181518290600090613fac57fe5b6001600160a01b0392831660209182029290920101526001805483519216918391908110613fd657fe5b6001600160a01b0392831660209182029290920181019190915260075460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de95978b9795968b969495939460a49091019187810191028083838b5b83811015614068578181015183820152602001614050565b50505050905001955050505050506000604051808303818588803b15801561408f57600080fd5b505af11580156140a3573d6000803e3d6000fd5b50505050505050565b6001546007546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561410557600080fd5b505af1158015614119573d6000803e3d6000fd5b505050506040513d602081101561412f57600080fd5b50506007546001546040805163f305d71960e01b81526001600160a01b0392831660048201526024810186905260006044820181905260648201523060848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b1580156141a657600080fd5b505af11580156141ba573d6000803e3d6000fd5b50505050506040513d60608110156141d157600080fd5b50505050565b60408051600280825260608201835260009283929190602083019080368337019050509050858160008151811061420a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061423857fe5b6001600160a01b039283166020918202929092018101919091526007546040805163095ea7b360e01b8152918416600483015260248201889052519289169263095ea7b3926044808401939192918290030181600087803b15801561429c57600080fd5b505af11580156142b0573d6000803e3d6000fd5b505050506040513d60208110156142c657600080fd5b5050600754604051635c11d79560e01b8152600481018681526000602483018190526001600160a01b038781166064850152426084850181905260a060448601908152875160a487015287519290961695635c11d795958b9589948c9493919260c40190602087810191028083838b5b8381101561434e578181015183820152602001614336565b505050509050019650505050505050600060405180830381600087803b15801561437757600080fd5b505af115801561438b573d6000803e3d6000fd5b5060019998505050505050505050565b600081836143ea5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613e63578181015183820152602001613e4b565b508284816143f457fe5b0694935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735661756c743a20696e73756666696369656e74207374616b696e6720616d6f756e742e5661756c743a204661696c656420746f20737761702066726f6d20595a5920746f20574554482e5661756c743a20496e76616c696420616d6f756e7420746f20756e7374616b652e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724f776e61626c653a2063616c6c6572206973206e6f742074686520595a5920746f6b656e20636f6e74726163745661756c743a20496e76616c696420706172616d657465727320666f7220626c6f636b206e756d6265722ea2646970667358221220798934e6e28a3fb5ec2c5cd7d69b961ebd4647b16be06f70abb290c19fdc133764736f6c63430007060033000000000000000000000000f01a907407413f5168bff558119606054c5853020000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b4e16d0168e52d35cacd2c6185b44281ec28c9dc
Deployed Bytecode
0x6080604052600436106103dd5760003560e01c80637baec59a116101fd578063a7678a8a11610118578063caf171da116100ab578063e0771cdc1161007a578063e0771cdc14610b7e578063e604a6ab14610ba8578063e73c5eb314610bbd578063f2fde38b14610bd2578063f693a12f14610c05576103e4565b8063caf171da14610b2a578063ce4013db14610b3f578063dc0a15ca14610b54578063df15c37e14610b69576103e4565b8063beb76fb6116100e7578063beb76fb614610aa3578063c0b0fda214610ab8578063c0fd1da414610acd578063c25cf1d014610b00576103e4565b8063a7678a8a14610a21578063acb55ab114610a36578063b65e0dc414610a60578063bb7fddec14610a8e576103e4565b80638da5cb5b116101905780639ab41ec51161015f5780639ab41ec514610984578063a0e0da9714610999578063a1764595146109cc578063a44888af146109e1576103e4565b80638da5cb5b146109155780638dbb1e3a1461092a57806398bd19b71461095a5780639919f8c11461096f576103e4565b806384eedc73116101cc57806384eedc731461088b57806385004983146108a057806387c1ef90146108b557806387c6b8a4146108e1576103e4565b80637baec59a146108195780637d0221b71461082e578063807290eb1461084357806381fa2cd514610876576103e4565b806344c23fa3116102f85780635a1500e51161028b5780636d57ab0b1161025a5780636d57ab0b1461071a578063715018a61461072f57806374a37efc1461074457806375e032f4146107905780637b8f6f4c146107e9576103e4565b80635a1500e5146106ab5780635bf7a644146106db5780635d5acad1146106f05780635f337b8514610705576103e4565b806351fde4bb116102c757806351fde4bb14610642578063527cca57146106575780635737155d1461066c57806358077dfa14610681576103e4565b806344c23fa31461059a578063451a8bd4146105c857806349256047146105dd5780634d9d24b5146105f2576103e4565b806328f41d5f1161037057806338adb6f01161033f57806338adb6f0146105535780633a4b66f1146105685780633e3960fa146105705780634054333914610585576103e4565b806328f41d5f146104ce5780632c71ecb6146104ff5780632e050526146105145780632e17de7814610529576103e4565b80631792d473116103ac5780631792d4731461046657806322d049791461047b57806326231ec8146104a457806328f0b257146104b9576103e4565b806303052cc7146103e9578063082827fa146104155780630b2e48551461043c57806315566a5b14610451576103e4565b366103e457005b600080fd5b3480156103f557600080fd5b506103fe610c1a565b6040805161ffff9092168252519081900360200190f35b34801561042157600080fd5b5061042a610c2b565b60408051918252519081900360200190f35b34801561044857600080fd5b5061042a610c31565b34801561045d57600080fd5b5061042a610c37565b34801561047257600080fd5b506103fe610c3d565b34801561048757600080fd5b50610490610c4e565b604080519115158252519081900360200190f35b3480156104b057600080fd5b506103fe610db9565b3480156104c557600080fd5b506103fe610dca565b3480156104da57600080fd5b506104e3610ddb565b604080516001600160a01b039092168252519081900360200190f35b34801561050b57600080fd5b5061042a610dea565b34801561052057600080fd5b50610490610df0565b34801561053557600080fd5b506104906004803603602081101561054c57600080fd5b5035611034565b34801561055f57600080fd5b5061042a6113e4565b610490611460565b34801561057c57600080fd5b5061042a611721565b34801561059157600080fd5b506103fe611727565b3480156105a657600080fd5b506105c6600480360360208110156105bd57600080fd5b50351515611738565b005b3480156105d457600080fd5b506104e36117f0565b3480156105e957600080fd5b506105c66117ff565b3480156105fe57600080fd5b506105c6600480360360a081101561061557600080fd5b5061ffff813581169160208101358216916040820135811691606081013582169160809091013516611a63565b34801561064e57600080fd5b506103fe611b98565b34801561066357600080fd5b5061042a611ba9565b34801561067857600080fd5b506104e3611baf565b34801561068d57600080fd5b50610490600480360360208110156106a457600080fd5b5035611bbe565b3480156106b757600080fd5b506105c6600480360360408110156106ce57600080fd5b5080359060200135611d80565b3480156106e757600080fd5b506104e3611e36565b3480156106fc57600080fd5b50610490611e45565b34801561071157600080fd5b5061042a611efa565b34801561072657600080fd5b50610490611f00565b34801561073b57600080fd5b506105c661207c565b34801561075057600080fd5b506107776004803603602081101561076757600080fd5b50356001600160a01b031661211e565b6040805192835260208301919091528051918290030190f35b34801561079c57600080fd5b506107c3600480360360208110156107b357600080fd5b50356001600160a01b0316612216565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156107f557600080fd5b506105c66004803603604081101561080c57600080fd5b508035906020013561223d565b34801561082557600080fd5b506103fe6122f3565b34801561083a57600080fd5b5061042a612305565b34801561084f57600080fd5b506105c66004803603602081101561086657600080fd5b50356001600160a01b031661230b565b34801561088257600080fd5b5061042a6123c1565b34801561089757600080fd5b5061042a6123c7565b3480156108ac57600080fd5b5061042a6123cd565b3480156108c157600080fd5b506105c6600480360360208110156108d857600080fd5b503515156124ca565b3480156108ed57600080fd5b506105c66004803603604081101561090457600080fd5b5061ffff813516906020013561257d565b34801561092157600080fd5b506104e361264c565b34801561093657600080fd5b5061042a6004803603604081101561094d57600080fd5b508035906020013561265b565b34801561096657600080fd5b5061042a612670565b34801561097b57600080fd5b506103fe612676565b34801561099057600080fd5b506103fe612687565b3480156109a557600080fd5b506105c6600480360360208110156109bc57600080fd5b50356001600160a01b0316612697565b3480156109d857600080fd5b506104e361274d565b3480156109ed57600080fd5b506105c660048036036060811015610a0457600080fd5b5061ffff813581169160208101358216916040909101351661275c565b348015610a2d57600080fd5b5061042a612866565b348015610a4257600080fd5b5061049060048036036020811015610a5957600080fd5b503561295b565b348015610a6c57600080fd5b506105c660048036036020811015610a8357600080fd5b503561ffff16612afa565b348015610a9a57600080fd5b50610490612bb9565b348015610aaf57600080fd5b506104e3612bc2565b348015610ac457600080fd5b506103fe612bd1565b348015610ad957600080fd5b5061077760048036036020811015610af057600080fd5b50356001600160a01b0316612bdb565b348015610b0c57600080fd5b506105c660048036036020811015610b2357600080fd5b5035612c76565b348015610b3657600080fd5b506104e3612d20565b348015610b4b57600080fd5b5061042a612d2f565b348015610b6057600080fd5b50610490612d35565b348015610b7557600080fd5b5061042a612d43565b348015610b8a57600080fd5b506105c660048036036020811015610ba157600080fd5b5035612d49565b348015610bb457600080fd5b5061042a612df1565b348015610bc957600080fd5b5061042a612df7565b348015610bde57600080fd5b506105c660048036036020811015610bf557600080fd5b50356001600160a01b0316612dfd565b348015610c1157600080fd5b506103fe612ef5565b600854600160f01b900461ffff1681565b600b5481565b60195481565b60105481565b600854600160b01b900461ffff1681565b600080610c61610c5c612f06565b61211e565b50905060008111610cb9576040805162461bcd60e51b815260206004820152601b60248201527f5661756c743a204e6f20617661696c61626c65207265776172642e0000000000604482015290519081900360640190fd5b610cca610cc4612f06565b82612f0a565b610d1b576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a204661696c656420746f207472616e736665722e000000000000604482015290519081900360640190fd5b610d23612f06565b6001600160a01b03167f31f1c72d5a6b4cc395db8810fbf58d082ed36c03086e12944356b84a2c0d4cbd826040518082815260200191505060405180910390a26000601a6000610d71612f06565b6001600160a01b03166001600160a01b031681526020019081526020016000209050610da4816001015443600e546130a5565b6001820155610db1613169565b925050505b90565b600954600160301b900461ffff1681565b600854600160c01b900461ffff1681565b6006546001600160a01b031681565b60135481565b6000806000610e00610c5c612f06565b915091506000821180610e135750600081115b610e58576040805162461bcd60e51b81526020600482015260116024820152705661756c743a204e6f207265776172647360781b604482015290519081900360640190fd5b6000601a6000610e66612f06565b6001600160a01b03168152602081019190915260400160002090508215610ee957610e98610e92612f06565b84612f0a565b610ee9576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a204661696c656420746f207472616e736665722e000000000000604482015290519081900360640190fd5b8115610fb757600954600090610f129061271090610f0c90869061ffff16613739565b90613792565b60015460408051631538c64b60e31b81526004810184905290519293506001600160a01b039091169163a9c63258916024808201926020929091908290030181600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050506040513d6020811015610f8d57600080fd5b50610faa9050610f9b612f06565b610fa585846137d4565b612f0a565b5050436001820155610fd4565b8215610fd457610fce816001015443600e546130a5565b60018201555b610fdc612f06565b6001600160a01b03167fb74a96c7eaedd803d954d202f6a8aeb8fad40fe46bdec45455af3b5e57d934f88484604051808381526020018281526020019250505060405180910390a261102c613169565b935050505090565b6000611046611041612f06565b613816565b15611098576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20436f756c64206e6f7420626520636f6e74726163742e000000604482015290519081900360640190fd5b6000601a60006110a6612f06565b6001600160a01b0316815260208101919091526040016000208054909150158015906110d25750600083115b80156110df575080548311155b61111a5760405162461bcd60e51b815260040180806020018281038252602181526020018061446e6021913960400191505060405180910390fd5b611122610df0565b5061112b611f00565b5060125460ff16801561116d57506000601a6000611147612f06565b6001600160a01b03166001600160a01b0316815260200190815260200160002060030154115b80156111a75750601a6000611180612f06565b6001600160a01b03166001600160a01b031681526020019081526020016000206003015442105b156112f2576009546000906111cf9061271090610f0c90879062010000900461ffff16613739565b6005546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101859052905193945091169163a9059cbb916044808201926020929091908290030181600087803b15801561122a57600080fd5b505af115801561123e573d6000803e3d6000fd5b505050506040513d602081101561125457600080fd5b50506005546001600160a01b031663a9059cbb61126f612f06565b61127987856137d4565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156112bf57600080fd5b505af11580156112d3573d6000803e3d6000fd5b505050506040513d60208110156112e957600080fd5b5061137f915050565b6005546001600160a01b031663a9059cbb61130b612f06565b856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561135257600080fd5b505af1158015611366573d6000803e3d6000fd5b505050506040513d602081101561137c57600080fd5b50505b805461138b90846137d4565b8155611395612f06565b6001600160a01b03167f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f75846040518082815260200191505060405180910390a26113dd613169565b9392505050565b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561142f57600080fd5b505afa158015611443573d6000803e3d6000fd5b505050506040513d602081101561145957600080fd5b5051905090565b600061146d611041612f06565b156114bf576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20436f756c64206e6f7420626520636f6e74726163742e000000604482015290519081900360640190fd5b6011543410156115005760405162461bcd60e51b81526004018080602001828103825260238152602001806144246023913960400191505060405180910390fd5b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d602081101561157557600080fd5b505190506115823461381c565b6115d3576040805162461bcd60e51b815260206004820152601f60248201527f5661756c743a204661696c656420746f20676574204c5020746f6b656e732e00604482015290519081900360640190fd5b600554604080516370a0823160e01b815230600482015290516000926116599285926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561162757600080fd5b505afa15801561163b573d6000803e3d6000fd5b505050506040513d602081101561165157600080fd5b5051906137d4565b90506000601a6000611669612f06565b6001600160a01b0316815260208101919091526040016000208054909150156116a357611694610df0565b5061169d611f00565b506116b1565b436001820181905560028201555b80546116bd9083613981565b81556010546116cc9042613981565b60038201556116d9612f06565b6001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a261102c613169565b600d5481565b600854600160e01b900461ffff1681565b611740612f06565b6000546001600160a01b03908116911614611790576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6012805461ff001916610100831515021790556117ab612f06565b6001600160a01b03167f40be77546ded0cf2c0243024383f86f5ce93d48fb40745599d592b5a3c5b22428260405180821515815260200191505060405180910390a250565b6005546001600160a01b031681565b611807612f06565b6000546001600160a01b03908116911614611857576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6000611861612f06565b6001600160a01b031614156118b6576040805162461bcd60e51b81526020600482015260166024820152755661756c743a20496e76616c6964206164647265737360501b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561190157600080fd5b505afa158015611915573d6000803e3d6000fd5b505050506040513d602081101561192b57600080fd5b5051905080611981576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a20496e73756666696369656e7420616d6f756e74000000000000604482015290519081900360640190fd5b6001546001600160a01b031663a9059cbb61199a612f06565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156119e157600080fd5b505af11580156119f5573d6000803e3d6000fd5b505050506040513d6020811015611a0b57600080fd5b50611a169050612f06565b6001600160a01b0316306001600160a01b03167fda0612d7ca9ff90ca7143a6021ba8938994f8d045b2834ae585fd07b27ea697c836040518082815260200191505060405180910390a350565b611a6b612f06565b6000546001600160a01b03908116911614611abb576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6008805461ffff60c01b1916600160c01b61ffff888116919091029190911761ffff60d01b1916600160d01b878316021761ffff60e01b1916600160e01b86831602176001600160f01b0316600160f01b85831602179091556009805461ffff1916918316919091179055611b2e612f06565b6040805161ffff808916825280881660208301528087168284015280861660608301528416608082015290516001600160a01b0392909216917f4d47a64130cda9f89e39a96ea1f0d2d6b949553bf6f5420ac044e4fe862f134b9181900360a00190a25050505050565b600854600160d01b900461ffff1681565b600e5481565b6003546001600160a01b031681565b6000611bcb611041612f06565b15611c1d576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20436f756c64206e6f7420626520636f6e74726163742e000000604482015290519081900360640190fd5b6005546001600160a01b03166323b872dd611c36612f06565b30856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b158015611c8e57600080fd5b505af1158015611ca2573d6000803e3d6000fd5b505050506040513d6020811015611cb857600080fd5b5060009050601a81611cc8612f06565b6001600160a01b031681526020810191909152604001600020805490915015611d0257611cf3610df0565b50611cfc611f00565b50611d10565b436001820181905560028201555b8054611d1c9084613981565b8155601054611d2b9042613981565b6003820155611d38612f06565b6001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040518082815260200191505060405180910390a26113dd613169565b611d88612f06565b6000546001600160a01b03908116911614611dd8576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600a829055600b819055611dea612f06565b6001600160a01b03167f5c7c58c03f6082e59d35ca0f5f9913571cb8b42deed4687742641bd55b756e888383604051808381526020018281526020019250505060405180910390a25050565b6008546001600160a01b031681565b600080611e58611e53612f06565b612bdb565b509050611e64816139db565b611e6c612f06565b6001600160a01b03167fe652e6526a9038d6a9dee5630d8a0b4b994d88f8bc96ecd0b78a06945704498e826040518082815260200191505060405180910390a26000601a6000611eba612f06565b6001600160a01b03166001600160a01b031681526020019081526020016000209050611eed816002015443600f546130a5565b6002820155610db1613169565b60115481565b6000806000611f10611e53612f06565b90925090508015611fc457600954600090611f389061271090610f0c90859061ffff16613739565b60015460408051631538c64b60e31b81526004810184905290519293506001600160a01b039091169163a9c63258916024808201926020929091908290030181600087803b158015611f8957600080fd5b505af1158015611f9d573d6000803e3d6000fd5b505050506040513d6020811015611fb357600080fd5b50611fc0905082826137d4565b9150505b611fd6611fd18383613981565b6139db565b611fde612f06565b6001600160a01b03167f724a99a8b8c69616d45ec787e474c4750c629f62c800e10b89a78aa1bf7544436120128484613981565b60408051918252519081900360200190a26000601a6000612031612f06565b6001600160a01b0316815260208101919091526040016000209050811561205d57436002820155612074565b61206e816002015443600f546130a5565b60028201555b61102c613169565b612084612f06565b6000546001600160a01b039081169116146120d4576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001600160a01b0381166000908152601a60209081526040808320815160808101835281548152600182015493810184905260028201549281019290925260030154606082015282918290612173904361265b565b82519091501580612182575080155b1561219557600080935093505050612211565b600061219f6123cd565b905060006121b8600e5484613dd090919063ffffffff16565b84519091506121df90670de0b6b3a764000090610f0c906121d98686613739565b90613739565b845190955061220a90670de0b6b3a764000090610f0c906121d961220388876137d4565b8790613739565b9550505050505b915091565b601a6020526000908152604090208054600182015460028301546003909301549192909184565b612245612f06565b6000546001600160a01b03908116911614612295576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600e829055600f8190556122a7612f06565b6001600160a01b03167fc375b3f815d7577717b75012b2eb8242ec2fb5b7faab45dbaa2f8b5fac2593d38383604051808381526020018281526020019250505060405180910390a25050565b600954640100000000900461ffff1681565b600c5481565b612313612f06565b6000546001600160a01b03908116911614612363576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b038316908117909155612389612f06565b6001600160a01b03167fb19836d509acf8e409be4c0fd5d9bfcfcdb10e9dd0a578a43007bec41602dc8e60405160405180910390a350565b600a5481565b60175481565b6000806123dc6013544361265b565b90508015806123f057506123ee6113e4565b155b156123ff576000915050610db6565b600a54811161244f57612447612710610f0c600a54610f0c61241f6113e4565b600854600c54610f0c91670de0b6b3a7640000916121d991600160a01b900461ffff16613739565b915050610db6565b600a54811180156124625750600b548111155b156124a657612447612710610f0c600b54610f0c61247e6113e4565b600854600d54610f0c91670de0b6b3a7640000916121d991600160a01b900461ffff16613739565b61244781610f0c6124b56113e4565b601654610f0c90670de0b6b3a7640000613739565b6124d2612f06565b6000546001600160a01b03908116911614612522576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6012805460ff1916821515179055612538612f06565b6001600160a01b03167f32a084585e0a2cccdef695374e2eb7aa6c316aac3fb33dd66a1833edbe529a138260405180821515815260200191505060405180910390a250565b612585612f06565b6000546001600160a01b039081169116146125d5576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6008805461ffff60e01b1916600160e01b61ffff85160217905560158190556125fc612f06565b6001600160a01b03167f88ad10bdadc50273be6b02a6dca1617638c3557320b749581d8ac4791c761dc28383604051808361ffff1681526020018281526020019250505060405180910390a25050565b6000546001600160a01b031690565b600061266782846137d4565b90505b92915050565b60165481565b600854600160a01b900461ffff1681565b60095462010000900461ffff1681565b61269f612f06565b6000546001600160a01b039081169116146126ef576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b038316908117909155612715612f06565b6001600160a01b03167fab5c3c25cd7877a6ee85046e4a861dcc060d04cd20596a2072d9cc10f5549ee760405160405180910390a350565b6004546001600160a01b031681565b612764612f06565b6000546001600160a01b039081169116146127b4576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6009805465ffff00000000191664010000000061ffff868116919091029190911767ffff0000000000001916600160301b858316021769ffff00000000000000001916600160401b9184169190910217905561280e612f06565b6040805161ffff8087168252808616602083015284168183015290516001600160a01b0392909216917fbec13a33a11783a706650827af6c735d733608c5a135ef0a3050d89c3bad24cc9181900360600190a2505050565b6000806128756013544361265b565b905080158061288957506128876113e4565b155b15612898576000915050610db6565b600a5481116128e057612447612710610f0c600a54610f0c6128b86113e4565b600854600c54610f0c91670de0b6b3a7640000916121d991600160b01b900461ffff16613739565b600a54811180156128f35750600b548111155b1561293757612447612710610f0c600b54610f0c61290f6113e4565b600854600d54610f0c91670de0b6b3a7640000916121d991600160b01b900461ffff16613739565b61244781610f0c6129466113e4565b601754610f0c90670de0b6b3a7640000613739565b6000612965612f06565b6001546001600160a01b039081169116146129b15760405162461bcd60e51b815260040180806020018281038252602d8152602001806144d0602d913960400191505060405180910390fd5b6008546000906129d59061271090610f0c908690600160c01b900461ffff16613739565b6001546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101859052905193945091169163a9059cbb916044808201926020929091908290030181600087803b158015612a3057600080fd5b505af1158015612a44573d6000803e3d6000fd5b505050506040513d6020811015612a5a57600080fd5b5050600854600090612a809061271090610f0c908790600160d01b900461ffff16613739565b601654909150612a909082613981565b601655600854600090612ab79061271090610f0c908890600160e01b900461ffff16613739565b601854909150612ac79082613981565b601855612aec612ae382612add85818a896137d4565b906137d4565b60175490613981565b601755506001949350505050565b612b02612f06565b6000546001600160a01b03908116911614612b52576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6009805463ffff000019166201000061ffff841602179055612b72612f06565b6001600160a01b03167f89dca1656bdc9ccab0135b15008c5b47c079d53240004b754abe5f2c42def51482604051808261ffff16815260200191505060405180910390a250565b60125460ff1681565b6001546001600160a01b031681565b60095461ffff1681565b6001600160a01b0381166000908152601a6020908152604080832081516080810183528154815260018201549381019390935260028101549183018290526003015460608301528291908290612c31904361265b565b82519091501580612c40575080155b15612c5357600080935093505050612211565b6000612c5d612866565b905060006121b8600f5484613dd090919063ffffffff16565b612c7e612f06565b6000546001600160a01b03908116911614612cce576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6010819055612cdb612f06565b6001600160a01b03167f9453fdd85db416be46a9c93c41b8c7994185d893d5de2618999efc98f812c9956010546040518082815260200191505060405180910390a250565b6002546001600160a01b031681565b600f5481565b601254610100900460ff1681565b601b5490565b612d51612f06565b6000546001600160a01b03908116911614612da1576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6011819055612dae612f06565b6001600160a01b03167f33b702d649ad98aff22a9dfcca51fde88ce0007f4add7fa9a9cc26ffd5d7fba7826040518082815260200191505060405180910390a250565b60185481565b60155481565b612e05612f06565b6000546001600160a01b03908116911614612e55576040805162461bcd60e51b815260206004820181905260248201526000805160206144b0833981519152604482015290519081900360640190fd5b6001600160a01b038116612e9a5760405162461bcd60e51b81526004018080602001828103825260268152602001806143fe6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600954600160401b900461ffff1681565b3390565b600154604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612f5a57600080fd5b505afa158015612f6e573d6000803e3d6000fd5b505050506040513d6020811015612f8457600080fd5b5051905080831115613018576001546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015612fe657600080fd5b505af1158015612ffa573d6000803e3d6000fd5b505050506040513d602081101561301057600080fd5b5061309b9050565b6001546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561306e57600080fd5b505af1158015613082573d6000803e3d6000fd5b505050506040513d602081101561309857600080fd5b50505b5060019392505050565b6000828411156130e65760405162461bcd60e51b815260040180806020018281038252602b8152602001806144fd602b913960400191505060405180910390fd5b60008211613134576040805162461bcd60e51b81526020600482015260166024820152752b30bab63a1d1024b73b30b634b2103832b934b7b21760511b604482015290519081900360640190fd5b6000613140858561265b565b90506131606131596131528386613dd0565b83906137d4565b8690613981565b95945050505050565b601254600090610100900460ff1615806131835750601454155b1561319057506000610db6565b6000806000806000600660009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e657600080fd5b505afa1580156131fa573d6000803e3d6000fd5b505050506040513d602081101561321057600080fd5b50516004549091506001600160a01b03808316911614156132c157600660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561327957600080fd5b505afa15801561328d573d6000803e3d6000fd5b505050506040513d60608110156132a357600080fd5b5080516020909101516001600160701b039081169650169350613353565b600660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561330f57600080fd5b505afa158015613323573d6000803e3d6000fd5b505050506040513d606081101561333957600080fd5b5080516020909101516001600160701b0391821696501693505b600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156133a157600080fd5b505afa1580156133b5573d6000803e3d6000fd5b505050506040513d60208110156133cb57600080fd5b50516004549091506001600160a01b038083169116141561347c57600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561343457600080fd5b505afa158015613448573d6000803e3d6000fd5b505050506040513d606081101561345e57600080fd5b5080516020909101516001600160701b03908116945016915061350e565b600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156134ca57600080fd5b505afa1580156134de573d6000803e3d6000fd5b505050506040513d60608110156134f457600080fd5b5080516020909101516001600160701b0391821694501691505b831580613519575082155b1561352c57600095505050505050610db6565b600061354a84610f0c856121d989838c670de0b6b3a7640000613739565b9050600061356f670de0b6b3a7640000610f0c6014548561373990919063ffffffff16565b905060008111801561358357506015548110155b1561372b5760006135ab83610f0c670de0b6b3a764000060155461373990919063ffffffff16565b90506014548111156135bc57506014545b6001546001600160a01b031663a9059cbb6135d5612f06565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561361c57600080fd5b505af1158015613630573d6000803e3d6000fd5b505050506040513d602081101561364657600080fd5b505060145461365590826137d4565b6014556019546136659082613981565b601955613670612f06565b604080518381526001602082015281516001600160a01b0393909316927f84c72a03b6219c0bf233c5f627c81e20c48ac9eb67bc0bac32cb161a1f45febc929181900390910190a2601b60405180606001604052806136cd612f06565b6001600160a01b03908116825260208083019590955242604092830152835460018082018655600095865294869020845160039092020180546001600160a01b03191691909216178155938201519284019290925501516002909101555b600097505050505050505090565b6000826137485750600061266a565b8282028284828161375557fe5b04146126675760405162461bcd60e51b815260040180806020018281038252602181526020018061448f6021913960400191505060405180910390fd5b600061266783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e12565b600061266783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613eb4565b3b151590565b60008061382a836002613792565b9050600061383884836137d4565b600154604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561388957600080fd5b505afa15801561389d573d6000803e3d6000fd5b505050506040513d60208110156138b357600080fd5b505190506138c082613f0e565b600154604080516370a0823160e01b815230600482015290516000926139149285926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561162757600080fd5b905061392081856140ac565b613928612f06565b604080518881526020810187905280820184905290516001600160a01b0392909216917f97e5ad387b7f50d466c893468857e73b9071ab3b1349bf9efd01cfb7ad9e94d09181900360600190a250600195945050505050565b600082820183811015612667576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008111613a29576040805162461bcd60e51b81526020600482015260166024820152755661756c743a204e6f2072657761726420737461746560501b604482015290519081900360640190fd5b60048054604080516370a0823160e01b81523093810193909352516000926001600160a01b03909216916370a08231916024808301926020929190829003018186803b158015613a7857600080fd5b505afa158015613a8c573d6000803e3d6000fd5b505050506040513d6020811015613aa257600080fd5b5051600154600454919250613ac5916001600160a01b03918216911684306141d7565b613b005760405162461bcd60e51b81526004018080602001828103825260278152602001806144476027913960400191505060405180910390fd5b60048054604080516370a0823160e01b8152309381019390935251600092613b559285926001600160a01b03909116916370a08231916024808301926020929190829003018186803b15801561162757600080fd5b905060008111613bac576040805162461bcd60e51b815260206004820152601b60248201527f5661756c743a20496e76616c6964205745544820616d6f756e742e0000000000604482015290519081900360640190fd5b600954600090613bd19061271090610f0c908590640100000000900461ffff16613739565b600954909150600090613bf89061271090610f0c908690600160301b900461ffff16613739565b90506000613c0a82612add86866137d4565b6004549091506001600160a01b031663a9059cbb613c26612f06565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613c6d57600080fd5b505af1158015613c81573d6000803e3d6000fd5b505050506040513d6020811015613c9757600080fd5b5051613ce1576040805162461bcd60e51b81526020600482015260146024820152730acc2ead8e874408cc2d2d8c840e8de40ae8aa8960631b604482015290519081900360640190fd5b600454600254613d06916001600160a01b03908116911685613d01612f06565b6141d7565b613d57576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a204661696c656420746f2073776170205946492e000000000000604482015290519081900360640190fd5b600454600354613d77916001600160a01b03908116911684613d01612f06565b613dc8576040805162461bcd60e51b815260206004820152601b60248201527f5661756c743a204661696c656420746f207377617020574254432e0000000000604482015290519081900360640190fd5b505050505050565b600061266783836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525061439b565b60008183613e9e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e63578181015183820152602001613e4b565b50505050905090810190601f168015613e905780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613eaa57fe5b0495945050505050565b60008184841115613f065760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613e63578181015183820152602001613e4b565b505050900390565b6040805160028082526060820183526000926020830190803683375050600754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613f7357600080fd5b505afa158015613f87573d6000803e3d6000fd5b505050506040513d6020811015613f9d57600080fd5b505181518290600090613fac57fe5b6001600160a01b0392831660209182029290920101526001805483519216918391908110613fd657fe5b6001600160a01b0392831660209182029290920181019190915260075460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de95978b9795968b969495939460a49091019187810191028083838b5b83811015614068578181015183820152602001614050565b50505050905001955050505050506000604051808303818588803b15801561408f57600080fd5b505af11580156140a3573d6000803e3d6000fd5b50505050505050565b6001546007546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561410557600080fd5b505af1158015614119573d6000803e3d6000fd5b505050506040513d602081101561412f57600080fd5b50506007546001546040805163f305d71960e01b81526001600160a01b0392831660048201526024810186905260006044820181905260648201523060848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b1580156141a657600080fd5b505af11580156141ba573d6000803e3d6000fd5b50505050506040513d60608110156141d157600080fd5b50505050565b60408051600280825260608201835260009283929190602083019080368337019050509050858160008151811061420a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061423857fe5b6001600160a01b039283166020918202929092018101919091526007546040805163095ea7b360e01b8152918416600483015260248201889052519289169263095ea7b3926044808401939192918290030181600087803b15801561429c57600080fd5b505af11580156142b0573d6000803e3d6000fd5b505050506040513d60208110156142c657600080fd5b5050600754604051635c11d79560e01b8152600481018681526000602483018190526001600160a01b038781166064850152426084850181905260a060448601908152875160a487015287519290961695635c11d795958b9589948c9493919260c40190602087810191028083838b5b8381101561434e578181015183820152602001614336565b505050509050019650505050505050600060405180830381600087803b15801561437757600080fd5b505af115801561438b573d6000803e3d6000fd5b5060019998505050505050505050565b600081836143ea5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613e63578181015183820152602001613e4b565b508284816143f457fe5b0694935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735661756c743a20696e73756666696369656e74207374616b696e6720616d6f756e742e5661756c743a204661696c656420746f20737761702066726f6d20595a5920746f20574554482e5661756c743a20496e76616c696420616d6f756e7420746f20756e7374616b652e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724f776e61626c653a2063616c6c6572206973206e6f742074686520595a5920746f6b656e20636f6e74726163745661756c743a20496e76616c696420706172616d657465727320666f7220626c6f636b206e756d6265722ea2646970667358221220798934e6e28a3fb5ec2c5cd7d69b961ebd4647b16be06f70abb290c19fdc133764736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f01a907407413f5168bff558119606054c5853020000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b4e16d0168e52d35cacd2c6185b44281ec28c9dc
-----Decoded View---------------
Arg [0] : daoTreasury (address): 0xf01a907407413f5168BFf558119606054C585302
Arg [1] : yfi (address): 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e
Arg [2] : wbtc (address): 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
Arg [3] : weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [4] : usdcETHV2Pair (address): 0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000f01a907407413f5168bff558119606054c585302
Arg [1] : 0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e
Arg [2] : 0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599
Arg [3] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [4] : 000000000000000000000000b4e16d0168e52d35cacd2c6185b44281ec28c9dc
Deployed Bytecode Sourcemap
8826:30048:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9404:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9665:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10284:30;;;;;;;;;;;;;:::i;9886:26::-;;;;;;;;;;;;;:::i;9261:38::-;;;;;;;;;;;;;:::i;30849:697::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9545:32;;;;;;;;;;;;;:::i;9308:26::-;;;;;;;;;;;;;:::i;9084:36::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;9084:36:0;;;;;;;;;;;;;;10032:26;;;;;;;;;;;;;:::i;31554:1107::-;;;;;;;;;;;;;:::i;28340:1085::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28340:1085:0;;:::i;20680:126::-;;;;;;;;;;;;;:::i;26328:1098::-;;;:::i;9748:34::-;;;;;;;;;;;;;:::i;9372:25::-;;;;;;;;;;;;;:::i;17104:162::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17104:162:0;;;;:::i;:::-;;9042:35;;;;;;;;;;;;;:::i;34262:395::-;;;;;;;;;;;;;:::i;18144:478::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18144:478:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9341:24::-;;;;;;;;;;;;;:::i;9791:39::-;;;;;;;;;;;;;:::i;8972:27::-;;;;;;;;;;;;;:::i;27505:763::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27505:763:0;;:::i;16029:300::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16029:300:0;;;;;;;:::i;9181:27::-;;;;;;;;;;;;;:::i;32669:551::-;;;;;;;;;;;;;:::i;9921:35::-;;;;;;;;;;;;;:::i;33228:920::-;;;;;;;;;;;;;:::i;1670:148::-;;;;;;;;;;;;;:::i;29433:698::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29433:698:0;-1:-1:-1;;;;;29433:698:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10508:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10508:46:0;-1:-1:-1;;;;;10508:46:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16423:346;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16423:346:0;;;;;;;:::i;9507:31::-;;;;;;;;;;;;;:::i;9708:33::-;;;;;;;;;;;;;:::i;17701:187::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17701:187:0;-1:-1:-1;;;;;17701:187:0;;:::i;9625:33::-;;;;;;;;;;;;;:::i;10189:38::-;;;;;;;;;;;;;:::i;20956:1056::-;;;;;;;;;;;;;:::i;16860:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16860:150:0;;;;:::i;19042:245::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19042:245:0;;;;;;;;;:::i;1456:79::-;;;;;;;;;;;;;:::i;23144:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23144:117:0;;;;;;;:::i;10141:41::-;;;;;;;;;;;;;:::i;9217:37::-;;;;;;;;;;;;;:::i;9468:30::-;;;;;;;;;;;;;:::i;17536:157::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17536:157:0;-1:-1:-1;;;;;17536:157:0;;:::i;9006:27::-;;;;;;;;;;;;;:::i;19512:451::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19512:451:0;;;;;;;;;;;;;;;;;;;;:::i;22020:1048::-;;;;;;;;;;;;;:::i;19971:701::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19971:701:0;;:::i;18630:162::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18630:162:0;;;;:::i;9965:24::-;;;;;;;;;;;;;:::i;8906:26::-;;;;;;;;;;;;;:::i;9439:22::-;;;;;;;;;;;;;:::i;30139:702::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30139:702:0;-1:-1:-1;;;;;30139:702:0;;:::i;17358:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17358:170:0;;:::i;8939:26::-;;;;;;;;;;;;;:::i;9837:40::-;;;;;;;;;;;;;:::i;9996:27::-;;;;;;;;;;;;;:::i;20818:97::-;;;;;;;;;;;;;:::i;15742:192::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15742:192:0;;:::i;10234:41::-;;;;;;;;;;;;;:::i;10104:28::-;;;;;;;;;;;;;:::i;1826:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1826:244:0;-1:-1:-1;;;;;1826:244:0;;:::i;9584:32::-;;;;;;;;;;;;;:::i;9404:28::-;;;-1:-1:-1;;;9404:28:0;;;;;:::o;9665:34::-;;;;:::o;10284:30::-;;;;:::o;9886:26::-;;;;:::o;9261:38::-;;;-1:-1:-1;;;9261:38:0;;;;;:::o;30849:697::-;30900:4;30920:17;30943:26;30956:12;:10;:12::i;:::-;30943;:26::i;:::-;30919:50;;;31002:1;30990:9;:13;30982:53;;;;;-1:-1:-1;;;30982:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31070:40;31086:12;:10;:12::i;:::-;31100:9;31070:15;:40::i;:::-;31048:116;;;;;-1:-1:-1;;;31048:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31208:12;:10;:12::i;:::-;-1:-1:-1;;;;;31182:50:0;;31222:9;31182:50;;;;;;;;;;;;;;;;;;31245:25;31273:8;:22;31282:12;:10;:12::i;:::-;-1:-1:-1;;;;;31273:22:0;-1:-1:-1;;;;;31273:22:0;;;;;;;;;;;;31245:50;;31343:155;31387:6;:34;;;31436:12;31463:24;;31343:29;:155::i;:::-;31306:34;;;:192;31518:20;:18;:20::i;:::-;31511:27;;;;30849:697;;:::o;9545:32::-;;;-1:-1:-1;;;9545:32:0;;;;;:::o;9308:26::-;;;-1:-1:-1;;;9308:26:0;;;;;:::o;9084:36::-;;;-1:-1:-1;;;;;9084:36:0;;:::o;10032:26::-;;;;:::o;31554:1107::-;31596:4;31614:17;31633:15;31652:26;31665:12;:10;:12::i;31652:26::-;31613:65;;;;31711:1;31699:9;:13;:28;;;;31726:1;31716:7;:11;31699:28;31691:58;;;;;-1:-1:-1;;;31691:58:0;;;;;;;;;;;;-1:-1:-1;;;31691:58:0;;;;;;;;;;;;;;;31762:25;31790:8;:22;31799:12;:10;:12::i;:::-;-1:-1:-1;;;;;31790:22:0;;;;;;;;;;;;-1:-1:-1;31790:22:0;;-1:-1:-1;31829:13:0;;31825:174;;31885:40;31901:12;:10;:12::i;:::-;31915:9;31885:15;:40::i;:::-;31859:128;;;;;-1:-1:-1;;;31859:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32015:11;;32011:535;;32076:8;;32043:18;;32064:32;;32090:5;;32064:21;;:7;;32076:8;;32064:11;:21::i;:::-;:25;;:32::i;:::-;32111:4;;:30;;;-1:-1:-1;;;32111:30:0;;;;;;;;;;32043:53;;-1:-1:-1;;;;;;32111:4:0;;;;:18;;:30;;;;;;;;;;;;;;;:4;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32156:54:0;;-1:-1:-1;32172:12:0;:10;:12::i;:::-;32186:23;:7;32198:10;32186:11;:23::i;:::-;32156:15;:54::i;:::-;-1:-1:-1;;32262:12:0;32225:34;;;:49;32011:535;;;32296:13;;32292:254;;32363:171;32411:6;:34;;;32464:12;32495:24;;32363:29;:171::i;:::-;32326:34;;;:208;32292:254;32580:12;:10;:12::i;:::-;-1:-1:-1;;;;;32563:50:0;;32594:9;32605:7;32563:50;;;;;;;;;;;;;;;;;;;;;;;;32633:20;:18;:20::i;:::-;32626:27;;;;;31554:1107;:::o;28340:1085::-;28391:4;28417:24;28428:12;:10;:12::i;:::-;28417:10;:24::i;:::-;28416:25;28408:67;;;;;-1:-1:-1;;;28408:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28488:25;28516:8;:22;28525:12;:10;:12::i;:::-;-1:-1:-1;;;;;28516:22:0;;;;;;;;;;;;-1:-1:-1;28516:22:0;28573:19;;28516:22;;-1:-1:-1;28573:23:0;;;;:50;;;28622:1;28613:6;:10;28573:50;:96;;;;-1:-1:-1;28650:19:0;;28640:29;;;28573:96;28551:179;;;;-1:-1:-1;;;28551:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28743:16;:14;:16::i;:::-;;28772:17;:15;:17::i;:::-;-1:-1:-1;28806:12:0;;;;:64;;;;;28869:1;28835:8;:22;28844:12;:10;:12::i;:::-;-1:-1:-1;;;;;28835:22:0;-1:-1:-1;;;;;28835:22:0;;;;;;;;;;;;:31;;;:35;28806:64;:130;;;;;28905:8;:22;28914:12;:10;:12::i;:::-;-1:-1:-1;;;;;28905:22:0;-1:-1:-1;;;;;28905:22:0;;;;;;;;;;;;:31;;;28887:15;:49;28806:130;28802:454;;;29002:16;;28963:17;;28983:48;;29025:5;;28983:37;;:6;;29002:16;;;;;28983:10;:37::i;:48::-;29046:13;;29069:12;;29046:47;;;-1:-1:-1;;;29046:47:0;;-1:-1:-1;;;;;29069:12:0;;;29046:47;;;;;;;;;;;;28963:68;;-1:-1:-1;29046:13:0;;;:22;;:47;;;;;;;;;;;;;;;:13;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29109:13:0;;-1:-1:-1;;;;;29109:13:0;:22;29132:12;:10;:12::i;:::-;29146:21;:6;29157:9;29146:10;:21::i;:::-;29109:59;;;;;;;;;;;;;-1:-1:-1;;;;;29109:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28802:454:0;;-1:-1:-1;;28802:454:0;;29200:13;;-1:-1:-1;;;;;29200:13:0;:22;29223:12;:10;:12::i;:::-;29237:6;29200:44;;;;;;;;;;;;;-1:-1:-1;;;;;29200:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28802:454:0;29290:19;;:31;;29314:6;29290:23;:31::i;:::-;29268:53;;29348:12;:10;:12::i;:::-;-1:-1:-1;;;;;29339:30:0;;29362:6;29339:30;;;;;;;;;;;;;;;;;;29397:20;:18;:20::i;:::-;29390:27;28340:1085;-1:-1:-1;;;28340:1085:0:o;20680:126::-;20760:13;;:38;;;-1:-1:-1;;;20760:38:0;;20792:4;20760:38;;;;;;20733:7;;-1:-1:-1;;;;;20760:13:0;;:23;;:38;;;;;;;;;;;;;;:13;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20760:38:0;;-1:-1:-1;20680:126:0;:::o;26328:1098::-;26371:4;26397:24;26408:12;:10;:12::i;26397:24::-;26396:25;26388:67;;;;;-1:-1:-1;;;26388:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26487:20;;26474:9;:33;;26466:81;;;;-1:-1:-1;;;26466:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26619:13;;:38;;;-1:-1:-1;;;26619:38:0;;26651:4;26619:38;;;;;;26594:22;;-1:-1:-1;;;;;26619:13:0;;:23;;:38;;;;;;;;;;;;;;:13;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26619:38:0;;-1:-1:-1;26712:31:0;26733:9;26712:20;:31::i;:::-;26704:75;;;;;-1:-1:-1;;;26704:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26813:13;;:38;;;-1:-1:-1;;;26813:38:0;;26845:4;26813:38;;;;;;26792:18;;26813:58;;26856:14;;-1:-1:-1;;;;;26813:13:0;;;;:23;;:38;;;;;;;;;;;;;;;:13;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26813:38:0;;:42;:58::i;:::-;26792:79;;26884:25;26912:8;:22;26921:12;:10;:12::i;:::-;-1:-1:-1;;;;;26912:22:0;;;;;;;;;;;;-1:-1:-1;26912:22:0;26951:19;;26912:22;;-1:-1:-1;26951:23:0;26947:251;;26991:16;:14;:16::i;:::-;;27022:17;:15;:17::i;:::-;;26947:251;;;27109:12;27072:34;;;:49;;;27136:35;;;:50;26947:251;27232:19;;:35;;27256:10;27232:23;:35::i;:::-;27210:57;;27296:11;;:32;;27312:15;27296;:32::i;:::-;27278:15;;;:50;27353:12;:10;:12::i;:::-;-1:-1:-1;;;;;27346:32:0;;27367:10;27346:32;;;;;;;;;;;;;;;;;;27398:20;:18;:20::i;9748:34::-;;;;:::o;9372:25::-;;;-1:-1:-1;;;9372:25:0;;;;;:::o;17104:162::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;17171:15:::1;:25:::0;;-1:-1:-1;;17171:25:0::1;;::::0;::::1;;;;::::0;;17236:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;17214:44:0::1;;17250:7;17214:44;;;;;;;;;;;;;;;;;;;;17104:162:::0;:::o;9042:35::-;;;-1:-1:-1;;;;;9042:35:0;;:::o;34262:395::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;34358:1:::1;34334:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;34334:26:0::1;;;34326:61;;;::::0;;-1:-1:-1;;;34326:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34326:61:0;;;;;;;;;;;;;::::1;;34422:4;::::0;:29:::1;::::0;;-1:-1:-1;;;34422:29:0;;34445:4:::1;34422:29;::::0;::::1;::::0;;;34400:19:::1;::::0;-1:-1:-1;;;;;34422:4:0::1;::::0;:14:::1;::::0;:29;;;;;::::1;::::0;;;;;;;;:4;:29;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34422:29:0;;-1:-1:-1;34470:15:0;34462:54:::1;;;::::0;;-1:-1:-1;;;34462:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;34529:4;::::0;-1:-1:-1;;;;;34529:4:0::1;:13;34543:12;:10;:12::i;:::-;34557:11;34529:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;34529:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;34623:12:0::1;::::0;-1:-1:-1;34623:10:0::1;:12::i;:::-;-1:-1:-1::0;;;;;34585:64:0::1;34616:4;-1:-1:-1::0;;;;;34585:64:0::1;;34637:11;34585:64;;;;;;;;;;;;;;;;;;1653:1;34262:395::o:0;18144:478::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;18344:12:::1;:26:::0;;-1:-1:-1;;;;18344:26:0::1;-1:-1:-1::0;;;18344:26:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;18381:22:0::1;-1:-1:-1::0;;;18381:22:0;;::::1;;;-1:-1:-1::0;;;;18414:24:0::1;-1:-1:-1::0;;;18414:24:0;;::::1;;;-1:-1:-1::0;;;;;18449:30:0::1;-1:-1:-1::0;;;18449:30:0;;::::1;;;::::0;;;18490:8:::1;:18:::0;;-1:-1:-1;;18490:18:0::1;::::0;;::::1;::::0;;;::::1;::::0;;18541:12:::1;:10;:12::i;:::-;18526:88;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;::::1;::::0;;;;;;-1:-1:-1;;;;;18526:88:0;;;::::1;::::0;::::1;::::0;;;;;;;::::1;18144:478:::0;;;;;:::o;9341:24::-;;;-1:-1:-1;;;9341:24:0;;;;;:::o;9791:39::-;;;;:::o;8972:27::-;;;-1:-1:-1;;;;;8972:27:0;;:::o;27505:763::-;27561:4;27587:24;27598:12;:10;:12::i;27587:24::-;27586:25;27578:67;;;;;-1:-1:-1;;;27578:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27658:13;;-1:-1:-1;;;;;27658:13:0;:26;27685:12;:10;:12::i;:::-;27707:4;27714:6;27658:63;;;;;;;;;;;;;-1:-1:-1;;;;;27658:63:0;;;;;;-1:-1:-1;;;;;27658:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27734:25:0;;-1:-1:-1;27762:8:0;27734:25;27771:12;:10;:12::i;:::-;-1:-1:-1;;;;;27762:22:0;;;;;;;;;;;;-1:-1:-1;27762:22:0;27801:19;;27762:22;;-1:-1:-1;27801:23:0;27797:251;;27841:16;:14;:16::i;:::-;;27872:17;:15;:17::i;:::-;;27797:251;;;27959:12;27922:34;;;:49;;;27986:35;;;:50;27797:251;28082:19;;:31;;28106:6;28082:23;:31::i;:::-;28060:53;;28142:11;;:32;;28158:15;28142;:32::i;:::-;28124:15;;;:50;28199:12;:10;:12::i;:::-;-1:-1:-1;;;;;28192:28:0;;28213:6;28192:28;;;;;;;;;;;;;;;;;;28240:20;:18;:20::i;16029:300::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;16142:18:::1;:38:::0;;;16191:19:::1;:40:::0;;;16269:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;16249:72:0::1;;16283:17;16302:18;16249:72;;;;;;;;;;;;;;;;;;;;;;;;16029:300:::0;;:::o;9181:27::-;;;-1:-1:-1;;;;;9181:27:0;;:::o;32669:551::-;32721:4;32741:17;32764:27;32778:12;:10;:12::i;:::-;32764:13;:27::i;:::-;32740:51;;;32804:30;32824:9;32804:19;:30::i;:::-;32879:12;:10;:12::i;:::-;-1:-1:-1;;;;;32852:51:0;;32893:9;32852:51;;;;;;;;;;;;;;;;;;32916:25;32944:8;:22;32953:12;:10;:12::i;:::-;-1:-1:-1;;;;;32944:22:0;-1:-1:-1;;;;;32944:22:0;;;;;;;;;;;;32916:50;;33015:157;33059:6;:35;;;33109:12;33136:25;;33015:29;:157::i;:::-;32977:35;;;:195;33192:20;:18;:20::i;9921:35::-;;;;:::o;33228:920::-;33271:4;33291:17;33310:15;33329:27;33343:12;:10;:12::i;33329:27::-;33290:66;;-1:-1:-1;33290:66:0;-1:-1:-1;33373:11:0;;33369:190;;33434:8;;33401:18;;33422:32;;33448:5;;33422:21;;:7;;33434:8;;33422:11;:21::i;:32::-;33469:4;;:30;;;-1:-1:-1;;;33469:30:0;;;;;;;;;;33401:53;;-1:-1:-1;;;;;;33469:4:0;;;;:18;;:30;;;;;;;;;;;;;;;:4;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33524:23:0;;-1:-1:-1;33524:7:0;33536:10;33524:11;:23::i;:::-;33514:33;;33369:190;;33571:43;33591:22;:9;33605:7;33591:13;:22::i;:::-;33571:19;:43::i;:::-;33650:12;:10;:12::i;:::-;-1:-1:-1;;;;;33632:55:0;;33664:22;:9;33678:7;33664:13;:22::i;:::-;33632:55;;;;;;;;;;;;;;;33700:25;33728:8;:22;33737:12;:10;:12::i;:::-;-1:-1:-1;;;;;33728:22:0;;;;;;;;;;;;-1:-1:-1;33728:22:0;;-1:-1:-1;33767:11:0;;33763:338;;33833:12;33795:35;;;:50;33763:338;;;33916:173;33964:6;:35;;;34018:12;34049:25;;33916:29;:173::i;:::-;33878:35;;;:211;33763:338;34120:20;:18;:20::i;1670:148::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;1777:1:::1;1761:6:::0;;1740:40:::1;::::0;-1:-1:-1;;;;;1761:6:0;;::::1;::::0;1740:40:::1;::::0;1777:1;;1740:40:::1;1808:1;1791:19:::0;;-1:-1:-1;;;;;;1791:19:0::1;::::0;;1670:148::o;29433:698::-;-1:-1:-1;;;;;29567:17:0;;29493;29567;;;:8;:17;;;;;;;;29540:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29493:17;;;;29616:63;;29666:12;29616:13;:63::i;:::-;29696:19;;29595:84;;-1:-1:-1;29696:24:0;;:43;;-1:-1:-1;29724:15:0;;29696:43;29692:90;;;29765:1;29768;29757:13;;;;;;;;29692:90;29794:19;29816:28;:26;:28::i;:::-;29794:50;;29855:23;29881:40;29896:24;;29881:10;:14;;:40;;;;:::i;:::-;29981:19;;29855:66;;-1:-1:-1;29944:70:0;;30006:7;;29944:57;;:32;:11;29855:66;29944:15;:32::i;:::-;:36;;:57::i;:70::-;30090:19;;29934:80;;-1:-1:-1;30037:86:0;;30115:7;;30037:73;;:48;30053:31;:10;30068:15;30053:14;:31::i;:::-;30037:11;;:15;:48::i;:86::-;30025:98;;29433:698;;;;;;;;:::o;10508:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16423:346::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;16547:24:::1;:50:::0;;;16608:25:::1;:52:::0;;;16697:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;16678:83:0::1;;16711:23;16736:24;16678:83;;;;;;;;;;;;;;;;;;;;;;;;16423:346:::0;;:::o;9507:31::-;;;;;;;;;:::o;9708:33::-;;;;:::o;17701:187::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;17777:13:::1;:42:::0;;-1:-1:-1;;;;;;17777:42:0::1;-1:-1:-1::0;;;;;17777:42:0;::::1;::::0;;::::1;::::0;;;17855:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;17837:43:0::1;;;;;;;;;;;17701:187:::0;:::o;9625:33::-;;;;:::o;10189:38::-;;;;:::o;20956:1056::-;21015:7;21035:18;21056:40;21070:11;;21083:12;21056:13;:40::i;:::-;21035:61;-1:-1:-1;21121:15:0;;;:46;;;21140:22;:20;:22::i;:::-;:27;21121:46;21117:888;;;21191:1;21184:8;;;;;21117:888;21228:18;;21214:10;:32;21210:795;;21270:242;21506:5;21270:209;21460:18;;21270:163;21410:22;:20;:22::i;:::-;21323:23;;21270:18;;:113;;21375:7;;21270:78;;-1:-1:-1;;;21323:23:0;;;;21270:44;:78::i;:242::-;21263:249;;;;;21210:795;21547:18;;21534:10;:31;:68;;;;;21583:19;;21569:10;:33;;21534:68;21530:475;;;21626:244;21864:5;21626:211;21817:19;;21626:164;21767:22;:20;:22::i;:::-;21680:23;;21626:19;;:114;;21732:7;;21626:79;;-1:-1:-1;;;21680:23:0;;;;21626:45;:79::i;21530:475::-;21910:83;21982:10;21910:67;21954:22;:20;:22::i;:::-;21910:26;;:39;;21941:7;21910:30;:39::i;16860:150::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;16923:12:::1;:21:::0;;-1:-1:-1;;16923:21:0::1;::::0;::::1;;;::::0;;16981:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;16962:40:0::1;;16995:6;16962:40;;;;;;;;;;;;;;;;;;;;16860:150:::0;:::o;19042:245::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;19140:11:::1;:24:::0;;-1:-1:-1;;;;19140:24:0::1;-1:-1:-1::0;;;19140:24:0::1;::::0;::::1;;;::::0;;19175:13:::1;:28:::0;;;19240:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;19221:58:0::1;;19254:10;19266:12;19221:58;;;;;;;;;;;;;;;;;;;;;;;;;;19042:245:::0;;:::o;1456:79::-;1494:7;1521:6;-1:-1:-1;;;;;1521:6:0;1456:79;:::o;23144:117::-;23214:7;23241:12;:2;23248:4;23241:6;:12::i;:::-;23234:19;;23144:117;;;;;:::o;10141:41::-;;;;:::o;9217:37::-;;;-1:-1:-1;;;9217:37:0;;;;;:::o;9468:30::-;;;;;;;;;:::o;17536:157::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;17605:4:::1;:26:::0;;-1:-1:-1;;;;;;17605:26:0::1;-1:-1:-1::0;;;;;17605:26:0;::::1;::::0;;::::1;::::0;;;17667:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;17649:36:0::1;;;;;;;;;;;17536:157:::0;:::o;9006:27::-;;;-1:-1:-1;;;;;9006:27:0;;:::o;19512:451::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;19696:17:::1;:37:::0;;-1:-1:-1;;19696:37:0::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;19744:39:0::1;-1:-1:-1::0;;;19744:39:0;;::::1;;;-1:-1:-1::0;;19794:39:0::1;-1:-1:-1::0;;;19794:39:0;;::::1;::::0;;;::::1;;::::0;;19883:12:::1;:10;:12::i;:::-;19851:104;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;19851:104:0;;;::::1;::::0;::::1;::::0;;;;;;;::::1;19512:451:::0;;;:::o;22020:1048::-;22080:7;22100:18;22121:40;22135:11;;22148:12;22121:13;:40::i;:::-;22100:61;-1:-1:-1;22178:15:0;;;:46;;;22197:22;:20;:22::i;:::-;:27;22178:46;22174:887;;;22248:1;22241:8;;;;;22174:887;22285:18;;22271:10;:32;22267:794;;22327:243;22564:5;22327:210;22518:18;;22327:164;22468:22;:20;:22::i;:::-;22380:24;;22327:18;;:114;;22433:7;;22327:79;;-1:-1:-1;;;22380:24:0;;;;22327:44;:79::i;22267:794::-;22605:18;;22592:10;:31;:68;;;;;22641:19;;22627:10;:33;;22592:68;22588:473;;;22684:245;22923:5;22684:212;22876:19;;22684:165;22826:22;:20;:22::i;:::-;22738:24;;22684:19;;:115;;22791:7;;22684:80;;-1:-1:-1;;;22738:24:0;;;;22684:45;:80::i;22588:473::-;22969:80;23038:10;22969:64;23010:22;:20;:22::i;:::-;22969:23;;:36;;22997:7;22969:27;:36::i;19971:701::-;20032:4;12753:12;:10;:12::i;:::-;12744:4;;-1:-1:-1;;;;;12744:4:0;;;12736:29;;;12714:124;;;;-1:-1:-1;;;12714:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20096:12:::1;::::0;20049:25:::1;::::0;20077:44:::1;::::0;20115:5:::1;::::0;20077:33:::1;::::0;:6;;-1:-1:-1;;;20096:12:0;::::1;;;20077:10;:33::i;:44::-;20132:4;::::0;20146:12:::1;::::0;20132:46:::1;::::0;;-1:-1:-1;;;20132:46:0;;-1:-1:-1;;;;;20146:12:0;;::::1;20132:46;::::0;::::1;::::0;;;;;;;;;20049:72;;-1:-1:-1;20132:4:0;::::1;::::0;:13:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;;:4:::1;::::0;:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;20233:10:0::1;::::0;20191:20:::1;::::0;20214:42:::1;::::0;20250:5:::1;::::0;20214:31:::1;::::0;:6;;-1:-1:-1;;;20233:10:0;::::1;;;20214;:31::i;:42::-;20296:26;::::0;20191:65;;-1:-1:-1;20296:44:0::1;::::0;20191:65;20296:30:::1;:44::i;:::-;20267:26;:73:::0;20397:11:::1;::::0;20353:21:::1;::::0;20378:43:::1;::::0;20415:5:::1;::::0;20378:32:::1;::::0;:6;;-1:-1:-1;;;20397:11:0;::::1;;;20378:10;:32::i;:43::-;20461:26;::::0;20353:68;;-1:-1:-1;20461:45:0::1;::::0;20353:68;20461:30:::1;:45::i;:::-;20432:26;:74:::0;20545:95:::1;20573:66;20625:13:::0;20573:47:::1;20607:12:::0;20573:47;:6;20584:17;20573:10:::1;:29::i;:::-;:33:::0;::::1;:47::i;:66::-;20545:23;::::0;;:27:::1;:95::i;:::-;20519:23;:121:::0;-1:-1:-1;20660:4:0::1;::::0;19971:701;-1:-1:-1;;;;19971:701:0:o;18630:162::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;18703:16:::1;:22:::0;;-1:-1:-1;;18703:22:0::1;::::0;::::1;::::0;::::1;;;::::0;;18766:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;18743:41:0::1;;18780:3;18743:41;;;;;;;;;;;;;;;;;;;;18630:162:::0;:::o;9965:24::-;;;;;;:::o;8906:26::-;;;-1:-1:-1;;;;;8906:26:0;;:::o;9439:22::-;;;;;;:::o;30139:702::-;-1:-1:-1;;;;;30274:17:0;;30200;30274;;;:8;:17;;;;;;;;30247:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30200:17;;30247:44;30200:17;;30323:64;;30374:12;30323:13;:64::i;:::-;30404:19;;30302:85;;-1:-1:-1;30404:24:0;;:43;;-1:-1:-1;30432:15:0;;30404:43;30400:90;;;30473:1;30476;30465:13;;;;;;;;30400:90;30502:19;30524:29;:27;:29::i;:::-;30502:51;;30564:23;30590:41;30605:25;;30590:10;:14;;:41;;;;:::i;17358:170::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;17430:11:::1;:20:::0;;;17494:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;17476:44:0::1;;17508:11;;17476:44;;;;;;;;;;;;;;;;;;17358:170:::0;:::o;8939:26::-;;;-1:-1:-1;;;;;8939:26:0;;:::o;9837:40::-;;;;:::o;9996:27::-;;;;;;;;;:::o;20818:97::-;20890:10;:17;20818:97;:::o;15742:192::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;15827:20:::1;:29:::0;;;15905:12:::1;:10;:12::i;:::-;-1:-1:-1::0;;;;;15874:52:0::1;;15919:6;15874:52;;;;;;;;;;;;;;;;;;15742:192:::0;:::o;10234:41::-;;;;:::o;10104:28::-;;;;:::o;1826:244::-;1593:12;:10;:12::i;:::-;1583:6;;-1:-1:-1;;;;;1583:6:0;;;:22;;;1575:67;;;;;-1:-1:-1;;;1575:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1575:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;1915:22:0;::::1;1907:73;;;;-1:-1:-1::0;;;1907:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2017:6;::::0;;1996:38:::1;::::0;-1:-1:-1;;;;;1996:38:0;;::::1;::::0;2017:6;::::1;::::0;1996:38:::1;::::0;::::1;2045:6;:17:::0;;-1:-1:-1;;;;;;2045:17:0::1;-1:-1:-1::0;;;;;2045:17:0;;;::::1;::::0;;;::::1;::::0;;1826:244::o;9584:32::-;;;-1:-1:-1;;;9584:32:0;;;;;:::o;103:106::-;191:10;103:106;:::o;38380:309::-;38485:4;;:29;;;-1:-1:-1;;;38485:29:0;;38508:4;38485:29;;;;;;38451:4;;;;-1:-1:-1;;;;;38485:4:0;;;;:14;;:29;;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38485:29:0;;-1:-1:-1;38531:15:0;;;38527:131;;;38563:4;;:25;;;-1:-1:-1;;;38563:25:0;;-1:-1:-1;;;;;38563:25:0;;;;;;;;;;;;;;;:4;;;;;:13;;:25;;;;;;;;;;;;;;:4;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38527:131:0;;-1:-1:-1;38527:131:0;;38621:4;;:25;;;-1:-1:-1;;;38621:25:0;;-1:-1:-1;;;;;38621:25:0;;;;;;;;;;;;;;;:4;;;;;:13;;:25;;;;;;;;;;;;;;:4;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;38527:131:0;-1:-1:-1;38677:4:0;;38380:309;-1:-1:-1;;;38380:309:0:o;23269:413::-;23407:7;23443:2;23435:4;:10;;23427:66;;;;-1:-1:-1;;;23427:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23521:1;23512:6;:10;23504:45;;;;;-1:-1:-1;;;23504:45:0;;;;;;;;;;;;-1:-1:-1;;;23504:45:0;;;;;;;;;;;;;;;23562:18;23583:23;23597:4;23603:2;23583:13;:23::i;:::-;23562:44;-1:-1:-1;23626:48:0;23635:38;23650:22;23562:44;23665:6;23650:14;:22::i;:::-;23635:10;;:14;:38::i;:::-;23626:4;;:8;:48::i;:::-;23619:55;23269:413;-1:-1:-1;;;;;23269:413:0:o;36570:1802::-;36640:15;;36618:4;;36640:15;;;;;36639:16;;:39;;-1:-1:-1;36659:14:0;;:19;36639:39;36635:70;;;-1:-1:-1;36700:5:0;36693:12;;36635:70;36726:19;36760;36794:18;36827:19;36861:14;36878;;;;;;;;;-1:-1:-1;;;;;36878:14:0;-1:-1:-1;;;;;36878:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36878:23:0;36936:5;;36878:23;;-1:-1:-1;;;;;;36918:24:0;;;36936:5;;36918:24;36914:207;;;36989:14;;;;;;;;;-1:-1:-1;;;;;36989:14:0;-1:-1:-1;;;;;36989:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36989:28:0;;;;;;;-1:-1:-1;;;;;36958:59:0;;;;-1:-1:-1;36958:59:0;;-1:-1:-1;36914:207:0;;;37081:14;;;;;;;;;-1:-1:-1;;;;;37081:14:0;-1:-1:-1;;;;;37081:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37081:28:0;;;;;;;-1:-1:-1;;;;;37050:59:0;;;;-1:-1:-1;37050:59:0;;-1:-1:-1;36914:207:0;37142:13;;;;;;;;;-1:-1:-1;;;;;37142:13:0;-1:-1:-1;;;;;37142:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37142:22:0;37199:5;;37142:22;;-1:-1:-1;;;;;;37181:24:0;;;37199:5;;37181:24;37177:203;;;37251:13;;;;;;;;;-1:-1:-1;;;;;37251:13:0;-1:-1:-1;;;;;37251:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37251:27:0;;;;;;;-1:-1:-1;;;;;37221:57:0;;;;-1:-1:-1;37221:57:0;;-1:-1:-1;37177:203:0;;;37341:13;;;;;;;;;-1:-1:-1;;;;;37341:13:0;-1:-1:-1;;;;;37341:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37341:27:0;;;;;;;-1:-1:-1;;;;;37311:57:0;;;;-1:-1:-1;37311:57:0;;-1:-1:-1;37177:203:0;37396:16;;;:35;;-1:-1:-1;37416:15:0;;37396:35;37392:66;;;37453:5;37446:12;;;;;;;;;37392:66;37471:16;37490:74;37553:10;37490:58;37536:11;37490:41;37519:11;37490:58;:11;37506:7;37490:15;:24::i;:74::-;37471:93;;37575:20;37598:41;37631:7;37598:28;37611:14;;37598:8;:12;;:28;;;;:::i;:41::-;37575:64;;37671:1;37656:12;:16;:49;;;;;37692:13;;37676:12;:29;;37656:49;37652:688;;;37722:14;37739:40;37770:8;37739:26;37757:7;37739:13;;:17;;:26;;;;:::i;:40::-;37722:57;;37809:14;;37800:6;:23;37796:69;;;-1:-1:-1;37851:14:0;;37796:69;37882:4;;-1:-1:-1;;;;;37882:4:0;:13;37896:12;:10;:12::i;:::-;37910:6;37882:35;;;;;;;;;;;;;-1:-1:-1;;;;;37882:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;37949:14:0;;:26;;37968:6;37949:18;:26::i;:::-;37932:14;:43;38008:15;;:27;;38028:6;38008:19;:27::i;:::-;37990:15;:45;38075:12;:10;:12::i;:::-;38057:45;;;;;;38097:4;38057:45;;;;;;-1:-1:-1;;;;;38057:45:0;;;;;;;;;;;;;;;;38119:10;38153:160;;;;;;;;38195:12;:10;:12::i;:::-;-1:-1:-1;;;;;38153:160:0;;;;;;;;;;;;;38278:15;38153:160;;;;;38119:209;;;;;;;;-1:-1:-1;38119:209:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38119:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;37652:688;38359:5;38352:12;;;;;;;;;36570:1802;:::o;2634:250::-;2692:7;2716:6;2712:47;;-1:-1:-1;2746:1:0;2739:8;;2712:47;2783:5;;;2787:1;2783;:5;:1;2807:5;;;;;:10;2799:56;;;;-1:-1:-1;;;2799:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2892:132;2950:7;2977:39;2981:1;2984;2977:39;;;;;;;;;;;;;;;;;:3;:39::i;2290:136::-;2348:7;2375:43;2379:1;2382;2375:43;;;;;;;;;;;;;;;;;:3;:43::i;38697:174::-;38816:20;38855:8;;;38697:174::o;24609:922::-;24672:4;;24710:13;:6;24721:1;24710:10;:13::i;:::-;24689:34;-1:-1:-1;24734:23:0;24760:22;:6;24689:34;24760:10;:22::i;:::-;25085:4;;:29;;;-1:-1:-1;;;25085:29:0;;25108:4;25085:29;;;;;;24734:48;;-1:-1:-1;25060:22:0;;-1:-1:-1;;;;;25085:4:0;;;;:14;;:29;;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25085:29:0;;-1:-1:-1;25159:33:0;25176:15;25159:16;:33::i;:::-;25274:4;;:29;;;-1:-1:-1;;;25274:29:0;;25297:4;25274:29;;;;;;25253:18;;25274:49;;25308:14;;-1:-1:-1;;;;;25274:4:0;;;;:14;;:29;;;;;;;;;;;;;;;:4;:29;;;;;;;;;;:49;25253:70;;25373:42;25392:10;25404;25373:18;:42::i;:::-;25454:12;:10;:12::i;:::-;25433:66;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25433:66:0;;;;;;;;;;;;;;-1:-1:-1;25519:4:0;;24609:922;-1:-1:-1;;;;;24609:922:0:o;2101:181::-;2159:7;2191:5;;;2215:6;;;;2207:46;;;;;-1:-1:-1;;;2207:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;34665:1824;34749:1;34739:7;:11;34731:46;;;;;-1:-1:-1;;;34731:46:0;;;;;;;;;;;;-1:-1:-1;;;34731:46:0;;;;;;;;;;;;;;;34822:5;;;34815:38;;;-1:-1:-1;;;34815:38:0;;34847:4;34815:38;;;;;;;;34790:22;;-1:-1:-1;;;;;34822:5:0;;;;34815:23;;:38;;;;;;;;;;;;;;34822:5;34815:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34815:38:0;34994:4;;35026:5;;34815:38;;-1:-1:-1;34948:157:0;;-1:-1:-1;;;;;34994:4:0;;;;35026:5;35051:7;35085:4;34948:19;:157::i;:::-;34926:246;;;;-1:-1:-1;;;34926:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35255:5;;;35248:38;;;-1:-1:-1;;;35248:38:0;;35280:4;35248:38;;;;;;;;35223:22;;35248:58;;35291:14;;-1:-1:-1;;;;;35255:5:0;;;;35248:23;;:38;;;;;;;;;;;;;;35255:5;35248:38;;;;;;;;;;:58;35223:83;;35344:1;35327:14;:18;35319:58;;;;;-1:-1:-1;;;35319:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35434:17;;35390:22;;35415:48;;35457:5;;35415:37;;:14;;35434:17;;;;;35415:18;:37::i;:48::-;35519:18;;35390:73;;-1:-1:-1;35474:23:0;;35500:49;;35543:5;;35500:38;;:14;;-1:-1:-1;;;35519:18:0;;;;35500;:38::i;:49::-;35474:75;-1:-1:-1;35560:23:0;35586:55;35474:75;35586:34;:14;35605;35586:18;:34::i;:55::-;35747:5;;35560:81;;-1:-1:-1;;;;;;35747:5:0;35740:22;35763:12;:10;:12::i;:::-;35777:15;35740:53;;;;;;;;;;;;;-1:-1:-1;;;;;35740:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35740:53:0;35718:123;;;;;-1:-1:-1;;;35718:123:0;;;;;;;;;;;;-1:-1:-1;;;35718:123:0;;;;;;;;;;;;;;;35988:5;;36021:4;;35942:163;;-1:-1:-1;;;;;35988:5:0;;;;36021:4;36045:14;36078:12;:10;:12::i;:::-;35942:19;:163::i;:::-;35920:239;;;;;-1:-1:-1;;;35920:239:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36307:5;;36340;;36261:165;;-1:-1:-1;;;;;36307:5:0;;;;36340;36365:15;36399:12;:10;:12::i;36261:165::-;36239:242;;;;;-1:-1:-1;;;36239:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34665:1824;;;;;;:::o;3231:130::-;3289:7;3316:37;3320:1;3323;3316:37;;;;;;;;;;;;;;;;;:3;:37::i;3032:191::-;3118:7;3153:12;3146:5;3138:28;;;;-1:-1:-1;;;3138:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3177:9;3193:1;3189;:5;;;;;;;3032:191;-1:-1:-1;;;;;3032:191:0:o;2434:192::-;2520:7;2556:12;2548:6;;;;2540:29;;;;-1:-1:-1;;;2540:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2592:5:0;;;2434:192::o;23693:437::-;23839:16;;;23853:1;23839:16;;;;;;;;23815:21;;23839:16;;;;;;;;-1:-1:-1;;23876:16:0;;:23;;;-1:-1:-1;;;23876:23:0;;;;23815:40;;-1:-1:-1;;;;;;23876:16:0;;;;:21;;-1:-1:-1;23876:23:0;;;;;;;;;;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23876:23:0;23866:7;;:4;;23871:1;;23866:7;;;;-1:-1:-1;;;;;23866:33:0;;;:7;;;;;;;;;:33;23928:4;;;23910:7;;23928:4;;;23910;;23928;23910:7;;;;;;-1:-1:-1;;;;;23910:23:0;;;:7;;;;;;;;;;:23;;;;23972:16;;:150;;-1:-1:-1;;;23972:150:0;;:16;:150;;;;;;24099:4;23972:150;;;;;;24106:15;23972:150;;;;;;;;;;;;;;;;;;;;;:16;;;;;:67;;24061:9;;23972:16;;24085:4;;24099;;24106:15;;23972:150;;;;;;;;;;;;;:16;:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23693:437;;:::o;24138:463::-;24239:4;;24260:16;;24239:52;;;-1:-1:-1;;;24239:52:0;;-1:-1:-1;;;;;24260:16:0;;;24239:52;;;;;;;;;;;;:4;;;;;:12;;:52;;;;;;;;;;;;;;:4;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24334:16:0;;;24407:4;24334:259;;;-1:-1:-1;;;24334:259:0;;-1:-1:-1;;;;;24407:4:0;;;24334:259;;;;;;;;;;:16;:259;;;;;;;;;;24547:4;24334:259;;;;24567:15;24334:259;;;;;;:16;;;;;:32;;24374:9;;24334:259;;;;;;;;;;;;;;;24374:9;24334:16;:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;24138:463:0:o;25539:744::-;25765:16;;;25779:1;25765:16;;;;;;;;25724:4;;;;25765:16;25779:1;25765:16;;;;;;;;;;-1:-1:-1;25765:16:0;25741:40;;25802:16;25792:4;25797:1;25792:7;;;;;;;;;;;;;:26;-1:-1:-1;;;;;25792:26:0;;;-1:-1:-1;;;;;25792:26:0;;;;;25839:14;25829:4;25834:1;25829:7;;;;;;;;-1:-1:-1;;;;;25829:24:0;;;:7;;;;;;;;;;:24;;;;25921:16;;25866:109;;;-1:-1:-1;;;25866:109:0;;25921:16;;;25866:109;;;;;;;;;;;:32;;;;;;:109;;;;;25829:7;;25866:109;;;;;;25921:16;25866:32;:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26014:16:0;;:237;;-1:-1:-1;;;26014:237:0;;;;;;;;:16;:237;;;;;;-1:-1:-1;;;;;26014:237:0;;;;;;;26225:15;26014:237;;;;;;;;;;;;;;;;;;;;;:16;;;;;:70;;26099:11;;26176:4;;26195:15;;26225;26014:237;;;;;25866:109;26014:237;;;;;;;;:16;:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26271:4:0;;25539:744;-1:-1:-1;;;;;;;;;25539:744:0:o;3369:166::-;3455:7;3491:12;3483:6;3475:29;;;;-1:-1:-1;;;3475:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3526:1;3522;:5;;;;;;;3369:166;-1:-1:-1;;;;3369:166:0:o
Swarm Source
ipfs://798934e6e28a3fb5ec2c5cd7d69b961ebd4647b16be06f70abb290c19fdc1337
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,128.84 | 1.7423 | $5,451.37 |
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.