Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
69,696,969 PM
Holders
442
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
33,589.377780945 PMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PrintTheMONG
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-02 */ // Twitter: https://twitter.com/printthemong // Telegram: https://t.me/PrintTheMong // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.13; /** * Standard SafeMath, stripped down to just add/sub/mul/div */ library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * ERC20 standard interface. */ 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); } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; constructor(address _owner) { owner = _owner; } /** * Function modifier to require caller to be contract deployer */ modifier onlyOwner() { require(isOwner(msg.sender), "!Owner"); _; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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; } interface IDividendDistributor { function setShare(address shareholder, uint256 amount) external; function deposit(uint256 amount) external; function claimDividend(address shareholder) external; function getDividendsClaimedOf (address shareholder) external returns (uint256); } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address public _token; address public _owner; address public immutable MONG = address(0x1ce270557C1f68Cfb577b856766310Bf8B47FD9C); //UNI struct Share { uint256 amount; uint256 totalExcluded; uint256 totalClaimed; } address[] private shareholders; mapping (address => uint256) private shareholderIndexes; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalClaimed; uint256 public dividendsPerShare; uint256 private dividendsPerShareAccuracyFactor = 10 ** 36; modifier onlyToken() { require(msg.sender == _token); _; } modifier onlyOwner() { require(msg.sender == _owner); _; } constructor (address owner) { _token = msg.sender; _owner = owner; } receive() external payable { } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(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 = getCumulativeDividends(shares[shareholder].amount); } function deposit(uint256 amount) external override onlyToken { if (amount > 0) { totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getClaimableDividendOf(shareholder); if(amount > 0){ totalClaimed = totalClaimed.add(amount); shares[shareholder].totalClaimed = shares[shareholder].totalClaimed.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); IERC20(MONG).transfer(shareholder, amount); } } function claimDividend(address shareholder) external override onlyToken { distributeDividend(shareholder); } function getClaimableDividendOf(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } function manualSend(uint256 amount, address holder) external onlyOwner { uint256 contractETHBalance = address(this).balance; payable(holder).transfer(amount > 0 ? amount : contractETHBalance); } function getDividendsClaimedOf (address shareholder) external view returns (uint256) { require (shares[shareholder].amount > 0, "You're not a PRINTER shareholder!"); return shares[shareholder].totalClaimed; } } contract PrintTheMONG is IERC20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; address public immutable MONG = address(0x1ce270557C1f68Cfb577b856766310Bf8B47FD9C); //UNI string private constant _name = "Print The Mong"; string private constant _symbol = "PM"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 69696969 * (10 ** _decimals); uint256 private _maxTxAmountBuy = _totalSupply; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint256) private cooldown; mapping (address => bool) private isFeeExempt; mapping (address => bool) private isDividendExempt; mapping (address => bool) private isBot; uint256 private totalFee = 9; uint256 private feeDenominator = 100; address payable public marketingWallet = payable(0xa74041fC0681FD1B00F24D2F1c89B3e346Ca561F); IDEXRouter public router; address public pair; uint256 public launchedAt; bool private tradingOpen; bool private buyLimit = true; uint256 private maxBuy = 1393939 * (10 ** _decimals); uint256 public numTokensSellToAddToLiquidity = 139393 * 10**9; DividendDistributor private distributor; bool public blacklistEnabled = false; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( address _owner ) Auth(_owner) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(_owner); isFeeExempt[_owner] = true; isFeeExempt[marketingWallet] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading if (blacklistEnabled) { require (!isBot[sender] && !isBot[recipient], "Bot!"); } if (buyLimit) { if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir"); } if (sender == pair && recipient != address(router) && !isFeeExempt[recipient]) { require (cooldown[recipient] < block.timestamp); cooldown[recipient] = block.timestamp + 60 seconds; } if(inSwap){ return _basicTransfer(sender, recipient, amount); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; bool shouldSwapBack = (overMinTokenBalance && recipient==pair && balanceOf(address(this)) > 0); if(shouldSwapBack){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if(sender != pair && !isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} } if(recipient != pair && !isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} } emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) && (sender == pair || recipient == pair) ); } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount; feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function swapBack() internal swapping { uint256 amountToSwap = balanceOf(address(this)); swapTokensForEth(amountToSwap.div(2)); swapTokensForMONG(amountToSwap.div(2)); uint256 dividends = IERC20(MONG).balanceOf(address(this)); bool success = IERC20(MONG).transfer(address(distributor), dividends); if (success) { distributor.deposit(dividends); } payable(marketingWallet).transfer(address(this).balance); } function swapTokensForMONG(uint256 tokenAmount) private { address[] memory path = new address[](3); path[0] = address(this); path[1] = WETH; path[2] = MONG; // make the swap router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // add the liquidity router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner, block.timestamp ); } function openTrading() external onlyOwner { launchedAt = block.number; tradingOpen = true; } function setBot(address _address, bool toggle) external onlyOwner { isBot[_address] = toggle; _setIsDividendExempt(_address, toggle); } function _setIsDividendExempt(address holder, bool exempt) internal { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setIsDividendExempt(address holder, bool exempt) external onlyOwner { _setIsDividendExempt(holder, exempt); } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setFee (uint256 _fee) external onlyOwner { require (_fee <= 9, "Fee can't exceed 9%"); totalFee = _fee; } function manualSend() external onlyOwner { uint256 contractETHBalance = address(this).balance; payable(marketingWallet).transfer(contractETHBalance); } function claimDividend() external { distributor.claimDividend(msg.sender); } function claimDividend(address holder) external onlyOwner { distributor.claimDividend(holder); } function getClaimableDividendOf(address shareholder) public view returns (uint256) { return distributor.getClaimableDividendOf(shareholder); } function manualBurn(uint256 amount) external onlyOwner returns (bool) { return _basicTransfer(address(this), DEAD, amount); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function setMarketingWallet(address _marketingWallet) external onlyOwner { marketingWallet = payable(_marketingWallet); } function getTotalDividends() external view returns (uint256) { return distributor.totalDividends(); } function getTotalClaimed() external view returns (uint256) { return distributor.totalClaimed(); } function getDividendsClaimedOf (address shareholder) external view returns (uint256) { return distributor.getDividendsClaimedOf(shareholder); } function removeBuyLimit() external onlyOwner { buyLimit = false; } function checkBot(address account) public view returns (bool) { return isBot[account]; } function setBlacklistEnabled() external onlyOwner { require (blacklistEnabled == false, "can only be called once"); blacklistEnabled = true; } function setSwapThresholdAmount (uint256 amount) external onlyOwner { require (amount <= _totalSupply.div(100), "can't exceed 1%"); numTokensSellToAddToLiquidity = amount * 10 ** 9; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"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":"MONG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":[],"name":"blacklistEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","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
60a0604052600280546001600160a01b031990811661dead17909155600380549091169055731ce270557c1f68cfb577b856766310bf8b47fd9c6080526200004a6009600a6200051a565b6200005a906304277dc962000532565b60048190556005556009600c8190556064600d55600e80546001600160a01b03191673a74041fc0681fd1b00f24d2f1c89b3e346ca561f1790556012805461ff001916610100179055620000b090600a6200051a565b620000bf906215451362000532565b601355657ec6f63fca006014556015805460ff60a01b19169055348015620000e657600080fd5b506040516200342638038062003426833981016040819052620001099162000554565b600080546001600160a01b03199081166001600160a01b03841617909155600f8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000182573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a8919062000554565b600180546001600160a01b0319166001600160a01b03928316179055600f546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000207573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022d919062000554565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a5919062000554565b601080546001600160a01b0319166001600160a01b03928316179055306000908152600760209081526040808320600f5490941683529290528190206000199055518190620002f490620003f7565b6001600160a01b039091168152602001604051809103906000f08015801562000321573d6000803e3d6000fd5b50601580546001600160a01b0319166001600160a01b039283161790558181166000818152600960209081526040808320805460ff199081166001908117909255600e5487168552828520805482168317905560105487168552600a8452828520805482168317905530855282852080548216831790556002549096168452818420805490961617909455600454838352600682528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200057f565b610da0806200268683390190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200045c57816000190482111562000440576200044062000405565b808516156200044e57918102915b93841c939080029062000420565b509250929050565b600082620004755750600162000514565b81620004845750600062000514565b81600181146200049d5760028114620004a857620004c8565b600191505062000514565b60ff841115620004bc57620004bc62000405565b50506001821b62000514565b5060208310610133831016604e8410600b8410161715620004ed575081810a62000514565b620004f983836200041b565b806000190482111562000510576200051062000405565b0290505b92915050565b60006200052b60ff84168362000464565b9392505050565b60008160001904831182151516156200054f576200054f62000405565b500290565b6000602082840312156200056757600080fd5b81516001600160a01b03811681146200052b57600080fd5b6080516120d6620005b06000396000818161076201528181611877015281816119190152611cbe01526120d66000f3fe6080604052600436106102345760003560e01c8063736a83a11161012e578063bffb691d116100ab578063f2fde38b1161006f578063f2fde38b146106db578063f4293890146106fb578063f708a64f14610710578063f887ea4014610730578063fe02721e1461075057600080fd5b8063bffb691d14610634578063c9567bf914610655578063d12a76881461066a578063dd62ed3e14610680578063f0fc6bca146106c657600080fd5b806395d89b41116100f257806395d89b411461057a578063a8aa1b31146105a5578063a9059cbb146105c5578063b1a4e0dc146105e5578063bf56b3711461061e57600080fd5b8063736a83a1146104da57806375f0a874146104ef578063764ca51214610527578063893d20e81461053c5780638ecc37fb1461055a57600080fd5b8063313ce567116101bc5780635d098b38116101805780635d098b381461042f578063658d4b7f1461044f57806367ee5f091461046f57806369fe0e2d1461048457806370a08231146104a457600080fd5b8063313ce5671461039e578063342aa8b5146103ba5780633e07ce5b146103da578063571ac8b0146103ef5780635cc33f741461040f57600080fd5b806323b635851161020357806323b63585146102fa57806323b872dd1461031a57806329e04b4a1461033a5780632b112e491461035a5780632f54bf6e1461036f57600080fd5b806306fdde0314610240578063095ea7b31461028957806315f7e05e146102b957806318160ddd146102db57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152600e81526d5072696e7420546865204d6f6e6760901b60208201525b6040516102809190611db8565b60405180910390f35b34801561029557600080fd5b506102a96102a4366004611e25565b610784565b6040519015158152602001610280565b3480156102c557600080fd5b506102d96102d4366004611e51565b6107f1565b005b3480156102e757600080fd5b506004545b604051908152602001610280565b34801561030657600080fd5b506102a9610315366004611e6e565b610886565b34801561032657600080fd5b506102a9610335366004611e87565b6108c9565b34801561034657600080fd5b506102d9610355366004611e6e565b61098b565b34801561036657600080fd5b506102ec610a18565b34801561037b57600080fd5b506102a961038a366004611e51565b6000546001600160a01b0391821691161490565b3480156103aa57600080fd5b5060405160098152602001610280565b3480156103c657600080fd5b506102d96103d5366004611ed6565b610a6a565b3480156103e657600080fd5b506102d9610ac6565b3480156103fb57600080fd5b506102a961040a366004611e51565b610afd565b34801561041b57600080fd5b506102ec61042a366004611e51565b610b0b565b34801561043b57600080fd5b506102d961044a366004611e51565b610b7b565b34801561045b57600080fd5b506102d961046a366004611ed6565b610bc7565b34801561047b57600080fd5b506102ec610c1c565b34801561049057600080fd5b506102d961049f366004611e6e565b610c8a565b3480156104b057600080fd5b506102ec6104bf366004611e51565b6001600160a01b031660009081526006602052604090205490565b3480156104e657600080fd5b506102ec610d00565b3480156104fb57600080fd5b50600e5461050f906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b34801561053357600080fd5b506102d9610d4a565b34801561054857600080fd5b506000546001600160a01b031661050f565b34801561056657600080fd5b506102ec610575366004611e51565b610de3565b34801561058657600080fd5b50604080518082019091526002815261504d60f01b6020820152610273565b3480156105b157600080fd5b5060105461050f906001600160a01b031681565b3480156105d157600080fd5b506102a96105e0366004611e25565b610e16565b3480156105f157600080fd5b506102a9610600366004611e51565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561062a57600080fd5b506102ec60115481565b34801561064057600080fd5b506015546102a990600160a01b900460ff1681565b34801561066157600080fd5b506102d9610e23565b34801561067657600080fd5b506102ec60145481565b34801561068c57600080fd5b506102ec61069b366004611f0f565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156106d257600080fd5b506102d9610e60565b3480156106e757600080fd5b506102d96106f6366004611e51565b610ebf565b34801561070757600080fd5b506102d9610f3d565b34801561071c57600080fd5b506102d961072b366004611ed6565b610fa1565b34801561073c57600080fd5b50600f5461050f906001600160a01b031681565b34801561075c57600080fd5b5061050f7f000000000000000000000000000000000000000000000000000000000000000081565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107df9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108245760405162461bcd60e51b815260040161081b90611f3d565b60405180910390fd5b601554604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e90602401600060405180830381600087803b15801561086b57600080fd5b505af115801561087f573d6000803e3d6000fd5b5050505050565b600080546001600160a01b031633146108b15760405162461bcd60e51b815260040161081b90611f3d565b6002546107eb9030906001600160a01b031684610fd5565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610976576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546109519184906110bb565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6109818484846110f5565b90505b9392505050565b6000546001600160a01b031633146109b55760405162461bcd60e51b815260040161081b90611f3d565b6004546109c3906064611620565b811115610a045760405162461bcd60e51b815260206004820152600f60248201526e63616e27742065786365656420312560881b604482015260640161081b565b610a1281633b9aca00611f73565b60145550565b6003546001600160a01b0316600090815260066020526040812054610a65906002546001600160a01b0316600090815260066020526040902054610a5f9060045490611662565b90611662565b905090565b6000546001600160a01b03163314610a945760405162461bcd60e51b815260040161081b90611f3d565b6001600160a01b0382166000908152600b60205260409020805460ff1916821515179055610ac282826116a4565b5050565b6000546001600160a01b03163314610af05760405162461bcd60e51b815260040161081b90611f3d565b6012805461ff0019169055565b60006107eb82600019610784565b601554604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b602060405180830381865afa158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb9190611f92565b6000546001600160a01b03163314610ba55760405162461bcd60e51b815260040161081b90611f3d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bf15760405162461bcd60e51b815260040161081b90611f3d565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6015546040805163997664d760e01b815290516000926001600160a01b03169163997664d79160048083019260209291908290030181865afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a659190611f92565b6000546001600160a01b03163314610cb45760405162461bcd60e51b815260040161081b90611f3d565b6009811115610cfb5760405162461bcd60e51b81526020600482015260136024820152724665652063616e27742065786365656420392560681b604482015260640161081b565b600c55565b6015546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a19160048083019260209291908290030181865afa158015610c66573d6000803e3d6000fd5b6000546001600160a01b03163314610d745760405162461bcd60e51b815260040161081b90611f3d565b601554600160a01b900460ff1615610dce5760405162461bcd60e51b815260206004820152601760248201527f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000604482015260640161081b565b6015805460ff60a01b1916600160a01b179055565b601554604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610b3a565b60006109843384846110f5565b6000546001600160a01b03163314610e4d5760405162461bcd60e51b815260040161081b90611f3d565b436011556012805460ff19166001179055565b601554604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610ea557600080fd5b505af1158015610eb9573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610ee95760405162461bcd60e51b815260040161081b90611f3d565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b03163314610f675760405162461bcd60e51b815260040161081b90611f3d565b600e5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610ac2573d6000803e3d6000fd5b6000546001600160a01b03163314610fcb5760405162461bcd60e51b815260040161081b90611f3d565b610ac282826116a4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546110269184906110bb565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461105590836117b5565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a99086815260200190565b60405180910390a35060019392505050565b600081848411156110df5760405162461bcd60e51b815260040161081b9190611db8565b5060006110ec8486611fab565b95945050505050565b600080546001600160a01b0385811691161480159061112257506000546001600160a01b03848116911614155b156111795760125460ff166111795760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e0000000000000000604482015260640161081b565b601554600160a01b900460ff1615611202576001600160a01b0384166000908152600b602052604090205460ff161580156111cd57506001600160a01b0383166000908152600b602052604090205460ff16155b6112025760405162461bcd60e51b815260040161081b90602080825260049082015263426f742160e01b604082015260600190565b601254610100900460ff1615611284576000546001600160a01b0385811691161480159061123e57506000546001600160a01b03848116911614155b15611284576013548211156112845760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b604482015260640161081b565b6010546001600160a01b0385811691161480156112af5750600f546001600160a01b03848116911614155b80156112d457506001600160a01b03831660009081526009602052604090205460ff16155b15611322576001600160a01b03831660009081526008602052604090205442116112fd57600080fd5b61130842603c611fc2565b6001600160a01b0384166000908152600860205260409020555b601554600160a81b900460ff16156113465761133f848484610fd5565b9050610984565b30600090815260066020526040812054601454909190821080159190829061137b57506010546001600160a01b038781169116145b8015611394575030600090815260066020526040812054115b905080156113a4576113a4611814565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a166000908152600690915291909120546113f69187906110bb565b6001600160a01b03881660009081526006602052604081209190915561141c8888611a3b565b6114265785611430565b6114308887611ab0565b6001600160a01b03881660009081526006602052604090205490915061145690826117b5565b6001600160a01b038089166000908152600660205260409020919091556010548982169116148015906114a257506001600160a01b0388166000908152600a602052604090205460ff16155b15611518576015546001600160a01b0389811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561150557600080fd5b505af1925050508015611516575060015b505b6010546001600160a01b0388811691161480159061154f57506001600160a01b0387166000908152600a602052604090205460ff16155b156115c5576015546001600160a01b0388811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156115b257600080fd5b505af19250505080156115c3575060015b505b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161160a91815260200190565b60405180910390a3506001979650505050505050565b600061098483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b5c565b600061098483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110bb565b6001600160a01b03821630148015906116cb57506010546001600160a01b03838116911614155b6116d457600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff1916821580159190911790915561176c57601554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561175057600080fd5b505af1158015611764573d6000803e3d6000fd5b505050505050565b6015546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611736565b6000806117c28385611fc2565b9050838110156109845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161081b565b6015805460ff60a81b1916600160a81b17905530600090815260066020526040812054905061184c611847826002611620565b611b8a565b61185f61185a826002611620565b611c35565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190611f92565b60155460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529192506000917f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119889190611fda565b905080156119ef5760155460405163b6b55f2560e01b8152600481018490526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b505050505b600e546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50506015805460ff60a81b191690555050565b6001600160a01b03821660009081526009602052604081205460ff1680611a7a57506001600160a01b03821660009081526009602052604090205460ff165b15801561098457506010546001600160a01b03848116911614806109845750506010546001600160a01b03908116911614919050565b600080611ad4600d54611ace600c5486611d3690919063ffffffff16565b90611620565b30600090815260066020526040902054909150611af190826117b5565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b429085815260200190565b60405180910390a3611b548382611662565b949350505050565b60008183611b7d5760405162461bcd60e51b815260040161081b9190611db8565b5060006110ec8486611ff7565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611bbf57611bbf612019565b6001600160a01b0392831660209182029290920101526001805483519216918391908110611bef57611bef612019565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b815291169063791ac9479061173690859060009086903090429060040161202f565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110611c6c57611c6c612019565b6001600160a01b0392831660209182029290920101526001805483519216918391908110611c9c57611c9c612019565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110611cf057611cf0612019565b6001600160a01b039283166020918202929092010152600f54604051635c11d79560e01b8152911690635c11d7959061173690859060009086903090429060040161202f565b600082600003611d48575060006107eb565b6000611d548385611f73565b905082611d618583611ff7565b146109845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161081b565b600060208083528351808285015260005b81811015611de557858101830151858201604001528201611dc9565b81811115611df7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611e2257600080fd5b50565b60008060408385031215611e3857600080fd5b8235611e4381611e0d565b946020939093013593505050565b600060208284031215611e6357600080fd5b813561098481611e0d565b600060208284031215611e8057600080fd5b5035919050565b600080600060608486031215611e9c57600080fd5b8335611ea781611e0d565b92506020840135611eb781611e0d565b929592945050506040919091013590565b8015158114611e2257600080fd5b60008060408385031215611ee957600080fd5b8235611ef481611e0d565b91506020830135611f0481611ec8565b809150509250929050565b60008060408385031215611f2257600080fd5b8235611f2d81611e0d565b91506020830135611f0481611e0d565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611f8d57611f8d611f5d565b500290565b600060208284031215611fa457600080fd5b5051919050565b600082821015611fbd57611fbd611f5d565b500390565b60008219821115611fd557611fd5611f5d565b500190565b600060208284031215611fec57600080fd5b815161098481611ec8565b60008261201457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561207f5784516001600160a01b03168352938301939183019160010161205a565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212200e4b7e216db681562086a27618e3954e5da9b9c69938d2f57edf1572b81bbb8d64736f6c634300080d003360a0604052731ce270557c1f68cfb577b856766310bf8b47fd9c6080526ec097ce7bc90715b34b9f100000000060095534801561003b57600080fd5b50604051610da0380380610da083398101604081905261005a9161008d565b60008054336001600160a01b031991821617909155600180549091166001600160a01b03929092169190911790556100bd565b60006020828403121561009f57600080fd5b81516001600160a01b03811681146100b657600080fd5b9392505050565b608051610cc16100df600039600081816102db01526107410152610cc16000f3fe6080604052600436106100e15760003560e01c8063b2bdfa7b1161007f578063d54ad2a111610059578063d54ad2a11461027d578063e2d2e21914610293578063ecd0c0c3146102a9578063fe02721e146102c957600080fd5b8063b2bdfa7b146101ce578063b6b55f2514610206578063ce7c2ac21461022657600080fd5b80633a98ef39116100bb5780633a98ef391461014f5780635cc33f74146101785780638ecc37fb14610198578063997664d7146101b857600080fd5b80631014edf5146100ed57806314b6ca961461010f57806315f7e05e1461012f57600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004610ad8565b6102fd565b005b34801561011b57600080fd5b5061010d61012a366004610b04565b61035d565b34801561013b57600080fd5b5061010d61014a366004610b2e565b6104d5565b34801561015b57600080fd5b5061016560055481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b50610165610193366004610b2e565b6104f8565b3480156101a457600080fd5b506101656101b3366004610b2e565b61058b565b3480156101c457600080fd5b5061016560065481565b3480156101da57600080fd5b506001546101ee906001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b34801561021257600080fd5b5061010d610221366004610b49565b610616565b34801561023257600080fd5b50610262610241366004610b2e565b60046020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161016f565b34801561028957600080fd5b5061016560075481565b34801561029f57600080fd5b5061016560085481565b3480156102b557600080fd5b506000546101ee906001600160a01b031681565b3480156102d557600080fd5b506101ee7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b0316331461031457600080fd5b476001600160a01b0382166108fc8461032d578261032f565b845b6040518115909202916000818181858888f19350505050158015610357573d6000803e3d6000fd5b50505050565b6000546001600160a01b0316331461037457600080fd5b6001600160a01b0382166000908152600460205260409020541561039b5761039b82610670565b6000811180156103c157506001600160a01b038216600090815260046020526040902054155b1561042757600280546001600160a01b0384166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916909117905561045a565b8015801561044c57506001600160a01b03821660009081526004602052604090205415155b1561045a5761045a826107b4565b6001600160a01b03821660009081526004602052604090205460055461048b918391610485916108c9565b90610914565b6005556001600160a01b03821660009081526004602052604090208190556104b281610973565b6001600160a01b0390921660009081526004602052604090206001019190915550565b6000546001600160a01b031633146104ec57600080fd5b6104f581610670565b50565b6001600160a01b03811660009081526004602052604081205461056c5760405162461bcd60e51b815260206004820152602160248201527f596f75277265206e6f742061205052494e544552207368617265686f6c6465726044820152602160f81b60648201526084015b60405180910390fd5b506001600160a01b031660009081526004602052604090206002015490565b6001600160a01b03811660009081526004602052604081205481036105b257506000919050565b6001600160a01b0382166000908152600460205260408120546105d490610973565b6001600160a01b038416600090815260046020526040902060010154909150808211610604575060009392505050565b61060e82826108c9565b949350505050565b6000546001600160a01b0316331461062d57600080fd5b80156104f5576006546106409082610914565b60065560055460095461066a916106619161065b9085610990565b90610a12565b60085490610914565b60085550565b6001600160a01b03811660009081526004602052604081205490036106925750565b600061069d8261058b565b905080156107b0576007546106b29082610914565b6007556001600160a01b0382166000908152600460205260409020600201546106db9082610914565b6001600160a01b038316600090815260046020526040902060028101919091555461070590610973565b6001600160a01b03838116600081815260046020819052604091829020600101949094555163a9059cbb60e01b815292830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af115801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190610b62565b505b5050565b600280546107c490600190610b9a565b815481106107d4576107d4610bb1565b60009182526020808320909101546001600160a01b038481168452600390925260409092205460028054929093169291811061081257610812610bb1565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526003918290526040812054600280549193929161085e90600190610b9a565b8154811061086e5761086e610bb1565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560028054806108a4576108a4610bc7565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061090b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a54565b90505b92915050565b6000806109218385610bdd565b90508381101561090b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610563565b600061090e60095461065b6008548561099090919063ffffffff16565b6000826000036109a25750600061090e565b60006109ae8385610bf5565b9050826109bb8583610c14565b1461090b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610563565b600061090b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610a8e565b60008184841115610a785760405162461bcd60e51b81526004016105639190610c36565b506000610a858486610b9a565b95945050505050565b60008183610aaf5760405162461bcd60e51b81526004016105639190610c36565b506000610a858486610c14565b80356001600160a01b0381168114610ad357600080fd5b919050565b60008060408385031215610aeb57600080fd5b82359150610afb60208401610abc565b90509250929050565b60008060408385031215610b1757600080fd5b610b2083610abc565b946020939093013593505050565b600060208284031215610b4057600080fd5b61090b82610abc565b600060208284031215610b5b57600080fd5b5035919050565b600060208284031215610b7457600080fd5b8151801515811461090b57600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610bac57610bac610b84565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60008219821115610bf057610bf0610b84565b500190565b6000816000190483118215151615610c0f57610c0f610b84565b500290565b600082610c3157634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015610c6357858101830151858201604001528201610c47565b81811115610c75576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e187342267b05f4f4cd3a4b138808cdb715125db890f6bbbc009352b8b1083ae64736f6c634300080d003300000000000000000000000056929c273ac564596a144b3c3a0c7a05d8aed5cb
Deployed Bytecode
0x6080604052600436106102345760003560e01c8063736a83a11161012e578063bffb691d116100ab578063f2fde38b1161006f578063f2fde38b146106db578063f4293890146106fb578063f708a64f14610710578063f887ea4014610730578063fe02721e1461075057600080fd5b8063bffb691d14610634578063c9567bf914610655578063d12a76881461066a578063dd62ed3e14610680578063f0fc6bca146106c657600080fd5b806395d89b41116100f257806395d89b411461057a578063a8aa1b31146105a5578063a9059cbb146105c5578063b1a4e0dc146105e5578063bf56b3711461061e57600080fd5b8063736a83a1146104da57806375f0a874146104ef578063764ca51214610527578063893d20e81461053c5780638ecc37fb1461055a57600080fd5b8063313ce567116101bc5780635d098b38116101805780635d098b381461042f578063658d4b7f1461044f57806367ee5f091461046f57806369fe0e2d1461048457806370a08231146104a457600080fd5b8063313ce5671461039e578063342aa8b5146103ba5780633e07ce5b146103da578063571ac8b0146103ef5780635cc33f741461040f57600080fd5b806323b635851161020357806323b63585146102fa57806323b872dd1461031a57806329e04b4a1461033a5780632b112e491461035a5780632f54bf6e1461036f57600080fd5b806306fdde0314610240578063095ea7b31461028957806315f7e05e146102b957806318160ddd146102db57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152600e81526d5072696e7420546865204d6f6e6760901b60208201525b6040516102809190611db8565b60405180910390f35b34801561029557600080fd5b506102a96102a4366004611e25565b610784565b6040519015158152602001610280565b3480156102c557600080fd5b506102d96102d4366004611e51565b6107f1565b005b3480156102e757600080fd5b506004545b604051908152602001610280565b34801561030657600080fd5b506102a9610315366004611e6e565b610886565b34801561032657600080fd5b506102a9610335366004611e87565b6108c9565b34801561034657600080fd5b506102d9610355366004611e6e565b61098b565b34801561036657600080fd5b506102ec610a18565b34801561037b57600080fd5b506102a961038a366004611e51565b6000546001600160a01b0391821691161490565b3480156103aa57600080fd5b5060405160098152602001610280565b3480156103c657600080fd5b506102d96103d5366004611ed6565b610a6a565b3480156103e657600080fd5b506102d9610ac6565b3480156103fb57600080fd5b506102a961040a366004611e51565b610afd565b34801561041b57600080fd5b506102ec61042a366004611e51565b610b0b565b34801561043b57600080fd5b506102d961044a366004611e51565b610b7b565b34801561045b57600080fd5b506102d961046a366004611ed6565b610bc7565b34801561047b57600080fd5b506102ec610c1c565b34801561049057600080fd5b506102d961049f366004611e6e565b610c8a565b3480156104b057600080fd5b506102ec6104bf366004611e51565b6001600160a01b031660009081526006602052604090205490565b3480156104e657600080fd5b506102ec610d00565b3480156104fb57600080fd5b50600e5461050f906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b34801561053357600080fd5b506102d9610d4a565b34801561054857600080fd5b506000546001600160a01b031661050f565b34801561056657600080fd5b506102ec610575366004611e51565b610de3565b34801561058657600080fd5b50604080518082019091526002815261504d60f01b6020820152610273565b3480156105b157600080fd5b5060105461050f906001600160a01b031681565b3480156105d157600080fd5b506102a96105e0366004611e25565b610e16565b3480156105f157600080fd5b506102a9610600366004611e51565b6001600160a01b03166000908152600b602052604090205460ff1690565b34801561062a57600080fd5b506102ec60115481565b34801561064057600080fd5b506015546102a990600160a01b900460ff1681565b34801561066157600080fd5b506102d9610e23565b34801561067657600080fd5b506102ec60145481565b34801561068c57600080fd5b506102ec61069b366004611f0f565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156106d257600080fd5b506102d9610e60565b3480156106e757600080fd5b506102d96106f6366004611e51565b610ebf565b34801561070757600080fd5b506102d9610f3d565b34801561071c57600080fd5b506102d961072b366004611ed6565b610fa1565b34801561073c57600080fd5b50600f5461050f906001600160a01b031681565b34801561075c57600080fd5b5061050f7f0000000000000000000000001ce270557c1f68cfb577b856766310bf8b47fd9c81565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107df9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108245760405162461bcd60e51b815260040161081b90611f3d565b60405180910390fd5b601554604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e90602401600060405180830381600087803b15801561086b57600080fd5b505af115801561087f573d6000803e3d6000fd5b5050505050565b600080546001600160a01b031633146108b15760405162461bcd60e51b815260040161081b90611f3d565b6002546107eb9030906001600160a01b031684610fd5565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610976576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546109519184906110bb565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6109818484846110f5565b90505b9392505050565b6000546001600160a01b031633146109b55760405162461bcd60e51b815260040161081b90611f3d565b6004546109c3906064611620565b811115610a045760405162461bcd60e51b815260206004820152600f60248201526e63616e27742065786365656420312560881b604482015260640161081b565b610a1281633b9aca00611f73565b60145550565b6003546001600160a01b0316600090815260066020526040812054610a65906002546001600160a01b0316600090815260066020526040902054610a5f9060045490611662565b90611662565b905090565b6000546001600160a01b03163314610a945760405162461bcd60e51b815260040161081b90611f3d565b6001600160a01b0382166000908152600b60205260409020805460ff1916821515179055610ac282826116a4565b5050565b6000546001600160a01b03163314610af05760405162461bcd60e51b815260040161081b90611f3d565b6012805461ff0019169055565b60006107eb82600019610784565b601554604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b602060405180830381865afa158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb9190611f92565b6000546001600160a01b03163314610ba55760405162461bcd60e51b815260040161081b90611f3d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bf15760405162461bcd60e51b815260040161081b90611f3d565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6015546040805163997664d760e01b815290516000926001600160a01b03169163997664d79160048083019260209291908290030181865afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a659190611f92565b6000546001600160a01b03163314610cb45760405162461bcd60e51b815260040161081b90611f3d565b6009811115610cfb5760405162461bcd60e51b81526020600482015260136024820152724665652063616e27742065786365656420392560681b604482015260640161081b565b600c55565b6015546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a19160048083019260209291908290030181865afa158015610c66573d6000803e3d6000fd5b6000546001600160a01b03163314610d745760405162461bcd60e51b815260040161081b90611f3d565b601554600160a01b900460ff1615610dce5760405162461bcd60e51b815260206004820152601760248201527f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000604482015260640161081b565b6015805460ff60a01b1916600160a01b179055565b601554604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610b3a565b60006109843384846110f5565b6000546001600160a01b03163314610e4d5760405162461bcd60e51b815260040161081b90611f3d565b436011556012805460ff19166001179055565b601554604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610ea557600080fd5b505af1158015610eb9573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610ee95760405162461bcd60e51b815260040161081b90611f3d565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b03163314610f675760405162461bcd60e51b815260040161081b90611f3d565b600e5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610ac2573d6000803e3d6000fd5b6000546001600160a01b03163314610fcb5760405162461bcd60e51b815260040161081b90611f3d565b610ac282826116a4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546110269184906110bb565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461105590836117b5565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110a99086815260200190565b60405180910390a35060019392505050565b600081848411156110df5760405162461bcd60e51b815260040161081b9190611db8565b5060006110ec8486611fab565b95945050505050565b600080546001600160a01b0385811691161480159061112257506000546001600160a01b03848116911614155b156111795760125460ff166111795760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e0000000000000000604482015260640161081b565b601554600160a01b900460ff1615611202576001600160a01b0384166000908152600b602052604090205460ff161580156111cd57506001600160a01b0383166000908152600b602052604090205460ff16155b6112025760405162461bcd60e51b815260040161081b90602080825260049082015263426f742160e01b604082015260600190565b601254610100900460ff1615611284576000546001600160a01b0385811691161480159061123e57506000546001600160a01b03848116911614155b15611284576013548211156112845760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b604482015260640161081b565b6010546001600160a01b0385811691161480156112af5750600f546001600160a01b03848116911614155b80156112d457506001600160a01b03831660009081526009602052604090205460ff16155b15611322576001600160a01b03831660009081526008602052604090205442116112fd57600080fd5b61130842603c611fc2565b6001600160a01b0384166000908152600860205260409020555b601554600160a81b900460ff16156113465761133f848484610fd5565b9050610984565b30600090815260066020526040812054601454909190821080159190829061137b57506010546001600160a01b038781169116145b8015611394575030600090815260066020526040812054115b905080156113a4576113a4611814565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038a166000908152600690915291909120546113f69187906110bb565b6001600160a01b03881660009081526006602052604081209190915561141c8888611a3b565b6114265785611430565b6114308887611ab0565b6001600160a01b03881660009081526006602052604090205490915061145690826117b5565b6001600160a01b038089166000908152600660205260409020919091556010548982169116148015906114a257506001600160a01b0388166000908152600a602052604090205460ff16155b15611518576015546001600160a01b0389811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561150557600080fd5b505af1925050508015611516575060015b505b6010546001600160a01b0388811691161480159061154f57506001600160a01b0387166000908152600a602052604090205460ff16155b156115c5576015546001600160a01b0388811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156115b257600080fd5b505af19250505080156115c3575060015b505b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161160a91815260200190565b60405180910390a3506001979650505050505050565b600061098483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b5c565b600061098483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506110bb565b6001600160a01b03821630148015906116cb57506010546001600160a01b03838116911614155b6116d457600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff1916821580159190911790915561176c57601554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561175057600080fd5b505af1158015611764573d6000803e3d6000fd5b505050505050565b6015546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611736565b6000806117c28385611fc2565b9050838110156109845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161081b565b6015805460ff60a81b1916600160a81b17905530600090815260066020526040812054905061184c611847826002611620565b611b8a565b61185f61185a826002611620565b611c35565b6040516370a0823160e01b81523060048201526000907f0000000000000000000000001ce270557c1f68cfb577b856766310bf8b47fd9c6001600160a01b0316906370a0823190602401602060405180830381865afa1580156118c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ea9190611f92565b60155460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529192506000917f0000000000000000000000001ce270557c1f68cfb577b856766310bf8b47fd9c9091169063a9059cbb906044016020604051808303816000875af1158015611964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119889190611fda565b905080156119ef5760155460405163b6b55f2560e01b8152600481018490526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b505050505b600e546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50506015805460ff60a81b191690555050565b6001600160a01b03821660009081526009602052604081205460ff1680611a7a57506001600160a01b03821660009081526009602052604090205460ff165b15801561098457506010546001600160a01b03848116911614806109845750506010546001600160a01b03908116911614919050565b600080611ad4600d54611ace600c5486611d3690919063ffffffff16565b90611620565b30600090815260066020526040902054909150611af190826117b5565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b429085815260200190565b60405180910390a3611b548382611662565b949350505050565b60008183611b7d5760405162461bcd60e51b815260040161081b9190611db8565b5060006110ec8486611ff7565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611bbf57611bbf612019565b6001600160a01b0392831660209182029290920101526001805483519216918391908110611bef57611bef612019565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b815291169063791ac9479061173690859060009086903090429060040161202f565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110611c6c57611c6c612019565b6001600160a01b0392831660209182029290920101526001805483519216918391908110611c9c57611c9c612019565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000001ce270557c1f68cfb577b856766310bf8b47fd9c81600281518110611cf057611cf0612019565b6001600160a01b039283166020918202929092010152600f54604051635c11d79560e01b8152911690635c11d7959061173690859060009086903090429060040161202f565b600082600003611d48575060006107eb565b6000611d548385611f73565b905082611d618583611ff7565b146109845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161081b565b600060208083528351808285015260005b81811015611de557858101830151858201604001528201611dc9565b81811115611df7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611e2257600080fd5b50565b60008060408385031215611e3857600080fd5b8235611e4381611e0d565b946020939093013593505050565b600060208284031215611e6357600080fd5b813561098481611e0d565b600060208284031215611e8057600080fd5b5035919050565b600080600060608486031215611e9c57600080fd5b8335611ea781611e0d565b92506020840135611eb781611e0d565b929592945050506040919091013590565b8015158114611e2257600080fd5b60008060408385031215611ee957600080fd5b8235611ef481611e0d565b91506020830135611f0481611ec8565b809150509250929050565b60008060408385031215611f2257600080fd5b8235611f2d81611e0d565b91506020830135611f0481611e0d565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611f8d57611f8d611f5d565b500290565b600060208284031215611fa457600080fd5b5051919050565b600082821015611fbd57611fbd611f5d565b500390565b60008219821115611fd557611fd5611f5d565b500190565b600060208284031215611fec57600080fd5b815161098481611ec8565b60008261201457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561207f5784516001600160a01b03168352938301939183019160010161205a565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212200e4b7e216db681562086a27618e3954e5da9b9c69938d2f57edf1572b81bbb8d64736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000056929c273Ac564596a144b3c3a0c7A05D8aed5cB
-----Decoded View---------------
Arg [0] : _owner (address): 0x56929c273Ac564596a144b3c3a0c7A05D8aed5cB
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000056929c273Ac564596a144b3c3a0c7A05D8aed5cB
Deployed Bytecode Sourcemap
9391:11706:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12124:80;;;;;;;;;;-1:-1:-1;12196:5:0;;;;;;;;;;;;-1:-1:-1;;;12196:5:0;;;;12124:80;;;;;;;:::i;:::-;;;;;;;;12546:216;;;;;;;;;;-1:-1:-1;12546:216:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;12546:216:0;1072:187:1;19364:110:0;;;;;;;;;;-1:-1:-1;19364:110:0;;;;;:::i;:::-;;:::i;:::-;;11854:88;;;;;;;;;;-1:-1:-1;11927:12:0;;11854:88;;;1662:25:1;;;1650:2;1635:18;11854:88:0;1516:177:1;19654:139:0;;;;;;;;;;-1:-1:-1;19654:139:0;;;;;:::i;:::-;;:::i;13064:370::-;;;;;;;;;;-1:-1:-1;13064:370:0;;;;;:::i;:::-;;:::i;20882:206::-;;;;;;;;;;-1:-1:-1;20882:206:0;;;;;:::i;:::-;;:::i;19805:142::-;;;;;;;;;;;;;:::i;2919:103::-;;;;;;;;;;-1:-1:-1;2919:103:0;;;;;:::i;:::-;2974:4;3009:5;-1:-1:-1;;;;;2998:16:0;;;3009:5;;2998:16;;2919:103;11948:80;;;;;;;;;;-1:-1:-1;11948:80:0;;9878:1;2486:36:1;;2474:2;2459:18;11948:80:0;2344:184:1;18145:158:0;;;;;;;;;;-1:-1:-1;18145:158:0;;;;;:::i;:::-;;:::i;20511:80::-;;;;;;;;;;;;;:::i;12770:122::-;;;;;;;;;;-1:-1:-1;12770:122:0;;;;;:::i;:::-;;:::i;20346:157::-;;;;;;;;;;-1:-1:-1;20346:157:0;;;;;:::i;:::-;;:::i;19955:135::-;;;;;;;;;;-1:-1:-1;19955:135:0;;;;;:::i;:::-;;:::i;18806:119::-;;;;;;;;;;-1:-1:-1;18806:119:0;;;;;:::i;:::-;;:::i;20099:115::-;;;;;;;;;;;;;:::i;18933:137::-;;;;;;;;;;-1:-1:-1;18933:137:0;;;;;:::i;:::-;;:::i;12294:105::-;;;;;;;;;;-1:-1:-1;12294:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12378:18:0;12360:7;12378:18;;;:9;:18;;;;;;;12294:105;20226:111;;;;;;;;;;;;;:::i;10447:92::-;;;;;;;;;;-1:-1:-1;10447:92:0;;;;-1:-1:-1;;;;;10447:92:0;;;;;;-1:-1:-1;;;;;3223:32:1;;;3205:51;;3193:2;3178:18;10447:92:0;3043:219:1;20709:165:0;;;;;;;;;;;;;:::i;12210:78::-;;;;;;;;;;-1:-1:-1;12262:7:0;12280:5;-1:-1:-1;;;;;12280:5:0;12210:78;;19486:156;;;;;;;;;;-1:-1:-1;19486:156:0;;;;;:::i;:::-;;:::i;12034:84::-;;;;;;;;;;-1:-1:-1;12108:7:0;;;;;;;;;;;;-1:-1:-1;;;12108:7:0;;;;12034:84;;10579:19;;;;;;;;;;-1:-1:-1;10579:19:0;;;;-1:-1:-1;;;;;10579:19:0;;;12900:156;;;;;;;;;;-1:-1:-1;12900:156:0;;;;;:::i;:::-;;:::i;20599:102::-;;;;;;;;;;-1:-1:-1;20599:102:0;;;;;:::i;:::-;-1:-1:-1;;;;;20679:14:0;20655:4;20679:14;;;:5;:14;;;;;;;;;20599:102;10607:25;;;;;;;;;;;;;;;;10890:36;;;;;;;;;;-1:-1:-1;10890:36:0;;;;-1:-1:-1;;;10890:36:0;;;;;;18010:115;;;;;;;;;;;;;:::i;10764:61::-;;;;;;;;;;;;;;;;12405:133;;;;;;;;;;-1:-1:-1;12405:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12507:19:0;;;12489:7;12507:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12405:133;19262:90;;;;;;;;;;;;;:::i;3147:136::-;;;;;;;;;;-1:-1:-1;3147:136:0;;;;;:::i;:::-;;:::i;19080:174::-;;;;;;;;;;;;;:::i;18666:132::-;;;;;;;;;;-1:-1:-1;18666:132:0;;;;;:::i;:::-;;:::i;10548:24::-;;;;;;;;;;-1:-1:-1;10548:24:0;;;;-1:-1:-1;;;;;10548:24:0;;;9644:83;;;;;;;;;;;;;;;12546:216;12650:10;12621:4;12638:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12638:32:0;;;;;;;;;;:41;;;12695:37;12621:4;;12638:32;;12695:37;;;;12673:6;1662:25:1;;1650:2;1635:18;;1516:177;12695:37:0;;;;;;;;-1:-1:-1;12750:4:0;12546:216;;;;;:::o;19364:110::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;;;;;;;;;19433:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;19433:33:0;;-1:-1:-1;;;;;3223:32:1;;;19433:33:0::1;::::0;::::1;3205:51:1::0;19433:11:0;;::::1;::::0;:25:::1;::::0;3178:18:1;;19433:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19364:110:::0;:::o;19654:139::-;19718:4;3009:5;;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;19772:4:::1;::::0;19742:43:::1;::::0;19765:4:::1;::::0;-1:-1:-1;;;;;19772:4:0::1;19778:6:::0;19742:14:::1;:43::i;13064:370::-:0;-1:-1:-1;;;;;13184:19:0;;13164:4;13184:19;;;:11;:19;;;;;;;;13204:10;13184:31;;;;;;;;-1:-1:-1;;13184:52:0;13181:186;;13286:69;;;;;;;;;;;-1:-1:-1;;;13286:69:0;;;;;;;;-1:-1:-1;;;;;13286:19:0;;-1:-1:-1;13286:19:0;;;:11;:19;;;;;13306:10;13286:31;;;;;;;;;;:69;;13322:6;;13286:35;:69::i;:::-;-1:-1:-1;;;;;13252:19:0;;;;;;:11;:19;;;;;;;;13272:10;13252:31;;;;;;;:103;13181:186;13386:40;13400:6;13408:9;13419:6;13386:13;:40::i;:::-;13379:47;;13064:370;;;;;;:::o;20882:206::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;20980:12:::1;::::0;:21:::1;::::0;20997:3:::1;20980:16;:21::i;:::-;20970:6;:31;;20961:60;;;::::0;-1:-1:-1;;;20961:60:0;;4890:2:1;20961:60:0::1;::::0;::::1;4872:21:1::0;4929:2;4909:18;;;4902:30;-1:-1:-1;;;4948:18:1;;;4941:45;5003:18;;20961:60:0::1;4688:339:1::0;20961:60:0::1;21064:16;:6:::0;21073:7:::1;21064:16;:::i;:::-;21032:29;:48:::0;-1:-1:-1;20882:206:0:o;19805:142::-;19933:4;;-1:-1:-1;;;;;19933:4:0;19858:7;12378:18;;;:9;:18;;;;;;19885:54;;19912:4;;-1:-1:-1;;;;;19912:4:0;12360:7;12378:18;;;:9;:18;;;;;;19885:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19878:61;;19805:142;:::o;18145:158::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18222:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;:24;;-1:-1:-1;;18222:24:0::1;::::0;::::1;;;::::0;;18257:38:::1;18222:15:::0;:24;18257:20:::1;:38::i;:::-;18145:158:::0;;:::o;20511:80::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;20567:8:::1;:16:::0;;-1:-1:-1;;20567:16:0::1;::::0;;20511:80::o;12770:122::-;12825:4;12849:35;12857:7;-1:-1:-1;;12849:7:0;:35::i;20346:157::-;20449:11;;:46;;-1:-1:-1;;;20449:46:0;;-1:-1:-1;;;;;3223:32:1;;;20449:46:0;;;3205:51:1;20422:7:0;;20449:11;;:33;;3178:18:1;;20449:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19955:135::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;20039:15:::1;:43:::0;;-1:-1:-1;;;;;;20039:43:0::1;-1:-1:-1::0;;;;;20039:43:0;;;::::1;::::0;;;::::1;::::0;;19955:135::o;18806:119::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18889:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;18889:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18806:119::o;20099:115::-;20178:11;;:28;;;-1:-1:-1;;;20178:28:0;;;;20151:7;;-1:-1:-1;;;;;20178:11:0;;:26;;:28;;;;;;;;;;;;;;:11;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18933:137::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;19011:1:::1;19003:4;:9;;18994:42;;;::::0;-1:-1:-1;;;18994:42:0;;5728:2:1;18994:42:0::1;::::0;::::1;5710:21:1::0;5767:2;5747:18;;;5740:30;-1:-1:-1;;;5786:18:1;;;5779:49;5845:18;;18994:42:0::1;5526:343:1::0;18994:42:0::1;19047:8;:15:::0;18933:137::o;20226:111::-;20303:11;;:26;;;-1:-1:-1;;;20303:26:0;;;;20276:7;;-1:-1:-1;;;;;20303:11:0;;:24;;:26;;;;;;;;;;;;;;:11;:26;;;;;;;;;;;;;;20709:165;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;20779:16:::1;::::0;-1:-1:-1;;;20779:16:0;::::1;;;:25;20770:62;;;::::0;-1:-1:-1;;;20770:62:0;;6076:2:1;20770:62:0::1;::::0;::::1;6058:21:1::0;6115:2;6095:18;;;6088:30;6154:25;6134:18;;;6127:53;6197:18;;20770:62:0::1;5874:347:1::0;20770:62:0::1;20843:16;:23:::0;;-1:-1:-1;;;;20843:23:0::1;-1:-1:-1::0;;;20843:23:0::1;::::0;;20709:165::o;19486:156::-;19587:11;;:47;;-1:-1:-1;;;19587:47:0;;-1:-1:-1;;;;;3223:32:1;;;19587:47:0;;;3205:51:1;19560:7:0;;19587:11;;:34;;3178:18:1;;19587:47:0;3043:219:1;12900:156:0;12980:4;13004:44;13018:10;13030:9;13041:6;13004:13;:44::i;18010:115::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;18076:12:::1;18063:10;:25:::0;18099:11:::1;:18:::0;;-1:-1:-1;;18099:18:0::1;18113:4;18099:18;::::0;;18010:115::o;19262:90::-;19307:11;;:37;;-1:-1:-1;;;19307:37:0;;19333:10;19307:37;;;3205:51:1;-1:-1:-1;;;;;19307:11:0;;;;:25;;3178:18:1;;19307:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19262:90::o;3147:136::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;3223:5:::1;:11:::0;;-1:-1:-1;;;;;;3223:11:0::1;-1:-1:-1::0;;;;;3223:11:0;::::1;::::0;;::::1;::::0;;;3250:25:::1;::::0;3205:51:1;;;3250:25:0::1;::::0;3193:2:1;3178:18;3250:25:0::1;;;;;;;3147:136:::0;:::o;19080:174::-;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;19201:15:::1;::::0;19193:53:::1;::::0;19161:21:::1;::::0;-1:-1:-1;;;;;19201:15:0::1;::::0;19193:53;::::1;;;::::0;19161:21;;19132:26:::1;19193:53:::0;19132:26;19193:53;19161:21;19201:15;19193:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;18666:132:::0;2974:4;3009:5;-1:-1:-1;;;;;3009:5:0;2826:10;2998:16;2810:38;;;;-1:-1:-1;;;2810:38:0;;;;;;;:::i;:::-;18754:36:::1;18775:6;18783;18754:20;:36::i;15206:330::-:0;15336:53;;;;;;;;;;;-1:-1:-1;;;15336:53:0;;;;;;;;-1:-1:-1;;;;;15336:17:0;;15299:4;15336:17;;;:9;:17;;;;;;;:53;;15358:6;;15336:21;:53::i;:::-;-1:-1:-1;;;;;15316:17:0;;;;;;;:9;:17;;;;;;:73;;;;15423:20;;;;;;;:32;;15448:6;15423:24;:32::i;:::-;-1:-1:-1;;;;;15400:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15471:35;;;;;;;;;;15499:6;1662:25:1;;1650:2;1635:18;;1516:177;15471:35:0;;;;;;;;-1:-1:-1;15524:4:0;15206:330;;;;;:::o;581:192::-;667:7;703:12;695:6;;;;687:29;;;;-1:-1:-1;;;687:29:0;;;;;;;;:::i;:::-;-1:-1:-1;727:9:0;739:5;743:1;739;:5;:::i;:::-;727:17;581:192;-1:-1:-1;;;;;581:192:0:o;13442:1752::-;13534:4;13564:5;;-1:-1:-1;;;;;13555:14:0;;;13564:5;;13555:14;;;;:35;;-1:-1:-1;13585:5:0;;-1:-1:-1;;;;;13573:17:0;;;13585:5;;13573:17;;13555:35;13551:89;;;13600:11;;;;13592:48;;;;-1:-1:-1;;;13592:48:0;;6774:2:1;13592:48:0;;;6756:21:1;6813:2;6793:18;;;6786:30;6852:26;6832:18;;;6825:54;6896:18;;13592:48:0;6572:348:1;13592:48:0;13695:16;;-1:-1:-1;;;13695:16:0;;;;13691:102;;;-1:-1:-1;;;;;13738:13:0;;;;;;:5;:13;;;;;;;;13737:14;:35;;;;-1:-1:-1;;;;;;13756:16:0;;;;;;:5;:16;;;;;;;;13755:17;13737:35;13728:53;;;;-1:-1:-1;;;13728:53:0;;;;;;7127:2:1;7109:21;;;7166:1;7146:18;;;7139:29;-1:-1:-1;;;7199:2:1;7184:18;;7177:34;7243:2;7228:18;;6925:327;13728:53:0;13807:8;;;;;;;13803:130;;;13845:5;;-1:-1:-1;;;;;13837:13:0;;;13845:5;;13837:13;;;;:34;;-1:-1:-1;13866:5:0;;-1:-1:-1;;;;;13854:17:0;;;13866:5;;13854:17;;13837:34;13833:80;;;13890:6;;13882;:14;;13873:40;;;;-1:-1:-1;;;13873:40:0;;7459:2:1;13873:40:0;;;7441:21:1;7498:2;7478:18;;;7471:30;-1:-1:-1;;;7517:18:1;;;7510:42;7569:18;;13873:40:0;7257:336:1;13873:40:0;13959:4;;-1:-1:-1;;;;;13949:14:0;;;13959:4;;13949:14;:46;;;;-1:-1:-1;13988:6:0;;-1:-1:-1;;;;;13967:28:0;;;13988:6;;13967:28;;13949:46;:73;;;;-1:-1:-1;;;;;;14000:22:0;;;;;;:11;:22;;;;;;;;13999:23;13949:73;13945:219;;;-1:-1:-1;;;;;14048:19:0;;;;;;:8;:19;;;;;;14070:15;-1:-1:-1;14039:47:0;;;;;;14123:28;:15;14141:10;14123:28;:::i;:::-;-1:-1:-1;;;;;14101:19:0;;;;;;:8;:19;;;;;:50;13945:219;14186:6;;-1:-1:-1;;;14186:6:0;;;;14183:63;;;14202:41;14217:6;14225:9;14236:6;14202:14;:41::i;:::-;14195:48;;;;14183:63;14313:4;14264:28;12378:18;;;:9;:18;;;;;;14383:29;;12378:18;;14359:53;;;;;;14264:28;14359:53;;14452:38;;-1:-1:-1;14486:4:0;;-1:-1:-1;;;;;14475:15:0;;;14486:4;;14475:15;14452:38;:70;;;;-1:-1:-1;14512:4:0;14521:1;12378:18;;;:9;:18;;;;;;14494:28;14452:70;14429:94;;14537:14;14534:33;;;14554:10;:8;:10::i;:::-;14599:53;;;;;;;;;;;-1:-1:-1;;;14599:53:0;;;;;;;;-1:-1:-1;;;;;14599:17:0;;-1:-1:-1;14599:17:0;;;:9;:17;;;;;;;;:53;;14621:6;;14599:21;:53::i;:::-;-1:-1:-1;;;;;14579:17:0;;;;;;:9;:17;;;;;:73;;;;14690:32;14589:6;14712:9;14690:13;:32::i;:::-;:67;;14751:6;14690:67;;;14725:23;14733:6;14741;14725:7;:23::i;:::-;-1:-1:-1;;;;;14801:20:0;;;;;;:9;:20;;;;;;14665:92;;-1:-1:-1;14801:40:0;;14665:92;14801:24;:40::i;:::-;-1:-1:-1;;;;;14778:20:0;;;;;;;:9;:20;;;;;:63;;;;14867:4;;14857:14;;;14867:4;;14857:14;;;;:43;;-1:-1:-1;;;;;;14876:24:0;;;;;;:16;:24;;;;;;;;14875:25;14857:43;14854:114;;;14907:11;;-1:-1:-1;;;;;14936:17:0;;;14907:11;14936:17;;;:9;:17;;;;;;;;14907:47;;-1:-1:-1;;;14907:47:0;;;;;7905:51:1;;;;7972:18;;;7965:34;14907:11:0;;;:20;;7878:18:1;;14907:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14903:63;;14994:4;;-1:-1:-1;;;;;14981:17:0;;;14994:4;;14981:17;;;;:49;;-1:-1:-1;;;;;;15003:27:0;;;;;;:16;:27;;;;;;;;15002:28;14981:49;14978:126;;;15037:11;;-1:-1:-1;;;;;15069:20:0;;;15037:11;15069:20;;;:9;:20;;;;;;;;15037:53;;-1:-1:-1;;;15037:53:0;;;;;7905:51:1;;;;7972:18;;;7965:34;15037:11:0;;;:20;;7878:18:1;;15037:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15033:69;;15138:9;-1:-1:-1;;;;;15121:43:0;15130:6;-1:-1:-1;;;;;15121:43:0;;15149:14;15121:43;;;;1662:25:1;;1650:2;1635:18;;1516:177;15121:43:0;;;;;;;;-1:-1:-1;15182:4:0;;13442:1752;-1:-1:-1;;;;;;;13442:1752:0:o;1035:132::-;1093:7;1120:39;1124:1;1127;1120:39;;;;;;;;;;;;;;;;;:3;:39::i;439:136::-;497:7;524:43;528:1;531;524:43;;;;;;;;;;;;;;;;;:3;:43::i;18321:337::-;-1:-1:-1;;;;;18408:23:0;;18426:4;18408:23;;;;:41;;-1:-1:-1;18445:4:0;;-1:-1:-1;;;;;18435:14:0;;;18445:4;;18435:14;;18408:41;18400:50;;;;;;-1:-1:-1;;;;;18461:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;18461:33:0;;;;;;;;;;;;18505:146;;18530:11;;:31;;-1:-1:-1;;;18530:31:0;;-1:-1:-1;;;;;7923:32:1;;;18530:31:0;;;7905:51:1;18530:11:0;7972:18:1;;;7965:34;18530:11:0;;;;:20;;7878:18:1;;18530:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18145:158;;:::o;18505:146::-;18592:11;;-1:-1:-1;;;;;18621:17:0;;;18592:11;18621:17;;;:9;:17;;;;;;;;18592:47;;-1:-1:-1;;;18592:47:0;;;;;7905:51:1;;;;7972:18;;;7965:34;18592:11:0;;;:20;;7878:18:1;;18592:47:0;7731:274:1;252:181:0;310:7;;342:5;346:1;342;:5;:::i;:::-;330:17;;371:1;366;:6;;358:46;;;;-1:-1:-1;;;358:46:0;;8499:2:1;358:46:0;;;8481:21:1;8538:2;8518:18;;;8511:30;8577:29;8557:18;;;8550:57;8624:18;;358:46:0;8297:351:1;16128:549:0;10981:6;:13;;-1:-1:-1;;;;10981:13:0;-1:-1:-1;;;10981:13:0;;;16220:4:::1;-1:-1:-1::0;12378:18:0;;;:9;:18;;;;;;16179:47;-1:-1:-1;16247:37:0::1;16264:19;16179:47:::0;16281:1:::1;16264:16;:19::i;:::-;16247:16;:37::i;:::-;16295:38;16313:19;:12:::0;16330:1:::1;16313:16;:19::i;:::-;16295:17;:38::i;:::-;16366:37;::::0;-1:-1:-1;;;16366:37:0;;16397:4:::1;16366:37;::::0;::::1;3205:51:1::0;16346:17:0::1;::::0;16373:4:::1;-1:-1:-1::0;;;;;16366:22:0::1;::::0;::::1;::::0;3178:18:1;;16366:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16461:11;::::0;16431:54:::1;::::0;-1:-1:-1;;;16431:54:0;;-1:-1:-1;;;;;16461:11:0;;::::1;16431:54;::::0;::::1;7905:51:1::0;7972:18;;;7965:34;;;16346:57:0;;-1:-1:-1;16416:12:0::1;::::0;16438:4:::1;16431:21:::0;;::::1;::::0;::::1;::::0;7878:18:1;;16431:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16416:69;;16502:7;16498:82;;;16526:11;::::0;:30:::1;::::0;-1:-1:-1;;;16526:30:0;;::::1;::::0;::::1;1662:25:1::0;;;-1:-1:-1;;;;;16526:11:0;;::::1;::::0;:19:::1;::::0;1635:18:1;;16526:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16498:82;16613:15;::::0;16605:56:::1;::::0;-1:-1:-1;;;;;16613:15:0;;::::1;::::0;16639:21:::1;16605:56:::0;::::1;;;::::0;16613:15:::1;16605:56:::0;16613:15;16605:56;16639:21;16613:15;16605:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10999:6:0;:14;;-1:-1:-1;;;;10999:14:0;;;-1:-1:-1;;16128:549:0:o;15547:206::-;-1:-1:-1;;;;;15656:19:0;;15628:4;15656:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;15679:22:0;;;;;;:11;:22;;;;;;;;15656:45;15654:48;:90;;;;-1:-1:-1;15718:4:0;;-1:-1:-1;;;;;15708:14:0;;;15718:4;;15708:14;;:35;;-1:-1:-1;;15739:4:0;;-1:-1:-1;;;;;15739:4:0;;;15726:17;;;;15547:206;-1:-1:-1;15547:206:0:o;15761:354::-;15828:7;15848:17;15888:40;15913:14;;15888:20;15899:8;;15888:6;:10;;:20;;;;:::i;:::-;:24;;:40::i;:::-;15984:4;15966:24;;;;:9;:24;;;;;;15876:52;;-1:-1:-1;15966:39:0;;15876:52;15966:28;:39::i;:::-;15957:4;15939:24;;;;:9;:24;;;;;;;:66;;;;16021:42;;-1:-1:-1;;;;;16021:42:0;;;;;;;16053:9;1662:25:1;;1650:2;1635:18;;1516:177;16021:42:0;;;;;;;;16086:21;:6;16097:9;16086:10;:21::i;:::-;16079:28;15761:354;-1:-1:-1;;;;15761:354:0:o;1173:345::-;1259:7;1361:12;1354:5;1346:28;;;;-1:-1:-1;;;1346:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1385:9:0;1397:5;1401:1;1397;:5;:::i;17129:489::-;17281:16;;;17295:1;17281:16;;;;;;;;17257:21;;17281:16;;;;;;;;;;-1:-1:-1;17281:16:0;17257:40;;17326:4;17308;17313:1;17308:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17308:23:0;;;:7;;;;;;;;;:23;17352:4;;;17342:7;;17352:4;;;17342;;17352;17342:7;;;;;;:::i;:::-;-1:-1:-1;;;;;17342:14:0;;;:7;;;;;;;;;:14;17395:6;;:215;;-1:-1:-1;;;17395:215:0;;:6;;;:57;;:215;;17467:11;;17395:6;;17537:4;;17564;;17584:15;;17395:215;;;:::i;16691:430::-;16784:16;;;16798:1;16784:16;;;;;;;;;16760:21;;16784:16;;;;;;;;;;-1:-1:-1;16784:16:0;16760:40;;16829:4;16811;16816:1;16811:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16811:23:0;;;:7;;;;;;;;;:23;16855:4;;;16845:7;;16855:4;;;16845;;16855;16845:7;;;;;;:::i;:::-;;;;;;:14;-1:-1:-1;;;;;16845:14:0;;;-1:-1:-1;;;;;16845:14:0;;;;;16880:4;16870;16875:1;16870:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16870:14:0;;;:7;;;;;;;;;:14;16923:6;;:190;;-1:-1:-1;;;16923:190:0;;:6;;;:60;;:190;;16998:11;;16923:6;;17040:4;;17067;;17087:15;;16923:190;;;:::i;779:250::-;837:7;861:1;866;861:6;857:47;;-1:-1:-1;891:1:0;884:8;;857:47;916:9;928:5;932:1;928;:5;:::i;:::-;916:17;-1:-1:-1;961:1:0;952:5;956:1;916:17;952:5;:::i;:::-;:10;944:56;;;;-1:-1:-1;;;944:56:0;;10576:2:1;944:56:0;;;10558:21:1;10615:2;10595:18;;;10588:30;10654:34;10634:18;;;10627:62;-1:-1:-1;;;10705:18:1;;;10698:31;10746:19;;944:56:0;10374:397:1;14:597;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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:247::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1431:9;1418:23;1450:31;1475:5;1450:31;:::i;1698:180::-;1757:6;1810:2;1798:9;1789:7;1785:23;1781:32;1778:52;;;1826:1;1823;1816:12;1778:52;-1:-1:-1;1849:23:1;;1698:180;-1:-1:-1;1698:180:1:o;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2533:118::-;2619:5;2612:13;2605:21;2598:5;2595:32;2585:60;;2641:1;2638;2631:12;2656:382;2721:6;2729;2782:2;2770:9;2761:7;2757:23;2753:32;2750:52;;;2798:1;2795;2788:12;2750:52;2837:9;2824:23;2856:31;2881:5;2856:31;:::i;:::-;2906:5;-1:-1:-1;2963:2:1;2948:18;;2935:32;2976:30;2935:32;2976:30;:::i;:::-;3025:7;3015:17;;;2656:382;;;;;:::o;3475:388::-;3543:6;3551;3604:2;3592:9;3583:7;3579:23;3575:32;3572:52;;;3620:1;3617;3610:12;3572:52;3659:9;3646:23;3678:31;3703:5;3678:31;:::i;:::-;3728:5;-1:-1:-1;3785:2:1;3770:18;;3757:32;3798:33;3757:32;3798:33;:::i;4354:329::-;4556:2;4538:21;;;4595:1;4575:18;;;4568:29;-1:-1:-1;;;4628:2:1;4613:18;;4606:36;4674:2;4659:18;;4354:329::o;5032:127::-;5093:10;5088:3;5084:20;5081:1;5074:31;5124:4;5121:1;5114:15;5148:4;5145:1;5138:15;5164:168;5204:7;5270:1;5266;5262:6;5258:14;5255:1;5252:21;5247:1;5240:9;5233:17;5229:45;5226:71;;;5277:18;;:::i;:::-;-1:-1:-1;5317:9:1;;5164:168::o;5337:184::-;5407:6;5460:2;5448:9;5439:7;5435:23;5431:32;5428:52;;;5476:1;5473;5466:12;5428:52;-1:-1:-1;5499:16:1;;5337:184;-1:-1:-1;5337:184:1:o;6442:125::-;6482:4;6510:1;6507;6504:8;6501:34;;;6515:18;;:::i;:::-;-1:-1:-1;6552:9:1;;6442:125::o;7598:128::-;7638:3;7669:1;7665:6;7662:1;7659:13;7656:39;;;7675:18;;:::i;:::-;-1:-1:-1;7711:9:1;;7598:128::o;8653:245::-;8720:6;8773:2;8761:9;8752:7;8748:23;8744:32;8741:52;;;8789:1;8786;8779:12;8741:52;8821:9;8815:16;8840:28;8862:5;8840:28;:::i;8903:217::-;8943:1;8969;8959:132;;9013:10;9008:3;9004:20;9001:1;8994:31;9048:4;9045:1;9038:15;9076:4;9073:1;9066:15;8959:132;-1:-1:-1;9105:9:1;;8903:217::o;9257:127::-;9318:10;9313:3;9309:20;9306:1;9299:31;9349:4;9346:1;9339:15;9373:4;9370:1;9363:15;9389:980;9651:4;9699:3;9688:9;9684:19;9730:6;9719:9;9712:25;9756:2;9794:6;9789:2;9778:9;9774:18;9767:34;9837:3;9832:2;9821:9;9817:18;9810:31;9861:6;9896;9890:13;9927:6;9919;9912:22;9965:3;9954:9;9950:19;9943:26;;10004:2;9996:6;9992:15;9978:29;;10025:1;10035:195;10049:6;10046:1;10043:13;10035:195;;;10114:13;;-1:-1:-1;;;;;10110:39:1;10098:52;;10205:15;;;;10170:12;;;;10146:1;10064:9;10035:195;;;-1:-1:-1;;;;;;;10286:32:1;;;;10281:2;10266:18;;10259:60;-1:-1:-1;;;10350:3:1;10335:19;10328:35;10247:3;9389:980;-1:-1:-1;;;9389:980:1:o
Swarm Source
ipfs://e187342267b05f4f4cd3a4b138808cdb715125db890f6bbbc009352b8b1083ae
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.