Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000,000 PIGeon
Holders
71
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 4 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PIGeon
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-02 */ // // https://t.me/PIGeonETH // //▒█▀▀█ ▀█▀ ▒█▀▀█ █▀▀ █▀▀█ █▀▀▄ //▒█▄▄█ ▒█░ ▒█░▄▄ █▀▀ █░░█ █░░█ //▒█░░░ ▄█▄ ▒█▄▄█ ▀▀▀ ▀▀▀▀ ▀░░▀ // // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.12; 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 ERC20 { 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 { require(adr != owner, "OWNER cant be unauthorized"); 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 { require(adr != owner, "Already the owner"); authorizations[owner] = false; owner = adr; authorizations[adr] = true; 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 addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract PIGeon is ERC20, Auth { using SafeMath for uint256; address WETH; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "PIGeon"; string constant _symbol = "PIGeon"; uint8 constant _decimals = 4; uint256 _totalSupply = 1 * 10**15 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply / 100; uint256 public _maxWalletToken = (_totalSupply * 2) / 100; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isWalletLimitExempt; uint256 public liquidityFee = 10; uint256 public marketingFee = 55; uint256 public devFee = 15; uint256 public teamFee = 20; uint256 public totalFee = marketingFee + liquidityFee + devFee + teamFee; uint256 public constant feeDenominator = 1000; uint256 sellMultiplier = 100; uint256 buyMultiplier = 100; uint256 transferMultiplier = 100; address public autoLiquidityReceiver; address public marketingFeeReceiver; address public devFeeReceiver; address public teamFeeReceiver; IDEXRouter public router; address public pair; bool public tradingOpen = false; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 1000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; autoLiquidityReceiver = msg.sender; marketingFeeReceiver = 0x99495A7a83e4B7094186AfC48F33c2c51c8c860C; teamFeeReceiver = 0xe20387c9Cea4457f79995529348E4384541d79a7; devFeeReceiver = msg.sender; isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[DEAD] = true; isTxLimitExempt[ZERO] = true; isWalletLimitExempt[msg.sender] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[DEAD] = true; _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) { _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); } // PIGeon pump function 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 setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner { _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000; } function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner { _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen,"Trading not open yet"); } if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) { require((balanceOf(recipient) + amount) <= _maxWalletToken,"max wallet limit reached"); } require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded"); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient); _balances[recipient] = _balances[recipient].add(amountReceived); 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 takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { if(totalFee == 0 ){ return amount; } uint256 multiplier = transferMultiplier; if(recipient == pair) { multiplier = sellMultiplier; } else if(sender == pair) { multiplier = buyMultiplier; } uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function clearStuckBalance(uint256 amountPercentage) external onlyOwner { uint256 amountETH = address(this).balance; payable(msg.sender).transfer(amountETH * amountPercentage / 100); } function clearContractSells(uint256 amountPercentage) external onlyOwner { uint256 tokensInContract = balanceOf(address(this)); uint256 tokenstosell = tokensInContract.mul(amountPercentage).div(100); _basicTransfer(address(this),msg.sender,tokenstosell); } function openTrading() external onlyOwner { tradingOpen = true; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance; uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee); uint256 amountETHTeam = amountETH.mul(teamFee).div(totalETHFee); payable(marketingFeeReceiver).transfer(amountETHMarketing); payable(devFeeReceiver).transfer(amountETHDev); payable(teamFeeReceiver).transfer(amountETHTeam); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function manage_FeeExempt(address[] calldata addresses, bool status) external authorized { require(addresses.length < 501,"GAS Error: max limit is 500 addresses"); for (uint256 i; i < addresses.length; ++i) { isFeeExempt[addresses[i]] = status; } } function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized { require(addresses.length < 501,"GAS Error: max limit is 500 addresses"); for (uint256 i; i < addresses.length; ++i) { isTxLimitExempt[addresses[i]] = status; } } function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized { require(addresses.length < 501,"GAS Error: max limit is 500 addresses"); for (uint256 i; i < addresses.length; ++i) { isWalletLimitExempt[addresses[i]] = status; } } function setFees_base1000(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee, uint256 _teamfee) external onlyOwner { liquidityFee = _liquidityFee; marketingFee = _marketingFee; devFee = _devFee; teamFee = _teamfee; totalFee = _liquidityFee + _marketingFee + _devFee + _teamfee; } function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized { sellMultiplier = _sell; buyMultiplier = _buy; transferMultiplier = _trans; } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _teamfeeReceiver) external onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; devFeeReceiver = _devFeeReceiver; teamFeeReceiver = _teamfeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { require(addresses.length == tokens.length,"Mismatch between Address and token count"); uint256 SCCC = 0; for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + tokens[i]; } require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i]); } } event AutoLiquify(uint256 amountETH, uint256 amountTokens); }
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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":"_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":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearContractSells","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_teamfeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_teamfee","type":"uint256"}],"name":"setFees_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","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
6080604052600380546001600160a01b031990811661dead179091556004805490911681556200003190600a62000529565b620000449066038d7ea4c6800062000541565b600555606460055462000058919062000563565b600655606460055460026200006e919062000541565b6200007a919062000563565b600755600a600d556037600e55600f80556014601055601054600f54600d54600e54620000a8919062000586565b620000b4919062000586565b620000c0919062000586565b601155606460128190556013819055601455601a805461ffff60a01b1916600160a81b179055600554620000f8906103e89062000563565b601b553480156200010857600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560198054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa1580156200018f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b59190620005a1565b600280546001600160a01b0319166001600160a01b039283161790556019546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023a9190620005a1565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200028c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b29190620005a1565b601a80546001600160a01b039283166001600160a01b0319918216179091553060008181526009602090815260408083206019548716845282528083206000199055601580548616339081179091556016805487167399495a7a83e4b7094186afc48f33c2c51c8c860c17905560188054871673e20387c9cea4457f79995529348e4384541d79a7179055601780549096168117909555848352600a8252808320805460ff199081166001908117909255600b8452828520805482168317905560038054891686528386208054831684179055600454891686528386208054831684179055878652600c85528386208054831684179055958552828520805482168317905594549096168352808320805490941690951790925560055483825260088352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005cc565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200046b5781600019048211156200044f576200044f62000414565b808516156200045d57918102915b93841c93908002906200042f565b509250929050565b600082620004845750600162000523565b81620004935750600062000523565b8160018114620004ac5760028114620004b757620004d7565b600191505062000523565b60ff841115620004cb57620004cb62000414565b50506001821b62000523565b5060208310610133831016604e8410600b8410161715620004fc575081810a62000523565b6200050883836200042a565b80600019048211156200051f576200051f62000414565b0290505b92915050565b60006200053a60ff84168362000473565b9392505050565b60008160001904831182151516156200055e576200055e62000414565b500290565b6000826200058157634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200059c576200059c62000414565b500190565b600060208284031215620005b457600080fd5b81516001600160a01b03811681146200053a57600080fd5b61237180620005dc6000396000f3fe60806040526004361061028a5760003560e01c806370a082311161015a578063ca33e64c116100c1578063efa5e3471161007a578063efa5e347146107b3578063f0b37c04146107d3578063f2fde38b146107f3578063f887ea4014610813578063fe9fbb8014610833578063ffb54a991461085357600080fd5b8063ca33e64c146106d7578063d7c94efd146106f7578063dab84ee71461070d578063dd62ed3e1461072d578063df20fd4914610773578063e96fada21461079357600080fd5b806398118cb41161011357806398118cb41461062c578063a8aa1b3114610642578063a9059cbb14610662578063b6a5d7de14610682578063bd9ab537146106a2578063c9567bf9146106c257600080fd5b806370a082311461058c57806378109e54146105c25780637b13f8c8146105d85780637d1db4a5146105f8578063893d20e81461060e57806395d89b411461030157600080fd5b806323b872dd116101fe5780634be9d869116101b75780634be9d869146104df578063571ac8b0146104ff5780636827e7641461051f5780636b67c4df146105355780636ce46bc31461054b5780636ddd17131461056b57600080fd5b806323b872dd146104075780632b112e49146104275780632f54bf6e1461043c578063313ce5671461046b5780633c8e556d1461048757806340291143146104a757600080fd5b8063095ea7b311610250578063095ea7b314610356578063180b0d7e1461038657806318160ddd1461039c5780631ca0a28d146103b15780631da1db5e146103d15780631df4ccfc146103f157600080fd5b806210868314610296578062bff446146102b85780630445b667146102d857806306fdde031461030157806309302dc61461033657600080fd5b3661029157005b600080fd5b3480156102a257600080fd5b506102b66102b1366004611e65565b610874565b005b3480156102c457600080fd5b506102b66102d3366004611e65565b610938565b3480156102e457600080fd5b506102ee601b5481565b6040519081526020015b60405180910390f35b34801561030d57600080fd5b5060408051808201825260068152652824a3b2b7b760d11b602082015290516102f89190611eb9565b34801561034257600080fd5b506102b6610351366004611f0e565b6109ed565b34801561036257600080fd5b50610376610371366004611f3f565b610a38565b60405190151581526020016102f8565b34801561039257600080fd5b506102ee6103e881565b3480156103a857600080fd5b506005546102ee565b3480156103bd57600080fd5b506102b66103cc366004611f6b565b610aa5565b3480156103dd57600080fd5b506102b66103ec366004611f0e565b610c52565b3480156103fd57600080fd5b506102ee60115481565b34801561041357600080fd5b50610376610422366004611fee565b610cc4565b34801561043357600080fd5b506102ee610d86565b34801561044857600080fd5b5061037661045736600461202f565b6000546001600160a01b0391821691161490565b34801561047757600080fd5b50604051600481526020016102f8565b34801561049357600080fd5b506102b66104a236600461204c565b610dd8565b3480156104b357600080fd5b506018546104c7906001600160a01b031681565b6040516001600160a01b0390911681526020016102f8565b3480156104eb57600080fd5b506102b66104fa366004611e65565b610e52565b34801561050b57600080fd5b5061037661051a36600461202f565b610f07565b34801561052b57600080fd5b506102ee600f5481565b34801561054157600080fd5b506102ee600e5481565b34801561055757600080fd5b506102b66105663660046120a8565b610f15565b34801561057757600080fd5b50601a5461037690600160a81b900460ff1681565b34801561059857600080fd5b506102ee6105a736600461202f565b6001600160a01b031660009081526008602052604090205490565b3480156105ce57600080fd5b506102ee60075481565b3480156105e457600080fd5b506102b66105f3366004611f0e565b610f4b565b34801561060457600080fd5b506102ee60065481565b34801561061a57600080fd5b506000546001600160a01b03166104c7565b34801561063857600080fd5b506102ee600d5481565b34801561064e57600080fd5b50601a546104c7906001600160a01b031681565b34801561066e57600080fd5b5061037661067d366004611f3f565b610fa8565b34801561068e57600080fd5b506102b661069d36600461202f565b610fb5565b3480156106ae57600080fd5b506102b66106bd366004611f0e565b611006565b3480156106ce57600080fd5b506102b6611051565b3480156106e357600080fd5b506015546104c7906001600160a01b031681565b34801561070357600080fd5b506102ee60105481565b34801561071957600080fd5b506017546104c7906001600160a01b031681565b34801561073957600080fd5b506102ee6107483660046120d4565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561077f57600080fd5b506102b661078e36600461210d565b611090565b34801561079f57600080fd5b506016546104c7906001600160a01b031681565b3480156107bf57600080fd5b506102b66107ce366004612129565b6110dc565b3480156107df57600080fd5b506102b66107ee36600461202f565b611143565b3480156107ff57600080fd5b506102b661080e36600461202f565b6111ec565b34801561081f57600080fd5b506019546104c7906001600160a01b031681565b34801561083f57600080fd5b5061037661084e36600461202f565b6112e8565b34801561085f57600080fd5b50601a5461037690600160a01b900460ff1681565b61087d336112e8565b6108a25760405162461bcd60e51b81526004016108999061215b565b60405180910390fd5b6101f582106108c35760405162461bcd60e51b815260040161089990612180565b60005b828110156109325781600c60008686858181106108e5576108e56121c5565b90506020020160208101906108fa919061202f565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561092b816121f1565b90506108c6565b50505050565b610941336112e8565b61095d5760405162461bcd60e51b81526004016108999061215b565b6101f5821061097e5760405162461bcd60e51b815260040161089990612180565b60005b828110156109325781600a60008686858181106109a0576109a06121c5565b90506020020160208101906109b5919061202f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556109e6816121f1565b9050610981565b6000546001600160a01b03163314610a175760405162461bcd60e51b81526004016108999061220c565b6103e881600554610a28919061222c565b610a32919061224b565b60075550565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a939086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610acf5760405162461bcd60e51b81526004016108999061220c565b828114610b2f5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610899565b6000805b84811015610b7357838382818110610b4d57610b4d6121c5565b9050602002013582610b5f919061226d565b915080610b6b816121f1565b915050610b33565b5080610b94876001600160a01b031660009081526008602052604090205490565b1015610be25760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610899565b60005b84811015610c4957610c3687878784818110610c0357610c036121c5565b9050602002016020810190610c18919061202f565b868685818110610c2a57610c2a6121c5565b90506020020135611306565b5080610c41816121f1565b915050610be5565b50505050505050565b6000546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016108999061220c565b47336108fc6064610c8d858561222c565b610c97919061224b565b6040518115909202916000818181858888f19350505050158015610cbf573d6000803e3d6000fd5b505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610d71576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610d4c9184906113ec565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610d7c848484611426565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610dd3906003546001600160a01b0316600090815260086020526040902054610dcd90600554906117c1565b906117c1565b905090565b6000546001600160a01b03163314610e025760405162461bcd60e51b81526004016108999061220c565b601580546001600160a01b039586166001600160a01b0319918216179091556016805494861694821694909417909355601780549285169284169290921790915560188054919093169116179055565b610e5b336112e8565b610e775760405162461bcd60e51b81526004016108999061215b565b6101f58210610e985760405162461bcd60e51b815260040161089990612180565b60005b828110156109325781600b6000868685818110610eba57610eba6121c5565b9050602002016020810190610ecf919061202f565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f00816121f1565b9050610e9b565b6000610a9f82600019610a38565b610f1e336112e8565b610f3a5760405162461bcd60e51b81526004016108999061215b565b601291909155601391909155601455565b6000546001600160a01b03163314610f755760405162461bcd60e51b81526004016108999061220c565b3060009081526008602052604081205490610f9b6064610f958486611803565b90611882565b9050610932303383611306565b6000610d7f338484611426565b6000546001600160a01b03163314610fdf5760405162461bcd60e51b81526004016108999061220c565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146110305760405162461bcd60e51b81526004016108999061220c565b6103e881600554611041919061222c565b61104b919061224b565b60065550565b6000546001600160a01b0316331461107b5760405162461bcd60e51b81526004016108999061220c565b601a805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146110ba5760405162461bcd60e51b81526004016108999061220c565b601a8054921515600160a81b0260ff60a81b1990931692909217909155601b55565b6000546001600160a01b031633146111065760405162461bcd60e51b81526004016108999061220c565b600d849055600e839055600f82905560108190558082611126858761226d565b611130919061226d565b61113a919061226d565b60115550505050565b6000546001600160a01b0316331461116d5760405162461bcd60e51b81526004016108999061220c565b6000546001600160a01b03828116911614156111cb5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610899565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146112165760405162461bcd60e51b81526004016108999061220c565b6000546001600160a01b03828116911614156112685760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610899565b600080546001600160a01b039081168252600160208181526040808520805460ff1990811690915585546001600160a01b0319169487169485178655848652948190208054909516909217909355519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546113579184906113ec565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461138690836118c4565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113da9086815260200190565b60405180910390a35060019392505050565b600081848411156114105760405162461bcd60e51b81526004016108999190611eb9565b50600061141d8486612285565b95945050505050565b601c5460009060ff16156114465761143f848484611306565b9050610d7f565b6001600160a01b03841660009081526001602052604090205460ff1615801561148857506001600160a01b03831660009081526001602052604090205460ff16155b156114dd57601a54600160a01b900460ff166114dd5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610899565b6001600160a01b03841660009081526001602052604090205460ff1615801561151f57506001600160a01b0384166000908152600c602052604090205460ff16155b801561154457506001600160a01b0383166000908152600c602052604090205460ff16155b801561155e5750601a546001600160a01b03848116911614155b156115de5760075482611586856001600160a01b031660009081526008602052604090205490565b611590919061226d565b11156115de5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610899565b6006548211158061160757506001600160a01b0384166000908152600b602052604090205460ff165b8061162a57506001600160a01b0383166000908152600b602052604090205460ff165b61166a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610899565b611672611923565b1561167f5761167f611979565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546116d19184906113ec565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff168061171e57506001600160a01b0384166000908152600a602052604090205460ff165b6117325761172d858486611cca565b611734565b825b6001600160a01b03851660009081526008602052604090205490915061175a90826118c4565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117ae9085815260200190565b60405180910390a3506001949350505050565b6000610d7f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113ec565b60008261181257506000610a9f565b600061181e838561222c565b90508261182b858361224b565b14610d7f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610899565b6000610d7f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dd6565b6000806118d1838561226d565b905083811015610d7f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610899565b601a546000906001600160a01b031633148015906119445750601c5460ff16155b80156119595750601a54600160a81b900460ff165b8015610dd3575050601b5430600090815260086020526040902054101590565b601c805460ff19166001179055600d54601154601b546000916119a591600291610f9591829087611803565b905060006119be82601b546117c190919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119f8576119f86121c5565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611a2957611a296121c5565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815291169063791ac94790611a6f90859060009086903090429060040161229c565b600060405180830381600087803b158015611a8957600080fd5b505af1158015611a9d573d6000803e3d6000fd5b5047925060009150611abe9050611ab5876002611882565b601154906117c1565b90506000611ad36002610f958481878c611803565b90506000611af083610f95600e548761180390919063ffffffff16565b90506000611b0d84610f95600f548861180390919063ffffffff16565b90506000611b2a85610f956010548961180390919063ffffffff16565b6016546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015611b65573d6000803e3d6000fd5b506017546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611ba0573d6000803e3d6000fd5b506018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611bdb573d6000803e3d6000fd5b508815611cb45760195460155460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611c52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c77919061230d565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff191690555050505050505050565b600060115460001415611cde575081610d7f565b601454601a546001600160a01b0384811691161415611d005750601254611d1b565b601a546001600160a01b0386811691161415611d1b57506013545b6000611d4c611d2d6103e8606461222c565b610f9584611d466011548a61180390919063ffffffff16565b90611803565b30600090815260086020526040902054909150611d6990826118c4565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dba9085815260200190565b60405180910390a3611dcc85826117c1565b9695505050505050565b60008183611df75760405162461bcd60e51b81526004016108999190611eb9565b50600061141d848661224b565b60008083601f840112611e1657600080fd5b50813567ffffffffffffffff811115611e2e57600080fd5b6020830191508360208260051b8501011115611e4957600080fd5b9250929050565b80358015158114611e6057600080fd5b919050565b600080600060408486031215611e7a57600080fd5b833567ffffffffffffffff811115611e9157600080fd5b611e9d86828701611e04565b9094509250611eb0905060208501611e50565b90509250925092565b600060208083528351808285015260005b81811015611ee657858101830151858201604001528201611eca565b81811115611ef8576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215611f2057600080fd5b5035919050565b6001600160a01b0381168114611f3c57600080fd5b50565b60008060408385031215611f5257600080fd5b8235611f5d81611f27565b946020939093013593505050565b600080600080600060608688031215611f8357600080fd5b8535611f8e81611f27565b9450602086013567ffffffffffffffff80821115611fab57600080fd5b611fb789838a01611e04565b90965094506040880135915080821115611fd057600080fd5b50611fdd88828901611e04565b969995985093965092949392505050565b60008060006060848603121561200357600080fd5b833561200e81611f27565b9250602084013561201e81611f27565b929592945050506040919091013590565b60006020828403121561204157600080fd5b8135610d7f81611f27565b6000806000806080858703121561206257600080fd5b843561206d81611f27565b9350602085013561207d81611f27565b9250604085013561208d81611f27565b9150606085013561209d81611f27565b939692955090935050565b6000806000606084860312156120bd57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156120e757600080fd5b82356120f281611f27565b9150602083013561210281611f27565b809150509250929050565b6000806040838503121561212057600080fd5b611f5d83611e50565b6000806000806080858703121561213f57600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612205576122056121db565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000816000190483118215151615612246576122466121db565b500290565b60008261226857634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612280576122806121db565b500190565b600082821015612297576122976121db565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122ec5784516001600160a01b0316835293830193918301916001016122c7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561232257600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212209460ee4d2d81c0c9aa9a72e1b39547007c6afb1b6c2b19c96396385096e302db64736f6c634300080c0033
Deployed Bytecode
0x60806040526004361061028a5760003560e01c806370a082311161015a578063ca33e64c116100c1578063efa5e3471161007a578063efa5e347146107b3578063f0b37c04146107d3578063f2fde38b146107f3578063f887ea4014610813578063fe9fbb8014610833578063ffb54a991461085357600080fd5b8063ca33e64c146106d7578063d7c94efd146106f7578063dab84ee71461070d578063dd62ed3e1461072d578063df20fd4914610773578063e96fada21461079357600080fd5b806398118cb41161011357806398118cb41461062c578063a8aa1b3114610642578063a9059cbb14610662578063b6a5d7de14610682578063bd9ab537146106a2578063c9567bf9146106c257600080fd5b806370a082311461058c57806378109e54146105c25780637b13f8c8146105d85780637d1db4a5146105f8578063893d20e81461060e57806395d89b411461030157600080fd5b806323b872dd116101fe5780634be9d869116101b75780634be9d869146104df578063571ac8b0146104ff5780636827e7641461051f5780636b67c4df146105355780636ce46bc31461054b5780636ddd17131461056b57600080fd5b806323b872dd146104075780632b112e49146104275780632f54bf6e1461043c578063313ce5671461046b5780633c8e556d1461048757806340291143146104a757600080fd5b8063095ea7b311610250578063095ea7b314610356578063180b0d7e1461038657806318160ddd1461039c5780631ca0a28d146103b15780631da1db5e146103d15780631df4ccfc146103f157600080fd5b806210868314610296578062bff446146102b85780630445b667146102d857806306fdde031461030157806309302dc61461033657600080fd5b3661029157005b600080fd5b3480156102a257600080fd5b506102b66102b1366004611e65565b610874565b005b3480156102c457600080fd5b506102b66102d3366004611e65565b610938565b3480156102e457600080fd5b506102ee601b5481565b6040519081526020015b60405180910390f35b34801561030d57600080fd5b5060408051808201825260068152652824a3b2b7b760d11b602082015290516102f89190611eb9565b34801561034257600080fd5b506102b6610351366004611f0e565b6109ed565b34801561036257600080fd5b50610376610371366004611f3f565b610a38565b60405190151581526020016102f8565b34801561039257600080fd5b506102ee6103e881565b3480156103a857600080fd5b506005546102ee565b3480156103bd57600080fd5b506102b66103cc366004611f6b565b610aa5565b3480156103dd57600080fd5b506102b66103ec366004611f0e565b610c52565b3480156103fd57600080fd5b506102ee60115481565b34801561041357600080fd5b50610376610422366004611fee565b610cc4565b34801561043357600080fd5b506102ee610d86565b34801561044857600080fd5b5061037661045736600461202f565b6000546001600160a01b0391821691161490565b34801561047757600080fd5b50604051600481526020016102f8565b34801561049357600080fd5b506102b66104a236600461204c565b610dd8565b3480156104b357600080fd5b506018546104c7906001600160a01b031681565b6040516001600160a01b0390911681526020016102f8565b3480156104eb57600080fd5b506102b66104fa366004611e65565b610e52565b34801561050b57600080fd5b5061037661051a36600461202f565b610f07565b34801561052b57600080fd5b506102ee600f5481565b34801561054157600080fd5b506102ee600e5481565b34801561055757600080fd5b506102b66105663660046120a8565b610f15565b34801561057757600080fd5b50601a5461037690600160a81b900460ff1681565b34801561059857600080fd5b506102ee6105a736600461202f565b6001600160a01b031660009081526008602052604090205490565b3480156105ce57600080fd5b506102ee60075481565b3480156105e457600080fd5b506102b66105f3366004611f0e565b610f4b565b34801561060457600080fd5b506102ee60065481565b34801561061a57600080fd5b506000546001600160a01b03166104c7565b34801561063857600080fd5b506102ee600d5481565b34801561064e57600080fd5b50601a546104c7906001600160a01b031681565b34801561066e57600080fd5b5061037661067d366004611f3f565b610fa8565b34801561068e57600080fd5b506102b661069d36600461202f565b610fb5565b3480156106ae57600080fd5b506102b66106bd366004611f0e565b611006565b3480156106ce57600080fd5b506102b6611051565b3480156106e357600080fd5b506015546104c7906001600160a01b031681565b34801561070357600080fd5b506102ee60105481565b34801561071957600080fd5b506017546104c7906001600160a01b031681565b34801561073957600080fd5b506102ee6107483660046120d4565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561077f57600080fd5b506102b661078e36600461210d565b611090565b34801561079f57600080fd5b506016546104c7906001600160a01b031681565b3480156107bf57600080fd5b506102b66107ce366004612129565b6110dc565b3480156107df57600080fd5b506102b66107ee36600461202f565b611143565b3480156107ff57600080fd5b506102b661080e36600461202f565b6111ec565b34801561081f57600080fd5b506019546104c7906001600160a01b031681565b34801561083f57600080fd5b5061037661084e36600461202f565b6112e8565b34801561085f57600080fd5b50601a5461037690600160a01b900460ff1681565b61087d336112e8565b6108a25760405162461bcd60e51b81526004016108999061215b565b60405180910390fd5b6101f582106108c35760405162461bcd60e51b815260040161089990612180565b60005b828110156109325781600c60008686858181106108e5576108e56121c5565b90506020020160208101906108fa919061202f565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561092b816121f1565b90506108c6565b50505050565b610941336112e8565b61095d5760405162461bcd60e51b81526004016108999061215b565b6101f5821061097e5760405162461bcd60e51b815260040161089990612180565b60005b828110156109325781600a60008686858181106109a0576109a06121c5565b90506020020160208101906109b5919061202f565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556109e6816121f1565b9050610981565b6000546001600160a01b03163314610a175760405162461bcd60e51b81526004016108999061220c565b6103e881600554610a28919061222c565b610a32919061224b565b60075550565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a939086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610acf5760405162461bcd60e51b81526004016108999061220c565b828114610b2f5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610899565b6000805b84811015610b7357838382818110610b4d57610b4d6121c5565b9050602002013582610b5f919061226d565b915080610b6b816121f1565b915050610b33565b5080610b94876001600160a01b031660009081526008602052604090205490565b1015610be25760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610899565b60005b84811015610c4957610c3687878784818110610c0357610c036121c5565b9050602002016020810190610c18919061202f565b868685818110610c2a57610c2a6121c5565b90506020020135611306565b5080610c41816121f1565b915050610be5565b50505050505050565b6000546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016108999061220c565b47336108fc6064610c8d858561222c565b610c97919061224b565b6040518115909202916000818181858888f19350505050158015610cbf573d6000803e3d6000fd5b505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610d71576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610d4c9184906113ec565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610d7c848484611426565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610dd3906003546001600160a01b0316600090815260086020526040902054610dcd90600554906117c1565b906117c1565b905090565b6000546001600160a01b03163314610e025760405162461bcd60e51b81526004016108999061220c565b601580546001600160a01b039586166001600160a01b0319918216179091556016805494861694821694909417909355601780549285169284169290921790915560188054919093169116179055565b610e5b336112e8565b610e775760405162461bcd60e51b81526004016108999061215b565b6101f58210610e985760405162461bcd60e51b815260040161089990612180565b60005b828110156109325781600b6000868685818110610eba57610eba6121c5565b9050602002016020810190610ecf919061202f565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f00816121f1565b9050610e9b565b6000610a9f82600019610a38565b610f1e336112e8565b610f3a5760405162461bcd60e51b81526004016108999061215b565b601291909155601391909155601455565b6000546001600160a01b03163314610f755760405162461bcd60e51b81526004016108999061220c565b3060009081526008602052604081205490610f9b6064610f958486611803565b90611882565b9050610932303383611306565b6000610d7f338484611426565b6000546001600160a01b03163314610fdf5760405162461bcd60e51b81526004016108999061220c565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146110305760405162461bcd60e51b81526004016108999061220c565b6103e881600554611041919061222c565b61104b919061224b565b60065550565b6000546001600160a01b0316331461107b5760405162461bcd60e51b81526004016108999061220c565b601a805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146110ba5760405162461bcd60e51b81526004016108999061220c565b601a8054921515600160a81b0260ff60a81b1990931692909217909155601b55565b6000546001600160a01b031633146111065760405162461bcd60e51b81526004016108999061220c565b600d849055600e839055600f82905560108190558082611126858761226d565b611130919061226d565b61113a919061226d565b60115550505050565b6000546001600160a01b0316331461116d5760405162461bcd60e51b81526004016108999061220c565b6000546001600160a01b03828116911614156111cb5760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610899565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146112165760405162461bcd60e51b81526004016108999061220c565b6000546001600160a01b03828116911614156112685760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610899565b600080546001600160a01b039081168252600160208181526040808520805460ff1990811690915585546001600160a01b0319169487169485178655848652948190208054909516909217909355519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546113579184906113ec565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461138690836118c4565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113da9086815260200190565b60405180910390a35060019392505050565b600081848411156114105760405162461bcd60e51b81526004016108999190611eb9565b50600061141d8486612285565b95945050505050565b601c5460009060ff16156114465761143f848484611306565b9050610d7f565b6001600160a01b03841660009081526001602052604090205460ff1615801561148857506001600160a01b03831660009081526001602052604090205460ff16155b156114dd57601a54600160a01b900460ff166114dd5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610899565b6001600160a01b03841660009081526001602052604090205460ff1615801561151f57506001600160a01b0384166000908152600c602052604090205460ff16155b801561154457506001600160a01b0383166000908152600c602052604090205460ff16155b801561155e5750601a546001600160a01b03848116911614155b156115de5760075482611586856001600160a01b031660009081526008602052604090205490565b611590919061226d565b11156115de5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610899565b6006548211158061160757506001600160a01b0384166000908152600b602052604090205460ff165b8061162a57506001600160a01b0383166000908152600b602052604090205460ff165b61166a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610899565b611672611923565b1561167f5761167f611979565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546116d19184906113ec565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff168061171e57506001600160a01b0384166000908152600a602052604090205460ff165b6117325761172d858486611cca565b611734565b825b6001600160a01b03851660009081526008602052604090205490915061175a90826118c4565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117ae9085815260200190565b60405180910390a3506001949350505050565b6000610d7f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113ec565b60008261181257506000610a9f565b600061181e838561222c565b90508261182b858361224b565b14610d7f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610899565b6000610d7f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dd6565b6000806118d1838561226d565b905083811015610d7f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610899565b601a546000906001600160a01b031633148015906119445750601c5460ff16155b80156119595750601a54600160a81b900460ff165b8015610dd3575050601b5430600090815260086020526040902054101590565b601c805460ff19166001179055600d54601154601b546000916119a591600291610f9591829087611803565b905060006119be82601b546117c190919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119f8576119f86121c5565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611a2957611a296121c5565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815291169063791ac94790611a6f90859060009086903090429060040161229c565b600060405180830381600087803b158015611a8957600080fd5b505af1158015611a9d573d6000803e3d6000fd5b5047925060009150611abe9050611ab5876002611882565b601154906117c1565b90506000611ad36002610f958481878c611803565b90506000611af083610f95600e548761180390919063ffffffff16565b90506000611b0d84610f95600f548861180390919063ffffffff16565b90506000611b2a85610f956010548961180390919063ffffffff16565b6016546040519192506001600160a01b03169084156108fc029085906000818181858888f19350505050158015611b65573d6000803e3d6000fd5b506017546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611ba0573d6000803e3d6000fd5b506018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611bdb573d6000803e3d6000fd5b508815611cb45760195460155460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611c52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c77919061230d565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff191690555050505050505050565b600060115460001415611cde575081610d7f565b601454601a546001600160a01b0384811691161415611d005750601254611d1b565b601a546001600160a01b0386811691161415611d1b57506013545b6000611d4c611d2d6103e8606461222c565b610f9584611d466011548a61180390919063ffffffff16565b90611803565b30600090815260086020526040902054909150611d6990826118c4565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dba9085815260200190565b60405180910390a3611dcc85826117c1565b9695505050505050565b60008183611df75760405162461bcd60e51b81526004016108999190611eb9565b50600061141d848661224b565b60008083601f840112611e1657600080fd5b50813567ffffffffffffffff811115611e2e57600080fd5b6020830191508360208260051b8501011115611e4957600080fd5b9250929050565b80358015158114611e6057600080fd5b919050565b600080600060408486031215611e7a57600080fd5b833567ffffffffffffffff811115611e9157600080fd5b611e9d86828701611e04565b9094509250611eb0905060208501611e50565b90509250925092565b600060208083528351808285015260005b81811015611ee657858101830151858201604001528201611eca565b81811115611ef8576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215611f2057600080fd5b5035919050565b6001600160a01b0381168114611f3c57600080fd5b50565b60008060408385031215611f5257600080fd5b8235611f5d81611f27565b946020939093013593505050565b600080600080600060608688031215611f8357600080fd5b8535611f8e81611f27565b9450602086013567ffffffffffffffff80821115611fab57600080fd5b611fb789838a01611e04565b90965094506040880135915080821115611fd057600080fd5b50611fdd88828901611e04565b969995985093965092949392505050565b60008060006060848603121561200357600080fd5b833561200e81611f27565b9250602084013561201e81611f27565b929592945050506040919091013590565b60006020828403121561204157600080fd5b8135610d7f81611f27565b6000806000806080858703121561206257600080fd5b843561206d81611f27565b9350602085013561207d81611f27565b9250604085013561208d81611f27565b9150606085013561209d81611f27565b939692955090935050565b6000806000606084860312156120bd57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156120e757600080fd5b82356120f281611f27565b9150602083013561210281611f27565b809150509250929050565b6000806040838503121561212057600080fd5b611f5d83611e50565b6000806000806080858703121561213f57600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612205576122056121db565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000816000190483118215151615612246576122466121db565b500290565b60008261226857634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612280576122806121db565b500190565b600082821015612297576122976121db565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122ec5784516001600160a01b0316835293830193918301916001016122c7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561232257600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212209460ee4d2d81c0c9aa9a72e1b39547007c6afb1b6c2b19c96396385096e302db64736f6c634300080c0033
Deployed Bytecode Sourcemap
4391:11876:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14129:309;;;;;;;;;;-1:-1:-1;14129:309:0;;;;;:::i;:::-;;:::i;:::-;;13519:293;;;;;;;;;;-1:-1:-1;13519:293:0;;;;;:::i;:::-;;:::i;5854:50::-;;;;;;;;;;;;;;;;;;;1207:25:1;;;1195:2;1180:18;5854:50:0;;;;;;;;7267:80;;;;;;;;;;-1:-1:-1;7339:5:0;;;;;;;;;;;-1:-1:-1;;;7339:5:0;;;;7267:80;;;;7339:5;7267:80;:::i;8608:175::-;;;;;;;;;;-1:-1:-1;8608:175:0;;;;;:::i;:::-;;:::i;7689:216::-;;;;;;;;;;-1:-1:-1;7689:216:0;;;;;:::i;:::-;;:::i;:::-;;;2651:14:1;;2644:22;2626:41;;2614:2;2599:18;7689:216:0;2486:187:1;5394:45:0;;;;;;;;;;;;5435:4;5394:45;;6997:88;;;;;;;;;;-1:-1:-1;7070:12:0;;6997:88;;15691:508;;;;;;;;;;-1:-1:-1;15691:508:0;;;;;:::i;:::-;;:::i;11309:207::-;;;;;;;;;;-1:-1:-1;11309:207:0;;;;;:::i;:::-;;:::i;5315:72::-;;;;;;;;;;;;;;;;8230:370;;;;;;;;;;-1:-1:-1;8230:370:0;;;;;:::i;:::-;;:::i;15543:142::-;;;;;;;;;;;;;:::i;3090:103::-;;;;;;;;;;-1:-1:-1;3090:103:0;;;;;:::i;:::-;3145:4;3180:5;-1:-1:-1;;;;;3169:16:0;;;3180:5;;3169:16;;3090:103;7091:80;;;;;;;;;;-1:-1:-1;7091:80:0;;4720:1;4446:36:1;;4434:2;4419:18;7091:80:0;4304:184:1;15002:366:0;;;;;;;;;;-1:-1:-1;15002:366:0;;;;;:::i;:::-;;:::i;5679:30::-;;;;;;;;;;-1:-1:-1;5679:30:0;;;;-1:-1:-1;;;;;5679:30:0;;;;;;-1:-1:-1;;;;;5333:32:1;;;5315:51;;5303:2;5288:18;5679:30:0;5169:203:1;13820:301:0;;;;;;;;;;-1:-1:-1;13820:301:0;;;;;:::i;:::-;;:::i;7913:122::-;;;;;;;;;;-1:-1:-1;7913:122:0;;;;;:::i;:::-;;:::i;5248:26::-;;;;;;;;;;;;;;;;5209:32;;;;;;;;;;;;;;;;14795:199;;;;;;;;;;-1:-1:-1;14795:199:0;;;;;:::i;:::-;;:::i;5817:30::-;;;;;;;;;;-1:-1:-1;5817:30:0;;;;-1:-1:-1;;;5817:30:0;;;;;;7437:105;;;;;;;;;;-1:-1:-1;7437:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7521:18:0;7503:7;7521:18;;;:9;:18;;;;;;;7437:105;4843:57;;;;;;;;;;;;;;;;11524:288;;;;;;;;;;-1:-1:-1;11524:288:0;;;;;:::i;:::-;;:::i;4788:48::-;;;;;;;;;;;;;;;;7353:78;;;;;;;;;;-1:-1:-1;7405:7:0;7423:5;-1:-1:-1;;;;;7423:5:0;7353:78;;5170:32;;;;;;;;;;;;;;;;5749:19;;;;;;;;;;-1:-1:-1;5749:19:0;;;;-1:-1:-1;;;;;5749:19:0;;;8066:156;;;;;;;;;;-1:-1:-1;8066:156:0;;;;;:::i;:::-;;:::i;2821:94::-;;;;;;;;;;-1:-1:-1;2821:94:0;;;;;:::i;:::-;;:::i;8789:170::-;;;;;;;;;;-1:-1:-1;8789:170:0;;;;;:::i;:::-;;:::i;11820:79::-;;;;;;;;;;;;;:::i;5558:36::-;;;;;;;;;;-1:-1:-1;5558:36:0;;;;-1:-1:-1;;;;;5558:36:0;;;5281:27;;;;;;;;;;;;;;;;5643:29;;;;;;;;;;-1:-1:-1;5643:29:0;;;;-1:-1:-1;;;;;5643:29:0;;;7548:133;;;;;;;;;;-1:-1:-1;7548:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7650:19:0;;;7632:7;7650:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7548:133;15376:155;;;;;;;;;;-1:-1:-1;15376:155:0;;;;;:::i;:::-;;:::i;5601:35::-;;;;;;;;;;-1:-1:-1;5601:35:0;;;;-1:-1:-1;;;;;5601:35:0;;;14446:341;;;;;;;;;;-1:-1:-1;14446:341:0;;;;;:::i;:::-;;:::i;2923:159::-;;;;;;;;;;-1:-1:-1;2923:159:0;;;;;:::i;:::-;;:::i;3316:266::-;;;;;;;;;;-1:-1:-1;3316:266:0;;;;;:::i;:::-;;:::i;5718:24::-;;;;;;;;;;-1:-1:-1;5718:24:0;;;;-1:-1:-1;;;;;5718:24:0;;;3201:107;;;;;;;;;;-1:-1:-1;3201:107:0;;;;;:::i;:::-;;:::i;5777:31::-;;;;;;;;;;-1:-1:-1;5777:31:0;;;;-1:-1:-1;;;5777:31:0;;;;;;14129:309;2762:24;2775:10;2762:12;:24::i;:::-;2754:48;;;;-1:-1:-1;;;2754:48:0;;;;;;;:::i;:::-;;;;;;;;;14264:3:::1;14245:22:::0;::::1;14237:71;;;;-1:-1:-1::0;;;14237:71:0::1;;;;;;;:::i;:::-;14324:9;14319:112;14335:20:::0;;::::1;14319:112;;;14413:6;14377:19;:33;14397:9;;14407:1;14397:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14377:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14377:33:0;:42;;-1:-1:-1;;14377:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14357:3:::1;::::0;::::1;:::i;:::-;;;14319:112;;;;14129:309:::0;;;:::o;13519:293::-;2762:24;2775:10;2762:12;:24::i;:::-;2754:48;;;;-1:-1:-1;;;2754:48:0;;;;;;;:::i;:::-;13646:3:::1;13627:22:::0;::::1;13619:71;;;;-1:-1:-1::0;;;13619:71:0::1;;;;;;;:::i;:::-;13706:9;13701:104;13717:20:::0;;::::1;13701:104;;;13787:6;13759:11;:25;13771:9;;13781:1;13771:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13759:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13759:25:0;:34;;-1:-1:-1;;13759:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13739:3:::1;::::0;::::1;:::i;:::-;;;13701:104;;8608:175:::0;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;8771:4:::1;8743:23;8728:12;;:38;;;;:::i;:::-;8727:48;;;;:::i;:::-;8709:15;:66:::0;-1:-1:-1;8608:175:0:o;7689:216::-;7793:10;7764:4;7781:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7781:32:0;;;;;;;;;;:41;;;7838:37;7764:4;;7781:32;;7838:37;;;;7816:6;1207:25:1;;1195:2;1180:18;;1061:177;7838:37:0;;;;;;;;-1:-1:-1;7893:4:0;7689:216;;;;;:::o;15691:508::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;15819:33;;::::1;15811:85;;;::::0;-1:-1:-1;;;15811:85:0;;9301:2:1;15811:85:0::1;::::0;::::1;9283:21:1::0;9340:2;9320:18;;;9313:30;9379:34;9359:18;;;9352:62;-1:-1:-1;;;9430:18:1;;;9423:38;9478:19;;15811:85:0::1;9099:404:1::0;15811:85:0::1;15905:12;15934:6:::0;15930:82:::1;15944:20:::0;;::::1;15930:82;;;15995:6;;16002:1;15995:9;;;;;;;:::i;:::-;;;;;;;15988:4;:16;;;;:::i;:::-;15981:23:::0;-1:-1:-1;15966:3:0;::::1;::::0;::::1;:::i;:::-;;;;15930:82;;;;16047:4;16028:15;16038:4;-1:-1:-1::0;;;;;7521:18:0;7503:7;7521:18;;;:9;:18;;;;;;;7437:105;16028:15:::1;:23;;16020:63;;;::::0;-1:-1:-1;;;16020:63:0;;9843:2:1;16020:63:0::1;::::0;::::1;9825:21:1::0;9882:2;9862:18;;;9855:30;9921:29;9901:18;;;9894:57;9968:18;;16020:63:0::1;9641:351:1::0;16020:63:0::1;16096:6;16092:102;16106:20:::0;;::::1;16092:102;;;16143:43;16158:4;16163:9;;16173:1;16163:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16176:6;;16183:1;16176:9;;;;;;;:::i;:::-;;;;;;;16143:14;:43::i;:::-;-1:-1:-1::0;16128:3:0;::::1;::::0;::::1;:::i;:::-;;;;16092:102;;;;15804:395;15691:508:::0;;;;;:::o;11309:207::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;11412:21:::1;11452:10;11444:64;11504:3;11473:28;11485:16:::0;11412:21;11473:28:::1;:::i;:::-;:34;;;;:::i;:::-;11444:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11381:135;11309:207:::0;:::o;8230:370::-;-1:-1:-1;;;;;8350:19:0;;8330:4;8350:19;;;:11;:19;;;;;;;;8370:10;8350:31;;;;;;;;-1:-1:-1;;8350:52:0;8347:186;;8452:69;;;;;;;;;;;-1:-1:-1;;;8452:69:0;;;;;;;;-1:-1:-1;;;;;8452:19:0;;-1:-1:-1;8452:19:0;;;:11;:19;;;;;8472:10;8452:31;;;;;;;;;;:69;;8488:6;;8452:35;:69::i;:::-;-1:-1:-1;;;;;8418:19:0;;;;;;:11;:19;;;;;;;;8438:10;8418:31;;;;;;;:103;8347:186;8552:40;8566:6;8574:9;8585:6;8552:13;:40::i;:::-;8545:47;;8230:370;;;;;;:::o;15543:142::-;15671:4;;-1:-1:-1;;;;;15671:4:0;15596:7;7521:18;;;:9;:18;;;;;;15623:54;;15650:4;;-1:-1:-1;;;;;15650:4:0;7503:7;7521:18;;;:9;:18;;;;;;15623:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;15616:61;;15543:142;:::o;15002:366::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;15171:21:::1;:46:::0;;-1:-1:-1;;;;;15171:46:0;;::::1;-1:-1:-1::0;;;;;;15171:46:0;;::::1;;::::0;;;15228:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15283:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15326:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;15002:366::o;13820:301::-;2762:24;2775:10;2762:12;:24::i;:::-;2754:48;;;;-1:-1:-1;;;2754:48:0;;;;;;;:::i;:::-;13951:3:::1;13932:22:::0;::::1;13924:71;;;;-1:-1:-1::0;;;13924:71:0::1;;;;;;;:::i;:::-;14011:9;14006:108;14022:20:::0;;::::1;14006:108;;;14096:6;14064:15;:29;14080:9;;14090:1;14080:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14064:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14064:29:0;:38;;-1:-1:-1;;14064:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14044:3:::1;::::0;::::1;:::i;:::-;;;14006:108;;7913:122:::0;7968:4;7992:35;8000:7;-1:-1:-1;;7992:7:0;:35::i;14795:199::-;2762:24;2775:10;2762:12;:24::i;:::-;2754:48;;;;-1:-1:-1;;;2754:48:0;;;;;;;:::i;:::-;14895:14:::1;:22:::0;;;;14928:13:::1;:20:::0;;;;14959:18:::1;:27:::0;14795:199::o;11524:288::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;11653:4:::1;11608:24;7521:18:::0;;;:9;:18;;;;;;;11693:47:::1;11736:3;11693:38;7521:18:::0;11714:16;11693:20:::1;:38::i;:::-;:42:::0;::::1;:47::i;:::-;11670:70;;11751:53;11774:4;11780:10;11791:12;11751:14;:53::i;8066:156::-:0;8146:4;8170:44;8184:10;8196:9;8207:6;8170:13;:44::i;2821:94::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2881:19:0::1;;::::0;;;2903:4:::1;2881:19;::::0;;;;;;;:26;;-1:-1:-1;;2881:26:0::1;::::0;;::::1;::::0;;2821:94::o;8789:170::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;8947:4:::1;8918:24;8903:12;;:39;;;;:::i;:::-;8902:49;;;;:::i;:::-;8887:12;:64:::0;-1:-1:-1;8789:170:0:o;11820:79::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;11873:11:::1;:18:::0;;-1:-1:-1;;;;11873:18:0::1;-1:-1:-1::0;;;11873:18:0::1;::::0;;11820:79::o;15376:155::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;15467:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;15467:22:0::1;-1:-1:-1::0;;;;15467:22:0;;::::1;::::0;;;::::1;::::0;;;15500:13:::1;:23:::0;15376:155::o;14446:341::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;14584:12:::1;:28:::0;;;14623:12:::1;:28:::0;;;14662:6:::1;:16:::0;;;14689:7:::1;:18:::0;;;14699:8;14671:7;14729:29:::1;14638:13:::0;14599;14729:29:::1;:::i;:::-;:39;;;;:::i;:::-;:50;;;;:::i;:::-;14718:8;:61:::0;-1:-1:-1;;;;14446:341:0:o;2923:159::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;3000:5:::1;::::0;-1:-1:-1;;;;;2993:12:0;;::::1;3000:5:::0;::::1;2993:12;;2985:51;;;::::0;-1:-1:-1;;;2985:51:0;;10199:2:1;2985:51:0::1;::::0;::::1;10181:21:1::0;10238:2;10218:18;;;10211:30;10277:28;10257:18;;;10250:56;10323:18;;2985:51:0::1;9997:350:1::0;2985:51:0::1;-1:-1:-1::0;;;;;3047:19:0::1;3069:5;3047:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3047:27:0::1;::::0;;2923:159::o;3316:266::-;3145:4;3180:5;-1:-1:-1;;;;;3180:5:0;2680:10;3169:16;2664:38;;;;-1:-1:-1;;;2664:38:0;;;;;;;:::i;:::-;3407:5:::1;::::0;-1:-1:-1;;;;;3400:12:0;;::::1;3407:5:::0;::::1;3400:12;;3392:42;;;::::0;-1:-1:-1;;;3392:42:0;;10554:2:1;3392:42:0::1;::::0;::::1;10536:21:1::0;10593:2;10573:18;;;10566:30;-1:-1:-1;;;10612:18:1;;;10605:47;10669:18;;3392:42:0::1;10352:341:1::0;3392:42:0::1;3469:5;3460::::0;;-1:-1:-1;;;;;3460:5:0;;::::1;3445:21:::0;;:14:::1;:21;::::0;;;;;;;:29;;-1:-1:-1;;3445:29:0;;::::1;::::0;;;3485:11;;-1:-1:-1;;;;;;3485:11:0::1;::::0;;::::1;::::0;;::::1;::::0;;3507:19;;;;;;;:26;;;;::::1;::::0;;::::1;::::0;;;3549:25;5315:51:1;;;3549:25:0::1;::::0;5288:18:1;3549:25:0::1;;;;;;;3316:266:::0;:::o;3201:107::-;-1:-1:-1;;;;;3281:19:0;3257:4;3281:19;;;:14;:19;;;;;;;;;3201:107::o;10086:330::-;10216:53;;;;;;;;;;;-1:-1:-1;;;10216:53:0;;;;;;;;-1:-1:-1;;;;;10216:17:0;;10179:4;10216:17;;;:9;:17;;;;;;;:53;;10238:6;;10216:21;:53::i;:::-;-1:-1:-1;;;;;10196:17:0;;;;;;;:9;:17;;;;;;:73;;;;10303:20;;;;;;;:32;;10328:6;10303:24;:32::i;:::-;-1:-1:-1;;;;;10280:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10351:35;;;;;;;;;;10379:6;1207:25:1;;1195:2;1180:18;;1061:177;10351:35:0;;;;;;;;-1:-1:-1;10404:4:0;10086:330;;;;;:::o;705:192::-;791:7;827:12;819:6;;;;811:29;;;;-1:-1:-1;;;811:29:0;;;;;;;;:::i;:::-;-1:-1:-1;851:9:0;863:5;867:1;863;:5;:::i;:::-;851:17;705:192;-1:-1:-1;;;;;705:192:0:o;8967:1107::-;9079:6;;9059:4;;9079:6;;9076:63;;;9095:41;9110:6;9118:9;9129:6;9095:14;:41::i;:::-;9088:48;;;;9076:63;-1:-1:-1;;;;;9155:22:0;;;;;;:14;:22;;;;;;;;9154:23;:53;;;;-1:-1:-1;;;;;;9182:25:0;;;;;;:14;:25;;;;;;;;9181:26;9154:53;9151:127;;;9231:11;;-1:-1:-1;;;9231:11:0;;;;9223:43;;;;-1:-1:-1;;;9223:43:0;;11246:2:1;9223:43:0;;;11228:21:1;11285:2;11265:18;;;11258:30;-1:-1:-1;;;11304:18:1;;;11297:50;11364:18;;9223:43:0;11044:344:1;9223:43:0;-1:-1:-1;;;;;9295:22:0;;;;;;:14;:22;;;;;;;;9294:23;:55;;;;-1:-1:-1;;;;;;9322:27:0;;;;;;:19;:27;;;;;;;;9321:28;9294:55;:90;;;;-1:-1:-1;;;;;;9354:30:0;;;;;;:19;:30;;;;;;;;9353:31;9294:90;:111;;;;-1:-1:-1;9401:4:0;;-1:-1:-1;;;;;9388:17:0;;;9401:4;;9388:17;;9294:111;9290:230;;;9465:15;;9454:6;9431:20;9441:9;-1:-1:-1;;;;;7521:18:0;7503:7;7521:18;;;:9;:18;;;;;;;7437:105;9431:20;:29;;;;:::i;:::-;9430:50;;9422:86;;;;-1:-1:-1;;;9422:86:0;;11595:2:1;9422:86:0;;;11577:21:1;11634:2;11614:18;;;11607:30;11673:26;11653:18;;;11646:54;11717:18;;9422:86:0;11393:348:1;9422:86:0;9551:12;;9541:6;:22;;9540:51;;;-1:-1:-1;;;;;;9568:23:0;;;;;;:15;:23;;;;;;;;9540:51;:81;;;-1:-1:-1;;;;;;9595:26:0;;;;;;:15;:26;;;;;;;;9540:81;9532:111;;;;-1:-1:-1;;;9532:111:0;;11948:2:1;9532:111:0;;;11930:21:1;11987:2;11967:18;;;11960:30;-1:-1:-1;;;12006:18:1;;;11999:47;12063:18;;9532:111:0;11746:341:1;9532:111:0;9659:16;:14;:16::i;:::-;9656:35;;;9678:10;:8;:10::i;:::-;9723:53;;;;;;;;;;;-1:-1:-1;;;9723:53:0;;;;;;;;-1:-1:-1;;;;;9723:17:0;;-1:-1:-1;9723:17:0;;;:9;:17;;;;;;;;:53;;9745:6;;9723:21;:53::i;:::-;-1:-1:-1;;;;;9703:17:0;;;;;;:9;:17;;;;;;;;:73;;;;9815:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;9838:22:0;;;;;;:11;:22;;;;;;;;9815:45;9814:93;;9873:34;9881:6;9889;9897:9;9873:7;:34::i;:::-;9814:93;;;9864:6;9814:93;-1:-1:-1;;;;;9943:20:0;;;;;;:9;:20;;;;;;9789:118;;-1:-1:-1;9943:40:0;;9789:118;9943:24;:40::i;:::-;-1:-1:-1;;;;;9920:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10001:43;;;;;;;;;;10029:14;1207:25:1;;1195:2;1180:18;;1061:177;10001:43:0;;;;;;;;-1:-1:-1;10062:4:0;;8967:1107;-1:-1:-1;;;;8967:1107:0:o;563:136::-;621:7;648:43;652:1;655;648:43;;;;;;;;;;;;;;;;;:3;:43::i;903:250::-;961:7;985:6;981:47;;-1:-1:-1;1015:1:0;1008:8;;981:47;1040:9;1052:5;1056:1;1052;:5;:::i;:::-;1040:17;-1:-1:-1;1085:1:0;1076:5;1080:1;1040:17;1076:5;:::i;:::-;:10;1068:56;;;;-1:-1:-1;;;1068:56:0;;12294:2:1;1068:56:0;;;12276:21:1;12333:2;12313:18;;;12306:30;12372:34;12352:18;;;12345:62;-1:-1:-1;;;12423:18:1;;;12416:31;12464:19;;1068:56:0;12092:397:1;1159:132:0;1217:7;1244:39;1248:1;1251;1244:39;;;;;;;;;;;;;;;;;:3;:39::i;376:181::-;434:7;;466:5;470:1;466;:5;:::i;:::-;454:17;;495:1;490;:6;;482:46;;;;-1:-1:-1;;;482:46:0;;12696:2:1;482:46:0;;;12678:21:1;12735:2;12715:18;;;12708:30;12774:29;12754:18;;;12747:57;12821:18;;482:46:0;12494:351:1;11104:197:0;11191:4;;11153;;-1:-1:-1;;;;;11191:4:0;11177:10;:18;;;;:38;;-1:-1:-1;11209:6:0;;;;11208:7;11177:38;:62;;;;-1:-1:-1;11228:11:0;;-1:-1:-1;;;11228:11:0;;;;11177:62;:116;;;;-1:-1:-1;;11280:13:0;;11270:4;11252:24;;;;:9;:24;;;;;;:41;;;11104:197::o;11907:1604::-;5951:6;:13;;-1:-1:-1;;5951:13:0;5960:4;5951:13;;;11986:12:::1;::::0;12078:8:::1;::::0;12035:13:::1;::::0;5951:6;;12035:59:::1;::::0;12092:1:::1;::::0;12035:52:::1;::::0;;;11986:12;12035:17:::1;:38::i;:59::-;12009:85;;12105:20;12128:34;12146:15;12128:13;;:17;;:34;;;;:::i;:::-;12199:16;::::0;;12213:1:::1;12199:16:::0;;;;;::::1;::::0;;12105:57;;-1:-1:-1;12175:21:0::1;::::0;12199:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12199:16:0::1;12175:40;;12244:4;12226;12231:1;12226:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12226:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;12270:4:::1;::::0;12260:7;;12270:4;::::1;::::0;12260;;12270;;12260:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;12260:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;12287:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;12287:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;12359:12;;12287:6:::1;::::0;12402:4;;12429::::1;::::0;12449:15:::1;::::0;12287:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;12508:21:0::1;::::0;-1:-1:-1;12488:17:0::1;::::0;-1:-1:-1;12564:40:0::1;::::0;-1:-1:-1;12577:26:0::1;:19:::0;12601:1:::1;12577:23;:26::i;:::-;12564:8;::::0;;:12:::1;:40::i;:::-;12542:62:::0;-1:-1:-1;12625:26:0::1;12654:58;12710:1;12654:51;12542:62:::0;12654:51;:9;12668:19;12654:13:::1;:34::i;:58::-;12625:87;;12723:26;12752:44;12784:11;12752:27;12766:12;;12752:9;:13;;:27;;;;:::i;:44::-;12723:73;;12807:20;12830:38;12856:11;12830:21;12844:6;;12830:9;:13;;:21;;;;:::i;:38::-;12807:61;;12879:21;12903:39;12930:11;12903:22;12917:7;;12903:9;:13;;:22;;;;:::i;:39::-;12963:20;::::0;12955:58:::1;::::0;12879:63;;-1:-1:-1;;;;;;12963:20:0::1;::::0;12955:58;::::1;;;::::0;12994:18;;12963:20:::1;12955:58:::0;12963:20;12955:58;12994:18;12963:20;12955:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13032:14:0::1;::::0;13024:46:::1;::::0;-1:-1:-1;;;;;13032:14:0;;::::1;::::0;13024:46;::::1;;;::::0;13057:12;;13032:14:::1;13024:46:::0;13032:14;13024:46;13057:12;13032:14;13024:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13089:15:0::1;::::0;13081:48:::1;::::0;-1:-1:-1;;;;;13089:15:0;;::::1;::::0;13081:48;::::1;;;::::0;13115:13;;13089:15:::1;13081:48:::0;13089:15;13081:48;13115:13;13089:15;13081:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13145:19:0;;13142:362:::1;;13180:6;::::0;13354:21:::1;::::0;13180:244:::1;::::0;-1:-1:-1;;;13180:244:0;;13256:4:::1;13180:244;::::0;::::1;14308:34:1::0;14358:18;;;14351:34;;;13180:6:0::1;14401:18:1::0;;;14394:34;;;14444:18;;;14437:34;-1:-1:-1;;;;;13354:21:0;;::::1;14487:19:1::0;;;14480:44;13394:15:0::1;14540:19:1::0;;;14533:35;13180:6:0;::::1;::::0;:22:::1;::::0;13210:18;;14242:19:1;;13180:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13444:48:0::1;::::0;;15064:25:1;;;15120:2;15105:18;;15098:34;;;13444:48:0::1;::::0;-1:-1:-1;15037:18:1;13444:48:0::1;;;;;;;13142:362;-1:-1:-1::0;;5969:6:0;:14;;-1:-1:-1;;5969:14:0;;;-1:-1:-1;;;;;;;;11907:1604:0:o;10426:670::-;10512:7;10535:8;;10547:1;10535:13;10532:58;;;-1:-1:-1;10572:6:0;10565:13;;10532:58;10631:18;;10678:4;;-1:-1:-1;;;;;10665:17:0;;;10678:4;;10665:17;10662:154;;;-1:-1:-1;10712:14:0;;10662:154;;;10757:4;;-1:-1:-1;;;;;10747:14:0;;;10757:4;;10747:14;10744:72;;;-1:-1:-1;10791:13:0;;10744:72;10828:17;10848:62;10889:20;5435:4;10906:3;10889:20;:::i;:::-;10848:36;10873:10;10848:20;10859:8;;10848:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;10968:4;10950:24;;;;:9;:24;;;;;;10828:82;;-1:-1:-1;10950:39:0;;10828:82;10950:28;:39::i;:::-;10941:4;10923:24;;;;:9;:24;;;;;;;:66;;;;11005:42;;-1:-1:-1;;;;;11005:42:0;;;;;;;11037:9;1207:25:1;;1195:2;1180:18;;1061:177;11005:42:0;;;;;;;;11067:21;:6;11078:9;11067:10;:21::i;:::-;11060:28;10426:670;-1:-1:-1;;;;;;10426:670:0:o;1297:189::-;1383:7;1418:12;1411:5;1403:28;;;;-1:-1:-1;;;1403:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1442:9:0;1454:5;1458:1;1454;:5;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:160::-;451:20;;507:13;;500:21;490:32;;480:60;;536:1;533;526:12;480:60;386:160;;;:::o;551:505::-;643:6;651;659;712:2;700:9;691:7;687:23;683:32;680:52;;;728:1;725;718:12;680:52;768:9;755:23;801:18;793:6;790:30;787:50;;;833:1;830;823:12;787:50;872:70;934:7;925:6;914:9;910:22;872:70;:::i;:::-;961:8;;-1:-1:-1;846:96:1;-1:-1:-1;1015:35:1;;-1:-1:-1;1046:2:1;1031:18;;1015:35;:::i;:::-;1005:45;;551:505;;;;;:::o;1243:597::-;1355:4;1384:2;1413;1402:9;1395:21;1445:6;1439:13;1488:6;1483:2;1472:9;1468:18;1461:34;1513:1;1523:140;1537:6;1534:1;1531:13;1523:140;;;1632:14;;;1628:23;;1622:30;1598:17;;;1617:2;1594:26;1587:66;1552:10;;1523:140;;;1681:6;1678:1;1675:13;1672:91;;;1751:1;1746:2;1737:6;1726:9;1722:22;1718:31;1711:42;1672:91;-1:-1:-1;1824:2:1;1803:15;-1:-1:-1;;1799:29:1;1784:45;;;;1831:2;1780:54;;1243:597;-1:-1:-1;;;1243:597:1:o;1845:180::-;1904:6;1957:2;1945:9;1936:7;1932:23;1928:32;1925:52;;;1973:1;1970;1963:12;1925:52;-1:-1:-1;1996:23:1;;1845:180;-1:-1:-1;1845:180:1:o;2030:131::-;-1:-1:-1;;;;;2105:31:1;;2095:42;;2085:70;;2151:1;2148;2141:12;2085:70;2030:131;:::o;2166:315::-;2234:6;2242;2295:2;2283:9;2274:7;2270:23;2266:32;2263:52;;;2311:1;2308;2301:12;2263:52;2350:9;2337:23;2369:31;2394:5;2369:31;:::i;:::-;2419:5;2471:2;2456:18;;;;2443:32;;-1:-1:-1;;;2166:315:1:o;2678:908::-;2809:6;2817;2825;2833;2841;2894:2;2882:9;2873:7;2869:23;2865:32;2862:52;;;2910:1;2907;2900:12;2862:52;2949:9;2936:23;2968:31;2993:5;2968:31;:::i;:::-;3018:5;-1:-1:-1;3074:2:1;3059:18;;3046:32;3097:18;3127:14;;;3124:34;;;3154:1;3151;3144:12;3124:34;3193:70;3255:7;3246:6;3235:9;3231:22;3193:70;:::i;:::-;3282:8;;-1:-1:-1;3167:96:1;-1:-1:-1;3370:2:1;3355:18;;3342:32;;-1:-1:-1;3386:16:1;;;3383:36;;;3415:1;3412;3405:12;3383:36;;3454:72;3518:7;3507:8;3496:9;3492:24;3454:72;:::i;:::-;2678:908;;;;-1:-1:-1;2678:908:1;;-1:-1:-1;3545:8:1;;3428:98;2678:908;-1:-1:-1;;;2678:908:1:o;3591:456::-;3668:6;3676;3684;3737:2;3725:9;3716:7;3712:23;3708:32;3705:52;;;3753:1;3750;3743:12;3705:52;3792:9;3779:23;3811:31;3836:5;3811:31;:::i;:::-;3861:5;-1:-1:-1;3918:2:1;3903:18;;3890:32;3931:33;3890:32;3931:33;:::i;:::-;3591:456;;3983:7;;-1:-1:-1;;;4037:2:1;4022:18;;;;4009:32;;3591:456::o;4052:247::-;4111:6;4164:2;4152:9;4143:7;4139:23;4135:32;4132:52;;;4180:1;4177;4170:12;4132:52;4219:9;4206:23;4238:31;4263:5;4238:31;:::i;4493:671::-;4579:6;4587;4595;4603;4656:3;4644:9;4635:7;4631:23;4627:33;4624:53;;;4673:1;4670;4663:12;4624:53;4712:9;4699:23;4731:31;4756:5;4731:31;:::i;:::-;4781:5;-1:-1:-1;4838:2:1;4823:18;;4810:32;4851:33;4810:32;4851:33;:::i;:::-;4903:7;-1:-1:-1;4962:2:1;4947:18;;4934:32;4975:33;4934:32;4975:33;:::i;:::-;5027:7;-1:-1:-1;5086:2:1;5071:18;;5058:32;5099:33;5058:32;5099:33;:::i;:::-;4493:671;;;;-1:-1:-1;4493:671:1;;-1:-1:-1;;4493:671:1:o;5377:316::-;5454:6;5462;5470;5523:2;5511:9;5502:7;5498:23;5494:32;5491:52;;;5539:1;5536;5529:12;5491:52;-1:-1:-1;;5562:23:1;;;5632:2;5617:18;;5604:32;;-1:-1:-1;5683:2:1;5668:18;;;5655:32;;5377:316;-1:-1:-1;5377:316:1:o;5698:388::-;5766:6;5774;5827:2;5815:9;5806:7;5802:23;5798:32;5795:52;;;5843:1;5840;5833:12;5795:52;5882:9;5869:23;5901:31;5926:5;5901:31;:::i;:::-;5951:5;-1:-1:-1;6008:2:1;5993:18;;5980:32;6021:33;5980:32;6021:33;:::i;:::-;6073:7;6063:17;;;5698:388;;;;;:::o;6091:248::-;6156:6;6164;6217:2;6205:9;6196:7;6192:23;6188:32;6185:52;;;6233:1;6230;6223:12;6185:52;6256:26;6272:9;6256:26;:::i;6344:385::-;6430:6;6438;6446;6454;6507:3;6495:9;6486:7;6482:23;6478:33;6475:53;;;6524:1;6521;6514:12;6475:53;-1:-1:-1;;6547:23:1;;;6617:2;6602:18;;6589:32;;-1:-1:-1;6668:2:1;6653:18;;6640:32;;6719:2;6704:18;6691:32;;-1:-1:-1;6344:385:1;-1:-1:-1;6344:385:1:o;7220:335::-;7422:2;7404:21;;;7461:2;7441:18;;;7434:30;-1:-1:-1;;;7495:2:1;7480:18;;7473:41;7546:2;7531:18;;7220:335::o;7560:401::-;7762:2;7744:21;;;7801:2;7781:18;;;7774:30;7840:34;7835:2;7820:18;;7813:62;-1:-1:-1;;;7906:2:1;7891:18;;7884:35;7951:3;7936:19;;7560:401::o;7966:127::-;8027:10;8022:3;8018:20;8015:1;8008:31;8058:4;8055:1;8048:15;8082:4;8079:1;8072:15;8098:127;8159:10;8154:3;8150:20;8147:1;8140:31;8190:4;8187:1;8180:15;8214:4;8211:1;8204:15;8230:135;8269:3;-1:-1:-1;;8290:17:1;;8287:43;;;8310:18;;:::i;:::-;-1:-1:-1;8357:1:1;8346:13;;8230:135::o;8370:329::-;8572:2;8554:21;;;8611:1;8591:18;;;8584:29;-1:-1:-1;;;8644:2:1;8629:18;;8622:36;8690:2;8675:18;;8370:329::o;8704:168::-;8744:7;8810:1;8806;8802:6;8798:14;8795:1;8792:21;8787:1;8780:9;8773:17;8769:45;8766:71;;;8817:18;;:::i;:::-;-1:-1:-1;8857:9:1;;8704:168::o;8877:217::-;8917:1;8943;8933:132;;8987:10;8982:3;8978:20;8975:1;8968:31;9022:4;9019:1;9012:15;9050:4;9047:1;9040:15;8933:132;-1:-1:-1;9079:9:1;;8877:217::o;9508:128::-;9548:3;9579:1;9575:6;9572:1;9569:13;9566:39;;;9585:18;;:::i;:::-;-1:-1:-1;9621:9:1;;9508:128::o;10914:125::-;10954:4;10982:1;10979;10976:8;10973:34;;;10987:18;;:::i;:::-;-1:-1:-1;11024:9:1;;10914:125::o;12982:980::-;13244:4;13292:3;13281:9;13277:19;13323:6;13312:9;13305:25;13349:2;13387:6;13382:2;13371:9;13367:18;13360:34;13430:3;13425:2;13414:9;13410:18;13403:31;13454:6;13489;13483:13;13520:6;13512;13505:22;13558:3;13547:9;13543:19;13536:26;;13597:2;13589:6;13585:15;13571:29;;13618:1;13628:195;13642:6;13639:1;13636:13;13628:195;;;13707:13;;-1:-1:-1;;;;;13703:39:1;13691:52;;13798:15;;;;13763:12;;;;13739:1;13657:9;13628:195;;;-1:-1:-1;;;;;;;13879:32:1;;;;13874:2;13859:18;;13852:60;-1:-1:-1;;;13943:3:1;13928:19;13921:35;13840:3;12982:980;-1:-1:-1;;;12982:980:1:o;14579:306::-;14667:6;14675;14683;14736:2;14724:9;14715:7;14711:23;14707:32;14704:52;;;14752:1;14749;14742:12;14704:52;14781:9;14775:16;14765:26;;14831:2;14820:9;14816:18;14810:25;14800:35;;14875:2;14864:9;14860:18;14854:25;14844:35;;14579:306;;;;;:::o
Swarm Source
ipfs://9460ee4d2d81c0c9aa9a72e1b39547007c6afb1b6c2b19c96396385096e302db
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.