ERC-20
Overview
Max Total Supply
1,000,000,000,000 CUPHEAD
Holders
231
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
6,339,525,133.86721383 CUPHEADValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CupHeadtoken
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-15 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.7; /** * Standard SafeMath, stripped down to just add/sub/mul/div */ library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * BEP20 standard interface. */ interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; constructor(address _owner) { owner = _owner; } /** * Function modifier to require caller to be contract deployer */ modifier onlyOwner() { require(isOwner(msg.sender), "!Owner"); _; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function claimDividend(address shareholder) external; function setTreasury(address treasury) external; function getDividendsClaimedOf (address shareholder) external returns (uint256); } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address public _token; address public _owner; address public _treasury; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalClaimed; } address[] private shareholders; mapping (address => uint256) private shareholderIndexes; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalClaimed; uint256 public dividendsPerShare; uint256 private dividendsPerShareAccuracyFactor = 10 ** 36; modifier onlyToken() { require(msg.sender == _token); _; } modifier onlyOwner() { require(msg.sender == _owner); _; } constructor (address owner, address treasury) { _token = msg.sender; _owner = payable(owner); _treasury = payable(treasury); } // receive() external payable { } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override { uint256 amount = msg.value; totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getClaimableDividendOf(shareholder); if(amount > 0){ totalClaimed = totalClaimed.add(amount); shares[shareholder].totalClaimed = shares[shareholder].totalClaimed.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); payable(shareholder).transfer(amount); } } function claimDividend(address shareholder) external override onlyToken { distributeDividend(shareholder); } function getClaimableDividendOf(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } function manualSend(uint256 amount, address holder) external onlyOwner { uint256 contractETHBalance = address(this).balance; payable(holder).transfer(amount > 0 ? amount : contractETHBalance); } function setTreasury(address treasury) external override onlyToken { _treasury = payable(treasury); } function getDividendsClaimedOf (address shareholder) external override view returns (uint256) { require (shares[shareholder].amount > 0, "You're not a BLC shareholder!"); return shares[shareholder].totalClaimed; } } contract CupHeadtoken is IBEP20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string private constant _name = "CUPHEAD token"; string private constant _symbol = "CUPHEAD"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000000000 * (10 ** _decimals); uint256 private _maxTxAmountBuy = _totalSupply; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private isFeeExempt; mapping (address => bool) private isDividendExempt; mapping (address => bool) private isBot; uint256 private totalFee = 14; uint256 private feeDenominator = 100; address payable public marketingWallet = payable(0x1390E07647F7ee507D70143591045B13f200e765); address payable public treasury = payable(0xbA25f48A3BAcBb31704e226393209101aCcb0E2c); IDEXRouter public router; address public pair; uint256 public launchedAt; bool private tradingOpen; bool private buyLimit = false; uint256 private maxBuy = 5000000000 * (10 ** _decimals); DividendDistributor private distributor; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( address _owner ) Auth(_owner) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(_owner, treasury); isFeeExempt[_owner] = true; isFeeExempt[marketingWallet] = true; isFeeExempt[treasury] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading require (!isBot[sender] && !isBot[recipient], "Nice try"); if (buyLimit) { if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir"); } if (block.number <= (launchedAt + 1)) { isBot[recipient] = true; isDividendExempt[recipient] = true; } if(inSwap){ return _basicTransfer(sender, recipient, amount); } bool shouldSwapBack = /*!inSwap &&*/ (recipient==pair && balanceOf(address(this)) > 0); if(shouldSwapBack){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if(sender != pair && !isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} } if(recipient != pair && !isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} } emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) && (sender == pair || recipient == pair) ); } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount; feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function swapBack() internal swapping { uint256 amountToSwap = balanceOf(address(this)); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountTreasury = (address(this).balance).div(2); uint256 amountMarketing = (address(this).balance).div(2); payable(marketingWallet).transfer(amountMarketing); payable(treasury).transfer(amountTreasury); } function openTrading() external onlyOwner { launchedAt = block.number; tradingOpen = true; } function setBot(address _address, bool toggle) external onlyOwner { isBot[_address] = toggle; _setIsDividendExempt(_address, toggle); } function isInBot(address _address) external view onlyOwner returns (bool) { return isBot[_address]; } function _setIsDividendExempt(address holder, bool exempt) internal { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setIsDividendExempt(address holder, bool exempt) external onlyOwner { _setIsDividendExempt(holder, exempt); } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setFee (uint256 _fee) external onlyOwner { require (_fee <= 95, "Fee can't exceed 10%"); totalFee = _fee; } function manualSend() external onlyOwner { uint256 contractETHBalance = address(this).balance; payable(marketingWallet).transfer(contractETHBalance); } function claimDividend() external { distributor.claimDividend(msg.sender); } function claimDividend(address holder) external onlyOwner { distributor.claimDividend(holder); } function getClaimableDividendOf(address shareholder) public view returns (uint256) { return distributor.getClaimableDividendOf(shareholder); } function manualBurn(uint256 amount) external onlyOwner returns (bool) { return _basicTransfer(address(this), DEAD, amount); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function setMarketingWallet(address _marketingWallet) external onlyOwner { marketingWallet = payable(_marketingWallet); } function setTreasury(address _treasury) external onlyOwner { treasury = payable(_treasury); distributor.setTreasury(_treasury); } function getTotalDividends() external view returns (uint256) { return distributor.totalDividends(); } function getTotalClaimed() external view returns (uint256) { return distributor.totalClaimed(); } function getDividendsClaimedOf (address shareholder) external view returns (uint256) { return distributor.getDividendsClaimedOf(shareholder); } function removeBuyLimit() external onlyOwner { buyLimit = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isInBot","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":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000af9565b64e8d4a51000620000ab919062000c36565b600455600454600555600e600b556064600c55731390e07647f7ee507d70143591045b13f200e765600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ba25f48a3bacbb31704e226393209101accb0e2c600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260016101000a81548160ff0219169083151502179055506009600a62000193919062000af9565b64012a05f200620001a5919062000c36565b601355348015620001b557600080fd5b506040516200629b3803806200629b8339818101604052810190620001db9190620009c2565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620009c2565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003bf57600080fd5b505afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa9190620009c2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200045892919062000a27565b602060405180830381600087803b1580156200047357600080fd5b505af115801562000488573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ae9190620009c2565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005e3906200099d565b620005f092919062000a54565b604051809103906000f0801580156200060d573d6000803e3d6000fd5b50601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200098e919062000a81565b60405180910390a35062000d79565b6119e480620048b783390190565b600081519050620009bc8162000d5f565b92915050565b600060208284031215620009db57620009da62000d4d565b5b6000620009eb84828501620009ab565b91505092915050565b620009ff8162000ce2565b82525050565b62000a108162000c97565b82525050565b62000a218162000ccb565b82525050565b600060408201905062000a3e600083018562000a05565b62000a4d602083018462000a05565b9392505050565b600060408201905062000a6b600083018562000a05565b62000a7a6020830184620009f4565b9392505050565b600060208201905062000a98600083018462000a16565b92915050565b6000808291508390505b600185111562000af05780860481111562000ac85762000ac762000d1e565b5b600185161562000ad85780820291505b808102905062000ae88562000d52565b945062000aa8565b94509492505050565b600062000b068262000ccb565b915062000b138362000cd5565b925062000b427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b4a565b905092915050565b60008262000b5c576001905062000c2f565b8162000b6c576000905062000c2f565b816001811462000b85576002811462000b905762000bc6565b600191505062000c2f565b60ff84111562000ba55762000ba462000d1e565b5b8360020a91508482111562000bbf5762000bbe62000d1e565b5b5062000c2f565b5060208310610133831016604e8410600b841016171562000c005782820a90508381111562000bfa5762000bf962000d1e565b5b62000c2f565b62000c0f848484600162000a9e565b9250905081840481111562000c295762000c2862000d1e565b5b81810290505b9392505050565b600062000c438262000ccb565b915062000c508362000ccb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c8c5762000c8b62000d1e565b5b828202905092915050565b600062000ca48262000cab565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600062000cef8262000cf6565b9050919050565b600062000d038262000d0a565b9050919050565b600062000d178262000cab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b60008160011c9050919050565b62000d6a8162000c97565b811462000d7657600080fd5b50565b613b2e8062000d896000396000f3fe6080604052600436106102135760003560e01c806369fe0e2d11610118578063bf56b371116100a0578063f0fc6bca1161006f578063f0fc6bca146107e6578063f2fde38b146107fd578063f429389014610826578063f708a64f1461083d578063f887ea40146108665761021a565b8063bf56b3711461073e578063c9567bf914610769578063dd62ed3e14610780578063f0f44260146107bd5761021a565b8063893d20e8116100e7578063893d20e8146106435780638ecc37fb1461066e57806395d89b41146106ab578063a8aa1b31146106d6578063a9059cbb146107015761021a565b806369fe0e2d1461058757806370a08231146105b0578063736a83a1146105ed57806375f0a874146106185761021a565b8063342aa8b51161019b5780635cc33f741161016a5780635cc33f74146104a25780635d098b38146104df57806361d027b314610508578063658d4b7f1461053357806367ee5f091461055c5761021a565b8063342aa8b5146103e85780633e07ce5b14610411578063416501c814610428578063571ac8b0146104655761021a565b806323b63585116101e257806323b63585146102db57806323b872dd146103185780632b112e49146103555780632f54bf6e14610380578063313ce567146103bd5761021a565b806306fdde031461021f578063095ea7b31461024a57806315f7e05e1461028757806318160ddd146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610891565b6040516102419190613495565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c91906130f7565b6108ce565b60405161027e919061345f565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612fca565b6109c0565b005b3480156102bc57600080fd5b506102c5610a98565b6040516102d29190613597565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613137565b610aa2565b60405161030f919061345f565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613064565b610b20565b60405161034c919061345f565b60405180910390f35b34801561036157600080fd5b5061036a610d20565b6040516103779190613597565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612fca565b610da2565b6040516103b4919061345f565b60405180910390f35b3480156103c957600080fd5b506103d2610dfb565b6040516103df919061360c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a91906130b7565b610e04565b005b34801561041d57600080fd5b50610426610eb1565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612fca565b610f16565b60405161045c919061345f565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190612fca565b610fb4565b604051610499919061345f565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190612fca565b610fe7565b6040516104d69190613597565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190612fca565b61109b565b005b34801561051457600080fd5b5061051d611127565b60405161052a91906133f2565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906130b7565b61114d565b005b34801561056857600080fd5b506105716111f0565b60405161057e9190613597565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613137565b611297565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190612fca565b61132d565b6040516105e49190613597565b60405180910390f35b3480156105f957600080fd5b50610602611376565b60405161060f9190613597565b60405180910390f35b34801561062457600080fd5b5061062d61141d565b60405161063a91906133f2565b60405180910390f35b34801561064f57600080fd5b50610658611443565b60405161066591906133bc565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190612fca565b61146c565b6040516106a29190613597565b60405180910390f35b3480156106b757600080fd5b506106c0611520565b6040516106cd9190613495565b60405180910390f35b3480156106e257600080fd5b506106eb61155d565b6040516106f891906133bc565b60405180910390f35b34801561070d57600080fd5b50610728600480360381019061072391906130f7565b611583565b604051610735919061345f565b60405180910390f35b34801561074a57600080fd5b50610753611598565b6040516107609190613597565b60405180910390f35b34801561077557600080fd5b5061077e61159e565b005b34801561078c57600080fd5b506107a760048036038101906107a29190613024565b61160a565b6040516107b49190613597565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190612fca565b611691565b005b3480156107f257600080fd5b506107fb6117aa565b005b34801561080957600080fd5b50610824600480360381019061081f9190612ff7565b611839565b005b34801561083257600080fd5b5061083b6118fb565b005b34801561084957600080fd5b50610864600480360381019061085f91906130b7565b6119b4565b005b34801561087257600080fd5b5061087b611a0a565b604051610888919061347a565b60405180910390f35b60606040518060400160405280600d81526020017f4355504845414420746f6b656e00000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ae9190613597565b60405180910390a36001905092915050565b6109c933610da2565b610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff906134b7565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610a6391906133bc565b600060405180830381600087803b158015610a7d57600080fd5b505af1158015610a91573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610aad33610da2565b610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae3906134b7565b60405180910390fd5b610b1930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a30565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d0c57610c8b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d17848484611c67565b90509392505050565b6000610d9d610d50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661132d565b610d8f610d7e600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661132d565b6004546125ab90919063ffffffff16565b6125ab90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610e0d33610da2565b610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906134b7565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ead82826125f5565b5050565b610eba33610da2565b610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef0906134b7565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b6000610f2133610da2565b610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f57906134b7565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610fe0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ce565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b815260040161104491906133bc565b60206040518083038186803b15801561105c57600080fd5b505afa158015611070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110949190613164565b9050919050565b6110a433610da2565b6110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906134b7565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61115633610da2565b611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c906134b7565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112929190613164565b905090565b6112a033610da2565b6112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d6906134b7565b60405180910390fd5b605f811115611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90613577565b60405180910390fd5b80600b8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e057600080fd5b505afa1580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114189190613164565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016114c991906133bc565b60206040518083038186803b1580156114e157600080fd5b505afa1580156114f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115199190613164565b9050919050565b60606040518060400160405280600781526020017f4355504845414400000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611590338484611c67565b905092915050565b60115481565b6115a733610da2565b6115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd906134b7565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61169a33610da2565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906134b7565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b815260040161177591906133bc565b600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161180591906133bc565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b50505050565b61184233610da2565b611881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611878906134b7565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118f091906133d7565b60405180910390a150565b61190433610da2565b611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906134b7565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b0573d6000803e3d6000fd5b5050565b6119bd33610da2565b6119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f3906134b7565b60405180910390fd5b611a0682826125f5565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611abb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bf09190613597565b60405180910390a3600190509392505050565b6000838311158290611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c429190613495565b60405180910390fd5b5060008385611c5a919061375d565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d12575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d6757601260009054906101000a900460ff16611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d90613557565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e0b5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906134d7565b60405180910390fd5b601260019054906101000a900460ff1615611f535760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f07575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5257601354821115611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4890613517565b60405180910390fd5b5b5b6001601154611f62919061367c565b4311612019576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff161561203e57612037848484611a30565b90506125a4565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120a5575060006120a33061132d565b115b905080156120b6576120b56128ab565b5b61213f836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061218e8686612b98565b61219857836121a3565b6121a28685612cf5565b5b90506121f781600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122e25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123b957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612383929190613436565b600060405180830381600087803b15801561239d57600080fd5b505af19250505080156123ae575060015b6123b7576123b8565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156124615750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253857601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612502929190613436565b600060405180830381600087803b15801561251c57600080fd5b505af192505050801561252d575060015b61253657612537565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125959190613597565b60405180910390a36001925050505b9392505050565b60006125ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c03565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561267f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61268857600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561277a57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161274392919061340d565b600060405180830381600087803b15801561275d57600080fd5b505af1158015612771573d6000803e3d6000fd5b50505050612849565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612816929190613436565b600060405180830381600087803b15801561283057600080fd5b505af1158015612844573d6000803e3d6000fd5b505050505b5050565b600080828461285c919061367c565b9050838110156128a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612898906134f7565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff02191690831515021790555060006128d03061132d565b90506000600267ffffffffffffffff8111156128ef576128ee613912565b5b60405190808252806020026020018201604052801561291d5781602001602082028036833780820191505090505b5090503081600081518110612935576129346138e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129a6576129a56138e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a449594939291906135b2565b600060405180830381600087803b158015612a5e57600080fd5b505af1158015612a72573d6000803e3d6000fd5b505050506000612a8c600247612e3990919063ffffffff16565b90506000612aa4600247612e3990919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b0e573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612b77573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c3b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612ced5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612cec5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612d21600c54612d13600b5486612e8390919063ffffffff16565b612e3990919063ffffffff16565b9050612d7581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e159190613597565b60405180910390a3612e3081846125ab90919063ffffffff16565b91505092915050565b6000612e7b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612efe565b905092915050565b600080831415612e965760009050612ef8565b60008284612ea49190613703565b9050828482612eb391906136d2565b14612ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eea90613537565b60405180910390fd5b809150505b92915050565b60008083118290612f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3c9190613495565b60405180910390fd5b5060008385612f5491906136d2565b9050809150509392505050565b600081359050612f7081613a9c565b92915050565b600081359050612f8581613ab3565b92915050565b600081359050612f9a81613aca565b92915050565b600081359050612faf81613ae1565b92915050565b600081519050612fc481613ae1565b92915050565b600060208284031215612fe057612fdf613941565b5b6000612fee84828501612f61565b91505092915050565b60006020828403121561300d5761300c613941565b5b600061301b84828501612f76565b91505092915050565b6000806040838503121561303b5761303a613941565b5b600061304985828601612f61565b925050602061305a85828601612f61565b9150509250929050565b60008060006060848603121561307d5761307c613941565b5b600061308b86828701612f61565b935050602061309c86828701612f61565b92505060406130ad86828701612fa0565b9150509250925092565b600080604083850312156130ce576130cd613941565b5b60006130dc85828601612f61565b92505060206130ed85828601612f8b565b9150509250929050565b6000806040838503121561310e5761310d613941565b5b600061311c85828601612f61565b925050602061312d85828601612fa0565b9150509250929050565b60006020828403121561314d5761314c613941565b5b600061315b84828501612fa0565b91505092915050565b60006020828403121561317a57613179613941565b5b600061318884828501612fb5565b91505092915050565b600061319d83836131c7565b60208301905092915050565b6131b2816137f8565b82525050565b6131c1816137a3565b82525050565b6131d081613791565b82525050565b6131df81613791565b82525050565b60006131f082613637565b6131fa818561365a565b935061320583613627565b8060005b8381101561323657815161321d8882613191565b97506132288361364d565b925050600181019050613209565b5085935050505092915050565b61324c816137b5565b82525050565b61325b8161380a565b82525050565b61326a8161381c565b82525050565b600061327b82613642565b613285818561366b565b9350613295818560208601613852565b61329e81613946565b840191505092915050565b60006132b660068361366b565b91506132c182613957565b602082019050919050565b60006132d960088361366b565b91506132e482613980565b602082019050919050565b60006132fc601b8361366b565b9150613307826139a9565b602082019050919050565b600061331f600c8361366b565b915061332a826139d2565b602082019050919050565b600061334260218361366b565b915061334d826139fb565b604082019050919050565b600061336560188361366b565b915061337082613a4a565b602082019050919050565b600061338860148361366b565b915061339382613a73565b602082019050919050565b6133a7816137e1565b82525050565b6133b6816137eb565b82525050565b60006020820190506133d160008301846131d6565b92915050565b60006020820190506133ec60008301846131a9565b92915050565b600060208201905061340760008301846131b8565b92915050565b600060408201905061342260008301856131d6565b61342f6020830184613261565b9392505050565b600060408201905061344b60008301856131d6565b613458602083018461339e565b9392505050565b60006020820190506134746000830184613243565b92915050565b600060208201905061348f6000830184613252565b92915050565b600060208201905081810360008301526134af8184613270565b905092915050565b600060208201905081810360008301526134d0816132a9565b9050919050565b600060208201905081810360008301526134f0816132cc565b9050919050565b60006020820190508181036000830152613510816132ef565b9050919050565b6000602082019050818103600083015261353081613312565b9050919050565b6000602082019050818103600083015261355081613335565b9050919050565b6000602082019050818103600083015261357081613358565b9050919050565b600060208201905081810360008301526135908161337b565b9050919050565b60006020820190506135ac600083018461339e565b92915050565b600060a0820190506135c7600083018861339e565b6135d46020830187613261565b81810360408301526135e681866131e5565b90506135f560608301856131d6565b613602608083018461339e565b9695505050505050565b600060208201905061362160008301846133ad565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613687826137e1565b9150613692836137e1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136c7576136c6613885565b5b828201905092915050565b60006136dd826137e1565b91506136e8836137e1565b9250826136f8576136f76138b4565b5b828204905092915050565b600061370e826137e1565b9150613719836137e1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561375257613751613885565b5b828202905092915050565b6000613768826137e1565b9150613773836137e1565b92508282101561378657613785613885565b5b828203905092915050565b600061379c826137c1565b9050919050565b60006137ae826137c1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006138038261382e565b9050919050565b60006138158261382e565b9050919050565b6000613827826137e1565b9050919050565b600061383982613840565b9050919050565b600061384b826137c1565b9050919050565b60005b83811015613870578082015181840152602081019050613855565b8381111561387f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f4665652063616e27742065786365656420313025000000000000000000000000600082015250565b613aa581613791565b8114613ab057600080fd5b50565b613abc816137a3565b8114613ac757600080fd5b50565b613ad3816137b5565b8114613ade57600080fd5b50565b613aea816137e1565b8114613af557600080fd5b5056fea2646970667358221220768cb7648ac9f2f0a022be3778acc58b8d1fab87df03b5df62cde89ca9e87cbb64736f6c6343000807003360806040526ec097ce7bc90715b34b9f1000000000600a553480156200002457600080fd5b50604051620019e4380380620019e483398181016040528101906200004a91906200012b565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620001c5565b6000815190506200012581620001ab565b92915050565b60008060408385031215620001455762000144620001a6565b5b6000620001558582860162000114565b9250506020620001688582860162000114565b9150509250929050565b60006200017f8262000186565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001b68162000172565b8114620001c257600080fd5b50565b61180f80620001d56000396000f3fe6080604052600436106100e85760003560e01c8063b2bdfa7b1161008a578063e2d2e21911610059578063e2d2e219146102d7578063e319a3d914610302578063ecd0c0c31461032d578063f0f4426014610358576100e8565b8063b2bdfa7b14610238578063ce7c2ac214610263578063d0e30db0146102a2578063d54ad2a1146102ac576100e8565b80633a98ef39116100c65780633a98ef39146101685780635cc33f74146101935780638ecc37fb146101d0578063997664d71461020d576100e8565b80631014edf5146100ed57806314b6ca961461011657806315f7e05e1461013f575b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112a9565b610381565b005b34801561012257600080fd5b5061013d60048036038101906101389190611269565b61043b565b005b34801561014b57600080fd5b506101666004803603810190610161919061123c565b6106fa565b005b34801561017457600080fd5b5061017d61075e565b60405161018a9190611446565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b5919061123c565b610764565b6040516101c79190611446565b60405180910390f35b3480156101dc57600080fd5b506101f760048036038101906101f2919061123c565b610834565b6040516102049190611446565b60405180910390f35b34801561021957600080fd5b5061022261094e565b60405161022f9190611446565b60405180910390f35b34801561024457600080fd5b5061024d610954565b60405161025a91906113a9565b60405180910390f35b34801561026f57600080fd5b5061028a6004803603810190610285919061123c565b61097a565b60405161029993929190611461565b60405180910390f35b6102aa6109a4565b005b3480156102b857600080fd5b506102c1610a0a565b6040516102ce9190611446565b60405180910390f35b3480156102e357600080fd5b506102ec610a10565b6040516102f99190611446565b60405180910390f35b34801561030e57600080fd5b50610317610a16565b60405161032491906113a9565b60405180910390f35b34801561033957600080fd5b50610342610a3c565b60405161034f91906113a9565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a919061123c565b610a60565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103db57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60008511610408578261040a565b845b9081150290604051600060405180830381858888f19350505050158015610435573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049357600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104e8576104e782610afc565b5b60008111801561053a57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561054d5761054882610cf6565b6105af565b60008114801561059f57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105ae576105ad82610da5565b5b5b6106188161060a600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600654610fac90919063ffffffff16565b610ff690919063ffffffff16565b60068190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106b0600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075257600080fd5b61075b81610afc565b50565b60065481565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190611406565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156108895760009050610949565b60006108d6600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b90506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161093157600092505050610949565b6109448183610fac90919063ffffffff16565b925050505b919050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b60003490506109be81600754610ff690919063ffffffff16565b600781905550610a016109f06006546109e284600a5461108690919063ffffffff16565b61110190919063ffffffff16565b600954610ff690919063ffffffff16565b60098190555050565b60085481565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab857600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610b4c57610cf3565b6000610b5782610834565b90506000811115610cf157610b7781600854610ff690919063ffffffff16565b600881905550610bd281600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ff690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c63600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cef573d6000803e3d6000fd5b505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036001600380549050610db99190611595565b81548110610dca57610dc96116c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e4857610e476116c5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050610ee89190611595565b81548110610ef957610ef86116c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003805480610f7457610f73611696565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610fee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061114b565b905092915050565b600080828461100591906114b4565b90508381101561104a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611041906113e6565b60405180910390fd5b8091505092915050565b600061107f600a546110716009548561108690919063ffffffff16565b61110190919063ffffffff16565b9050919050565b60008083141561109957600090506110fb565b600082846110a7919061153b565b90508284826110b6919061150a565b146110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ed90611426565b60405180910390fd5b809150505b92915050565b600061114383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111af565b905092915050565b6000838311158290611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a91906113c4565b60405180910390fd5b50600083856111a29190611595565b9050809150509392505050565b600080831182906111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed91906113c4565b60405180910390fd5b5060008385611205919061150a565b9050809150509392505050565b600081359050611221816117ab565b92915050565b600081359050611236816117c2565b92915050565b600060208284031215611252576112516116f4565b5b600061126084828501611212565b91505092915050565b600080604083850312156112805761127f6116f4565b5b600061128e85828601611212565b925050602061129f85828601611227565b9150509250929050565b600080604083850312156112c0576112bf6116f4565b5b60006112ce85828601611227565b92505060206112df85828601611212565b9150509250929050565b6112f2816115c9565b82525050565b600061130382611498565b61130d81856114a3565b935061131d818560208601611605565b611326816116f9565b840191505092915050565b600061133e601b836114a3565b91506113498261170a565b602082019050919050565b6000611361601d836114a3565b915061136c82611733565b602082019050919050565b60006113846021836114a3565b915061138f8261175c565b604082019050919050565b6113a3816115fb565b82525050565b60006020820190506113be60008301846112e9565b92915050565b600060208201905081810360008301526113de81846112f8565b905092915050565b600060208201905081810360008301526113ff81611331565b9050919050565b6000602082019050818103600083015261141f81611354565b9050919050565b6000602082019050818103600083015261143f81611377565b9050919050565b600060208201905061145b600083018461139a565b92915050565b6000606082019050611476600083018661139a565b611483602083018561139a565b611490604083018461139a565b949350505050565b600081519050919050565b600082825260208201905092915050565b60006114bf826115fb565b91506114ca836115fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114ff576114fe611638565b5b828201905092915050565b6000611515826115fb565b9150611520836115fb565b9250826115305761152f611667565b5b828204905092915050565b6000611546826115fb565b9150611551836115fb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561158a57611589611638565b5b828202905092915050565b60006115a0826115fb565b91506115ab836115fb565b9250828210156115be576115bd611638565b5b828203905092915050565b60006115d4826115db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611623578082015181840152602081019050611608565b83811115611632576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f596f75277265206e6f74206120424c43207368617265686f6c64657221000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6117b4816115c9565b81146117bf57600080fd5b50565b6117cb816115fb565b81146117d657600080fd5b5056fea26469706673582212206a6c31359a1d4a2e96ca097015645a0cffa35170cac85279b74eddeb5d64365164736f6c6343000807003300000000000000000000000026052e2b8d3f3e8e245fc62cda69809938bb5d0d
Deployed Bytecode
0x6080604052600436106102135760003560e01c806369fe0e2d11610118578063bf56b371116100a0578063f0fc6bca1161006f578063f0fc6bca146107e6578063f2fde38b146107fd578063f429389014610826578063f708a64f1461083d578063f887ea40146108665761021a565b8063bf56b3711461073e578063c9567bf914610769578063dd62ed3e14610780578063f0f44260146107bd5761021a565b8063893d20e8116100e7578063893d20e8146106435780638ecc37fb1461066e57806395d89b41146106ab578063a8aa1b31146106d6578063a9059cbb146107015761021a565b806369fe0e2d1461058757806370a08231146105b0578063736a83a1146105ed57806375f0a874146106185761021a565b8063342aa8b51161019b5780635cc33f741161016a5780635cc33f74146104a25780635d098b38146104df57806361d027b314610508578063658d4b7f1461053357806367ee5f091461055c5761021a565b8063342aa8b5146103e85780633e07ce5b14610411578063416501c814610428578063571ac8b0146104655761021a565b806323b63585116101e257806323b63585146102db57806323b872dd146103185780632b112e49146103555780632f54bf6e14610380578063313ce567146103bd5761021a565b806306fdde031461021f578063095ea7b31461024a57806315f7e05e1461028757806318160ddd146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610891565b6040516102419190613495565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c91906130f7565b6108ce565b60405161027e919061345f565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190612fca565b6109c0565b005b3480156102bc57600080fd5b506102c5610a98565b6040516102d29190613597565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613137565b610aa2565b60405161030f919061345f565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613064565b610b20565b60405161034c919061345f565b60405180910390f35b34801561036157600080fd5b5061036a610d20565b6040516103779190613597565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612fca565b610da2565b6040516103b4919061345f565b60405180910390f35b3480156103c957600080fd5b506103d2610dfb565b6040516103df919061360c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a91906130b7565b610e04565b005b34801561041d57600080fd5b50610426610eb1565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612fca565b610f16565b60405161045c919061345f565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190612fca565b610fb4565b604051610499919061345f565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190612fca565b610fe7565b6040516104d69190613597565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190612fca565b61109b565b005b34801561051457600080fd5b5061051d611127565b60405161052a91906133f2565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906130b7565b61114d565b005b34801561056857600080fd5b506105716111f0565b60405161057e9190613597565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613137565b611297565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190612fca565b61132d565b6040516105e49190613597565b60405180910390f35b3480156105f957600080fd5b50610602611376565b60405161060f9190613597565b60405180910390f35b34801561062457600080fd5b5061062d61141d565b60405161063a91906133f2565b60405180910390f35b34801561064f57600080fd5b50610658611443565b60405161066591906133bc565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190612fca565b61146c565b6040516106a29190613597565b60405180910390f35b3480156106b757600080fd5b506106c0611520565b6040516106cd9190613495565b60405180910390f35b3480156106e257600080fd5b506106eb61155d565b6040516106f891906133bc565b60405180910390f35b34801561070d57600080fd5b50610728600480360381019061072391906130f7565b611583565b604051610735919061345f565b60405180910390f35b34801561074a57600080fd5b50610753611598565b6040516107609190613597565b60405180910390f35b34801561077557600080fd5b5061077e61159e565b005b34801561078c57600080fd5b506107a760048036038101906107a29190613024565b61160a565b6040516107b49190613597565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190612fca565b611691565b005b3480156107f257600080fd5b506107fb6117aa565b005b34801561080957600080fd5b50610824600480360381019061081f9190612ff7565b611839565b005b34801561083257600080fd5b5061083b6118fb565b005b34801561084957600080fd5b50610864600480360381019061085f91906130b7565b6119b4565b005b34801561087257600080fd5b5061087b611a0a565b604051610888919061347a565b60405180910390f35b60606040518060400160405280600d81526020017f4355504845414420746f6b656e00000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ae9190613597565b60405180910390a36001905092915050565b6109c933610da2565b610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff906134b7565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610a6391906133bc565b600060405180830381600087803b158015610a7d57600080fd5b505af1158015610a91573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610aad33610da2565b610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae3906134b7565b60405180910390fd5b610b1930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a30565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d0c57610c8b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d17848484611c67565b90509392505050565b6000610d9d610d50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661132d565b610d8f610d7e600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661132d565b6004546125ab90919063ffffffff16565b6125ab90919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610e0d33610da2565b610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906134b7565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ead82826125f5565b5050565b610eba33610da2565b610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef0906134b7565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b6000610f2133610da2565b610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f57906134b7565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610fe0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ce565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b815260040161104491906133bc565b60206040518083038186803b15801561105c57600080fd5b505afa158015611070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110949190613164565b9050919050565b6110a433610da2565b6110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906134b7565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61115633610da2565b611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c906134b7565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112929190613164565b905090565b6112a033610da2565b6112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d6906134b7565b60405180910390fd5b605f811115611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90613577565b60405180910390fd5b80600b8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e057600080fd5b505afa1580156113f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114189190613164565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016114c991906133bc565b60206040518083038186803b1580156114e157600080fd5b505afa1580156114f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115199190613164565b9050919050565b60606040518060400160405280600781526020017f4355504845414400000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611590338484611c67565b905092915050565b60115481565b6115a733610da2565b6115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd906134b7565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61169a33610da2565b6116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906134b7565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b815260040161177591906133bc565b600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161180591906133bc565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b50505050565b61184233610da2565b611881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611878906134b7565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118f091906133d7565b60405180910390a150565b61190433610da2565b611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a906134b7565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b0573d6000803e3d6000fd5b5050565b6119bd33610da2565b6119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f3906134b7565b60405180910390fd5b611a0682826125f5565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611abb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bf09190613597565b60405180910390a3600190509392505050565b6000838311158290611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c429190613495565b60405180910390fd5b5060008385611c5a919061375d565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d12575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d6757601260009054906101000a900460ff16611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d90613557565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e0b5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906134d7565b60405180910390fd5b601260019054906101000a900460ff1615611f535760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f07575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5257601354821115611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4890613517565b60405180910390fd5b5b5b6001601154611f62919061367c565b4311612019576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff161561203e57612037848484611a30565b90506125a4565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120a5575060006120a33061132d565b115b905080156120b6576120b56128ab565b5b61213f836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c039092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061218e8686612b98565b61219857836121a3565b6121a28685612cf5565b5b90506121f781600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122e25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123b957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612383929190613436565b600060405180830381600087803b15801561239d57600080fd5b505af19250505080156123ae575060015b6123b7576123b8565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156124615750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253857601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612502929190613436565b600060405180830381600087803b15801561251c57600080fd5b505af192505050801561252d575060015b61253657612537565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125959190613597565b60405180910390a36001925050505b9392505050565b60006125ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c03565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561267f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61268857600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561277a57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161274392919061340d565b600060405180830381600087803b15801561275d57600080fd5b505af1158015612771573d6000803e3d6000fd5b50505050612849565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612816929190613436565b600060405180830381600087803b15801561283057600080fd5b505af1158015612844573d6000803e3d6000fd5b505050505b5050565b600080828461285c919061367c565b9050838110156128a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612898906134f7565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff02191690831515021790555060006128d03061132d565b90506000600267ffffffffffffffff8111156128ef576128ee613912565b5b60405190808252806020026020018201604052801561291d5781602001602082028036833780820191505090505b5090503081600081518110612935576129346138e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106129a6576129a56138e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a449594939291906135b2565b600060405180830381600087803b158015612a5e57600080fd5b505af1158015612a72573d6000803e3d6000fd5b505050506000612a8c600247612e3990919063ffffffff16565b90506000612aa4600247612e3990919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612b0e573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612b77573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c3b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612ced5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612cec5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612d21600c54612d13600b5486612e8390919063ffffffff16565b612e3990919063ffffffff16565b9050612d7581600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284d90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e159190613597565b60405180910390a3612e3081846125ab90919063ffffffff16565b91505092915050565b6000612e7b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612efe565b905092915050565b600080831415612e965760009050612ef8565b60008284612ea49190613703565b9050828482612eb391906136d2565b14612ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eea90613537565b60405180910390fd5b809150505b92915050565b60008083118290612f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3c9190613495565b60405180910390fd5b5060008385612f5491906136d2565b9050809150509392505050565b600081359050612f7081613a9c565b92915050565b600081359050612f8581613ab3565b92915050565b600081359050612f9a81613aca565b92915050565b600081359050612faf81613ae1565b92915050565b600081519050612fc481613ae1565b92915050565b600060208284031215612fe057612fdf613941565b5b6000612fee84828501612f61565b91505092915050565b60006020828403121561300d5761300c613941565b5b600061301b84828501612f76565b91505092915050565b6000806040838503121561303b5761303a613941565b5b600061304985828601612f61565b925050602061305a85828601612f61565b9150509250929050565b60008060006060848603121561307d5761307c613941565b5b600061308b86828701612f61565b935050602061309c86828701612f61565b92505060406130ad86828701612fa0565b9150509250925092565b600080604083850312156130ce576130cd613941565b5b60006130dc85828601612f61565b92505060206130ed85828601612f8b565b9150509250929050565b6000806040838503121561310e5761310d613941565b5b600061311c85828601612f61565b925050602061312d85828601612fa0565b9150509250929050565b60006020828403121561314d5761314c613941565b5b600061315b84828501612fa0565b91505092915050565b60006020828403121561317a57613179613941565b5b600061318884828501612fb5565b91505092915050565b600061319d83836131c7565b60208301905092915050565b6131b2816137f8565b82525050565b6131c1816137a3565b82525050565b6131d081613791565b82525050565b6131df81613791565b82525050565b60006131f082613637565b6131fa818561365a565b935061320583613627565b8060005b8381101561323657815161321d8882613191565b97506132288361364d565b925050600181019050613209565b5085935050505092915050565b61324c816137b5565b82525050565b61325b8161380a565b82525050565b61326a8161381c565b82525050565b600061327b82613642565b613285818561366b565b9350613295818560208601613852565b61329e81613946565b840191505092915050565b60006132b660068361366b565b91506132c182613957565b602082019050919050565b60006132d960088361366b565b91506132e482613980565b602082019050919050565b60006132fc601b8361366b565b9150613307826139a9565b602082019050919050565b600061331f600c8361366b565b915061332a826139d2565b602082019050919050565b600061334260218361366b565b915061334d826139fb565b604082019050919050565b600061336560188361366b565b915061337082613a4a565b602082019050919050565b600061338860148361366b565b915061339382613a73565b602082019050919050565b6133a7816137e1565b82525050565b6133b6816137eb565b82525050565b60006020820190506133d160008301846131d6565b92915050565b60006020820190506133ec60008301846131a9565b92915050565b600060208201905061340760008301846131b8565b92915050565b600060408201905061342260008301856131d6565b61342f6020830184613261565b9392505050565b600060408201905061344b60008301856131d6565b613458602083018461339e565b9392505050565b60006020820190506134746000830184613243565b92915050565b600060208201905061348f6000830184613252565b92915050565b600060208201905081810360008301526134af8184613270565b905092915050565b600060208201905081810360008301526134d0816132a9565b9050919050565b600060208201905081810360008301526134f0816132cc565b9050919050565b60006020820190508181036000830152613510816132ef565b9050919050565b6000602082019050818103600083015261353081613312565b9050919050565b6000602082019050818103600083015261355081613335565b9050919050565b6000602082019050818103600083015261357081613358565b9050919050565b600060208201905081810360008301526135908161337b565b9050919050565b60006020820190506135ac600083018461339e565b92915050565b600060a0820190506135c7600083018861339e565b6135d46020830187613261565b81810360408301526135e681866131e5565b90506135f560608301856131d6565b613602608083018461339e565b9695505050505050565b600060208201905061362160008301846133ad565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613687826137e1565b9150613692836137e1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136c7576136c6613885565b5b828201905092915050565b60006136dd826137e1565b91506136e8836137e1565b9250826136f8576136f76138b4565b5b828204905092915050565b600061370e826137e1565b9150613719836137e1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561375257613751613885565b5b828202905092915050565b6000613768826137e1565b9150613773836137e1565b92508282101561378657613785613885565b5b828203905092915050565b600061379c826137c1565b9050919050565b60006137ae826137c1565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006138038261382e565b9050919050565b60006138158261382e565b9050919050565b6000613827826137e1565b9050919050565b600061383982613840565b9050919050565b600061384b826137c1565b9050919050565b60005b83811015613870578082015181840152602081019050613855565b8381111561387f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b7f4665652063616e27742065786365656420313025000000000000000000000000600082015250565b613aa581613791565b8114613ab057600080fd5b50565b613abc816137a3565b8114613ac757600080fd5b50565b613ad3816137b5565b8114613ade57600080fd5b50565b613aea816137e1565b8114613af557600080fd5b5056fea2646970667358221220768cb7648ac9f2f0a022be3778acc58b8d1fab87df03b5df62cde89ca9e87cbb64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000026052e2b8d3f3e8e245fc62cda69809938bb5d0d
-----Decoded View---------------
Arg [0] : _owner (address): 0x26052E2B8d3f3E8e245fC62CDA69809938bB5D0d
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000026052e2b8d3f3e8e245fc62cda69809938bb5d0d
Deployed Bytecode Sourcemap
9452:9928:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12088:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12510:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17991:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11818:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18281:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13028:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18432:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2834:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11912:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16647:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19297:80;;;;;;;;;;;;;:::i;:::-;;16817:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12734:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19132:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18582:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10471:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17429:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18885:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17556:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12258:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19012:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10372:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12174:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18113:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11998:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10596:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12864:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10624:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16512:115;;;;;;;;;;;;;:::i;:::-;;12369:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18725:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17889:90;;;;;;;;;;;;;:::i;:::-;;3062:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17707:174;;;;;;;;;;;;;:::i;:::-;;17289:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10565:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12088:80;12136:13;12160:5;;;;;;;;;;;;;;;;;12153:12;;12088:80;:::o;12510:216::-;12585:4;12637:6;12602:11;:23;12614:10;12602:23;;;;;;;;;;;;;;;:32;12626:7;12602:32;;;;;;;;;;;;;;;:41;;;;12680:7;12659:37;;12668:10;12659:37;;;12689:6;12659:37;;;;;;:::i;:::-;;;;;;;;12714:4;12707:11;;12510:216;;;;:::o;17991:110::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18060:11:::1;;;;;;;;;;;:25;;;18086:6;18060:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17991:110:::0;:::o;11818:88::-;11873:7;11891:12;;11884:19;;11818:88;:::o;18281:139::-;18345:4;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18369:43:::1;18392:4;18399;;;;;;;;;;;18405:6;18369:14;:43::i;:::-;18362:50;;18281:139:::0;;;:::o;13028:370::-;13128:4;13183:17;13148:11;:19;13160:6;13148:19;;;;;;;;;;;;;;;:31;13168:10;13148:31;;;;;;;;;;;;;;;;:52;13145:186;;13250:69;13286:6;13250:69;;;;;;;;;;;;;;;;;:11;:19;13262:6;13250:19;;;;;;;;;;;;;;;:31;13270:10;13250:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;13216:11;:19;13228:6;13216:19;;;;;;;;;;;;;;;:31;13236:10;13216:31;;;;;;;;;;;;;;;:103;;;;13145:186;13350:40;13364:6;13372:9;13383:6;13350:13;:40::i;:::-;13343:47;;13028:370;;;;;:::o;18432:142::-;18485:7;18512:54;18550:15;18560:4;;;;;;;;;;;18550:9;:15::i;:::-;18512:33;18529:15;18539:4;;;;;;;;;;;18529:9;:15::i;:::-;18512:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;18505:61;;18432:142;:::o;2834:103::-;2889:4;2924:5;;;;;;;;;;;2913:16;;:7;:16;;;2906:23;;2834:103;;;:::o;11912:80::-;11964:5;9845:1;11973:16;;11912:80;:::o;16647:158::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16742:6:::1;16724:5;:15;16730:8;16724:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;16759:38;16780:8;16790:6;16759:20;:38::i;:::-;16647:158:::0;;:::o;19297:80::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19364:5:::1;19353:8;;:16;;;;;;;;;;;;;;;;;;19297:80::o:0;16817:115::-;16885:4;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16909:5:::1;:15;16915:8;16909:15;;;;;;;;;;;;;;;;;;;;;;;;;16902:22;;16817:115:::0;;;:::o;12734:122::-;12789:4;12813:35;12821:7;12830:17;12813:7;:35::i;:::-;12806:42;;12734:122;;;:::o;19132:157::-;19208:7;19235:11;;;;;;;;;;;:33;;;19269:11;19235:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19228:53;;19132:157;;;:::o;18582:135::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18692:16:::1;18666:15;;:43;;;;;;;;;;;;;;;;;;18582:135:::0;:::o;10471:85::-;;;;;;;;;;;;;:::o;17429:119::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17534:6:::1;17512:11;:19;17524:6;17512:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17429:119:::0;;:::o;18885:115::-;18937:7;18964:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18957:35;;18885:115;:::o;17556:139::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17634:2:::1;17626:4;:10;;17617:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;17683:4;17672:8;:15;;;;17556:139:::0;:::o;12258:105::-;12324:7;12342:9;:18;12352:7;12342:18;;;;;;;;;;;;;;;;12335:25;;12258:105;;;:::o;19012:111::-;19062:7;19089:11;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19082:33;;19012:111;:::o;10372:92::-;;;;;;;;;;;;;:::o;12174:78::-;12226:7;12244:5;;;;;;;;;;;12237:12;;12174:78;:::o;18113:156::-;18187:7;18214:11;;;;;;;;;;;:34;;;18249:11;18214:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18207:54;;18113:156;;;:::o;11998:84::-;12048:13;12072:7;;;;;;;;;;;;;;;;;12065:14;;11998:84;:::o;10596:19::-;;;;;;;;;;;;;:::o;12864:156::-;12944:4;12968:44;12982:10;12994:9;13005:6;12968:13;:44::i;:::-;12961:51;;12864:156;;;;:::o;10624:25::-;;;;:::o;16512:115::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16578:12:::1;16565:10;:25;;;;16615:4;16601:11;;:18;;;;;;;;;;;;;;;;;;16512:115::o:0;12369:133::-;12453:7;12471:11;:19;12483:6;12471:19;;;;;;;;;;;;;;;:28;12491:7;12471:28;;;;;;;;;;;;;;;;12464:35;;12369:133;;;;:::o;18725:152::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18814:9:::1;18795:8;;:29;;;;;;;;;;;;;;;;;;18835:11;;;;;;;;;;;:23;;;18859:9;18835:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18725:152:::0;:::o;17889:90::-;17934:11;;;;;;;;;;;:25;;;17960:10;17934:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17889:90::o;3062:136::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3146:3:::1;3138:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3165:25;3186:3;3165:25;;;;;;:::i;:::-;;;;;;;;3062:136:::0;:::o;17707:174::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17759:26:::1;17788:21;17759:50;;17828:15;;;;;;;;;;;17820:33;;:53;17854:18;17820:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17748:133;17707:174::o:0;17289:132::-;2733:19;2741:10;2733:7;:19::i;:::-;2725:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17377:36:::1;17398:6;17406;17377:20;:36::i;:::-;17289:132:::0;;:::o;10565:24::-;;;;;;;;;;;;;:::o;14875:330::-;14968:4;15005:53;15027:6;15005:53;;;;;;;;;;;;;;;;;:9;:17;15015:6;15005:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14985:9;:17;14995:6;14985:17;;;;;;;;;;;;;;;:73;;;;15092:32;15117:6;15092:9;:20;15102:9;15092:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15069:9;:20;15079:9;15069:20;;;;;;;;;;;;;;;:55;;;;15157:9;15140:35;;15149:6;15140:35;;;15168:6;15140:35;;;;;;:::i;:::-;;;;;;;;15193:4;15186:11;;14875:330;;;;;:::o;496:192::-;582:7;615:1;610;:6;;618:12;602:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;642:9;658:1;654;:5;;;;:::i;:::-;642:17;;679:1;672:8;;;496:192;;;;;:::o;13406:1457::-;13498:4;13528:5;;;;;;;;;;;13519:14;;:6;:14;;;;:35;;;;;13549:5;;;;;;;;;;13537:17;;:9;:17;;;;13519:35;13515:89;;;13564:11;;;;;;;;;;;13556:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13515:89;13665:5;:13;13671:6;13665:13;;;;;;;;;;;;;;;;;;;;;;;;;13664:14;:35;;;;;13683:5;:16;13689:9;13683:16;;;;;;;;;;;;;;;;;;;;;;;;;13682:17;13664:35;13655:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13727:8;;;;;;;;;;;13723:130;;;13765:5;;;;;;;;;;13757:13;;:6;:13;;;;:34;;;;;13786:5;;;;;;;;;;13774:17;;:9;:17;;;;13757:34;13753:80;;;13810:6;;13802;:14;;13793:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13753:80;13723:130;13897:1;13884:10;;:14;;;;:::i;:::-;13867:12;:32;13863:139;;13936:4;13917:5;:16;13923:9;13917:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13985:4;13955:16;:27;13972:9;13955:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;13863:139;14024:6;;;;;;;;;;14021:63;;;14040:41;14055:6;14063:9;14074:6;14040:14;:41::i;:::-;14033:48;;;;14021:63;14106:19;14155:4;;;;;;;;;;;14144:15;;:9;:15;;;:47;;;;;14190:1;14163:24;14181:4;14163:9;:24::i;:::-;:28;14144:47;14106:86;;14206:14;14203:33;;;14223:10;:8;:10::i;:::-;14203:33;14268:53;14290:6;14268:53;;;;;;;;;;;;;;;;;:9;:17;14278:6;14268:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14248:9;:17;14258:6;14248:17;;;;;;;;;;;;;;;:73;;;;14334:22;14359:32;14373:6;14381:9;14359:13;:32::i;:::-;:67;;14420:6;14359:67;;;14394:23;14402:6;14410;14394:7;:23::i;:::-;14359:67;14334:92;;14470:40;14495:14;14470:9;:20;14480:9;14470:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14447:9;:20;14457:9;14447:20;;;;;;;;;;;;;;;:63;;;;14536:4;;;;;;;;;;;14526:14;;:6;:14;;;;:43;;;;;14545:16;:24;14562:6;14545:24;;;;;;;;;;;;;;;;;;;;;;;;;14544:25;14526:43;14523:114;;;14576:11;;;;;;;;;;;:20;;;14597:6;14605:9;:17;14615:6;14605:17;;;;;;;;;;;;;;;;14576:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14572:63;;;;;;14523:114;14663:4;;;;;;;;;;;14650:17;;:9;:17;;;;:49;;;;;14672:16;:27;14689:9;14672:27;;;;;;;;;;;;;;;;;;;;;;;;;14671:28;14650:49;14647:126;;;14706:11;;;;;;;;;;;:20;;;14727:9;14738;:20;14748:9;14738:20;;;;;;;;;;;;;;;;14706:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14702:69;;;;;;14647:126;14807:9;14790:43;;14799:6;14790:43;;;14818:14;14790:43;;;;;;:::i;:::-;;;;;;;;14851:4;14844:11;;;;13406:1457;;;;;;:::o;354:136::-;412:7;439:43;443:1;446;439:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;432:50;;354:136;;;;:::o;16944:337::-;17049:4;17031:23;;:6;:23;;;;:41;;;;;17068:4;;;;;;;;;;;17058:14;;:6;:14;;;;17031:41;17023:50;;;;;;17111:6;17084:16;:24;17101:6;17084:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17131:6;17128:146;;;17153:11;;;;;;;;;;;:20;;;17174:6;17182:1;17153:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17128:146;;;17215:11;;;;;;;;;;;:20;;;17236:6;17244:9;:17;17254:6;17244:17;;;;;;;;;;;;;;;;17215:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17128:146;16944:337;;:::o;164:181::-;222:7;242:9;258:1;254;:5;;;;:::i;:::-;242:17;;283:1;278;:6;;270:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;336:1;329:8;;;164:181;;;;:::o;15797:701::-;10910:4;10901:6;;:13;;;;;;;;;;;;;;;;;;15846:20:::1;15869:24;15887:4;15869:9;:24::i;:::-;15846:47;;15906:21;15944:1;15930:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15906:40;;15975:4;15957;15962:1;15957:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;16001:4;;;;;;;;;;;15991;15996:1;15991:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;16028:6;;;;;;;;;;;:57;;;16100:12;16127:1;16143:4;16170;16190:15;16028:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16237:22;16262:30;16290:1;16263:21;16262:27;;:30;;;;:::i;:::-;16237:55;;16303:23;16329:30;16357:1;16330:21;16329:27;;:30;;;;:::i;:::-;16303:56;;16395:15;;;;;;;;;;;16387:33;;:50;16421:15;16387:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16456:8;;;;;;;;;;;16448:26;;:42;16475:14;16448:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15835:663;;;;10928:5:::0;10919:6;;:14;;;;;;;;;;;;;;;;;;15797:701::o;15216:206::-;15297:4;15325:11;:19;15337:6;15325:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;15348:11;:22;15360:9;15348:22;;;;;;;;;;;;;;;;;;;;;;;;;15325:45;15323:48;:90;;;;;15387:4;;;;;;;;;;;15377:14;;:6;:14;;;:35;;;;15408:4;;;;;;;;;;;15395:17;;:9;:17;;;15377:35;15323:90;15314:101;;15216:206;;;;:::o;15430:354::-;15497:7;15517:17;15557:40;15582:14;;15557:20;15568:8;;15557:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;15545:52;;15635:39;15664:9;15635;:24;15653:4;15635:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15608:9;:24;15626:4;15608:24;;;;;;;;;;;;;;;:66;;;;15715:4;15690:42;;15699:6;15690:42;;;15722:9;15690:42;;;;;;:::i;:::-;;;;;;;;15755:21;15766:9;15755:6;:10;;:21;;;;:::i;:::-;15748:28;;;15430:354;;;;:::o;950:132::-;1008:7;1035:39;1039:1;1042;1035:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1028:46;;950:132;;;;:::o;694:250::-;752:7;781:1;776;:6;772:47;;;806:1;799:8;;;;772:47;831:9;847:1;843;:5;;;;:::i;:::-;831:17;;876:1;871;867;:5;;;;:::i;:::-;:10;859:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;935:1;928:8;;;694:250;;;;;:::o;1088:345::-;1174:7;1273:1;1269;:5;1276:12;1261:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1300:9;1316:1;1312;:5;;;;:::i;:::-;1300:17;;1424:1;1417:8;;;1088:345;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;152:155;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;313:133;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;452:139;;;;:::o;597:143::-;654:5;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;597:143;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:119;;;860:79;;:::i;:::-;822:119;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;746:329;;;;:::o;1081:345::-;1148:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:119;;;1203:79;;:::i;:::-;1165:119;1323:1;1348:61;1401:7;1392:6;1381:9;1377:22;1348:61;:::i;:::-;1338:71;;1294:125;1081:345;;;;:::o;1432:474::-;1500:6;1508;1557:2;1545:9;1536:7;1532:23;1528:32;1525:119;;;1563:79;;:::i;:::-;1525:119;1683:1;1708:53;1753:7;1744:6;1733:9;1729:22;1708:53;:::i;:::-;1698:63;;1654:117;1810:2;1836:53;1881:7;1872:6;1861:9;1857:22;1836:53;:::i;:::-;1826:63;;1781:118;1432:474;;;;;:::o;1912:619::-;1989:6;1997;2005;2054:2;2042:9;2033:7;2029:23;2025:32;2022:119;;;2060:79;;:::i;:::-;2022:119;2180:1;2205:53;2250:7;2241:6;2230:9;2226:22;2205:53;:::i;:::-;2195:63;;2151:117;2307:2;2333:53;2378:7;2369:6;2358:9;2354:22;2333:53;:::i;:::-;2323:63;;2278:118;2435:2;2461:53;2506:7;2497:6;2486:9;2482:22;2461:53;:::i;:::-;2451:63;;2406:118;1912:619;;;;;:::o;2537:468::-;2602:6;2610;2659:2;2647:9;2638:7;2634:23;2630:32;2627:119;;;2665:79;;:::i;:::-;2627:119;2785:1;2810:53;2855:7;2846:6;2835:9;2831:22;2810:53;:::i;:::-;2800:63;;2756:117;2912:2;2938:50;2980:7;2971:6;2960:9;2956:22;2938:50;:::i;:::-;2928:60;;2883:115;2537:468;;;;;:::o;3011:474::-;3079:6;3087;3136:2;3124:9;3115:7;3111:23;3107:32;3104:119;;;3142:79;;:::i;:::-;3104:119;3262:1;3287:53;3332:7;3323:6;3312:9;3308:22;3287:53;:::i;:::-;3277:63;;3233:117;3389:2;3415:53;3460:7;3451:6;3440:9;3436:22;3415:53;:::i;:::-;3405:63;;3360:118;3011:474;;;;;:::o;3491:329::-;3550:6;3599:2;3587:9;3578:7;3574:23;3570:32;3567:119;;;3605:79;;:::i;:::-;3567:119;3725:1;3750:53;3795:7;3786:6;3775:9;3771:22;3750:53;:::i;:::-;3740:63;;3696:117;3491:329;;;;:::o;3826:351::-;3896:6;3945:2;3933:9;3924:7;3920:23;3916:32;3913:119;;;3951:79;;:::i;:::-;3913:119;4071:1;4096:64;4152:7;4143:6;4132:9;4128:22;4096:64;:::i;:::-;4086:74;;4042:128;3826:351;;;;:::o;4183:179::-;4252:10;4273:46;4315:3;4307:6;4273:46;:::i;:::-;4351:4;4346:3;4342:14;4328:28;;4183:179;;;;:::o;4368:147::-;4463:45;4502:5;4463:45;:::i;:::-;4458:3;4451:58;4368:147;;:::o;4521:142::-;4624:32;4650:5;4624:32;:::i;:::-;4619:3;4612:45;4521:142;;:::o;4669:108::-;4746:24;4764:5;4746:24;:::i;:::-;4741:3;4734:37;4669:108;;:::o;4783:118::-;4870:24;4888:5;4870:24;:::i;:::-;4865:3;4858:37;4783:118;;:::o;4937:732::-;5056:3;5085:54;5133:5;5085:54;:::i;:::-;5155:86;5234:6;5229:3;5155:86;:::i;:::-;5148:93;;5265:56;5315:5;5265:56;:::i;:::-;5344:7;5375:1;5360:284;5385:6;5382:1;5379:13;5360:284;;;5461:6;5455:13;5488:63;5547:3;5532:13;5488:63;:::i;:::-;5481:70;;5574:60;5627:6;5574:60;:::i;:::-;5564:70;;5420:224;5407:1;5404;5400:9;5395:14;;5360:284;;;5364:14;5660:3;5653:10;;5061:608;;;4937:732;;;;:::o;5675:109::-;5756:21;5771:5;5756:21;:::i;:::-;5751:3;5744:34;5675:109;;:::o;5790:167::-;5895:55;5944:5;5895:55;:::i;:::-;5890:3;5883:68;5790:167;;:::o;5963:147::-;6058:45;6097:5;6058:45;:::i;:::-;6053:3;6046:58;5963:147;;:::o;6116:364::-;6204:3;6232:39;6265:5;6232:39;:::i;:::-;6287:71;6351:6;6346:3;6287:71;:::i;:::-;6280:78;;6367:52;6412:6;6407:3;6400:4;6393:5;6389:16;6367:52;:::i;:::-;6444:29;6466:6;6444:29;:::i;:::-;6439:3;6435:39;6428:46;;6208:272;6116:364;;;;:::o;6486:365::-;6628:3;6649:66;6713:1;6708:3;6649:66;:::i;:::-;6642:73;;6724:93;6813:3;6724:93;:::i;:::-;6842:2;6837:3;6833:12;6826:19;;6486:365;;;:::o;6857:::-;6999:3;7020:66;7084:1;7079:3;7020:66;:::i;:::-;7013:73;;7095:93;7184:3;7095:93;:::i;:::-;7213:2;7208:3;7204:12;7197:19;;6857:365;;;:::o;7228:366::-;7370:3;7391:67;7455:2;7450:3;7391:67;:::i;:::-;7384:74;;7467:93;7556:3;7467:93;:::i;:::-;7585:2;7580:3;7576:12;7569:19;;7228:366;;;:::o;7600:::-;7742:3;7763:67;7827:2;7822:3;7763:67;:::i;:::-;7756:74;;7839:93;7928:3;7839:93;:::i;:::-;7957:2;7952:3;7948:12;7941:19;;7600:366;;;:::o;7972:::-;8114:3;8135:67;8199:2;8194:3;8135:67;:::i;:::-;8128:74;;8211:93;8300:3;8211:93;:::i;:::-;8329:2;8324:3;8320:12;8313:19;;7972:366;;;:::o;8344:::-;8486:3;8507:67;8571:2;8566:3;8507:67;:::i;:::-;8500:74;;8583:93;8672:3;8583:93;:::i;:::-;8701:2;8696:3;8692:12;8685:19;;8344:366;;;:::o;8716:::-;8858:3;8879:67;8943:2;8938:3;8879:67;:::i;:::-;8872:74;;8955:93;9044:3;8955:93;:::i;:::-;9073:2;9068:3;9064:12;9057:19;;8716:366;;;:::o;9088:118::-;9175:24;9193:5;9175:24;:::i;:::-;9170:3;9163:37;9088:118;;:::o;9212:112::-;9295:22;9311:5;9295:22;:::i;:::-;9290:3;9283:35;9212:112;;:::o;9330:222::-;9423:4;9461:2;9450:9;9446:18;9438:26;;9474:71;9542:1;9531:9;9527:17;9518:6;9474:71;:::i;:::-;9330:222;;;;:::o;9558:238::-;9659:4;9697:2;9686:9;9682:18;9674:26;;9710:79;9786:1;9775:9;9771:17;9762:6;9710:79;:::i;:::-;9558:238;;;;:::o;9802:254::-;9911:4;9949:2;9938:9;9934:18;9926:26;;9962:87;10046:1;10035:9;10031:17;10022:6;9962:87;:::i;:::-;9802:254;;;;:::o;10062:348::-;10191:4;10229:2;10218:9;10214:18;10206:26;;10242:71;10310:1;10299:9;10295:17;10286:6;10242:71;:::i;:::-;10323:80;10399:2;10388:9;10384:18;10375:6;10323:80;:::i;:::-;10062:348;;;;;:::o;10416:332::-;10537:4;10575:2;10564:9;10560:18;10552:26;;10588:71;10656:1;10645:9;10641:17;10632:6;10588:71;:::i;:::-;10669:72;10737:2;10726:9;10722:18;10713:6;10669:72;:::i;:::-;10416:332;;;;;:::o;10754:210::-;10841:4;10879:2;10868:9;10864:18;10856:26;;10892:65;10954:1;10943:9;10939:17;10930:6;10892:65;:::i;:::-;10754:210;;;;:::o;10970:258::-;11081:4;11119:2;11108:9;11104:18;11096:26;;11132:89;11218:1;11207:9;11203:17;11194:6;11132:89;:::i;:::-;10970:258;;;;:::o;11234:313::-;11347:4;11385:2;11374:9;11370:18;11362:26;;11434:9;11428:4;11424:20;11420:1;11409:9;11405:17;11398:47;11462:78;11535:4;11526:6;11462:78;:::i;:::-;11454:86;;11234:313;;;;:::o;11553:419::-;11719:4;11757:2;11746:9;11742:18;11734:26;;11806:9;11800:4;11796:20;11792:1;11781:9;11777:17;11770:47;11834:131;11960:4;11834:131;:::i;:::-;11826:139;;11553:419;;;:::o;11978:::-;12144:4;12182:2;12171:9;12167:18;12159:26;;12231:9;12225:4;12221:20;12217:1;12206:9;12202:17;12195:47;12259:131;12385:4;12259:131;:::i;:::-;12251:139;;11978:419;;;:::o;12403:::-;12569:4;12607:2;12596:9;12592:18;12584:26;;12656:9;12650:4;12646:20;12642:1;12631:9;12627:17;12620:47;12684:131;12810:4;12684:131;:::i;:::-;12676:139;;12403:419;;;:::o;12828:::-;12994:4;13032:2;13021:9;13017:18;13009:26;;13081:9;13075:4;13071:20;13067:1;13056:9;13052:17;13045:47;13109:131;13235:4;13109:131;:::i;:::-;13101:139;;12828:419;;;:::o;13253:::-;13419:4;13457:2;13446:9;13442:18;13434:26;;13506:9;13500:4;13496:20;13492:1;13481:9;13477:17;13470:47;13534:131;13660:4;13534:131;:::i;:::-;13526:139;;13253:419;;;:::o;13678:::-;13844:4;13882:2;13871:9;13867:18;13859:26;;13931:9;13925:4;13921:20;13917:1;13906:9;13902:17;13895:47;13959:131;14085:4;13959:131;:::i;:::-;13951:139;;13678:419;;;:::o;14103:::-;14269:4;14307:2;14296:9;14292:18;14284:26;;14356:9;14350:4;14346:20;14342:1;14331:9;14327:17;14320:47;14384:131;14510:4;14384:131;:::i;:::-;14376:139;;14103:419;;;:::o;14528:222::-;14621:4;14659:2;14648:9;14644:18;14636:26;;14672:71;14740:1;14729:9;14725:17;14716:6;14672:71;:::i;:::-;14528:222;;;;:::o;14756:831::-;15019:4;15057:3;15046:9;15042:19;15034:27;;15071:71;15139:1;15128:9;15124:17;15115:6;15071:71;:::i;:::-;15152:80;15228:2;15217:9;15213:18;15204:6;15152:80;:::i;:::-;15279:9;15273:4;15269:20;15264:2;15253:9;15249:18;15242:48;15307:108;15410:4;15401:6;15307:108;:::i;:::-;15299:116;;15425:72;15493:2;15482:9;15478:18;15469:6;15425:72;:::i;:::-;15507:73;15575:3;15564:9;15560:19;15551:6;15507:73;:::i;:::-;14756:831;;;;;;;;:::o;15593:214::-;15682:4;15720:2;15709:9;15705:18;15697:26;;15733:67;15797:1;15786:9;15782:17;15773:6;15733:67;:::i;:::-;15593:214;;;;:::o;15894:132::-;15961:4;15984:3;15976:11;;16014:4;16009:3;16005:14;15997:22;;15894:132;;;:::o;16032:114::-;16099:6;16133:5;16127:12;16117:22;;16032:114;;;:::o;16152:99::-;16204:6;16238:5;16232:12;16222:22;;16152:99;;;:::o;16257:113::-;16327:4;16359;16354:3;16350:14;16342:22;;16257:113;;;:::o;16376:184::-;16475:11;16509:6;16504:3;16497:19;16549:4;16544:3;16540:14;16525:29;;16376:184;;;;:::o;16566:169::-;16650:11;16684:6;16679:3;16672:19;16724:4;16719:3;16715:14;16700:29;;16566:169;;;;:::o;16741:305::-;16781:3;16800:20;16818:1;16800:20;:::i;:::-;16795:25;;16834:20;16852:1;16834:20;:::i;:::-;16829:25;;16988:1;16920:66;16916:74;16913:1;16910:81;16907:107;;;16994:18;;:::i;:::-;16907:107;17038:1;17035;17031:9;17024:16;;16741:305;;;;:::o;17052:185::-;17092:1;17109:20;17127:1;17109:20;:::i;:::-;17104:25;;17143:20;17161:1;17143:20;:::i;:::-;17138:25;;17182:1;17172:35;;17187:18;;:::i;:::-;17172:35;17229:1;17226;17222:9;17217:14;;17052:185;;;;:::o;17243:348::-;17283:7;17306:20;17324:1;17306:20;:::i;:::-;17301:25;;17340:20;17358:1;17340:20;:::i;:::-;17335:25;;17528:1;17460:66;17456:74;17453:1;17450:81;17445:1;17438:9;17431:17;17427:105;17424:131;;;17535:18;;:::i;:::-;17424:131;17583:1;17580;17576:9;17565:20;;17243:348;;;;:::o;17597:191::-;17637:4;17657:20;17675:1;17657:20;:::i;:::-;17652:25;;17691:20;17709:1;17691:20;:::i;:::-;17686:25;;17730:1;17727;17724:8;17721:34;;;17735:18;;:::i;:::-;17721:34;17780:1;17777;17773:9;17765:17;;17597:191;;;;:::o;17794:96::-;17831:7;17860:24;17878:5;17860:24;:::i;:::-;17849:35;;17794:96;;;:::o;17896:104::-;17941:7;17970:24;17988:5;17970:24;:::i;:::-;17959:35;;17896:104;;;:::o;18006:90::-;18040:7;18083:5;18076:13;18069:21;18058:32;;18006:90;;;:::o;18102:126::-;18139:7;18179:42;18172:5;18168:54;18157:65;;18102:126;;;:::o;18234:77::-;18271:7;18300:5;18289:16;;18234:77;;;:::o;18317:86::-;18352:7;18392:4;18385:5;18381:16;18370:27;;18317:86;;;:::o;18409:134::-;18467:9;18500:37;18531:5;18500:37;:::i;:::-;18487:50;;18409:134;;;:::o;18549:144::-;18617:9;18650:37;18681:5;18650:37;:::i;:::-;18637:50;;18549:144;;;:::o;18699:121::-;18757:9;18790:24;18808:5;18790:24;:::i;:::-;18777:37;;18699:121;;;:::o;18826:126::-;18876:9;18909:37;18940:5;18909:37;:::i;:::-;18896:50;;18826:126;;;:::o;18958:113::-;19008:9;19041:24;19059:5;19041:24;:::i;:::-;19028:37;;18958:113;;;:::o;19077:307::-;19145:1;19155:113;19169:6;19166:1;19163:13;19155:113;;;19254:1;19249:3;19245:11;19239:18;19235:1;19230:3;19226:11;19219:39;19191:2;19188:1;19184:10;19179:15;;19155:113;;;19286:6;19283:1;19280:13;19277:101;;;19366:1;19357:6;19352:3;19348:16;19341:27;19277:101;19126:258;19077:307;;;:::o;19390:180::-;19438:77;19435:1;19428:88;19535:4;19532:1;19525:15;19559:4;19556:1;19549:15;19576:180;19624:77;19621:1;19614:88;19721:4;19718:1;19711:15;19745:4;19742:1;19735:15;19762:180;19810:77;19807:1;19800:88;19907:4;19904:1;19897:15;19931:4;19928:1;19921:15;19948:180;19996:77;19993:1;19986:88;20093:4;20090:1;20083:15;20117:4;20114:1;20107:15;20257:117;20366:1;20363;20356:12;20380:102;20421:6;20472:2;20468:7;20463:2;20456:5;20452:14;20448:28;20438:38;;20380:102;;;:::o;20488:156::-;20628:8;20624:1;20616:6;20612:14;20605:32;20488:156;:::o;20650:158::-;20790:10;20786:1;20778:6;20774:14;20767:34;20650:158;:::o;20814:177::-;20954:29;20950:1;20942:6;20938:14;20931:53;20814:177;:::o;20997:162::-;21137:14;21133:1;21125:6;21121:14;21114:38;20997:162;:::o;21165:220::-;21305:34;21301:1;21293:6;21289:14;21282:58;21374:3;21369:2;21361:6;21357:15;21350:28;21165:220;:::o;21391:174::-;21531:26;21527:1;21519:6;21515:14;21508:50;21391:174;:::o;21571:170::-;21711:22;21707:1;21699:6;21695:14;21688:46;21571:170;:::o;21747:122::-;21820:24;21838:5;21820:24;:::i;:::-;21813:5;21810:35;21800:63;;21859:1;21856;21849:12;21800:63;21747:122;:::o;21875:138::-;21956:32;21982:5;21956:32;:::i;:::-;21949:5;21946:43;21936:71;;22003:1;22000;21993:12;21936:71;21875:138;:::o;22019:116::-;22089:21;22104:5;22089:21;:::i;:::-;22082:5;22079:32;22069:60;;22125:1;22122;22115:12;22069:60;22019:116;:::o;22141:122::-;22214:24;22232:5;22214:24;:::i;:::-;22207:5;22204:35;22194:63;;22253:1;22250;22243:12;22194:63;22141:122;:::o
Swarm Source
ipfs://6a6c31359a1d4a2e96ca097015645a0cffa35170cac85279b74eddeb5d643651
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.