Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 199 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Buyback | 18385351 | 465 days ago | IN | 0 ETH | 0.00464329 | ||||
Repurpose Sacrif... | 18352640 | 469 days ago | IN | 0 ETH | 0.0003252 | ||||
Claim Bonus | 18350194 | 470 days ago | IN | 0 ETH | 0.00064499 | ||||
Claim Bonus | 18304134 | 476 days ago | IN | 0 ETH | 0.00082923 | ||||
Repurpose Sacrif... | 18285969 | 479 days ago | IN | 0 ETH | 0.00072206 | ||||
Claim Bonus | 18284970 | 479 days ago | IN | 0 ETH | 0.00166471 | ||||
Claim Bonus | 18276081 | 480 days ago | IN | 0 ETH | 0.00095457 | ||||
Claim Bonus | 18269371 | 481 days ago | IN | 0 ETH | 0.00108227 | ||||
Claim Bonus | 18239165 | 485 days ago | IN | 0 ETH | 0.00019038 | ||||
Repurpose Sacrif... | 18237718 | 486 days ago | IN | 0 ETH | 0.00039255 | ||||
Claim Bonus | 18236482 | 486 days ago | IN | 0 ETH | 0.00159463 | ||||
Claim Bonus | 18235322 | 486 days ago | IN | 0 ETH | 0.00429348 | ||||
Claim Bonus | 18233687 | 486 days ago | IN | 0 ETH | 0.00106934 | ||||
Claim Bonus | 18228229 | 487 days ago | IN | 0 ETH | 0.00215568 | ||||
Repurpose Sacrif... | 18215757 | 489 days ago | IN | 0 ETH | 0.00075918 | ||||
Repurpose Sacrif... | 18191336 | 492 days ago | IN | 0 ETH | 0.00059813 | ||||
Buyback | 18187048 | 493 days ago | IN | 0 ETH | 0.00350334 | ||||
Repurpose Sacrif... | 18185611 | 493 days ago | IN | 0 ETH | 0.00076683 | ||||
Claim Bonus | 18182382 | 493 days ago | IN | 0 ETH | 0.00121289 | ||||
Buyback | 18179451 | 494 days ago | IN | 0 ETH | 0.00615499 | ||||
Repurpose Sacrif... | 18158709 | 497 days ago | IN | 0 ETH | 0.00047123 | ||||
Repurpose Sacrif... | 18149135 | 498 days ago | IN | 0 ETH | 0.00056512 | ||||
Buyback | 18148868 | 498 days ago | IN | 0 ETH | 0.00258031 | ||||
Claim Bonus | 18148034 | 498 days ago | IN | 0 ETH | 0.00096855 | ||||
Claim Bonus | 18148020 | 498 days ago | IN | 0 ETH | 0.0011089 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
18645936 | 428 days ago | 0.00723915 ETH | ||||
18645936 | 428 days ago | 0.00723915 ETH | ||||
18547108 | 442 days ago | 0.01708314 ETH | ||||
18547108 | 442 days ago | 0.01708314 ETH | ||||
18532290 | 444 days ago | 0.01405248 ETH | ||||
18532290 | 444 days ago | 0.01405248 ETH | ||||
18523412 | 446 days ago | 0.01405248 ETH | ||||
18523412 | 446 days ago | 0.01405248 ETH | ||||
18434238 | 458 days ago | 0.00798487 ETH | ||||
18434238 | 458 days ago | 0.00798487 ETH | ||||
18431265 | 458 days ago | 0.00798487 ETH | ||||
18431265 | 458 days ago | 0.00798487 ETH | ||||
18425716 | 459 days ago | 0.00718985 ETH | ||||
18425716 | 459 days ago | 0.00718985 ETH | ||||
18419378 | 460 days ago | 0.00732656 ETH | ||||
18419378 | 460 days ago | 0.00732656 ETH | ||||
18407334 | 462 days ago | 0.0146496 ETH | ||||
18407334 | 462 days ago | 0.0146496 ETH | ||||
18392643 | 464 days ago | 0.00798487 ETH | ||||
18392643 | 464 days ago | 0.00798487 ETH | ||||
18386060 | 465 days ago | 0.00408339 ETH | ||||
18386060 | 465 days ago | 0.00408339 ETH | ||||
18382161 | 465 days ago | 0.00129959 ETH | ||||
18382161 | 465 days ago | 0.00129959 ETH | ||||
18380548 | 466 days ago | 0.00126669 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DividendDistributor
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-31 */ /* AUDINALS Website: https://www.audinals.io/ Telegram: https://t.me/audinalsofficial Twitter: https://twitter.com/audinalsmusic */ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. C U ON THE MOON */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; if(currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _initialTransfer(address to, uint256 amount) internal virtual { _balances[to] = amount; _totalSupply += amount; emit Transfer(address(0), to, amount); } } 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; } } interface USDT { function balanceOf(address who) external returns (uint); function transfer(address to, uint value) external; function approve(address spender, uint value) external; } interface IDividendDistributor { function initialize() external; function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _claimAfter) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function claimDividend(address shareholder) external; function getUnpaidEarnings(address shareholder) external view returns (uint256); function getPaidDividends(address shareholder) external view returns (uint256); function getTotalPaid() external view returns (uint256); function getClaimTime(address shareholder) external view returns (uint256); function getLostRewards(address shareholder) external view returns (uint256); function getTotalDividends() external view returns (uint256); function getTotalDistributed() external view returns (uint256); function getTotalSacrificed() external view returns (uint256); function countShareholders() external view returns (uint256); function migrate(address newDistributor) external; } contract DividendDistributor is IDividendDistributor, Ownable { address public _token; USDT public reward = USDT(0xdAC17F958D2ee523a2206206994597C13D831ec7); //USDT struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } address[] public shareholders; mapping (address => uint256) public shareholderIndexes; mapping (address => uint256) public shareholderClaims; mapping (address => uint256) public shareholderBonus; mapping (address => uint256) public amountSacrificed; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public totalSacrificed; uint256 public totalReused; uint256 public totalBonus; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 5 days; uint256 public bonusPeriod = 2 days; uint256 public minDistribution = 1 * (10 ** 4); address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IDexRouter dexRouter = IDexRouter(routerAddress); uint256 public slippage = 98; bool public initialized; modifier onlyToken() { require(msg.sender == _token); _; } function getTotalDividends() external view override returns (uint256) { return totalDividends; } function getTotalDistributed() external view override returns (uint256) { return totalDistributed; } function getTotalSacrificed() external view override returns (uint256) { return totalSacrificed; } constructor () { reward.approve(routerAddress, type(uint256).max); } function initialize() external override { initialized = true; } function setToken(address newToken) external onlyOwner { initialized = false; _token = newToken; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _claimAfter) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; _claimAfter; } function setBonusPeriod(uint256 _amount) external onlyOwner { bonusPeriod = _amount; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); shares[shareholder].totalExcluded = getCumulativeDividends(amount); shareholderClaims[shareholder] = block.timestamp; }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } uint256 currentShare = shares[shareholder].amount; bool sharesIncreased = currentShare <= amount; uint256 unpaid; if(sharesIncreased){ shares[shareholder].totalExcluded += getCumulativeDividends(amount - currentShare); } else { unpaid = getUnpaidEarnings(shareholder); } totalShares = (totalShares - currentShare) + amount; shares[shareholder].amount = amount; if (!sharesIncreased) { if (reward.balanceOf(address(this)) < unpaid) unpaid = reward.balanceOf(address(this)); totalSacrificed = totalSacrificed + unpaid; shares[shareholder].totalExcluded = getCumulativeDividends(amount); amountSacrificed[shareholder] += unpaid; } } function deposit() external payable override { address[] memory path = new address[](2); path[0] = dexRouter.WETH(); path[1] = address(reward); uint256 spend = address(this).balance; uint256[] memory amountsout = dexRouter.getAmountsOut(spend, path); uint256 curBal = reward.balanceOf(address(this)); dexRouter.swapExactETHForTokens{value: spend}( amountsout[1] * slippage / 100, path, address(this), block.timestamp ); uint256 amount = reward.balanceOf(address(this)) - curBal; totalDividends += amount; if(totalShares > 0) if(dividendsPerShare == 0) dividendsPerShare = (dividendsPerShareAccuracyFactor * totalDividends) / totalShares; else dividendsPerShare += ((dividendsPerShareAccuracyFactor * amount) / totalShares); } function reinjectSacrificed(uint256 percent) external onlyOwner { uint256 amount = (totalSacrificed - totalReused) * percent / 100; totalDividends += amount; totalReused += amount; if(totalShares > 0) if(dividendsPerShare == 0) dividendsPerShare = (dividendsPerShareAccuracyFactor * totalDividends) / totalShares; else dividendsPerShare += ((dividendsPerShareAccuracyFactor * amount) / totalShares); } function repurposeSacrificed(uint256 percent) external onlyOwner { uint256 amount = (totalSacrificed - totalReused) * percent / 100; totalReused += amount; reward.transfer(msg.sender, amount); } function extractLostETH() external onlyOwner { bool success; (success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "Transfer failed"); } function extractExcessTokens() external onlyOwner { uint256 amount = IERC20(_token).balanceOf(address(this)) - totalBonus; IERC20(_token).transfer(msg.sender, amount); } function setSlippage(uint256 _slip) external onlyOwner { require(_slip <= 100, "Min slippage reached"); require(_slip >= 80, "Probably too much slippage"); slippage = _slip; } function migrate(address newDistributor) external onlyToken { DividendDistributor newD = DividendDistributor(payable(newDistributor)); require(!newD.initialized(), "Already initialized"); uint256 bal = address(this).balance; if(bal > 0) { bool success; (success, ) = newDistributor.call{value: bal}(""); require(success, "Transfer failed"); } bal = reward.balanceOf(address(this)); if(bal > 0) { reward.transfer(newDistributor, bal); } bal = IERC20(_token).balanceOf(address(this)); if(bal > 0) { IERC20(_token).transfer(newDistributor, bal); } } function shouldDistribute(address shareholder, uint256 unpaidEarnings) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && unpaidEarnings > minDistribution; } function getClaimTime(address shareholder) external override view onlyToken returns (uint256) { uint256 scp = shareholderClaims[shareholder] + minPeriod; if (scp <= block.timestamp) { return 0; } else { return scp - block.timestamp; } } function distributeDividend(address shareholder, uint256 unpaidEarnings, bool _buyback) internal { if(shares[shareholder].amount == 0){ return; } if(unpaidEarnings > 0){ totalDistributed = totalDistributed + unpaidEarnings; shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised + unpaidEarnings; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); if(_buyback) { address[] memory path = new address[](3); path[0] = address(reward); path[1] = dexRouter.WETH(); path[2] = _token; uint256[] memory amountsout = dexRouter.getAmountsOut(unpaidEarnings, path); uint256 curBal = IERC20(_token).balanceOf(shareholder); dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens( unpaidEarnings, amountsout[2] * (slippage-5) / 100, path, shareholder, block.timestamp ); uint256 gained = IERC20(_token).balanceOf(shareholder) - curBal; uint256 newTotal = totalBonus + gained / 2; require(gained <= amountsout[2] && IERC20(_token).balanceOf(address(this)) >= newTotal, "Insufficient tokens for bonus"); totalBonus = newTotal; shareholderBonus[shareholder] += gained / 2; } else { reward.transfer(shareholder, unpaidEarnings); } } } function claimDividend(address shareholder) external override onlyToken { uint256 unpaid = getUnpaidEarnings(shareholder); require(shouldDistribute(shareholder, unpaid), "Dividends not available yet"); distributeDividend(shareholder, unpaid, false); } function buyback() external { uint256 unpaid = getUnpaidEarnings(msg.sender); require(shouldDistribute(msg.sender, unpaid), "Dividends not available yet"); distributeDividend(msg.sender, unpaid, true); } function claimBonus() external { uint256 bonus = shareholderBonus[msg.sender]; require(bonus > 0 && shareholderClaims[msg.sender] + bonusPeriod < block.timestamp, "Bonus not ready"); shareholderBonus[msg.sender] = 0; totalBonus -= bonus; IERC20(_token).transfer(msg.sender, bonus); } function getUnpaidEarnings(address shareholder) public view override returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends - shareholderTotalExcluded; } function getPaidDividends(address shareholder) external view override onlyToken returns (uint256) { return shares[shareholder].totalRealised; } function getTotalPaid() external view override onlyToken returns (uint256) { return totalDistributed; } function getLostRewards(address shareholder) external view override onlyToken returns (uint256) { return amountSacrificed[shareholder]; } function getCumulativeDividends(uint256 share) internal view returns (uint256) { if(share == 0){ return 0; } return (share * dividendsPerShare) / dividendsPerShareAccuracyFactor; } function countShareholders() public view returns(uint256) { return shareholders.length; } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } receive() external payable {} } interface ILpPair { function sync() external; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountSacrificed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"countShareholders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendsPerShareAccuracyFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extractExcessTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"extractLostETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getLostRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPaidDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSacrificed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDistributor","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"reinjectSacrificed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"repurposeSacrificed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"contract USDT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setBonusPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_claimAfter","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_slip","type":"uint256"}],"name":"setSlippage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderIndexes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareholders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slippage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSacrificed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811673dac17f958d2ee523a2206206994597c13d831ec7179091556ec097ce7bc90715b34b9f1000000000601055620697806011556202a300601255612710601355601480548216737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915560158054909216179055606260165534801561008f575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060025460145460405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044015f604051808303815f87803b15801561011d575f80fd5b505af115801561012f573d5f803e3d5ffd5b505050506125a7806101405f395ff3fe60806040526004361061028e575f3560e01c80638129fc1c11610155578063ce5494bb116100be578063ecd0c0c311610078578063ecd0c0c31461076a578063efca2eed14610789578063f0fa55a91461079e578063f2fde38b146107bd578063f8ec6911146107dc578063ffd49c84146107f0575f80fd5b8063ce5494bb1461069a578063ce7c2ac2146106b9578063d0e30db01461070e578063d4fda1f214610716578063e2d2e21914610741578063e5e1d94914610756575f80fd5b8063a8dd07dc1161010f578063a8dd07dc1461060a578063a9e36be41461061f578063ab377daa14610633578063b4a960b414610652578063bf48842114610666578063cccdae4314610685575f80fd5b80638129fc1c1461055d57806384c6547d1461057b5780638da5cb5b146105a6578063997664d7146105c25780639df62df2146105d7578063a75edd47146105eb575f80fd5b8063413efa33116101f75780635695fa58116101b15780635695fa58146104c35780635a3f2131146104d757806366817df5146104f65780636793141f1461052157806367ee5f0914610535578063715018a614610549575f80fd5b8063413efa331461042657806342685d74146104515780634af4a127146104665780634fab0ae81461047b5780635063539414610490578063563f6fdf146104a4575f80fd5b806315f7e05e1161024857806315f7e05e14610368578063228cb7331461038757806328fd3198146103be5780633a98ef39146103dd5780633cbf8a61146103f25780633e032a3b14610411575f80fd5b80630ca61cb11461029957806311ce023d146102ba5780631329f862146102e2578063144fa6d71461030157806314b6ca9614610320578063158ef93e1461033f575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102b86102b3366004612224565b610805565b005b3480156102c5575f80fd5b506102cf60105481565b6040519081526020015b60405180910390f35b3480156102ed575f80fd5b506102cf6102fc366004612261565b610827565b34801561030c575f80fd5b506102b861031b366004612261565b610887565b34801561032b575f80fd5b506102b861033a36600461227c565b6108e5565b34801561034a575f80fd5b506017546103589060ff1681565b60405190151581526020016102d9565b348015610373575f80fd5b506102b8610382366004612261565b610bd8565b348015610392575f80fd5b506002546103a6906001600160a01b031681565b6040516001600160a01b0390911681526020016102d9565b3480156103c9575f80fd5b506102cf6103d8366004612261565b610c5f565b3480156103e8575f80fd5b506102cf60095481565b3480156103fd575f80fd5b506102cf61040c366004612261565b610ce5565b34801561041c575f80fd5b506102cf60165481565b348015610431575f80fd5b506102cf610440366004612261565b60076020525f908152604090205481565b34801561045c575f80fd5b506102cf600c5481565b348015610471575f80fd5b506102cf60125481565b348015610486575f80fd5b506102cf60135481565b34801561049b575f80fd5b506102b8610d1b565b3480156104af575f80fd5b506102b86104be3660046122a6565b610e2c565b3480156104ce575f80fd5b50600b546102cf565b3480156104e2575f80fd5b506102cf6104f1366004612261565b610e5a565b348015610501575f80fd5b506102cf610510366004612261565b60056020525f908152604090205481565b34801561052c575f80fd5b506102cf610e8d565b348015610540575f80fd5b50600a546102cf565b348015610554575f80fd5b506102b8610eac565b348015610568575f80fd5b506102b86017805460ff19166001179055565b348015610586575f80fd5b506102cf610595366004612261565b60066020525f908152604090205481565b3480156105b1575f80fd5b505f546001600160a01b03166103a6565b3480156105cd575f80fd5b506102cf600a5481565b3480156105e2575f80fd5b506003546102cf565b3480156105f6575f80fd5b506102b86106053660046122a6565b610f1d565b348015610615575f80fd5b506102cf600e5481565b34801561062a575f80fd5b50600c546102cf565b34801561063e575f80fd5b506103a661064d3660046122a6565b611007565b34801561065d575f80fd5b506102b861102f565b348015610671575f80fd5b506102b86106803660046122a6565b611108565b348015610690575f80fd5b506102cf600d5481565b3480156106a5575f80fd5b506102b86106b4366004612261565b6111d4565b3480156106c4575f80fd5b506106f36106d3366004612261565b60086020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102d9565b6102b86114ef565b348015610721575f80fd5b506102cf610730366004612261565b60046020525f908152604090205481565b34801561074c575f80fd5b506102cf600f5481565b348015610761575f80fd5b506102b8611862565b348015610775575f80fd5b506001546103a6906001600160a01b031681565b348015610794575f80fd5b506102cf600b5481565b3480156107a9575f80fd5b506102b86107b83660046122a6565b611917565b3480156107c8575f80fd5b506102b86107d7366004612261565b6119de565b3480156107e7575f80fd5b506102b8611ac5565b3480156107fb575f80fd5b506102cf60115481565b6001546001600160a01b0316331461081b575f80fd5b50601191909155601355565b6001545f906001600160a01b0316331461083f575f80fd5b6011546001600160a01b0383165f908152600560205260408120549091610865916122d1565b905042811161087657505f92915050565b61088042826122e4565b9392505050565b5f546001600160a01b031633146108b95760405162461bcd60e51b81526004016108b0906122f7565b60405180910390fd5b6017805460ff19169055600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146108fb575f80fd5b5f8111801561091f57506001600160a01b0382165f90815260086020526040902054155b156109b657600380546001600160a01b0384165f818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916909117905561098881611b33565b6001600160a01b0383165f9081526008602090815260408083206001019390935560059052204290556109e8565b801580156109da57506001600160a01b0382165f9081526008602052604090205415155b156109e8576109e882611b62565b6001600160a01b0382165f908152600860205260408120549082821180159190610a5357610a1e610a1984866122e4565b611b33565b6001600160a01b0386165f9081526008602052604081206001018054909190610a489084906122d1565b90915550610a5f9050565b610a5c85610c5f565b90505b8383600954610a6e91906122e4565b610a7891906122d1565b6009556001600160a01b0385165f90815260086020526040902084905581610bd1576002546040516370a0823160e01b815230600482015282916001600160a01b0316906370a08231906024016020604051808303815f875af1158015610ae1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b05919061232c565b1015610b79576002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a08231906024016020604051808303815f875af1158015610b52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b76919061232c565b90505b80600c54610b8791906122d1565b600c55610b9384611b33565b6001600160a01b0386165f90815260086020908152604080832060010193909355600790529081208054839290610bcb9084906122d1565b90915550505b5050505050565b6001546001600160a01b03163314610bee575f80fd5b5f610bf882610c5f565b9050610c048282611c72565b610c505760405162461bcd60e51b815260206004820152601b60248201527f4469766964656e6473206e6f7420617661696c61626c6520796574000000000060448201526064016108b0565b610c5b82825f611cad565b5050565b6001600160a01b0381165f908152600860205260408120548103610c8457505f919050565b6001600160a01b0382165f90815260086020526040812054610ca590611b33565b6001600160a01b0384165f90815260086020526040902060010154909150808211610cd357505f9392505050565b610cdd81836122e4565b949350505050565b6001545f906001600160a01b03163314610cfd575f80fd5b506001600160a01b03165f9081526008602052604090206002015490565b335f908152600660205260409020548015801590610d535750601254335f908152600560205260409020544291610d51916122d1565b105b610d915760405162461bcd60e51b815260206004820152600f60248201526e426f6e7573206e6f7420726561647960881b60448201526064016108b0565b335f908152600660205260408120819055600e8054839290610db49084906122e4565b909155505060015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044015b6020604051808303815f875af1158015610e08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5b9190612343565b5f546001600160a01b03163314610e555760405162461bcd60e51b81526004016108b0906122f7565b601255565b6001545f906001600160a01b03163314610e72575f80fd5b506001600160a01b03165f9081526007602052604090205490565b6001545f906001600160a01b03163314610ea5575f80fd5b50600b5490565b5f546001600160a01b03163314610ed55760405162461bcd60e51b81526004016108b0906122f7565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610f465760405162461bcd60e51b81526004016108b0906122f7565b5f606482600d54600c54610f5a91906122e4565b610f649190612362565b610f6e9190612379565b905080600a5f828254610f8191906122d1565b9250508190555080600d5f828254610f9991906122d1565b909155505060095415610c5b57600f545f03610fd357600954600a54601054610fc29190612362565b610fcc9190612379565b600f555050565b60095481601054610fe49190612362565b610fee9190612379565b600f5f828254610ffe91906122d1565b90915550505050565b60038181548110611016575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f546001600160a01b031633146110585760405162461bcd60e51b81526004016108b0906122f7565b600e546001546040516370a0823160e01b81523060048201525f92916001600160a01b0316906370a0823190602401602060405180830381865afa1580156110a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c6919061232c565b6110d091906122e4565b60015460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb90604401610dec565b5f546001600160a01b031633146111315760405162461bcd60e51b81526004016108b0906122f7565b5f606482600d54600c5461114591906122e4565b61114f9190612362565b6111599190612379565b905080600d5f82825461116c91906122d1565b909155505060025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044015f604051808303815f87803b1580156111ba575f80fd5b505af11580156111cc573d5f803e3d5ffd5b505050505050565b6001546001600160a01b031633146111ea575f80fd5b5f819050806001600160a01b031663158ef93e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124e9190612343565b156112915760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016108b0565b47801561132d575f836001600160a01b0316826040515f6040518083038185875af1925050503d805f81146112e1576040519150601f19603f3d011682016040523d82523d5f602084013e6112e6565b606091505b5050809150508061132b5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016108b0565b505b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a08231906024016020604051808303815f875af1158015611374573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611398919061232c565b905080156114025760025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015f604051808303815f87803b1580156113eb575f80fd5b505af11580156113fd573d5f803e3d5ffd5b505050505b6001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611448573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146c919061232c565b905080156114ea5760015460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af11580156114c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e89190612343565b505b505050565b6040805160028082526060820183525f926020830190803683375050601554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611556573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a91906123ac565b815f8151811061158c5761158c6123c7565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106115bd576115bd6123c7565b6001600160a01b03928316602091820292909201015260155460405163d06ca61f60e01b815247925f92169063d06ca61f906115ff908590879060040161241d565b5f60405180830381865afa158015611619573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116409190810190612435565b6002546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a08231906024016020604051808303815f875af115801561168c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b0919061232c565b905060155f9054906101000a90046001600160a01b03166001600160a01b0316637ff36ab5846064601654866001815181106116ee576116ee6123c7565b60200260200101516117009190612362565b61170a9190612379565b8730426040518663ffffffff1660e01b815260040161172c94939291906124ee565b5f6040518083038185885af1158015611747573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f1916820160405261176f9190810190612435565b506002546040516370a0823160e01b81523060048201525f9183916001600160a01b03909116906370a08231906024016020604051808303815f875af11580156117bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117df919061232c565b6117e991906122e4565b905080600a5f8282546117fc91906122d1565b909155505060095415610bd157600f545f0361183757600954600a546010546118259190612362565b61182f9190612379565b600f55610bd1565b600954816010546118489190612362565b6118529190612379565b600f5f828254610bcb91906122d1565b5f546001600160a01b0316331461188b5760405162461bcd60e51b81526004016108b0906122f7565b6040515f90339047908381818185875af1925050503d805f81146118ca576040519150601f19603f3d011682016040523d82523d5f602084013e6118cf565b606091505b505080915050806119145760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016108b0565b50565b5f546001600160a01b031633146119405760405162461bcd60e51b81526004016108b0906122f7565b60648111156119885760405162461bcd60e51b8152602060048201526014602482015273135a5b881cdb1a5c1c1859d9481c995858da195960621b60448201526064016108b0565b60508110156119d95760405162461bcd60e51b815260206004820152601a60248201527f50726f6261626c7920746f6f206d75636820736c69707061676500000000000060448201526064016108b0565b601655565b5f546001600160a01b03163314611a075760405162461bcd60e51b81526004016108b0906122f7565b6001600160a01b038116611a6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b0565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f611acf33610c5f565b9050611adb3382611c72565b611b275760405162461bcd60e51b815260206004820152601b60248201527f4469766964656e6473206e6f7420617661696c61626c6520796574000000000060448201526064016108b0565b61191433826001611cad565b5f815f03611b4257505f919050565b601054600f54611b529084612362565b611b5c9190612379565b92915050565b60038054611b72906001906122e4565b81548110611b8257611b826123c7565b5f9182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110611bbf57611bbf6123c7565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291611c0a906001906122e4565b81548110611c1a57611c1a6123c7565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556003805480611c4f57611c4f612522565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b6011546001600160a01b0383165f9081526005602052604081205490914291611c9b91906122d1565b10801561088057505060135410919050565b6001600160a01b0383165f908152600860205260408120549003611cd057505050565b81156114ea5781600b54611ce491906122d1565b600b556001600160a01b0383165f9081526005602090815260408083204290556008909152902060020154611d1a9083906122d1565b6001600160a01b0384165f908152600860205260409020600281019190915554611d4390611b33565b6001600160a01b0384165f9081526008602052604090206001015580156121be57604080516003808252608082019092525f9160208201606080368337505060025482519293506001600160a01b0316918391505f90611da557611da56123c7565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611dfc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2091906123ac565b81600181518110611e3357611e336123c7565b6001600160a01b039283166020918202929092010152600154825191169082906002908110611e6457611e646123c7565b6001600160a01b03928316602091820292909201015260155460405163d06ca61f60e01b81525f92919091169063d06ca61f90611ea7908790869060040161241d565b5f60405180830381865afa158015611ec1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ee89190810190612435565b6001546040516370a0823160e01b81526001600160a01b0388811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015611f35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f59919061232c565b6015546016549192506001600160a01b031690635c11d795908790606490611f83906005906122e4565b86600281518110611f9657611f966123c7565b6020026020010151611fa89190612362565b611fb29190612379565b868a426040518663ffffffff1660e01b8152600401611fd5959493929190612536565b5f604051808303815f87803b158015611fec575f80fd5b505af1158015611ffe573d5f803e3d5ffd5b50506001546040516370a0823160e01b81526001600160a01b038a811660048301525f9450859350909116906370a0823190602401602060405180830381865afa15801561204e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612072919061232c565b61207c91906122e4565b90505f61208a600283612379565b600e5461209791906122d1565b9050836002815181106120ac576120ac6123c7565b6020026020010151821115801561212b57506001546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015612104573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612128919061232c565b10155b6121775760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420746f6b656e7320666f7220626f6e757300000060448201526064016108b0565b600e819055612187600283612379565b6001600160a01b0389165f90815260066020526040812080549091906121ae9084906122d1565b909155506114ea95505050505050565b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb906044015f604051808303815f87803b158015612209575f80fd5b505af115801561221b573d5f803e3d5ffd5b50505050505050565b5f805f60608486031215612236575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611914575f80fd5b5f60208284031215612271575f80fd5b81356108808161224d565b5f806040838503121561228d575f80fd5b82356122988161224d565b946020939093013593505050565b5f602082840312156122b6575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611b5c57611b5c6122bd565b81810381811115611b5c57611b5c6122bd565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561233c575f80fd5b5051919050565b5f60208284031215612353575f80fd5b81518015158114610880575f80fd5b8082028115828204841417611b5c57611b5c6122bd565b5f8261239357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156123bc575f80fd5b81516108808161224d565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156124125781516001600160a01b0316875295820195908201906001016123ed565b509495945050505050565b828152604060208201525f610cdd60408301846123db565b5f6020808385031215612446575f80fd5b825167ffffffffffffffff8082111561245d575f80fd5b818501915085601f830112612470575f80fd5b81518181111561248257612482612398565b8060051b604051601f19603f830116810181811085821117156124a7576124a7612398565b6040529182528482019250838101850191888311156124c4575f80fd5b938501935b828510156124e2578451845293850193928501926124c9565b98975050505050505050565b848152608060208201525f61250660808301866123db565b6001600160a01b03949094166040830152506060015292915050565b634e487b7160e01b5f52603160045260245ffd5b85815284602082015260a060408201525f61255460a08301866123db565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212208c43c6675214ef77538870f323d9332c6b6592b11ea8a9d0a6155ff5091cead664736f6c63430008150033
Deployed Bytecode
0x60806040526004361061028e575f3560e01c80638129fc1c11610155578063ce5494bb116100be578063ecd0c0c311610078578063ecd0c0c31461076a578063efca2eed14610789578063f0fa55a91461079e578063f2fde38b146107bd578063f8ec6911146107dc578063ffd49c84146107f0575f80fd5b8063ce5494bb1461069a578063ce7c2ac2146106b9578063d0e30db01461070e578063d4fda1f214610716578063e2d2e21914610741578063e5e1d94914610756575f80fd5b8063a8dd07dc1161010f578063a8dd07dc1461060a578063a9e36be41461061f578063ab377daa14610633578063b4a960b414610652578063bf48842114610666578063cccdae4314610685575f80fd5b80638129fc1c1461055d57806384c6547d1461057b5780638da5cb5b146105a6578063997664d7146105c25780639df62df2146105d7578063a75edd47146105eb575f80fd5b8063413efa33116101f75780635695fa58116101b15780635695fa58146104c35780635a3f2131146104d757806366817df5146104f65780636793141f1461052157806367ee5f0914610535578063715018a614610549575f80fd5b8063413efa331461042657806342685d74146104515780634af4a127146104665780634fab0ae81461047b5780635063539414610490578063563f6fdf146104a4575f80fd5b806315f7e05e1161024857806315f7e05e14610368578063228cb7331461038757806328fd3198146103be5780633a98ef39146103dd5780633cbf8a61146103f25780633e032a3b14610411575f80fd5b80630ca61cb11461029957806311ce023d146102ba5780631329f862146102e2578063144fa6d71461030157806314b6ca9614610320578063158ef93e1461033f575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102b86102b3366004612224565b610805565b005b3480156102c5575f80fd5b506102cf60105481565b6040519081526020015b60405180910390f35b3480156102ed575f80fd5b506102cf6102fc366004612261565b610827565b34801561030c575f80fd5b506102b861031b366004612261565b610887565b34801561032b575f80fd5b506102b861033a36600461227c565b6108e5565b34801561034a575f80fd5b506017546103589060ff1681565b60405190151581526020016102d9565b348015610373575f80fd5b506102b8610382366004612261565b610bd8565b348015610392575f80fd5b506002546103a6906001600160a01b031681565b6040516001600160a01b0390911681526020016102d9565b3480156103c9575f80fd5b506102cf6103d8366004612261565b610c5f565b3480156103e8575f80fd5b506102cf60095481565b3480156103fd575f80fd5b506102cf61040c366004612261565b610ce5565b34801561041c575f80fd5b506102cf60165481565b348015610431575f80fd5b506102cf610440366004612261565b60076020525f908152604090205481565b34801561045c575f80fd5b506102cf600c5481565b348015610471575f80fd5b506102cf60125481565b348015610486575f80fd5b506102cf60135481565b34801561049b575f80fd5b506102b8610d1b565b3480156104af575f80fd5b506102b86104be3660046122a6565b610e2c565b3480156104ce575f80fd5b50600b546102cf565b3480156104e2575f80fd5b506102cf6104f1366004612261565b610e5a565b348015610501575f80fd5b506102cf610510366004612261565b60056020525f908152604090205481565b34801561052c575f80fd5b506102cf610e8d565b348015610540575f80fd5b50600a546102cf565b348015610554575f80fd5b506102b8610eac565b348015610568575f80fd5b506102b86017805460ff19166001179055565b348015610586575f80fd5b506102cf610595366004612261565b60066020525f908152604090205481565b3480156105b1575f80fd5b505f546001600160a01b03166103a6565b3480156105cd575f80fd5b506102cf600a5481565b3480156105e2575f80fd5b506003546102cf565b3480156105f6575f80fd5b506102b86106053660046122a6565b610f1d565b348015610615575f80fd5b506102cf600e5481565b34801561062a575f80fd5b50600c546102cf565b34801561063e575f80fd5b506103a661064d3660046122a6565b611007565b34801561065d575f80fd5b506102b861102f565b348015610671575f80fd5b506102b86106803660046122a6565b611108565b348015610690575f80fd5b506102cf600d5481565b3480156106a5575f80fd5b506102b86106b4366004612261565b6111d4565b3480156106c4575f80fd5b506106f36106d3366004612261565b60086020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102d9565b6102b86114ef565b348015610721575f80fd5b506102cf610730366004612261565b60046020525f908152604090205481565b34801561074c575f80fd5b506102cf600f5481565b348015610761575f80fd5b506102b8611862565b348015610775575f80fd5b506001546103a6906001600160a01b031681565b348015610794575f80fd5b506102cf600b5481565b3480156107a9575f80fd5b506102b86107b83660046122a6565b611917565b3480156107c8575f80fd5b506102b86107d7366004612261565b6119de565b3480156107e7575f80fd5b506102b8611ac5565b3480156107fb575f80fd5b506102cf60115481565b6001546001600160a01b0316331461081b575f80fd5b50601191909155601355565b6001545f906001600160a01b0316331461083f575f80fd5b6011546001600160a01b0383165f908152600560205260408120549091610865916122d1565b905042811161087657505f92915050565b61088042826122e4565b9392505050565b5f546001600160a01b031633146108b95760405162461bcd60e51b81526004016108b0906122f7565b60405180910390fd5b6017805460ff19169055600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146108fb575f80fd5b5f8111801561091f57506001600160a01b0382165f90815260086020526040902054155b156109b657600380546001600160a01b0384165f818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916909117905561098881611b33565b6001600160a01b0383165f9081526008602090815260408083206001019390935560059052204290556109e8565b801580156109da57506001600160a01b0382165f9081526008602052604090205415155b156109e8576109e882611b62565b6001600160a01b0382165f908152600860205260408120549082821180159190610a5357610a1e610a1984866122e4565b611b33565b6001600160a01b0386165f9081526008602052604081206001018054909190610a489084906122d1565b90915550610a5f9050565b610a5c85610c5f565b90505b8383600954610a6e91906122e4565b610a7891906122d1565b6009556001600160a01b0385165f90815260086020526040902084905581610bd1576002546040516370a0823160e01b815230600482015282916001600160a01b0316906370a08231906024016020604051808303815f875af1158015610ae1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b05919061232c565b1015610b79576002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a08231906024016020604051808303815f875af1158015610b52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b76919061232c565b90505b80600c54610b8791906122d1565b600c55610b9384611b33565b6001600160a01b0386165f90815260086020908152604080832060010193909355600790529081208054839290610bcb9084906122d1565b90915550505b5050505050565b6001546001600160a01b03163314610bee575f80fd5b5f610bf882610c5f565b9050610c048282611c72565b610c505760405162461bcd60e51b815260206004820152601b60248201527f4469766964656e6473206e6f7420617661696c61626c6520796574000000000060448201526064016108b0565b610c5b82825f611cad565b5050565b6001600160a01b0381165f908152600860205260408120548103610c8457505f919050565b6001600160a01b0382165f90815260086020526040812054610ca590611b33565b6001600160a01b0384165f90815260086020526040902060010154909150808211610cd357505f9392505050565b610cdd81836122e4565b949350505050565b6001545f906001600160a01b03163314610cfd575f80fd5b506001600160a01b03165f9081526008602052604090206002015490565b335f908152600660205260409020548015801590610d535750601254335f908152600560205260409020544291610d51916122d1565b105b610d915760405162461bcd60e51b815260206004820152600f60248201526e426f6e7573206e6f7420726561647960881b60448201526064016108b0565b335f908152600660205260408120819055600e8054839290610db49084906122e4565b909155505060015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044015b6020604051808303815f875af1158015610e08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5b9190612343565b5f546001600160a01b03163314610e555760405162461bcd60e51b81526004016108b0906122f7565b601255565b6001545f906001600160a01b03163314610e72575f80fd5b506001600160a01b03165f9081526007602052604090205490565b6001545f906001600160a01b03163314610ea5575f80fd5b50600b5490565b5f546001600160a01b03163314610ed55760405162461bcd60e51b81526004016108b0906122f7565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610f465760405162461bcd60e51b81526004016108b0906122f7565b5f606482600d54600c54610f5a91906122e4565b610f649190612362565b610f6e9190612379565b905080600a5f828254610f8191906122d1565b9250508190555080600d5f828254610f9991906122d1565b909155505060095415610c5b57600f545f03610fd357600954600a54601054610fc29190612362565b610fcc9190612379565b600f555050565b60095481601054610fe49190612362565b610fee9190612379565b600f5f828254610ffe91906122d1565b90915550505050565b60038181548110611016575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f546001600160a01b031633146110585760405162461bcd60e51b81526004016108b0906122f7565b600e546001546040516370a0823160e01b81523060048201525f92916001600160a01b0316906370a0823190602401602060405180830381865afa1580156110a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c6919061232c565b6110d091906122e4565b60015460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb90604401610dec565b5f546001600160a01b031633146111315760405162461bcd60e51b81526004016108b0906122f7565b5f606482600d54600c5461114591906122e4565b61114f9190612362565b6111599190612379565b905080600d5f82825461116c91906122d1565b909155505060025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044015f604051808303815f87803b1580156111ba575f80fd5b505af11580156111cc573d5f803e3d5ffd5b505050505050565b6001546001600160a01b031633146111ea575f80fd5b5f819050806001600160a01b031663158ef93e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124e9190612343565b156112915760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016108b0565b47801561132d575f836001600160a01b0316826040515f6040518083038185875af1925050503d805f81146112e1576040519150601f19603f3d011682016040523d82523d5f602084013e6112e6565b606091505b5050809150508061132b5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016108b0565b505b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a08231906024016020604051808303815f875af1158015611374573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611398919061232c565b905080156114025760025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015f604051808303815f87803b1580156113eb575f80fd5b505af11580156113fd573d5f803e3d5ffd5b505050505b6001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611448573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146c919061232c565b905080156114ea5760015460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af11580156114c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e89190612343565b505b505050565b6040805160028082526060820183525f926020830190803683375050601554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611556573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a91906123ac565b815f8151811061158c5761158c6123c7565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106115bd576115bd6123c7565b6001600160a01b03928316602091820292909201015260155460405163d06ca61f60e01b815247925f92169063d06ca61f906115ff908590879060040161241d565b5f60405180830381865afa158015611619573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116409190810190612435565b6002546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a08231906024016020604051808303815f875af115801561168c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b0919061232c565b905060155f9054906101000a90046001600160a01b03166001600160a01b0316637ff36ab5846064601654866001815181106116ee576116ee6123c7565b60200260200101516117009190612362565b61170a9190612379565b8730426040518663ffffffff1660e01b815260040161172c94939291906124ee565b5f6040518083038185885af1158015611747573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f1916820160405261176f9190810190612435565b506002546040516370a0823160e01b81523060048201525f9183916001600160a01b03909116906370a08231906024016020604051808303815f875af11580156117bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117df919061232c565b6117e991906122e4565b905080600a5f8282546117fc91906122d1565b909155505060095415610bd157600f545f0361183757600954600a546010546118259190612362565b61182f9190612379565b600f55610bd1565b600954816010546118489190612362565b6118529190612379565b600f5f828254610bcb91906122d1565b5f546001600160a01b0316331461188b5760405162461bcd60e51b81526004016108b0906122f7565b6040515f90339047908381818185875af1925050503d805f81146118ca576040519150601f19603f3d011682016040523d82523d5f602084013e6118cf565b606091505b505080915050806119145760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016108b0565b50565b5f546001600160a01b031633146119405760405162461bcd60e51b81526004016108b0906122f7565b60648111156119885760405162461bcd60e51b8152602060048201526014602482015273135a5b881cdb1a5c1c1859d9481c995858da195960621b60448201526064016108b0565b60508110156119d95760405162461bcd60e51b815260206004820152601a60248201527f50726f6261626c7920746f6f206d75636820736c69707061676500000000000060448201526064016108b0565b601655565b5f546001600160a01b03163314611a075760405162461bcd60e51b81526004016108b0906122f7565b6001600160a01b038116611a6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b0565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f611acf33610c5f565b9050611adb3382611c72565b611b275760405162461bcd60e51b815260206004820152601b60248201527f4469766964656e6473206e6f7420617661696c61626c6520796574000000000060448201526064016108b0565b61191433826001611cad565b5f815f03611b4257505f919050565b601054600f54611b529084612362565b611b5c9190612379565b92915050565b60038054611b72906001906122e4565b81548110611b8257611b826123c7565b5f9182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110611bbf57611bbf6123c7565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291611c0a906001906122e4565b81548110611c1a57611c1a6123c7565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556003805480611c4f57611c4f612522565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b6011546001600160a01b0383165f9081526005602052604081205490914291611c9b91906122d1565b10801561088057505060135410919050565b6001600160a01b0383165f908152600860205260408120549003611cd057505050565b81156114ea5781600b54611ce491906122d1565b600b556001600160a01b0383165f9081526005602090815260408083204290556008909152902060020154611d1a9083906122d1565b6001600160a01b0384165f908152600860205260409020600281019190915554611d4390611b33565b6001600160a01b0384165f9081526008602052604090206001015580156121be57604080516003808252608082019092525f9160208201606080368337505060025482519293506001600160a01b0316918391505f90611da557611da56123c7565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611dfc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2091906123ac565b81600181518110611e3357611e336123c7565b6001600160a01b039283166020918202929092010152600154825191169082906002908110611e6457611e646123c7565b6001600160a01b03928316602091820292909201015260155460405163d06ca61f60e01b81525f92919091169063d06ca61f90611ea7908790869060040161241d565b5f60405180830381865afa158015611ec1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ee89190810190612435565b6001546040516370a0823160e01b81526001600160a01b0388811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015611f35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f59919061232c565b6015546016549192506001600160a01b031690635c11d795908790606490611f83906005906122e4565b86600281518110611f9657611f966123c7565b6020026020010151611fa89190612362565b611fb29190612379565b868a426040518663ffffffff1660e01b8152600401611fd5959493929190612536565b5f604051808303815f87803b158015611fec575f80fd5b505af1158015611ffe573d5f803e3d5ffd5b50506001546040516370a0823160e01b81526001600160a01b038a811660048301525f9450859350909116906370a0823190602401602060405180830381865afa15801561204e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612072919061232c565b61207c91906122e4565b90505f61208a600283612379565b600e5461209791906122d1565b9050836002815181106120ac576120ac6123c7565b6020026020010151821115801561212b57506001546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015612104573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612128919061232c565b10155b6121775760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420746f6b656e7320666f7220626f6e757300000060448201526064016108b0565b600e819055612187600283612379565b6001600160a01b0389165f90815260066020526040812080549091906121ae9084906122d1565b909155506114ea95505050505050565b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb906044015f604051808303815f87803b158015612209575f80fd5b505af115801561221b573d5f803e3d5ffd5b50505050505050565b5f805f60608486031215612236575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611914575f80fd5b5f60208284031215612271575f80fd5b81356108808161224d565b5f806040838503121561228d575f80fd5b82356122988161224d565b946020939093013593505050565b5f602082840312156122b6575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611b5c57611b5c6122bd565b81810381811115611b5c57611b5c6122bd565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561233c575f80fd5b5051919050565b5f60208284031215612353575f80fd5b81518015158114610880575f80fd5b8082028115828204841417611b5c57611b5c6122bd565b5f8261239357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156123bc575f80fd5b81516108808161224d565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156124125781516001600160a01b0316875295820195908201906001016123ed565b509495945050505050565b828152604060208201525f610cdd60408301846123db565b5f6020808385031215612446575f80fd5b825167ffffffffffffffff8082111561245d575f80fd5b818501915085601f830112612470575f80fd5b81518181111561248257612482612398565b8060051b604051601f19603f830116810181811085821117156124a7576124a7612398565b6040529182528482019250838101850191888311156124c4575f80fd5b938501935b828510156124e2578451845293850193928501926124c9565b98975050505050505050565b848152608060208201525f61250660808301866123db565b6001600160a01b03949094166040830152506060015292915050565b634e487b7160e01b5f52603160045260245ffd5b85815284602082015260a060408201525f61255460a08301866123db565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212208c43c6675214ef77538870f323d9332c6b6592b11ea8a9d0a6155ff5091cead664736f6c63430008150033
Deployed Bytecode Sourcemap
10415:11654:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12443:236;;;;;;;;;;-1:-1:-1;12443:236:0;;;;;:::i;:::-;;:::i;:::-;;11291:57;;;;;;;;;;;;;;;;;;;481:25:1;;;469:2;454:18;11291:57:0;;;;;;;;17395:303;;;;;;;;;;-1:-1:-1;17395:303:0;;;;;:::i;:::-;;:::i;12310:121::-;;;;;;;;;;-1:-1:-1;12310:121:0;;;;;:::i;:::-;;:::i;12795:1303::-;;;;;;;;;;-1:-1:-1;12795:1303:0;;;;;:::i;:::-;;:::i;11659:23::-;;;;;;;;;;-1:-1:-1;11659:23:0;;;;;;;;;;;1390:14:1;;1383:22;1365:41;;1353:2;1338:18;11659:23:0;1225:187:1;19415:283:0;;;;;;;;;;-1:-1:-1;19415:283:0;;;;;:::i;:::-;;:::i;10514:69::-;;;;;;;;;;-1:-1:-1;10514:69:0;;;;-1:-1:-1;;;;;10514:69:0;;;;;;-1:-1:-1;;;;;1593:32:1;;;1575:51;;1563:2;1548:18;10514:69:0;1417:215:1;20290:485:0;;;;;;;;;;-1:-1:-1;20290:485:0;;;;;:::i;:::-;;:::i;11043:26::-;;;;;;;;;;;;;;;;20787:157;;;;;;;;;;-1:-1:-1;20787:157:0;;;;;:::i;:::-;;:::i;11622:28::-;;;;;;;;;;;;;;;;10933:52;;;;;;;;;;-1:-1:-1;10933:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;11150:30;;;;;;;;;;;;;;;;11397:35;;;;;;;;;;;;;;;;11439:46;;;;;;;;;;;;;;;;19949:333;;;;;;;;;;;;;:::i;12687:100::-;;;;;;;;;;-1:-1:-1;12687:100:0;;;;;:::i;:::-;;:::i;11891:114::-;;;;;;;;;;-1:-1:-1;11981:16:0;;11891:114;;21085:151;;;;;;;;;;-1:-1:-1;21085:151:0;;;;;:::i;:::-;;:::i;10814:53::-;;;;;;;;;;-1:-1:-1;10814:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;20956:117;;;;;;;;;;;;;:::i;11775:110::-;;;;;;;;;;-1:-1:-1;11863:14:0;;11775:110;;8682:148;;;;;;;;;;;;;:::i;12225:77::-;;;;;;;;;;;;12276:11;:18;;-1:-1:-1;;12276:18:0;12290:4;12276:18;;;12225:77;10874:52;;;;;;;;;;-1:-1:-1;10874:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;8468:79;;;;;;;;;;-1:-1:-1;8506:7:0;8533:6;-1:-1:-1;;;;;8533:6:0;8468:79;;11076:29;;;;;;;;;;;;;;;;21455:103;;;;;;;;;;-1:-1:-1;21531:12:0;:19;21455:103;;15051:502;;;;;;;;;;-1:-1:-1;15051:502:0;;;;;:::i;:::-;;:::i;11220:25::-;;;;;;;;;;;;;;;;12011:112;;;;;;;;;;-1:-1:-1;12100:15:0;;12011:112;;10717:29;;;;;;;;;;-1:-1:-1;10717:29:0;;;;;:::i;:::-;;:::i;16009:192::-;;;;;;;;;;;;;:::i;15561:236::-;;;;;;;;;;-1:-1:-1;15561:236:0;;;;;:::i;:::-;;:::i;11187:26::-;;;;;;;;;;;;;;;;16424:712;;;;;;;;;;-1:-1:-1;16424:712:0;;;;;:::i;:::-;;:::i;10994:40::-;;;;;;;;;;-1:-1:-1;10994:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2232:25:1;;;2288:2;2273:18;;2266:34;;;;2316:18;;;2309:34;2220:2;2205:18;10994:40:0;2030:319:1;14106:937:0;;;:::i;10753:54::-;;;;;;;;;;-1:-1:-1;10753:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;11252:32;;;;;;;;;;;;;;;;15805:196;;;;;;;;;;;;;:::i;10486:21::-;;;;;;;;;;-1:-1:-1;10486:21:0;;;;-1:-1:-1;;;;;10486:21:0;;;11112:31;;;;;;;;;;;;;;;;16209:207;;;;;;;;;;-1:-1:-1;16209:207:0;;;;;:::i;:::-;;:::i;8838:281::-;;;;;;;;;;-1:-1:-1;8838:281:0;;;;;:::i;:::-;;:::i;19706:235::-;;;;;;;;;;;;;:::i;11357:33::-;;;;;;;;;;;;;;;;12443:236;11745:6;;-1:-1:-1;;;;;11745:6:0;11731:10;:20;11723:29;;;;;;-1:-1:-1;12582:9:0::1;:22:::0;;;;12615:15:::1;:34:::0;12443:236::o;17395:303::-;11745:6;;17480:7;;-1:-1:-1;;;;;11745:6:0;11731:10;:20;11723:29;;;;;;17547:9:::1;::::0;-1:-1:-1;;;;;17514:30:0;::::1;17500:11;17514:30:::0;;;:17:::1;:30;::::0;;;;;17500:11;;17514:42:::1;::::0;::::1;:::i;:::-;17500:56;;17578:15;17571:3;:22;17567:124;;-1:-1:-1::0;17617:1:0::1;::::0;17395:303;-1:-1:-1;;17395:303:0:o;17567:124::-:1;17658:21;17664:15;17658:3:::0;:21:::1;:::i;:::-;17651:28:::0;17395:303;-1:-1:-1;;;17395:303:0:o;12310:121::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;;;;;;;;;12376:11:::1;:19:::0;;-1:-1:-1;;12376:19:0::1;::::0;;-1:-1:-1;12406:17:0;;-1:-1:-1;;;;;;12406:17:0::1;-1:-1:-1::0;;;;;12406:17:0;;;::::1;::::0;;;::::1;::::0;;12310:121::o;12795:1303::-;11745:6;;-1:-1:-1;;;;;11745:6:0;11731:10;:20;11723:29;;;;;;12901:1:::1;12892:6;:10;:45;;;;-1:-1:-1::0;;;;;;12906:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:26;:31;12892:45:::1;12889:358;;;21665:12:::0;:19;;-1:-1:-1;;;;;21631:31:0;;;;;;:18;:31;;;;;:53;;;21695:30;;;;;;;;;;;;;-1:-1:-1;;;;;;21695:30:0;;;;;;13031::::1;13054:6;13031:22;:30::i;:::-;-1:-1:-1::0;;;;;12995:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;;;;:33:::1;;:66:::0;;;;13076:17:::1;:30:::0;;;13109:15:::1;13076:48:::0;;12889:358:::1;;;13144:11:::0;;:45;::::1;;;-1:-1:-1::0;;;;;;13159:19:0;::::1;13188:1;13159:19:::0;;;:6:::1;:19;::::0;;;;:26;:30;;13144:45:::1;13141:106;;;13205:30;13223:11;13205:17;:30::i;:::-;-1:-1:-1::0;;;;;13287:19:0;::::1;13264:20;13287:19:::0;;;:6:::1;:19;::::0;;;;:26;;13347:22;;::::1;::::0;::::1;::::0;13264:20;13415:211:::1;;13497:45;13520:21;13529:12:::0;13520:6;:21:::1;:::i;:::-;13497:22;:45::i;:::-;-1:-1:-1::0;;;;;13460:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:33:::1;;:82:::0;;:33;;:19;:82:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;13415:211:0::1;::::0;-1:-1:-1;13415:211:0::1;;13584:30;13602:11;13584:17;:30::i;:::-;13575:39;;13415:211;13691:6;13675:12;13661:11;;:26;;;;:::i;:::-;13660:37;;;;:::i;:::-;13646:11;:51:::0;-1:-1:-1;;;;;13708:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:35;;;13769:15;13764:327:::1;;13805:6;::::0;:31:::1;::::0;-1:-1:-1;;;13805:31:0;;13830:4:::1;13805:31;::::0;::::1;1575:51:1::0;13839:6:0;;-1:-1:-1;;;;;13805:6:0::1;::::0;:16:::1;::::0;1548:18:1;;13805:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;13801:86;;;13856:6;::::0;:31:::1;::::0;-1:-1:-1;;;13856:31:0;;13881:4:::1;13856:31;::::0;::::1;1575:51:1::0;-1:-1:-1;;;;;13856:6:0;;::::1;::::0;:16:::1;::::0;1548:18:1;;13856:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13847:40;;13801:86;13938:6;13920:15;;:24;;;;:::i;:::-;13902:15;:42:::0;13995:30:::1;14018:6:::0;13995:22:::1;:30::i;:::-;-1:-1:-1::0;;;;;13959:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;;;;:33:::1;;:66:::0;;;;14040:16:::1;:29:::0;;;;;:39;;14073:6;;13959:19;14040:39:::1;::::0;14073:6;;14040:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;13764:327:0::1;12878:1220;;;12795:1303:::0;;:::o;19415:283::-;11745:6;;-1:-1:-1;;;;;11745:6:0;11731:10;:20;11723:29;;;;;;19498:14:::1;19515:30;19533:11;19515:17;:30::i;:::-;19498:47;;19564:37;19581:11;19594:6;19564:16;:37::i;:::-;19556:77;;;::::0;-1:-1:-1;;;19556:77:0;;3501:2:1;19556:77:0::1;::::0;::::1;3483:21:1::0;3540:2;3520:18;;;3513:30;3579:29;3559:18;;;3552:57;3626:18;;19556:77:0::1;3299:351:1::0;19556:77:0::1;19644:46;19663:11;19676:6;19684:5;19644:18;:46::i;:::-;19487:211;19415:283:::0;:::o;20290:485::-;-1:-1:-1;;;;;20391:19:0;;20368:7;20391:19;;;:6;:19;;;;;:26;:31;;20388:48;;-1:-1:-1;20432:1:0;;20290:485;-1:-1:-1;20290:485:0:o;20388:48::-;-1:-1:-1;;;;;20507:19:0;;20448:33;20507:19;;;:6;:19;;;;;:26;20484:50;;:22;:50::i;:::-;-1:-1:-1;;;;;20580:19:0;;20545:32;20580:19;;;:6;:19;;;;;:33;;;20448:86;;-1:-1:-1;20629:53:0;;;20626:70;;-1:-1:-1;20692:1:0;;20290:485;-1:-1:-1;;;20290:485:0:o;20626:70::-;20715:52;20743:24;20715:25;:52;:::i;:::-;20708:59;20290:485;-1:-1:-1;;;;20290:485:0:o;20787:157::-;11745:6;;20876:7;;-1:-1:-1;;;;;11745:6:0;11731:10;:20;11723:29;;;;;;-1:-1:-1;;;;;;20903:19:0::1;;::::0;;;:6:::1;:19;::::0;;;;:33:::1;;::::0;;20787:157::o;19949:333::-;20024:10;19991:13;20007:28;;;:16;:28;;;;;;20054:9;;;;;:74;;-1:-1:-1;20099:11:0;;20085:10;20067:29;;;;:17;:29;;;;;;20113:15;;20067:43;;;:::i;:::-;:61;20054:74;20046:102;;;;-1:-1:-1;;;20046:102:0;;3857:2:1;20046:102:0;;;3839:21:1;3896:2;3876:18;;;3869:30;-1:-1:-1;;;3915:18:1;;;3908:45;3970:18;;20046:102:0;3655:339:1;20046:102:0;20176:10;20190:1;20159:28;;;:16;:28;;;;;:32;;;20202:10;:19;;20216:5;;20190:1;20202:19;;20216:5;;20202:19;:::i;:::-;;;;-1:-1:-1;;20239:6:0;;20232:42;;-1:-1:-1;;;20232:42:0;;20256:10;20232:42;;;4173:51:1;4240:18;;;4233:34;;;-1:-1:-1;;;;;20239:6:0;;;;20232:23;;4146:18:1;;20232:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12687:100::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;12758:11:::1;:21:::0;12687:100::o;21085:151::-;11745:6;;21172:7;;-1:-1:-1;;;;;11745:6:0;11731:10;:20;11723:29;;;;;;-1:-1:-1;;;;;;21199:29:0::1;;::::0;;;:16:::1;:29;::::0;;;;;;21085:151::o;20956:117::-;11745:6;;21022:7;;-1:-1:-1;;;;;11745:6:0;11731:10;:20;11723:29;;;;;;-1:-1:-1;21049:16:0::1;::::0;20956:117;:::o;8682:148::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;8789:1:::1;8773:6:::0;;8752:40:::1;::::0;-1:-1:-1;;;;;8773:6:0;;::::1;::::0;8752:40:::1;::::0;8789:1;;8752:40:::1;8820:1;8803:19:::0;;-1:-1:-1;;;;;;8803:19:0::1;::::0;;8682:148::o;15051:502::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;15126:14:::1;15187:3;15177:7;15162:11;;15144:15;;:29;;;;:::i;:::-;15143:41;;;;:::i;:::-;:47;;;;:::i;:::-;15126:64;;15219:6;15201:14;;:24;;;;;;;:::i;:::-;;;;;;;;15251:6;15236:11;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15271:11:0::1;::::0;:15;15268:277:::1;;15304:17;;15325:1;15304:22:::0;15301:244:::1;;15418:11;;15400:14;;15366:31;;:48;;;;:::i;:::-;15365:64;;;;:::i;:::-;15345:17;:84:::0;19487:211:::1;19415:283:::0;:::o;15301:244::-:1;15533:11;;15523:6;15489:31;;:40;;;;:::i;:::-;15488:56;;;;:::i;:::-;15466:17;;:79;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15115:438:0::1;15051:502:::0;:::o;10717:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10717:29:0;;-1:-1:-1;10717:29:0;:::o;16009:192::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;16129:10:::1;::::0;16094:6:::1;::::0;16087:39:::1;::::0;-1:-1:-1;;;16087:39:0;;16120:4:::1;16087:39;::::0;::::1;1575:51:1::0;16070:14:0::1;::::0;16129:10;-1:-1:-1;;;;;16094:6:0::1;::::0;16087:24:::1;::::0;1548:18:1;;16087:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;;:::i;:::-;16157:6;::::0;16150:43:::1;::::0;-1:-1:-1;;;16150:43:0;;16174:10:::1;16150:43;::::0;::::1;4173:51:1::0;4240:18;;;4233:34;;;16070:69:0;;-1:-1:-1;;;;;;16157:6:0::1;::::0;16150:23:::1;::::0;4146:18:1;;16150:43:0::1;3999:274:1::0;15561:236:0;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;15637:14:::1;15698:3;15688:7;15673:11;;15655:15;;:29;;;;:::i;:::-;15654:41;;;;:::i;:::-;:47;;;;:::i;:::-;15637:64;;15727:6;15712:11;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15744:6:0::1;::::0;:35:::1;::::0;-1:-1:-1;;;15744:35:0;;15760:10:::1;15744:35;::::0;::::1;4173:51:1::0;4240:18;;;4233:34;;;-1:-1:-1;;;;;15744:6:0;;::::1;::::0;:15:::1;::::0;4146:18:1;;15744:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15626:171;15561:236:::0;:::o;16424:712::-;11745:6;;-1:-1:-1;;;;;11745:6:0;11731:10;:20;11723:29;;;;;;16495:24:::1;16550:14;16495:71;;16586:4;-1:-1:-1::0;;;;;16586:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16585:19;16577:51;;;::::0;-1:-1:-1;;;16577:51:0;;5157:2:1;16577:51:0::1;::::0;::::1;5139:21:1::0;5196:2;5176:18;;;5169:30;-1:-1:-1;;;5215:18:1;;;5208:49;5274:18;;16577:51:0::1;4955:343:1::0;16577:51:0::1;16653:21;16688:7:::0;;16685:165:::1;;16712:12;16753:14;-1:-1:-1::0;;;;;16753:19:0::1;16780:3;16753:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16739:49;;;;;16811:7;16803:35;;;::::0;-1:-1:-1;;;16803:35:0;;5715:2:1;16803:35:0::1;::::0;::::1;5697:21:1::0;5754:2;5734:18;;;5727:30;-1:-1:-1;;;5773:18:1;;;5766:45;5828:18;;16803:35:0::1;5513:339:1::0;16803:35:0::1;16697:153;16685:165;16866:6;::::0;:31:::1;::::0;-1:-1:-1;;;16866:31:0;;16891:4:::1;16866:31;::::0;::::1;1575:51:1::0;-1:-1:-1;;;;;16866:6:0;;::::1;::::0;:16:::1;::::0;1548:18:1;;16866:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16860:37:::0;-1:-1:-1;16911:7:0;;16908:72:::1;;16932:6;::::0;:36:::1;::::0;-1:-1:-1;;;16932:36:0;;-1:-1:-1;;;;;4191:32:1;;;16932:36:0::1;::::0;::::1;4173:51:1::0;4240:18;;;4233:34;;;16932:6:0;;::::1;::::0;:15:::1;::::0;4146:18:1;;16932:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16908:72;17003:6;::::0;16996:39:::1;::::0;-1:-1:-1;;;16996:39:0;;17029:4:::1;16996:39;::::0;::::1;1575:51:1::0;-1:-1:-1;;;;;17003:6:0;;::::1;::::0;16996:24:::1;::::0;1548:18:1;;16996:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16990:45:::0;-1:-1:-1;17049:7:0;;17046:83:::1;;17080:6;::::0;17073:44:::1;::::0;-1:-1:-1;;;17073:44:0;;-1:-1:-1;;;;;4191:32:1;;;17073:44:0::1;::::0;::::1;4173:51:1::0;4240:18;;;4233:34;;;17080:6:0;;::::1;::::0;17073:23:::1;::::0;4146:18:1;;17073:44:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17046:83;16484:652;;16424:712:::0;:::o;14106:937::-;14183:16;;;14197:1;14183:16;;;;;;;;14159:21;;14183:16;;;;;;;;-1:-1:-1;;14220:9:0;;:16;;;-1:-1:-1;;;14220:16:0;;;;14159:40;;-1:-1:-1;;;;;;14220:9:0;;;;:14;;-1:-1:-1;14220:16:0;;;;;;;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14210:4;14215:1;14210:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14210:26:0;;;:7;;;;;;;;;:26;14265:6;;14247:7;;14265:6;;;14247:4;;14265:6;;14247:7;;;;;;:::i;:::-;-1:-1:-1;;;;;14247:25:0;;;:7;;;;;;;;;:25;14363:9;;:36;;-1:-1:-1;;;14363:36:0;;14301:21;;14285:13;;14363:9;;:23;;:36;;14301:21;;14394:4;;14363:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14363:36:0;;;;;;;;;;;;:::i;:::-;14426:6;;:31;;-1:-1:-1;;;14426:31:0;;14451:4;14426:31;;;1575:51:1;14333:66:0;;-1:-1:-1;14409:14:0;;-1:-1:-1;;;;;14426:6:0;;;;:16;;1548:18:1;;14426:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14409:48;;14467:9;;;;;;;;;-1:-1:-1;;;;;14467:9:0;-1:-1:-1;;;;;14467:31:0;;14506:5;14554:3;14543:8;;14527:10;14538:1;14527:13;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;:30;;;;:::i;:::-;14572:4;14599;14619:15;14467:178;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14467:178:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14672:6:0;;:31;;-1:-1:-1;;;14672:31:0;;14697:4;14672:31;;;1575:51:1;14655:14:0;;14706:6;;-1:-1:-1;;;;;14672:6:0;;;;:16;;1548:18:1;;14672:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;;:::i;:::-;14655:57;;14741:6;14723:14;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;14761:11:0;;:15;14758:277;;14794:17;;14815:1;14794:22;14791:244;;14908:11;;14890:14;;14856:31;;:48;;;;:::i;:::-;14855:64;;;;:::i;:::-;14835:17;:84;14791:244;;;15023:11;;15013:6;14979:31;;:40;;;;:::i;:::-;14978:56;;;;:::i;:::-;14956:17;;:79;;;;;;;:::i;15805:196::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;15898:49:::1;::::0;15861:12:::1;::::0;15898:10:::1;::::0;15921:21:::1;::::0;15861:12;15898:49;15861:12;15898:49;15921:21;15898:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15884:63;;;;;15966:7;15958:35;;;::::0;-1:-1:-1;;;15958:35:0;;5715:2:1;15958:35:0::1;::::0;::::1;5697:21:1::0;5754:2;5734:18;;;5727:30;-1:-1:-1;;;5773:18:1;;;5766:45;5828:18;;15958:35:0::1;5513:339:1::0;15958:35:0::1;15850:151;15805:196::o:0;16209:207::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;16292:3:::1;16283:5;:12;;16275:45;;;::::0;-1:-1:-1;;;16275:45:0;;8999:2:1;16275:45:0::1;::::0;::::1;8981:21:1::0;9038:2;9018:18;;;9011:30;-1:-1:-1;;;9057:18:1;;;9050:50;9117:18;;16275:45:0::1;8797:344:1::0;16275:45:0::1;16348:2;16339:5;:11;;16331:50;;;::::0;-1:-1:-1;;;16331:50:0;;9348:2:1;16331:50:0::1;::::0;::::1;9330:21:1::0;9387:2;9367:18;;;9360:30;9426:28;9406:18;;;9399:56;9472:18;;16331:50:0::1;9146:350:1::0;16331:50:0::1;16392:8;:16:::0;16209:207::o;8838:281::-;8595:6;;-1:-1:-1;;;;;8595:6:0;315:10;8595:22;8587:67;;;;-1:-1:-1;;;8587:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8941:22:0;::::1;8919:110;;;::::0;-1:-1:-1;;;8919:110:0;;9703:2:1;8919:110:0::1;::::0;::::1;9685:21:1::0;9742:2;9722:18;;;9715:30;9781:34;9761:18;;;9754:62;-1:-1:-1;;;9832:18:1;;;9825:36;9878:19;;8919:110:0::1;9501:402:1::0;8919:110:0::1;9066:6;::::0;;9045:38:::1;::::0;-1:-1:-1;;;;;9045:38:0;;::::1;::::0;9066:6;::::1;::::0;9045:38:::1;::::0;::::1;9094:6;:17:::0;;-1:-1:-1;;;;;;9094:17:0::1;-1:-1:-1::0;;;;;9094:17:0;;;::::1;::::0;;;::::1;::::0;;8838:281::o;19706:235::-;19745:14;19762:29;19780:10;19762:17;:29::i;:::-;19745:46;;19810:36;19827:10;19839:6;19810:16;:36::i;:::-;19802:76;;;;-1:-1:-1;;;19802:76:0;;3501:2:1;19802:76:0;;;3483:21:1;3540:2;3520:18;;;3513:30;3579:29;3559:18;;;3552:57;3626:18;;19802:76:0;3299:351:1;19802:76:0;19889:44;19908:10;19920:6;19928:4;19889:18;:44::i;21244:203::-;21314:7;21337:5;21346:1;21337:10;21334:27;;-1:-1:-1;21357:1:0;;21244:203;-1:-1:-1;21244:203:0:o;21334:27::-;21408:31;;21387:17;;21379:25;;:5;:25;:::i;:::-;21378:61;;;;:::i;:::-;21371:68;21244:203;-1:-1:-1;;21244:203:0:o;21741:288::-;21857:12;21870:19;;:21;;21890:1;;21870:21;:::i;:::-;21857:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21822:31:0;;;;;:18;:31;;;;;;;;21809:12;:45;;21857:35;;;;;21809:12;:45;;;;;;:::i;:::-;;;;;;;;;;;;;:83;;-1:-1:-1;;;;;;21809:83:0;-1:-1:-1;;;;;21809:83:0;;;;;;21961:31;;;;;:18;:31;;;;;;;;21922:12;21935:19;;21961:31;;:18;21809:45;21935:21;;-1:-1:-1;;21935:21:0;:::i;:::-;21922:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21922:35:0;21903:55;;;;;;;;;;;;:89;22003:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;22003:18:0;;;;;-1:-1:-1;;;;;;22003:18:0;;;;;;-1:-1:-1;21741:288:0:o;17144:239::-;17291:9;;-1:-1:-1;;;;;17258:30:0;;17238:4;17258:30;;;:17;:30;;;;;;17238:4;;17303:15;;17258:42;;17291:9;17258:42;:::i;:::-;:60;:109;;;;-1:-1:-1;;17352:15:0;;-1:-1:-1;17335:32:0;17251:116;-1:-1:-1;17144:239:0:o;17706:1701::-;-1:-1:-1;;;;;17817:19:0;;;;;;:6;:19;;;;;:26;:31;;17814:46;;17706:1701;;;:::o;17814:46::-;17875:18;;17872:1528;;17947:14;17928:16;;:33;;;;:::i;:::-;17909:16;:52;-1:-1:-1;;;;;17976:30:0;;;;;;:17;:30;;;;;;;;18009:15;17976:48;;18075:6;:19;;;;;:33;;;:50;;18111:14;;18075:50;:::i;:::-;-1:-1:-1;;;;;18039:19:0;;;;;;:6;:19;;;;;:33;;;:86;;;;18199:26;18176:50;;:22;:50::i;:::-;-1:-1:-1;;;;;18140:19:0;;;;;;:6;:19;;;;;:33;;:86;18241:1148;;;;18297:16;;;18311:1;18297:16;;;;;;;;;18273:21;;18297:16;;;;;;;;-1:-1:-1;;18350:6:0;;18332:7;;;;-1:-1:-1;;;;;;18350:6:0;;18332:7;;-1:-1:-1;18350:6:0;;18332:7;;;;:::i;:::-;-1:-1:-1;;;;;18332:25:0;;;:7;;;;;;;;;;:25;;;;18386:9;;:16;;;-1:-1:-1;;;18386:16:0;;;;:9;;;;;:14;;:16;;;;;18332:7;;18386:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18376:4;18381:1;18376:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18376:26:0;;;:7;;;;;;;;;:26;18431:6;;18421:7;;18431:6;;;18421:4;;18426:1;;18421:7;;;;;;:::i;:::-;-1:-1:-1;;;;;18421:16:0;;;:7;;;;;;;;;:16;18488:9;;:45;;-1:-1:-1;;;18488:45:0;;18458:27;;18488:9;;;;;:23;;:45;;18512:14;;18528:4;;18488:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18488:45:0;;;;;;;;;;;;:::i;:::-;18576:6;;18569:37;;-1:-1:-1;;;18569:37:0;;-1:-1:-1;;;;;1593:32:1;;;18569:37:0;;;1575:51:1;18458:75:0;;-1:-1:-1;18552:14:0;;18576:6;;;;18569:24;;1548:18:1;;18569:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18627:9;;18767:8;;18552:54;;-1:-1:-1;;;;;;18627:9:0;;:63;;18713:14;;18781:3;;18767:10;;18776:1;;18767:10;:::i;:::-;18750;18761:1;18750:13;;;;;;;;:::i;:::-;;;;;;;:28;;;;:::i;:::-;:34;;;;:::i;:::-;18807:4;18834:11;18868:15;18627:275;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18947:6:0;;18940:37;;-1:-1:-1;;;18940:37:0;;-1:-1:-1;;;;;1593:32:1;;;18940:37:0;;;1575:51:1;18923:14:0;;-1:-1:-1;18980:6:0;;-1:-1:-1;18947:6:0;;;;18940:24;;1548:18:1;;18940:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;18923:63;-1:-1:-1;19005:16:0;19037:10;19046:1;18923:63;19037:10;:::i;:::-;19024;;:23;;;;:::i;:::-;19005:42;;19084:10;19095:1;19084:13;;;;;;;;:::i;:::-;;;;;;;19074:6;:23;;:78;;;;-1:-1:-1;19108:6:0;;19101:39;;-1:-1:-1;;;19101:39:0;;19134:4;19101:39;;;1575:51:1;19144:8:0;;-1:-1:-1;;;;;19108:6:0;;19101:24;;1548:18:1;;19101:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;19074:78;19066:120;;;;-1:-1:-1;;;19066:120:0;;10821:2:1;19066:120:0;;;10803:21:1;10860:2;10840:18;;;10833:30;10899:31;10879:18;;;10872:59;10948:18;;19066:120:0;10619:353:1;19066:120:0;19205:10;:21;;;19278:10;19287:1;19278:6;:10;:::i;:::-;-1:-1:-1;;;;;19245:29:0;;;;;;:16;:29;;;;;:43;;:29;;;:43;;;;;:::i;:::-;;;;-1:-1:-1;18241:1148:0;;-1:-1:-1;;;;;;18241:1148:0;;19329:6;;:44;;-1:-1:-1;;;19329:44:0;;-1:-1:-1;;;;;4191:32:1;;;19329:44:0;;;4173:51:1;4240:18;;;4233:34;;;19329:6:0;;;;:15;;4146:18:1;;19329:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17706:1701;;;:::o;14:316:1:-;91:6;99;107;160:2;148:9;139:7;135:23;131:32;128:52;;;176:1;173;166:12;128:52;-1:-1:-1;;199:23:1;;;269:2;254:18;;241:32;;-1:-1:-1;320:2:1;305:18;;;292:32;;14:316;-1:-1:-1;14:316:1:o;517:131::-;-1:-1:-1;;;;;592:31:1;;582:42;;572:70;;638:1;635;628:12;653:247;712:6;765:2;753:9;744:7;740:23;736:32;733:52;;;781:1;778;771:12;733:52;820:9;807:23;839:31;864:5;839:31;:::i;905:315::-;973:6;981;1034:2;1022:9;1013:7;1009:23;1005:32;1002:52;;;1050:1;1047;1040:12;1002:52;1089:9;1076:23;1108:31;1133:5;1108:31;:::i;:::-;1158:5;1210:2;1195:18;;;;1182:32;;-1:-1:-1;;;905:315:1:o;1637:180::-;1696:6;1749:2;1737:9;1728:7;1724:23;1720:32;1717:52;;;1765:1;1762;1755:12;1717:52;-1:-1:-1;1788:23:1;;1637:180;-1:-1:-1;1637:180:1:o;2354:127::-;2415:10;2410:3;2406:20;2403:1;2396:31;2446:4;2443:1;2436:15;2470:4;2467:1;2460:15;2486:125;2551:9;;;2572:10;;;2569:36;;;2585:18;;:::i;2616:128::-;2683:9;;;2704:11;;;2701:37;;;2718:18;;:::i;2749:356::-;2951:2;2933:21;;;2970:18;;;2963:30;3029:34;3024:2;3009:18;;3002:62;3096:2;3081:18;;2749:356::o;3110:184::-;3180:6;3233:2;3221:9;3212:7;3208:23;3204:32;3201:52;;;3249:1;3246;3239:12;3201:52;-1:-1:-1;3272:16:1;;3110:184;-1:-1:-1;3110:184:1:o;4278:277::-;4345:6;4398:2;4386:9;4377:7;4373:23;4369:32;4366:52;;;4414:1;4411;4404:12;4366:52;4446:9;4440:16;4499:5;4492:13;4485:21;4478:5;4475:32;4465:60;;4521:1;4518;4511:12;4560:168;4633:9;;;4664;;4681:15;;;4675:22;;4661:37;4651:71;;4702:18;;:::i;4733:217::-;4773:1;4799;4789:132;;4843:10;4838:3;4834:20;4831:1;4824:31;4878:4;4875:1;4868:15;4906:4;4903:1;4896:15;4789:132;-1:-1:-1;4935:9:1;;4733:217::o;5857:127::-;5918:10;5913:3;5909:20;5906:1;5899:31;5949:4;5946:1;5939:15;5973:4;5970:1;5963:15;5989:251;6059:6;6112:2;6100:9;6091:7;6087:23;6083:32;6080:52;;;6128:1;6125;6118:12;6080:52;6160:9;6154:16;6179:31;6204:5;6179:31;:::i;6245:127::-;6306:10;6301:3;6297:20;6294:1;6287:31;6337:4;6334:1;6327:15;6361:4;6358:1;6351:15;6377:461;6430:3;6468:5;6462:12;6495:6;6490:3;6483:19;6521:4;6550:2;6545:3;6541:12;6534:19;;6587:2;6580:5;6576:14;6608:1;6618:195;6632:6;6629:1;6626:13;6618:195;;;6697:13;;-1:-1:-1;;;;;6693:39:1;6681:52;;6753:12;;;;6788:15;;;;6729:1;6647:9;6618:195;;;-1:-1:-1;6829:3:1;;6377:461;-1:-1:-1;;;;;6377:461:1:o;6843:332::-;7050:6;7039:9;7032:25;7093:2;7088;7077:9;7073:18;7066:30;7013:4;7113:56;7165:2;7154:9;7150:18;7142:6;7113:56;:::i;7180:1105::-;7275:6;7306:2;7349;7337:9;7328:7;7324:23;7320:32;7317:52;;;7365:1;7362;7355:12;7317:52;7398:9;7392:16;7427:18;7468:2;7460:6;7457:14;7454:34;;;7484:1;7481;7474:12;7454:34;7522:6;7511:9;7507:22;7497:32;;7567:7;7560:4;7556:2;7552:13;7548:27;7538:55;;7589:1;7586;7579:12;7538:55;7618:2;7612:9;7640:2;7636;7633:10;7630:36;;;7646:18;;:::i;:::-;7692:2;7689:1;7685:10;7724:2;7718:9;7787:2;7783:7;7778:2;7774;7770:11;7766:25;7758:6;7754:38;7842:6;7830:10;7827:22;7822:2;7810:10;7807:18;7804:46;7801:72;;;7853:18;;:::i;:::-;7889:2;7882:22;7939:18;;;7973:15;;;;-1:-1:-1;8015:11:1;;;8011:20;;;8043:19;;;8040:39;;;8075:1;8072;8065:12;8040:39;8099:11;;;;8119:135;8135:6;8130:3;8127:15;8119:135;;;8201:10;;8189:23;;8152:12;;;;8232;;;;8119:135;;;8273:6;7180:1105;-1:-1:-1;;;;;;;;7180:1105:1:o;8290:502::-;8553:6;8542:9;8535:25;8596:3;8591:2;8580:9;8576:18;8569:31;8516:4;8617:57;8669:3;8658:9;8654:19;8646:6;8617:57;:::i;:::-;-1:-1:-1;;;;;8710:32:1;;;;8705:2;8690:18;;8683:60;-1:-1:-1;8774:2:1;8759:18;8752:34;8609:65;8290:502;-1:-1:-1;;8290:502:1:o;9908:127::-;9969:10;9964:3;9960:20;9957:1;9950:31;10000:4;9997:1;9990:15;10024:4;10021:1;10014:15;10040:574;10331:6;10320:9;10313:25;10374:6;10369:2;10358:9;10354:18;10347:34;10417:3;10412:2;10401:9;10397:18;10390:31;10294:4;10438:57;10490:3;10479:9;10475:19;10467:6;10438:57;:::i;:::-;-1:-1:-1;;;;;10531:32:1;;;;10526:2;10511:18;;10504:60;-1:-1:-1;10595:3:1;10580:19;10573:35;10430:65;10040:574;-1:-1:-1;;;10040:574:1:o
Swarm Source
ipfs://8c43c6675214ef77538870f323d9332c6b6592b11ea8a9d0a6155ff5091cead6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.99961 | 64.4815 | $64.46 |
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.