ERC-20
Overview
Max Total Supply
1,000,000,000,000 Mongo
Holders
42
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
12,271,842,000 MongoValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MongooseInu
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-09 */ // SPDX-License-Identifier: MIT /** Shiba Inu has done things differently. Now launch the next decentralized community token Mongoose Inu. The first ever meme coin named by a US senator but for the community. $Mongo. */ 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 shareholder!"); return shares[shareholder].totalClaimed; } } contract MongooseInu is IBEP20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string private constant _name = "Mongoose Inu"; string private constant _symbol = "Mongo"; 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 = 1; uint256 private feeDenominator = 100; address payable public marketingWallet = payable(0x971E9fb8368B3D330351F2df4ebec1Ae68c5B6B6); address payable private treasury = payable(0x971E9fb8368B3D330351F2df4ebec1Ae68c5B6B6); IDEXRouter public router; address public pair; uint256 public launchedAt; bool private tradingOpen = true; bool private buyLimit = false; uint256 private maxBuy = 5000000000 * (10 ** _decimals); DividendDistributor public distributor; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( ) Auth(0x971E9fb8368B3D330351F2df4ebec1Ae68c5B6B6) { address _owner = 0x971E9fb8368B3D330351F2df4ebec1Ae68c5B6B6; 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(0xB8f226dDb7bC672E27dffB67e4adAbFa8c0dFA08), _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 setBot(address _address) external onlyOwner { isBot[_address] = true; _setIsDividendExempt(_address, true); } function setBulkBots(address[] memory bots_) external onlyOwner { for (uint i = 0; i < bots_.length; i++) { isBot[bots_[i]] = true; _setIsDividendExempt(bots_[i], true); } } function delBulkBots(address[] memory bots_) external onlyOwner { for (uint i = 0; i < bots_.length; i++) { isBot[bots_[i]] = false; _setIsDividendExempt(bots_[i], false); } } 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 <= 14, "Fee can't exceed 14%"); 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); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"delBulkBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBulkBots","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000b7b565b64e8d4a51000620000ab919062000bcc565b6004556004546005556001600b556064600c5573971e9fb8368b3d330351f2df4ebec1ae68c5b6b6600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073971e9fb8368b3d330351f2df4ebec1ae68c5b6b6600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055506009600a620001ae919062000b7b565b64012a05f200620001c0919062000bcc565b601355348015620001d057600080fd5b5073971e9fb8368b3d330351f2df4ebec1ae68c5b6b6806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073971e9fb8368b3d330351f2df4ebec1ae68c5b6b69050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002fe57600080fd5b505afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000339919062000c97565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003e257600080fd5b505afa158015620003f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041d919062000c97565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200047b92919062000cda565b602060405180830381600087803b1580156200049657600080fd5b505af1158015620004ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d1919062000c97565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200060690620009d3565b6200061392919062000d72565b604051809103906000f08015801562000630573d6000803e3d6000fd5b50601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff1673b8f226ddb7bc672e27dffb67e4adabfa8c0dfa0873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620009c4919062000db0565b60405180910390a35062000dcd565b6119e48062004c2883390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a6f5780860481111562000a475762000a46620009e1565b5b600185161562000a575780820291505b808102905062000a678562000a10565b945062000a27565b94509492505050565b60008262000a8a576001905062000b5d565b8162000a9a576000905062000b5d565b816001811462000ab3576002811462000abe5762000af4565b600191505062000b5d565b60ff84111562000ad35762000ad2620009e1565b5b8360020a91508482111562000aed5762000aec620009e1565b5b5062000b5d565b5060208310610133831016604e8410600b841016171562000b2e5782820a90508381111562000b285762000b27620009e1565b5b62000b5d565b62000b3d848484600162000a1d565b9250905081840481111562000b575762000b56620009e1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b888262000b64565b915062000b958362000b6e565b925062000bc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a78565b905092915050565b600062000bd98262000b64565b915062000be68362000b64565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c225762000c21620009e1565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c5f8262000c32565b9050919050565b62000c718162000c52565b811462000c7d57600080fd5b50565b60008151905062000c918162000c66565b92915050565b60006020828403121562000cb05762000caf62000c2d565b5b600062000cc08482850162000c80565b91505092915050565b62000cd48162000c52565b82525050565b600060408201905062000cf1600083018562000cc9565b62000d00602083018462000cc9565b9392505050565b6000819050919050565b600062000d3262000d2c62000d268462000c32565b62000d07565b62000c32565b9050919050565b600062000d468262000d11565b9050919050565b600062000d5a8262000d39565b9050919050565b62000d6c8162000d4d565b82525050565b600060408201905062000d89600083018562000cc9565b62000d98602083018462000d61565b9392505050565b62000daa8162000b64565b82525050565b600060208201905062000dc7600083018462000d9f565b92915050565b613e4b8062000ddd6000396000f3fe6080604052600436106102135760003560e01c806370a0823111610118578063bf56b371116100a0578063f0fc6bca1161006f578063f0fc6bca1461080a578063f2fde38b14610821578063f42938901461084a578063f708a64f14610861578063f887ea401461088a5761021a565b8063bf56b3711461074e578063bfe1092814610779578063dd62ed3e146107a4578063f0f44260146107e15761021a565b80638ecc37fb116100e75780638ecc37fb1461065557806395d89b4114610692578063a8aa1b31146106bd578063a9059cbb146106e8578063b89402a0146107255761021a565b806370a0823114610597578063736a83a1146105d457806375f0a874146105ff578063893d20e81461062a5761021a565b8063350fcdf91161019b5780635d098b381161016a5780635d098b38146104c8578063658d4b7f146104f157806367ee5f091461051a57806369fe0e2d146105455780636b5caec41461056e5761021a565b8063350fcdf9146103e8578063416501c814610411578063571ac8b01461044e5780635cc33f741461048b5761021a565b806323b63585116101e257806323b63585146102db57806323b872dd146103185780632b112e49146103555780632f54bf6e14610380578063313ce567146103bd5761021a565b806306fdde031461021f578063095ea7b31461024a57806315f7e05e1461028757806318160ddd146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108b5565b60405161024191906130ed565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c91906131b7565b6108f2565b60405161027e9190613212565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a9919061322d565b6109e4565b005b3480156102bc57600080fd5b506102c5610abc565b6040516102d29190613269565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613284565b610ac6565b60405161030f9190613212565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a91906132b1565b610b44565b60405161034c9190613212565b60405180910390f35b34801561036157600080fd5b5061036a610d44565b6040516103779190613269565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a2919061322d565b610dc6565b6040516103b49190613212565b60405180910390f35b3480156103c957600080fd5b506103d2610e1f565b6040516103df9190613320565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190613483565b610e28565b005b34801561041d57600080fd5b506104386004803603810190610433919061322d565b610f2a565b6040516104459190613212565b60405180910390f35b34801561045a57600080fd5b506104756004803603810190610470919061322d565b610fc8565b6040516104829190613212565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad919061322d565b610ffb565b6040516104bf9190613269565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea919061322d565b6110af565b005b3480156104fd57600080fd5b50610518600480360381019061051391906134f8565b61113b565b005b34801561052657600080fd5b5061052f6111de565b60405161053c9190613269565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190613284565b611285565b005b34801561057a57600080fd5b506105956004803603810190610590919061322d565b61131b565b005b3480156105a357600080fd5b506105be60048036038101906105b9919061322d565b6113c9565b6040516105cb9190613269565b60405180910390f35b3480156105e057600080fd5b506105e9611412565b6040516105f69190613269565b60405180910390f35b34801561060b57600080fd5b506106146114b9565b6040516106219190613559565b60405180910390f35b34801561063657600080fd5b5061063f6114df565b60405161064c9190613583565b60405180910390f35b34801561066157600080fd5b5061067c6004803603810190610677919061322d565b611508565b6040516106899190613269565b60405180910390f35b34801561069e57600080fd5b506106a76115bc565b6040516106b491906130ed565b60405180910390f35b3480156106c957600080fd5b506106d26115f9565b6040516106df9190613583565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a91906131b7565b61161f565b60405161071c9190613212565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190613483565b611634565b005b34801561075a57600080fd5b50610763611736565b6040516107709190613269565b60405180910390f35b34801561078557600080fd5b5061078e61173c565b60405161079b91906135fd565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c69190613618565b611762565b6040516107d89190613269565b60405180910390f35b3480156107ed57600080fd5b506108086004803603810190610803919061322d565b6117e9565b005b34801561081657600080fd5b5061081f611902565b005b34801561082d57600080fd5b5061084860048036038101906108439190613684565b611991565b005b34801561085657600080fd5b5061085f611a53565b005b34801561086d57600080fd5b50610888600480360381019061088391906134f8565b611b0c565b005b34801561089657600080fd5b5061089f611b62565b6040516108ac91906136d2565b60405180910390f35b60606040518060400160405280600c81526020017f4d6f6e676f6f736520496e750000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109d29190613269565b60405180910390a36001905092915050565b6109ed33610dc6565b610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2390613739565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610a879190613583565b600060405180830381600087803b158015610aa157600080fd5b505af1158015610ab5573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610ad133610dc6565b610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790613739565b60405180910390fd5b610b3d30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b88565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d3057610caf826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5b9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d3b848484611dbf565b90509392505050565b6000610dc1610d74600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c9565b610db3610da2600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c9565b60045461270390919063ffffffff16565b61270390919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610e3133610dc6565b610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6790613739565b60405180910390fd5b60005b8151811015610f26576000600a6000848481518110610e9557610e94613759565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f13828281518110610f0457610f03613759565b5b6020026020010151600061274d565b8080610f1e906137b7565b915050610e73565b5050565b6000610f3533610dc6565b610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90613739565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610ff4827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108f2565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b81526004016110589190613583565b60206040518083038186803b15801561107057600080fd5b505afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190613815565b9050919050565b6110b833610dc6565b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90613739565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61114433610dc6565b611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a90613739565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561124857600080fd5b505afa15801561125c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112809190613815565b905090565b61128e33610dc6565b6112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490613739565b60405180910390fd5b600e811115611311576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113089061388e565b60405180910390fd5b80600b8190555050565b61132433610dc6565b611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a90613739565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113c681600161274d565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190613815565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016115659190613583565b60206040518083038186803b15801561157d57600080fd5b505afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b59190613815565b9050919050565b60606040518060400160405280600581526020017f4d6f6e676f000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061162c338484611dbf565b905092915050565b61163d33610dc6565b61167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390613739565b60405180910390fd5b60005b8151811015611732576001600a60008484815181106116a1576116a0613759565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061171f8282815181106117105761170f613759565b5b6020026020010151600161274d565b808061172a906137b7565b91505061167f565b5050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117f233610dc6565b611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890613739565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b81526004016118cd9190613583565b600060405180830381600087803b1580156118e757600080fd5b505af11580156118fb573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161195d9190613583565b600060405180830381600087803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050565b61199a33610dc6565b6119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d090613739565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611a4891906138cf565b60405180910390a150565b611a5c33610dc6565b611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290613739565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b08573d6000803e3d6000fd5b5050565b611b1533610dc6565b611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90613739565b60405180910390fd5b611b5e828261274d565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c13826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5b9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ca882600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d489190613269565b60405180910390a3600190509392505050565b6000838311158290611da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9a91906130ed565b60405180910390fd5b5060008385611db291906138ea565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e6a575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ebf57601260009054906101000a900460ff16611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb59061396a565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f635750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f99906139d6565b60405180910390fd5b601260019054906101000a900460ff16156120ab5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561205f575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120aa576013548211156120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a090613a42565b60405180910390fd5b5b5b60016011546120ba9190613a62565b4311612171576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff16156121965761218f848484611b88565b90506126fc565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121fd575060006121fb306113c9565b115b9050801561220e5761220d612a03565b5b612297836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5b9092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006122e68686612cf0565b6122f057836122fb565b6122fa8685612e4d565b5b905061234f81600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a590919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561243a5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561251157601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016124db929190613ab8565b600060405180830381600087803b1580156124f557600080fd5b505af1925050508015612506575060015b61250f57612510565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156125b95750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561269057601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161265a929190613ab8565b600060405180830381600087803b15801561267457600080fd5b505af1925050508015612685575060015b61268e5761268f565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126ed9190613269565b60405180910390a36001925050505b9392505050565b600061274583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d5b565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127d75750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6127e057600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156128d257601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161289b929190613b1c565b600060405180830381600087803b1580156128b557600080fd5b505af11580156128c9573d6000803e3d6000fd5b505050506129a1565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161296e929190613ab8565b600060405180830381600087803b15801561298857600080fd5b505af115801561299c573d6000803e3d6000fd5b505050505b5050565b60008082846129b49190613a62565b9050838110156129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f090613b91565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff0219169083151502179055506000612a28306113c9565b90506000600267ffffffffffffffff811115612a4757612a46613340565b5b604051908082528060200260200182016040528015612a755781602001602082028036833780820191505090505b5090503081600081518110612a8d57612a8c613759565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612afe57612afd613759565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b9c959493929190613c6f565b600060405180830381600087803b158015612bb657600080fd5b505af1158015612bca573d6000803e3d6000fd5b505050506000612be4600247612f2c90919063ffffffff16565b90506000612bfc600247612f2c90919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c66573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ccf573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d935750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612e455750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612e445750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612e79600c54612e6b600b5486612f7690919063ffffffff16565b612f2c90919063ffffffff16565b9050612ecd81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f23818461270390919063ffffffff16565b91505092915050565b6000612f6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ff1565b905092915050565b600080831415612f895760009050612feb565b60008284612f979190613cc9565b9050828482612fa69190613d52565b14612fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdd90613df5565b60405180910390fd5b809150505b92915050565b60008083118290613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f91906130ed565b60405180910390fd5b50600083856130479190613d52565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561308e578082015181840152602081019050613073565b8381111561309d576000848401525b50505050565b6000601f19601f8301169050919050565b60006130bf82613054565b6130c9818561305f565b93506130d9818560208601613070565b6130e2816130a3565b840191505092915050565b6000602082019050818103600083015261310781846130b4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061314e82613123565b9050919050565b61315e81613143565b811461316957600080fd5b50565b60008135905061317b81613155565b92915050565b6000819050919050565b61319481613181565b811461319f57600080fd5b50565b6000813590506131b18161318b565b92915050565b600080604083850312156131ce576131cd613119565b5b60006131dc8582860161316c565b92505060206131ed858286016131a2565b9150509250929050565b60008115159050919050565b61320c816131f7565b82525050565b60006020820190506132276000830184613203565b92915050565b60006020828403121561324357613242613119565b5b60006132518482850161316c565b91505092915050565b61326381613181565b82525050565b600060208201905061327e600083018461325a565b92915050565b60006020828403121561329a57613299613119565b5b60006132a8848285016131a2565b91505092915050565b6000806000606084860312156132ca576132c9613119565b5b60006132d88682870161316c565b93505060206132e98682870161316c565b92505060406132fa868287016131a2565b9150509250925092565b600060ff82169050919050565b61331a81613304565b82525050565b60006020820190506133356000830184613311565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613378826130a3565b810181811067ffffffffffffffff8211171561339757613396613340565b5b80604052505050565b60006133aa61310f565b90506133b6828261336f565b919050565b600067ffffffffffffffff8211156133d6576133d5613340565b5b602082029050602081019050919050565b600080fd5b60006133ff6133fa846133bb565b6133a0565b90508083825260208201905060208402830185811115613422576134216133e7565b5b835b8181101561344b5780613437888261316c565b845260208401935050602081019050613424565b5050509392505050565b600082601f83011261346a5761346961333b565b5b813561347a8482602086016133ec565b91505092915050565b60006020828403121561349957613498613119565b5b600082013567ffffffffffffffff8111156134b7576134b661311e565b5b6134c384828501613455565b91505092915050565b6134d5816131f7565b81146134e057600080fd5b50565b6000813590506134f2816134cc565b92915050565b6000806040838503121561350f5761350e613119565b5b600061351d8582860161316c565b925050602061352e858286016134e3565b9150509250929050565b600061354382613123565b9050919050565b61355381613538565b82525050565b600060208201905061356e600083018461354a565b92915050565b61357d81613143565b82525050565b60006020820190506135986000830184613574565b92915050565b6000819050919050565b60006135c36135be6135b984613123565b61359e565b613123565b9050919050565b60006135d5826135a8565b9050919050565b60006135e7826135ca565b9050919050565b6135f7816135dc565b82525050565b600060208201905061361260008301846135ee565b92915050565b6000806040838503121561362f5761362e613119565b5b600061363d8582860161316c565b925050602061364e8582860161316c565b9150509250929050565b61366181613538565b811461366c57600080fd5b50565b60008135905061367e81613658565b92915050565b60006020828403121561369a57613699613119565b5b60006136a88482850161366f565b91505092915050565b60006136bc826135ca565b9050919050565b6136cc816136b1565b82525050565b60006020820190506136e760008301846136c3565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b600061372360068361305f565b915061372e826136ed565b602082019050919050565b6000602082019050818103600083015261375281613716565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137c282613181565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137f5576137f4613788565b5b600182019050919050565b60008151905061380f8161318b565b92915050565b60006020828403121561382b5761382a613119565b5b600061383984828501613800565b91505092915050565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b600061387860148361305f565b915061388382613842565b602082019050919050565b600060208201905081810360008301526138a78161386b565b9050919050565b60006138b9826135ca565b9050919050565b6138c9816138ae565b82525050565b60006020820190506138e460008301846138c0565b92915050565b60006138f582613181565b915061390083613181565b92508282101561391357613912613788565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b600061395460188361305f565b915061395f8261391e565b602082019050919050565b6000602082019050818103600083015261398381613947565b9050919050565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b60006139c060088361305f565b91506139cb8261398a565b602082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b6000613a2c600c8361305f565b9150613a37826139f6565b602082019050919050565b60006020820190508181036000830152613a5b81613a1f565b9050919050565b6000613a6d82613181565b9150613a7883613181565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aad57613aac613788565b5b828201905092915050565b6000604082019050613acd6000830185613574565b613ada602083018461325a565b9392505050565b6000819050919050565b6000613b06613b01613afc84613ae1565b61359e565b613181565b9050919050565b613b1681613aeb565b82525050565b6000604082019050613b316000830185613574565b613b3e6020830184613b0d565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b7b601b8361305f565b9150613b8682613b45565b602082019050919050565b60006020820190508181036000830152613baa81613b6e565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613be681613143565b82525050565b6000613bf88383613bdd565b60208301905092915050565b6000602082019050919050565b6000613c1c82613bb1565b613c268185613bbc565b9350613c3183613bcd565b8060005b83811015613c62578151613c498882613bec565b9750613c5483613c04565b925050600181019050613c35565b5085935050505092915050565b600060a082019050613c84600083018861325a565b613c916020830187613b0d565b8181036040830152613ca38186613c11565b9050613cb26060830185613574565b613cbf608083018461325a565b9695505050505050565b6000613cd482613181565b9150613cdf83613181565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1857613d17613788565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d5d82613181565b9150613d6883613181565b925082613d7857613d77613d23565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ddf60218361305f565b9150613dea82613d83565b604082019050919050565b60006020820190508181036000830152613e0e81613dd2565b905091905056fea2646970667358221220304943e60ed7840bb0b80d9a81480da63f0f3fd2fb1903b2a9eaf293eb581abf64736f6c6343000809003360806040526ec097ce7bc90715b34b9f1000000000600a553480156200002457600080fd5b50604051620019e4380380620019e483398181016040528101906200004a91906200017e565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620001c5565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001468262000119565b9050919050565b620001588162000139565b81146200016457600080fd5b50565b60008151905062000178816200014d565b92915050565b6000806040838503121562000198576200019762000114565b5b6000620001a88582860162000167565b9250506020620001bb8582860162000167565b9150509250929050565b61180f80620001d56000396000f3fe6080604052600436106100e85760003560e01c8063b2bdfa7b1161008a578063e2d2e21911610059578063e2d2e219146102d7578063e319a3d914610302578063ecd0c0c31461032d578063f0f4426014610358576100e8565b8063b2bdfa7b14610238578063ce7c2ac214610263578063d0e30db0146102a2578063d54ad2a1146102ac576100e8565b80633a98ef39116100c65780633a98ef39146101685780635cc33f74146101935780638ecc37fb146101d0578063997664d71461020d576100e8565b80631014edf5146100ed57806314b6ca961461011657806315f7e05e1461013f575b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112ab565b610381565b005b34801561012257600080fd5b5061013d600480360381019061013891906112eb565b61043b565b005b34801561014b57600080fd5b506101666004803603810190610161919061132b565b6106fa565b005b34801561017457600080fd5b5061017d61075e565b60405161018a9190611367565b60405180910390f35b34801561019f57600080fd5b506101ba60048036038101906101b5919061132b565b610764565b6040516101c79190611367565b60405180910390f35b3480156101dc57600080fd5b506101f760048036038101906101f2919061132b565b610834565b6040516102049190611367565b60405180910390f35b34801561021957600080fd5b5061022261094e565b60405161022f9190611367565b60405180910390f35b34801561024457600080fd5b5061024d610954565b60405161025a9190611391565b60405180910390f35b34801561026f57600080fd5b5061028a6004803603810190610285919061132b565b61097a565b604051610299939291906113ac565b60405180910390f35b6102aa6109a4565b005b3480156102b857600080fd5b506102c1610a0a565b6040516102ce9190611367565b60405180910390f35b3480156102e357600080fd5b506102ec610a10565b6040516102f99190611367565b60405180910390f35b34801561030e57600080fd5b50610317610a16565b6040516103249190611391565b60405180910390f35b34801561033957600080fd5b50610342610a3c565b60405161034f9190611391565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a919061132b565b610a60565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103db57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60008511610408578261040a565b845b9081150290604051600060405180830381858888f19350505050158015610435573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049357600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104e8576104e782610afc565b5b60008111801561053a57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561054d5761054882610cf6565b6105af565b60008114801561059f57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105ae576105ad82610da5565b5b5b6106188161060a600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600654610fac90919063ffffffff16565b610ff690919063ffffffff16565b60068190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106b0600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075257600080fd5b61075b81610afc565b50565b60065481565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190611440565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156108895760009050610949565b60006108d6600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b90506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161093157600092505050610949565b6109448183610fac90919063ffffffff16565b925050505b919050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b60003490506109be81600754610ff690919063ffffffff16565b600781905550610a016109f06006546109e284600a5461108690919063ffffffff16565b61110190919063ffffffff16565b600954610ff690919063ffffffff16565b60098190555050565b60085481565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab857600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610b4c57610cf3565b6000610b5782610834565b90506000811115610cf157610b7781600854610ff690919063ffffffff16565b600881905550610bd281600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ff690919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c63600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611054565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cef573d6000803e3d6000fd5b505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036001600380549050610db9919061148f565b81548110610dca57610dc96114c3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e4857610e476114c3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600060036001600380549050610ee8919061148f565b81548110610ef957610ef86114c3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003805480610f7457610f736114f2565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610fee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061114b565b905092915050565b60008082846110059190611521565b90508381101561104a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611041906115c3565b60405180910390fd5b8091505092915050565b600061107f600a546110716009548561108690919063ffffffff16565b61110190919063ffffffff16565b9050919050565b60008083141561109957600090506110fb565b600082846110a791906115e3565b90508284826110b6919061166c565b146110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ed9061170f565b60405180910390fd5b809150505b92915050565b600061114383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111af565b905092915050565b6000838311158290611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a91906117b7565b60405180910390fd5b50600083856111a2919061148f565b9050809150509392505050565b600080831182906111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed91906117b7565b60405180910390fd5b5060008385611205919061166c565b9050809150509392505050565b600080fd5b6000819050919050565b61122a81611217565b811461123557600080fd5b50565b60008135905061124781611221565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112788261124d565b9050919050565b6112888161126d565b811461129357600080fd5b50565b6000813590506112a58161127f565b92915050565b600080604083850312156112c2576112c1611212565b5b60006112d085828601611238565b92505060206112e185828601611296565b9150509250929050565b6000806040838503121561130257611301611212565b5b600061131085828601611296565b925050602061132185828601611238565b9150509250929050565b60006020828403121561134157611340611212565b5b600061134f84828501611296565b91505092915050565b61136181611217565b82525050565b600060208201905061137c6000830184611358565b92915050565b61138b8161126d565b82525050565b60006020820190506113a66000830184611382565b92915050565b60006060820190506113c16000830186611358565b6113ce6020830185611358565b6113db6040830184611358565b949350505050565b600082825260208201905092915050565b7f596f75277265206e6f742061207368617265686f6c6465722100000000000000600082015250565b600061142a6019836113e3565b9150611435826113f4565b602082019050919050565b600060208201905081810360008301526114598161141d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061149a82611217565b91506114a583611217565b9250828210156114b8576114b7611460565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061152c82611217565b915061153783611217565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561156c5761156b611460565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006115ad601b836113e3565b91506115b882611577565b602082019050919050565b600060208201905081810360008301526115dc816115a0565b9050919050565b60006115ee82611217565b91506115f983611217565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561163257611631611460565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061167782611217565b915061168283611217565b9250826116925761169161163d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006116f96021836113e3565b91506117048261169d565b604082019050919050565b60006020820190508181036000830152611728816116ec565b9050919050565b600081519050919050565b60005b8381101561175857808201518184015260208101905061173d565b83811115611767576000848401525b50505050565b6000601f19601f8301169050919050565b60006117898261172f565b61179381856113e3565b93506117a381856020860161173a565b6117ac8161176d565b840191505092915050565b600060208201905081810360008301526117d1818461177e565b90509291505056fea2646970667358221220335b85ba69910c29b27518fd7c2379007f3a72d2f56bb1bc396e4b52ec13e9da64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106102135760003560e01c806370a0823111610118578063bf56b371116100a0578063f0fc6bca1161006f578063f0fc6bca1461080a578063f2fde38b14610821578063f42938901461084a578063f708a64f14610861578063f887ea401461088a5761021a565b8063bf56b3711461074e578063bfe1092814610779578063dd62ed3e146107a4578063f0f44260146107e15761021a565b80638ecc37fb116100e75780638ecc37fb1461065557806395d89b4114610692578063a8aa1b31146106bd578063a9059cbb146106e8578063b89402a0146107255761021a565b806370a0823114610597578063736a83a1146105d457806375f0a874146105ff578063893d20e81461062a5761021a565b8063350fcdf91161019b5780635d098b381161016a5780635d098b38146104c8578063658d4b7f146104f157806367ee5f091461051a57806369fe0e2d146105455780636b5caec41461056e5761021a565b8063350fcdf9146103e8578063416501c814610411578063571ac8b01461044e5780635cc33f741461048b5761021a565b806323b63585116101e257806323b63585146102db57806323b872dd146103185780632b112e49146103555780632f54bf6e14610380578063313ce567146103bd5761021a565b806306fdde031461021f578063095ea7b31461024a57806315f7e05e1461028757806318160ddd146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108b5565b60405161024191906130ed565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c91906131b7565b6108f2565b60405161027e9190613212565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a9919061322d565b6109e4565b005b3480156102bc57600080fd5b506102c5610abc565b6040516102d29190613269565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613284565b610ac6565b60405161030f9190613212565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a91906132b1565b610b44565b60405161034c9190613212565b60405180910390f35b34801561036157600080fd5b5061036a610d44565b6040516103779190613269565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a2919061322d565b610dc6565b6040516103b49190613212565b60405180910390f35b3480156103c957600080fd5b506103d2610e1f565b6040516103df9190613320565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190613483565b610e28565b005b34801561041d57600080fd5b506104386004803603810190610433919061322d565b610f2a565b6040516104459190613212565b60405180910390f35b34801561045a57600080fd5b506104756004803603810190610470919061322d565b610fc8565b6040516104829190613212565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad919061322d565b610ffb565b6040516104bf9190613269565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea919061322d565b6110af565b005b3480156104fd57600080fd5b50610518600480360381019061051391906134f8565b61113b565b005b34801561052657600080fd5b5061052f6111de565b60405161053c9190613269565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190613284565b611285565b005b34801561057a57600080fd5b506105956004803603810190610590919061322d565b61131b565b005b3480156105a357600080fd5b506105be60048036038101906105b9919061322d565b6113c9565b6040516105cb9190613269565b60405180910390f35b3480156105e057600080fd5b506105e9611412565b6040516105f69190613269565b60405180910390f35b34801561060b57600080fd5b506106146114b9565b6040516106219190613559565b60405180910390f35b34801561063657600080fd5b5061063f6114df565b60405161064c9190613583565b60405180910390f35b34801561066157600080fd5b5061067c6004803603810190610677919061322d565b611508565b6040516106899190613269565b60405180910390f35b34801561069e57600080fd5b506106a76115bc565b6040516106b491906130ed565b60405180910390f35b3480156106c957600080fd5b506106d26115f9565b6040516106df9190613583565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a91906131b7565b61161f565b60405161071c9190613212565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190613483565b611634565b005b34801561075a57600080fd5b50610763611736565b6040516107709190613269565b60405180910390f35b34801561078557600080fd5b5061078e61173c565b60405161079b91906135fd565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c69190613618565b611762565b6040516107d89190613269565b60405180910390f35b3480156107ed57600080fd5b506108086004803603810190610803919061322d565b6117e9565b005b34801561081657600080fd5b5061081f611902565b005b34801561082d57600080fd5b5061084860048036038101906108439190613684565b611991565b005b34801561085657600080fd5b5061085f611a53565b005b34801561086d57600080fd5b50610888600480360381019061088391906134f8565b611b0c565b005b34801561089657600080fd5b5061089f611b62565b6040516108ac91906136d2565b60405180910390f35b60606040518060400160405280600c81526020017f4d6f6e676f6f736520496e750000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109d29190613269565b60405180910390a36001905092915050565b6109ed33610dc6565b610a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2390613739565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610a879190613583565b600060405180830381600087803b158015610aa157600080fd5b505af1158015610ab5573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610ad133610dc6565b610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790613739565b60405180910390fd5b610b3d30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b88565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d3057610caf826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5b9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d3b848484611dbf565b90509392505050565b6000610dc1610d74600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c9565b610db3610da2600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c9565b60045461270390919063ffffffff16565b61270390919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610e3133610dc6565b610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6790613739565b60405180910390fd5b60005b8151811015610f26576000600a6000848481518110610e9557610e94613759565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f13828281518110610f0457610f03613759565b5b6020026020010151600061274d565b8080610f1e906137b7565b915050610e73565b5050565b6000610f3533610dc6565b610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90613739565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610ff4827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108f2565b9050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b81526004016110589190613583565b60206040518083038186803b15801561107057600080fd5b505afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190613815565b9050919050565b6110b833610dc6565b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90613739565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61114433610dc6565b611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a90613739565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561124857600080fd5b505afa15801561125c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112809190613815565b905090565b61128e33610dc6565b6112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490613739565b60405180910390fd5b600e811115611311576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113089061388e565b60405180910390fd5b80600b8190555050565b61132433610dc6565b611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a90613739565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113c681600161274d565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190613815565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016115659190613583565b60206040518083038186803b15801561157d57600080fd5b505afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b59190613815565b9050919050565b60606040518060400160405280600581526020017f4d6f6e676f000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061162c338484611dbf565b905092915050565b61163d33610dc6565b61167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390613739565b60405180910390fd5b60005b8151811015611732576001600a60008484815181106116a1576116a0613759565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061171f8282815181106117105761170f613759565b5b6020026020010151600161274d565b808061172a906137b7565b91505061167f565b5050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117f233610dc6565b611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890613739565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0f44260826040518263ffffffff1660e01b81526004016118cd9190613583565b600060405180830381600087803b1580156118e757600080fd5b505af11580156118fb573d6000803e3d6000fd5b5050505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161195d9190613583565b600060405180830381600087803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050565b61199a33610dc6565b6119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d090613739565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611a4891906138cf565b60405180910390a150565b611a5c33610dc6565b611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290613739565b60405180910390fd5b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b08573d6000803e3d6000fd5b5050565b611b1533610dc6565b611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90613739565b60405180910390fd5b611b5e828261274d565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c13826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5b9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ca882600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d489190613269565b60405180910390a3600190509392505050565b6000838311158290611da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9a91906130ed565b60405180910390fd5b5060008385611db291906138ea565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e6a575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ebf57601260009054906101000a900460ff16611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb59061396a565b60405180910390fd5b5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f635750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f99906139d6565b60405180910390fd5b601260019054906101000a900460ff16156120ab5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561205f575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120aa576013548211156120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a090613a42565b60405180910390fd5b5b5b60016011546120ba9190613a62565b4311612171576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60148054906101000a900460ff16156121965761218f848484611b88565b90506126fc565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121fd575060006121fb306113c9565b115b9050801561220e5761220d612a03565b5b612297836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5b9092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006122e68686612cf0565b6122f057836122fb565b6122fa8685612e4d565b5b905061234f81600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a590919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561243a5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561251157601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016124db929190613ab8565b600060405180830381600087803b1580156124f557600080fd5b505af1925050508015612506575060015b61250f57612510565b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156125b95750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561269057601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161265a929190613ab8565b600060405180830381600087803b15801561267457600080fd5b505af1925050508015612685575060015b61268e5761268f565b5b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126ed9190613269565b60405180910390a36001925050505b9392505050565b600061274583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d5b565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127d75750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6127e057600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156128d257601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161289b929190613b1c565b600060405180830381600087803b1580156128b557600080fd5b505af11580156128c9573d6000803e3d6000fd5b505050506129a1565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161296e929190613ab8565b600060405180830381600087803b15801561298857600080fd5b505af115801561299c573d6000803e3d6000fd5b505050505b5050565b60008082846129b49190613a62565b9050838110156129f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f090613b91565b60405180910390fd5b8091505092915050565b60016014806101000a81548160ff0219169083151502179055506000612a28306113c9565b90506000600267ffffffffffffffff811115612a4757612a46613340565b5b604051908082528060200260200182016040528015612a755781602001602082028036833780820191505090505b5090503081600081518110612a8d57612a8c613759565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612afe57612afd613759565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b9c959493929190613c6f565b600060405180830381600087803b158015612bb657600080fd5b505af1158015612bca573d6000803e3d6000fd5b505050506000612be4600247612f2c90919063ffffffff16565b90506000612bfc600247612f2c90919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c66573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ccf573d6000803e3d6000fd5b505050505060006014806101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d935750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612e455750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612e445750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612e79600c54612e6b600b5486612f7690919063ffffffff16565b612f2c90919063ffffffff16565b9050612ecd81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f23818461270390919063ffffffff16565b91505092915050565b6000612f6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ff1565b905092915050565b600080831415612f895760009050612feb565b60008284612f979190613cc9565b9050828482612fa69190613d52565b14612fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdd90613df5565b60405180910390fd5b809150505b92915050565b60008083118290613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f91906130ed565b60405180910390fd5b50600083856130479190613d52565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561308e578082015181840152602081019050613073565b8381111561309d576000848401525b50505050565b6000601f19601f8301169050919050565b60006130bf82613054565b6130c9818561305f565b93506130d9818560208601613070565b6130e2816130a3565b840191505092915050565b6000602082019050818103600083015261310781846130b4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061314e82613123565b9050919050565b61315e81613143565b811461316957600080fd5b50565b60008135905061317b81613155565b92915050565b6000819050919050565b61319481613181565b811461319f57600080fd5b50565b6000813590506131b18161318b565b92915050565b600080604083850312156131ce576131cd613119565b5b60006131dc8582860161316c565b92505060206131ed858286016131a2565b9150509250929050565b60008115159050919050565b61320c816131f7565b82525050565b60006020820190506132276000830184613203565b92915050565b60006020828403121561324357613242613119565b5b60006132518482850161316c565b91505092915050565b61326381613181565b82525050565b600060208201905061327e600083018461325a565b92915050565b60006020828403121561329a57613299613119565b5b60006132a8848285016131a2565b91505092915050565b6000806000606084860312156132ca576132c9613119565b5b60006132d88682870161316c565b93505060206132e98682870161316c565b92505060406132fa868287016131a2565b9150509250925092565b600060ff82169050919050565b61331a81613304565b82525050565b60006020820190506133356000830184613311565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613378826130a3565b810181811067ffffffffffffffff8211171561339757613396613340565b5b80604052505050565b60006133aa61310f565b90506133b6828261336f565b919050565b600067ffffffffffffffff8211156133d6576133d5613340565b5b602082029050602081019050919050565b600080fd5b60006133ff6133fa846133bb565b6133a0565b90508083825260208201905060208402830185811115613422576134216133e7565b5b835b8181101561344b5780613437888261316c565b845260208401935050602081019050613424565b5050509392505050565b600082601f83011261346a5761346961333b565b5b813561347a8482602086016133ec565b91505092915050565b60006020828403121561349957613498613119565b5b600082013567ffffffffffffffff8111156134b7576134b661311e565b5b6134c384828501613455565b91505092915050565b6134d5816131f7565b81146134e057600080fd5b50565b6000813590506134f2816134cc565b92915050565b6000806040838503121561350f5761350e613119565b5b600061351d8582860161316c565b925050602061352e858286016134e3565b9150509250929050565b600061354382613123565b9050919050565b61355381613538565b82525050565b600060208201905061356e600083018461354a565b92915050565b61357d81613143565b82525050565b60006020820190506135986000830184613574565b92915050565b6000819050919050565b60006135c36135be6135b984613123565b61359e565b613123565b9050919050565b60006135d5826135a8565b9050919050565b60006135e7826135ca565b9050919050565b6135f7816135dc565b82525050565b600060208201905061361260008301846135ee565b92915050565b6000806040838503121561362f5761362e613119565b5b600061363d8582860161316c565b925050602061364e8582860161316c565b9150509250929050565b61366181613538565b811461366c57600080fd5b50565b60008135905061367e81613658565b92915050565b60006020828403121561369a57613699613119565b5b60006136a88482850161366f565b91505092915050565b60006136bc826135ca565b9050919050565b6136cc816136b1565b82525050565b60006020820190506136e760008301846136c3565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b600061372360068361305f565b915061372e826136ed565b602082019050919050565b6000602082019050818103600083015261375281613716565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137c282613181565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137f5576137f4613788565b5b600182019050919050565b60008151905061380f8161318b565b92915050565b60006020828403121561382b5761382a613119565b5b600061383984828501613800565b91505092915050565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b600061387860148361305f565b915061388382613842565b602082019050919050565b600060208201905081810360008301526138a78161386b565b9050919050565b60006138b9826135ca565b9050919050565b6138c9816138ae565b82525050565b60006020820190506138e460008301846138c0565b92915050565b60006138f582613181565b915061390083613181565b92508282101561391357613912613788565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b600061395460188361305f565b915061395f8261391e565b602082019050919050565b6000602082019050818103600083015261398381613947565b9050919050565b7f4e69636520747279000000000000000000000000000000000000000000000000600082015250565b60006139c060088361305f565b91506139cb8261398a565b602082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b6000613a2c600c8361305f565b9150613a37826139f6565b602082019050919050565b60006020820190508181036000830152613a5b81613a1f565b9050919050565b6000613a6d82613181565b9150613a7883613181565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aad57613aac613788565b5b828201905092915050565b6000604082019050613acd6000830185613574565b613ada602083018461325a565b9392505050565b6000819050919050565b6000613b06613b01613afc84613ae1565b61359e565b613181565b9050919050565b613b1681613aeb565b82525050565b6000604082019050613b316000830185613574565b613b3e6020830184613b0d565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b7b601b8361305f565b9150613b8682613b45565b602082019050919050565b60006020820190508181036000830152613baa81613b6e565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613be681613143565b82525050565b6000613bf88383613bdd565b60208301905092915050565b6000602082019050919050565b6000613c1c82613bb1565b613c268185613bbc565b9350613c3183613bcd565b8060005b83811015613c62578151613c498882613bec565b9750613c5483613c04565b925050600181019050613c35565b5085935050505092915050565b600060a082019050613c84600083018861325a565b613c916020830187613b0d565b8181036040830152613ca38186613c11565b9050613cb26060830185613574565b613cbf608083018461325a565b9695505050505050565b6000613cd482613181565b9150613cdf83613181565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1857613d17613788565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d5d82613181565b9150613d6883613181565b925082613d7857613d77613d23565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ddf60218361305f565b9150613dea82613d83565b604082019050919050565b60006020820190508181036000830152613e0e81613dd2565b905091905056fea2646970667358221220304943e60ed7840bb0b80d9a81480da63f0f3fd2fb1903b2a9eaf293eb581abf64736f6c63430008090033
Deployed Bytecode Sourcemap
9639:10251:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12382:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12804:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18589:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12112:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18879:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13322:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19030:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3025:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12206:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17189:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17415:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13028:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19730:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19180:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18027:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19483:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18154:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16810:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12552:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19610:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10546:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12468:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18711:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12292:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10771:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13158:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16963:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10799:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10969:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12663:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19323:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18487:90;;;;;;;;;;;;;:::i;:::-;;3253:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18305:174;;;;;;;;;;;;;:::i;:::-;;17887:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10740:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12382:80;12430:13;12454:5;;;;;;;;;;;;;;;;;12447:12;;12382:80;:::o;12804:216::-;12879:4;12931:6;12896:11;:23;12908:10;12896:23;;;;;;;;;;;;;;;:32;12920:7;12896:32;;;;;;;;;;;;;;;:41;;;;12974:7;12953:37;;12962:10;12953:37;;;12983:6;12953:37;;;;;;:::i;:::-;;;;;;;;13008:4;13001:11;;12804:216;;;;:::o;18589:110::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18658:11:::1;;;;;;;;;;;:25;;;18684:6;18658:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18589:110:::0;:::o;12112:88::-;12167:7;12185:12;;12178:19;;12112:88;:::o;18879:139::-;18943:4;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18967:43:::1;18990:4;18997;;;;;;;;;;;19003:6;18967:14;:43::i;:::-;18960:50;;18879:139:::0;;;:::o;13322:370::-;13422:4;13477:17;13442:11;:19;13454:6;13442:19;;;;;;;;;;;;;;;:31;13462:10;13442:31;;;;;;;;;;;;;;;;:52;13439:186;;13544:69;13580:6;13544:69;;;;;;;;;;;;;;;;;:11;:19;13556:6;13544:19;;;;;;;;;;;;;;;:31;13564:10;13544:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;13510:11;:19;13522:6;13510:19;;;;;;;;;;;;;;;:31;13530:10;13510:31;;;;;;;;;;;;;;;:103;;;;13439:186;13644:40;13658:6;13666:9;13677:6;13644:13;:40::i;:::-;13637:47;;13322:370;;;;;:::o;19030:142::-;19083:7;19110:54;19148:15;19158:4;;;;;;;;;;;19148:9;:15::i;:::-;19110:33;19127:15;19137:4;;;;;;;;;;;19127:9;:15::i;:::-;19110:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19103:61;;19030:142;:::o;3025:103::-;3080:4;3115:5;;;;;;;;;;;3104:16;;:7;:16;;;3097:23;;3025:103;;;:::o;12206:80::-;12258:5;10028:1;12267:16;;12206:80;:::o;17189:218::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17269:6:::1;17264:136;17285:5;:12;17281:1;:16;17264:136;;;17333:5;17315;:15;17321:5;17327:1;17321:8;;;;;;;;:::i;:::-;;;;;;;;17315:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17349:37;17370:5;17376:1;17370:8;;;;;;;;:::i;:::-;;;;;;;;17380:5;17349:20;:37::i;:::-;17299:3;;;;;:::i;:::-;;;;17264:136;;;;17189:218:::0;:::o;17415:115::-;17483:4;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17507:5:::1;:15;17513:8;17507:15;;;;;;;;;;;;;;;;;;;;;;;;;17500:22;;17415:115:::0;;;:::o;13028:122::-;13083:4;13107:35;13115:7;13124:17;13107:7;:35::i;:::-;13100:42;;13028:122;;;:::o;19730:157::-;19806:7;19833:11;;;;;;;;;;;:33;;;19867:11;19833:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19826:53;;19730:157;;;:::o;19180:135::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19290:16:::1;19264:15;;:43;;;;;;;;;;;;;;;;;;19180:135:::0;:::o;18027:119::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18132:6:::1;18110:11;:19;18122:6;18110:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18027:119:::0;;:::o;19483:115::-;19535:7;19562:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19555:35;;19483:115;:::o;18154:139::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18232:2:::1;18224:4;:10;;18215:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;18281:4;18270:8;:15;;;;18154:139:::0;:::o;16810:141::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16892:4:::1;16874:5;:15;16880:8;16874:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;16907:36;16928:8;16938:4;16907:20;:36::i;:::-;16810:141:::0;:::o;12552:105::-;12618:7;12636:9;:18;12646:7;12636:18;;;;;;;;;;;;;;;;12629:25;;12552:105;;;:::o;19610:111::-;19660:7;19687:11;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19680:33;;19610:111;:::o;10546:92::-;;;;;;;;;;;;;:::o;12468:78::-;12520:7;12538:5;;;;;;;;;;;12531:12;;12468:78;:::o;18711:156::-;18785:7;18812:11;;;;;;;;;;;:34;;;18847:11;18812:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18805:54;;18711:156;;;:::o;12292:84::-;12342:13;12366:7;;;;;;;;;;;;;;;;;12359:14;;12292:84;:::o;10771:19::-;;;;;;;;;;;;;:::o;13158:156::-;13238:4;13262:44;13276:10;13288:9;13299:6;13262:13;:44::i;:::-;13255:51;;13158:156;;;;:::o;16963:216::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17043:6:::1;17038:134;17059:5;:12;17055:1;:16;17038:134;;;17107:4;17089:5;:15;17095:5;17101:1;17095:8;;;;;;;;:::i;:::-;;;;;;;;17089:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17122:36;17143:5;17149:1;17143:8;;;;;;;;:::i;:::-;;;;;;;;17153:4;17122:20;:36::i;:::-;17073:3;;;;;:::i;:::-;;;;17038:134;;;;16963:216:::0;:::o;10799:25::-;;;;:::o;10969:38::-;;;;;;;;;;;;;:::o;12663:133::-;12747:7;12765:11;:19;12777:6;12765:19;;;;;;;;;;;;;;;:28;12785:7;12765:28;;;;;;;;;;;;;;;;12758:35;;12663:133;;;;:::o;19323:152::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19412:9:::1;19393:8;;:29;;;;;;;;;;;;;;;;;;19433:11;;;;;;;;;;;:23;;;19457:9;19433:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19323:152:::0;:::o;18487:90::-;18532:11;;;;;;;;;;;:25;;;18558:10;18532:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18487:90::o;3253:136::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3337:3:::1;3329:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3356:25;3377:3;3356:25;;;;;;:::i;:::-;;;;;;;;3253:136:::0;:::o;18305:174::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18357:26:::1;18386:21;18357:50;;18426:15;;;;;;;;;;;18418:33;;:53;18452:18;18418:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18346:133;18305:174::o:0;17887:132::-;2924:19;2932:10;2924:7;:19::i;:::-;2916:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17975:36:::1;17996:6;18004;17975:20;:36::i;:::-;17887:132:::0;;:::o;10740:24::-;;;;;;;;;;;;;:::o;15169:330::-;15262:4;15299:53;15321:6;15299:53;;;;;;;;;;;;;;;;;:9;:17;15309:6;15299:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15279:9;:17;15289:6;15279:17;;;;;;;;;;;;;;;:73;;;;15386:32;15411:6;15386:9;:20;15396:9;15386:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15363:9;:20;15373:9;15363:20;;;;;;;;;;;;;;;:55;;;;15451:9;15434:35;;15443:6;15434:35;;;15462:6;15434:35;;;;;;:::i;:::-;;;;;;;;15487:4;15480:11;;15169:330;;;;;:::o;687:192::-;773:7;806:1;801;:6;;809:12;793:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;833:9;849:1;845;:5;;;;:::i;:::-;833:17;;870:1;863:8;;;687:192;;;;;:::o;13700:1457::-;13792:4;13822:5;;;;;;;;;;;13813:14;;:6;:14;;;;:35;;;;;13843:5;;;;;;;;;;13831:17;;:9;:17;;;;13813:35;13809:89;;;13858:11;;;;;;;;;;;13850:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13809:89;13959:5;:13;13965:6;13959:13;;;;;;;;;;;;;;;;;;;;;;;;;13958:14;:35;;;;;13977:5;:16;13983:9;13977:16;;;;;;;;;;;;;;;;;;;;;;;;;13976:17;13958:35;13949:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14021:8;;;;;;;;;;;14017:130;;;14059:5;;;;;;;;;;14051:13;;:6;:13;;;;:34;;;;;14080:5;;;;;;;;;;14068:17;;:9;:17;;;;14051:34;14047:80;;;14104:6;;14096;:14;;14087:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;14047:80;14017:130;14191:1;14178:10;;:14;;;;:::i;:::-;14161:12;:32;14157:139;;14230:4;14211:5;:16;14217:9;14211:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14279:4;14249:16;:27;14266:9;14249:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14157:139;14318:6;;;;;;;;;;14315:63;;;14334:41;14349:6;14357:9;14368:6;14334:14;:41::i;:::-;14327:48;;;;14315:63;14400:19;14449:4;;;;;;;;;;;14438:15;;:9;:15;;;:47;;;;;14484:1;14457:24;14475:4;14457:9;:24::i;:::-;:28;14438:47;14400:86;;14500:14;14497:33;;;14517:10;:8;:10::i;:::-;14497:33;14562:53;14584:6;14562:53;;;;;;;;;;;;;;;;;:9;:17;14572:6;14562:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14542:9;:17;14552:6;14542:17;;;;;;;;;;;;;;;:73;;;;14628:22;14653:32;14667:6;14675:9;14653:13;:32::i;:::-;:67;;14714:6;14653:67;;;14688:23;14696:6;14704;14688:7;:23::i;:::-;14653:67;14628:92;;14764:40;14789:14;14764:9;:20;14774:9;14764:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14741:9;:20;14751:9;14741:20;;;;;;;;;;;;;;;:63;;;;14830:4;;;;;;;;;;;14820:14;;:6;:14;;;;:43;;;;;14839:16;:24;14856:6;14839:24;;;;;;;;;;;;;;;;;;;;;;;;;14838:25;14820:43;14817:114;;;14870:11;;;;;;;;;;;:20;;;14891:6;14899:9;:17;14909:6;14899:17;;;;;;;;;;;;;;;;14870:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14866:63;;;;;;14817:114;14957:4;;;;;;;;;;;14944:17;;:9;:17;;;;:49;;;;;14966:16;:27;14983:9;14966:27;;;;;;;;;;;;;;;;;;;;;;;;;14965:28;14944:49;14941:126;;;15000:11;;;;;;;;;;;:20;;;15021:9;15032;:20;15042:9;15032:20;;;;;;;;;;;;;;;;15000:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14996:69;;;;;;14941:126;15101:9;15084:43;;15093:6;15084:43;;;15112:14;15084:43;;;;;;:::i;:::-;;;;;;;;15145:4;15138:11;;;;13700:1457;;;;;;:::o;545:136::-;603:7;630:43;634:1;637;630:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;623:50;;545:136;;;;:::o;17542:337::-;17647:4;17629:23;;:6;:23;;;;:41;;;;;17666:4;;;;;;;;;;;17656:14;;:6;:14;;;;17629:41;17621:50;;;;;;17709:6;17682:16;:24;17699:6;17682:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17729:6;17726:146;;;17751:11;;;;;;;;;;;:20;;;17772:6;17780:1;17751:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17726:146;;;17813:11;;;;;;;;;;;:20;;;17834:6;17842:9;:17;17852:6;17842:17;;;;;;;;;;;;;;;;17813:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17726:146;17542:337;;:::o;358:181::-;416:7;436:9;452:1;448;:5;;;;:::i;:::-;436:17;;477:1;472;:6;;464:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;530:1;523:8;;;358:181;;;;:::o;16093:701::-;11091:4;11082:6;;:13;;;;;;;;;;;;;;;;;;16142:20:::1;16165:24;16183:4;16165:9;:24::i;:::-;16142:47;;16202:21;16240:1;16226:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16202:40;;16271:4;16253;16258:1;16253:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;16297:4;;;;;;;;;;;16287;16292:1;16287:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;16324:6;;;;;;;;;;;:57;;;16396:12;16423:1;16439:4;16466;16486:15;16324:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16533:22;16558:30;16586:1;16559:21;16558:27;;:30;;;;:::i;:::-;16533:55;;16599:23;16625:30;16653:1;16626:21;16625:27;;:30;;;;:::i;:::-;16599:56;;16691:15;;;;;;;;;;;16683:33;;:50;16717:15;16683:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16752:8;;;;;;;;;;;16744:26;;:42;16771:14;16744:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16131:663;;;;11109:5:::0;11100:6;;:14;;;;;;;;;;;;;;;;;;16093:701::o;15510:206::-;15591:4;15619:11;:19;15631:6;15619:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;15642:11;:22;15654:9;15642:22;;;;;;;;;;;;;;;;;;;;;;;;;15619:45;15617:48;:90;;;;;15681:4;;;;;;;;;;;15671:14;;:6;:14;;;:35;;;;15702:4;;;;;;;;;;;15689:17;;:9;:17;;;15671:35;15617:90;15608:101;;15510:206;;;;:::o;15724:356::-;15791:7;15811:17;15851:40;15876:14;;15851:20;15862:8;;15851:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;15839:52;;15929:39;15958:9;15929;:24;15947:4;15929:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15902:9;:24;15920:4;15902:24;;;;;;;;;;;;;;;:66;;;;16051:21;16062:9;16051:6;:10;;:21;;;;:::i;:::-;16044:28;;;15724:356;;;;:::o;1141:132::-;1199:7;1226:39;1230:1;1233;1226:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1219:46;;1141:132;;;;:::o;885:250::-;943:7;972:1;967;:6;963:47;;;997:1;990:8;;;;963:47;1022:9;1038:1;1034;:5;;;;:::i;:::-;1022:17;;1067:1;1062;1058;:5;;;;:::i;:::-;:10;1050:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1126:1;1119:8;;;885:250;;;;;:::o;1279:345::-;1365:7;1464:1;1460;:5;1467:12;1452:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1491:9;1507:1;1503;:5;;;;:::i;:::-;1491:17;;1615:1;1608:8;;;1279:345;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:619::-;4593:6;4601;4609;4658:2;4646:9;4637:7;4633:23;4629:32;4626:119;;;4664:79;;:::i;:::-;4626:119;4784:1;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4755:117;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;5039:2;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5010:118;4516:619;;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:117::-;5680:1;5677;5670:12;5694:180;5742:77;5739:1;5732:88;5839:4;5836:1;5829:15;5863:4;5860:1;5853:15;5880:281;5963:27;5985:4;5963:27;:::i;:::-;5955:6;5951:40;6093:6;6081:10;6078:22;6057:18;6045:10;6042:34;6039:62;6036:88;;;6104:18;;:::i;:::-;6036:88;6144:10;6140:2;6133:22;5923:238;5880:281;;:::o;6167:129::-;6201:6;6228:20;;:::i;:::-;6218:30;;6257:33;6285:4;6277:6;6257:33;:::i;:::-;6167:129;;;:::o;6302:311::-;6379:4;6469:18;6461:6;6458:30;6455:56;;;6491:18;;:::i;:::-;6455:56;6541:4;6533:6;6529:17;6521:25;;6601:4;6595;6591:15;6583:23;;6302:311;;;:::o;6619:117::-;6728:1;6725;6718:12;6759:710;6855:5;6880:81;6896:64;6953:6;6896:64;:::i;:::-;6880:81;:::i;:::-;6871:90;;6981:5;7010:6;7003:5;6996:21;7044:4;7037:5;7033:16;7026:23;;7097:4;7089:6;7085:17;7077:6;7073:30;7126:3;7118:6;7115:15;7112:122;;;7145:79;;:::i;:::-;7112:122;7260:6;7243:220;7277:6;7272:3;7269:15;7243:220;;;7352:3;7381:37;7414:3;7402:10;7381:37;:::i;:::-;7376:3;7369:50;7448:4;7443:3;7439:14;7432:21;;7319:144;7303:4;7298:3;7294:14;7287:21;;7243:220;;;7247:21;6861:608;;6759:710;;;;;:::o;7492:370::-;7563:5;7612:3;7605:4;7597:6;7593:17;7589:27;7579:122;;7620:79;;:::i;:::-;7579:122;7737:6;7724:20;7762:94;7852:3;7844:6;7837:4;7829:6;7825:17;7762:94;:::i;:::-;7753:103;;7569:293;7492:370;;;;:::o;7868:539::-;7952:6;8001:2;7989:9;7980:7;7976:23;7972:32;7969:119;;;8007:79;;:::i;:::-;7969:119;8155:1;8144:9;8140:17;8127:31;8185:18;8177:6;8174:30;8171:117;;;8207:79;;:::i;:::-;8171:117;8312:78;8382:7;8373:6;8362:9;8358:22;8312:78;:::i;:::-;8302:88;;8098:302;7868:539;;;;:::o;8413:116::-;8483:21;8498:5;8483:21;:::i;:::-;8476:5;8473:32;8463:60;;8519:1;8516;8509:12;8463:60;8413:116;:::o;8535:133::-;8578:5;8616:6;8603:20;8594:29;;8632:30;8656:5;8632:30;:::i;:::-;8535:133;;;;:::o;8674:468::-;8739:6;8747;8796:2;8784:9;8775:7;8771:23;8767:32;8764:119;;;8802:79;;:::i;:::-;8764:119;8922:1;8947:53;8992:7;8983:6;8972:9;8968:22;8947:53;:::i;:::-;8937:63;;8893:117;9049:2;9075:50;9117:7;9108:6;9097:9;9093:22;9075:50;:::i;:::-;9065:60;;9020:115;8674:468;;;;;:::o;9148:104::-;9193:7;9222:24;9240:5;9222:24;:::i;:::-;9211:35;;9148:104;;;:::o;9258:142::-;9361:32;9387:5;9361:32;:::i;:::-;9356:3;9349:45;9258:142;;:::o;9406:254::-;9515:4;9553:2;9542:9;9538:18;9530:26;;9566:87;9650:1;9639:9;9635:17;9626:6;9566:87;:::i;:::-;9406:254;;;;:::o;9666:118::-;9753:24;9771:5;9753:24;:::i;:::-;9748:3;9741:37;9666:118;;:::o;9790:222::-;9883:4;9921:2;9910:9;9906:18;9898:26;;9934:71;10002:1;9991:9;9987:17;9978:6;9934:71;:::i;:::-;9790:222;;;;:::o;10018:60::-;10046:3;10067:5;10060:12;;10018:60;;;:::o;10084:142::-;10134:9;10167:53;10185:34;10194:24;10212:5;10194:24;:::i;:::-;10185:34;:::i;:::-;10167:53;:::i;:::-;10154:66;;10084:142;;;:::o;10232:126::-;10282:9;10315:37;10346:5;10315:37;:::i;:::-;10302:50;;10232:126;;;:::o;10364:153::-;10441:9;10474:37;10505:5;10474:37;:::i;:::-;10461:50;;10364:153;;;:::o;10523:185::-;10637:64;10695:5;10637:64;:::i;:::-;10632:3;10625:77;10523:185;;:::o;10714:276::-;10834:4;10872:2;10861:9;10857:18;10849:26;;10885:98;10980:1;10969:9;10965:17;10956:6;10885:98;:::i;:::-;10714:276;;;;:::o;10996:474::-;11064:6;11072;11121:2;11109:9;11100:7;11096:23;11092:32;11089:119;;;11127:79;;:::i;:::-;11089:119;11247:1;11272:53;11317:7;11308:6;11297:9;11293:22;11272:53;:::i;:::-;11262:63;;11218:117;11374:2;11400:53;11445:7;11436:6;11425:9;11421:22;11400:53;:::i;:::-;11390:63;;11345:118;10996:474;;;;;:::o;11476:138::-;11557:32;11583:5;11557:32;:::i;:::-;11550:5;11547:43;11537:71;;11604:1;11601;11594:12;11537:71;11476:138;:::o;11620:155::-;11674:5;11712:6;11699:20;11690:29;;11728:41;11763:5;11728:41;:::i;:::-;11620:155;;;;:::o;11781:345::-;11848:6;11897:2;11885:9;11876:7;11872:23;11868:32;11865:119;;;11903:79;;:::i;:::-;11865:119;12023:1;12048:61;12101:7;12092:6;12081:9;12077:22;12048:61;:::i;:::-;12038:71;;11994:125;11781:345;;;;:::o;12132:144::-;12200:9;12233:37;12264:5;12233:37;:::i;:::-;12220:50;;12132:144;;;:::o;12282:167::-;12387:55;12436:5;12387:55;:::i;:::-;12382:3;12375:68;12282:167;;:::o;12455:258::-;12566:4;12604:2;12593:9;12589:18;12581:26;;12617:89;12703:1;12692:9;12688:17;12679:6;12617:89;:::i;:::-;12455:258;;;;:::o;12719:156::-;12859:8;12855:1;12847:6;12843:14;12836:32;12719:156;:::o;12881:365::-;13023:3;13044:66;13108:1;13103:3;13044:66;:::i;:::-;13037:73;;13119:93;13208:3;13119:93;:::i;:::-;13237:2;13232:3;13228:12;13221:19;;12881:365;;;:::o;13252:419::-;13418:4;13456:2;13445:9;13441:18;13433:26;;13505:9;13499:4;13495:20;13491:1;13480:9;13476:17;13469:47;13533:131;13659:4;13533:131;:::i;:::-;13525:139;;13252:419;;;:::o;13677:180::-;13725:77;13722:1;13715:88;13822:4;13819:1;13812:15;13846:4;13843:1;13836:15;13863:180;13911:77;13908:1;13901:88;14008:4;14005:1;13998:15;14032:4;14029:1;14022:15;14049:233;14088:3;14111:24;14129:5;14111:24;:::i;:::-;14102:33;;14157:66;14150:5;14147:77;14144:103;;;14227:18;;:::i;:::-;14144:103;14274:1;14267:5;14263:13;14256:20;;14049:233;;;:::o;14288:143::-;14345:5;14376:6;14370:13;14361:22;;14392:33;14419:5;14392:33;:::i;:::-;14288:143;;;;:::o;14437:351::-;14507:6;14556:2;14544:9;14535:7;14531:23;14527:32;14524:119;;;14562:79;;:::i;:::-;14524:119;14682:1;14707:64;14763:7;14754:6;14743:9;14739:22;14707:64;:::i;:::-;14697:74;;14653:128;14437:351;;;;:::o;14794:170::-;14934:22;14930:1;14922:6;14918:14;14911:46;14794:170;:::o;14970:366::-;15112:3;15133:67;15197:2;15192:3;15133:67;:::i;:::-;15126:74;;15209:93;15298:3;15209:93;:::i;:::-;15327:2;15322:3;15318:12;15311:19;;14970:366;;;:::o;15342:419::-;15508:4;15546:2;15535:9;15531:18;15523:26;;15595:9;15589:4;15585:20;15581:1;15570:9;15566:17;15559:47;15623:131;15749:4;15623:131;:::i;:::-;15615:139;;15342:419;;;:::o;15767:134::-;15825:9;15858:37;15889:5;15858:37;:::i;:::-;15845:50;;15767:134;;;:::o;15907:147::-;16002:45;16041:5;16002:45;:::i;:::-;15997:3;15990:58;15907:147;;:::o;16060:238::-;16161:4;16199:2;16188:9;16184:18;16176:26;;16212:79;16288:1;16277:9;16273:17;16264:6;16212:79;:::i;:::-;16060:238;;;;:::o;16304:191::-;16344:4;16364:20;16382:1;16364:20;:::i;:::-;16359:25;;16398:20;16416:1;16398:20;:::i;:::-;16393:25;;16437:1;16434;16431:8;16428:34;;;16442:18;;:::i;:::-;16428:34;16487:1;16484;16480:9;16472:17;;16304:191;;;;:::o;16501:174::-;16641:26;16637:1;16629:6;16625:14;16618:50;16501:174;:::o;16681:366::-;16823:3;16844:67;16908:2;16903:3;16844:67;:::i;:::-;16837:74;;16920:93;17009:3;16920:93;:::i;:::-;17038:2;17033:3;17029:12;17022:19;;16681:366;;;:::o;17053:419::-;17219:4;17257:2;17246:9;17242:18;17234:26;;17306:9;17300:4;17296:20;17292:1;17281:9;17277:17;17270:47;17334:131;17460:4;17334:131;:::i;:::-;17326:139;;17053:419;;;:::o;17478:158::-;17618:10;17614:1;17606:6;17602:14;17595:34;17478:158;:::o;17642:365::-;17784:3;17805:66;17869:1;17864:3;17805:66;:::i;:::-;17798:73;;17880:93;17969:3;17880:93;:::i;:::-;17998:2;17993:3;17989:12;17982:19;;17642:365;;;:::o;18013:419::-;18179:4;18217:2;18206:9;18202:18;18194:26;;18266:9;18260:4;18256:20;18252:1;18241:9;18237:17;18230:47;18294:131;18420:4;18294:131;:::i;:::-;18286:139;;18013:419;;;:::o;18438:162::-;18578:14;18574:1;18566:6;18562:14;18555:38;18438:162;:::o;18606:366::-;18748:3;18769:67;18833:2;18828:3;18769:67;:::i;:::-;18762:74;;18845:93;18934:3;18845:93;:::i;:::-;18963:2;18958:3;18954:12;18947:19;;18606:366;;;:::o;18978:419::-;19144:4;19182:2;19171:9;19167:18;19159:26;;19231:9;19225:4;19221:20;19217:1;19206:9;19202:17;19195:47;19259:131;19385:4;19259:131;:::i;:::-;19251:139;;18978:419;;;:::o;19403:305::-;19443:3;19462:20;19480:1;19462:20;:::i;:::-;19457:25;;19496:20;19514:1;19496:20;:::i;:::-;19491:25;;19650:1;19582:66;19578:74;19575:1;19572:81;19569:107;;;19656:18;;:::i;:::-;19569:107;19700:1;19697;19693:9;19686:16;;19403:305;;;;:::o;19714:332::-;19835:4;19873:2;19862:9;19858:18;19850:26;;19886:71;19954:1;19943:9;19939:17;19930:6;19886:71;:::i;:::-;19967:72;20035:2;20024:9;20020:18;20011:6;19967:72;:::i;:::-;19714:332;;;;;:::o;20052:85::-;20097:7;20126:5;20115:16;;20052:85;;;:::o;20143:158::-;20201:9;20234:61;20252:42;20261:32;20287:5;20261:32;:::i;:::-;20252:42;:::i;:::-;20234:61;:::i;:::-;20221:74;;20143:158;;;:::o;20307:147::-;20402:45;20441:5;20402:45;:::i;:::-;20397:3;20390:58;20307:147;;:::o;20460:348::-;20589:4;20627:2;20616:9;20612:18;20604:26;;20640:71;20708:1;20697:9;20693:17;20684:6;20640:71;:::i;:::-;20721:80;20797:2;20786:9;20782:18;20773:6;20721:80;:::i;:::-;20460:348;;;;;:::o;20814:177::-;20954:29;20950:1;20942:6;20938:14;20931:53;20814:177;:::o;20997:366::-;21139:3;21160:67;21224:2;21219:3;21160:67;:::i;:::-;21153:74;;21236:93;21325:3;21236:93;:::i;:::-;21354:2;21349:3;21345:12;21338:19;;20997:366;;;:::o;21369:419::-;21535:4;21573:2;21562:9;21558:18;21550:26;;21622:9;21616:4;21612:20;21608:1;21597:9;21593:17;21586:47;21650:131;21776:4;21650:131;:::i;:::-;21642:139;;21369:419;;;:::o;21794:114::-;21861:6;21895:5;21889:12;21879:22;;21794:114;;;:::o;21914:184::-;22013:11;22047:6;22042:3;22035:19;22087:4;22082:3;22078:14;22063:29;;21914:184;;;;:::o;22104:132::-;22171:4;22194:3;22186:11;;22224:4;22219:3;22215:14;22207:22;;22104:132;;;:::o;22242:108::-;22319:24;22337:5;22319:24;:::i;:::-;22314:3;22307:37;22242:108;;:::o;22356:179::-;22425:10;22446:46;22488:3;22480:6;22446:46;:::i;:::-;22524:4;22519:3;22515:14;22501:28;;22356:179;;;;:::o;22541:113::-;22611:4;22643;22638:3;22634:14;22626:22;;22541:113;;;:::o;22690:732::-;22809:3;22838:54;22886:5;22838:54;:::i;:::-;22908:86;22987:6;22982:3;22908:86;:::i;:::-;22901:93;;23018:56;23068:5;23018:56;:::i;:::-;23097:7;23128:1;23113:284;23138:6;23135:1;23132:13;23113:284;;;23214:6;23208:13;23241:63;23300:3;23285:13;23241:63;:::i;:::-;23234:70;;23327:60;23380:6;23327:60;:::i;:::-;23317:70;;23173:224;23160:1;23157;23153:9;23148:14;;23113:284;;;23117:14;23413:3;23406:10;;22814:608;;;22690:732;;;;:::o;23428:831::-;23691:4;23729:3;23718:9;23714:19;23706:27;;23743:71;23811:1;23800:9;23796:17;23787:6;23743:71;:::i;:::-;23824:80;23900:2;23889:9;23885:18;23876:6;23824:80;:::i;:::-;23951:9;23945:4;23941:20;23936:2;23925:9;23921:18;23914:48;23979:108;24082:4;24073:6;23979:108;:::i;:::-;23971:116;;24097:72;24165:2;24154:9;24150:18;24141:6;24097:72;:::i;:::-;24179:73;24247:3;24236:9;24232:19;24223:6;24179:73;:::i;:::-;23428:831;;;;;;;;:::o;24265:348::-;24305:7;24328:20;24346:1;24328:20;:::i;:::-;24323:25;;24362:20;24380:1;24362:20;:::i;:::-;24357:25;;24550:1;24482:66;24478:74;24475:1;24472:81;24467:1;24460:9;24453:17;24449:105;24446:131;;;24557:18;;:::i;:::-;24446:131;24605:1;24602;24598:9;24587:20;;24265:348;;;;:::o;24619:180::-;24667:77;24664:1;24657:88;24764:4;24761:1;24754:15;24788:4;24785:1;24778:15;24805:185;24845:1;24862:20;24880:1;24862:20;:::i;:::-;24857:25;;24896:20;24914:1;24896:20;:::i;:::-;24891:25;;24935:1;24925:35;;24940:18;;:::i;:::-;24925:35;24982:1;24979;24975:9;24970:14;;24805:185;;;;:::o;24996:220::-;25136:34;25132:1;25124:6;25120:14;25113:58;25205:3;25200:2;25192:6;25188:15;25181:28;24996:220;:::o;25222:366::-;25364:3;25385:67;25449:2;25444:3;25385:67;:::i;:::-;25378:74;;25461:93;25550:3;25461:93;:::i;:::-;25579:2;25574:3;25570:12;25563:19;;25222:366;;;:::o;25594:419::-;25760:4;25798:2;25787:9;25783:18;25775:26;;25847:9;25841:4;25837:20;25833:1;25822:9;25818:17;25811:47;25875:131;26001:4;25875:131;:::i;:::-;25867:139;;25594:419;;;:::o
Swarm Source
ipfs://335b85ba69910c29b27518fd7c2379007f3a72d2f56bb1bc396e4b52ec13e9da
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.