ERC-20
Overview
Max Total Supply
1,000,000,000 KAN
Holders
5
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
8,067,262.116136875 KANValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Kansha
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-22 */ /** Kansha Suru 感謝する - Meaning to Give Thanks During the holiday season, we must come together and give thanks. Buy tax: 2% Sell tax: 2% 2% - auto lp 2% - giveaways to the community as a reward of what we create. @KanshaSuru */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); 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 ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract Kansha is Context, IERC20, Ownable { using SafeMath for uint256; //naming string private constant _name = "Kansha Suru"; string private constant _symbol = "KAN"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; //total supply uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1_000_000_000 * 10**9; //fees uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 2; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 2; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x1Ef80Ef6d6b5e761FdfAA952d24908449e0aaD32); address payable private _marketingAddress = payable(0x1Ef80Ef6d6b5e761FdfAA952d24908449e0aaD32); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingstarts = false; bool private inSwap = false; bool private swappingEnabled = true; uint256 public _maxTxAmount = 10_000_000 * 10**9; uint256 public _maxWalletSize = 20_000_000 * 10**9; uint256 public _swapTokensAtAmount = 20_000_000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function enableTrading() external onlyOwner { tradingstarts = true; } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingstarts) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swappingEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { uint256 tfrAmt = amount.div(2); _marketingAddress.transfer(tfrAmt); _developmentAddress.transfer(amount.sub(tfrAmt)); } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set maximum transaction function setMaxTxn(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWallet(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","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":"pure","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006000196200001c91906200075a565b6000196200002b9190620007c1565b600655600060085560026009556000600a556002600b55600a54600c55600b54600d55600c54600e55600d54600f55731ef80ef6d6b5e761fdfaa952d24908449e0aad32601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731ef80ef6d6b5e761fdfaa952d24908449e0aad32601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550662386f26fc1000060165566470de4df82000060175566470de4df8200006018553480156200018257600080fd5b50600062000195620006f060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024a620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032957600080fd5b505afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000364919062000866565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c757600080fd5b505afa158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000402919062000866565b6040518363ffffffff1660e01b815260040162000421929190620008a9565b602060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000477919062000866565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cd620006f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200067a620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e19190620008e7565b60405180910390a35062000904565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007678262000721565b9150620007748362000721565b9250826200078757620007866200072b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007ce8262000721565b9150620007db8362000721565b925082821015620007f157620007f062000792565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082e8262000801565b9050919050565b620008408162000821565b81146200084c57600080fd5b50565b600081519050620008608162000835565b92915050565b6000602082840312156200087f576200087e620007fc565b5b60006200088f848285016200084f565b91505092915050565b620008a38162000821565b82525050565b6000604082019050620008c0600083018562000898565b620008cf602083018462000898565b9392505050565b620008e18162000721565b82525050565b6000602082019050620008fe6000830184620008d6565b92915050565b61391480620009146000396000f3fe6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105e2578063dd62ed3e1461060b578063f2fde38b14610648578063fc588c0414610671576101c1565b8063a9059cbb14610551578063bfd792841461058e578063c3c8cd80146105cb576101c1565b80638da5cb5b116100c65780638da5cb5b146104a75780638f9a55c0146104d257806395d89b41146104fd57806398a5c31514610528576101c1565b80637d1db4a5146104285780637f2feddc146104535780638a8c523c14610490576101c1565b8063313ce567116101595780636b999053116101335780636b999053146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780635d0044ca1461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612934565b61069a565b005b3480156101fb57600080fd5b506102046107c4565b6040516102119190612a05565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612a5d565b610801565b60405161024e9190612ab8565b60405180910390f35b34801561026357600080fd5b5061026c61081f565b6040516102799190612b32565b60405180910390f35b34801561028e57600080fd5b50610297610845565b6040516102a49190612b5c565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612b77565b610855565b6040516102e19190612ab8565b60405180910390f35b3480156102f657600080fd5b506102ff61092e565b60405161030c9190612b5c565b60405180910390f35b34801561032157600080fd5b5061032a610934565b6040516103379190612be6565b60405180910390f35b34801561034c57600080fd5b5061035561093d565b6040516103629190612c10565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612c2b565b610963565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612c58565b610a02565b005b3480156103c957600080fd5b506103d2610af2565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612c58565b610bc3565b6040516104089190612b5c565b60405180910390f35b34801561041d57600080fd5b50610426610c14565b005b34801561043457600080fd5b5061043d610d67565b60405161044a9190612b5c565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612c58565b610d6d565b6040516104879190612b5c565b60405180910390f35b34801561049c57600080fd5b506104a5610d85565b005b3480156104b357600080fd5b506104bc610e37565b6040516104c99190612c10565b60405180910390f35b3480156104de57600080fd5b506104e7610e60565b6040516104f49190612b5c565b60405180910390f35b34801561050957600080fd5b50610512610e66565b60405161051f9190612a05565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612c2b565b610ea3565b005b34801561055d57600080fd5b5061057860048036038101906105739190612a5d565b610f42565b6040516105859190612ab8565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612c58565b610f60565b6040516105c29190612ab8565b60405180910390f35b3480156105d757600080fd5b506105e0610f80565b005b3480156105ee57600080fd5b5061060960048036038101906106049190612d0c565b611059565b005b34801561061757600080fd5b50610632600480360381019061062d9190612d6c565b611193565b60405161063f9190612b5c565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612c58565b61121a565b005b34801561067d57600080fd5b5061069860048036038101906106939190612c2b565b6113dc565b005b6106a261147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072690612df8565b60405180910390fd5b60005b81518110156107c05760016010600084848151811061075457610753612e18565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107b890612e76565b915050610732565b5050565b60606040518060400160405280600b81526020017f4b616e7368612053757275000000000000000000000000000000000000000000815250905090565b600061081561080e61147b565b8484611483565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061086284848461164e565b6109238461086e61147b565b61091e856040518060600160405280602881526020016138b760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108d461147b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bea9092919063ffffffff16565b611483565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61096b61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612df8565b60405180910390fd5b8060178190555050565b610a0a61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e90612df8565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b3361147b565b73ffffffffffffffffffffffffffffffffffffffff161480610ba95750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b9161147b565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb257600080fd5b6000479050610bc081611c4e565b50565b6000610c0d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4e565b9050919050565b610c1c61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090612df8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b610d8d61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190612df8565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f4b414e0000000000000000000000000000000000000000000000000000000000815250905090565b610eab61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f90612df8565b60405180910390fd5b8060188190555050565b6000610f56610f4f61147b565b848461164e565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc161147b565b73ffffffffffffffffffffffffffffffffffffffff1614806110375750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661101f61147b565b73ffffffffffffffffffffffffffffffffffffffff16145b61104057600080fd5b600061104b30610bc3565b905061105681611dbc565b50565b61106161147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590612df8565b60405180910390fd5b60005b8383905081101561118d57816005600086868581811061111457611113612e18565b5b90506020020160208101906111299190612c58565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118590612e76565b9150506110f1565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61122261147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690612df8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690612f31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113e461147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890612df8565b60405180910390fd5b8060168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea90612fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90613055565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116419190612b5c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b5906130e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590613179565b60405180910390fd5b60008111611771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117689061320b565b60405180910390fd5b611779610e37565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117e757506117b7610e37565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bd257601560149054906101000a900460ff1661187657611808610e37565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c9061329d565b60405180910390fd5b5b6016548111156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290613309565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561195f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61199e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119959061339b565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a4b5760175481611a0084610bc3565b611a0a91906133bb565b10611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4190613483565b60405180910390fd5b5b6000611a5630610bc3565b9050600060185482101590506016548210611a715760165491505b808015611a89575060158054906101000a900460ff16155b8015611ae35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611afb5750601560169054906101000a900460ff165b8015611b515750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ba75750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bcf57611bb582611dbc565b60004790506000811115611bcd57611bcc47611c4e565b5b505b50505b600060019050611be484848484612042565b50505050565b6000838311158290611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c299190612a05565b60405180910390fd5b5060008385611c4191906134a3565b9050809150509392505050565b6000611c6460028361206f90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cce573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d1e83856120b990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d49573d6000803e3d6000fd5b505050565b6000600654821115611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90613549565b60405180910390fd5b6000611d9f612103565b9050611db4818461206f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611df357611df2612793565b5b604051908082528060200260200182016040528015611e215781602001602082028036833780820191505090505b5090503081600081518110611e3957611e38612e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611edb57600080fd5b505afa158015611eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f13919061357e565b81600181518110611f2757611f26612e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f8e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611483565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ff29594939291906136a4565b600060405180830381600087803b15801561200c57600080fd5b505af1158015612020573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806120505761204f61212e565b5b61205b848484612171565b806120695761206861233c565b5b50505050565b60006120b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612350565b905092915050565b60006120fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bea565b905092915050565b60008060006121106123b3565b91509150612127818361206f90919063ffffffff16565b9250505090565b6000600c5414801561214257506000600d54145b1561214c5761216f565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061218387612412565b9550955095509550955095506121e186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122c2816124d8565b6122cc8483612595565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123299190612b5c565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e9190612a05565b60405180910390fd5b50600083856123a6919061372d565b9050809150509392505050565b600080600060065490506000670de0b6b3a764000090506123e7670de0b6b3a764000060065461206f90919063ffffffff16565b82101561240557600654670de0b6b3a764000093509350505061240e565b81819350935050505b9091565b600080600080600080600080600061242f8a600c54600d546125cf565b925092509250600061243f612103565b905060008060006124528e878787612665565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600080828461248991906133bb565b9050838110156124ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c5906137aa565b60405180910390fd5b8091505092915050565b60006124e2612103565b905060006124f982846126ee90919063ffffffff16565b905061254d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125aa826006546120b990919063ffffffff16565b6006819055506125c58160075461247a90919063ffffffff16565b6007819055505050565b6000806000806125fb60646125ed888a6126ee90919063ffffffff16565b61206f90919063ffffffff16565b905060006126256064612617888b6126ee90919063ffffffff16565b61206f90919063ffffffff16565b9050600061264e82612640858c6120b990919063ffffffff16565b6120b990919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061267e85896126ee90919063ffffffff16565b9050600061269586896126ee90919063ffffffff16565b905060006126ac87896126ee90919063ffffffff16565b905060006126d5826126c785876120b990919063ffffffff16565b6120b990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127015760009050612763565b6000828461270f91906137ca565b905082848261271e919061372d565b1461275e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275590613896565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127cb82612782565b810181811067ffffffffffffffff821117156127ea576127e9612793565b5b80604052505050565b60006127fd612769565b905061280982826127c2565b919050565b600067ffffffffffffffff82111561282957612828612793565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061286a8261283f565b9050919050565b61287a8161285f565b811461288557600080fd5b50565b60008135905061289781612871565b92915050565b60006128b06128ab8461280e565b6127f3565b905080838252602082019050602084028301858111156128d3576128d261283a565b5b835b818110156128fc57806128e88882612888565b8452602084019350506020810190506128d5565b5050509392505050565b600082601f83011261291b5761291a61277d565b5b813561292b84826020860161289d565b91505092915050565b60006020828403121561294a57612949612773565b5b600082013567ffffffffffffffff81111561296857612967612778565b5b61297484828501612906565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129b757808201518184015260208101905061299c565b838111156129c6576000848401525b50505050565b60006129d78261297d565b6129e18185612988565b93506129f1818560208601612999565b6129fa81612782565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b6000819050919050565b612a3a81612a27565b8114612a4557600080fd5b50565b600081359050612a5781612a31565b92915050565b60008060408385031215612a7457612a73612773565b5b6000612a8285828601612888565b9250506020612a9385828601612a48565b9150509250929050565b60008115159050919050565b612ab281612a9d565b82525050565b6000602082019050612acd6000830184612aa9565b92915050565b6000819050919050565b6000612af8612af3612aee8461283f565b612ad3565b61283f565b9050919050565b6000612b0a82612add565b9050919050565b6000612b1c82612aff565b9050919050565b612b2c81612b11565b82525050565b6000602082019050612b476000830184612b23565b92915050565b612b5681612a27565b82525050565b6000602082019050612b716000830184612b4d565b92915050565b600080600060608486031215612b9057612b8f612773565b5b6000612b9e86828701612888565b9350506020612baf86828701612888565b9250506040612bc086828701612a48565b9150509250925092565b600060ff82169050919050565b612be081612bca565b82525050565b6000602082019050612bfb6000830184612bd7565b92915050565b612c0a8161285f565b82525050565b6000602082019050612c256000830184612c01565b92915050565b600060208284031215612c4157612c40612773565b5b6000612c4f84828501612a48565b91505092915050565b600060208284031215612c6e57612c6d612773565b5b6000612c7c84828501612888565b91505092915050565b600080fd5b60008083601f840112612ca057612c9f61277d565b5b8235905067ffffffffffffffff811115612cbd57612cbc612c85565b5b602083019150836020820283011115612cd957612cd861283a565b5b9250929050565b612ce981612a9d565b8114612cf457600080fd5b50565b600081359050612d0681612ce0565b92915050565b600080600060408486031215612d2557612d24612773565b5b600084013567ffffffffffffffff811115612d4357612d42612778565b5b612d4f86828701612c8a565b93509350506020612d6286828701612cf7565b9150509250925092565b60008060408385031215612d8357612d82612773565b5b6000612d9185828601612888565b9250506020612da285828601612888565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612de2602083612988565b9150612ded82612dac565b602082019050919050565b60006020820190508181036000830152612e1181612dd5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e8182612a27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612eb457612eb3612e47565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f1b602683612988565b9150612f2682612ebf565b604082019050919050565b60006020820190508181036000830152612f4a81612f0e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fad602483612988565b9150612fb882612f51565b604082019050919050565b60006020820190508181036000830152612fdc81612fa0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061303f602283612988565b915061304a82612fe3565b604082019050919050565b6000602082019050818103600083015261306e81613032565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d1602583612988565b91506130dc82613075565b604082019050919050565b60006020820190508181036000830152613100816130c4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613163602383612988565b915061316e82613107565b604082019050919050565b6000602082019050818103600083015261319281613156565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131f5602983612988565b915061320082613199565b604082019050919050565b60006020820190508181036000830152613224816131e8565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613287603f83612988565b91506132928261322b565b604082019050919050565b600060208201905081810360008301526132b68161327a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006132f3601c83612988565b91506132fe826132bd565b602082019050919050565b60006020820190508181036000830152613322816132e6565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613385602383612988565b915061339082613329565b604082019050919050565b600060208201905081810360008301526133b481613378565b9050919050565b60006133c682612a27565b91506133d183612a27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561340657613405612e47565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061346d602383612988565b915061347882613411565b604082019050919050565b6000602082019050818103600083015261349c81613460565b9050919050565b60006134ae82612a27565b91506134b983612a27565b9250828210156134cc576134cb612e47565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613533602a83612988565b915061353e826134d7565b604082019050919050565b6000602082019050818103600083015261356281613526565b9050919050565b60008151905061357881612871565b92915050565b60006020828403121561359457613593612773565b5b60006135a284828501613569565b91505092915050565b6000819050919050565b60006135d06135cb6135c6846135ab565b612ad3565b612a27565b9050919050565b6135e0816135b5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61361b8161285f565b82525050565b600061362d8383613612565b60208301905092915050565b6000602082019050919050565b6000613651826135e6565b61365b81856135f1565b935061366683613602565b8060005b8381101561369757815161367e8882613621565b975061368983613639565b92505060018101905061366a565b5085935050505092915050565b600060a0820190506136b96000830188612b4d565b6136c660208301876135d7565b81810360408301526136d88186613646565b90506136e76060830185612c01565b6136f46080830184612b4d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061373882612a27565b915061374383612a27565b925082613753576137526136fe565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613794601b83612988565b915061379f8261375e565b602082019050919050565b600060208201905081810360008301526137c381613787565b9050919050565b60006137d582612a27565b91506137e083612a27565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561381957613818612e47565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613880602183612988565b915061388b82613824565b604082019050919050565b600060208201905081810360008301526138af81613873565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209b2359fcd8b411634f73d5eadb3629acf840fe049aa7e96b3336a5a8bc52465564736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105e2578063dd62ed3e1461060b578063f2fde38b14610648578063fc588c0414610671576101c1565b8063a9059cbb14610551578063bfd792841461058e578063c3c8cd80146105cb576101c1565b80638da5cb5b116100c65780638da5cb5b146104a75780638f9a55c0146104d257806395d89b41146104fd57806398a5c31514610528576101c1565b80637d1db4a5146104285780637f2feddc146104535780638a8c523c14610490576101c1565b8063313ce567116101595780636b999053116101335780636b999053146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780635d0044ca1461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612934565b61069a565b005b3480156101fb57600080fd5b506102046107c4565b6040516102119190612a05565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612a5d565b610801565b60405161024e9190612ab8565b60405180910390f35b34801561026357600080fd5b5061026c61081f565b6040516102799190612b32565b60405180910390f35b34801561028e57600080fd5b50610297610845565b6040516102a49190612b5c565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612b77565b610855565b6040516102e19190612ab8565b60405180910390f35b3480156102f657600080fd5b506102ff61092e565b60405161030c9190612b5c565b60405180910390f35b34801561032157600080fd5b5061032a610934565b6040516103379190612be6565b60405180910390f35b34801561034c57600080fd5b5061035561093d565b6040516103629190612c10565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612c2b565b610963565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612c58565b610a02565b005b3480156103c957600080fd5b506103d2610af2565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612c58565b610bc3565b6040516104089190612b5c565b60405180910390f35b34801561041d57600080fd5b50610426610c14565b005b34801561043457600080fd5b5061043d610d67565b60405161044a9190612b5c565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612c58565b610d6d565b6040516104879190612b5c565b60405180910390f35b34801561049c57600080fd5b506104a5610d85565b005b3480156104b357600080fd5b506104bc610e37565b6040516104c99190612c10565b60405180910390f35b3480156104de57600080fd5b506104e7610e60565b6040516104f49190612b5c565b60405180910390f35b34801561050957600080fd5b50610512610e66565b60405161051f9190612a05565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612c2b565b610ea3565b005b34801561055d57600080fd5b5061057860048036038101906105739190612a5d565b610f42565b6040516105859190612ab8565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612c58565b610f60565b6040516105c29190612ab8565b60405180910390f35b3480156105d757600080fd5b506105e0610f80565b005b3480156105ee57600080fd5b5061060960048036038101906106049190612d0c565b611059565b005b34801561061757600080fd5b50610632600480360381019061062d9190612d6c565b611193565b60405161063f9190612b5c565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612c58565b61121a565b005b34801561067d57600080fd5b5061069860048036038101906106939190612c2b565b6113dc565b005b6106a261147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072690612df8565b60405180910390fd5b60005b81518110156107c05760016010600084848151811061075457610753612e18565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107b890612e76565b915050610732565b5050565b60606040518060400160405280600b81526020017f4b616e7368612053757275000000000000000000000000000000000000000000815250905090565b600061081561080e61147b565b8484611483565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061086284848461164e565b6109238461086e61147b565b61091e856040518060600160405280602881526020016138b760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108d461147b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bea9092919063ffffffff16565b611483565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61096b61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612df8565b60405180910390fd5b8060178190555050565b610a0a61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8e90612df8565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b3361147b565b73ffffffffffffffffffffffffffffffffffffffff161480610ba95750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b9161147b565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb257600080fd5b6000479050610bc081611c4e565b50565b6000610c0d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4e565b9050919050565b610c1c61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090612df8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b610d8d61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1190612df8565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f4b414e0000000000000000000000000000000000000000000000000000000000815250905090565b610eab61147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f90612df8565b60405180910390fd5b8060188190555050565b6000610f56610f4f61147b565b848461164e565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc161147b565b73ffffffffffffffffffffffffffffffffffffffff1614806110375750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661101f61147b565b73ffffffffffffffffffffffffffffffffffffffff16145b61104057600080fd5b600061104b30610bc3565b905061105681611dbc565b50565b61106161147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590612df8565b60405180910390fd5b60005b8383905081101561118d57816005600086868581811061111457611113612e18565b5b90506020020160208101906111299190612c58565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061118590612e76565b9150506110f1565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61122261147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690612df8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690612f31565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113e461147b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890612df8565b60405180910390fd5b8060168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea90612fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90613055565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116419190612b5c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b5906130e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590613179565b60405180910390fd5b60008111611771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117689061320b565b60405180910390fd5b611779610e37565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117e757506117b7610e37565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bd257601560149054906101000a900460ff1661187657611808610e37565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c9061329d565b60405180910390fd5b5b6016548111156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290613309565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561195f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61199e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119959061339b565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a4b5760175481611a0084610bc3565b611a0a91906133bb565b10611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4190613483565b60405180910390fd5b5b6000611a5630610bc3565b9050600060185482101590506016548210611a715760165491505b808015611a89575060158054906101000a900460ff16155b8015611ae35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611afb5750601560169054906101000a900460ff165b8015611b515750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ba75750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bcf57611bb582611dbc565b60004790506000811115611bcd57611bcc47611c4e565b5b505b50505b600060019050611be484848484612042565b50505050565b6000838311158290611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c299190612a05565b60405180910390fd5b5060008385611c4191906134a3565b9050809150509392505050565b6000611c6460028361206f90919063ffffffff16565b9050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cce573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d1e83856120b990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d49573d6000803e3d6000fd5b505050565b6000600654821115611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90613549565b60405180910390fd5b6000611d9f612103565b9050611db4818461206f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611df357611df2612793565b5b604051908082528060200260200182016040528015611e215781602001602082028036833780820191505090505b5090503081600081518110611e3957611e38612e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611edb57600080fd5b505afa158015611eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f13919061357e565b81600181518110611f2757611f26612e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f8e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611483565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ff29594939291906136a4565b600060405180830381600087803b15801561200c57600080fd5b505af1158015612020573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806120505761204f61212e565b5b61205b848484612171565b806120695761206861233c565b5b50505050565b60006120b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612350565b905092915050565b60006120fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bea565b905092915050565b60008060006121106123b3565b91509150612127818361206f90919063ffffffff16565b9250505090565b6000600c5414801561214257506000600d54145b1561214c5761216f565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061218387612412565b9550955095509550955095506121e186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122c2816124d8565b6122cc8483612595565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123299190612b5c565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e9190612a05565b60405180910390fd5b50600083856123a6919061372d565b9050809150509392505050565b600080600060065490506000670de0b6b3a764000090506123e7670de0b6b3a764000060065461206f90919063ffffffff16565b82101561240557600654670de0b6b3a764000093509350505061240e565b81819350935050505b9091565b600080600080600080600080600061242f8a600c54600d546125cf565b925092509250600061243f612103565b905060008060006124528e878787612665565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600080828461248991906133bb565b9050838110156124ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c5906137aa565b60405180910390fd5b8091505092915050565b60006124e2612103565b905060006124f982846126ee90919063ffffffff16565b905061254d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125aa826006546120b990919063ffffffff16565b6006819055506125c58160075461247a90919063ffffffff16565b6007819055505050565b6000806000806125fb60646125ed888a6126ee90919063ffffffff16565b61206f90919063ffffffff16565b905060006126256064612617888b6126ee90919063ffffffff16565b61206f90919063ffffffff16565b9050600061264e82612640858c6120b990919063ffffffff16565b6120b990919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061267e85896126ee90919063ffffffff16565b9050600061269586896126ee90919063ffffffff16565b905060006126ac87896126ee90919063ffffffff16565b905060006126d5826126c785876120b990919063ffffffff16565b6120b990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127015760009050612763565b6000828461270f91906137ca565b905082848261271e919061372d565b1461275e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275590613896565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127cb82612782565b810181811067ffffffffffffffff821117156127ea576127e9612793565b5b80604052505050565b60006127fd612769565b905061280982826127c2565b919050565b600067ffffffffffffffff82111561282957612828612793565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061286a8261283f565b9050919050565b61287a8161285f565b811461288557600080fd5b50565b60008135905061289781612871565b92915050565b60006128b06128ab8461280e565b6127f3565b905080838252602082019050602084028301858111156128d3576128d261283a565b5b835b818110156128fc57806128e88882612888565b8452602084019350506020810190506128d5565b5050509392505050565b600082601f83011261291b5761291a61277d565b5b813561292b84826020860161289d565b91505092915050565b60006020828403121561294a57612949612773565b5b600082013567ffffffffffffffff81111561296857612967612778565b5b61297484828501612906565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129b757808201518184015260208101905061299c565b838111156129c6576000848401525b50505050565b60006129d78261297d565b6129e18185612988565b93506129f1818560208601612999565b6129fa81612782565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b6000819050919050565b612a3a81612a27565b8114612a4557600080fd5b50565b600081359050612a5781612a31565b92915050565b60008060408385031215612a7457612a73612773565b5b6000612a8285828601612888565b9250506020612a9385828601612a48565b9150509250929050565b60008115159050919050565b612ab281612a9d565b82525050565b6000602082019050612acd6000830184612aa9565b92915050565b6000819050919050565b6000612af8612af3612aee8461283f565b612ad3565b61283f565b9050919050565b6000612b0a82612add565b9050919050565b6000612b1c82612aff565b9050919050565b612b2c81612b11565b82525050565b6000602082019050612b476000830184612b23565b92915050565b612b5681612a27565b82525050565b6000602082019050612b716000830184612b4d565b92915050565b600080600060608486031215612b9057612b8f612773565b5b6000612b9e86828701612888565b9350506020612baf86828701612888565b9250506040612bc086828701612a48565b9150509250925092565b600060ff82169050919050565b612be081612bca565b82525050565b6000602082019050612bfb6000830184612bd7565b92915050565b612c0a8161285f565b82525050565b6000602082019050612c256000830184612c01565b92915050565b600060208284031215612c4157612c40612773565b5b6000612c4f84828501612a48565b91505092915050565b600060208284031215612c6e57612c6d612773565b5b6000612c7c84828501612888565b91505092915050565b600080fd5b60008083601f840112612ca057612c9f61277d565b5b8235905067ffffffffffffffff811115612cbd57612cbc612c85565b5b602083019150836020820283011115612cd957612cd861283a565b5b9250929050565b612ce981612a9d565b8114612cf457600080fd5b50565b600081359050612d0681612ce0565b92915050565b600080600060408486031215612d2557612d24612773565b5b600084013567ffffffffffffffff811115612d4357612d42612778565b5b612d4f86828701612c8a565b93509350506020612d6286828701612cf7565b9150509250925092565b60008060408385031215612d8357612d82612773565b5b6000612d9185828601612888565b9250506020612da285828601612888565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612de2602083612988565b9150612ded82612dac565b602082019050919050565b60006020820190508181036000830152612e1181612dd5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e8182612a27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612eb457612eb3612e47565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f1b602683612988565b9150612f2682612ebf565b604082019050919050565b60006020820190508181036000830152612f4a81612f0e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fad602483612988565b9150612fb882612f51565b604082019050919050565b60006020820190508181036000830152612fdc81612fa0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061303f602283612988565b915061304a82612fe3565b604082019050919050565b6000602082019050818103600083015261306e81613032565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d1602583612988565b91506130dc82613075565b604082019050919050565b60006020820190508181036000830152613100816130c4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613163602383612988565b915061316e82613107565b604082019050919050565b6000602082019050818103600083015261319281613156565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131f5602983612988565b915061320082613199565b604082019050919050565b60006020820190508181036000830152613224816131e8565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613287603f83612988565b91506132928261322b565b604082019050919050565b600060208201905081810360008301526132b68161327a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006132f3601c83612988565b91506132fe826132bd565b602082019050919050565b60006020820190508181036000830152613322816132e6565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613385602383612988565b915061339082613329565b604082019050919050565b600060208201905081810360008301526133b481613378565b9050919050565b60006133c682612a27565b91506133d183612a27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561340657613405612e47565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061346d602383612988565b915061347882613411565b604082019050919050565b6000602082019050818103600083015261349c81613460565b9050919050565b60006134ae82612a27565b91506134b983612a27565b9250828210156134cc576134cb612e47565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613533602a83612988565b915061353e826134d7565b604082019050919050565b6000602082019050818103600083015261356281613526565b9050919050565b60008151905061357881612871565b92915050565b60006020828403121561359457613593612773565b5b60006135a284828501613569565b91505092915050565b6000819050919050565b60006135d06135cb6135c6846135ab565b612ad3565b612a27565b9050919050565b6135e0816135b5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61361b8161285f565b82525050565b600061362d8383613612565b60208301905092915050565b6000602082019050919050565b6000613651826135e6565b61365b81856135f1565b935061366683613602565b8060005b8381101561369757815161367e8882613621565b975061368983613639565b92505060018101905061366a565b5085935050505092915050565b600060a0820190506136b96000830188612b4d565b6136c660208301876135d7565b81810360408301526136d88186613646565b90506136e76060830185612c01565b6136f46080830184612b4d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061373882612a27565b915061374383612a27565b925082613753576137526136fe565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613794601b83612988565b915061379f8261375e565b602082019050919050565b600060208201905081810360008301526137c381613787565b9050919050565b60006137d582612a27565b91506137e083612a27565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561381957613818612e47565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613880602183612988565b915061388b82613824565b604082019050919050565b600060208201905081810360008301526138af81613873565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209b2359fcd8b411634f73d5eadb3629acf840fe049aa7e96b3336a5a8bc52465564736f6c63430008090033
Deployed Bytecode Sourcemap
4368:12571:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12570:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7032:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7957:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5760:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7309:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8158:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6088:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7218:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5808:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16581:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12747:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12327:235;;;;;;;;;;;;;:::i;:::-;;7412:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1855:148;;;;;;;;;;;;;:::i;:::-;;5964:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5502:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6945:79;;;;;;;;;;;;;:::i;:::-;;1641;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6026:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7123:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16291:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7558:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5464:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12083:236;;;;;;;;;;;;;:::i;:::-;;16700:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7765:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2011:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16471:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12570:169;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12646:9:::1;12641:91;12665:5;:12;12661:1;:16;12641:91;;;12716:4;12699;:14;12704:5;12710:1;12704:8;;;;;;;;:::i;:::-;;;;;;;;12699:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12679:3;;;;;:::i;:::-;;;;12641:91;;;;12570:169:::0;:::o;7032:83::-;7069:13;7102:5;;;;;;;;;;;;;;;;;7095:12;;7032:83;:::o;7957:193::-;8059:4;8081:39;8090:12;:10;:12::i;:::-;8104:7;8113:6;8081:8;:39::i;:::-;8138:4;8131:11;;7957:193;;;;:::o;5760:41::-;;;;;;;;;;;;;:::o;7309:95::-;7362:7;4949:21;7382:14;;7309:95;:::o;8158:446::-;8290:4;8307:36;8317:6;8325:9;8336:6;8307:9;:36::i;:::-;8354:220;8377:6;8398:12;:10;:12::i;:::-;8425:138;8481:6;8425:138;;;;;;;;;;;;;;;;;:11;:19;8437:6;8425:19;;;;;;;;;;;;;;;:33;8445:12;:10;:12::i;:::-;8425:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8354:8;:220::i;:::-;8592:4;8585:11;;8158:446;;;;;:::o;6088:55::-;;;;:::o;7218:83::-;7259:5;4601:1;7277:16;;7218:83;:::o;5808:28::-;;;;;;;;;;;;;:::o;16581:111::-;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16671:13:::1;16654:14;:30;;;;16581:111:::0;:::o;12747:92::-;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12826:5:::1;12811:4;:12;12816:6;12811:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12747:92:::0;:::o;12327:235::-;12393:19;;;;;;;;;;;12377:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12432:17;;;;;;;;;;;12416:33;;:12;:10;:12::i;:::-;:33;;;12377:72;12369:81;;;;;;12461:26;12490:21;12461:50;;12522:32;12535:18;12522:12;:32::i;:::-;12358:204;12327:235::o;7412:138::-;7478:7;7505:37;7525:7;:16;7533:7;7525:16;;;;;;;;;;;;;;;;7505:19;:37::i;:::-;7498:44;;7412:138;;;:::o;1855:148::-;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1962:1:::1;1925:40;;1946:6;::::0;::::1;;;;;;;;1925:40;;;;;;;;;;;;1993:1;1976:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1855:148::o:0;5964:55::-;;;;:::o;5502:43::-;;;;;;;;;;;;;;;;;:::o;6945:79::-;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7012:4:::1;6996:13;;:20;;;;;;;;;;;;;;;;;;6945:79::o:0;1641:::-;1679:7;1706:6;;;;;;;;;;;1699:13;;1641:79;:::o;6026:55::-;;;;:::o;7123:87::-;7162:13;7195:7;;;;;;;;;;;;;;;;;7188:14;;7123:87;:::o;16291:139::-;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16404:18:::1;16382:19;:40;;;;16291:139:::0;:::o;7558:199::-;7663:4;7685:42;7695:12;:10;:12::i;:::-;7709:9;7720:6;7685:9;:42::i;:::-;7745:4;7738:11;;7558:199;;;;:::o;5464:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12083:236::-;12149:19;;;;;;;;;;;12133:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12188:17;;;;;;;;;;;12172:33;;:12;:10;:12::i;:::-;:33;;;12133:72;12125:81;;;;;;12217:23;12243:24;12261:4;12243:9;:24::i;:::-;12217:50;;12278:33;12295:15;12278:16;:33::i;:::-;12114:205;12083:236::o;16700:234::-;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16817:9:::1;16813:114;16836:8;;:15;;16832:1;:19;16813:114;;;16907:8;16873:18;:31;16892:8;;16901:1;16892:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16873:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16853:3;;;;;:::i;:::-;;;;16813:114;;;;16700:234:::0;;;:::o;7765:184::-;7882:7;7914:11;:18;7926:5;7914:18;;;;;;;;;;;;;;;:27;7933:7;7914:27;;;;;;;;;;;;;;;;7907:34;;7765:184;;;;:::o;2011:244::-;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2120:1:::1;2100:22;;:8;:22;;;;2092:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2210:8;2181:38;;2202:6;::::0;::::1;;;;;;;;2181:38;;;;;;;;;;;;2239:8;2230:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2011:244:::0;:::o;16471:102::-;1778:12;:10;:12::i;:::-;1768:22;;:6;;;;;;;;;;:22;;;1760:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16554:11:::1;16539:12;:26;;;;16471:102:::0;:::o;400:98::-;453:7;480:10;473:17;;400:98;:::o;9295:369::-;9439:1;9422:19;;:5;:19;;;;9414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9520:1;9501:21;;:7;:21;;;;9493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9602:6;9572:11;:18;9584:5;9572:18;;;;;;;;;;;;;;;:27;9591:7;9572:27;;;;;;;;;;;;;;;:36;;;;9640:7;9624:32;;9633:5;9624:32;;;9649:6;9624:32;;;;;;:::i;:::-;;;;;;;;9295:369;;;:::o;9672:1705::-;9810:1;9794:18;;:4;:18;;;;9786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9887:1;9873:16;;:2;:16;;;;9865:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9957:1;9948:6;:10;9940:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10029:7;:5;:7::i;:::-;10021:15;;:4;:15;;;;:32;;;;;10046:7;:5;:7::i;:::-;10040:13;;:2;:13;;;;10021:32;10017:1265;;;10110:13;;;;;;;;;;;10105:146;;10160:7;:5;:7::i;:::-;10152:15;;:4;:15;;;10144:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10105:146;10285:12;;10275:6;:22;;10267:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10354:4;:10;10359:4;10354:10;;;;;;;;;;;;;;;;;;;;;;;;;10353:11;:24;;;;;10369:4;:8;10374:2;10369:8;;;;;;;;;;;;;;;;;;;;;;;;;10368:9;10353:24;10345:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10443:13;;;;;;;;;;;10437:19;;:2;:19;;;10434:146;;10510:14;;10501:6;10485:13;10495:2;10485:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10477:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10434:146;10596:28;10627:24;10645:4;10627:9;:24::i;:::-;10596:55;;10666:12;10705:19;;10681:20;:43;;10666:58;;10768:12;;10744:20;:36;10741:124;;10837:12;;10814:35;;10741:124;10885:7;:18;;;;;10897:6;;;;;;;;;;10896:7;10885:18;:43;;;;;10915:13;;;;;;;;;;;10907:21;;:4;:21;;;;10885:43;:62;;;;;10932:15;;;;;;;;;;;10885:62;:91;;;;;10952:18;:24;10971:4;10952:24;;;;;;;;;;;;;;;;;;;;;;;;;10951:25;10885:91;:118;;;;;10981:18;:22;11000:2;10981:22;;;;;;;;;;;;;;;;;;;;;;;;;10980:23;10885:118;10881:390;;;11024:38;11041:20;11024:16;:38::i;:::-;11081:26;11110:21;11081:50;;11175:1;11154:18;:22;11150:106;;;11201:35;11214:21;11201:12;:35::i;:::-;11150:106;11005:266;10881:390;10055:1227;;10017:1265;11294:12;11309:4;11294:19;;11328:41;11343:4;11349:2;11353:6;11361:7;11328:14;:41::i;:::-;9775:1602;9672:1705;;;:::o;2619:224::-;2739:7;2772:1;2767;:6;;2775:12;2759:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2799:9;2815:1;2811;:5;;;;:::i;:::-;2799:17;;2834:1;2827:8;;;2619:224;;;;;:::o;11876:199::-;11933:14;11950:13;11961:1;11950:6;:10;;:13;;;;:::i;:::-;11933:30;;11974:17;;;;;;;;;;;:26;;:34;12001:6;11974:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12019:19;;;;;;;;;;;:28;;:48;12048:18;12059:6;12048;:10;;:18;;;;:::i;:::-;12019:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11922:153;11876:199;:::o;8612:323::-;8707:7;8765;;8754;:18;;8732:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8853:19;8875:10;:8;:10::i;:::-;8853:32;;8903:24;8915:11;8903:7;:11;;:24;;;;:::i;:::-;8896:31;;;8612:323;;;:::o;11385:483::-;6246:4;6237:6;;:13;;;;;;;;;;;;;;;;;;11463:21:::1;11501:1;11487:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11463:40;;11532:4;11514;11519:1;11514:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11558:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11548:4;11553:1;11548:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11591:62;11608:4;11623:15;;;;;;;;;;;11641:11;11591:8;:62::i;:::-;11664:15;;;;;;;;;;;:66;;;11745:11;11771:1;11787:4;11814;11834:15;11664:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11452:416;6282:5:::0;6273:6;;:14;;;;;;;;;;;;;;;;;;11385:483;:::o;12847:282::-;13003:7;12998:28;;13012:14;:12;:14::i;:::-;12998:28;13037:44;13055:6;13063:9;13074:6;13037:17;:44::i;:::-;13097:7;13092:29;;13106:15;:13;:15::i;:::-;13092:29;12847:282;;;;:::o;3105:132::-;3163:7;3190:39;3194:1;3197;3190:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3183:46;;3105:132;;;;:::o;2475:136::-;2533:7;2560:43;2564:1;2567;2560:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2553:50;;2475:136;;;;:::o;15808:164::-;15850:7;15871:15;15888;15907:19;:17;:19::i;:::-;15870:56;;;;15944:20;15956:7;15944;:11;;:20;;;;:::i;:::-;15937:27;;;;15808:164;:::o;8943:219::-;9003:1;8990:9;;:14;:30;;;;;9019:1;9008:7;;:12;8990:30;8986:43;;;9022:7;;8986:43;9061:9;;9041:17;:29;;;;9099:7;;9081:15;:25;;;;9131:1;9119:9;:13;;;;9153:1;9143:7;:11;;;;8943:219;:::o;13137:610::-;13284:15;13314:23;13352:12;13379:23;13417:12;13444:13;13471:19;13482:7;13471:10;:19::i;:::-;13269:221;;;;;;;;;;;;13519:28;13539:7;13519;:15;13527:6;13519:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13501:7;:15;13509:6;13501:15;;;;;;;;;;;;;;;:46;;;;13579:39;13602:15;13579:7;:18;13587:9;13579:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13558:7;:18;13566:9;13558:18;;;;;;;;;;;;;;;:60;;;;13629:16;13639:5;13629:9;:16::i;:::-;13656:23;13668:4;13674;13656:11;:23::i;:::-;13712:9;13695:44;;13704:6;13695:44;;;13723:15;13695:44;;;;;;:::i;:::-;;;;;;;;13258:489;;;;;;13137:610;;;:::o;9170:117::-;9226:17;;9214:9;:29;;;;9264:15;;9254:7;:25;;;;9170:117::o;3245:223::-;3365:7;3397:1;3393;:5;3400:12;3385:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3424:9;3440:1;3436;:5;;;;:::i;:::-;3424:17;;3459:1;3452:8;;;3245:223;;;;;:::o;15980:257::-;16031:7;16040;16060:15;16078:7;;16060:25;;16096:15;4949:21;16096:25;;16146:20;4949:21;16146:7;;:11;;:20;;;;:::i;:::-;16136:7;:30;16132:61;;;16176:7;;4949:21;16168:25;;;;;;;;16132:61;16212:7;16221;16204:25;;;;;;15980:257;;;:::o;14166:615::-;14266:7;14288;14310;14332;14354;14376;14412:23;14437:12;14451:13;14481:40;14493:7;14502:9;;14513:7;;14481:11;:40::i;:::-;14411:110;;;;;;14532:19;14554:10;:8;:10::i;:::-;14532:32;;14576:15;14593:23;14618:12;14647:46;14659:7;14668:4;14674:5;14681:11;14647;:46::i;:::-;14575:118;;;;;;14712:7;14721:15;14738:4;14744:15;14761:4;14767:5;14704:69;;;;;;;;;;;;;;;;;;;14166:615;;;;;;;:::o;2288:179::-;2346:7;2366:9;2382:1;2378;:5;;;;:::i;:::-;2366:17;;2407:1;2402;:6;;2394:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2458:1;2451:8;;;2288:179;;;;:::o;13755:211::-;13808:19;13830:10;:8;:10::i;:::-;13808:32;;13851:13;13867:22;13877:11;13867:5;:9;;:22;;;;:::i;:::-;13851:38;;13925:33;13952:5;13925:7;:22;13941:4;13925:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13900:7;:22;13916:4;13900:22;;;;;;;;;;;;;;;:58;;;;13797:169;;13755:211;:::o;13974:147::-;14052:17;14064:4;14052:7;;:11;;:17;;;;:::i;:::-;14042:7;:27;;;;14093:20;14108:4;14093:10;;:14;;:20;;;;:::i;:::-;14080:10;:33;;;;13974:147;;:::o;14789:469::-;14958:7;14980;15002;15037:12;15052:30;15078:3;15052:21;15064:8;15052:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15037:45;;15093:13;15109:28;15133:3;15109:19;15121:6;15109:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15093:44;;15148:23;15174:28;15196:5;15174:17;15186:4;15174:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15148:54;;15221:15;15238:4;15244:5;15213:37;;;;;;;;;14789:469;;;;;;;:::o;15266:534::-;15460:7;15482;15504;15539:15;15557:24;15569:11;15557:7;:11;;:24;;;;:::i;:::-;15539:42;;15592:12;15607:21;15616:11;15607:4;:8;;:21;;;;:::i;:::-;15592:36;;15639:13;15655:22;15665:11;15655:5;:9;;:22;;;;:::i;:::-;15639:38;;15688:23;15714:28;15736:5;15714:17;15726:4;15714:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15688:54;;15761:7;15770:15;15787:4;15753:39;;;;;;;;;;15266:534;;;;;;;;:::o;2851:246::-;2909:7;2938:1;2933;:6;2929:47;;;2963:1;2956:8;;;;2929:47;2986:9;3002:1;2998;:5;;;;:::i;:::-;2986:17;;3031:1;3026;3022;:5;;;;:::i;:::-;:10;3014:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3088:1;3081:8;;;2851:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:::-;9462:6;9511:2;9499:9;9490:7;9486:23;9482:32;9479:119;;;9517:79;;:::i;:::-;9479:119;9637:1;9662:53;9707:7;9698:6;9687:9;9683:22;9662:53;:::i;:::-;9652:63;;9608:117;9403:329;;;;:::o;9738:117::-;9847:1;9844;9837:12;9878:568;9951:8;9961:6;10011:3;10004:4;9996:6;9992:17;9988:27;9978:122;;10019:79;;:::i;:::-;9978:122;10132:6;10119:20;10109:30;;10162:18;10154:6;10151:30;10148:117;;;10184:79;;:::i;:::-;10148:117;10298:4;10290:6;10286:17;10274:29;;10352:3;10344:4;10336:6;10332:17;10322:8;10318:32;10315:41;10312:128;;;10359:79;;:::i;:::-;10312:128;9878:568;;;;;:::o;10452:116::-;10522:21;10537:5;10522:21;:::i;:::-;10515:5;10512:32;10502:60;;10558:1;10555;10548:12;10502:60;10452:116;:::o;10574:133::-;10617:5;10655:6;10642:20;10633:29;;10671:30;10695:5;10671:30;:::i;:::-;10574:133;;;;:::o;10713:698::-;10805:6;10813;10821;10870:2;10858:9;10849:7;10845:23;10841:32;10838:119;;;10876:79;;:::i;:::-;10838:119;11024:1;11013:9;11009:17;10996:31;11054:18;11046:6;11043:30;11040:117;;;11076:79;;:::i;:::-;11040:117;11189:80;11261:7;11252:6;11241:9;11237:22;11189:80;:::i;:::-;11171:98;;;;10967:312;11318:2;11344:50;11386:7;11377:6;11366:9;11362:22;11344:50;:::i;:::-;11334:60;;11289:115;10713:698;;;;;:::o;11417:474::-;11485:6;11493;11542:2;11530:9;11521:7;11517:23;11513:32;11510:119;;;11548:79;;:::i;:::-;11510:119;11668:1;11693:53;11738:7;11729:6;11718:9;11714:22;11693:53;:::i;:::-;11683:63;;11639:117;11795:2;11821:53;11866:7;11857:6;11846:9;11842:22;11821:53;:::i;:::-;11811:63;;11766:118;11417:474;;;;;:::o;11897:182::-;12037:34;12033:1;12025:6;12021:14;12014:58;11897:182;:::o;12085:366::-;12227:3;12248:67;12312:2;12307:3;12248:67;:::i;:::-;12241:74;;12324:93;12413:3;12324:93;:::i;:::-;12442:2;12437:3;12433:12;12426:19;;12085:366;;;:::o;12457:419::-;12623:4;12661:2;12650:9;12646:18;12638:26;;12710:9;12704:4;12700:20;12696:1;12685:9;12681:17;12674:47;12738:131;12864:4;12738:131;:::i;:::-;12730:139;;12457:419;;;:::o;12882:180::-;12930:77;12927:1;12920:88;13027:4;13024:1;13017:15;13051:4;13048:1;13041:15;13068:180;13116:77;13113:1;13106:88;13213:4;13210:1;13203:15;13237:4;13234:1;13227:15;13254:233;13293:3;13316:24;13334:5;13316:24;:::i;:::-;13307:33;;13362:66;13355:5;13352:77;13349:103;;;13432:18;;:::i;:::-;13349:103;13479:1;13472:5;13468:13;13461:20;;13254:233;;;:::o;13493:225::-;13633:34;13629:1;13621:6;13617:14;13610:58;13702:8;13697:2;13689:6;13685:15;13678:33;13493:225;:::o;13724:366::-;13866:3;13887:67;13951:2;13946:3;13887:67;:::i;:::-;13880:74;;13963:93;14052:3;13963:93;:::i;:::-;14081:2;14076:3;14072:12;14065:19;;13724:366;;;:::o;14096:419::-;14262:4;14300:2;14289:9;14285:18;14277:26;;14349:9;14343:4;14339:20;14335:1;14324:9;14320:17;14313:47;14377:131;14503:4;14377:131;:::i;:::-;14369:139;;14096:419;;;:::o;14521:223::-;14661:34;14657:1;14649:6;14645:14;14638:58;14730:6;14725:2;14717:6;14713:15;14706:31;14521:223;:::o;14750:366::-;14892:3;14913:67;14977:2;14972:3;14913:67;:::i;:::-;14906:74;;14989:93;15078:3;14989:93;:::i;:::-;15107:2;15102:3;15098:12;15091:19;;14750:366;;;:::o;15122:419::-;15288:4;15326:2;15315:9;15311:18;15303:26;;15375:9;15369:4;15365:20;15361:1;15350:9;15346:17;15339:47;15403:131;15529:4;15403:131;:::i;:::-;15395:139;;15122:419;;;:::o;15547:221::-;15687:34;15683:1;15675:6;15671:14;15664:58;15756:4;15751:2;15743:6;15739:15;15732:29;15547:221;:::o;15774:366::-;15916:3;15937:67;16001:2;15996:3;15937:67;:::i;:::-;15930:74;;16013:93;16102:3;16013:93;:::i;:::-;16131:2;16126:3;16122:12;16115:19;;15774:366;;;:::o;16146:419::-;16312:4;16350:2;16339:9;16335:18;16327:26;;16399:9;16393:4;16389:20;16385:1;16374:9;16370:17;16363:47;16427:131;16553:4;16427:131;:::i;:::-;16419:139;;16146:419;;;:::o;16571:224::-;16711:34;16707:1;16699:6;16695:14;16688:58;16780:7;16775:2;16767:6;16763:15;16756:32;16571:224;:::o;16801:366::-;16943:3;16964:67;17028:2;17023:3;16964:67;:::i;:::-;16957:74;;17040:93;17129:3;17040:93;:::i;:::-;17158:2;17153:3;17149:12;17142:19;;16801:366;;;:::o;17173:419::-;17339:4;17377:2;17366:9;17362:18;17354:26;;17426:9;17420:4;17416:20;17412:1;17401:9;17397:17;17390:47;17454:131;17580:4;17454:131;:::i;:::-;17446:139;;17173:419;;;:::o;17598:222::-;17738:34;17734:1;17726:6;17722:14;17715:58;17807:5;17802:2;17794:6;17790:15;17783:30;17598:222;:::o;17826:366::-;17968:3;17989:67;18053:2;18048:3;17989:67;:::i;:::-;17982:74;;18065:93;18154:3;18065:93;:::i;:::-;18183:2;18178:3;18174:12;18167:19;;17826:366;;;:::o;18198:419::-;18364:4;18402:2;18391:9;18387:18;18379:26;;18451:9;18445:4;18441:20;18437:1;18426:9;18422:17;18415:47;18479:131;18605:4;18479:131;:::i;:::-;18471:139;;18198:419;;;:::o;18623:228::-;18763:34;18759:1;18751:6;18747:14;18740:58;18832:11;18827:2;18819:6;18815:15;18808:36;18623:228;:::o;18857:366::-;18999:3;19020:67;19084:2;19079:3;19020:67;:::i;:::-;19013:74;;19096:93;19185:3;19096:93;:::i;:::-;19214:2;19209:3;19205:12;19198:19;;18857:366;;;:::o;19229:419::-;19395:4;19433:2;19422:9;19418:18;19410:26;;19482:9;19476:4;19472:20;19468:1;19457:9;19453:17;19446:47;19510:131;19636:4;19510:131;:::i;:::-;19502:139;;19229:419;;;:::o;19654:250::-;19794:34;19790:1;19782:6;19778:14;19771:58;19863:33;19858:2;19850:6;19846:15;19839:58;19654:250;:::o;19910:366::-;20052:3;20073:67;20137:2;20132:3;20073:67;:::i;:::-;20066:74;;20149:93;20238:3;20149:93;:::i;:::-;20267:2;20262:3;20258:12;20251:19;;19910:366;;;:::o;20282:419::-;20448:4;20486:2;20475:9;20471:18;20463:26;;20535:9;20529:4;20525:20;20521:1;20510:9;20506:17;20499:47;20563:131;20689:4;20563:131;:::i;:::-;20555:139;;20282:419;;;:::o;20707:178::-;20847:30;20843:1;20835:6;20831:14;20824:54;20707:178;:::o;20891:366::-;21033:3;21054:67;21118:2;21113:3;21054:67;:::i;:::-;21047:74;;21130:93;21219:3;21130:93;:::i;:::-;21248:2;21243:3;21239:12;21232:19;;20891:366;;;:::o;21263:419::-;21429:4;21467:2;21456:9;21452:18;21444:26;;21516:9;21510:4;21506:20;21502:1;21491:9;21487:17;21480:47;21544:131;21670:4;21544:131;:::i;:::-;21536:139;;21263:419;;;:::o;21688:222::-;21828:34;21824:1;21816:6;21812:14;21805:58;21897:5;21892:2;21884:6;21880:15;21873:30;21688:222;:::o;21916:366::-;22058:3;22079:67;22143:2;22138:3;22079:67;:::i;:::-;22072:74;;22155:93;22244:3;22155:93;:::i;:::-;22273:2;22268:3;22264:12;22257:19;;21916:366;;;:::o;22288:419::-;22454:4;22492:2;22481:9;22477:18;22469:26;;22541:9;22535:4;22531:20;22527:1;22516:9;22512:17;22505:47;22569:131;22695:4;22569:131;:::i;:::-;22561:139;;22288:419;;;:::o;22713:305::-;22753:3;22772:20;22790:1;22772:20;:::i;:::-;22767:25;;22806:20;22824:1;22806:20;:::i;:::-;22801:25;;22960:1;22892:66;22888:74;22885:1;22882:81;22879:107;;;22966:18;;:::i;:::-;22879:107;23010:1;23007;23003:9;22996:16;;22713:305;;;;:::o;23024:222::-;23164:34;23160:1;23152:6;23148:14;23141:58;23233:5;23228:2;23220:6;23216:15;23209:30;23024:222;:::o;23252:366::-;23394:3;23415:67;23479:2;23474:3;23415:67;:::i;:::-;23408:74;;23491:93;23580:3;23491:93;:::i;:::-;23609:2;23604:3;23600:12;23593:19;;23252:366;;;:::o;23624:419::-;23790:4;23828:2;23817:9;23813:18;23805:26;;23877:9;23871:4;23867:20;23863:1;23852:9;23848:17;23841:47;23905:131;24031:4;23905:131;:::i;:::-;23897:139;;23624:419;;;:::o;24049:191::-;24089:4;24109:20;24127:1;24109:20;:::i;:::-;24104:25;;24143:20;24161:1;24143:20;:::i;:::-;24138:25;;24182:1;24179;24176:8;24173:34;;;24187:18;;:::i;:::-;24173:34;24232:1;24229;24225:9;24217:17;;24049:191;;;;:::o;24246:229::-;24386:34;24382:1;24374:6;24370:14;24363:58;24455:12;24450:2;24442:6;24438:15;24431:37;24246:229;:::o;24481:366::-;24623:3;24644:67;24708:2;24703:3;24644:67;:::i;:::-;24637:74;;24720:93;24809:3;24720:93;:::i;:::-;24838:2;24833:3;24829:12;24822:19;;24481:366;;;:::o;24853:419::-;25019:4;25057:2;25046:9;25042:18;25034:26;;25106:9;25100:4;25096:20;25092:1;25081:9;25077:17;25070:47;25134:131;25260:4;25134:131;:::i;:::-;25126:139;;24853:419;;;:::o;25278:143::-;25335:5;25366:6;25360:13;25351:22;;25382:33;25409:5;25382:33;:::i;:::-;25278:143;;;;:::o;25427:351::-;25497:6;25546:2;25534:9;25525:7;25521:23;25517:32;25514:119;;;25552:79;;:::i;:::-;25514:119;25672:1;25697:64;25753:7;25744:6;25733:9;25729:22;25697:64;:::i;:::-;25687:74;;25643:128;25427:351;;;;:::o;25784:85::-;25829:7;25858:5;25847:16;;25784:85;;;:::o;25875:158::-;25933:9;25966:61;25984:42;25993:32;26019:5;25993:32;:::i;:::-;25984:42;:::i;:::-;25966:61;:::i;:::-;25953:74;;25875:158;;;:::o;26039:147::-;26134:45;26173:5;26134:45;:::i;:::-;26129:3;26122:58;26039:147;;:::o;26192:114::-;26259:6;26293:5;26287:12;26277:22;;26192:114;;;:::o;26312:184::-;26411:11;26445:6;26440:3;26433:19;26485:4;26480:3;26476:14;26461:29;;26312:184;;;;:::o;26502:132::-;26569:4;26592:3;26584:11;;26622:4;26617:3;26613:14;26605:22;;26502:132;;;:::o;26640:108::-;26717:24;26735:5;26717:24;:::i;:::-;26712:3;26705:37;26640:108;;:::o;26754:179::-;26823:10;26844:46;26886:3;26878:6;26844:46;:::i;:::-;26922:4;26917:3;26913:14;26899:28;;26754:179;;;;:::o;26939:113::-;27009:4;27041;27036:3;27032:14;27024:22;;26939:113;;;:::o;27088:732::-;27207:3;27236:54;27284:5;27236:54;:::i;:::-;27306:86;27385:6;27380:3;27306:86;:::i;:::-;27299:93;;27416:56;27466:5;27416:56;:::i;:::-;27495:7;27526:1;27511:284;27536:6;27533:1;27530:13;27511:284;;;27612:6;27606:13;27639:63;27698:3;27683:13;27639:63;:::i;:::-;27632:70;;27725:60;27778:6;27725:60;:::i;:::-;27715:70;;27571:224;27558:1;27555;27551:9;27546:14;;27511:284;;;27515:14;27811:3;27804:10;;27212:608;;;27088:732;;;;:::o;27826:831::-;28089:4;28127:3;28116:9;28112:19;28104:27;;28141:71;28209:1;28198:9;28194:17;28185:6;28141:71;:::i;:::-;28222:80;28298:2;28287:9;28283:18;28274:6;28222:80;:::i;:::-;28349:9;28343:4;28339:20;28334:2;28323:9;28319:18;28312:48;28377:108;28480:4;28471:6;28377:108;:::i;:::-;28369:116;;28495:72;28563:2;28552:9;28548:18;28539:6;28495:72;:::i;:::-;28577:73;28645:3;28634:9;28630:19;28621:6;28577:73;:::i;:::-;27826:831;;;;;;;;:::o;28663:180::-;28711:77;28708:1;28701:88;28808:4;28805:1;28798:15;28832:4;28829:1;28822:15;28849:185;28889:1;28906:20;28924:1;28906:20;:::i;:::-;28901:25;;28940:20;28958:1;28940:20;:::i;:::-;28935:25;;28979:1;28969:35;;28984:18;;:::i;:::-;28969:35;29026:1;29023;29019:9;29014:14;;28849:185;;;;:::o;29040:177::-;29180:29;29176:1;29168:6;29164:14;29157:53;29040:177;:::o;29223:366::-;29365:3;29386:67;29450:2;29445:3;29386:67;:::i;:::-;29379:74;;29462:93;29551:3;29462:93;:::i;:::-;29580:2;29575:3;29571:12;29564:19;;29223:366;;;:::o;29595:419::-;29761:4;29799:2;29788:9;29784:18;29776:26;;29848:9;29842:4;29838:20;29834:1;29823:9;29819:17;29812:47;29876:131;30002:4;29876:131;:::i;:::-;29868:139;;29595:419;;;:::o;30020:348::-;30060:7;30083:20;30101:1;30083:20;:::i;:::-;30078:25;;30117:20;30135:1;30117:20;:::i;:::-;30112:25;;30305:1;30237:66;30233:74;30230:1;30227:81;30222:1;30215:9;30208:17;30204:105;30201:131;;;30312:18;;:::i;:::-;30201:131;30360:1;30357;30353:9;30342:20;;30020:348;;;;:::o;30374:220::-;30514:34;30510:1;30502:6;30498:14;30491:58;30583:3;30578:2;30570:6;30566:15;30559:28;30374:220;:::o;30600:366::-;30742:3;30763:67;30827:2;30822:3;30763:67;:::i;:::-;30756:74;;30839:93;30928:3;30839:93;:::i;:::-;30957:2;30952:3;30948:12;30941:19;;30600:366;;;:::o;30972:419::-;31138:4;31176:2;31165:9;31161:18;31153:26;;31225:9;31219:4;31215:20;31211:1;31200:9;31196:17;31189:47;31253:131;31379:4;31253:131;:::i;:::-;31245:139;;30972:419;;;:::o
Swarm Source
ipfs://9b2359fcd8b411634f73d5eadb3629acf840fe049aa7e96b3336a5a8bc524655
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.