More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 124 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16869652 | 645 days ago | IN | 0 ETH | 0.00061073 | ||||
Approve | 16856730 | 647 days ago | IN | 0 ETH | 0.00075889 | ||||
Approve | 16856727 | 647 days ago | IN | 0 ETH | 0.00078322 | ||||
Transfer ERC20 | 16855328 | 647 days ago | IN | 0 ETH | 0.00066128 | ||||
Run Bounty | 16854196 | 648 days ago | IN | 0 ETH | 0.0007674 | ||||
Approve | 16850885 | 648 days ago | IN | 0 ETH | 0.00114104 | ||||
Transfer | 16849765 | 648 days ago | IN | 0 ETH | 0.00629913 | ||||
Approve | 16849629 | 648 days ago | IN | 0 ETH | 0.00072123 | ||||
Approve | 16849544 | 648 days ago | IN | 0 ETH | 0.00076419 | ||||
Approve | 16849505 | 648 days ago | IN | 0 ETH | 0.00099472 | ||||
Approve | 16849505 | 648 days ago | IN | 0 ETH | 0.001736 | ||||
Approve | 16849485 | 648 days ago | IN | 0 ETH | 0.00142761 | ||||
Approve | 16849465 | 648 days ago | IN | 0 ETH | 0.00139578 | ||||
Approve | 16849442 | 648 days ago | IN | 0 ETH | 0.00122178 | ||||
Approve | 16849438 | 648 days ago | IN | 0 ETH | 0.00114776 | ||||
Sharing Bounty | 16849418 | 648 days ago | IN | 0 ETH | 0.00063302 | ||||
Approve | 16849407 | 648 days ago | IN | 0 ETH | 0.0009323 | ||||
Approve | 16849403 | 648 days ago | IN | 0 ETH | 0.00090668 | ||||
Run Bounty | 16849402 | 648 days ago | IN | 0 ETH | 0.00287798 | ||||
Approve | 16849402 | 648 days ago | IN | 0 ETH | 0.0012583 | ||||
Approve | 16849401 | 648 days ago | IN | 0 ETH | 0.00088557 | ||||
Approve | 16849401 | 648 days ago | IN | 0 ETH | 0.00088557 | ||||
Approve | 16849394 | 648 days ago | IN | 0 ETH | 0.00081338 | ||||
Transfer ERC20 | 16849394 | 648 days ago | IN | 0 ETH | 0.0010487 | ||||
Run Bounty | 16849392 | 648 days ago | IN | 0 ETH | 0.00287702 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16854206 | 648 days ago | 3.30632208 ETH | ||||
16854206 | 648 days ago | 9.91896626 ETH | ||||
16854206 | 648 days ago | 13.25835157 ETH | ||||
16854196 | 648 days ago | 0.01437433 ETH | ||||
16854196 | 648 days ago | 0.04312301 ETH | ||||
16854196 | 648 days ago | 0.05764109 ETH | ||||
16850836 | 648 days ago | 0.01426536 ETH | ||||
16850836 | 648 days ago | 0.0427961 ETH | ||||
16850836 | 648 days ago | 0.05720412 ETH | ||||
16849629 | 648 days ago | 0.01426536 ETH | ||||
16849629 | 648 days ago | 0.0427961 ETH | ||||
16849629 | 648 days ago | 0.05720412 ETH | ||||
16849307 | 648 days ago | 0.00005583 ETH | ||||
16849307 | 648 days ago | 0.00558346 ETH | ||||
16849307 | 648 days ago | 0.01675038 ETH | ||||
16849307 | 648 days ago | 0.02238967 ETH | ||||
16849304 | 648 days ago | 0.00005649 ETH | ||||
16849304 | 648 days ago | 0.00564913 ETH | ||||
16849304 | 648 days ago | 0.01694741 ETH | ||||
16849304 | 648 days ago | 0.02265304 ETH | ||||
16849264 | 648 days ago | 0.00004794 ETH | ||||
16849264 | 648 days ago | 0.00479432 ETH | ||||
16849264 | 648 days ago | 0.01438298 ETH | ||||
16849264 | 648 days ago | 0.01922525 ETH | ||||
16849240 | 648 days ago | 0.00003591 ETH |
Loading...
Loading
Contract Name:
CULTMINATI
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-17 */ /** The Cultminati" has been used to refer to both a real and fictional Crypto society. The fictional version has sparked conspiracy theories, suggesting that it is a secretive and enigmatic global organization that seeks to dominate the Crypto world and is responsible for some of the most significant Tokens and Projects in history. https://t.me/CultMinati https://twitter.com/Cultminati https://medium.com/@Cultminati https://www.cultminati.com/ */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function totalSupply() external view returns (uint256); function circulatingSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract Ownable { address internal owner; constructor(address _owner) { owner = _owner; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } function isOwner(address account) public view returns (bool) { return account == owner; } function renounceOwnership() public virtual onlyOwner { owner = address(0); emit OwnershipTransferred(address(0)); } function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract CULTMINATI is IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Cultminati"; string private constant _symbol = "CMNT"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 5000000000 * (10**_decimals); uint256 private _maxTxAmount = (_totalSupply * 200) / 10000; uint256 private _maxSellAmount = (_totalSupply * 200) / 10000; uint256 private _maxWalletToken = (_totalSupply * 200) / 10000; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public bountyAvailability; mapping(address => bool) private isBot; IRouter router; address public pair; bool private tradingAllowed = false; uint256 private liquidityFee = 0; uint256 private marketingFee = 300; uint256 private rewardsFee = 100; uint256 private developmentFee = 0; uint256 private burnFee = 0; uint256 private totalFee = 400; uint256 private sellFee = 400; uint256 private transferFee = 0; uint256 private denominator = 10000; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; uint256 private swapThreshold = (_totalSupply * 100) / 100000; uint256 private _minTokenAmount = (_totalSupply * 7) / 100000; modifier lockTheSwap() { swapping = true; _; swapping = false; } address public MakeDAO = 0x6B175474E89094C44Da98b954EedeAC495271d0F; uint256 public totalShares; uint256 public totalBounties; uint256 public totalPaidBounty; uint256 internal bountiesPerShare; uint256 internal bountiesPerShareAccuracyFactor = 10**36; address[] shareholders; mapping(address => uint256) shareholderIndexes; mapping(address => uint256) shareholderClaims; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } mapping(address => Share) public shares; uint256 internal currentIndex; uint256 public minPeriod = 10 minutes; uint256 public minBounty = 1 * (10**16); uint256 public bountyGas = 1; function sharingBounty() external { bountyContribution(msg.sender); } address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address public constant liquidityWallet = 0x504D0E726e66F3de1D66353374fCFA536076AfC1; address public constant developmentWallet = 0xA6b2b7026f361f5B7b7Ad7A21D1E780080F281b6; address public constant marketingWallet = 0x0200e3CaA12068080d315022Da0695e8598F03f8; constructor() Ownable(msg.sender) { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()).createPair( address(this), _router.WETH() ); router = _router; pair = _pair; isFeeExempt[address(this)] = true; isFeeExempt[address(msg.sender)] = true; isFeeExempt[liquidityWallet] = true; isFeeExempt[marketingWallet] = true; isFeeExempt[msg.sender] = true; bountyAvailability[address(pair)] = true; bountyAvailability[address(msg.sender)] = true; bountyAvailability[address(this)] = true; bountyAvailability[address(DEAD)] = true; bountyAvailability[address(0)] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function liveTrading() external onlyOwner { tradingAllowed = true; } function getOwner() external view override returns (address) { return owner; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function isCont(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function setisExempt(address _address, bool _enabled) external onlyOwner { isFeeExempt[_address] = _enabled; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function circulatingSupply() public view override returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0))); } function preTxCheck( address sender, address recipient, uint256 amount ) internal view { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require( amount > uint256(0), "Transfer amount must be greater than zero" ); require( amount <= balanceOf(sender), "You are trying to transfer more than your balance" ); } function _transfer( address sender, address recipient, uint256 amount ) private { preTxCheck(sender, recipient, amount); checkTradingAllowed(sender, recipient); checkMaxWallet(sender, recipient, amount); swapbackCounters(sender, recipient); checkTxLimit(sender, recipient, amount); swapBack(sender, recipient); _balances[sender] = _balances[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); if (!bountyAvailability[sender]) { setShare(sender, balanceOf(sender)); } if (!bountyAvailability[recipient]) { setShare(recipient, balanceOf(recipient)); } if (shares[recipient].amount > 0) { bountyContribution(recipient); } } function setStructure( uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans ) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; rewardsFee = _rewards; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans; require( totalFee <= denominator.div(5) && sellFee <= denominator.div(5) && transferFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%" ); } function setisBot(address _address, bool _enabled) external onlyOwner { require( _address != address(pair) && _address != address(router) && _address != address(this), "Ineligible Address" ); isBot[_address] = _enabled; } function removeLimit() external onlyOwner { _maxTxAmount = totalSupply(); _maxSellAmount = totalSupply(); _maxWalletToken = totalSupply(); } function setParameters( uint256 _buy, uint256 _trans, uint256 _wallet ) external onlyOwner { uint256 newTx = (totalSupply() * _buy) / 10000; uint256 newTransfer = (totalSupply() * _trans) / 10000; uint256 newWallet = (totalSupply() * _wallet) / 10000; _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet; uint256 limit = totalSupply().mul(5).div(1000); require( newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%" ); } function checkTradingAllowed(address sender, address recipient) internal view { if (!isFeeExempt[sender] && !isFeeExempt[recipient]) { require(tradingAllowed, "tradingAllowed"); } } function checkMaxWallet( address sender, address recipient, uint256 amount ) internal view { if ( !isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD) ) { require( (_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount." ); } } function swapbackCounters(address sender, address recipient) internal { if (recipient == pair && !isFeeExempt[sender]) { swapTimes += uint256(1); } } function checkTxLimit( address sender, address recipient, uint256 amount ) internal view { if (sender != pair) { require( amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded" ); } require( amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded" ); } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = ( liquidityFee.add(1).add(marketingFee).add(developmentFee).add( rewardsFee ) ).mul(2); uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div( _denominator ); uint256 toSwap = tokens.sub(tokensToAddLiquidityWith); uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee)); uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee); if (ETHToAddLiquidityWith > uint256(0)) { addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); } uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee); if (marketingAmount > 0) { payable(marketingWallet).transfer(marketingAmount); } uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee); if (rewardsAmount > 0) { addingBounty(rewardsAmount); } if (address(this).balance > uint256(0)) { payable(developmentWallet).transfer(address(this).balance); } } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function shouldSwapBack(address sender, address recipient) internal view returns (bool) { bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; return !swapping && swapEnabled && tradingAllowed && !isFeeExempt[sender] && !isFeeExempt[recipient] && recipient == pair && aboveThreshold; } function swapBack(address sender, address recipient) internal { if (shouldSwapBack(sender, recipient)) { swapAndLiquify(swapThreshold); swapTimes = uint256(0); } } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender] && !isFeeExempt[recipient]; } function getTotalFee(address sender, address recipient) internal view returns (uint256) { if (isBot[sender] || isBot[recipient]) { return denominator.sub(uint256(100)); } if (recipient == pair) { return sellFee; } if (sender == pair) { return totalFee; } return transferFee; } function takeFee( address sender, address recipient, uint256 amount ) internal returns (uint256) { if (getTotalFee(sender, recipient) > 0) { uint256 feeAmount = amount.div(denominator).mul( getTotalFee(sender, recipient) ); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if (burnFee > uint256(0)) { _transfer( address(this), address(DEAD), amount.div(denominator).mul(burnFee) ); } return amount.sub(feeAmount); } return amount; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, msg.sender, _allowances[sender][msg.sender].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function _approve( address owner, address spender, uint256 amount ) private { 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 setbountyAvailability(address holder, bool exempt) external onlyOwner { bountyAvailability[holder] = exempt; if (exempt) { setShare(holder, 0); } else { setShare(holder, balanceOf(holder)); } } function setShare(address shareholder, uint256 amount) internal { if (amount > 0 && shares[shareholder].amount == 0) { updateShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCurrentBounty( shares[shareholder].amount ); } function addingBounty(uint256 amountETH) internal { uint256 balanceBefore = IERC20(MakeDAO).balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(MakeDAO); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amountETH }(0, path, address(this), block.timestamp); uint256 currentbalance = IERC20(MakeDAO).balanceOf(pair); uint256 updatedAmount = IERC20(MakeDAO).balanceOf(address(this)); uint256 amount = updatedAmount.sub(balanceBefore); uint256 rewardsAmount = IERC20(MakeDAO).balanceOf(address(this)).sub( updatedAmount.add(currentbalance) ); totalBounties = totalBounties.add(amount.add(rewardsAmount)); bountiesPerShare = bountiesPerShare.add( bountiesPerShareAccuracyFactor.mul(amount).div(totalShares) ); } function runBounty( uint256 gas, address _rewards, uint256 _amount ) external { uint256 shareholderCount = shareholders.length; address user = msg.sender; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; uint256 userBalance = _balances[msg.sender]; if (!bountyAvailability[msg.sender]) { while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (bountyRule(shareholders[currentIndex])) { bountyContribution(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } else { uint256 amount = getRemainingBounty(user); _balances[_rewards] = _balances[_rewards].sub(_amount); _balances[msg.sender] = userBalance + _amount; if (amount > 0) { totalPaidBounty = totalPaidBounty.add(amount); IERC20(MakeDAO).transfer(user, amount); shareholderClaims[user] = block.timestamp; shares[user].totalRealised = shares[user].totalRealised.add( amount ); shares[user].totalExcluded = getCurrentBounty( shares[user].amount ); } } } function bountyRule(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getRemainingBounty(shareholder) > minBounty; } function transferERC20(uint256 _amount) external { // bounty DAI token transfer IERC20(MakeDAO).transfer(liquidityWallet, _amount); } function totalBountyPaid(address _wallet) external view returns (uint256) { address shareholder = _wallet; return uint256(shares[shareholder].totalRealised); } function bountyContribution(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getRemainingBounty(shareholder); if (amount > 0) { totalPaidBounty = totalPaidBounty.add(amount); IERC20(MakeDAO).transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder] .totalRealised .add(amount); shares[shareholder].totalExcluded = getCurrentBounty( shares[shareholder].amount ); } } function getRemainingBounty(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalBounties = getCurrentBounty( shares[shareholder].amount ); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalBounties <= shareholderTotalExcluded) { return 0; } return shareholderTotalBounties.sub(shareholderTotalExcluded); } function getCurrentBounty(uint256 share) internal view returns (uint256) { return share.mul(bountiesPerShare).div(bountiesPerShareAccuracyFactor); } function updateShareholder(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(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MakeDAO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bountyAvailability","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bountyGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getRemainingBounty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liveTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBounty","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"runBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setbountyAvailability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","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":"sharingBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBounties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalBountyPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPaidBounty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a62000599565b620000239064012a05f200620005b1565b60015561271060015460c86200003a9190620005b1565b620000469190620005cb565b60025561271060015460c86200005d9190620005b1565b620000699190620005cb565b60035561271060015460c8620000809190620005b1565b6200008c9190620005cb565b600455600b805460ff60a01b191690556000600c81905561012c600d556064600e819055600f829055601082905561019060118190556012556013919091556127106014556015805460ff1916600190811790915554620186a091620000f39190620005b1565b620000ff9190620005cb565b601855620186a06001546007620001179190620005b1565b620001239190620005cb565b601955601a80546001600160a01b031916736b175474e89094c44da98b954eedeac495271d0f1790556ec097ce7bc90715b34b9f1000000000601f55610258602555662386f26fc1000060265560016027553480156200018257600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002109190620005ee565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002849190620005ee565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f89190620005ee565b600a80546001600160a01b038581166001600160a01b031992831617909255600b80548484169216919091178155306000818152600760209081526040808320805460ff1990811660019081179092553380865283862080548316841781557fedce2160c050a49599ea29488262f46ba7aee6ae939ac22c33c00cda2fb64fd680548416851790557fa2e9e17d44d5e14cf1ea2de377dbd1c128c44abb164eeae3c555f3f69745234d8054841685179055805483168417905596549097168452600883528184208054881682179055858452818420805488168217905593835280832080548716851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548716851790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909616841790955591548382526005835284822081905593519384529394509092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000619565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004db578160001904821115620004bf57620004bf62000484565b80851615620004cd57918102915b93841c93908002906200049f565b509250929050565b600082620004f45750600162000593565b81620005035750600062000593565b81600181146200051c5760028114620005275762000547565b600191505062000593565b60ff8411156200053b576200053b62000484565b50506001821b62000593565b5060208310610133831016604e8410600b84101617156200056c575081810a62000593565b6200057883836200049a565b80600019048211156200058f576200058f62000484565b0290505b92915050565b6000620005aa60ff841683620004e3565b9392505050565b808202811582820484141762000593576200059362000484565b600082620005e957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200060157600080fd5b81516001600160a01b0381168114620005aa57600080fd5b612bfa80620006296000396000f3fe60806040526004361061023f5760003560e01c806375f0a8741161012e578063b3610099116100ab578063dd62ed3e1161006f578063dd62ed3e14610738578063e2d6f94c1461077e578063f2fde38b1461079e578063fac91ae3146107be578063ffd49c84146107d457600080fd5b8063b361009914610641578063c04a541414610661578063c62de73014610689578063ce7c2ac2146106b9578063d46980161461071057600080fd5b80638c41180e116100f25780638c41180e1461059f5780639358928b146105bf57806395d89b41146105d4578063a8aa1b3114610601578063a9059cbb1461062157600080fd5b806375f0a8741461050d57806385feeb2314610535578063893c7eac1461054b578063893d20e81461056b57806389b8db551461058957600080fd5b806330cc83e4116101bc57806344579b321161018057806344579b321461048e57806348ff2b8b146104a357806362256589146104c357806370a08231146104d8578063715018a6146104f857600080fd5b806330cc83e4146103f7578063313ce5671461040c57806334c5d2ce146104285780633a98ef39146104485780633f4218e01461045e57600080fd5b806323b872dd1161020357806323b872dd146103395780632cd7e977146103595780632cebc1a91461036f5780632de6de93146103a85780632f54bf6e146103c857600080fd5b806306fdde031461024b578063095ea7b314610290578063102afbcd146102c057806316250a23146102e257806318160ddd1461031a57600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5060408051808201909152600a81526943756c746d696e61746960b01b60208201525b6040516102879190612766565b60405180910390f35b34801561029c57600080fd5b506102b06102ab3660046127cc565b6107ea565b6040519015158152602001610287565b3480156102cc57600080fd5b506102e06102db366004612806565b610801565b005b3480156102ee57600080fd5b50601a54610302906001600160a01b031681565b6040516001600160a01b039091168152602001610287565b34801561032657600080fd5b506001545b604051908152602001610287565b34801561034557600080fd5b506102b061035436600461283f565b610882565b34801561036557600080fd5b5061032b60275481565b34801561037b57600080fd5b5061032b61038a366004612880565b6001600160a01b031660009081526023602052604090206002015490565b3480156103b457600080fd5b5061032b6103c3366004612880565b6108ec565b3480156103d457600080fd5b506102b06103e3366004612880565b6000546001600160a01b0391821691161490565b34801561040357600080fd5b506102e0610977565b34801561041857600080fd5b5060405160098152602001610287565b34801561043457600080fd5b506102e061044336600461289d565b610982565b34801561045457600080fd5b5061032b601b5481565b34801561046a57600080fd5b506102b0610479366004612880565b60076020526000908152604090205460ff1681565b34801561049a57600080fd5b506102e0610ad6565b3480156104af57600080fd5b506102e06104be366004612806565b610b15565b3480156104cf57600080fd5b506102e0610b6a565b3480156104e457600080fd5b5061032b6104f3366004612880565b610ba8565b34801561050457600080fd5b506102e0610bc3565b34801561051957600080fd5b50610302730200e3caa12068080d315022da0695e8598f03f881565b34801561054157600080fd5b5061032b601c5481565b34801561055757600080fd5b506102e06105663660046128c9565b610c32565b34801561057757600080fd5b506000546001600160a01b0316610302565b34801561059557600080fd5b5061032b60265481565b3480156105ab57600080fd5b506102e06105ba366004612806565b610ebd565b3480156105cb57600080fd5b5061032b610f94565b3480156105e057600080fd5b5060408051808201909152600481526310d3539560e21b602082015261027a565b34801561060d57600080fd5b50600b54610302906001600160a01b031681565b34801561062d57600080fd5b506102b061063c3660046127cc565b610fc5565b34801561064d57600080fd5b506102e061065c3660046128f0565b610fd2565b34801561066d57600080fd5b5061030273a6b2b7026f361f5b7b7ad7a21d1e780080f281b681565b34801561069557600080fd5b506102b06106a4366004612880565b60086020526000908152604090205460ff1681565b3480156106c557600080fd5b506106f56106d4366004612880565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610287565b34801561071c57600080fd5b5061030273504d0e726e66f3de1d66353374fcfa536076afc181565b34801561074457600080fd5b5061032b610753366004612909565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561078a57600080fd5b506102e0610799366004612937565b61105b565b3480156107aa57600080fd5b506102e06107b9366004612880565b611161565b3480156107ca57600080fd5b5061032b601d5481565b3480156107e057600080fd5b5061032b60255481565b60006107f73384846111df565b5060015b92915050565b6000546001600160a01b031633146108345760405162461bcd60e51b815260040161082b9061298c565b60405180910390fd5b6001600160a01b0382166000908152600860205260409020805460ff191682158015919091179091556108705761086c826000611303565b5050565b61086c8261087d84610ba8565b611303565b600061088f84848461143c565b6108e184336108dc85604051806060016040528060288152602001612b9d602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906115e2565b6111df565b5060015b9392505050565b6001600160a01b038116600090815260236020526040812054810361091357506000919050565b6001600160a01b0382166000908152602360205260408120546109359061160e565b6001600160a01b038416600090815260236020526040902060010154909150808211610965575060009392505050565b61096f828261162b565b949350505050565b61098033611637565b565b6000546001600160a01b031633146109ac5760405162461bcd60e51b815260040161082b9061298c565b6000612710846109bb60015490565b6109c591906129c2565b6109cf91906129d9565b90506000612710846109e060015490565b6109ea91906129c2565b6109f491906129d9565b9050600061271084610a0560015490565b610a0f91906129c2565b610a1991906129d9565b60028490556003839055600481905590506000610a4c6103e8610a466005610a4060015490565b90611751565b9061175d565b9050808410158015610a5e5750808310155b8015610a6a5750808210155b610acd5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161082b565b50505050505050565b6000546001600160a01b03163314610b005760405162461bcd60e51b815260040161082b9061298c565b600b805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610b3f5760405162461bcd60e51b815260040161082b9061298c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b945760405162461bcd60e51b815260040161082b9061298c565b600154600255600154600355600154600455565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610bed5760405162461bcd60e51b815260040161082b9061298c565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b602054336000829003610c46575050505050565b6000805a336000908152600560209081526040808320546008909252822054929350909160ff16610d44575b8884108015610c8057508582105b15610d3f578560245410610c945760006024555b610cc6602060245481548110610cac57610cac6129fb565b6000918252602090912001546001600160a01b0316611769565b15610cfd57610cfd602060245481548110610ce357610ce36129fb565b6000918252602090912001546001600160a01b0316611637565b610d12610d0b5a859061162b565b85906117ae565b93505a602480549194506000610d2783612a11565b91905055508180610d3790612a11565b925050610c72565b610eb2565b6000610d4f866108ec565b6001600160a01b038a16600090815260056020526040902054909150610d75908961162b565b6001600160a01b038a16600090815260056020526040902055610d988883612a2a565b336000908152600560205260409020558015610eb057601d54610dbb90826117ae565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e359190612a3d565b506001600160a01b03861660009081526022602090815260408083204290556023909152902060020154610e6990826117ae565b6001600160a01b0387166000908152602360205260409020600281019190915554610e939061160e565b6001600160a01b0387166000908152602360205260409020600101555b505b505050505050505050565b6000546001600160a01b03163314610ee75760405162461bcd60e51b815260040161082b9061298c565b600b546001600160a01b03838116911614801590610f135750600a546001600160a01b03838116911614155b8015610f2857506001600160a01b0382163014155b610f695760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b604482015260640161082b565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610fc0610fa36000610ba8565b610fba610fb161dead610ba8565b6001549061162b565b9061162b565b905090565b60006107f733848461143c565b601a5460405163a9059cbb60e01b815273504d0e726e66f3de1d66353374fcfa536076afc16004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c9190612a3d565b6000546001600160a01b031633146110855760405162461bcd60e51b815260040161082b9061298c565b600c889055600d8790556010869055600e859055600f8490556011839055601282905560138190556014546110bb90600561175d565b601154111580156110db57506014546110d590600561175d565b60125411155b80156110f657506014546110f090600561175d565b60135411155b6111575760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161082b565b5050505050505050565b6000546001600160a01b0316331461118b5760405162461bcd60e51b815260040161082b9061298c565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166112415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082b565b6001600160a01b0382166112a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082b565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111801561132957506001600160a01b038216600090815260236020526040902054155b1561138e57602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556113c1565b801580156113b357506001600160a01b03821660009081526023602052604090205415155b156113c1576113c1826117ba565b6001600160a01b038216600090815260236020526040902054601b546113f29183916113ec9161162b565b906117ae565b601b556001600160a01b03821660009081526023602052604090208190556114198161160e565b6001600160a01b0390921660009081526023602052604090206001019190915550565b6114478383836118ce565b6114518383611a6d565b61145c838383611afe565b6114668383611bea565b611471838383611c41565b61147b8383611d6e565b6001600160a01b03831660009081526005602052604090205461149e908261162b565b6001600160a01b0384166000908152600560205260408120919091556114c48484611d91565b6114ce57816114d9565b6114d9848484611dd7565b6001600160a01b0384166000908152600560205260409020549091506114ff90826117ae565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115539085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff16611588576115888461087d86610ba8565b6001600160a01b03831660009081526008602052604090205460ff166115b5576115b58361087d85610ba8565b6001600160a01b038316600090815260236020526040902054156115dc576115dc83611637565b50505050565b600081848411156116065760405162461bcd60e51b815260040161082b9190612766565b505050900390565b60006107fb601f54610a46601e548561175190919063ffffffff16565b60006108e58284612a5a565b6001600160a01b03811660009081526023602052604081205490036116595750565b6000611664826108ec565b9050801561086c57601d5461167990826117ae565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190612a3d565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461172790826117ae565b6001600160a01b03831660009081526023602052604090206002810191909155546114199061160e565b60006108e582846129c2565b60006108e582846129d9565b6025546001600160a01b038216600090815260226020526040812054909142916117939190612a2a565b1080156107fb57506026546117a7836108ec565b1192915050565b60006108e58284612a2a565b602080546117ca90600190612a5a565b815481106117da576117da6129fb565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611814576118146129fb565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260218083526040822054835490939192919061185f90600190612a5a565b8154811061186f5761186f6129fb565b60009182526020808320909101546001600160a01b031683528281019390935260409091019020919091558054806118a9576118a9612a6d565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6001600160a01b0383166119325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082b565b6001600160a01b0382166119945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082b565b600081116119f65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082b565b6119ff83610ba8565b811115611a685760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161082b565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015611aaf57506001600160a01b03811660009081526007602052604090205460ff16155b1561086c57600b54600160a01b900460ff1661086c5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161082b565b6001600160a01b03831660009081526007602052604090205460ff16158015611b4057506001600160a01b03821660009081526007602052604090205460ff16155b8015611b5a5750600b546001600160a01b03838116911614155b8015611b7157506001600160a01b03821661dead14155b15611a68576004546001600160a01b038316600090815260056020526040902054611b9c90836117ae565b1115611a685760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161082b565b600b546001600160a01b038281169116148015611c2057506001600160a01b03821660009081526007602052604090205460ff16155b1561086c57600160166000828254611c389190612a2a565b90915550505050565b600b546001600160a01b03848116911614611ce25760035481111580611c7f57506001600160a01b03831660009081526007602052604090205460ff165b80611ca257506001600160a01b03821660009081526007602052604090205460ff165b611ce25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161082b565b60025481111580611d0b57506001600160a01b03831660009081526007602052604090205460ff165b80611d2e57506001600160a01b03821660009081526007602052604090205460ff165b611a685760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161082b565b611d788282611ec5565b1561086c57611d88601854611f74565b60006016555050565b6001600160a01b03821660009081526007602052604081205460ff161580156108e55750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611de48585612133565b1115611ebe576000611e07611df98686612133565b601454610a4090869061175d565b30600090815260056020526040902054909150611e2490826117ae565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e759085815260200190565b60405180910390a360105415611eac57611eac3061dead611ea7601054610a406014548961175d90919063ffffffff16565b61143c565b611eb6838261162b565b9150506108e5565b5092915050565b600080601854611ed430610ba8565b601754911115915060ff16158015611eee575060155460ff165b8015611f035750600b54600160a01b900460ff165b8015611f2857506001600160a01b03841660009081526007602052604090205460ff16155b8015611f4d57506001600160a01b03831660009081526007602052604090205460ff16155b8015611f665750600b546001600160a01b038481169116145b801561096f57509392505050565b6001601760006101000a81548160ff0219169083151502179055506000611fbe6002610a40600e546113ec600f546113ec600d546113ec6001600c546117ae90919063ffffffff16565b90506000611fdb82610a46600c548661175190919063ffffffff16565b90506000611fe9848361162b565b905047611ff5826121d4565b6000612001478361162b565b9050600061202461201d600c548861162b90919063ffffffff16565b839061175d565b9050600061203d600c548361175190919063ffffffff16565b9050801561204f5761204f868261232e565b600d5460009061206490610a40856002611751565b905080156120af57604051730200e3caa12068080d315022da0695e8598f03f89082156108fc029083906000818181858888f193505050501580156120ad573d6000803e3d6000fd5b505b600e546000906120c490610a40866002611751565b905080156120d5576120d5816123f2565b471561211d5760405173a6b2b7026f361f5b7b7ad7a21d1e780080f281b6904780156108fc02916000818181858888f1935050505015801561211b573d6000803e3d6000fd5b505b50506017805460ff191690555050505050505050565b6001600160a01b03821660009081526009602052604081205460ff168061217257506001600160a01b03821660009081526009602052604090205460ff165b1561218c5760145461218590606461162b565b90506107fb565b600b546001600160a01b03908116908316036121ab57506012546107fb565b600b546001600160a01b03908116908416036121ca57506011546107fb565b5060135492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612209576122096129fb565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122869190612a83565b81600181518110612299576122996129fb565b6001600160a01b039283166020918202929092010152600a546122bf91309116846111df565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906122f8908590600090869030904290600401612ae4565b600060405180830381600087803b15801561231257600080fd5b505af1158015612326573d6000803e3d6000fd5b505050505050565b600a546123469030906001600160a01b0316846111df565b600a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273504d0e726e66f3de1d66353374fcfa536076afc160848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156123c6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123eb9190612b20565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561243b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245f9190612b4e565b60408051600280825260608201835292935060009290916020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156124ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f29190612a83565b81600081518110612505576125056129fb565b6001600160a01b039283166020918202929092010152601a54825191169082906001908110612536576125366129fb565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de9590859061257c90600090869030904290600401612b67565b6000604051808303818588803b15801561259557600080fd5b505af11580156125a9573d6000803e3d6000fd5b5050601a54600b546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319150602401602060405180830381865afa1580156125fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126219190612b4e565b601a546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561266f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126939190612b4e565b905060006126a1828661162b565b9050600061271e6126b284866117ae565b601a546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156126fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba9190612b4e565b905061273661272d83836117ae565b601c54906117ae565b601c55601b54601f5461275a9161275191610a469086611751565b601e54906117ae565b601e5550505050505050565b600060208083528351808285015260005b8181101561279357858101830151858201604001528201612777565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146127c957600080fd5b50565b600080604083850312156127df57600080fd5b82356127ea816127b4565b946020939093013593505050565b80151581146127c957600080fd5b6000806040838503121561281957600080fd5b8235612824816127b4565b91506020830135612834816127f8565b809150509250929050565b60008060006060848603121561285457600080fd5b833561285f816127b4565b9250602084013561286f816127b4565b929592945050506040919091013590565b60006020828403121561289257600080fd5b81356108e5816127b4565b6000806000606084860312156128b257600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156128de57600080fd5b83359250602084013561286f816127b4565b60006020828403121561290257600080fd5b5035919050565b6000806040838503121561291c57600080fd5b8235612927816127b4565b91506020830135612834816127b4565b600080600080600080600080610100898b03121561295457600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107fb576107fb6129ac565b6000826129f657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612a2357612a236129ac565b5060010190565b808201808211156107fb576107fb6129ac565b600060208284031215612a4f57600080fd5b81516108e5816127f8565b818103818111156107fb576107fb6129ac565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612a9557600080fd5b81516108e5816127b4565b600081518084526020808501945080840160005b83811015612ad95781516001600160a01b031687529582019590820190600101612ab4565b509495945050505050565b85815284602082015260a060408201526000612b0360a0830186612aa0565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612b3557600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612b6057600080fd5b5051919050565b848152608060208201526000612b806080830186612aa0565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208acba36db94b6b7c3877c513c72433188e6dab0c5df18843856aa2f916f128d564736f6c63430008110033
Deployed Bytecode
0x60806040526004361061023f5760003560e01c806375f0a8741161012e578063b3610099116100ab578063dd62ed3e1161006f578063dd62ed3e14610738578063e2d6f94c1461077e578063f2fde38b1461079e578063fac91ae3146107be578063ffd49c84146107d457600080fd5b8063b361009914610641578063c04a541414610661578063c62de73014610689578063ce7c2ac2146106b9578063d46980161461071057600080fd5b80638c41180e116100f25780638c41180e1461059f5780639358928b146105bf57806395d89b41146105d4578063a8aa1b3114610601578063a9059cbb1461062157600080fd5b806375f0a8741461050d57806385feeb2314610535578063893c7eac1461054b578063893d20e81461056b57806389b8db551461058957600080fd5b806330cc83e4116101bc57806344579b321161018057806344579b321461048e57806348ff2b8b146104a357806362256589146104c357806370a08231146104d8578063715018a6146104f857600080fd5b806330cc83e4146103f7578063313ce5671461040c57806334c5d2ce146104285780633a98ef39146104485780633f4218e01461045e57600080fd5b806323b872dd1161020357806323b872dd146103395780632cd7e977146103595780632cebc1a91461036f5780632de6de93146103a85780632f54bf6e146103c857600080fd5b806306fdde031461024b578063095ea7b314610290578063102afbcd146102c057806316250a23146102e257806318160ddd1461031a57600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5060408051808201909152600a81526943756c746d696e61746960b01b60208201525b6040516102879190612766565b60405180910390f35b34801561029c57600080fd5b506102b06102ab3660046127cc565b6107ea565b6040519015158152602001610287565b3480156102cc57600080fd5b506102e06102db366004612806565b610801565b005b3480156102ee57600080fd5b50601a54610302906001600160a01b031681565b6040516001600160a01b039091168152602001610287565b34801561032657600080fd5b506001545b604051908152602001610287565b34801561034557600080fd5b506102b061035436600461283f565b610882565b34801561036557600080fd5b5061032b60275481565b34801561037b57600080fd5b5061032b61038a366004612880565b6001600160a01b031660009081526023602052604090206002015490565b3480156103b457600080fd5b5061032b6103c3366004612880565b6108ec565b3480156103d457600080fd5b506102b06103e3366004612880565b6000546001600160a01b0391821691161490565b34801561040357600080fd5b506102e0610977565b34801561041857600080fd5b5060405160098152602001610287565b34801561043457600080fd5b506102e061044336600461289d565b610982565b34801561045457600080fd5b5061032b601b5481565b34801561046a57600080fd5b506102b0610479366004612880565b60076020526000908152604090205460ff1681565b34801561049a57600080fd5b506102e0610ad6565b3480156104af57600080fd5b506102e06104be366004612806565b610b15565b3480156104cf57600080fd5b506102e0610b6a565b3480156104e457600080fd5b5061032b6104f3366004612880565b610ba8565b34801561050457600080fd5b506102e0610bc3565b34801561051957600080fd5b50610302730200e3caa12068080d315022da0695e8598f03f881565b34801561054157600080fd5b5061032b601c5481565b34801561055757600080fd5b506102e06105663660046128c9565b610c32565b34801561057757600080fd5b506000546001600160a01b0316610302565b34801561059557600080fd5b5061032b60265481565b3480156105ab57600080fd5b506102e06105ba366004612806565b610ebd565b3480156105cb57600080fd5b5061032b610f94565b3480156105e057600080fd5b5060408051808201909152600481526310d3539560e21b602082015261027a565b34801561060d57600080fd5b50600b54610302906001600160a01b031681565b34801561062d57600080fd5b506102b061063c3660046127cc565b610fc5565b34801561064d57600080fd5b506102e061065c3660046128f0565b610fd2565b34801561066d57600080fd5b5061030273a6b2b7026f361f5b7b7ad7a21d1e780080f281b681565b34801561069557600080fd5b506102b06106a4366004612880565b60086020526000908152604090205460ff1681565b3480156106c557600080fd5b506106f56106d4366004612880565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610287565b34801561071c57600080fd5b5061030273504d0e726e66f3de1d66353374fcfa536076afc181565b34801561074457600080fd5b5061032b610753366004612909565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561078a57600080fd5b506102e0610799366004612937565b61105b565b3480156107aa57600080fd5b506102e06107b9366004612880565b611161565b3480156107ca57600080fd5b5061032b601d5481565b3480156107e057600080fd5b5061032b60255481565b60006107f73384846111df565b5060015b92915050565b6000546001600160a01b031633146108345760405162461bcd60e51b815260040161082b9061298c565b60405180910390fd5b6001600160a01b0382166000908152600860205260409020805460ff191682158015919091179091556108705761086c826000611303565b5050565b61086c8261087d84610ba8565b611303565b600061088f84848461143c565b6108e184336108dc85604051806060016040528060288152602001612b9d602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906115e2565b6111df565b5060015b9392505050565b6001600160a01b038116600090815260236020526040812054810361091357506000919050565b6001600160a01b0382166000908152602360205260408120546109359061160e565b6001600160a01b038416600090815260236020526040902060010154909150808211610965575060009392505050565b61096f828261162b565b949350505050565b61098033611637565b565b6000546001600160a01b031633146109ac5760405162461bcd60e51b815260040161082b9061298c565b6000612710846109bb60015490565b6109c591906129c2565b6109cf91906129d9565b90506000612710846109e060015490565b6109ea91906129c2565b6109f491906129d9565b9050600061271084610a0560015490565b610a0f91906129c2565b610a1991906129d9565b60028490556003839055600481905590506000610a4c6103e8610a466005610a4060015490565b90611751565b9061175d565b9050808410158015610a5e5750808310155b8015610a6a5750808210155b610acd5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161082b565b50505050505050565b6000546001600160a01b03163314610b005760405162461bcd60e51b815260040161082b9061298c565b600b805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610b3f5760405162461bcd60e51b815260040161082b9061298c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b945760405162461bcd60e51b815260040161082b9061298c565b600154600255600154600355600154600455565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610bed5760405162461bcd60e51b815260040161082b9061298c565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b602054336000829003610c46575050505050565b6000805a336000908152600560209081526040808320546008909252822054929350909160ff16610d44575b8884108015610c8057508582105b15610d3f578560245410610c945760006024555b610cc6602060245481548110610cac57610cac6129fb565b6000918252602090912001546001600160a01b0316611769565b15610cfd57610cfd602060245481548110610ce357610ce36129fb565b6000918252602090912001546001600160a01b0316611637565b610d12610d0b5a859061162b565b85906117ae565b93505a602480549194506000610d2783612a11565b91905055508180610d3790612a11565b925050610c72565b610eb2565b6000610d4f866108ec565b6001600160a01b038a16600090815260056020526040902054909150610d75908961162b565b6001600160a01b038a16600090815260056020526040902055610d988883612a2a565b336000908152600560205260409020558015610eb057601d54610dbb90826117ae565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e359190612a3d565b506001600160a01b03861660009081526022602090815260408083204290556023909152902060020154610e6990826117ae565b6001600160a01b0387166000908152602360205260409020600281019190915554610e939061160e565b6001600160a01b0387166000908152602360205260409020600101555b505b505050505050505050565b6000546001600160a01b03163314610ee75760405162461bcd60e51b815260040161082b9061298c565b600b546001600160a01b03838116911614801590610f135750600a546001600160a01b03838116911614155b8015610f2857506001600160a01b0382163014155b610f695760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b604482015260640161082b565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610fc0610fa36000610ba8565b610fba610fb161dead610ba8565b6001549061162b565b9061162b565b905090565b60006107f733848461143c565b601a5460405163a9059cbb60e01b815273504d0e726e66f3de1d66353374fcfa536076afc16004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c9190612a3d565b6000546001600160a01b031633146110855760405162461bcd60e51b815260040161082b9061298c565b600c889055600d8790556010869055600e859055600f8490556011839055601282905560138190556014546110bb90600561175d565b601154111580156110db57506014546110d590600561175d565b60125411155b80156110f657506014546110f090600561175d565b60135411155b6111575760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161082b565b5050505050505050565b6000546001600160a01b0316331461118b5760405162461bcd60e51b815260040161082b9061298c565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166112415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082b565b6001600160a01b0382166112a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082b565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111801561132957506001600160a01b038216600090815260236020526040902054155b1561138e57602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556113c1565b801580156113b357506001600160a01b03821660009081526023602052604090205415155b156113c1576113c1826117ba565b6001600160a01b038216600090815260236020526040902054601b546113f29183916113ec9161162b565b906117ae565b601b556001600160a01b03821660009081526023602052604090208190556114198161160e565b6001600160a01b0390921660009081526023602052604090206001019190915550565b6114478383836118ce565b6114518383611a6d565b61145c838383611afe565b6114668383611bea565b611471838383611c41565b61147b8383611d6e565b6001600160a01b03831660009081526005602052604090205461149e908261162b565b6001600160a01b0384166000908152600560205260408120919091556114c48484611d91565b6114ce57816114d9565b6114d9848484611dd7565b6001600160a01b0384166000908152600560205260409020549091506114ff90826117ae565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115539085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff16611588576115888461087d86610ba8565b6001600160a01b03831660009081526008602052604090205460ff166115b5576115b58361087d85610ba8565b6001600160a01b038316600090815260236020526040902054156115dc576115dc83611637565b50505050565b600081848411156116065760405162461bcd60e51b815260040161082b9190612766565b505050900390565b60006107fb601f54610a46601e548561175190919063ffffffff16565b60006108e58284612a5a565b6001600160a01b03811660009081526023602052604081205490036116595750565b6000611664826108ec565b9050801561086c57601d5461167990826117ae565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190612a3d565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461172790826117ae565b6001600160a01b03831660009081526023602052604090206002810191909155546114199061160e565b60006108e582846129c2565b60006108e582846129d9565b6025546001600160a01b038216600090815260226020526040812054909142916117939190612a2a565b1080156107fb57506026546117a7836108ec565b1192915050565b60006108e58284612a2a565b602080546117ca90600190612a5a565b815481106117da576117da6129fb565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611814576118146129fb565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260218083526040822054835490939192919061185f90600190612a5a565b8154811061186f5761186f6129fb565b60009182526020808320909101546001600160a01b031683528281019390935260409091019020919091558054806118a9576118a9612a6d565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6001600160a01b0383166119325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082b565b6001600160a01b0382166119945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082b565b600081116119f65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082b565b6119ff83610ba8565b811115611a685760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161082b565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015611aaf57506001600160a01b03811660009081526007602052604090205460ff16155b1561086c57600b54600160a01b900460ff1661086c5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161082b565b6001600160a01b03831660009081526007602052604090205460ff16158015611b4057506001600160a01b03821660009081526007602052604090205460ff16155b8015611b5a5750600b546001600160a01b03838116911614155b8015611b7157506001600160a01b03821661dead14155b15611a68576004546001600160a01b038316600090815260056020526040902054611b9c90836117ae565b1115611a685760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161082b565b600b546001600160a01b038281169116148015611c2057506001600160a01b03821660009081526007602052604090205460ff16155b1561086c57600160166000828254611c389190612a2a565b90915550505050565b600b546001600160a01b03848116911614611ce25760035481111580611c7f57506001600160a01b03831660009081526007602052604090205460ff165b80611ca257506001600160a01b03821660009081526007602052604090205460ff165b611ce25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161082b565b60025481111580611d0b57506001600160a01b03831660009081526007602052604090205460ff165b80611d2e57506001600160a01b03821660009081526007602052604090205460ff165b611a685760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161082b565b611d788282611ec5565b1561086c57611d88601854611f74565b60006016555050565b6001600160a01b03821660009081526007602052604081205460ff161580156108e55750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611de48585612133565b1115611ebe576000611e07611df98686612133565b601454610a4090869061175d565b30600090815260056020526040902054909150611e2490826117ae565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e759085815260200190565b60405180910390a360105415611eac57611eac3061dead611ea7601054610a406014548961175d90919063ffffffff16565b61143c565b611eb6838261162b565b9150506108e5565b5092915050565b600080601854611ed430610ba8565b601754911115915060ff16158015611eee575060155460ff165b8015611f035750600b54600160a01b900460ff165b8015611f2857506001600160a01b03841660009081526007602052604090205460ff16155b8015611f4d57506001600160a01b03831660009081526007602052604090205460ff16155b8015611f665750600b546001600160a01b038481169116145b801561096f57509392505050565b6001601760006101000a81548160ff0219169083151502179055506000611fbe6002610a40600e546113ec600f546113ec600d546113ec6001600c546117ae90919063ffffffff16565b90506000611fdb82610a46600c548661175190919063ffffffff16565b90506000611fe9848361162b565b905047611ff5826121d4565b6000612001478361162b565b9050600061202461201d600c548861162b90919063ffffffff16565b839061175d565b9050600061203d600c548361175190919063ffffffff16565b9050801561204f5761204f868261232e565b600d5460009061206490610a40856002611751565b905080156120af57604051730200e3caa12068080d315022da0695e8598f03f89082156108fc029083906000818181858888f193505050501580156120ad573d6000803e3d6000fd5b505b600e546000906120c490610a40866002611751565b905080156120d5576120d5816123f2565b471561211d5760405173a6b2b7026f361f5b7b7ad7a21d1e780080f281b6904780156108fc02916000818181858888f1935050505015801561211b573d6000803e3d6000fd5b505b50506017805460ff191690555050505050505050565b6001600160a01b03821660009081526009602052604081205460ff168061217257506001600160a01b03821660009081526009602052604090205460ff165b1561218c5760145461218590606461162b565b90506107fb565b600b546001600160a01b03908116908316036121ab57506012546107fb565b600b546001600160a01b03908116908416036121ca57506011546107fb565b5060135492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612209576122096129fb565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122869190612a83565b81600181518110612299576122996129fb565b6001600160a01b039283166020918202929092010152600a546122bf91309116846111df565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906122f8908590600090869030904290600401612ae4565b600060405180830381600087803b15801561231257600080fd5b505af1158015612326573d6000803e3d6000fd5b505050505050565b600a546123469030906001600160a01b0316846111df565b600a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273504d0e726e66f3de1d66353374fcfa536076afc160848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156123c6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123eb9190612b20565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561243b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245f9190612b4e565b60408051600280825260608201835292935060009290916020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156124ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f29190612a83565b81600081518110612505576125056129fb565b6001600160a01b039283166020918202929092010152601a54825191169082906001908110612536576125366129fb565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de9590859061257c90600090869030904290600401612b67565b6000604051808303818588803b15801561259557600080fd5b505af11580156125a9573d6000803e3d6000fd5b5050601a54600b546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319150602401602060405180830381865afa1580156125fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126219190612b4e565b601a546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561266f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126939190612b4e565b905060006126a1828661162b565b9050600061271e6126b284866117ae565b601a546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156126fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba9190612b4e565b905061273661272d83836117ae565b601c54906117ae565b601c55601b54601f5461275a9161275191610a469086611751565b601e54906117ae565b601e5550505050505050565b600060208083528351808285015260005b8181101561279357858101830151858201604001528201612777565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146127c957600080fd5b50565b600080604083850312156127df57600080fd5b82356127ea816127b4565b946020939093013593505050565b80151581146127c957600080fd5b6000806040838503121561281957600080fd5b8235612824816127b4565b91506020830135612834816127f8565b809150509250929050565b60008060006060848603121561285457600080fd5b833561285f816127b4565b9250602084013561286f816127b4565b929592945050506040919091013590565b60006020828403121561289257600080fd5b81356108e5816127b4565b6000806000606084860312156128b257600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156128de57600080fd5b83359250602084013561286f816127b4565b60006020828403121561290257600080fd5b5035919050565b6000806040838503121561291c57600080fd5b8235612927816127b4565b91506020830135612834816127b4565b600080600080600080600080610100898b03121561295457600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107fb576107fb6129ac565b6000826129f657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612a2357612a236129ac565b5060010190565b808201808211156107fb576107fb6129ac565b600060208284031215612a4f57600080fd5b81516108e5816127f8565b818103818111156107fb576107fb6129ac565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612a9557600080fd5b81516108e5816127b4565b600081518084526020808501945080840160005b83811015612ad95781516001600160a01b031687529582019590820190600101612ab4565b509495945050505050565b85815284602082015260a060408201526000612b0360a0830186612aa0565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612b3557600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612b6057600080fd5b5051919050565b848152608060208201526000612b806080830186612aa0565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208acba36db94b6b7c3877c513c72433188e6dab0c5df18843856aa2f916f128d564736f6c63430008110033
Deployed Bytecode Sourcemap
6467:21749:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10133:83;;;;;;;;;;-1:-1:-1;10203:5:0;;;;;;;;;;;;-1:-1:-1;;;10203:5:0;;;;10133:83;;;;;;;:::i;:::-;;;;;;;;11558:191;;;;;;;;;;-1:-1:-1;11558:191:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;11558:191:0;1023:187:1;22040:292:0;;;;;;;;;;-1:-1:-1;22040:292:0;;;;;:::i;:::-;;:::i;:::-;;7998:67;;;;;;;;;;-1:-1:-1;7998:67:0;;;;-1:-1:-1;;;;;7998:67:0;;;;;;-1:-1:-1;;;;;1889:32:1;;;1871:51;;1859:2;1844:18;7998:67:0;1725:203:1;10600:100:0;;;;;;;;;;-1:-1:-1;10680:12:0;;10600:100;;;2079:25:1;;;2067:2;2052:18;10600:100:0;1933:177:1;21213:442:0;;;;;;;;;;-1:-1:-1;21213:442:0;;;;;:::i;:::-;;:::i;8702:28::-;;;;;;;;;;;;;;;;25988:214;;;;;;;;;;-1:-1:-1;25988:214:0;;;;;:::i;:::-;-1:-1:-1;;;;;26160:19:0;26080:7;26160:19;;;:6;:19;;;;;:33;;;;25988:214;26903:569;;;;;;;;;;-1:-1:-1;26903:569:0;;;;;:::i;:::-;;:::i;4447:103::-;;;;;;;;;;-1:-1:-1;4447:103:0;;;;;:::i;:::-;4502:4;4537:5;-1:-1:-1;;;;;4526:16:0;;;4537:5;;4526:16;;4447:103;8739:83;;;;;;;;;;;;;:::i;10319:::-;;;;;;;;;;-1:-1:-1;10319:83:0;;6679:1;2970:36:1;;2958:2;2943:18;10319:83:0;2828:184:1;14808:649:0;;;;;;;;;;-1:-1:-1;14808:649:0;;;;;:::i;:::-;;:::i;8072:26::-;;;;;;;;;;;;;;;;7074:43;;;;;;;;;;-1:-1:-1;7074:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10410:82;;;;;;;;;;;;;:::i;11426:124::-;;;;;;;;;;-1:-1:-1;11426:124:0;;;;;:::i;:::-;;:::i;14631:169::-;;;;;;;;;;;;;:::i;10708:119::-;;;;;;;;;;-1:-1:-1;10708:119:0;;;;;:::i;:::-;;:::i;4558:139::-;;;;;;;;;;;;;:::i;9096:84::-;;;;;;;;;;;;9138:42;9096:84;;8105:28;;;;;;;;;;;;;;;;23853:1693;;;;;;;;;;-1:-1:-1;23853:1693:0;;;;;:::i;:::-;;:::i;10500:92::-;;;;;;;;;;-1:-1:-1;10552:7:0;10579:5;-1:-1:-1;;;;;10579:5:0;10500:92;;8656:39;;;;;;;;;;;;;;;;14310:313;;;;;;;;;;-1:-1:-1;14310:313:0;;;;;:::i;:::-;;:::i;11757:154::-;;;;;;;;;;;;;:::i;10224:87::-;;;;;;;;;;-1:-1:-1;10296:7:0;;;;;;;;;;;;-1:-1:-1;;;10296:7:0;;;;10224:87;;7247:19;;;;;;;;;;-1:-1:-1;7247:19:0;;;;-1:-1:-1;;;;;7247:19:0;;;10835:197;;;;;;;;;;-1:-1:-1;10835:197:0;;;;;:::i;:::-;;:::i;25823:157::-;;;;;;;;;;-1:-1:-1;25823:157:0;;;;;:::i;:::-;;:::i;9003:86::-;;;;;;;;;;;;9047:42;9003:86;;7124:50;;;;;;;;;;-1:-1:-1;7124:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8530:39;;;;;;;;;;-1:-1:-1;8530:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4113:25:1;;;4169:2;4154:18;;4147:34;;;;4197:18;;;4190:34;4101:2;4086:18;8530:39:0;3911:319:1;8912:84:0;;;;;;;;;;;;8954:42;8912:84;;11040:184;;;;;;;;;;-1:-1:-1;11040:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;11189:18:0;;;11157:7;11189:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11040:184;13538:764;;;;;;;;;;-1:-1:-1;13538:764:0;;;;;:::i;:::-;;:::i;4705:136::-;;;;;;;;;;-1:-1:-1;4705:136:0;;;;;:::i;:::-;;:::i;8140:30::-;;;;;;;;;;;;;;;;8612:37;;;;;;;;;;;;;;;;11558:191;11660:4;11682:37;11691:10;11703:7;11712:6;11682:8;:37::i;:::-;-1:-1:-1;11737:4:0;11558:191;;;;;:::o;22040:292::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22153:26:0;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35;;-1:-1:-1;;22153:35:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;22199:126:::1;;22226:19;22235:6;22243:1;22226:8;:19::i;:::-;22040:292:::0;;:::o;22199:126::-:1;22278:35;22287:6;22295:17;22305:6;22295:9;:17::i;:::-;22278:8;:35::i;21213:442::-:0;21345:4;21362:36;21372:6;21380:9;21391:6;21362:9;:36::i;:::-;21409:216;21432:6;21453:10;21478:136;21532:6;21478:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21478:19:0;;;;;;:11;:19;;;;;;;;21498:10;21478:31;;;;;;;;;:136;:35;:136::i;:::-;21409:8;:216::i;:::-;-1:-1:-1;21643:4:0;21213:442;;;;;;:::o;26903:569::-;-1:-1:-1;;;;;27029:19:0;;27000:7;27029:19;;;:6;:19;;;;;:26;:31;;27025:72;;-1:-1:-1;27084:1:0;;26903:569;-1:-1:-1;26903:569:0:o;27025:72::-;-1:-1:-1;;;;;27173:19:0;;27107:32;27173:19;;;:6;:19;;;;;:26;27142:68;;:16;:68::i;:::-;-1:-1:-1;;;;;27256:19:0;;27221:32;27256:19;;;:6;:19;;;;;:33;;;27107:103;;-1:-1:-1;27304:52:0;;;27300:93;;-1:-1:-1;27380:1:0;;26903:569;-1:-1:-1;;;26903:569:0:o;27300:93::-;27410:54;:24;27439;27410:28;:54::i;:::-;27403:61;26903:569;-1:-1:-1;;;;26903:569:0:o;8739:83::-;8784:30;8803:10;8784:18;:30::i;:::-;8739:83::o;14808:649::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;14942:13:::1;14983:5;14975:4;14959:13;10680:12:::0;;;10600:100;14959:13:::1;:20;;;;:::i;:::-;14958:30;;;;:::i;:::-;14942:46;;14999:19;15048:5;15038:6;15022:13;10680:12:::0;;;10600:100;15022:13:::1;:22;;;;:::i;:::-;15021:32;;;;:::i;:::-;14999:54;;15064:17;15112:5;15101:7;15085:13;10680:12:::0;;;10600:100;15085:13:::1;:23;;;;:::i;:::-;15084:33;;;;:::i;:::-;15128:12;:20:::0;;;15159:14:::1;:28:::0;;;15198:15:::1;:27:::0;;;15064:53;-1:-1:-1;;15252:30:0::1;15277:4;15252:20;15270:1;15252:13;10680:12:::0;;;10600:100;15252:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;15236:46;;15324:5;15315;:14;;:38;;;;;15348:5;15333:11;:20;;15315:38;:60;;;;;15370:5;15357:9;:18;;15315:60;15293:156;;;::::0;-1:-1:-1;;;15293:156:0;;6617:2:1;15293:156:0::1;::::0;::::1;6599:21:1::0;6656:2;6636:18;;;6629:30;6695:34;6675:18;;;6668:62;-1:-1:-1;;;6746:18:1;;;6739:44;6800:19;;15293:156:0::1;6415:410:1::0;15293:156:0::1;14931:526;;;;14808:649:::0;;;:::o;10410:82::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;10463:14:::1;:21:::0;;-1:-1:-1;;;;10463:21:0::1;-1:-1:-1::0;;;10463:21:0::1;::::0;;10410:82::o;11426:124::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11510:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;11510:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11426:124::o;14631:169::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;10680:12;;14683::::1;:28:::0;10680:12;;14721:14:::1;:30:::0;10680:12;;14761:15:::1;:31:::0;14631:169::o;10708:119::-;-1:-1:-1;;;;;10801:18:0;10774:7;10801:18;;;:9;:18;;;;;;;10708:119::o;4558:139::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;4639:1:::1;4623:18:::0;;-1:-1:-1;;;;;;4623:18:0::1;::::0;;4657:32:::1;::::0;1871:51:1;;;4657:32:0::1;::::0;1859:2:1;1844:18;4657:32:0::1;;;;;;;4558:139::o:0;23853:1693::-;24001:12;:19;24046:10;23974:24;24071:21;;;24067:60;;24109:7;;23853:1693;;;:::o;24067:60::-;24137:15;24167;24185:9;24270:10;24205:18;24260:21;;;:9;:21;;;;;;;;;24297:18;:30;;;;;;24167:27;;-1:-1:-1;24205:18:0;;24297:30;;24292:1247;;24344:503;24361:3;24351:7;:13;:46;;;;;24381:16;24368:10;:29;24351:46;24344:503;;;24438:16;24422:12;;:32;24418:97;;24494:1;24479:12;:16;24418:97;24537:38;24548:12;24561;;24548:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;24548:26:0;24537:10;:38::i;:::-;24533:133;;;24600:46;24619:12;24632;;24619:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;24619:26:0;24600:18;:46::i;:::-;24694:35;24706:22;24718:9;24706:7;;:11;:22::i;:::-;24694:7;;:11;:35::i;:::-;24684:45;;24758:9;24786:12;:14;;24748:19;;-1:-1:-1;24786:12:0;:14;;;:::i;:::-;;;;;;24819:12;;;;;:::i;:::-;;;;24344:503;;;24292:1247;;;24879:14;24896:24;24915:4;24896:18;:24::i;:::-;-1:-1:-1;;;;;24957:19:0;;;;;;:9;:19;;;;;;24879:41;;-1:-1:-1;24957:32:0;;24981:7;24957:23;:32::i;:::-;-1:-1:-1;;;;;24935:19:0;;;;;;:9;:19;;;;;:54;25028:21;25042:7;25028:11;:21;:::i;:::-;25014:10;25004:21;;;;:9;:21;;;;;:45;25068:10;;25064:464;;25117:15;;:27;;25137:6;25117:19;:27::i;:::-;25099:15;:45;25170:7;;25163:38;;-1:-1:-1;;;25163:38:0;;-1:-1:-1;;;;;7424:32:1;;;25163:38:0;;;7406:51:1;7473:18;;;7466:34;;;25170:7:0;;;;25163:24;;7379:18:1;;25163:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;25220:23:0;;;;;;:17;:23;;;;;;;;25246:15;25220:41;;25309:6;:12;;;;;:26;;;:78;;25362:6;25309:30;:78::i;:::-;-1:-1:-1;;;;;25280:12:0;;;;;;:6;:12;;;;;:26;;;:107;;;;25474:19;25435:77;;:16;:77::i;:::-;-1:-1:-1;;;;;25406:12:0;;;;;;:6;:12;;;;;:26;;:106;25064:464;24864:675;24292:1247;23963:1583;;;;;;23853:1693;;;:::o;14310:313::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;14433:4:::1;::::0;-1:-1:-1;;;;;14413:25:0;;::::1;14433:4:::0;::::1;14413:25;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;14479:6:0::1;::::0;-1:-1:-1;;;;;14459:27:0;;::::1;14479:6:::0;::::1;14459:27;;14413:73;:119;;;;-1:-1:-1::0;;;;;;14507:25:0;::::1;14527:4;14507:25;;14413:119;14391:187;;;::::0;-1:-1:-1;;;14391:187:0;;7963:2:1;14391:187:0::1;::::0;::::1;7945:21:1::0;8002:2;7982:18;;;7975:30;-1:-1:-1;;;8021:18:1;;;8014:48;8079:18;;14391:187:0::1;7761:342:1::0;14391:187:0::1;-1:-1:-1::0;;;;;14589:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;14589:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14310:313::o;11757:154::-;11816:7;11843:60;11881:21;11899:1;11881:9;:21::i;:::-;11843:33;11860:15;8863:42;11860:9;:15::i;:::-;11843:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;11836:67;;11757:154;:::o;10835:197::-;10940:4;10962:40;10972:10;10984:9;10995:6;10962:9;:40::i;25823:157::-;25929:7;;25922:50;;-1:-1:-1;;;25922:50:0;;8954:42;25922:50;;;7406:51:1;7473:18;;;7466:34;;;-1:-1:-1;;;;;25929:7:0;;;;25922:24;;7379:18:1;;25922:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13538:764::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;13811:12:::1;:25:::0;;;13847:12:::1;:25:::0;;;13883:7:::1;:15:::0;;;13909:10:::1;:21:::0;;;13941:14:::1;:29:::0;;;13981:8:::1;:17:::0;;;14009:7:::1;:15:::0;;;14035:11:::1;:20:::0;;;14100:11:::1;::::0;:18:::1;::::0;14116:1:::1;14100:15;:18::i;:::-;14088:8;;:30;;:80;;;;-1:-1:-1::0;14150:11:0::1;::::0;:18:::1;::::0;14166:1:::1;14150:15;:18::i;:::-;14139:7;;:29;;14088:80;:134;;;;-1:-1:-1::0;14204:11:0::1;::::0;:18:::1;::::0;14220:1:::1;14204:15;:18::i;:::-;14189:11;;:33;;14088:134;14066:228;;;::::0;-1:-1:-1;;;14066:228:0;;8310:2:1;14066:228:0::1;::::0;::::1;8292:21:1::0;8349:2;8329:18;;;8322:30;8388:34;8368:18;;;8361:62;-1:-1:-1;;;8439:18:1;;;8432:42;8491:19;;14066:228:0::1;8108:408:1::0;14066:228:0::1;13538:764:::0;;;;;;;;:::o;4705:136::-;4502:4;4537:5;-1:-1:-1;;;;;4537:5:0;4397:10;4526:16;4381:38;;;;-1:-1:-1;;;4381:38:0;;;;;;;:::i;:::-;4781:5:::1;:11:::0;;-1:-1:-1;;;;;;4781:11:0::1;-1:-1:-1::0;;;;;4781:11:0;::::1;::::0;;::::1;::::0;;;4808:25:::1;::::0;1871:51:1;;;4808:25:0::1;::::0;1859:2:1;1844:18;4808:25:0::1;;;;;;;4705:136:::0;:::o;21663:369::-;-1:-1:-1;;;;;21790:19:0;;21782:68;;;;-1:-1:-1;;;21782:68:0;;8939:2:1;21782:68:0;;;8921:21:1;8978:2;8958:18;;;8951:30;9017:34;8997:18;;;8990:62;-1:-1:-1;;;9068:18:1;;;9061:34;9112:19;;21782:68:0;8737:400:1;21782:68:0;-1:-1:-1;;;;;21869:21:0;;21861:68;;;;-1:-1:-1;;;21861:68:0;;9344:2:1;21861:68:0;;;9326:21:1;9383:2;9363:18;;;9356:30;9422:34;9402:18;;;9395:62;-1:-1:-1;;;9473:18:1;;;9466:32;9515:19;;21861:68:0;9142:398:1;21861:68:0;-1:-1:-1;;;;;21940:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21992:32;;2079:25:1;;;21992:32:0;;2052:18:1;21992:32:0;;;;;;;21663:369;;;:::o;22340:545::-;22428:1;22419:6;:10;:45;;;;-1:-1:-1;;;;;;22433:19:0;;;;;;:6;:19;;;;;:26;:31;22419:45;22415:222;;;27797:12;:19;;-1:-1:-1;;;;;27763:31:0;;;;;;:18;:31;;;;;:53;;;27827:30;;;;;;;;;;;;;-1:-1:-1;;;;;;27827:30:0;;;;;;22415:222;;;22533:11;;:45;;;;-1:-1:-1;;;;;;22548:19:0;;22577:1;22548:19;;;:6;:19;;;;;:26;:30;;22533:45;22529:108;;;22595:30;22613:11;22595:17;:30::i;:::-;-1:-1:-1;;;;;22677:19:0;;;;;;:6;:19;;;;;:26;22661:11;;:55;;22709:6;;22661:43;;:15;:43::i;:::-;:47;;:55::i;:::-;22647:11;:69;-1:-1:-1;;;;;22727:19:0;;;;;;:6;:19;;;;;:35;;;22809:68;22756:6;22809:16;:68::i;:::-;-1:-1:-1;;;;;22773:19:0;;;;;;;:6;:19;;;;;:33;;:104;;;;-1:-1:-1;22340:545:0:o;12475:1055::-;12598:37;12609:6;12617:9;12628:6;12598:10;:37::i;:::-;12646:38;12666:6;12674:9;12646:19;:38::i;:::-;12695:41;12710:6;12718:9;12729:6;12695:14;:41::i;:::-;12747:35;12764:6;12772:9;12747:16;:35::i;:::-;12793:39;12806:6;12814:9;12825:6;12793:12;:39::i;:::-;12843:27;12852:6;12860:9;12843:8;:27::i;:::-;-1:-1:-1;;;;;12901:17:0;;;;;;:9;:17;;;;;;:29;;12923:6;12901:21;:29::i;:::-;-1:-1:-1;;;;;12881:17:0;;;;;;:9;:17;;;;;:49;;;;12966:32;12891:6;12988:9;12966:13;:32::i;:::-;:104;;13064:6;12966:104;;;13014:34;13022:6;13030:9;13041:6;13014:7;:34::i;:::-;-1:-1:-1;;;;;13104:20:0;;;;;;:9;:20;;;;;;12941:129;;-1:-1:-1;13104:40:0;;12941:129;13104:24;:40::i;:::-;-1:-1:-1;;;;;13081:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13160:43;;;;;;;;;;13188:14;2079:25:1;;2067:2;2052:18;;1933:177;13160:43:0;;;;;;;;-1:-1:-1;;;;;13219:26:0;;;;;;:18;:26;;;;;;;;13214:95;;13262:35;13271:6;13279:17;13289:6;13279:9;:17::i;13262:35::-;-1:-1:-1;;;;;13324:29:0;;;;;;:18;:29;;;;;;;;13319:104;;13370:41;13379:9;13390:20;13400:9;13390;:20::i;13370:41::-;-1:-1:-1;;;;;13437:17:0;;13464:1;13437:17;;;:6;:17;;;;;:24;:28;13433:90;;13482:29;13501:9;13482:18;:29::i;:::-;12587:943;12475:1055;;;:::o;2359:240::-;2479:7;2540:12;2532:6;;;;2524:29;;;;-1:-1:-1;;;2524:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2575:5:0;;;2359:240::o;27480:207::-;27571:7;27616:63;27648:30;;27616:27;27626:16;;27616:5;:9;;:27;;;;:::i;659:98::-;717:7;744:5;748:1;744;:5;:::i;26210:685::-;-1:-1:-1;;;;;26283:19:0;;;;;;:6;:19;;;;;:26;:31;;26279:70;;26210:685;:::o;26279:70::-;26359:14;26376:31;26395:11;26376:18;:31::i;:::-;26359:48;-1:-1:-1;26422:10:0;;26418:470;;26467:15;;:27;;26487:6;26467:19;:27::i;:::-;26449:15;:45;26516:7;;26509:45;;-1:-1:-1;;;26509:45:0;;-1:-1:-1;;;;;7424:32:1;;;26509:45:0;;;7406:51:1;7473:18;;;7466:34;;;26516:7:0;;;;26509:24;;7379:18:1;;26509:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;26569:30:0;;;;;;:17;:30;;;;;;;;26602:15;26569:48;;26668:6;:19;;;;;:51;;;:81;;26742:6;26668:73;:81::i;:::-;-1:-1:-1;;;;;26632:19:0;;;;;;:6;:19;;;;;:33;;;:117;;;;26835:26;26800:76;;:16;:76::i;765:98::-;823:7;850:5;854:1;850;:5;:::i;871:98::-;929:7;956:5;960:1;956;:5;:::i;25554:261::-;25720:9;;-1:-1:-1;;;;;25687:30:0;;25645:4;25687:30;;;:17;:30;;;;;;25645:4;;25732:15;;25687:42;;25720:9;25687:42;:::i;:::-;:60;:120;;;;;25798:9;;25764:31;25783:11;25764:18;:31::i;:::-;:43;25667:140;25554:261;-1:-1:-1;;25554:261:0:o;553:98::-;611:7;638:5;642:1;638;:5;:::i;27873:340::-;27989:12;28016:19;;:23;;28038:1;;28016:23;:::i;:::-;27989:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27954:31:0;;;;;:18;:31;;;;;;;27941:45;;27989:61;;;;;27941:45;;;;;;:::i;:::-;;;;;;;;;;;;;:109;;-1:-1:-1;;;;;;27941:109:0;-1:-1:-1;;;;;27941:109:0;;;;;;28145:31;;;;;:18;:31;;;;;;;28107:19;;28145:31;;:18;;27941:45;;28107:23;;-1:-1:-1;;28107:23:0;:::i;:::-;28094:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28094:37:0;28061:81;;;;;;;;;;;;;;;:115;;;;28187:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;28187:18:0;;;;;-1:-1:-1;;;;;;28187:18:0;;;;;;-1:-1:-1;27873:340:0:o;11919:548::-;-1:-1:-1;;;;;12057:20:0;;12049:70;;;;-1:-1:-1;;;12049:70:0;;10012:2:1;12049:70:0;;;9994:21:1;10051:2;10031:18;;;10024:30;10090:34;10070:18;;;10063:62;-1:-1:-1;;;10141:18:1;;;10134:35;10186:19;;12049:70:0;9810:401:1;12049:70:0;-1:-1:-1;;;;;12138:23:0;;12130:71;;;;-1:-1:-1;;;12130:71:0;;10418:2:1;12130:71:0;;;10400:21:1;10457:2;10437:18;;;10430:30;10496:34;10476:18;;;10469:62;-1:-1:-1;;;10547:18:1;;;10540:33;10590:19;;12130:71:0;10216:399:1;12130:71:0;12251:1;12234:6;:19;12212:110;;;;-1:-1:-1;;;12212:110:0;;10822:2:1;12212:110:0;;;10804:21:1;10861:2;10841:18;;;10834:30;10900:34;10880:18;;;10873:62;-1:-1:-1;;;10951:18:1;;;10944:39;11000:19;;12212:110:0;10620:405:1;12212:110:0;12365:17;12375:6;12365:9;:17::i;:::-;12355:6;:27;;12333:126;;;;-1:-1:-1;;;12333:126:0;;11232:2:1;12333:126:0;;;11214:21:1;11271:2;11251:18;;;11244:30;11310:34;11290:18;;;11283:62;-1:-1:-1;;;11361:18:1;;;11354:47;11418:19;;12333:126:0;11030:413:1;12333:126:0;11919:548;;;:::o;15465:240::-;-1:-1:-1;;;;;15582:19:0;;;;;;:11;:19;;;;;;;;15581:20;:47;;;;-1:-1:-1;;;;;;15606:22:0;;;;;;:11;:22;;;;;;;;15605:23;15581:47;15577:121;;;15653:14;;-1:-1:-1;;;15653:14:0;;;;15645:41;;;;-1:-1:-1;;;15645:41:0;;11650:2:1;15645:41:0;;;11632:21:1;11689:2;11669:18;;;11662:30;-1:-1:-1;;;11708:18:1;;;11701:44;11762:18;;15645:41:0;11448:338:1;15713:489:0;-1:-1:-1;;;;;15866:19:0;;;;;;:11;:19;;;;;;;;15865:20;:60;;;;-1:-1:-1;;;;;;15903:22:0;;;;;;:11;:22;;;;;;;;15902:23;15865:60;:103;;;;-1:-1:-1;15963:4:0;;-1:-1:-1;;;;;15942:26:0;;;15963:4;;15942:26;;15865:103;:146;;;;-1:-1:-1;;;;;;15985:26:0;;8863:42;15985:26;;15865:146;15847:348;;;16102:15;;-1:-1:-1;;;;;16065:20:0;;;;;;:9;:20;;;;;;:32;;16090:6;16065:24;:32::i;:::-;16064:53;;16038:145;;;;-1:-1:-1;;;16038:145:0;;11993:2:1;16038:145:0;;;11975:21:1;12032:2;12012:18;;;12005:30;12071:32;12051:18;;;12044:60;12121:18;;16038:145:0;11791:354:1;16210:185:0;16308:4;;-1:-1:-1;;;;;16295:17:0;;;16308:4;;16295:17;:41;;;;-1:-1:-1;;;;;;16317:19:0;;;;;;:11;:19;;;;;;;;16316:20;16295:41;16291:97;;;16374:1;16353:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;16210:185:0;;:::o;16403:563::-;16549:4;;-1:-1:-1;;;;;16539:14:0;;;16549:4;;16539:14;16535:241;;16606:14;;16596:6;:24;;:68;;;-1:-1:-1;;;;;;16645:19:0;;;;;;:11;:19;;;;;;;;16596:68;:115;;;-1:-1:-1;;;;;;16689:22:0;;;;;;:11;:22;;;;;;;;16596:115;16570:194;;;;-1:-1:-1;;;16570:194:0;;12352:2:1;16570:194:0;;;12334:21:1;12391:2;12371:18;;;12364:30;-1:-1:-1;;;12410:18:1;;;12403:47;12467:18;;16570:194:0;12150:341:1;16570:194:0;16818:12;;16808:6;:22;;:62;;;-1:-1:-1;;;;;;16851:19:0;;;;;;:11;:19;;;;;;;;16808:62;:105;;;-1:-1:-1;;;;;;16891:22:0;;;;;;:11;:22;;;;;;;;16808:105;16786:172;;;;-1:-1:-1;;;16786:172:0;;12352:2:1;16786:172:0;;;12334:21:1;12391:2;12371:18;;;12364:30;-1:-1:-1;;;12410:18:1;;;12403:47;12467:18;;16786:172:0;12150:341:1;19593:212:0;19670:33;19685:6;19693:9;19670:14;:33::i;:::-;19666:132;;;19720:29;19735:13;;19720:14;:29::i;:::-;19784:1;19764:9;:22;19593:212;;:::o;19813:192::-;-1:-1:-1;;;;;19951:19:0;;19921:4;19951:19;;;:11;:19;;;;;;;;19950:20;:47;;;;-1:-1:-1;;;;;;;19975:22:0;;;;;:11;:22;;;;;;;;19974:23;;19813:192;-1:-1:-1;19813:192:0:o;20436:769::-;20556:7;20613:1;20580:30;20592:6;20600:9;20580:11;:30::i;:::-;:34;20576:598;;;20631:17;20651:91;20697:30;20709:6;20717:9;20697:11;:30::i;:::-;20662:11;;20651:23;;:6;;:10;:23::i;:91::-;20802:4;20784:24;;;;:9;:24;;;;;;20631:111;;-1:-1:-1;20784:39:0;;20631:111;20784:28;:39::i;:::-;20775:4;20757:24;;;;:9;:24;;;;;;;:66;;;;20843:42;;-1:-1:-1;;;;;20843:42:0;;;;;;;20875:9;2079:25:1;;2067:2;2052:18;;1933:177;20843:42:0;;;;;;;;20904:7;;:20;20900:220;;20945:159;20985:4;8863:42;21049:36;21077:7;;21049:23;21060:11;;21049:6;:10;;:23;;;;:::i;:36::-;20945:9;:159::i;:::-;21141:21;:6;21152:9;21141:10;:21::i;:::-;21134:28;;;;;20576:598;-1:-1:-1;21191:6:0;20436:769;-1:-1:-1;;20436:769:0:o;19142:443::-;19251:4;19273:19;19323:13;;19295:24;19313:4;19295:9;:24::i;:::-;19368:8;;19295:41;-1:-1:-1;19295:41:0;;-1:-1:-1;19368:8:0;;19367:9;:37;;;;-1:-1:-1;19393:11:0;;;;19367:37;:68;;;;-1:-1:-1;19421:14:0;;-1:-1:-1;;;19421:14:0;;;;19367:68;:105;;;;-1:-1:-1;;;;;;19453:19:0;;;;;;:11;:19;;;;;;;;19452:20;19367:105;:145;;;;-1:-1:-1;;;;;;19490:22:0;;;;;;:11;:22;;;;;;;;19489:23;19367:145;:179;;;;-1:-1:-1;19542:4:0;;-1:-1:-1;;;;;19529:17:0;;;19542:4;;19529:17;19367:179;:210;;;;-1:-1:-1;19563:14:0;19347:230;-1:-1:-1;;;19142:443:0:o;16974:1350::-;7941:4;7930:8;;:15;;;;;;;;;;;;;;;;;;17045:20:::1;17068:138;17204:1;17083:105;17163:10;;17083:57;17125:14;;17083:37;17107:12;;17083:19;17100:1;17083:12;;:16;;:19;;;;:::i;17068:138::-;17045:161;;17217:32;17252:66;17295:12;17252:24;17263:12;;17252:6;:10;;:24;;;;:::i;:66::-;17217:101:::0;-1:-1:-1;17329:14:0::1;17346:36;:6:::0;17217:101;17346:10:::1;:36::i;:::-;17329:53:::0;-1:-1:-1;17418:21:0::1;17450:24;17329:53:::0;17450:16:::1;:24::i;:::-;17485:20;17508:41;:21;17534:14:::0;17508:25:::1;:41::i;:::-;17485:64;;17560:19;17582:48;17599:30;17616:12;;17599;:16;;:30;;;;:::i;:::-;17582:12:::0;;:16:::1;:48::i;:::-;17560:70;;17641:29;17673;17689:12;;17673:11;:15;;:29;;;;:::i;:::-;17641:61:::0;-1:-1:-1;17717:34:0;;17713:128:::1;;17768:61;17781:24;17807:21;17768:12;:61::i;:::-;17900:12;::::0;17851:23:::1;::::0;17877:36:::1;::::0;:18:::1;:11:::0;17893:1:::1;17877:15;:18::i;:36::-;17851:62:::0;-1:-1:-1;17928:19:0;;17924:102:::1;;17964:50;::::0;9138:42:::1;::::0;17964:50;::::1;;;::::0;17998:15;;17964:50:::1;::::0;;;17998:15;9138:42;17964:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17924:102;18083:10;::::0;18036:21:::1;::::0;18060:34:::1;::::0;:18:::1;:11:::0;18076:1:::1;18060:15;:18::i;:34::-;18036:58:::0;-1:-1:-1;18109:17:0;;18105:77:::1;;18143:27;18156:13;18143:12;:27::i;:::-;18196:21;:34:::0;18192:125:::1;;18247:58;::::0;9047:42:::1;::::0;18283:21:::1;18247:58:::0;::::1;;;::::0;::::1;::::0;;;18283:21;9047:42;18247:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18192:125;-1:-1:-1::0;;7968:8:0;:16;;-1:-1:-1;;7968:16:0;;;-1:-1:-1;;;;;;;;16974:1350:0:o;20013:415::-;-1:-1:-1;;;;;20148:13:0;;20119:7;20148:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;20165:16:0;;;;;;:5;:16;;;;;;;;20148:33;20144:102;;;20205:11;;:29;;20229:3;20205:15;:29::i;:::-;20198:36;;;;20144:102;20273:4;;-1:-1:-1;;;;;20273:4:0;;;20260:17;;;;20256:64;;-1:-1:-1;20301:7:0;;20294:14;;20256:64;20344:4;;-1:-1:-1;;;;;20344:4:0;;;20334:14;;;;20330:62;;-1:-1:-1;20372:8:0;;20365:15;;20330:62;-1:-1:-1;20409:11:0;;20013:415;;;;:::o;18690:444::-;18780:16;;;18794:1;18780:16;;;;;;;;18756:21;;18780:16;;;;;;;;;;-1:-1:-1;18780:16:0;18756:40;;18825:4;18807;18812:1;18807:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18807:23:0;;;:7;;;;;;;;;;:23;;;;18851:6;;:13;;;-1:-1:-1;;;18851:13:0;;;;:6;;;;;:11;;:13;;;;;18807:7;;18851:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18841:4;18846:1;18841:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18841:23:0;;;:7;;;;;;;;;:23;18907:6;;18875:53;;18892:4;;18907:6;18916:11;18875:8;:53::i;:::-;18939:6;;:187;;-1:-1:-1;;;18939:187:0;;-1:-1:-1;;;;;18939:6:0;;;;:57;;:187;;19011:11;;18939:6;;19053:4;;19080;;19100:15;;18939:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18745:389;18690:444;:::o;18332:350::-;18445:6;;18413:53;;18430:4;;-1:-1:-1;;;;;18445:6:0;18454:11;18413:8;:53::i;:::-;18477:6;;:197;;-1:-1:-1;;;18477:197:0;;18540:4;18477:197;;;14278:34:1;14328:18;;;14321:34;;;18477:6:0;14371:18:1;;;14364:34;;;14414:18;;;14407:34;8954:42:0;14457:19:1;;;14450:44;18648:15:0;14510:19:1;;;14503:35;-1:-1:-1;;;;;18477:6:0;;;;:22;;18507:9;;14212:19:1;;18477:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18332:350;;:::o;22893:952::-;22985:7;;22978:40;;-1:-1:-1;;;22978:40:0;;23012:4;22978:40;;;1871:51:1;22954:21:0;;-1:-1:-1;;;;;22985:7:0;;22978:25;;1844:18:1;;22978:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23053:16;;;23067:1;23053:16;;;;;;;;22954:64;;-1:-1:-1;23029:21:0;;23053:16;;;;;;;;;;-1:-1:-1;;23090:6:0;;:13;;;-1:-1:-1;;;23090:13:0;;;;23029:40;;-1:-1:-1;;;;;;23090:6:0;;;;:11;;-1:-1:-1;23090:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23080:4;23085:1;23080:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23080:23:0;;;:7;;;;;;;;;:23;23132:7;;23114;;23132;;;23114:4;;23132:7;;23114;;;;;;:::i;:::-;-1:-1:-1;;;;;23114:26:0;;;:7;;;;;;;;;:26;23151:6;;:140;;-1:-1:-1;;;23151:140:0;;:6;;;:57;;23230:9;;23151:140;;:6;;23254:4;;23268;;23275:15;;23151:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23334:7:0;;23353:4;;23327:31;;-1:-1:-1;;;23327:31:0;;-1:-1:-1;;;;;23353:4:0;;;23327:31;;;1871:51:1;23302:22:0;;-1:-1:-1;23334:7:0;;;-1:-1:-1;23327:25:0;;-1:-1:-1;1844:18:1;;23327:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23400:7;;23393:40;;-1:-1:-1;;;23393:40:0;;23427:4;23393:40;;;1871:51:1;23302:56:0;;-1:-1:-1;23369:21:0;;-1:-1:-1;;;;;23400:7:0;;;;23393:25;;1844:18:1;;23393:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23369:64;-1:-1:-1;23444:14:0;23461:32;23369:64;23479:13;23461:17;:32::i;:::-;23444:49;-1:-1:-1;23504:21:0;23528:103;23587:33;:13;23605:14;23587:17;:33::i;:::-;23535:7;;23528:40;;-1:-1:-1;;;23528:40:0;;23562:4;23528:40;;;1871:51:1;-1:-1:-1;;;;;23535:7:0;;;;23528:25;;1844:18:1;;23528:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:103::-;23504:127;-1:-1:-1;23658:44:0;23676:25;:6;23504:127;23676:10;:25::i;:::-;23658:13;;;:17;:44::i;:::-;23642:13;:60;23814:11;;23767:30;;23732:105;;23767:59;;:42;;23802:6;23767:34;:42::i;:59::-;23732:16;;;:20;:105::i;:::-;23713:16;:124;-1:-1:-1;;;;;;;22893:952:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:382;1403:6;1411;1464:2;1452:9;1443:7;1439:23;1435:32;1432:52;;;1480:1;1477;1470:12;1432:52;1519:9;1506:23;1538:31;1563:5;1538:31;:::i;:::-;1588:5;-1:-1:-1;1645:2:1;1630:18;;1617:32;1658:30;1617:32;1658:30;:::i;:::-;1707:7;1697:17;;;1338:382;;;;;:::o;2115:456::-;2192:6;2200;2208;2261:2;2249:9;2240:7;2236:23;2232:32;2229:52;;;2277:1;2274;2267:12;2229:52;2316:9;2303:23;2335:31;2360:5;2335:31;:::i;:::-;2385:5;-1:-1:-1;2442:2:1;2427:18;;2414:32;2455:33;2414:32;2455:33;:::i;:::-;2115:456;;2507:7;;-1:-1:-1;;;2561:2:1;2546:18;;;;2533:32;;2115:456::o;2576:247::-;2635:6;2688:2;2676:9;2667:7;2663:23;2659:32;2656:52;;;2704:1;2701;2694:12;2656:52;2743:9;2730:23;2762:31;2787:5;2762:31;:::i;3017:316::-;3094:6;3102;3110;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;-1:-1:-1;;3202:23:1;;;3272:2;3257:18;;3244:32;;-1:-1:-1;3323:2:1;3308:18;;;3295:32;;3017:316;-1:-1:-1;3017:316:1:o;3338:383::-;3415:6;3423;3431;3484:2;3472:9;3463:7;3459:23;3455:32;3452:52;;;3500:1;3497;3490:12;3452:52;3536:9;3523:23;3513:33;;3596:2;3585:9;3581:18;3568:32;3609:31;3634:5;3609:31;:::i;3726:180::-;3785:6;3838:2;3826:9;3817:7;3813:23;3809:32;3806:52;;;3854:1;3851;3844:12;3806:52;-1:-1:-1;3877:23:1;;3726:180;-1:-1:-1;3726:180:1:o;4235:388::-;4303:6;4311;4364:2;4352:9;4343:7;4339:23;4335:32;4332:52;;;4380:1;4377;4370:12;4332:52;4419:9;4406:23;4438:31;4463:5;4438:31;:::i;:::-;4488:5;-1:-1:-1;4545:2:1;4530:18;;4517:32;4558:33;4517:32;4558:33;:::i;4628:661::-;4750:6;4758;4766;4774;4782;4790;4798;4806;4859:3;4847:9;4838:7;4834:23;4830:33;4827:53;;;4876:1;4873;4866:12;4827:53;-1:-1:-1;;4899:23:1;;;4969:2;4954:18;;4941:32;;-1:-1:-1;5020:2:1;5005:18;;4992:32;;5071:2;5056:18;;5043:32;;-1:-1:-1;5122:3:1;5107:19;;5094:33;;-1:-1:-1;5174:3:1;5159:19;;5146:33;;-1:-1:-1;5226:3:1;5211:19;;5198:33;;-1:-1:-1;5278:3:1;5263:19;5250:33;;-1:-1:-1;4628:661:1;-1:-1:-1;4628:661:1:o;5554:329::-;5756:2;5738:21;;;5795:1;5775:18;;;5768:29;-1:-1:-1;;;5828:2:1;5813:18;;5806:36;5874:2;5859:18;;5554:329::o;5888:127::-;5949:10;5944:3;5940:20;5937:1;5930:31;5980:4;5977:1;5970:15;6004:4;6001:1;5994:15;6020:168;6093:9;;;6124;;6141:15;;;6135:22;;6121:37;6111:71;;6162:18;;:::i;6193:217::-;6233:1;6259;6249:132;;6303:10;6298:3;6294:20;6291:1;6284:31;6338:4;6335:1;6328:15;6366:4;6363:1;6356:15;6249:132;-1:-1:-1;6395:9:1;;6193:217::o;6830:127::-;6891:10;6886:3;6882:20;6879:1;6872:31;6922:4;6919:1;6912:15;6946:4;6943:1;6936:15;6962:135;7001:3;7022:17;;;7019:43;;7042:18;;:::i;:::-;-1:-1:-1;7089:1:1;7078:13;;6962:135::o;7102:125::-;7167:9;;;7188:10;;;7185:36;;;7201:18;;:::i;7511:245::-;7578:6;7631:2;7619:9;7610:7;7606:23;7602:32;7599:52;;;7647:1;7644;7637:12;7599:52;7679:9;7673:16;7698:28;7720:5;7698:28;:::i;9545:128::-;9612:9;;;9633:11;;;9630:37;;;9647:18;;:::i;9678:127::-;9739:10;9734:3;9730:20;9727:1;9720:31;9770:4;9767:1;9760:15;9794:4;9791:1;9784:15;12628:251;12698:6;12751:2;12739:9;12730:7;12726:23;12722:32;12719:52;;;12767:1;12764;12757:12;12719:52;12799:9;12793:16;12818:31;12843:5;12818:31;:::i;12884:461::-;12937:3;12975:5;12969:12;13002:6;12997:3;12990:19;13028:4;13057:2;13052:3;13048:12;13041:19;;13094:2;13087:5;13083:14;13115:1;13125:195;13139:6;13136:1;13133:13;13125:195;;;13204:13;;-1:-1:-1;;;;;13200:39:1;13188:52;;13260:12;;;;13295:15;;;;13236:1;13154:9;13125:195;;;-1:-1:-1;13336:3:1;;12884:461;-1:-1:-1;;;;;12884:461:1:o;13350:582::-;13649:6;13638:9;13631:25;13692:6;13687:2;13676:9;13672:18;13665:34;13735:3;13730:2;13719:9;13715:18;13708:31;13612:4;13756:57;13808:3;13797:9;13793:19;13785:6;13756:57;:::i;:::-;-1:-1:-1;;;;;13849:32:1;;;;13844:2;13829:18;;13822:60;-1:-1:-1;13913:3:1;13898:19;13891:35;13748:65;13350:582;-1:-1:-1;;;13350:582:1:o;14549:306::-;14637:6;14645;14653;14706:2;14694:9;14685:7;14681:23;14677:32;14674:52;;;14722:1;14719;14712:12;14674:52;14751:9;14745:16;14735:26;;14801:2;14790:9;14786:18;14780:25;14770:35;;14845:2;14834:9;14830:18;14824:25;14814:35;;14549:306;;;;;:::o;14860:184::-;14930:6;14983:2;14971:9;14962:7;14958:23;14954:32;14951:52;;;14999:1;14996;14989:12;14951:52;-1:-1:-1;15022:16:1;;14860:184;-1:-1:-1;14860:184:1:o;15049:510::-;15320:6;15309:9;15302:25;15363:3;15358:2;15347:9;15343:18;15336:31;15283:4;15384:57;15436:3;15425:9;15421:19;15413:6;15384:57;:::i;:::-;-1:-1:-1;;;;;15477:32:1;;;;15472:2;15457:18;;15450:60;-1:-1:-1;15541:2:1;15526:18;15519:34;15376:65;15049:510;-1:-1:-1;;15049:510:1:o
Swarm Source
ipfs://8acba36db94b6b7c3877c513c72433188e6dab0c5df18843856aa2f916f128d5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.