Rebrand announcement. Caacon was rebranded and is now known as Lunar. Caacon token contract has migrated to a new address.
ERC-20
Overview
Max Total Supply
100,000,000 CC
Holders
684 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
4,000.006445772 CCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Caacon
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-24 */ /** --+###% #####-= :++#####%%%#% ##%%#####+::. :-####%%####%###% :##%%##########+::: =-#####%#############-==--=-----+##%#########%%%%###* :+#######%########%##%%#############%%%#####%%%%%%##%####+: -##########%%######%%##%###%########%%%#%%%%%%#########%#%####- .####%%%%#######%##%%%######%%%%%%%%%%%#######%%%#################- :+###%##%%%#############*++==-::::::::--==+*#%%%#####%%#####%###%%%##*: *##%%%########%%###*=-:. :=*%%%%####%#######%%%%##: -+##%%#######%##%+. .=##%#############+:. *##%########+: -#%%##%%###+:. ##%%#####+. .=*###+:. -#######= .-. %#%%###=. .+: %######- -###+: .:: +#####*: .=*#%####+. *###++++####%##: -###%########+: #%#%######%%#%= :+###%#######%%%#*=. %###%##########. -######%%######%####*- +#######%%#####: :+##%%%###%#########%%##*- %#############* =##%###%################%##*. ##%#%%#####%##+ =####%#############%%%##%#%###- ##############+ .*##############################%* ##############= +##%#########################%%##%: ##############= +##%#########################%%##%: ###%#######%##= =###%########################%%##%: %##%##########* .*##############################*- =####%#########= :*###%##########%#######%%##%#. :#%#%#%####%%## .+#%%####*+#####%%%####%##+-. #%#%##########= .:::.. *#####+.:---:. :++++:::+#%%###+. :*##%####= -#####%#: :###%%##%#%#. %##%##%#. .*###########+ +##%####+ ... -#%#####+ :+%: ##%%#%###+: .=#####++. :*##%%##%###%#+. .:+%%###%%%###++- *###%%#####%%####%*=:. :-*%%%###%%#####%#####* .##%#%###%%%###%%%##%%*-: .+#%%###%%#######%%#%%%##. :+##%%########%#%%#######*+-:. .::=+*##############%%#%#####+: .+##%#######%%%%###%%########********########%#%%#%#####%%%%%#%%##+. :###%%%%#%##############%%%###%%%#%#####%%#########%#####%####* :+###%%%###########%%%##############%%###########%%######- :-+#####%#######%%##%=::::::::::-##%%%########%####%= ::+####%%######% ##%%%%%%####*++. .######%%#% ##%######- http://t.me/CaaconPortal https://www.caacon.vip https://twitter.com/Caaconofficial */ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; 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 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 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, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract Caacon is IERC20, Ownable { using SafeMath for uint256; string private constant _name = 'Caacon'; string private constant _symbol = 'CC'; uint8 private constant _decimals = 9; uint256 private _totalSupply = 100000000 * (10 ** _decimals); uint256 private _maxTxAmountPercent = 10000; // 10000; uint256 private _maxTransferPercent = 10000; uint256 private _maxWalletPercent = 10000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isFeeExempt; IRouter router; address public pair; bool private tradingAllowed = false; uint256 private liquidityFee = 25; uint256 private jackpotFee = 300; uint256 private developmentFee = 175; uint256 private holdersjackpotFee = 0; uint256 private extraoneFee = 0; uint256 private extratwoFee = 0; uint256 private totalFee = 500; uint256 private sellFee = 500; uint256 private transferFee = 0; uint256 private denominator = 10000; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; uint256 public swapThreshold = ( _totalSupply * 2 ) / 1000; uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000; modifier lockTheSwap {swapping = true; _; swapping = false;} address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal liquidity_receiver = 0xEe2b5021adBb5A3CA7C8e3f0088711D097391088; address internal development_receiver = 0x12E2D89901A7B3C41232bF9158Af8CE8D6E12251; address internal jackpot_receiver = 0x930458f87afC79d227fD6FBF37bd46D0d1b54b47; address internal holdersjackpot_receiver = 0x03CF4588A344A525595b562fbBEEa351E8e28830; address internal extratwo_receiver = 0x7AF8d5a795eD013953Bb7ddC7956f0d218C64BBb; address internal extraone_receiver = 0xaa7df58fc5B297c9996e7f4ebD13E8205207B0fc; 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[liquidity_receiver] = true; isFeeExempt[jackpot_receiver] = true; isFeeExempt[development_receiver] = true; isFeeExempt[holdersjackpot_receiver] = true; isFeeExempt[extratwo_receiver] = true; isFeeExempt[extraone_receiver] = true; isFeeExempt[msg.sender] = 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 launchCaacon() external onlyOwner {tradingAllowed = true;} function getOwner() external view override returns (address) { return owner; } 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) {uint size; assembly { size := extcodesize(addr) } return size > 0; } function setisfeeExempt(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 totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(address(0)));} function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;} function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;} function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;} 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, amount); _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); } function setnewFees(uint256 _liquidity, uint256 _jackpot, uint256 _development, uint256 _holdersjackpot, uint256 _extraone, uint256 _extratwo, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner { liquidityFee = _liquidity; jackpotFee = _jackpot; developmentFee = _development; holdersjackpotFee = _holdersjackpot; extratwoFee - _extratwo; extraoneFee - _extraone; totalFee = _total; sellFee = _sell; transferFee = _trans; require(totalFee <= denominator.div(10) && sellFee <= denominator.div(10), "totalFee and sellFee cannot be more than 10%"); } function setnewLimits(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner { uint256 newTx = (totalSupply() * _buy) / 10000; uint256 newTransfer = (totalSupply() * _trans) / 10000; uint256 newWallet = (totalSupply() * _wallet) / 10000; _maxTxAmountPercent = _buy; _maxTransferPercent = _trans; _maxWalletPercent = _wallet; 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 changeReceiverAddresses(address _liquidity_receiver, address _jackpot_receiver, address _development_receiver, address _holdersjackpot_receiver, address _extraone_receiver, address _extratwo_receiver) external onlyOwner { liquidity_receiver = _liquidity_receiver; jackpot_receiver = _jackpot_receiver; development_receiver = _development_receiver; holdersjackpot_receiver = _holdersjackpot_receiver; extratwo_receiver = _extratwo_receiver; extraone_receiver = _extraone_receiver; } 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 <= _maxTransferAmount() || 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(jackpotFee).add(developmentFee).add(holdersjackpotFee).add(extratwoFee).add(extraoneFee)).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 jackpotAmt = unitBalance.mul(2).mul(jackpotFee); if(jackpotAmt > 0){payable(jackpot_receiver).transfer(jackpotAmt);} uint256 developmentAmt = unitBalance.mul(2).mul(developmentFee); if(developmentAmt > 0){payable(development_receiver).transfer(developmentAmt);} uint256 holdersjackpotAmt = unitBalance.mul(2).mul(holdersjackpotFee); if(holdersjackpotAmt > 0){payable(holdersjackpot_receiver).transfer(holdersjackpotAmt);} uint256 extratwoAmt = unitBalance.mul(2).mul(extratwoFee); if(extratwoAmt > 0){payable(extratwo_receiver).transfer(extratwoAmt);} uint256 remainingBalance = address(this).balance; if(remainingBalance > uint256(0)){payable(extraone_receiver).transfer(remainingBalance);} } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, liquidity_receiver, 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, uint256 amount) internal view returns (bool) { bool aboveMin = amount >= _minTokenAmount; bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(1) && aboveThreshold; } function swapBack(address sender, address recipient, uint256 amount) internal { if(shouldSwapBack(sender, recipient, amount)){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(recipient == pair){return sellFee;} if(sender == pair){return totalFee;} return transferFee; } function changeSwapthreshold(uint256 _swapThreshold) public onlyOwner { swapThreshold = _swapThreshold; } 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); 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); } }
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":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_liquidity_receiver","type":"address"},{"internalType":"address","name":"_jackpot_receiver","type":"address"},{"internalType":"address","name":"_development_receiver","type":"address"},{"internalType":"address","name":"_holdersjackpot_receiver","type":"address"},{"internalType":"address","name":"_extraone_receiver","type":"address"},{"internalType":"address","name":"_extratwo_receiver","type":"address"}],"name":"changeReceiverAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"changeSwapthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"launchCaacon","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisfeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_jackpot","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_holdersjackpot","type":"uint256"},{"internalType":"uint256","name":"_extraone","type":"uint256"},{"internalType":"uint256","name":"_extratwo","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setnewFees","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":"setnewLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"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
6080604052620000126009600a6200052a565b62000022906305f5e10062000541565b60018181556127106002818155600382905560048290556009805460ff60a01b191690556019600a5561012c600b5560af600c555f600d819055600e819055600f8190556101f460108190556011556012556013919091556014805460ff19169092179091556103e891620000979162000541565b620000a391906200055b565b601755620186a0600154600a620000bb919062000541565b620000c791906200055b565b601855601980546001600160a01b031990811673ee2b5021adbb5a3ca7c8e3f0088711d09739108817909155601a805482167312e2d89901a7b3c41232bf9158af8ce8d6e12251179055601b8054821673930458f87afc79d227fd6fbf37bd46d0d1b54b47179055601c805482167303cf4588a344a525595b562fbbeea351e8e28830179055601d80548216737af8d5a795ed013953bb7ddc7956f0d218c64bbb179055601e805490911673aa7df58fc5b297c9996e7f4ebd13e8205207b0fc17905534801562000196575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001fb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022191906200057b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029391906200057b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030491906200057b565b600880546001600160a01b038581166001600160a01b031992831617909255600980548484169216919091179055305f908152600760209081526040808320805460ff199081166001908117909255601954861685528285208054821683179055601b54861685528285208054821683179055601a54861685528285208054821683179055601c54861685528285208054821683179055601d54861685528285208054821683179055601e5490951684528184208054861682179055338085528285208054909616821790955554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005a3565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200046f57815f19048211156200045357620004536200041b565b808516156200046157918102915b93841c939080029062000434565b509250929050565b5f82620004875750600162000524565b816200049557505f62000524565b8160018114620004ae5760028114620004b957620004d9565b600191505062000524565b60ff841115620004cd57620004cd6200041b565b50506001821b62000524565b5060208310610133831016604e8410600b8410161715620004fe575081810a62000524565b6200050a83836200042f565b805f19048211156200052057620005206200041b565b0290505b92915050565b5f6200053a60ff84168362000477565b9392505050565b80820281158282048414176200052457620005246200041b565b5f826200057657634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200058c575f80fd5b81516001600160a01b03811681146200053a575f80fd5b611bf880620005b15f395ff3fe60806040526004361061014a575f3560e01c806378109e54116100b3578063a8aa1b311161006d578063a8aa1b31146103c9578063a9059cbb146103e8578063c9f55f2e14610407578063d37e917714610426578063dd62ed3e14610445578063f2fde38b14610489575f80fd5b806378109e54146103095780637c1e6f9c1461031d5780637d1db4a51461033c578063893d20e81461035057806395d89b41146103805780639abba4e6146103aa575f80fd5b80632f54bf6e116101045780632f54bf6e1461022a57806330472a6314610257578063313ce5671461026d5780633f4218e0146102885780636e78ac23146102b657806370a08231146102d5575f80fd5b80630445b6671461015557806306fdde031461017d578063095ea7b3146101b457806318160ddd146101e35780631f976b7e146101f757806323b872dd1461020b575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016a60175481565b6040519081526020015b60405180910390f35b348015610188575f80fd5b5060408051808201909152600681526521b0b0b1b7b760d11b60208201525b60405161017491906117de565b3480156101bf575f80fd5b506101d36101ce366004611840565b6104a8565b6040519015158152602001610174565b3480156101ee575f80fd5b5061016a6104be565b348015610202575f80fd5b5061016a6104fa565b348015610216575f80fd5b506101d361022536600461186a565b61051d565b348015610235575f80fd5b506101d36102443660046118a8565b5f546001600160a01b0391821691161490565b348015610262575f80fd5b5061026b610585565b005b348015610278575f80fd5b5060405160098152602001610174565b348015610293575f80fd5b506101d36102a23660046118a8565b60076020525f908152604090205460ff1681565b3480156102c1575f80fd5b5061026b6102d03660046118c3565b6105cc565b3480156102e0575f80fd5b5061016a6102ef3660046118a8565b6001600160a01b03165f9081526005602052604090205490565b348015610314575f80fd5b5061016a6106d0565b348015610328575f80fd5b5061026b61033736600461191c565b6106df565b348015610347575f80fd5b5061016a610778565b34801561035b575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610174565b34801561038b575f80fd5b50604080518082019091526002815261434360f01b60208201526101a7565b3480156103b5575f80fd5b5061026b6103c436600461199a565b610787565b3480156103d4575f80fd5b50600954610368906001600160a01b031681565b3480156103f3575f80fd5b506101d3610402366004611840565b6107b5565b348015610412575f80fd5b5061026b6104213660046119b1565b6107c1565b348015610431575f80fd5b5061026b6104403660046119da565b61090c565b348015610450575f80fd5b5061016a61045f366004611a15565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610494575f80fd5b5061026b6104a33660046118a8565b61095f565b5f6104b43384846109db565b5060015b92915050565b5f80805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546001546104f591610afe565b905090565b5f6013546003546105096104be565b6105139190611a55565b6104f59190611a6c565b5f610529848484610b09565b61057a843361057585604051806060016040528060288152602001611b9b602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610c2b565b6109db565b5060015b9392505050565b5f546001600160a01b031633146105b75760405162461bcd60e51b81526004016105ae90611a8b565b60405180910390fd5b6009805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105f55760405162461bcd60e51b81526004016105ae90611a8b565b600a899055600b889055600c879055600d869055600f54610617908590611aab565b5084600e546106269190611aab565b5060108390556011829055601281905560135461064490600a610c56565b60105411158015610664575060135461065e90600a610c56565b60115411155b6106c55760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2031302560a01b60648201526084016105ae565b505050505050505050565b5f6013546004546105096104be565b5f546001600160a01b031633146107085760405162461bcd60e51b81526004016105ae90611a8b565b601980546001600160a01b03199081166001600160a01b0398891617909155601b8054821696881696909617909555601a8054861694871694909417909355601c8054851692861692909217909155601d8054841692851692909217909155601e80549092169216919091179055565b5f6013546002546105096104be565b5f546001600160a01b031633146107b05760405162461bcd60e51b81526004016105ae90611a8b565b601755565b5f6104b4338484610b09565b5f546001600160a01b031633146107ea5760405162461bcd60e51b81526004016105ae90611a8b565b5f612710846107f76104be565b6108019190611a55565b61080b9190611a6c565b90505f6127108461081a6104be565b6108249190611a55565b61082e9190611a6c565b90505f6127108461083d6104be565b6108479190611a55565b6108519190611a6c565b60028790556003869055600485905590505f6108826103e861087c60056108766104be565b90610c61565b90610c56565b90508084101580156108945750808310155b80156108a05750808210155b6109035760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105ae565b50505050505050565b5f546001600160a01b031633146109355760405162461bcd60e51b81526004016105ae90611a8b565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146109885760405162461bcd60e51b81526004016105ae90611a8b565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610a3d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ae565b6001600160a01b038216610a9e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ae565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61057e8284611aab565b610b14838383610c6c565b610b1e8383610e19565b610b29838383610eac565b610b338383610f9a565b610b3e838383610fef565b610b49838383611122565b6001600160a01b0383165f90815260056020526040902054610b6b9082610afe565b6001600160a01b0384165f90815260056020526040812091909155610b908484611146565b610b9a5781610ba5565b610ba584848461118a565b6001600160a01b0384165f90815260056020526040902054909150610bca9082611245565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c1d9085815260200190565b60405180910390a350505050565b5f8184841115610c4e5760405162461bcd60e51b81526004016105ae91906117de565b505050900390565b5f61057e8284611a6c565b5f61057e8284611a55565b6001600160a01b038316610cd05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ae565b6001600160a01b038216610d325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ae565b5f8111610d935760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ae565b6001600160a01b0383165f90815260056020526040902054811115610e145760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105ae565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610e5957506001600160a01b0381165f9081526007602052604090205460ff16155b15610ea857600954600160a01b900460ff16610ea85760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105ae565b5050565b6001600160a01b0383165f9081526007602052604090205460ff16158015610eec57506001600160a01b0382165f9081526007602052604090205460ff16155b8015610f0657506009546001600160a01b03838116911614155b8015610f1d57506001600160a01b03821661dead14155b15610e1457610f2a6106d0565b6001600160a01b0383165f90815260056020526040902054610f4c9083611245565b1115610e145760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105ae565b6009546001600160a01b038281169116148015610fcf57506001600160a01b0382165f9081526007602052604090205460ff16155b15610ea857600160155f828254610fe69190611abe565b90915550505050565b6009546001600160a01b038481169116146110935761100c6104fa565b8111158061103157506001600160a01b0383165f9081526007602052604090205460ff165b8061105357506001600160a01b0382165f9081526007602052604090205460ff165b6110935760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ae565b61109b610778565b811115806110c057506001600160a01b0383165f9081526007602052604090205460ff165b806110e257506001600160a01b0382165f9081526007602052604090205460ff165b610e145760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ae565b61112d838383611250565b15610e145761113d601754611300565b5f601555505050565b6001600160a01b0382165f9081526007602052604081205460ff1615801561057e5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f806111968585611593565b111561123e575f6111b86111aa8686611593565b601354610876908690610c56565b305f908152600560205260409020549091506111d49082611245565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112249085815260200190565b60405180910390a36112368382610afe565b91505061057e565b5092915050565b5f61057e8284611abe565b601854601754305f9081526005602052604081205460165491938510159211159060ff16158015611283575060145460ff165b80156112985750600954600160a01b900460ff165b80156112a15750815b80156112c557506001600160a01b0386165f9081526007602052604090205460ff16155b80156112de57506009546001600160a01b038681169116145b80156112ed5750600160155410155b80156112f65750805b9695505050505050565b600160165f6101000a81548160ff0219169083151502179055505f61135a6002610876600e54611354600f54611354600d54611354600c54611354600b546113546001600a5461124590919063ffffffff16565b90611245565b90505f6113768261087c600a5486610c6190919063ffffffff16565b90505f6113838483610afe565b90504761138f826115dd565b5f61139a4783610afe565b90505f6113bc6113b5600a5488610afe90919063ffffffff16565b8390610c56565b90505f6113d4600a5483610c6190919063ffffffff16565b905080156113e6576113e6868261172d565b600b545f906113fa90610876856002610c61565b9050801561143b57601b546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611439573d5f803e3d5ffd5b505b600c545f9061144f90610876866002610c61565b9050801561149057601a546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561148e573d5f803e3d5ffd5b505b600d545f906114a490610876876002610c61565b905080156114e557601c546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156114e3573d5f803e3d5ffd5b505b600f545f906114f990610876886002610c61565b9050801561153a57601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611538573d5f803e3d5ffd5b505b47801561157a57601e546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611578573d5f803e3d5ffd5b505b50506016805460ff191690555050505050505050505050565b6009545f906001600160a01b03908116908316036115b457506011546104b8565b6009546001600160a01b03908116908416036115d357506010546104b8565b5060125492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061161057611610611ad1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611667573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168b9190611ae5565b8160018151811061169e5761169e611ad1565b6001600160a01b0392831660209182029290920101526008546116c491309116846109db565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906116fc9085905f90869030904290600401611b00565b5f604051808303815f87803b158015611713575f80fd5b505af1158015611725573d5f803e3d5ffd5b505050505050565b6008546117459030906001600160a01b0316846109db565b60085460195460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156117b2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117d79190611b6f565b5050505050565b5f6020808352835180828501525f5b81811015611809578581018301518582016040015282016117ed565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461183d575f80fd5b50565b5f8060408385031215611851575f80fd5b823561185c81611829565b946020939093013593505050565b5f805f6060848603121561187c575f80fd5b833561188781611829565b9250602084013561189781611829565b929592945050506040919091013590565b5f602082840312156118b8575f80fd5b813561057e81611829565b5f805f805f805f805f6101208a8c0312156118dc575f80fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b5f805f805f8060c08789031215611931575f80fd5b863561193c81611829565b9550602087013561194c81611829565b9450604087013561195c81611829565b9350606087013561196c81611829565b9250608087013561197c81611829565b915060a087013561198c81611829565b809150509295509295509295565b5f602082840312156119aa575f80fd5b5035919050565b5f805f606084860312156119c3575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156119eb575f80fd5b82356119f681611829565b915060208301358015158114611a0a575f80fd5b809150509250929050565b5f8060408385031215611a26575f80fd5b8235611a3181611829565b91506020830135611a0a81611829565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104b8576104b8611a41565b5f82611a8657634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b818103818111156104b8576104b8611a41565b808201808211156104b8576104b8611a41565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611af5575f80fd5b815161057e81611829565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b4e5784516001600160a01b031683529383019391830191600101611b29565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611b81575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220caa098e530e965ff5da1789ef564717f0de51935b5f8fcddefddd743182a927064736f6c63430008140033
Deployed Bytecode
0x60806040526004361061014a575f3560e01c806378109e54116100b3578063a8aa1b311161006d578063a8aa1b31146103c9578063a9059cbb146103e8578063c9f55f2e14610407578063d37e917714610426578063dd62ed3e14610445578063f2fde38b14610489575f80fd5b806378109e54146103095780637c1e6f9c1461031d5780637d1db4a51461033c578063893d20e81461035057806395d89b41146103805780639abba4e6146103aa575f80fd5b80632f54bf6e116101045780632f54bf6e1461022a57806330472a6314610257578063313ce5671461026d5780633f4218e0146102885780636e78ac23146102b657806370a08231146102d5575f80fd5b80630445b6671461015557806306fdde031461017d578063095ea7b3146101b457806318160ddd146101e35780631f976b7e146101f757806323b872dd1461020b575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016a60175481565b6040519081526020015b60405180910390f35b348015610188575f80fd5b5060408051808201909152600681526521b0b0b1b7b760d11b60208201525b60405161017491906117de565b3480156101bf575f80fd5b506101d36101ce366004611840565b6104a8565b6040519015158152602001610174565b3480156101ee575f80fd5b5061016a6104be565b348015610202575f80fd5b5061016a6104fa565b348015610216575f80fd5b506101d361022536600461186a565b61051d565b348015610235575f80fd5b506101d36102443660046118a8565b5f546001600160a01b0391821691161490565b348015610262575f80fd5b5061026b610585565b005b348015610278575f80fd5b5060405160098152602001610174565b348015610293575f80fd5b506101d36102a23660046118a8565b60076020525f908152604090205460ff1681565b3480156102c1575f80fd5b5061026b6102d03660046118c3565b6105cc565b3480156102e0575f80fd5b5061016a6102ef3660046118a8565b6001600160a01b03165f9081526005602052604090205490565b348015610314575f80fd5b5061016a6106d0565b348015610328575f80fd5b5061026b61033736600461191c565b6106df565b348015610347575f80fd5b5061016a610778565b34801561035b575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610174565b34801561038b575f80fd5b50604080518082019091526002815261434360f01b60208201526101a7565b3480156103b5575f80fd5b5061026b6103c436600461199a565b610787565b3480156103d4575f80fd5b50600954610368906001600160a01b031681565b3480156103f3575f80fd5b506101d3610402366004611840565b6107b5565b348015610412575f80fd5b5061026b6104213660046119b1565b6107c1565b348015610431575f80fd5b5061026b6104403660046119da565b61090c565b348015610450575f80fd5b5061016a61045f366004611a15565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610494575f80fd5b5061026b6104a33660046118a8565b61095f565b5f6104b43384846109db565b5060015b92915050565b5f80805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546001546104f591610afe565b905090565b5f6013546003546105096104be565b6105139190611a55565b6104f59190611a6c565b5f610529848484610b09565b61057a843361057585604051806060016040528060288152602001611b9b602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610c2b565b6109db565b5060015b9392505050565b5f546001600160a01b031633146105b75760405162461bcd60e51b81526004016105ae90611a8b565b60405180910390fd5b6009805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105f55760405162461bcd60e51b81526004016105ae90611a8b565b600a899055600b889055600c879055600d869055600f54610617908590611aab565b5084600e546106269190611aab565b5060108390556011829055601281905560135461064490600a610c56565b60105411158015610664575060135461065e90600a610c56565b60115411155b6106c55760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2031302560a01b60648201526084016105ae565b505050505050505050565b5f6013546004546105096104be565b5f546001600160a01b031633146107085760405162461bcd60e51b81526004016105ae90611a8b565b601980546001600160a01b03199081166001600160a01b0398891617909155601b8054821696881696909617909555601a8054861694871694909417909355601c8054851692861692909217909155601d8054841692851692909217909155601e80549092169216919091179055565b5f6013546002546105096104be565b5f546001600160a01b031633146107b05760405162461bcd60e51b81526004016105ae90611a8b565b601755565b5f6104b4338484610b09565b5f546001600160a01b031633146107ea5760405162461bcd60e51b81526004016105ae90611a8b565b5f612710846107f76104be565b6108019190611a55565b61080b9190611a6c565b90505f6127108461081a6104be565b6108249190611a55565b61082e9190611a6c565b90505f6127108461083d6104be565b6108479190611a55565b6108519190611a6c565b60028790556003869055600485905590505f6108826103e861087c60056108766104be565b90610c61565b90610c56565b90508084101580156108945750808310155b80156108a05750808210155b6109035760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105ae565b50505050505050565b5f546001600160a01b031633146109355760405162461bcd60e51b81526004016105ae90611a8b565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146109885760405162461bcd60e51b81526004016105ae90611a8b565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610a3d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ae565b6001600160a01b038216610a9e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ae565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61057e8284611aab565b610b14838383610c6c565b610b1e8383610e19565b610b29838383610eac565b610b338383610f9a565b610b3e838383610fef565b610b49838383611122565b6001600160a01b0383165f90815260056020526040902054610b6b9082610afe565b6001600160a01b0384165f90815260056020526040812091909155610b908484611146565b610b9a5781610ba5565b610ba584848461118a565b6001600160a01b0384165f90815260056020526040902054909150610bca9082611245565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c1d9085815260200190565b60405180910390a350505050565b5f8184841115610c4e5760405162461bcd60e51b81526004016105ae91906117de565b505050900390565b5f61057e8284611a6c565b5f61057e8284611a55565b6001600160a01b038316610cd05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ae565b6001600160a01b038216610d325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ae565b5f8111610d935760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ae565b6001600160a01b0383165f90815260056020526040902054811115610e145760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105ae565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610e5957506001600160a01b0381165f9081526007602052604090205460ff16155b15610ea857600954600160a01b900460ff16610ea85760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105ae565b5050565b6001600160a01b0383165f9081526007602052604090205460ff16158015610eec57506001600160a01b0382165f9081526007602052604090205460ff16155b8015610f0657506009546001600160a01b03838116911614155b8015610f1d57506001600160a01b03821661dead14155b15610e1457610f2a6106d0565b6001600160a01b0383165f90815260056020526040902054610f4c9083611245565b1115610e145760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105ae565b6009546001600160a01b038281169116148015610fcf57506001600160a01b0382165f9081526007602052604090205460ff16155b15610ea857600160155f828254610fe69190611abe565b90915550505050565b6009546001600160a01b038481169116146110935761100c6104fa565b8111158061103157506001600160a01b0383165f9081526007602052604090205460ff165b8061105357506001600160a01b0382165f9081526007602052604090205460ff165b6110935760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ae565b61109b610778565b811115806110c057506001600160a01b0383165f9081526007602052604090205460ff165b806110e257506001600160a01b0382165f9081526007602052604090205460ff165b610e145760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105ae565b61112d838383611250565b15610e145761113d601754611300565b5f601555505050565b6001600160a01b0382165f9081526007602052604081205460ff1615801561057e5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f806111968585611593565b111561123e575f6111b86111aa8686611593565b601354610876908690610c56565b305f908152600560205260409020549091506111d49082611245565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112249085815260200190565b60405180910390a36112368382610afe565b91505061057e565b5092915050565b5f61057e8284611abe565b601854601754305f9081526005602052604081205460165491938510159211159060ff16158015611283575060145460ff165b80156112985750600954600160a01b900460ff165b80156112a15750815b80156112c557506001600160a01b0386165f9081526007602052604090205460ff16155b80156112de57506009546001600160a01b038681169116145b80156112ed5750600160155410155b80156112f65750805b9695505050505050565b600160165f6101000a81548160ff0219169083151502179055505f61135a6002610876600e54611354600f54611354600d54611354600c54611354600b546113546001600a5461124590919063ffffffff16565b90611245565b90505f6113768261087c600a5486610c6190919063ffffffff16565b90505f6113838483610afe565b90504761138f826115dd565b5f61139a4783610afe565b90505f6113bc6113b5600a5488610afe90919063ffffffff16565b8390610c56565b90505f6113d4600a5483610c6190919063ffffffff16565b905080156113e6576113e6868261172d565b600b545f906113fa90610876856002610c61565b9050801561143b57601b546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611439573d5f803e3d5ffd5b505b600c545f9061144f90610876866002610c61565b9050801561149057601a546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561148e573d5f803e3d5ffd5b505b600d545f906114a490610876876002610c61565b905080156114e557601c546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156114e3573d5f803e3d5ffd5b505b600f545f906114f990610876886002610c61565b9050801561153a57601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611538573d5f803e3d5ffd5b505b47801561157a57601e546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611578573d5f803e3d5ffd5b505b50506016805460ff191690555050505050505050505050565b6009545f906001600160a01b03908116908316036115b457506011546104b8565b6009546001600160a01b03908116908416036115d357506010546104b8565b5060125492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061161057611610611ad1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611667573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168b9190611ae5565b8160018151811061169e5761169e611ad1565b6001600160a01b0392831660209182029290920101526008546116c491309116846109db565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906116fc9085905f90869030904290600401611b00565b5f604051808303815f87803b158015611713575f80fd5b505af1158015611725573d5f803e3d5ffd5b505050505050565b6008546117459030906001600160a01b0316846109db565b60085460195460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156117b2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117d79190611b6f565b5050505050565b5f6020808352835180828501525f5b81811015611809578581018301518582016040015282016117ed565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461183d575f80fd5b50565b5f8060408385031215611851575f80fd5b823561185c81611829565b946020939093013593505050565b5f805f6060848603121561187c575f80fd5b833561188781611829565b9250602084013561189781611829565b929592945050506040919091013590565b5f602082840312156118b8575f80fd5b813561057e81611829565b5f805f805f805f805f6101208a8c0312156118dc575f80fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b5f805f805f8060c08789031215611931575f80fd5b863561193c81611829565b9550602087013561194c81611829565b9450604087013561195c81611829565b9350606087013561196c81611829565b9250608087013561197c81611829565b915060a087013561198c81611829565b809150509295509295509295565b5f602082840312156119aa575f80fd5b5035919050565b5f805f606084860312156119c3575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156119eb575f80fd5b82356119f681611829565b915060208301358015158114611a0a575f80fd5b809150509250929050565b5f8060408385031215611a26575f80fd5b8235611a3181611829565b91506020830135611a0a81611829565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104b8576104b8611a41565b5f82611a8657634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b818103818111156104b8576104b8611a41565b808201808211156104b8576104b8611a41565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611af5575f80fd5b815161057e81611829565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b4e5784516001600160a01b031683529383019391830191600101611b29565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611b81575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220caa098e530e965ff5da1789ef564717f0de51935b5f8fcddefddd743182a927064736f6c63430008140033
Deployed Bytecode Sourcemap
8948:13109:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10138:58;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;10138:58:0;;;;;;;;11759:67;;;;;;;;;;-1:-1:-1;11819:5:0;;;;;;;;;;;;-1:-1:-1;;;11819:5:0;;;;11759:67;;;;;;;:::i;12777:133::-;;;;;;;;;;-1:-1:-1;12777:133:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;12777:133:0;1205:187:1;12916:111:0;;;;;;;;;;;;;:::i;13272:119::-;;;;;;;;;;;;;:::i;21400:309::-;;;;;;;;;;-1:-1:-1;21400:309:0;;;;;:::i;:::-;;:::i;7328:87::-;;;;;;;;;;-1:-1:-1;7328:87:0;;;;;:::i;:::-;7383:4;7408:5;-1:-1:-1;;;;;7397:16:0;;;7408:5;;7397:16;;7328:87;11982:67;;;;;;;;;;;;;:::i;:::-;;11909;;;;;;;;;;-1:-1:-1;11909:67:0;;9150:1;2252:36:1;;2240:2;2225:18;11909:67:0;2110:184:1;9504:44:0;;;;;;;;;;-1:-1:-1;9504:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14540:657;;;;;;;;;;-1:-1:-1;14540:657:0;;;;;:::i;:::-;;:::i;12139:103::-;;;;;;;;;;-1:-1:-1;12139:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;12222:18:0;12205:7;12222:18;;;:9;:18;;;;;;;12139:103;13033:114;;;;;;;;;;;;;:::i;15796:549::-;;;;;;;;;;-1:-1:-1;15796:549:0;;;;;:::i;:::-;;:::i;13153:113::-;;;;;;;;;;;;;:::i;12055:78::-;;;;;;;;;;-1:-1:-1;12107:7:0;12125:5;-1:-1:-1;;;;;12125:5:0;12055:78;;;-1:-1:-1;;;;;4158:32:1;;;4140:51;;4128:2;4113:18;12055:78:0;3994:203:1;11832:71:0;;;;;;;;;;-1:-1:-1;11894:7:0;;;;;;;;;;;;-1:-1:-1;;;11894:7:0;;;;11832:71;;20827:125;;;;;;;;;;-1:-1:-1;20827:125:0;;;;;:::i;:::-;;:::i;9576:19::-;;;;;;;;;;-1:-1:-1;9576:19:0;;;;-1:-1:-1;;;;;9576:19:0;;;12248:139;;;;;;;;;;-1:-1:-1;12248:139:0;;;;;:::i;:::-;;:::i;15205:583::-;;;;;;;;;;-1:-1:-1;15205:583:0;;;;;:::i;:::-;;:::i;12660:111::-;;;;;;;;;;-1:-1:-1;12660:111:0;;;;;:::i;:::-;;:::i;12393:127::-;;;;;;;;;;-1:-1:-1;12393:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12491:18:0;;;12474:7;12491:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12393:127;7421:111;;;;;;;;;;-1:-1:-1;7421:111:0;;;;;:::i;:::-;;:::i;12777:133::-;12852:4;12859:37;12868:10;12880:7;12889:6;12859:8;:37::i;:::-;-1:-1:-1;12904:4:0;12777:133;;;;;:::o;12916:111::-;12969:7;12222:18;;;:9;:18;;;;12986:12;;:39;;:16;:39::i;:::-;12979:46;;12916:111;:::o;13272:119::-;13323:7;13378:11;;13356:19;;13340:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;21400:309::-;21498:4;21515:36;21525:6;21533:9;21544:6;21515:9;:36::i;:::-;21562:117;21571:6;21579:10;21591:87;21627:6;21591:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21591:19:0;;;;;;:11;:19;;;;;;;;21611:10;21591:31;;;;;;;;;:87;:35;:87::i;:::-;21562:8;:117::i;:::-;-1:-1:-1;21697:4:0;21400:309;;;;;;:::o;11982:67::-;7383:4;7408:5;-1:-1:-1;;;;;7408:5:0;7295:10;7397:16;7279:38;;;;-1:-1:-1;;;7279:38:0;;;;;;;:::i;:::-;;;;;;;;;12026:14:::1;:21:::0;;-1:-1:-1;;;;12026:21:0::1;-1:-1:-1::0;;;12026:21:0::1;::::0;;11982:67::o;14540:657::-;7383:4;7408:5;-1:-1:-1;;;;;7408:5:0;7295:10;7397:16;7279:38;;;;-1:-1:-1;;;7279:38:0;;;;;;;:::i;:::-;14760:12:::1;:25:::0;;;14796:10:::1;:21:::0;;;14828:14:::1;:29:::0;;;14868:17:::1;:35:::0;;;14914:11:::1;::::0;:23:::1;::::0;14928:9;;14914:23:::1;:::i;:::-;;14962:9;14948:11;;:23;;;;:::i;:::-;-1:-1:-1::0;14982:8:0::1;:17:::0;;;15010:7:::1;:15:::0;;;15036:11:::1;:20:::0;;;15087:11:::1;::::0;:19:::1;::::0;15103:2:::1;15087:15;:19::i;:::-;15075:8;;:31;;:65;;;;-1:-1:-1::0;15121:11:0::1;::::0;:19:::1;::::0;15137:2:::1;15121:15;:19::i;:::-;15110:7;;:30;;15075:65;15067:122;;;::::0;-1:-1:-1;;;15067:122:0;;6978:2:1;15067:122:0::1;::::0;::::1;6960:21:1::0;7017:2;6997:18;;;6990:30;7056:34;7036:18;;;7029:62;-1:-1:-1;;;7107:18:1;;;7100:42;7159:19;;15067:122:0::1;6776:408:1::0;15067:122:0::1;14540:657:::0;;;;;;;;;:::o;13033:114::-;13081:7;13134:11;;13114:17;;13098:13;:11;:13::i;15796:549::-;7383:4;7408:5;-1:-1:-1;;;;;7408:5:0;7295:10;7397:16;7279:38;;;;-1:-1:-1;;;7279:38:0;;;;;;;:::i;:::-;16036:18:::1;:40:::0;;-1:-1:-1;;;;;;16036:40:0;;::::1;-1:-1:-1::0;;;;;16036:40:0;;::::1;;::::0;;;16087:16:::1;:36:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16134:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16189:23:::1;:50:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16250:17:::1;:38:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16299:17:::1;:38:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;15796:549::o;13153:113::-;13198:7;13253:11;;13231:19;;13215:13;:11;:13::i;20827:125::-;7383:4;7408:5;-1:-1:-1;;;;;7408:5:0;7295:10;7397:16;7279:38;;;;-1:-1:-1;;;7279:38:0;;;;;;;:::i;:::-;20908:13:::1;:30:::0;20827:125::o;12248:139::-;12326:4;12333:40;12343:10;12355:9;12366:6;12333:9;:40::i;15205:583::-;7383:4;7408:5;-1:-1:-1;;;;;7408:5:0;7295:10;7397:16;7279:38;;;;-1:-1:-1;;;7279:38:0;;;;;;;:::i;:::-;15304:13:::1;15345:5;15337:4;15321:13;:11;:13::i;:::-;:20;;;;:::i;:::-;15320:30;;;;:::i;:::-;15304:46;;15361:19;15410:5;15400:6;15384:13;:11;:13::i;:::-;:22;;;;:::i;:::-;15383:32;;;;:::i;:::-;15361:54;;15426:17;15474:5;15463:7;15447:13;:11;:13::i;:::-;:23;;;;:::i;:::-;15446:33;;;;:::i;:::-;15490:19;:26:::0;;;15527:19:::1;:28:::0;;;15566:17:::1;:27:::0;;;15426:53;-1:-1:-1;;15620:30:0::1;15645:4;15620:20;15638:1;15620:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;15604:46;;15678:5;15669;:14;;:38;;;;;15702:5;15687:11;:20;;15669:38;:60;;;;;15724:5;15711:9;:18;;15669:60;15661:119;;;::::0;-1:-1:-1;;;15661:119:0;;7391:2:1;15661:119:0::1;::::0;::::1;7373:21:1::0;7430:2;7410:18;;;7403:30;7469:34;7449:18;;;7442:62;-1:-1:-1;;;7520:18:1;;;7513:44;7574:19;;15661:119:0::1;7189:410:1::0;15661:119:0::1;15293:495;;;;15205:583:::0;;;:::o;12660:111::-;7383:4;7408:5;-1:-1:-1;;;;;7408:5:0;7295:10;7397:16;7279:38;;;;-1:-1:-1;;;7279:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12737:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;12737:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12660:111::o;7421:::-;7383:4;7408:5;-1:-1:-1;;;;;7408:5:0;7295:10;7397:16;7279:38;;;;-1:-1:-1;;;7279:38:0;;;;;;;:::i;:::-;7487:5:::1;:11:::0;;-1:-1:-1;;;;;;7487:11:0::1;-1:-1:-1::0;;;;;7487:11:0;::::1;::::0;;::::1;::::0;;;7505:25:::1;::::0;4140:51:1;;;7505:25:0::1;::::0;4128:2:1;4113:18;7505:25:0::1;;;;;;;7421:111:::0;:::o;21717:335::-;-1:-1:-1;;;;;21810:19:0;;21802:68;;;;-1:-1:-1;;;21802:68:0;;8022:2:1;21802:68:0;;;8004:21:1;8061:2;8041:18;;;8034:30;8100:34;8080:18;;;8073:62;-1:-1:-1;;;8151:18:1;;;8144:34;8195:19;;21802:68:0;7820:400:1;21802:68:0;-1:-1:-1;;;;;21889:21:0;;21881:68;;;;-1:-1:-1;;;21881:68:0;;8427:2:1;21881:68:0;;;8409:21:1;8466:2;8446:18;;;8439:30;8505:34;8485:18;;;8478:62;-1:-1:-1;;;8556:18:1;;;8549:32;8598:19;;21881:68:0;8225:398:1;21881:68:0;-1:-1:-1;;;;;21960:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22012:32;;160:25:1;;;22012:32:0;;133:18:1;22012:32:0;;;;;;;21717:335;;;:::o;4514:82::-;4572:7;4589:5;4593:1;4589;:5;:::i;13846:686::-;13935:37;13946:6;13954:9;13965:6;13935:10;:37::i;:::-;13983:38;14003:6;14011:9;13983:19;:38::i;:::-;14032:41;14047:6;14055:9;14066:6;14032:14;:41::i;:::-;14085:35;14102:6;14110:9;14085:16;:35::i;:::-;14131:39;14144:6;14152:9;14163:6;14131:12;:39::i;:::-;14182:35;14191:6;14199:9;14210:6;14182:8;:35::i;:::-;-1:-1:-1;;;;;14248:17:0;;;;;;:9;:17;;;;;;:29;;14270:6;14248:21;:29::i;:::-;-1:-1:-1;;;;;14228:17:0;;;;;;:9;:17;;;;;:49;;;;14313:32;14238:6;14335:9;14313:13;:32::i;:::-;:78;;14385:6;14313:78;;;14348:34;14356:6;14364:9;14375:6;14348:7;:34::i;:::-;-1:-1:-1;;;;;14425:20:0;;;;;;:9;:20;;;;;;14288:103;;-1:-1:-1;14425:40:0;;14288:103;14425:24;:40::i;:::-;-1:-1:-1;;;;;14402:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14481:43;;;;;;;;;;14509:14;160:25:1;;148:2;133:18;;14:177;14481:43:0;;;;;;;;13924:608;13846:686;;;:::o;5727:162::-;5813:7;5859:12;5851:6;;;;5843:29;;;;-1:-1:-1;;;5843:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;5881:5:0;;;5727:162::o;4690:82::-;4748:7;4765:5;4769:1;4765;:5;:::i;4602:82::-;4660:7;4677:5;4681:1;4677;:5;:::i;13399:439::-;-1:-1:-1;;;;;13503:20:0;;13495:70;;;;-1:-1:-1;;;13495:70:0;;8830:2:1;13495:70:0;;;8812:21:1;8869:2;8849:18;;;8842:30;8908:34;8888:18;;;8881:62;-1:-1:-1;;;8959:18:1;;;8952:35;9004:19;;13495:70:0;8628:401:1;13495:70:0;-1:-1:-1;;;;;13584:23:0;;13576:71;;;;-1:-1:-1;;;13576:71:0;;9236:2:1;13576:71:0;;;9218:21:1;9275:2;9255:18;;;9248:30;9314:34;9294:18;;;9287:62;-1:-1:-1;;;9365:18:1;;;9358:33;9408:19;;13576:71:0;9034:399:1;13576:71:0;13683:1;13666:6;:19;13658:73;;;;-1:-1:-1;;;13658:73:0;;9640:2:1;13658:73:0;;;9622:21:1;9679:2;9659:18;;;9652:30;9718:34;9698:18;;;9691:62;-1:-1:-1;;;9769:18:1;;;9762:39;9818:19;;13658:73:0;9438:405:1;13658:73:0;-1:-1:-1;;;;;12222:18:0;;12205:7;12222:18;;;:9;:18;;;;;;13750:6;:27;;13742:88;;;;-1:-1:-1;;;13742:88:0;;10050:2:1;13742:88:0;;;10032:21:1;10089:2;10069:18;;;10062:30;10128:34;10108:18;;;10101:62;-1:-1:-1;;;10179:18:1;;;10172:47;10236:19;;13742:88:0;9848:413:1;13742:88:0;13399:439;;;:::o;16353:191::-;-1:-1:-1;;;;;16446:19:0;;;;;;:11;:19;;;;;;;;16445:20;:47;;;;-1:-1:-1;;;;;;16470:22:0;;;;;;:11;:22;;;;;;;;16469:23;16445:47;16442:95;;;16502:14;;-1:-1:-1;;;16502:14:0;;;;16494:41;;;;-1:-1:-1;;;16494:41:0;;10468:2:1;16494:41:0;;;10450:21:1;10507:2;10487:18;;;10480:30;-1:-1:-1;;;10526:18:1;;;10519:44;10580:18;;16494:41:0;10266:338:1;16494:41:0;16353:191;;:::o;16556:333::-;-1:-1:-1;;;;;16660:19:0;;;;;;:11;:19;;;;;;;;16659:20;:47;;;;-1:-1:-1;;;;;;16684:22:0;;;;;;:11;:22;;;;;;;;16683:23;16659:47;:77;;;;-1:-1:-1;16731:4:0;;-1:-1:-1;;;;;16710:26:0;;;16731:4;;16710:26;;16659:77;:107;;;;-1:-1:-1;;;;;;16740:26:0;;10375:42;16740:26;;16659:107;16656:226;;;16828:17;:15;:17::i;:::-;-1:-1:-1;;;;;16791:20:0;;;;;;:9;:20;;;;;;:32;;16816:6;16791:24;:32::i;:::-;16790:55;;16782:98;;;;-1:-1:-1;;;16782:98:0;;10811:2:1;16782:98:0;;;10793:21:1;10850:2;10830:18;;;10823:30;10889:32;10869:18;;;10862:60;10939:18;;16782:98:0;10609:354:1;16897:159:0;16994:4;;-1:-1:-1;;;;;16981:17:0;;;16994:4;;16981:17;:41;;;;-1:-1:-1;;;;;;17003:19:0;;;;;;:11;:19;;;;;;;;17002:20;16981:41;16978:71;;;17045:1;17024:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;16897:159:0;;:::o;17064:349::-;17175:4;;-1:-1:-1;;;;;17165:14:0;;;17175:4;;17165:14;17162:130;;17199:20;:18;:20::i;:::-;17189:6;:30;;:53;;;-1:-1:-1;;;;;;17223:19:0;;;;;;:11;:19;;;;;;;;17189:53;:79;;;-1:-1:-1;;;;;;17246:22:0;;;;;;:11;:22;;;;;;;;17189:79;17181:109;;;;-1:-1:-1;;;17181:109:0;;11300:2:1;17181:109:0;;;11282:21:1;11339:2;11319:18;;;11312:30;-1:-1:-1;;;11358:18:1;;;11351:47;11415:18;;17181:109:0;11098:341:1;17181:109:0;17320:14;:12;:14::i;:::-;17310:6;:24;;:47;;;-1:-1:-1;;;;;;17338:19:0;;;;;;:11;:19;;;;;;;;17310:47;:73;;;-1:-1:-1;;;;;;17361:22:0;;;;;;:11;:22;;;;;;;;17310:73;17302:103;;;;-1:-1:-1;;;17302:103:0;;11300:2:1;17302:103:0;;;11282:21:1;11339:2;11319:18;;;11312:30;-1:-1:-1;;;11358:18:1;;;11351:47;11415:18;;17302:103:0;11098:341:1;20227:197:0;20319:41;20334:6;20342:9;20353:6;20319:14;:41::i;:::-;20316:101;;;20362:29;20377:13;;20362:14;:29::i;:::-;20413:1;20393:9;:22;20227:197;;;:::o;20432:160::-;-1:-1:-1;;;;;20538:19:0;;20513:4;20538:19;;;:11;:19;;;;;;;;20537:20;:47;;;;-1:-1:-1;;;;;;;20562:22:0;;;;;:11;:22;;;;;;;;20561:23;;20432:160;-1:-1:-1;20432:160:0:o;20960:432::-;21046:7;21102:1;21069:30;21081:6;21089:9;21069:11;:30::i;:::-;:34;21066:304;;;21115:17;21135:59;21163:30;21175:6;21183:9;21163:11;:30::i;:::-;21146:11;;21135:23;;:6;;:10;:23::i;:59::-;21250:4;21232:24;;;;:9;:24;;;;;;21115:79;;-1:-1:-1;21232:39:0;;21115:79;21232:28;:39::i;:::-;21223:4;21205:24;;;;:9;:24;;;;;;;:66;;;;21287:42;;-1:-1:-1;;;;;21287:42:0;;;;;;;21319:9;160:25:1;;148:2;133:18;;14:177;21287:42:0;;;;;;;;21347:21;:6;21358:9;21347:10;:21::i;:::-;21340:28;;;;;21066:304;-1:-1:-1;21378:6:0;20960:432;-1:-1:-1;;20960:432:0:o;4426:82::-;4484:7;4501:5;4505:1;4501;:5;:::i;19819:400::-;19960:15;;20036:13;;20026:4;19917;12222:18;;;:9;:18;;;;;;20068:8;;19917:4;;19950:25;;;;-1:-1:-1;20008:41:0;;20068:8;;20067:9;:24;;;;-1:-1:-1;20080:11:0;;;;20067:24;:42;;;;-1:-1:-1;20095:14:0;;-1:-1:-1;;;20095:14:0;;;;20067:42;:54;;;;;20113:8;20067:54;:78;;;;-1:-1:-1;;;;;;20126:19:0;;;;;;:11;:19;;;;;;;;20125:20;20067:78;:99;;;;-1:-1:-1;20162:4:0;;-1:-1:-1;;;;;20149:17:0;;;20162:4;;20149:17;20067:99;:126;;;;;20191:1;20170:9;;:23;;20067:126;:144;;;;;20197:14;20067:144;20060:151;19819:400;-1:-1:-1;;;;;;19819:400:0:o;17421:1597::-;10307:4;10296:8;;:15;;;;;;;;;;;;;;;;;;17492:20:::1;17515:121;17634:1;17516:112;17616:11;;17516:95;17599:11;;17516:78;17576:17;;17516:55;17556:14;;17516:35;17540:10;;17516:19;17533:1;17516:12;;:16;;:19;;;;:::i;:::-;:23:::0;::::1;:35::i;17515:121::-;17492:144;;17647:32;17682:42;17711:12;17682:24;17693:12;;17682:6;:10;;:24;;;;:::i;:42::-;17647:77:::0;-1:-1:-1;17735:14:0::1;17752:36;:6:::0;17647:77;17752:10:::1;:36::i;:::-;17735:53:::0;-1:-1:-1;17824:21:0::1;17856:24;17735:53:::0;17856:16:::1;:24::i;:::-;17891:20;17914:41;:21;17940:14:::0;17914:25:::1;:41::i;:::-;17891:64;;17966:19;17987:48;18004:30;18021:12;;18004;:16;;:30;;;;:::i;:::-;17987:12:::0;;:16:::1;:48::i;:::-;17966:69;;18046:29;18078;18094:12;;18078:11;:15;;:29;;;;:::i;:::-;18046:61:::0;-1:-1:-1;18121:34:0;;18118:103:::1;;18157:61;18170:24;18196:21;18157:12;:61::i;:::-;18275:10;::::0;18231:18:::1;::::0;18252:34:::1;::::0;:18:::1;:11:::0;18268:1:::1;18252:15;:18::i;:34::-;18231:55:::0;-1:-1:-1;18300:14:0;;18297:67:::1;;18324:16;::::0;18316:46:::1;::::0;-1:-1:-1;;;;;18324:16:0;;::::1;::::0;18316:46;::::1;;;::::0;18351:10;;18324:16:::1;18316:46:::0;18324:16;18316:46;18351:10;18324:16;18316:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18297:67;18422:14;::::0;18374:22:::1;::::0;18399:38:::1;::::0;:18:::1;:11:::0;18415:1:::1;18399:15;:18::i;:38::-;18374:63:::0;-1:-1:-1;18451:18:0;;18448:79:::1;;18479:20;::::0;18471:54:::1;::::0;-1:-1:-1;;;;;18479:20:0;;::::1;::::0;18471:54;::::1;;;::::0;18510:14;;18479:20:::1;18471:54:::0;18479:20;18471:54;18510:14;18479:20;18471:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18448:79;18588:17;::::0;18537:25:::1;::::0;18565:41:::1;::::0;:18:::1;:11:::0;18581:1:::1;18565:15;:18::i;:41::-;18537:69:::0;-1:-1:-1;18620:21:0;;18617:88:::1;;18651:23;::::0;18643:60:::1;::::0;-1:-1:-1;;;;;18651:23:0;;::::1;::::0;18643:60;::::1;;;::::0;18685:17;;18651:23:::1;18643:60:::0;18651:23;18643:60;18685:17;18651:23;18643:60;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18617:88;18760:11;::::0;18715:19:::1;::::0;18737:35:::1;::::0;:18:::1;:11:::0;18753:1:::1;18737:15;:18::i;:35::-;18715:57:::0;-1:-1:-1;18786:15:0;;18783:70:::1;;18811:17;::::0;18803:48:::1;::::0;-1:-1:-1;;;;;18811:17:0;;::::1;::::0;18803:48;::::1;;;::::0;18839:11;;18811:17:::1;18803:48:::0;18811:17;18803:48;18839:11;18811:17;18803:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18783:70;18890:21;18925:29:::0;;18922:89:::1;;18964:17;::::0;18956:53:::1;::::0;-1:-1:-1;;;;;18964:17:0;;::::1;::::0;18956:53;::::1;;;::::0;18992:16;;18964:17:::1;18956:53:::0;18964:17;18956:53;18992:16;18964:17;18956:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18922:89;-1:-1:-1::0;;10316:8:0;:16;;-1:-1:-1;;10316:16:0;;;-1:-1:-1;;;;;;;;;;;17421:1597:0:o;20600:219::-;20715:4;;20679:7;;-1:-1:-1;;;;;20715:4:0;;;20702:17;;;;20699:38;;-1:-1:-1;20728:7:0;;20721:14;;20699:38;20760:4;;-1:-1:-1;;;;;20760:4:0;;;20750:14;;;;20747:36;;-1:-1:-1;20773:8:0;;20766:15;;20747:36;-1:-1:-1;20800:11:0;;20600:219;;;;:::o;19377:434::-;19467:16;;;19481:1;19467:16;;;;;;;;19443:21;;19467:16;;;;;;;;;;-1:-1:-1;19467:16:0;19443:40;;19512:4;19494;19499:1;19494:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19494:23:0;;;:7;;;;;;;;;;:23;;;;19538:6;;:13;;;-1:-1:-1;;;19538:13:0;;;;:6;;;;;:11;;:13;;;;;19494:7;;19538:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19528:4;19533:1;19528:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19528:23:0;;;:7;;;;;;;;;:23;19594:6;;19562:53;;19579:4;;19594:6;19603:11;19562:8;:53::i;:::-;19626:6;;:177;;-1:-1:-1;;;19626:177:0;;-1:-1:-1;;;;;19626:6:0;;;;:57;;:177;;19698:11;;19626:6;;19740:4;;19767;;19787:15;;19626:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19432:379;19377:434;:::o;19026:343::-;19139:6;;19107:53;;19124:4;;-1:-1:-1;;;;;19139:6:0;19148:11;19107:8;:53::i;:::-;19171:6;;19312:18;;19171:190;;-1:-1:-1;;;19171:190:0;;19234:4;19171:190;;;13290:34:1;13340:18;;;13333:34;;;19171:6:0;13383:18:1;;;13376:34;;;13426:18;;;13419:34;-1:-1:-1;;;;;19312:18:0;;;13469:19:1;;;13462:44;19345:15:0;13522:19:1;;;13515:35;19171:6:0;;;:22;;19201:9;;13224:19:1;;19171:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19026:343;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2299:730::-;2430:6;2438;2446;2454;2462;2470;2478;2486;2494;2547:3;2535:9;2526:7;2522:23;2518:33;2515:53;;;2564:1;2561;2554:12;2515:53;-1:-1:-1;;2587:23:1;;;2657:2;2642:18;;2629:32;;-1:-1:-1;2708:2:1;2693:18;;2680:32;;2759:2;2744:18;;2731:32;;-1:-1:-1;2810:3:1;2795:19;;2782:33;;-1:-1:-1;2862:3:1;2847:19;;2834:33;;-1:-1:-1;2914:3:1;2899:19;;2886:33;;-1:-1:-1;2966:3:1;2951:19;;2938:33;;-1:-1:-1;3018:3:1;3003:19;2990:33;;-1:-1:-1;2299:730:1;-1:-1:-1;2299:730:1:o;3034:955::-;3138:6;3146;3154;3162;3170;3178;3231:3;3219:9;3210:7;3206:23;3202:33;3199:53;;;3248:1;3245;3238:12;3199:53;3287:9;3274:23;3306:31;3331:5;3306:31;:::i;:::-;3356:5;-1:-1:-1;3413:2:1;3398:18;;3385:32;3426:33;3385:32;3426:33;:::i;:::-;3478:7;-1:-1:-1;3537:2:1;3522:18;;3509:32;3550:33;3509:32;3550:33;:::i;:::-;3602:7;-1:-1:-1;3661:2:1;3646:18;;3633:32;3674:33;3633:32;3674:33;:::i;:::-;3726:7;-1:-1:-1;3785:3:1;3770:19;;3757:33;3799;3757;3799;:::i;:::-;3851:7;-1:-1:-1;3910:3:1;3895:19;;3882:33;3924;3882;3924;:::i;:::-;3976:7;3966:17;;;3034:955;;;;;;;;:::o;4202:180::-;4261:6;4314:2;4302:9;4293:7;4289:23;4285:32;4282:52;;;4330:1;4327;4320:12;4282:52;-1:-1:-1;4353:23:1;;4202:180;-1:-1:-1;4202:180:1:o;4387:316::-;4464:6;4472;4480;4533:2;4521:9;4512:7;4508:23;4504:32;4501:52;;;4549:1;4546;4539:12;4501:52;-1:-1:-1;;4572:23:1;;;4642:2;4627:18;;4614:32;;-1:-1:-1;4693:2:1;4678:18;;;4665:32;;4387:316;-1:-1:-1;4387:316:1:o;4708:416::-;4773:6;4781;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;4889:9;4876:23;4908:31;4933:5;4908:31;:::i;:::-;4958:5;-1:-1:-1;5015:2:1;5000:18;;4987:32;5057:15;;5050:23;5038:36;;5028:64;;5088:1;5085;5078:12;5028:64;5111:7;5101:17;;;4708:416;;;;;:::o;5129:388::-;5197:6;5205;5258:2;5246:9;5237:7;5233:23;5229:32;5226:52;;;5274:1;5271;5264:12;5226:52;5313:9;5300:23;5332:31;5357:5;5332:31;:::i;:::-;5382:5;-1:-1:-1;5439:2:1;5424:18;;5411:32;5452:33;5411:32;5452:33;:::i;5782:127::-;5843:10;5838:3;5834:20;5831:1;5824:31;5874:4;5871:1;5864:15;5898:4;5895:1;5888:15;5914:168;5987:9;;;6018;;6035:15;;;6029:22;;6015:37;6005:71;;6056:18;;:::i;6087:217::-;6127:1;6153;6143:132;;6197:10;6192:3;6188:20;6185:1;6178:31;6232:4;6229:1;6222:15;6260:4;6257:1;6250:15;6143:132;-1:-1:-1;6289:9:1;;6087:217::o;6309:329::-;6511:2;6493:21;;;6550:1;6530:18;;;6523:29;-1:-1:-1;;;6583:2:1;6568:18;;6561:36;6629:2;6614:18;;6309:329::o;6643:128::-;6710:9;;;6731:11;;;6728:37;;;6745:18;;:::i;10968:125::-;11033:9;;;11054:10;;;11051:36;;;11067:18;;:::i;11576:127::-;11637:10;11632:3;11628:20;11625:1;11618:31;11668:4;11665:1;11658:15;11692:4;11689:1;11682:15;11708:251;11778:6;11831:2;11819:9;11810:7;11806:23;11802:32;11799:52;;;11847:1;11844;11837:12;11799:52;11879:9;11873:16;11898:31;11923:5;11898:31;:::i;11964:980::-;12226:4;12274:3;12263:9;12259:19;12305:6;12294:9;12287:25;12331:2;12369:6;12364:2;12353:9;12349:18;12342:34;12412:3;12407:2;12396:9;12392:18;12385:31;12436:6;12471;12465:13;12502:6;12494;12487:22;12540:3;12529:9;12525:19;12518:26;;12579:2;12571:6;12567:15;12553:29;;12600:1;12610:195;12624:6;12621:1;12618:13;12610:195;;;12689:13;;-1:-1:-1;;;;;12685:39:1;12673:52;;12780:15;;;;12745:12;;;;12721:1;12639:9;12610:195;;;-1:-1:-1;;;;;;;12861:32:1;;;;12856:2;12841:18;;12834:60;-1:-1:-1;;;12925:3:1;12910:19;12903:35;12822:3;11964:980;-1:-1:-1;;;11964:980:1:o;13561:306::-;13649:6;13657;13665;13718:2;13706:9;13697:7;13693:23;13689:32;13686:52;;;13734:1;13731;13724:12;13686:52;13763:9;13757:16;13747:26;;13813:2;13802:9;13798:18;13792:25;13782:35;;13857:2;13846:9;13842:18;13836:25;13826:35;;13561:306;;;;;:::o
Swarm Source
ipfs://caa098e530e965ff5da1789ef564717f0de51935b5f8fcddefddd743182a9270
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.