ERC-20
Overview
Max Total Supply
100,000,000 KTS
Holders
194
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
65,367.448206107331845182 KTSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Kitties
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-03 */ pragma solidity ^0.8.12; // SPDX-License-Identifier: Unlicensed library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } 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 Auth { address internal owner; mapping(address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address liqPair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Kitties is IERC20, Auth { using SafeMath for uint256; address public auliquidityRatioReceiver = 0x3a7881730A730a87358F1A43a3B67eCcD2E54316; address public marketingFeeReceiver = 0x3a7881730A730a87358F1A43a3B67eCcD2E54316; address public devFeeReceiver = 0x768Db01886Be76441aE50f41CB0d8c8cfEf5eE11; string constant _name = "Kitties"; string constant _symbol = "KTS"; uint8 constant _decimals = 18; uint8 constant _zeros = 8; uint8 constant _maxTx = 10; uint8 constant _maxWallet = 10; uint8 constant _threshpct = 5; uint256 _totalSupply = 1 * 10**_zeros * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(_maxTx).div(1000); uint256 public _maxWalletToken = _totalSupply.mul(_maxWallet).div(1000); uint256 public swapThreshold = _totalSupply.mul(_threshpct).div(1000); mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) _allowances; mapping(address => bool) isFeeExempt; mapping(address => bool) isTxLimitExempt; mapping(address => bool) isWalletLimitExempt; mapping(address => bool) public _isBlacklisted; //FEE % TO TAKE FOR BUY OR SELL uint256 public sellFee = 40; uint256 public buyFee = 40; //HOW FEE IS DIVIDED WHILE SWAPPING THE TOKENS // 1/1 = 50% liquidity 50% Marketing // 1/4 = 25% liquidity 75% Marketing // etc uint256 public liquidityRatio = 0; uint256 public marketingRatio = 5; uint256 public feeRatio = marketingRatio + liquidityRatio; uint256 public feeDenominator = 100; uint256 public marketingTakePerc = 70; uint256 public devTakePerc = 30; IDEXRouter public Irouter02; address public liqPair; bool public tradingLive = false; uint256 private launchedAt; uint256 private deadBlocks; bool public limitsEnabled = true; bool public maxTxOnBuys = true; bool public maxTxOnSells = true; bool public swapEnabled = true; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor() Auth(msg.sender) { Irouter02 = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); liqPair = IDEXFactory(Irouter02.factory()).createPair( Irouter02.WETH(), address(this) ); _allowances[address(this)][address(Irouter02)] = type(uint256).max; isFeeExempt[msg.sender] = true; isFeeExempt[address(this)] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[address(this)] = true; isWalletLimitExempt[msg.sender] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[liqPair] = true; _approve(owner, address(Irouter02), type(uint256).max); _approve(address(this), address(Irouter02), type(uint256).max); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _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) { _approve(msg.sender, spender, amount); return true; } function _approve( address sender, address spender, uint256 amount ) private { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } 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 from, address to, uint256 amount ) internal returns (bool) { require( !_isBlacklisted[from] && !_isBlacklisted[to], "Blacklisted address" ); if (inSwap) { return _basicTransfer(from, to, amount); } if (!authorizations[from] && !authorizations[to]){ require(tradingLive, "Trading not open yet"); if (limitsEnabled) { if (!authorizations[from] && !isWalletLimitExempt[to]) { uint256 heldTokens = balanceOf(to); require( (heldTokens + amount) <= _maxWalletToken, "max wallet limit reached" ); } checkAmountTx(from, amount); } } if (shouldSwapBack(from)) { swapBack(swapThreshold); } _balances[from] = _balances[from].sub(amount, "Insufficient Balance"); uint256 amountReceived = (!shouldTakeFee(from) || !shouldTakeFee(to)) ? amount : takeFee(from, amount); _balances[to] = _balances[to].add(amountReceived); emit Transfer(from, to, 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 checkAmountTx(address sender, uint256 amount) internal view { require( amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded" ); } function shouldSwapBack(address from) internal view returns (bool) { if ( !inSwap && swapEnabled && !isTxLimitExempt[from] && from != liqPair && _balances[address(this)] >= swapThreshold ) { return true; } else { return false; } } function swapbackEdit(bool _enabled) public onlyOwner { swapEnabled = _enabled; } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 _fee; if (sender != liqPair) { _fee = sellFee; } else if (sender == liqPair) { _fee = buyFee; if(block.number < launchedAt){ _fee = 99; } } else { return amount; } uint256 contractTokens = amount.mul(_fee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(contractTokens); emit Transfer(sender, address(this), contractTokens); return amount.sub(contractTokens); } function swapBack(uint256 amountAsked) internal swapping { uint256 amountToLiquify = amountAsked .mul(liquidityRatio) .div(feeRatio) .div(2); uint256 amountToSwap = amountAsked.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = Irouter02.WETH(); uint256 balanceBefore = address(this).balance; Irouter02.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = feeRatio.sub(liquidityRatio.div(2)); uint256 amountETHLiquidity = amountETH .mul(liquidityRatio) .div(totalETHFee) .div(2); uint256 amountETHMarketing = amountETH.mul(marketingRatio).div( totalETHFee ); uint256 marketingTakeEthVal = amountETHMarketing * marketingTakePerc / 100; uint256 devTakeEthVal = amountETHMarketing * devTakePerc / 100; (bool tmpSuccess, ) = payable(marketingFeeReceiver).call{ value: marketingTakeEthVal, gas: 30000 }(""); (bool devtmpSuccess, ) = payable(devFeeReceiver).call{ value: devTakeEthVal, gas: 30000 }(""); tmpSuccess = false; devtmpSuccess = false; if (amountToLiquify > 0) { Irouter02.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, auliquidityRatioReceiver, block.timestamp ); } } function setFeesDivision(uint256 __marketingPercentage, uint256 __devPercentage) external onlyOwner { marketingTakePerc = __marketingPercentage; devTakePerc = __devPercentage; } function setLimits(uint256 maxWallPercent, uint256 maxTXPercent) external onlyOwner { _maxWalletToken = _totalSupply.mul(maxWallPercent).div(1000); _maxTxAmount = _totalSupply.mul(maxTXPercent).div(1000); } function setSwapThreshold(uint256 _swapThreshold) external onlyOwner { swapThreshold = _totalSupply.mul(_swapThreshold).div(1000); } function blacklist(address addrs, bool value) external onlyOwner { _isBlacklisted[addrs] = value; } function sweepContingency(uint256 amount) external onlyOwner { require(address(this).balance >= amount, "not enough tokens"); swapBack(amount); } function clearStuckBalance() external onlyOwner { uint256 amountETH = address(this).balance; payable(msg.sender).transfer(amountETH); } function launchCoin(uint256 __deadBlocks) external onlyOwner { require(!tradingLive, "already launched"); launchedAt = block.number + __deadBlocks; tradingLive = true; } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setIsWalletLimitExempt(address holder, bool exempt) external authorized { isWalletLimitExempt[holder] = exempt; } function setFees( uint256 _marketingRatio, uint256 _liquidityRatio, uint256 _sellFee, uint256 _buyFee ) external authorized { sellFee = _sellFee; buyFee = _buyFee; marketingRatio = _marketingRatio; liquidityRatio = _liquidityRatio; feeRatio = liquidityRatio.add(marketingRatio); require(sellFee < 45 && buyFee < 45, "Fees cannot be more than 45%"); } function setMaxBuySettings(bool _globalTxWatcher) external authorized { limitsEnabled = _globalTxWatcher; } }
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":"Irouter02","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":[],"name":"auliquidityRatioReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"addrs","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devTakePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","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":[{"internalType":"uint256","name":"__deadBlocks","type":"uint256"}],"name":"launchCoin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTakePerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxOnBuys","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxOnSells","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingRatio","type":"uint256"},{"internalType":"uint256","name":"_liquidityRatio","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__marketingPercentage","type":"uint256"},{"internalType":"uint256","name":"__devPercentage","type":"uint256"}],"name":"setFeesDivision","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":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"},{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_globalTxWatcher","type":"bool"}],"name":"setMaxBuySettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"swapbackEdit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepContingency","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":[],"name":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b0319908116733a7881730a730a87358f1a43a3b67eccd2e543169081179092556003805482169092179091556004805490911673768db01886be76441ae50f41cb0d8c8cfef5ee11179055620000686012600a6200079e565b620000766008600a6200079e565b62000083906001620007af565b6200008f9190620007af565b600555620000cd6103e8620000b9600a60ff166005546200047460201b620010521790919060201c565b6200050860201b620010d11790919060201c565b600655620000f76103e8620000b9600a60ff166005546200047460201b620010521790919060201c565b600755620001216103e8620000b9600560ff166005546200047460201b620010521790919060201c565b6008556028600f556028601055600060115560056012556011546012546200014a9190620007d1565b60135560646014556046601555601e6016556018805460ff60a01b19169055601b805463ffffffff191663010101011790553480156200018957600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560178054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa15801562000210573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002369190620007ec565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000298573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002be9190620007ec565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200030b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003319190620007ec565b601880546001600160a01b0319166001600160a01b03928316178155306000818152600a6020908152604080832060178054881685529083528184206000199081905533808652600b8552838620805460ff1990811660019081179092558888528588208054821683179055828852600c875285882080548216831790558888528588208054821683179055918752600d90955283862080548216861790559585528285208054871685179055955487168452908320805490941690911790925554905462000407939182169291169062000552565b601754620004239030906001600160a01b031660001962000552565b60055433600081815260096020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000892565b600082620004855750600062000502565b6000620004938385620007af565b905082620004a2858362000817565b14620004ff5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200064f60201b60201c565b6001600160a01b038316620005a05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620004f6565b6001600160a01b038216620005ee5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620004f6565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008183620006735760405162461bcd60e51b8152600401620004f691906200083a565b50600062000682848662000817565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e2578160001904821115620006c657620006c66200068b565b80851615620006d457918102915b93841c9390800290620006a6565b509250929050565b600082620006fb5750600162000502565b816200070a5750600062000502565b81600181146200072357600281146200072e576200074e565b600191505062000502565b60ff8411156200074257620007426200068b565b50506001821b62000502565b5060208310610133831016604e8410600b841016171562000773575081810a62000502565b6200077f8383620006a1565b80600019048211156200079657620007966200068b565b029392505050565b6000620004ff60ff841683620006ea565b6000816000190483118215151615620007cc57620007cc6200068b565b500290565b60008219821115620007e757620007e76200068b565b500190565b600060208284031215620007ff57600080fd5b81516001600160a01b0381168114620004ff57600080fd5b6000826200083557634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b8181101562000869578581018301518582016040015282016200084b565b818111156200087c576000604083870101525b50601f01601f1916929092016040019392505050565b6120e480620008a26000396000f3fe6080604052600436106102cd5760003560e01c806378109e5411610175578063b6a5d7de116100dc578063e7a42de311610095578063f0b37c041161006f578063f0b37c04146108c7578063f2fde38b146108e7578063f84ba65d14610907578063fe9fbb801461092757600080fd5b8063e7a42de314610871578063e96fada214610891578063ef97212d146108b157600080fd5b8063b6a5d7de1461078b578063c4590d3f146107ab578063cfd55dda146107cb578063d4208cc1146107eb578063dab84ee71461080b578063dd62ed3e1461082b57600080fd5b80638ff35e561161012e5780638ff35e56146106ca57806395d89b41146106e95780639d0014b114610715578063a76293ea14610735578063a83019fa14610755578063a9059cbb1461076b57600080fd5b806378109e541461062a5780637d1db4a51461064057806387a169ac14610656578063893d20e8146106765780638950af09146106945780638de4f5ed146106aa57600080fd5b8063313ce567116102345780635da55668116101ed5780636ddd1713116101c75780636ddd1713146105935780636fcba377146105b457806370a08231146105d457806377b3da051461060a57600080fd5b80635da556681461051b57806361147c541461053b578063658d4b7f1461057357600080fd5b8063313ce567146104845780633582ad23146104a0578063364333f4146104ba578063404e5129146104cf57806341744dd4146104ef578063470624021461050557600080fd5b806318160ddd1161028657806318160ddd146103b85780631cdd3be3146103cd5780632198cf6c146103fd57806323b872dd1461041f5780632b14ca561461043f5780632f54bf6e1461045557600080fd5b80630445b667146102d957806306fdde0314610302578063095ea7b31461033b57806311704f521461036b57806314c6b86d1461038c578063180b0d7e146103a257600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef60085481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b506040805180820190915260078152664b69747469657360c81b60208201525b6040516102f99190611d17565b34801561034757600080fd5b5061035b610356366004611d81565b610947565b60405190151581526020016102f9565b34801561037757600080fd5b5060185461035b90600160a01b900460ff1681565b34801561039857600080fd5b506102ef60155481565b3480156103ae57600080fd5b506102ef60145481565b3480156103c457600080fd5b506005546102ef565b3480156103d957600080fd5b5061035b6103e8366004611dad565b600e6020526000908152604090205460ff1681565b34801561040957600080fd5b5061041d610418366004611dda565b61095e565b005b34801561042b57600080fd5b5061035b61043a366004611e0f565b6109b7565b34801561044b57600080fd5b506102ef600f5481565b34801561046157600080fd5b5061035b610470366004611dad565b6000546001600160a01b0391821691161490565b34801561049057600080fd5b50604051601281526020016102f9565b3480156104ac57600080fd5b50601b5461035b9060ff1681565b3480156104c657600080fd5b5061041d610a79565b3480156104db57600080fd5b5061041d6104ea366004611dda565b610ad6565b3480156104fb57600080fd5b506102ef60135481565b34801561051157600080fd5b506102ef60105481565b34801561052757600080fd5b5061041d610536366004611e50565b610b2b565b34801561054757600080fd5b5060185461055b906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b34801561057f57600080fd5b5061041d61058e366004611dda565b610b73565b34801561059f57600080fd5b50601b5461035b906301000000900460ff1681565b3480156105c057600080fd5b5061041d6105cf366004611e6b565b610bc3565b3480156105e057600080fd5b506102ef6105ef366004611dad565b6001600160a01b031660009081526009602052604090205490565b34801561061657600080fd5b5061041d610625366004611e9d565b610c6f565b34801561063657600080fd5b506102ef60075481565b34801561064c57600080fd5b506102ef60065481565b34801561066257600080fd5b5061041d610671366004611eb6565b610d09565b34801561068257600080fd5b506000546001600160a01b031661055b565b3480156106a057600080fd5b506102ef60165481565b3480156106b657600080fd5b5060025461055b906001600160a01b031681565b3480156106d657600080fd5b50601b5461035b90610100900460ff1681565b3480156106f557600080fd5b506040805180820190915260038152624b545360e81b602082015261032e565b34801561072157600080fd5b5061041d610730366004611e9d565b610d3e565b34801561074157600080fd5b5060175461055b906001600160a01b031681565b34801561076157600080fd5b506102ef60115481565b34801561077757600080fd5b5061035b610786366004611d81565b610d8f565b34801561079757600080fd5b5061041d6107a6366004611dad565b610d9c565b3480156107b757600080fd5b5061041d6107c6366004611eb6565b610ded565b3480156107d757600080fd5b5061041d6107e6366004611e9d565b610e51565b3480156107f757600080fd5b50601b5461035b9062010000900460ff1681565b34801561081757600080fd5b5060045461055b906001600160a01b031681565b34801561083757600080fd5b506102ef610846366004611ed8565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561087d57600080fd5b5061041d61088c366004611e50565b610ecb565b34801561089d57600080fd5b5060035461055b906001600160a01b031681565b3480156108bd57600080fd5b506102ef60125481565b3480156108d357600080fd5b5061041d6108e2366004611dad565b610f03565b3480156108f357600080fd5b5061041d610902366004611dad565b610f4e565b34801561091357600080fd5b5061041d610922366004611dda565b610fe4565b34801561093357600080fd5b5061035b610942366004611dad565b611034565b6000610954338484611113565b5060015b92915050565b61096733611034565b61098c5760405162461bcd60e51b815260040161098390611f11565b60405180910390fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914610a64576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610a3f91849061120c565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610a6f848484611246565b90505b9392505050565b6000546001600160a01b03163314610aa35760405162461bcd60e51b815260040161098390611f36565b6040514790339082156108fc029083906000818181858888f19350505050158015610ad2573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b005760405162461bcd60e51b815260040161098390611f36565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b555760405162461bcd60e51b815260040161098390611f36565b601b805491151563010000000263ff00000019909216919091179055565b610b7c33611034565b610b985760405162461bcd60e51b815260040161098390611f11565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610bcc33611034565b610be85760405162461bcd60e51b815260040161098390611f11565b600f829055601081905560128490556011839055610c0683856115b6565b601355600f54602d118015610c1d5750602d601054105b610c695760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20343525000000006044820152606401610983565b50505050565b6000546001600160a01b03163314610c995760405162461bcd60e51b815260040161098390611f36565b601854600160a01b900460ff1615610ce65760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b6044820152606401610983565b610cf08143611f6c565b601955506018805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610d335760405162461bcd60e51b815260040161098390611f36565b601591909155601655565b6000546001600160a01b03163314610d685760405162461bcd60e51b815260040161098390611f36565b610d896103e8610d838360055461105290919063ffffffff16565b906110d1565b60085550565b6000610a72338484611246565b6000546001600160a01b03163314610dc65760405162461bcd60e51b815260040161098390611f36565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610e175760405162461bcd60e51b815260040161098390611f36565b610e326103e8610d838460055461105290919063ffffffff16565b600755600554610e4a906103e890610d839084611052565b6006555050565b6000546001600160a01b03163314610e7b5760405162461bcd60e51b815260040161098390611f36565b80471015610ebf5760405162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b6044820152606401610983565b610ec881611615565b50565b610ed433611034565b610ef05760405162461bcd60e51b815260040161098390611f11565b601b805460ff1916911515919091179055565b6000546001600160a01b03163314610f2d5760405162461bcd60e51b815260040161098390611f36565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610f785760405162461bcd60e51b815260040161098390611f36565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610fed33611034565b6110095760405162461bcd60e51b815260040161098390611f11565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008261106157506000610958565b600061106d8385611f84565b90508261107a8583611fa3565b14610a725760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610983565b6000610a7283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119d2565b6001600160a01b03831661115f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610983565b6001600160a01b0382166111ab5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610983565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081848411156112305760405162461bcd60e51b81526004016109839190611d17565b50600061123d8486611fc5565b95945050505050565b6001600160a01b0383166000908152600e602052604081205460ff1615801561128857506001600160a01b0383166000908152600e602052604090205460ff16155b6112ca5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610983565b601b54640100000000900460ff16156112ef576112e8848484611a00565b9050610a72565b6001600160a01b03841660009081526001602052604090205460ff1615801561133157506001600160a01b03831660009081526001602052604090205460ff16155b1561145857601854600160a01b900460ff166113865760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610983565b601b5460ff1615611458576001600160a01b03841660009081526001602052604090205460ff161580156113d357506001600160a01b0383166000908152600d602052604090205460ff16155b1561144e576001600160a01b0383166000908152600960205260409020546007546113fe8483611f6c565b111561144c5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610983565b505b6114588483611ae6565b61146184611b4f565b1561147157611471600854611615565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600990915291909120546114c391849061120c565b6001600160a01b038516600090815260096020908152604080832093909355600b90529081205460ff1615158061151457506001600160a01b0384166000908152600b602052604090205460ff1615155b611527576115228584611bec565b611529565b825b6001600160a01b03851660009081526009602052604090205490915061154f90826115b6565b6001600160a01b0380861660008181526009602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115a39085815260200190565b60405180910390a3506001949350505050565b6000806115c38385611f6c565b905083811015610a725760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610983565b601b805464ff00000000191664010000000017905560135460115460009161164791600291610d839182908790611052565b905060006116558383611cd5565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061168f5761168f611fdc565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c9190611ff2565b8160018151811061171f5761171f611fdc565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac9479061176990869060009087903090429060040161200f565b600060405180830381600087803b15801561178357600080fd5b505af1158015611797573d6000803e3d6000fd5b5050505060006117b08247611cd590919063ffffffff16565b905060006117d66117cd60026011546110d190919063ffffffff16565b60135490611cd5565b905060006117f86002610d8384610d836011548861105290919063ffffffff16565b9050600061181583610d836012548761105290919063ffffffff16565b905060006064601554836118299190611f84565b6118339190611fa3565b905060006064601654846118479190611f84565b6118519190611fa3565b6003546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146118a8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ad565b606091505b50506004546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b5060009350839250508c1590506119b55760175460025460405163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c40160606040518083038185885af115801561198c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119b19190612080565b5050505b5050601b805464ff00000000191690555050505050505050505050565b600081836119f35760405162461bcd60e51b81526004016109839190611d17565b50600061123d8486611fa3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600990915291822054611a5191849061120c565b6001600160a01b038086166000908152600960205260408082209390935590851681522054611a8090836115b6565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ad49086815260200190565b60405180910390a35060019392505050565b60065481111580611b0f57506001600160a01b0382166000908152600c602052604090205460ff165b610ad25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610983565b601b54600090640100000000900460ff16158015611b765750601b546301000000900460ff165b8015611b9b57506001600160a01b0382166000908152600c602052604090205460ff16155b8015611bb557506018546001600160a01b03838116911614155b8015611bd257506008543060009081526009602052604090205410155b15611bdf57506001919050565b506000919050565b919050565b60185460009081906001600160a01b03858116911614611c0f5750600f54611c45565b6018546001600160a01b0385811691161415611c3c5750601054601954431015611c37575060635b611c45565b82915050610958565b601454600090611c5990610d838685611052565b30600090815260096020526040902054909150611c7690826115b6565b30600081815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cc79085815260200190565b60405180910390a361123d84825b6000610a7283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061120c565b600060208083528351808285015260005b81811015611d4457858101830151858201604001528201611d28565b81811115611d56576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ec857600080fd5b60008060408385031215611d9457600080fd5b8235611d9f81611d6c565b946020939093013593505050565b600060208284031215611dbf57600080fd5b8135610a7281611d6c565b80358015158114611be757600080fd5b60008060408385031215611ded57600080fd5b8235611df881611d6c565b9150611e0660208401611dca565b90509250929050565b600080600060608486031215611e2457600080fd5b8335611e2f81611d6c565b92506020840135611e3f81611d6c565b929592945050506040919091013590565b600060208284031215611e6257600080fd5b610a7282611dca565b60008060008060808587031215611e8157600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611eaf57600080fd5b5035919050565b60008060408385031215611ec957600080fd5b50508035926020909101359150565b60008060408385031215611eeb57600080fd5b8235611ef681611d6c565b91506020830135611f0681611d6c565b809150509250929050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611f7f57611f7f611f56565b500190565b6000816000190483118215151615611f9e57611f9e611f56565b500290565b600082611fc057634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611fd757611fd7611f56565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561200457600080fd5b8151610a7281611d6c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561205f5784516001600160a01b03168352938301939183019160010161203a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561209557600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a2df28fbcdef0f9b0d27d2c81b63f175832988a99bbcea87a194d62084959dad64736f6c634300080c0033
Deployed Bytecode
0x6080604052600436106102cd5760003560e01c806378109e5411610175578063b6a5d7de116100dc578063e7a42de311610095578063f0b37c041161006f578063f0b37c04146108c7578063f2fde38b146108e7578063f84ba65d14610907578063fe9fbb801461092757600080fd5b8063e7a42de314610871578063e96fada214610891578063ef97212d146108b157600080fd5b8063b6a5d7de1461078b578063c4590d3f146107ab578063cfd55dda146107cb578063d4208cc1146107eb578063dab84ee71461080b578063dd62ed3e1461082b57600080fd5b80638ff35e561161012e5780638ff35e56146106ca57806395d89b41146106e95780639d0014b114610715578063a76293ea14610735578063a83019fa14610755578063a9059cbb1461076b57600080fd5b806378109e541461062a5780637d1db4a51461064057806387a169ac14610656578063893d20e8146106765780638950af09146106945780638de4f5ed146106aa57600080fd5b8063313ce567116102345780635da55668116101ed5780636ddd1713116101c75780636ddd1713146105935780636fcba377146105b457806370a08231146105d457806377b3da051461060a57600080fd5b80635da556681461051b57806361147c541461053b578063658d4b7f1461057357600080fd5b8063313ce567146104845780633582ad23146104a0578063364333f4146104ba578063404e5129146104cf57806341744dd4146104ef578063470624021461050557600080fd5b806318160ddd1161028657806318160ddd146103b85780631cdd3be3146103cd5780632198cf6c146103fd57806323b872dd1461041f5780632b14ca561461043f5780632f54bf6e1461045557600080fd5b80630445b667146102d957806306fdde0314610302578063095ea7b31461033b57806311704f521461036b57806314c6b86d1461038c578063180b0d7e146103a257600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef60085481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b506040805180820190915260078152664b69747469657360c81b60208201525b6040516102f99190611d17565b34801561034757600080fd5b5061035b610356366004611d81565b610947565b60405190151581526020016102f9565b34801561037757600080fd5b5060185461035b90600160a01b900460ff1681565b34801561039857600080fd5b506102ef60155481565b3480156103ae57600080fd5b506102ef60145481565b3480156103c457600080fd5b506005546102ef565b3480156103d957600080fd5b5061035b6103e8366004611dad565b600e6020526000908152604090205460ff1681565b34801561040957600080fd5b5061041d610418366004611dda565b61095e565b005b34801561042b57600080fd5b5061035b61043a366004611e0f565b6109b7565b34801561044b57600080fd5b506102ef600f5481565b34801561046157600080fd5b5061035b610470366004611dad565b6000546001600160a01b0391821691161490565b34801561049057600080fd5b50604051601281526020016102f9565b3480156104ac57600080fd5b50601b5461035b9060ff1681565b3480156104c657600080fd5b5061041d610a79565b3480156104db57600080fd5b5061041d6104ea366004611dda565b610ad6565b3480156104fb57600080fd5b506102ef60135481565b34801561051157600080fd5b506102ef60105481565b34801561052757600080fd5b5061041d610536366004611e50565b610b2b565b34801561054757600080fd5b5060185461055b906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b34801561057f57600080fd5b5061041d61058e366004611dda565b610b73565b34801561059f57600080fd5b50601b5461035b906301000000900460ff1681565b3480156105c057600080fd5b5061041d6105cf366004611e6b565b610bc3565b3480156105e057600080fd5b506102ef6105ef366004611dad565b6001600160a01b031660009081526009602052604090205490565b34801561061657600080fd5b5061041d610625366004611e9d565b610c6f565b34801561063657600080fd5b506102ef60075481565b34801561064c57600080fd5b506102ef60065481565b34801561066257600080fd5b5061041d610671366004611eb6565b610d09565b34801561068257600080fd5b506000546001600160a01b031661055b565b3480156106a057600080fd5b506102ef60165481565b3480156106b657600080fd5b5060025461055b906001600160a01b031681565b3480156106d657600080fd5b50601b5461035b90610100900460ff1681565b3480156106f557600080fd5b506040805180820190915260038152624b545360e81b602082015261032e565b34801561072157600080fd5b5061041d610730366004611e9d565b610d3e565b34801561074157600080fd5b5060175461055b906001600160a01b031681565b34801561076157600080fd5b506102ef60115481565b34801561077757600080fd5b5061035b610786366004611d81565b610d8f565b34801561079757600080fd5b5061041d6107a6366004611dad565b610d9c565b3480156107b757600080fd5b5061041d6107c6366004611eb6565b610ded565b3480156107d757600080fd5b5061041d6107e6366004611e9d565b610e51565b3480156107f757600080fd5b50601b5461035b9062010000900460ff1681565b34801561081757600080fd5b5060045461055b906001600160a01b031681565b34801561083757600080fd5b506102ef610846366004611ed8565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561087d57600080fd5b5061041d61088c366004611e50565b610ecb565b34801561089d57600080fd5b5060035461055b906001600160a01b031681565b3480156108bd57600080fd5b506102ef60125481565b3480156108d357600080fd5b5061041d6108e2366004611dad565b610f03565b3480156108f357600080fd5b5061041d610902366004611dad565b610f4e565b34801561091357600080fd5b5061041d610922366004611dda565b610fe4565b34801561093357600080fd5b5061035b610942366004611dad565b611034565b6000610954338484611113565b5060015b92915050565b61096733611034565b61098c5760405162461bcd60e51b815260040161098390611f11565b60405180910390fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914610a64576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610a3f91849061120c565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610a6f848484611246565b90505b9392505050565b6000546001600160a01b03163314610aa35760405162461bcd60e51b815260040161098390611f36565b6040514790339082156108fc029083906000818181858888f19350505050158015610ad2573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b005760405162461bcd60e51b815260040161098390611f36565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b555760405162461bcd60e51b815260040161098390611f36565b601b805491151563010000000263ff00000019909216919091179055565b610b7c33611034565b610b985760405162461bcd60e51b815260040161098390611f11565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610bcc33611034565b610be85760405162461bcd60e51b815260040161098390611f11565b600f829055601081905560128490556011839055610c0683856115b6565b601355600f54602d118015610c1d5750602d601054105b610c695760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20343525000000006044820152606401610983565b50505050565b6000546001600160a01b03163314610c995760405162461bcd60e51b815260040161098390611f36565b601854600160a01b900460ff1615610ce65760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b6044820152606401610983565b610cf08143611f6c565b601955506018805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610d335760405162461bcd60e51b815260040161098390611f36565b601591909155601655565b6000546001600160a01b03163314610d685760405162461bcd60e51b815260040161098390611f36565b610d896103e8610d838360055461105290919063ffffffff16565b906110d1565b60085550565b6000610a72338484611246565b6000546001600160a01b03163314610dc65760405162461bcd60e51b815260040161098390611f36565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610e175760405162461bcd60e51b815260040161098390611f36565b610e326103e8610d838460055461105290919063ffffffff16565b600755600554610e4a906103e890610d839084611052565b6006555050565b6000546001600160a01b03163314610e7b5760405162461bcd60e51b815260040161098390611f36565b80471015610ebf5760405162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b6044820152606401610983565b610ec881611615565b50565b610ed433611034565b610ef05760405162461bcd60e51b815260040161098390611f11565b601b805460ff1916911515919091179055565b6000546001600160a01b03163314610f2d5760405162461bcd60e51b815260040161098390611f36565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610f785760405162461bcd60e51b815260040161098390611f36565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610fed33611034565b6110095760405162461bcd60e51b815260040161098390611f11565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008261106157506000610958565b600061106d8385611f84565b90508261107a8583611fa3565b14610a725760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610983565b6000610a7283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119d2565b6001600160a01b03831661115f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610983565b6001600160a01b0382166111ab5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610983565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081848411156112305760405162461bcd60e51b81526004016109839190611d17565b50600061123d8486611fc5565b95945050505050565b6001600160a01b0383166000908152600e602052604081205460ff1615801561128857506001600160a01b0383166000908152600e602052604090205460ff16155b6112ca5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610983565b601b54640100000000900460ff16156112ef576112e8848484611a00565b9050610a72565b6001600160a01b03841660009081526001602052604090205460ff1615801561133157506001600160a01b03831660009081526001602052604090205460ff16155b1561145857601854600160a01b900460ff166113865760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610983565b601b5460ff1615611458576001600160a01b03841660009081526001602052604090205460ff161580156113d357506001600160a01b0383166000908152600d602052604090205460ff16155b1561144e576001600160a01b0383166000908152600960205260409020546007546113fe8483611f6c565b111561144c5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610983565b505b6114588483611ae6565b61146184611b4f565b1561147157611471600854611615565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600990915291909120546114c391849061120c565b6001600160a01b038516600090815260096020908152604080832093909355600b90529081205460ff1615158061151457506001600160a01b0384166000908152600b602052604090205460ff1615155b611527576115228584611bec565b611529565b825b6001600160a01b03851660009081526009602052604090205490915061154f90826115b6565b6001600160a01b0380861660008181526009602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115a39085815260200190565b60405180910390a3506001949350505050565b6000806115c38385611f6c565b905083811015610a725760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610983565b601b805464ff00000000191664010000000017905560135460115460009161164791600291610d839182908790611052565b905060006116558383611cd5565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061168f5761168f611fdc565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c9190611ff2565b8160018151811061171f5761171f611fdc565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac9479061176990869060009087903090429060040161200f565b600060405180830381600087803b15801561178357600080fd5b505af1158015611797573d6000803e3d6000fd5b5050505060006117b08247611cd590919063ffffffff16565b905060006117d66117cd60026011546110d190919063ffffffff16565b60135490611cd5565b905060006117f86002610d8384610d836011548861105290919063ffffffff16565b9050600061181583610d836012548761105290919063ffffffff16565b905060006064601554836118299190611f84565b6118339190611fa3565b905060006064601654846118479190611f84565b6118519190611fa3565b6003546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146118a8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ad565b606091505b50506004546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d8060008114611906576040519150601f19603f3d011682016040523d82523d6000602084013e61190b565b606091505b5060009350839250508c1590506119b55760175460025460405163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c40160606040518083038185885af115801561198c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119b19190612080565b5050505b5050601b805464ff00000000191690555050505050505050505050565b600081836119f35760405162461bcd60e51b81526004016109839190611d17565b50600061123d8486611fa3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600990915291822054611a5191849061120c565b6001600160a01b038086166000908152600960205260408082209390935590851681522054611a8090836115b6565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ad49086815260200190565b60405180910390a35060019392505050565b60065481111580611b0f57506001600160a01b0382166000908152600c602052604090205460ff165b610ad25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610983565b601b54600090640100000000900460ff16158015611b765750601b546301000000900460ff165b8015611b9b57506001600160a01b0382166000908152600c602052604090205460ff16155b8015611bb557506018546001600160a01b03838116911614155b8015611bd257506008543060009081526009602052604090205410155b15611bdf57506001919050565b506000919050565b919050565b60185460009081906001600160a01b03858116911614611c0f5750600f54611c45565b6018546001600160a01b0385811691161415611c3c5750601054601954431015611c37575060635b611c45565b82915050610958565b601454600090611c5990610d838685611052565b30600090815260096020526040902054909150611c7690826115b6565b30600081815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cc79085815260200190565b60405180910390a361123d84825b6000610a7283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061120c565b600060208083528351808285015260005b81811015611d4457858101830151858201604001528201611d28565b81811115611d56576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ec857600080fd5b60008060408385031215611d9457600080fd5b8235611d9f81611d6c565b946020939093013593505050565b600060208284031215611dbf57600080fd5b8135610a7281611d6c565b80358015158114611be757600080fd5b60008060408385031215611ded57600080fd5b8235611df881611d6c565b9150611e0660208401611dca565b90509250929050565b600080600060608486031215611e2457600080fd5b8335611e2f81611d6c565b92506020840135611e3f81611d6c565b929592945050506040919091013590565b600060208284031215611e6257600080fd5b610a7282611dca565b60008060008060808587031215611e8157600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611eaf57600080fd5b5035919050565b60008060408385031215611ec957600080fd5b50508035926020909101359150565b60008060408385031215611eeb57600080fd5b8235611ef681611d6c565b91506020830135611f0681611d6c565b809150509250929050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611f7f57611f7f611f56565b500190565b6000816000190483118215151615611f9e57611f9e611f56565b500290565b600082611fc057634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611fd757611fd7611f56565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561200457600080fd5b8151610a7281611d6c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561205f5784516001600160a01b03168352938301939183019160010161203a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561209557600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a2df28fbcdef0f9b0d27d2c81b63f175832988a99bbcea87a194d62084959dad64736f6c634300080c0033
Deployed Bytecode Sourcemap
5141:12626:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:69;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5975:69:0;;;;;;;;8614:94;;;;;;;;;;-1:-1:-1;8695:5:0;;;;;;;;;;;;-1:-1:-1;;;8695:5:0;;;;8614:94;;;;;;;:::i;9139:191::-;;;;;;;;;;-1:-1:-1;9139:191:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;9139:191:0;1254:187:1;6954:31:0;;;;;;;;;;-1:-1:-1;6954:31:0;;;;-1:-1:-1;;;6954:31:0;;;;;;6803:37;;;;;;;;;;;;;;;;6759:35;;;;;;;;;;;;;;;;8296:102;;;;;;;;;;-1:-1:-1;8378:12:0;;8296:102;;6306:46;;;;;;;;;;-1:-1:-1;6306:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17018:159;;;;;;;;;;-1:-1:-1;17018:159:0;;;;;:::i;:::-;;:::i;:::-;;9883:422;;;;;;;;;;-1:-1:-1;9883:422:0;;;;;:::i;:::-;;:::i;6398:27::-;;;;;;;;;;;;;;;;2973:103;;;;;;;;;;-1:-1:-1;2973:103:0;;;;;:::i;:::-;3028:4;3063:5;-1:-1:-1;;;;;3052:16:0;;;3063:5;;3052:16;;2973:103;8406:94;;;;;;;;;;-1:-1:-1;8406:94:0;;5613:2;2786:36:1;;2774:2;2759:18;8406:94:0;2644:184:1;7060:32:0;;;;;;;;;;-1:-1:-1;7060:32:0;;;;;;;;16356:158;;;;;;;;;;;;;:::i;16059:113::-;;;;;;;;;;-1:-1:-1;16059:113:0;;;;;:::i;:::-;;:::i;6695:57::-;;;;;;;;;;;;;;;;6432:26;;;;;;;;;;;;;;;;12650:95;;;;;;;;;;-1:-1:-1;12650:95:0;;;;;:::i;:::-;;:::i;6923:22::-;;;;;;;;;;-1:-1:-1;6923:22:0;;;;-1:-1:-1;;;;;6923:22:0;;;;;;-1:-1:-1;;;;;3182:32:1;;;3164:51;;3152:2;3137:18;6923:22:0;3018:203:1;16731:120:0;;;;;;;;;;-1:-1:-1;16731:120:0;;;;;:::i;:::-;;:::i;7174:30::-;;;;;;;;;;-1:-1:-1;7174:30:0;;;;;;;;;;;17185:450;;;;;;;;;;-1:-1:-1;17185:450:0;;;;;:::i;:::-;;:::i;8816:119::-;;;;;;;;;;-1:-1:-1;8816:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8909:18:0;8882:7;8909:18;;;:9;:18;;;;;;;8816:119;16522:201;;;;;;;;;;-1:-1:-1;16522:201:0;;;;;:::i;:::-;;:::i;5897:71::-;;;;;;;;;;;;;;;;5826:64;;;;;;;;;;;;;;;;15414:223;;;;;;;;;;-1:-1:-1;15414:223:0;;;;;:::i;:::-;;:::i;8716:92::-;;;;;;;;;;-1:-1:-1;8768:7:0;8795:5;-1:-1:-1;;;;;8795:5:0;8716:92;;6847:31;;;;;;;;;;;;;;;;5216:93;;;;;;;;;;-1:-1:-1;5216:93:0;;;;-1:-1:-1;;;;;5216:93:0;;;7099:30;;;;;;;;;;-1:-1:-1;7099:30:0;;;;;;;;;;;8508:98;;;;;;;;;;-1:-1:-1;8591:7:0;;;;;;;;;;;;-1:-1:-1;;;8591:7:0;;;;8508:98;;15905:146;;;;;;;;;;-1:-1:-1;15905:146:0;;;;;:::i;:::-;;:::i;6889:27::-;;;;;;;;;;-1:-1:-1;6889:27:0;;;;-1:-1:-1;;;;;6889:27:0;;;6615:33;;;;;;;;;;;;;;;;9687:188;;;;;;;;;;-1:-1:-1;9687:188:0;;;;;:::i;:::-;;:::i;2766:94::-;;;;;;;;;;-1:-1:-1;2766:94:0;;;;;:::i;:::-;;:::i;15645:252::-;;;;;;;;;;-1:-1:-1;15645:252:0;;;;;:::i;:::-;;:::i;16180:168::-;;;;;;;;;;-1:-1:-1;16180:168:0;;;;;:::i;:::-;;:::i;7136:31::-;;;;;;;;;;-1:-1:-1;7136:31:0;;;;;;;;;;;5414:83;;;;;;;;;;-1:-1:-1;5414:83:0;;;;-1:-1:-1;;;;;5414:83:0;;;8943:188;;;;;;;;;;-1:-1:-1;8943:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;9095:19:0;;;9063:7;9095:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8943:188;17643:121;;;;;;;;;;-1:-1:-1;17643:121:0;;;;;:::i;:::-;;:::i;5316:89::-;;;;;;;;;;-1:-1:-1;5316:89:0;;;;-1:-1:-1;;;;;5316:89:0;;;6655:33;;;;;;;;;;;;;;;;2868:97;;;;;;;;;;-1:-1:-1;2868:97:0;;;;;:::i;:::-;;:::i;3199:173::-;;;;;;;;;;-1:-1:-1;3199:173:0;;;;;:::i;:::-;;:::i;16859:151::-;;;;;;;;;;-1:-1:-1;16859:151:0;;;;;:::i;:::-;;:::i;3084:107::-;;;;;;;;;;-1:-1:-1;3084:107:0;;;;;:::i;:::-;;:::i;9139:191::-;9241:4;9263:37;9272:10;9284:7;9293:6;9263:8;:37::i;:::-;-1:-1:-1;9318:4:0;9139:191;;;;;:::o;17018:159::-;2698:24;2711:10;2698:12;:24::i;:::-;2690:48;;;;-1:-1:-1;;;2690:48:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;17133:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;17133:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17018:159::o;9883:422::-;-1:-1:-1;;;;;10038:19:0;;10017:4;10038:19;;;:11;:19;;;;;;;;10058:10;10038:31;;;;;;;;-1:-1:-1;;10038:52:0;10034:206;;10141:87;;;;;;;;;;;-1:-1:-1;;;10141:87:0;;;;;;;;-1:-1:-1;;;;;10141:19:0;;-1:-1:-1;10141:19:0;;;:11;:19;;;;;10161:10;10141:31;;;;;;;;;;:87;;10195:6;;10141:53;:87::i;:::-;-1:-1:-1;;;;;10107:19:0;;;;;;:11;:19;;;;;;;;10127:10;10107:31;;;;;;;:121;10034:206;10257:40;10271:6;10279:9;10290:6;10257:13;:40::i;:::-;10250:47;;9883:422;;;;;;:::o;16356:158::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;16467:39:::1;::::0;16435:21:::1;::::0;16475:10:::1;::::0;16467:39;::::1;;;::::0;16435:21;;16415:17:::1;16467:39:::0;16415:17;16467:39;16435:21;16475:10;16467:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16404:110;16356:158::o:0;16059:113::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16135:21:0;;;::::1;;::::0;;;:14:::1;:21;::::0;;;;:29;;-1:-1:-1;;16135:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16059:113::o;12650:95::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;12715:11:::1;:22:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;12715:22:0;;::::1;::::0;;;::::1;::::0;;12650:95::o;16731:120::-;2698:24;2711:10;2698:12;:24::i;:::-;2690:48;;;;-1:-1:-1;;;2690:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16815:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16815:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16731:120::o;17185:450::-;2698:24;2711:10;2698:12;:24::i;:::-;2690:48;;;;-1:-1:-1;;;2690:48:0;;;;;;;:::i;:::-;17361:7:::1;:18:::0;;;17390:6:::1;:16:::0;;;17417:14:::1;:32:::0;;;17460:14:::1;:32:::0;;;17514:34:::1;17477:15:::0;17434;17514:18:::1;:34::i;:::-;17503:8;:45:::0;17567:7:::1;::::0;17577:2:::1;-1:-1:-1::0;17567:27:0;::::1;;;;17592:2;17583:6;;:11;17567:27;17559:68;;;::::0;-1:-1:-1;;;17559:68:0;;5809:2:1;17559:68:0::1;::::0;::::1;5791:21:1::0;5848:2;5828:18;;;5821:30;5887;5867:18;;;5860:58;5935:18;;17559:68:0::1;5607:352:1::0;17559:68:0::1;17185:450:::0;;;;:::o;16522:201::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;16603:11:::1;::::0;-1:-1:-1;;;16603:11:0;::::1;;;16602:12;16594:41;;;::::0;-1:-1:-1;;;16594:41:0;;6166:2:1;16594:41:0::1;::::0;::::1;6148:21:1::0;6205:2;6185:18;;;6178:30;-1:-1:-1;;;6224:18:1;;;6217:46;6280:18;;16594:41:0::1;5964:340:1::0;16594:41:0::1;16659:27;16674:12:::0;16659::::1;:27;:::i;:::-;16646:10;:40:::0;-1:-1:-1;16697:11:0::1;:18:::0;;-1:-1:-1;;;;16697:18:0::1;-1:-1:-1::0;;;16697:18:0::1;::::0;;16522:201::o;15414:223::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;15548:17:::1;:41:::0;;;;15600:11:::1;:29:::0;15414:223::o;15905:146::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;16001:42:::1;16038:4;16001:32;16018:14;16001:12;;:16;;:32;;;;:::i;:::-;:36:::0;::::1;:42::i;:::-;15985:13;:58:::0;-1:-1:-1;15905:146:0:o;9687:188::-;9794:4;9823:44;9837:10;9849:9;9860:6;9823:13;:44::i;2766:94::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2826:19:0::1;;::::0;;;2848:4:::1;2826:19;::::0;;;;;;;:26;;-1:-1:-1;;2826:26:0::1;::::0;;::::1;::::0;;2766:94::o;15645:252::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;15781:42:::1;15818:4;15781:32;15798:14;15781:12;;:16;;:32;;;;:::i;:42::-;15763:15;:60:::0;15849:12:::1;::::0;:40:::1;::::0;15884:4:::1;::::0;15849:30:::1;::::0;15866:12;15849:16:::1;:30::i;:40::-;15834:12;:55:::0;-1:-1:-1;;15645:252:0:o;16180:168::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;16285:6:::1;16260:21;:31;;16252:61;;;::::0;-1:-1:-1;;;16252:61:0;;6776:2:1;16252:61:0::1;::::0;::::1;6758:21:1::0;6815:2;6795:18;;;6788:30;-1:-1:-1;;;6834:18:1;;;6827:47;6891:18;;16252:61:0::1;6574:341:1::0;16252:61:0::1;16324:16;16333:6;16324:8;:16::i;:::-;16180:168:::0;:::o;17643:121::-;2698:24;2711:10;2698:12;:24::i;:::-;2690:48;;;;-1:-1:-1;;;2690:48:0;;;;;;;:::i;:::-;17724:13:::1;:32:::0;;-1:-1:-1;;17724:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17643:121::o;2868:97::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2930:19:0::1;2952:5;2930:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2930:27:0::1;::::0;;2868:97::o;3199:173::-;3028:4;3063:5;-1:-1:-1;;;;;3063:5:0;2607:10;3052:16;2591:38;;;;-1:-1:-1;;;2591:38:0;;;;;;;:::i;:::-;3275:5:::1;:11:::0;;-1:-1:-1;;;;;;3275:11:0::1;-1:-1:-1::0;;;;;3275:11:0;::::1;::::0;;::::1;::::0;;3297:19;;;-1:-1:-1;3297:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3297:26:0::1;::::0;;::::1;::::0;;;3339:25;;3164:51:1;;;3339:25:0::1;::::0;3137:18:1;3339:25:0::1;;;;;;;3199:173:::0;:::o;16859:151::-;2698:24;2711:10;2698:12;:24::i;:::-;2690:48;;;;-1:-1:-1;;;2690:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16970:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16970:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16859:151::o;3084:107::-;-1:-1:-1;;;;;3164:19:0;3140:4;3164:19;;;:14;:19;;;;;;;;;3084:107::o;659:250::-;717:7;741:6;737:47;;-1:-1:-1;771:1:0;764:8;;737:47;796:9;808:5;812:1;808;:5;:::i;:::-;796:17;-1:-1:-1;841:1:0;832:5;836:1;796:17;832:5;:::i;:::-;:10;824:56;;;;-1:-1:-1;;;824:56:0;;7733:2:1;824:56:0;;;7715:21:1;7772:2;7752:18;;;7745:30;7811:34;7791:18;;;7784:62;-1:-1:-1;;;7862:18:1;;;7855:31;7903:19;;824:56:0;7531:397:1;917:132:0;975:7;1002:39;1006:1;1009;1002:39;;;;;;;;;;;;;;;;;:3;:39::i;9338:341::-;-1:-1:-1;;;;;9466:20:0;;9458:52;;;;-1:-1:-1;;;9458:52:0;;8135:2:1;9458:52:0;;;8117:21:1;8174:2;8154:18;;;8147:30;-1:-1:-1;;;8193:18:1;;;8186:49;8252:18;;9458:52:0;7933:343:1;9458:52:0;-1:-1:-1;;;;;9529:21:0;;9521:53;;;;-1:-1:-1;;;9521:53:0;;8135:2:1;9521:53:0;;;8117:21:1;8174:2;8154:18;;;8147:30;-1:-1:-1;;;8193:18:1;;;8186:49;8252:18;;9521:53:0;7933:343:1;9521:53:0;-1:-1:-1;;;;;9585:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;9638:33;;160:25:1;;;9638:33:0;;133:18:1;9638:33:0;;;;;;;9338:341;;;:::o;425:226::-;545:7;581:12;573:6;;;;565:29;;;;-1:-1:-1;;;565:29:0;;;;;;;;:::i;:::-;-1:-1:-1;605:9:0;617:5;621:1;617;:5;:::i;:::-;605:17;425:226;-1:-1:-1;;;;;425:226:0:o;10313:1338::-;-1:-1:-1;;;;;10470:20:0;;10430:4;10470:20;;;:14;:20;;;;;;;;10469:21;:44;;;;-1:-1:-1;;;;;;10495:18:0;;;;;;:14;:18;;;;;;;;10494:19;10469:44;10447:113;;;;-1:-1:-1;;;10447:113:0;;8613:2:1;10447:113:0;;;8595:21:1;8652:2;8632:18;;;8625:30;-1:-1:-1;;;8671:18:1;;;8664:49;8730:18;;10447:113:0;8411:343:1;10447:113:0;10575:6;;;;;;;10571:78;;;10605:32;10620:4;10626:2;10630:6;10605:14;:32::i;:::-;10598:39;;;;10571:78;-1:-1:-1;;;;;10668:20:0;;;;;;:14;:20;;;;;;;;10667:21;:44;;;;-1:-1:-1;;;;;;10693:18:0;;;;;;:14;:18;;;;;;;;10692:19;10667:44;10663:538;;;10735:11;;-1:-1:-1;;;10735:11:0;;;;10727:44;;;;-1:-1:-1;;;10727:44:0;;8961:2:1;10727:44:0;;;8943:21:1;9000:2;8980:18;;;8973:30;-1:-1:-1;;;9019:18:1;;;9012:50;9079:18;;10727:44:0;8759:344:1;10727:44:0;10790:13;;;;10786:404;;;-1:-1:-1;;;;;10829:20:0;;;;;;:14;:20;;;;;;;;10828:21;:49;;;;-1:-1:-1;;;;;;10854:23:0;;;;;;:19;:23;;;;;;;;10853:24;10828:49;10824:305;;;-1:-1:-1;;;;;8909:18:0;;10902;8909;;;:9;:18;;;;;;11018:15;;10994:19;11007:6;8909:18;10994:19;:::i;:::-;10993:40;;10959:150;;;;-1:-1:-1;;;10959:150:0;;9310:2:1;10959:150:0;;;9292:21:1;9349:2;9329:18;;;9322:30;9388:26;9368:18;;;9361:54;9432:18;;10959:150:0;9108:348:1;10959:150:0;10879:250;10824:305;11147:27;11161:4;11167:6;11147:13;:27::i;:::-;11217:20;11232:4;11217:14;:20::i;:::-;11213:76;;;11254:23;11263:13;;11254:8;:23::i;:::-;11319:51;;;;;;;;;;;-1:-1:-1;;;11319:51:0;;;;;;;;-1:-1:-1;;;;;11319:15:0;;-1:-1:-1;11319:15:0;;;:9;:15;;;;;;;;:51;;11339:6;;11319:19;:51::i;:::-;-1:-1:-1;;;;;11301:15:0;;;;;;:9;:15;;;;;;;;:69;;;;12840:11;:19;;;;;;;;12839:20;11407;:42;;;-1:-1:-1;;;;;;12840:19:0;;12815:4;12840:19;;;:11;:19;;;;;;;;12839:20;11431:18;11407:42;11406:103;;11488:21;11496:4;11502:6;11488:7;:21::i;:::-;11406:103;;;11466:6;11406:103;-1:-1:-1;;;;;11538:13:0;;;;;;:9;:13;;;;;;11381:128;;-1:-1:-1;11538:33:0;;11381:128;11538:17;:33::i;:::-;-1:-1:-1;;;;;11522:13:0;;;;;;;:9;:13;;;;;;;:49;;;;11587:34;;;;;;;;;;11606:14;160:25:1;;148:2;133:18;;14:177;11587:34:0;;;;;;;;-1:-1:-1;11639:4:0;;10313:1338;-1:-1:-1;;;;10313:1338:0:o;92:181::-;150:7;;182:5;186:1;182;:5;:::i;:::-;170:17;;211:1;206;:6;;198:46;;;;-1:-1:-1;;;198:46:0;;9663:2:1;198:46:0;;;9645:21:1;9702:2;9682:18;;;9675:30;9741:29;9721:18;;;9714:57;9788:18;;198:46:0;9461:351:1;13550:1852:0;7264:6;:13;;-1:-1:-1;;7264:13:0;;;;;13708:8:::1;::::0;13674:14:::1;::::0;7264:13;;13644:94:::1;::::0;13736:1:::1;::::0;13644:73:::1;::::0;;;:11;;:29:::1;:45::i;:94::-;13618:120:::0;-1:-1:-1;13749:20:0::1;13772:32;:11:::0;13618:120;13772:15:::1;:32::i;:::-;13839:16;::::0;;13853:1:::1;13839:16:::0;;;;;::::1;::::0;;13749:55;;-1:-1:-1;13815:21:0::1;::::0;13839:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13839:16:0::1;13815:40;;13884:4;13866;13871:1;13866:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13866:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13910:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;13910:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;13866:7;;13910:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13900:4;13905:1;13900:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13900:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;13993:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;13993:191:0;;13961:21:::1;::::0;13993:9;;;::::1;::::0;:60:::1;::::0;:191:::1;::::0;14068:12;;13937:21:::1;::::0;14111:4;;14138::::1;::::0;14158:15:::1;::::0;13993:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14195:17;14215:40;14241:13;14215:21;:25;;:40;;;;:::i;:::-;14195:60;;14266:19;14288:35;14301:21;14320:1;14301:14;;:18;;:21;;;;:::i;:::-;14288:8;::::0;;:12:::1;:35::i;:::-;14266:57;;14334:26;14363:95;14456:1;14363:74;14425:11;14363:43;14391:14;;14363:9;:27;;:43;;;;:::i;:95::-;14334:124;;14469:26;14498:70;14546:11;14498:29;14512:14;;14498:9;:13;;:29;;;;:::i;:70::-;14469:99;;14581:27;14652:3;14632:17;;14611:18;:38;;;;:::i;:::-;:44;;;;:::i;:::-;14581:74;;14666:21;14725:3;14711:11;;14690:18;:32;;;;:::i;:::-;:38;;;;:::i;:::-;14773:20;::::0;14765:115:::1;::::0;14666:62;;-1:-1:-1;14744:15:0::1;::::0;-1:-1:-1;;;;;14773:20:0;;::::1;::::0;14860:5:::1;::::0;14821:19;;14744:15;14765:115;14744:15;14765:115;14821:19;14773:20;14860:5;14765:115:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14926:14:0::1;::::0;14918:103:::1;::::0;14743:137;;-1:-1:-1;14894:18:0::1;::::0;-1:-1:-1;;;;;14926:14:0;;::::1;::::0;15001:5:::1;::::0;14968:13;;14894:18;14918:103;14894:18;14918:103;14968:13;14926:14;15001:5;14918:103:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15045:5:0::1;::::0;-1:-1:-1;15045:5:0;;-1:-1:-1;;15097:19:0;;;-1:-1:-1;15093:302:0::1;;15133:9;::::0;15310:24:::1;::::0;15133:250:::1;::::0;-1:-1:-1;;;15133:250:0;;15212:4:::1;15133:250;::::0;::::1;11873:34:1::0;11923:18;;;11916:34;;;15133:9:0::1;11966:18:1::0;;;11959:34;;;12009:18;;;12002:34;-1:-1:-1;;;;;15310:24:0;;::::1;12052:19:1::0;;;12045:44;15353:15:0::1;12105:19:1::0;;;12098:35;15133:9:0;::::1;::::0;:25:::1;::::0;15166:18;;11807:19:1;;15133:250:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15093:302;-1:-1:-1::0;;7300:6:0;:14;;-1:-1:-1;;7300:14:0;;;-1:-1:-1;;;;;;;;;;;13550:1852:0:o;1057:223::-;1177:7;1212:12;1205:5;1197:28;;;;-1:-1:-1;;;1197:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1236:9:0;1248:5;1252:1;1248;:5;:::i;11659:401::-;11823:90;;;;;;;;;;;-1:-1:-1;;;11823:90:0;;;;;;;;-1:-1:-1;;;;;11823:17:0;;11786:4;11823:17;;;:9;:17;;;;;;;:90;;11859:6;;11823:21;:90::i;:::-;-1:-1:-1;;;;;11803:17:0;;;;;;;:9;:17;;;;;;:110;;;;11947:20;;;;;;;:32;;11972:6;11947:24;:32::i;:::-;-1:-1:-1;;;;;11924:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11995:35;;;;;;;;;;12023:6;160:25:1;;148:2;133:18;;14:177;11995:35:0;;;;;;;;-1:-1:-1;12048:4:0;11659:401;;;;;:::o;12068:204::-;12180:12;;12170:6;:22;;:49;;;-1:-1:-1;;;;;;12196:23:0;;;;;;:15;:23;;;;;;;;12170:49;12148:116;;;;-1:-1:-1;;;12148:116:0;;12657:2:1;12148:116:0;;;12639:21:1;12696:2;12676:18;;;12669:30;-1:-1:-1;;;12715:18:1;;;12708:47;12772:18;;12148:116:0;12455:341:1;12280:362:0;12377:6;;12341:4;;12377:6;;;;;12376:7;:35;;;;-1:-1:-1;12400:11:0;;;;;;;12376:35;:74;;;;-1:-1:-1;;;;;;12429:21:0;;;;;;:15;:21;;;;;;;;12428:22;12376:74;:106;;;;-1:-1:-1;12475:7:0;;-1:-1:-1;;;;;12467:15:0;;;12475:7;;12467:15;;12376:106;:164;;;;-1:-1:-1;12527:13:0;;12517:4;12499:24;;;;:9;:24;;;;;;:41;;12376:164;12358:277;;;-1:-1:-1;12574:4:0;;12280:362;-1:-1:-1;12280:362:0:o;12358:277::-;-1:-1:-1;12618:5:0;;12280:362;-1:-1:-1;12280:362:0:o;12358:277::-;12280:362;;;:::o;12875:667::-;13022:7;;12960;;;;-1:-1:-1;;;;;13012:17:0;;;13022:7;;13012:17;13008:266;;-1:-1:-1;13053:7:0;;13008:266;;;13092:7;;-1:-1:-1;;;;;13082:17:0;;;13092:7;;13082:17;13078:196;;;-1:-1:-1;13123:6:0;;13162:10;;13147:12;:25;13144:73;;;-1:-1:-1;13199:2:0;13144:73;13078:196;;;13256:6;13249:13;;;;;13078:196;13330:14;;13284:22;;13309:36;;:16;:6;13320:4;13309:10;:16::i;:36::-;13401:4;13383:24;;;;:9;:24;;;;;;13284:61;;-1:-1:-1;13383:44:0;;13284:61;13383:28;:44::i;:::-;13374:4;13356:24;;;;:9;:24;;;;;;;:71;;;;13443:47;;-1:-1:-1;;;;;13443:47:0;;;;;;;13475:14;160:25:1;;148:2;133:18;;14:177;13443:47:0;;;;;;;;13508:26;:6;13519:14;281:136;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;196:597: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;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:247::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;1698:160::-;1763:20;;1819:13;;1812:21;1802:32;;1792:60;;1848:1;1845;1838:12;1863:315;1928:6;1936;1989:2;1977:9;1968:7;1964:23;1960:32;1957:52;;;2005:1;2002;1995:12;1957:52;2044:9;2031:23;2063:31;2088:5;2063:31;:::i;:::-;2113:5;-1:-1:-1;2137:35:1;2168:2;2153:18;;2137:35;:::i;:::-;2127:45;;1863:315;;;;;:::o;2183:456::-;2260:6;2268;2276;2329:2;2317:9;2308:7;2304:23;2300:32;2297:52;;;2345:1;2342;2335:12;2297:52;2384:9;2371:23;2403:31;2428:5;2403:31;:::i;:::-;2453:5;-1:-1:-1;2510:2:1;2495:18;;2482:32;2523:33;2482:32;2523:33;:::i;:::-;2183:456;;2575:7;;-1:-1:-1;;;2629:2:1;2614:18;;;;2601:32;;2183:456::o;2833:180::-;2889:6;2942:2;2930:9;2921:7;2917:23;2913:32;2910:52;;;2958:1;2955;2948:12;2910:52;2981:26;2997:9;2981:26;:::i;3226:385::-;3312:6;3320;3328;3336;3389:3;3377:9;3368:7;3364:23;3360:33;3357:53;;;3406:1;3403;3396:12;3357:53;-1:-1:-1;;3429:23:1;;;3499:2;3484:18;;3471:32;;-1:-1:-1;3550:2:1;3535:18;;3522:32;;3601:2;3586:18;3573:32;;-1:-1:-1;3226:385:1;-1:-1:-1;3226:385:1:o;3616:180::-;3675:6;3728:2;3716:9;3707:7;3703:23;3699:32;3696:52;;;3744:1;3741;3734:12;3696:52;-1:-1:-1;3767:23:1;;3616:180;-1:-1:-1;3616:180:1:o;3801:248::-;3869:6;3877;3930:2;3918:9;3909:7;3905:23;3901:32;3898:52;;;3946:1;3943;3936:12;3898:52;-1:-1:-1;;3969:23:1;;;4039:2;4024:18;;;4011:32;;-1:-1:-1;3801:248:1:o;4280:388::-;4348:6;4356;4409:2;4397:9;4388:7;4384:23;4380:32;4377:52;;;4425:1;4422;4415:12;4377:52;4464:9;4451:23;4483:31;4508:5;4483:31;:::i;:::-;4533:5;-1:-1:-1;4590:2:1;4575:18;;4562:32;4603:33;4562:32;4603:33;:::i;:::-;4655:7;4645:17;;;4280:388;;;;;:::o;4933:335::-;5135:2;5117:21;;;5174:2;5154:18;;;5147:30;-1:-1:-1;;;5208:2:1;5193:18;;5186:41;5259:2;5244:18;;4933:335::o;5273:329::-;5475:2;5457:21;;;5514:1;5494:18;;;5487:29;-1:-1:-1;;;5547:2:1;5532:18;;5525:36;5593:2;5578:18;;5273:329::o;6309:127::-;6370:10;6365:3;6361:20;6358:1;6351:31;6401:4;6398:1;6391:15;6425:4;6422:1;6415:15;6441:128;6481:3;6512:1;6508:6;6505:1;6502:13;6499:39;;;6518:18;;:::i;:::-;-1:-1:-1;6554:9:1;;6441:128::o;7136:168::-;7176:7;7242:1;7238;7234:6;7230:14;7227:1;7224:21;7219:1;7212:9;7205:17;7201:45;7198:71;;;7249:18;;:::i;:::-;-1:-1:-1;7289:9:1;;7136:168::o;7309:217::-;7349:1;7375;7365:132;;7419:10;7414:3;7410:20;7407:1;7400:31;7454:4;7451:1;7444:15;7482:4;7479:1;7472:15;7365:132;-1:-1:-1;7511:9:1;;7309:217::o;8281:125::-;8321:4;8349:1;8346;8343:8;8340:34;;;8354:18;;:::i;:::-;-1:-1:-1;8391:9:1;;8281:125::o;9949:127::-;10010:10;10005:3;10001:20;9998:1;9991:31;10041:4;10038:1;10031:15;10065:4;10062:1;10055:15;10081:251;10151:6;10204:2;10192:9;10183:7;10179:23;10175:32;10172:52;;;10220:1;10217;10210:12;10172:52;10252:9;10246:16;10271:31;10296:5;10271:31;:::i;10337:980::-;10599:4;10647:3;10636:9;10632:19;10678:6;10667:9;10660:25;10704:2;10742:6;10737:2;10726:9;10722:18;10715:34;10785:3;10780:2;10769:9;10765:18;10758:31;10809:6;10844;10838:13;10875:6;10867;10860:22;10913:3;10902:9;10898:19;10891:26;;10952:2;10944:6;10940:15;10926:29;;10973:1;10983:195;10997:6;10994:1;10991:13;10983:195;;;11062:13;;-1:-1:-1;;;;;11058:39:1;11046:52;;11153:15;;;;11118:12;;;;11094:1;11012:9;10983:195;;;-1:-1:-1;;;;;;;11234:32:1;;;;11229:2;11214:18;;11207:60;-1:-1:-1;;;11298:3:1;11283:19;11276:35;11195:3;10337:980;-1:-1:-1;;;10337:980:1:o;12144:306::-;12232:6;12240;12248;12301:2;12289:9;12280:7;12276:23;12272:32;12269:52;;;12317:1;12314;12307:12;12269:52;12346:9;12340:16;12330:26;;12396:2;12385:9;12381:18;12375:25;12365:35;;12440:2;12429:9;12425:18;12419:25;12409:35;;12144:306;;;;;:::o
Swarm Source
ipfs://a2df28fbcdef0f9b0d27d2c81b63f175832988a99bbcea87a194d62084959dad
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.