ETH Price: $2,523.74 (-0.76%)

Token

House of Degens (HOD)
 

Overview

Max Total Supply

40,000 HOD

Holders

120

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
118.188804067 HOD

Value
$0.00
0xa0e311360135d3b5b27800c98df1e49f5c4f1907
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20Token

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-30
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
	function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function WETH() external pure returns (address);
	function factory() external pure returns (address);
	function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

abstract contract OWNED {
	address internal _owner;
	event OwnershipTransferred(address owner);
	constructor(address contractOwner) { _owner = contractOwner; }
	modifier onlyOwner() { require(msg.sender == _owner, "Not the owner"); _; }
	function owner() external view returns (address) { return _owner; }
	function renounceOwnership() external onlyOwner { _transferOwnership(address(0)); }
	function transferOwnership(address newOwner) external onlyOwner { _transferOwnership(newOwner); }
	function _transferOwnership(address _newOwner) internal {
		_owner = _newOwner; 
		emit OwnershipTransferred(_newOwner); 
	}
}

contract ERC20Token is OWNED {
	bool internal launched = false;
	mapping(address => uint256) private _balances;
	mapping(address => mapping(address => uint256)) private _allowances;
	uint8 private _decimals;
	uint256 private _totalSupply;
	string private _name;
	string private _symbol;

	mapping(address => bool) private _excluded;

	uint8 private _taxDevAndMarketing; uint8 private _taxLiquidity; uint8 _taxTokenBurn; uint8 private _totalTaxPct;
	address payable private _walletDevAndMarketing;
	uint256 private _maxTx; uint256 private _maxWallet;
	uint256 private _swapThreshold;
	uint256 private _swapLimit;

	address private constant primarySwapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
	IUniswapV2Router02 private swapRouter;
	address private WETH; 
	address private LPOwner;
	address private primaryLP;
	mapping(address => bool) private _isLP;

	bool private swapLocked;
	modifier lockSwap { swapLocked = true; _; swapLocked = false; }
	modifier postLaunch { require(launched, "Not launched"); _; }

	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);

	constructor() OWNED(msg.sender)  {
        swapRouter = IUniswapV2Router02(primarySwapRouterAddress);
        WETH = swapRouter.WETH();
        LPOwner = msg.sender;
    }
	receive() external payable {}

	function launch(
		string memory tokenName, string memory tokenSymbol, uint256 tokenSupply, uint8 tokenDecimals,
		uint8 taxForDevAndMarketing, uint8 taxForLiquidity, uint8 taxForBurn, address walletForDevAndMarketing, 
		uint16 maxTxPermille, uint16 maxWalletPermille,
		uint8 tokenSupplyPercentageForLP
		) external payable onlyOwner {
			require(!launched, "Already launched");
			launched = true;
			_decimals = tokenDecimals;
			_totalSupply = tokenSupply * (10**_decimals);
			_name = tokenName;
			_symbol = tokenSymbol;

			require(tokenSupplyPercentageForLP > 0 && tokenSupplyPercentageForLP <= 100, "LP supply must be 1-100%");
			_balances[address(this)] = _totalSupply * tokenSupplyPercentageForLP / 100;
			emit Transfer(address(0), address(this), _balances[address(this)]);
			if (_balances[address(this)] != _totalSupply) {
				_balances[_owner] = _totalSupply - _balances[address(this)];
				emit Transfer(address(0), _owner, _balances[_owner]);
			}

			_taxDevAndMarketing = taxForDevAndMarketing; 
			_taxLiquidity = taxForLiquidity; 
			_taxTokenBurn = taxForBurn;
			_totalTaxPct = taxForDevAndMarketing + _taxLiquidity + taxForBurn;
			require(_totalTaxPct<=100,"Tax error");
			_walletDevAndMarketing = payable(walletForDevAndMarketing);

			_maxTx = _totalSupply * maxTxPermille / 1000;
			_maxWallet = _totalSupply * maxWalletPermille / 1000;
			_swapThreshold = _totalSupply * 10 / 100000;
			_swapLimit = _totalSupply * 85 / 100000;

			_excluded[_owner] = true;
			_excluded[address(this)] = true;
			_excluded[primarySwapRouterAddress] = true;
			_excluded[_walletDevAndMarketing] = true;

			require(msg.value>0, "Cannot add liquidity if message value is 0 ETH");
			require(primaryLP == address(0), "LP exists");
			primaryLP = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), WETH);
			_isLP[primaryLP] = true;
			_addLiquidity(_balances[address(this)], msg.value);
	}

	function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
		require(address(this).balance >= ethAmount, "Not enough ETH");
		require(_balances[address(this)] >= tokenAmount, "Not enough tokens");
		_checkAndApproveRouter(tokenAmount);
		swapRouter.addLiquidityETH{value: ethAmount} ( address(this), tokenAmount, 0, 0, LPOwner, block.timestamp );
	}

	function name() public view postLaunch returns (string memory) { return _name; }
	function symbol() public view postLaunch returns (string memory) { return _symbol; }
	function decimals() public view postLaunch returns (uint8) { return _decimals; }
	function totalSupply() public view postLaunch returns (uint256) { return _totalSupply; }
	function balanceOf(address account) public view postLaunch returns (uint256) { return _balances[account]; }
	function allowance(address owner, address spender) public view postLaunch returns (uint256) { return _allowances[owner][spender]; }
	
	function approve(address spender, uint256 amount) public postLaunch returns (bool) {
		require(_balances[msg.sender] > 0,"ERC20: Zero balance");
		_approve(msg.sender, spender, amount);
		return true;
	}
	function _approve(address owner, address spender, uint256 amount ) private {
		require(owner != address(0) && spender != address(0), "ERC20: Zero address");
		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}
	function _checkAndApproveRouter(uint256 tokenAmount) private {
		if (_allowances[address(this)][primarySwapRouterAddress] < tokenAmount) { 
			_approve(address(this), primarySwapRouterAddress, type(uint256).max);
		}
	}

	function transfer(address to, uint256 amount) public postLaunch returns (bool) {
		_transfer(msg.sender, to, amount);
		return true;
	}
	function transferFrom(address from, address to, uint256 amount) public postLaunch returns (bool) {
		require(_allowances[from][msg.sender] >= amount,"ERC20: amount exceeds allowance");
		_allowances[from][msg.sender] -= amount;
		_transfer(from, to, amount);
		return true;
	}
	function _transfer(address from, address to, uint256 amount) private {
		require(from != address(0) && to != address(0), "ERC20: Zero address"); 
		require(_balances[from] >= amount, "ERC20: amount exceeds balance"); 
		require(_limitCheck(from, to, amount), "Limits exceeded");

		if ( !swapLocked && !_excluded[from] && _isLP[to] ) { _processTaxTokens(); }
		uint256 taxTokens = _getTaxTokens(from, to, amount);

		_balances[from] -= amount;
		_balances[address(this)] += taxTokens;
		_balances[to] += (amount - taxTokens);
		emit Transfer(from, to, amount);
	}
	function _limitCheck(address from, address to, uint256 amount) private view returns (bool) {
		bool txSize = true;
		if ( amount > _maxTx && !_excluded[from] && !_excluded[to] ) { txSize = false; }
		bool walletSize = true;
		uint256 newBalanceTo = _balances[to] + amount;
		if ( newBalanceTo > _maxWallet && !_excluded[from] && !_excluded[to] && !_isLP[to] ) { walletSize = false; } 
		return (txSize && walletSize);
	}
	function _getTaxTokens(address from, address to, uint256 amount) private view returns (uint256) {
		uint256 taxTokens = 0;
		if (_isLP[from] && !_excluded[to]) { taxTokens = amount * _totalTaxPct / 100; }
		else if (_isLP[to] && !_excluded[from]) { taxTokens = amount * _totalTaxPct / 100; }
		else { taxTokens = 0; }	
		return taxTokens;
	}

	function tax() external view postLaunch returns (uint8 taxDevAndMarketing, uint8 taxLiquidity, uint8 taxBurn, address walletDevAndMarketing) { return (_taxDevAndMarketing, _taxLiquidity, _taxTokenBurn, _walletDevAndMarketing); }
	function limits() external view postLaunch returns (uint256 maxTransaction, uint256 maxWallet) { return (_maxTx, _maxWallet); }
	function excluded(address wallet) external view postLaunch returns (bool) { return _excluded[wallet]; }

	function changeLimits(uint16 maxTxPermille, uint16 maxWalletPermille) external postLaunch onlyOwner {
		uint256 newMaxTx = _totalSupply * maxTxPermille / 1000;
		uint256 newMaxWallet = _totalSupply * maxWalletPermille / 1000; 
		require(newMaxTx >= _maxTx && newMaxWallet >= _maxWallet, "Cannot decrease limits");
		_maxTx = newMaxTx;
		_maxWallet = newMaxWallet;
	}

	function changeTaxRates(uint8 taxDevAndMarketing, uint8 taxLiquidity, uint8 taxBurn) external postLaunch onlyOwner {
		uint8 newTotalTaxPct = taxDevAndMarketing +  taxLiquidity + taxBurn;
		if (_totalTaxPct > 15) { require(newTotalTaxPct < _totalTaxPct, "Tax must decrease"); } 
		else { require(newTotalTaxPct <= 15, "Tax cannot exceed 15%"); }
		_taxDevAndMarketing = taxDevAndMarketing;
		_taxLiquidity = taxLiquidity;
		_taxTokenBurn = taxBurn;
		_totalTaxPct = newTotalTaxPct;
	}

	function changeTaxWallets(address payable walletDevAndMarketing) external postLaunch onlyOwner {
		require(!_isLP[walletDevAndMarketing] && walletDevAndMarketing != primarySwapRouterAddress && walletDevAndMarketing != address(this) && walletDevAndMarketing != address(0));
		_excluded[walletDevAndMarketing] = true;
		_walletDevAndMarketing = walletDevAndMarketing;
	}	
	
	function burn(uint256 amount) external postLaunch {
		_burn(msg.sender, amount);
	}

	function _burn(address from, uint256 amount) private {
		require(_balances[from] >= amount, "Low balance");
		_balances[from] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(from, address(0), amount);
	}

	function _processTaxTokens() private lockSwap {
		uint256 swapAmount = balanceOf(address(this));
		uint256 swapLimit = _swapLimit;
		uint8 totalTaxPercent = _totalTaxPct;
		uint8 burnTax = _taxTokenBurn;
		if (burnTax > 0 && burnTax < totalTaxPercent) {	swapLimit = _swapLimit * totalTaxPercent / (totalTaxPercent-burnTax); }
		if (swapAmount >= _swapThreshold) {
			if (swapAmount >= swapLimit) { swapAmount = swapLimit; }	
			if (_taxTokenBurn > 0) { 
				uint256 burnAmount = swapAmount * _taxTokenBurn / totalTaxPercent;
				_burn(address(this), burnAmount);
				totalTaxPercent -= _taxTokenBurn;
				swapAmount -= burnAmount;
			}
			uint256 lpTokens = swapAmount * _taxLiquidity / totalTaxPercent / 2;
			uint256 swapTokens = swapAmount - lpTokens;
			if (swapTokens >= 10**_decimals) {
				uint256 ethBalanceBeforeSwap = address(this).balance;
				_swapTokensForEth(swapTokens);
				if (_taxLiquidity > 0) {
					uint256 ethFromSwap = address(this).balance - ethBalanceBeforeSwap;
					_checkAndApproveRouter(lpTokens);
					_addLiquidity(lpTokens, ethFromSwap);
				}
			}
		}
		_sendTaxEth();
	}
	function _swapTokensForEth(uint256 tokenAmount) private {
		_checkAndApproveRouter(tokenAmount);
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = WETH;
		swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
	}
	function _sendTaxEth() private {
		uint256 ethBalance = address(this).balance;
		if (ethBalance > 0) { _walletDevAndMarketing.transfer(ethBalance); }
	}

	function manualSwap() external postLaunch onlyOwner { _swapTokensForEth(_balances[address(this)]); }
	function manualSend() external postLaunch onlyOwner { _sendTaxEth(); }
	function setExcluded(address wallet, bool isExcluded) external postLaunch onlyOwner { _excluded[wallet] = isExcluded; }
	function setExtraLP(address lpContractAddress, bool isLiquidityPool) external postLaunch onlyOwner { 
		require(lpContractAddress != primaryLP, "Cannot change the primary LP");
		_isLP[lpContractAddress] = isLiquidityPool; 
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxDevAndMarketing","type":"uint8"},{"internalType":"uint8","name":"taxLiquidity","type":"uint8"},{"internalType":"uint8","name":"taxBurn","type":"uint8"}],"name":"changeTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletDevAndMarketing","type":"address"}],"name":"changeTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"excluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"tokenSupply","type":"uint256"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"uint8","name":"taxForDevAndMarketing","type":"uint8"},{"internalType":"uint8","name":"taxForLiquidity","type":"uint8"},{"internalType":"uint8","name":"taxForBurn","type":"uint8"},{"internalType":"address","name":"walletForDevAndMarketing","type":"address"},{"internalType":"uint16","name":"maxTxPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"},{"internalType":"uint8","name":"tokenSupplyPercentageForLP","type":"uint8"}],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"stateMutability":"view","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":"view","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":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"setExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpContractAddress","type":"address"},{"internalType":"bool","name":"isLiquidityPool","type":"bool"}],"name":"setExtraLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint8","name":"taxDevAndMarketing","type":"uint8"},{"internalType":"uint8","name":"taxLiquidity","type":"uint8"},{"internalType":"uint8","name":"taxBurn","type":"uint8"},{"internalType":"address","name":"walletDevAndMarketing","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]

608060405260008060146101000a81548160ff0219169083151502179055503480156200002b57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000157919062000248565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200027a565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200021082620001e3565b9050919050565b620002228162000203565b81146200022e57600080fd5b50565b600081519050620002428162000217565b92915050565b600060208284031215620002615762000260620001de565b5b6000620002718482850162000231565b91505092915050565b615182806200028a6000396000f3fe60806040526004361061014f5760003560e01c806370a08231116100b657806399c8d5561161006f57806399c8d55614610469578063a9059cbb14610497578063b82690a2146104d4578063dd62ed3e146104fd578063f2fde38b1461053a578063f42938901461056357610156565b806370a0823114610377578063715018a6146103b4578063860aefcf146103cb5780638da5cb5b146103f7578063936f9d9a1461042257806395d89b411461043e57610156565b80632836be24116101085780632836be241461027d578063313ce567146102a657806342966c68146102d1578063429cead1146102fa57806351bc3c85146103375780635c07c9931461034e57610156565b806306fdde031461015b578063095ea7b3146101865780631466737f146101c357806318160ddd146101ec57806321c42e111461021757806323b872dd1461024057610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061057a565b60405161017d9190613916565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906139e0565b61065b565b6040516101ba9190613a3b565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e59190613a94565b610742565b005b3480156101f857600080fd5b506102016109cf565b60405161020e9190613ad0565b60405180910390f35b34801561022357600080fd5b5061023e60048036038101906102399190613b17565b610a27565b005b34801561024c57600080fd5b5061026760048036038101906102629190613b57565b610bef565b6040516102749190613a3b565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190613b17565b610da7565b005b3480156102b257600080fd5b506102bb610edf565b6040516102c89190613bc6565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f39190613be1565b610f44565b005b34801561030657600080fd5b50610321600480360381019061031c9190613c0e565b610fa0565b60405161032e9190613a3b565b60405180910390f35b34801561034357600080fd5b5061034c611044565b005b34801561035a57600080fd5b5061037560048036038101906103709190613c75565b61116b565b005b34801561038357600080fd5b5061039e60048036038101906103999190613c0e565b6112f5565b6040516103ab9190613ad0565b60405180910390f35b3480156103c057600080fd5b506103c961138c565b005b3480156103d757600080fd5b506103e0611426565b6040516103ee929190613cb5565b60405180910390f35b34801561040357600080fd5b5061040c611486565b6040516104199190613ced565b60405180910390f35b61043c60048036038101906104379190613e69565b6114af565b005b34801561044a57600080fd5b50610453611fce565b6040516104609190613916565b60405180910390f35b34801561047557600080fd5b5061047e6120af565b60405161048e9493929190613f95565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906139e0565b612165565b6040516104cb9190613a3b565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613fda565b6121ca565b005b34801561050957600080fd5b50610524600480360381019061051f919061402d565b6123f3565b6040516105319190613ad0565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190613c0e565b6124c8565b005b34801561056f57600080fd5b50610578612562565b005b6060600060149054906101000a900460ff166105cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c2906140b9565b60405180910390fd5b600580546105d890614108565b80601f016020809104026020016040519081016040528092919081815260200182805461060490614108565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b60008060149054906101000a900460ff166106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906140b9565b60405180910390fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161072d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072490614185565b60405180910390fd5b610738338484612649565b6001905092915050565b600060149054906101000a900460ff16610791576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610788906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610816906141f1565b60405180910390fd5b601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156108b95750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156108f157503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561092a5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61093357600080fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600860046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060149054906101000a900460ff16610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a16906140b9565b60405180910390fd5b600454905090565b600060149054906101000a900460ff16610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afb906141f1565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b9061425d565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060149054906101000a900460ff16610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c36906140b9565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906142c9565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d8a9190614318565b92505081905550610d9c8484846127dd565b600190509392505050565b600060149054906101000a900460ff16610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b906141f1565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060149054906101000a900460ff16610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f26906140b9565b60405180910390fd5b600360009054906101000a900460ff16905090565b600060149054906101000a900460ff16610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a906140b9565b60405180910390fd5b610f9d3382612ba3565b50565b60008060149054906101000a900460ff16610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe7906140b9565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600060149054906101000a900460ff16611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611118906141f1565b60405180910390fd5b611169600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3b565b565b600060149054906101000a900460ff166111ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b1906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f906141f1565b60405180910390fd5b60006103e88361ffff1660045461125f919061434c565b61126991906143bd565b905060006103e88361ffff16600454611282919061434c565b61128c91906143bd565b905060095482101580156112a25750600a548110155b6112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d89061443a565b60405180910390fd5b8160098190555080600a8190555050505050565b60008060149054906101000a900460ff16611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c906140b9565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906141f1565b60405180910390fd5b6114246000612eec565b565b600080600060149054906101000a900460ff16611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f906140b9565b60405180910390fd5b600954600a54915091509091565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461153d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611534906141f1565b60405180910390fd5b600060149054906101000a900460ff161561158d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611584906144a6565b60405180910390fd5b6001600060146101000a81548160ff02191690831515021790555087600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff16600a6115df91906145f9565b896115ea919061434c565b6004819055508a600590816115ff91906147f0565b50896006908161160f91906147f0565b5060008160ff16118015611627575060648160ff1611155b611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d9061490e565b60405180910390fd5b60648160ff16600454611679919061434c565b61168391906143bd565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516117639190613ad0565b60405180910390a3600454600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461194b57600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004546118009190614318565b600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516119429190613ad0565b60405180910390a35b86600860006101000a81548160ff021916908360ff16021790555085600860016101000a81548160ff021916908360ff16021790555084600860026101000a81548160ff021916908360ff16021790555084600860019054906101000a900460ff16886119b8919061492e565b6119c2919061492e565b600860036101000a81548160ff021916908360ff1602179055506064600860039054906101000a900460ff1660ff161115611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a29906149af565b60405180910390fd5b83600860046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e88361ffff16600454611a88919061434c565b611a9291906143bd565b6009819055506103e88261ffff16600454611aad919061434c565b611ab791906143bd565b600a81905550620186a0600a600454611ad0919061434c565b611ada91906143bd565b600b81905550620186a06055600454611af3919061434c565b611afd91906143bd565b600c819055506001600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600860049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060003411611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf490614a41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590614aad565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190614ae2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611e7b929190614b0f565b6020604051808303816000875af1158015611e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebe9190614ae2565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611fc1600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434612f66565b5050505050505050505050565b6060600060149054906101000a900460ff1661201f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612016906140b9565b60405180910390fd5b6006805461202c90614108565b80601f016020809104026020016040519081016040528092919081815260200182805461205890614108565b80156120a55780601f1061207a576101008083540402835291602001916120a5565b820191906000526020600020905b81548152906001019060200180831161208857829003601f168201915b5050505050905090565b600080600080600060149054906101000a900460ff16612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb906140b9565b60405180910390fd5b600860009054906101000a900460ff16600860019054906101000a900460ff16600860029054906101000a900460ff16600860049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b60008060149054906101000a900460ff166121b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ac906140b9565b60405180910390fd5b6121c03384846127dd565b6001905092915050565b600060149054906101000a900460ff16612219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612210906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e906141f1565b60405180910390fd5b60008183856122b6919061492e565b6122c0919061492e565b9050600f600860039054906101000a900460ff1660ff16111561233957600860039054906101000a900460ff1660ff168160ff1610612334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232b90614b84565b60405180910390fd5b612381565b600f8160ff161115612380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237790614bf0565b60405180910390fd5b5b83600860006101000a81548160ff021916908360ff16021790555082600860016101000a81548160ff021916908360ff16021790555081600860026101000a81548160ff021916908360ff16021790555080600860036101000a81548160ff021916908360ff16021790555050505050565b60008060149054906101000a900460ff16612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a906140b9565b60405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254d906141f1565b60405180910390fd5b61255f81612eec565b50565b600060149054906101000a900460ff166125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a8906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461263f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612636906141f1565b60405180910390fd5b612647613107565b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6126f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e990614c5c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127d09190613ad0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128475750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d90614c5c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ff90614cc8565b60405180910390fd5b612913838383613182565b612952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294990614d34565b60405180910390fd5b601260009054906101000a900460ff161580156129b95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a0e5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a1c57612a1b6133c0565b5b6000612a298484846135e1565b905081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a7a9190614318565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad09190614d54565b925050819055508082612ae39190614318565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b319190614d54565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b959190613ad0565b60405180910390a350505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1c90614dd4565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c749190614318565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cca9190614d54565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d2f9190613ad0565b60405180910390a35050565b612d44816137ab565b6000600267ffffffffffffffff811115612d6157612d60613d12565b5b604051908082528060200260200182016040528015612d8f5781602001602082028036833780820191505090505b5090503081600081518110612da757612da6614df4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e1857612e17614df4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612eb6959493929190614f1c565b600060405180830381600087803b158015612ed057600080fd5b505af1158015612ee4573d6000803e3d6000fd5b505050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612f5b9190613ced565b60405180910390a150565b80471015612fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa090614fc2565b60405180910390fd5b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561302b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130229061502e565b60405180910390fd5b613034826137ab565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130bd9695949392919061504e565b60606040518083038185885af11580156130db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061310091906150c4565b5050505050565b6000479050600081111561317f57600860049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561317d573d6000803e3d6000fd5b505b50565b60008060019050600954831180156131e45750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561323a5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324457600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132979190614d54565b9050600a54811180156132f45750600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561334a5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133a05750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133aa57600091505b8280156133b45750815b93505050509392505050565b6001601260006101000a81548160ff02191690831515021790555060006133e6306112f5565b90506000600c5490506000600860039054906101000a900460ff1690506000600860029054906101000a900460ff16905060008160ff1611801561342f57508160ff168160ff16105b156134615780826134409190615117565b60ff168260ff16600c54613454919061434c565b61345e91906143bd565b92505b600b5484106135b857828410613475578293505b6000600860029054906101000a900460ff1660ff1611156134f75760008260ff16600860029054906101000a900460ff1660ff16866134b4919061434c565b6134be91906143bd565b90506134ca3082612ba3565b600860029054906101000a900460ff16836134e59190615117565b925080856134f39190614318565b9450505b600060028360ff16600860019054906101000a900460ff1660ff168761351d919061434c565b61352791906143bd565b61353191906143bd565b9050600081866135419190614318565b9050600360009054906101000a900460ff16600a61355f91906145f9565b81106135b557600047905061357382612d3b565b6000600860019054906101000a900460ff1660ff1611156135b3576000814761359c9190614318565b90506135a7846137ab565b6135b18482612f66565b505b505b50505b6135c0613107565b505050506000601260006101000a81548160ff021916908315150217905550565b60008060009050601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561368b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c1576064600860039054906101000a900460ff1660ff16846136b0919061434c565b6136ba91906143bd565b90506137a0565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137645750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561379a576064600860039054906101000a900460ff1660ff1684613789919061434c565b61379391906143bd565b905061379f565b600090505b5b809150509392505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156138835761388230737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612649565b5b50565b600081519050919050565b600082825260208201905092915050565b60005b838110156138c05780820151818401526020810190506138a5565b60008484015250505050565b6000601f19601f8301169050919050565b60006138e882613886565b6138f28185613891565b93506139028185602086016138a2565b61390b816138cc565b840191505092915050565b6000602082019050818103600083015261393081846138dd565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139778261394c565b9050919050565b6139878161396c565b811461399257600080fd5b50565b6000813590506139a48161397e565b92915050565b6000819050919050565b6139bd816139aa565b81146139c857600080fd5b50565b6000813590506139da816139b4565b92915050565b600080604083850312156139f7576139f6613942565b5b6000613a0585828601613995565b9250506020613a16858286016139cb565b9150509250929050565b60008115159050919050565b613a3581613a20565b82525050565b6000602082019050613a506000830184613a2c565b92915050565b6000613a618261394c565b9050919050565b613a7181613a56565b8114613a7c57600080fd5b50565b600081359050613a8e81613a68565b92915050565b600060208284031215613aaa57613aa9613942565b5b6000613ab884828501613a7f565b91505092915050565b613aca816139aa565b82525050565b6000602082019050613ae56000830184613ac1565b92915050565b613af481613a20565b8114613aff57600080fd5b50565b600081359050613b1181613aeb565b92915050565b60008060408385031215613b2e57613b2d613942565b5b6000613b3c85828601613995565b9250506020613b4d85828601613b02565b9150509250929050565b600080600060608486031215613b7057613b6f613942565b5b6000613b7e86828701613995565b9350506020613b8f86828701613995565b9250506040613ba0868287016139cb565b9150509250925092565b600060ff82169050919050565b613bc081613baa565b82525050565b6000602082019050613bdb6000830184613bb7565b92915050565b600060208284031215613bf757613bf6613942565b5b6000613c05848285016139cb565b91505092915050565b600060208284031215613c2457613c23613942565b5b6000613c3284828501613995565b91505092915050565b600061ffff82169050919050565b613c5281613c3b565b8114613c5d57600080fd5b50565b600081359050613c6f81613c49565b92915050565b60008060408385031215613c8c57613c8b613942565b5b6000613c9a85828601613c60565b9250506020613cab85828601613c60565b9150509250929050565b6000604082019050613cca6000830185613ac1565b613cd76020830184613ac1565b9392505050565b613ce78161396c565b82525050565b6000602082019050613d026000830184613cde565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d4a826138cc565b810181811067ffffffffffffffff82111715613d6957613d68613d12565b5b80604052505050565b6000613d7c613938565b9050613d888282613d41565b919050565b600067ffffffffffffffff821115613da857613da7613d12565b5b613db1826138cc565b9050602081019050919050565b82818337600083830152505050565b6000613de0613ddb84613d8d565b613d72565b905082815260208101848484011115613dfc57613dfb613d0d565b5b613e07848285613dbe565b509392505050565b600082601f830112613e2457613e23613d08565b5b8135613e34848260208601613dcd565b91505092915050565b613e4681613baa565b8114613e5157600080fd5b50565b600081359050613e6381613e3d565b92915050565b60008060008060008060008060008060006101608c8e031215613e8f57613e8e613942565b5b60008c013567ffffffffffffffff811115613ead57613eac613947565b5b613eb98e828f01613e0f565b9b505060208c013567ffffffffffffffff811115613eda57613ed9613947565b5b613ee68e828f01613e0f565b9a50506040613ef78e828f016139cb565b9950506060613f088e828f01613e54565b9850506080613f198e828f01613e54565b97505060a0613f2a8e828f01613e54565b96505060c0613f3b8e828f01613e54565b95505060e0613f4c8e828f01613995565b945050610100613f5e8e828f01613c60565b935050610120613f708e828f01613c60565b925050610140613f828e828f01613e54565b9150509295989b509295989b9093969950565b6000608082019050613faa6000830187613bb7565b613fb76020830186613bb7565b613fc46040830185613bb7565b613fd16060830184613cde565b95945050505050565b600080600060608486031215613ff357613ff2613942565b5b600061400186828701613e54565b935050602061401286828701613e54565b925050604061402386828701613e54565b9150509250925092565b6000806040838503121561404457614043613942565b5b600061405285828601613995565b925050602061406385828601613995565b9150509250929050565b7f4e6f74206c61756e636865640000000000000000000000000000000000000000600082015250565b60006140a3600c83613891565b91506140ae8261406d565b602082019050919050565b600060208201905081810360008301526140d281614096565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061412057607f821691505b602082108103614133576141326140d9565b5b50919050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b600061416f601383613891565b915061417a82614139565b602082019050919050565b6000602082019050818103600083015261419e81614162565b9050919050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b60006141db600d83613891565b91506141e6826141a5565b602082019050919050565b6000602082019050818103600083015261420a816141ce565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614247601c83613891565b915061425282614211565b602082019050919050565b600060208201905081810360008301526142768161423a565b9050919050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b60006142b3601f83613891565b91506142be8261427d565b602082019050919050565b600060208201905081810360008301526142e2816142a6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614323826139aa565b915061432e836139aa565b9250828203905081811115614346576143456142e9565b5b92915050565b6000614357826139aa565b9150614362836139aa565b9250828202614370816139aa565b91508282048414831517614387576143866142e9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143c8826139aa565b91506143d3836139aa565b9250826143e3576143e261438e565b5b828204905092915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b6000614424601683613891565b915061442f826143ee565b602082019050919050565b6000602082019050818103600083015261445381614417565b9050919050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b6000614490601083613891565b915061449b8261445a565b602082019050919050565b600060208201905081810360008301526144bf81614483565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561451d578086048111156144f9576144f86142e9565b5b60018516156145085780820291505b8081029050614516856144c6565b94506144dd565b94509492505050565b60008261453657600190506145f2565b8161454457600090506145f2565b816001811461455a576002811461456457614593565b60019150506145f2565b60ff841115614576576145756142e9565b5b8360020a91508482111561458d5761458c6142e9565b5b506145f2565b5060208310610133831016604e8410600b84101617156145c85782820a9050838111156145c3576145c26142e9565b5b6145f2565b6145d584848460016144d3565b925090508184048111156145ec576145eb6142e9565b5b81810290505b9392505050565b6000614604826139aa565b915061460f83613baa565b925061463c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614526565b905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026146a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614669565b6146b08683614669565b95508019841693508086168417925050509392505050565b6000819050919050565b60006146ed6146e86146e3846139aa565b6146c8565b6139aa565b9050919050565b6000819050919050565b614707836146d2565b61471b614713826146f4565b848454614676565b825550505050565b600090565b614730614723565b61473b8184846146fe565b505050565b5b8181101561475f57614754600082614728565b600181019050614741565b5050565b601f8211156147a45761477581614644565b61477e84614659565b8101602085101561478d578190505b6147a161479985614659565b830182614740565b50505b505050565b600082821c905092915050565b60006147c7600019846008026147a9565b1980831691505092915050565b60006147e083836147b6565b9150826002028217905092915050565b6147f982613886565b67ffffffffffffffff81111561481257614811613d12565b5b61481c8254614108565b614827828285614763565b600060209050601f83116001811461485a5760008415614848578287015190505b61485285826147d4565b8655506148ba565b601f19841661486886614644565b60005b828110156148905784890151825560018201915060208501945060208101905061486b565b868310156148ad57848901516148a9601f8916826147b6565b8355505b6001600288020188555050505b505050505050565b7f4c5020737570706c79206d75737420626520312d313030250000000000000000600082015250565b60006148f8601883613891565b9150614903826148c2565b602082019050919050565b60006020820190508181036000830152614927816148eb565b9050919050565b600061493982613baa565b915061494483613baa565b9250828201905060ff81111561495d5761495c6142e9565b5b92915050565b7f546178206572726f720000000000000000000000000000000000000000000000600082015250565b6000614999600983613891565b91506149a482614963565b602082019050919050565b600060208201905081810360008301526149c88161498c565b9050919050565b7f43616e6e6f7420616464206c6971756964697479206966206d6573736167652060008201527f76616c7565206973203020455448000000000000000000000000000000000000602082015250565b6000614a2b602e83613891565b9150614a36826149cf565b604082019050919050565b60006020820190508181036000830152614a5a81614a1e565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000614a97600983613891565b9150614aa282614a61565b602082019050919050565b60006020820190508181036000830152614ac681614a8a565b9050919050565b600081519050614adc8161397e565b92915050565b600060208284031215614af857614af7613942565b5b6000614b0684828501614acd565b91505092915050565b6000604082019050614b246000830185613cde565b614b316020830184613cde565b9392505050565b7f546178206d757374206465637265617365000000000000000000000000000000600082015250565b6000614b6e601183613891565b9150614b7982614b38565b602082019050919050565b60006020820190508181036000830152614b9d81614b61565b9050919050565b7f5461782063616e6e6f7420657863656564203135250000000000000000000000600082015250565b6000614bda601583613891565b9150614be582614ba4565b602082019050919050565b60006020820190508181036000830152614c0981614bcd565b9050919050565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b6000614c46601383613891565b9150614c5182614c10565b602082019050919050565b60006020820190508181036000830152614c7581614c39565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614cb2601d83613891565b9150614cbd82614c7c565b602082019050919050565b60006020820190508181036000830152614ce181614ca5565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b6000614d1e600f83613891565b9150614d2982614ce8565b602082019050919050565b60006020820190508181036000830152614d4d81614d11565b9050919050565b6000614d5f826139aa565b9150614d6a836139aa565b9250828201905080821115614d8257614d816142e9565b5b92915050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b6000614dbe600b83613891565b9150614dc982614d88565b602082019050919050565b60006020820190508181036000830152614ded81614db1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614e48614e43614e3e84614e23565b6146c8565b6139aa565b9050919050565b614e5881614e2d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e938161396c565b82525050565b6000614ea58383614e8a565b60208301905092915050565b6000602082019050919050565b6000614ec982614e5e565b614ed38185614e69565b9350614ede83614e7a565b8060005b83811015614f0f578151614ef68882614e99565b9750614f0183614eb1565b925050600181019050614ee2565b5085935050505092915050565b600060a082019050614f316000830188613ac1565b614f3e6020830187614e4f565b8181036040830152614f508186614ebe565b9050614f5f6060830185613cde565b614f6c6080830184613ac1565b9695505050505050565b7f4e6f7420656e6f75676820455448000000000000000000000000000000000000600082015250565b6000614fac600e83613891565b9150614fb782614f76565b602082019050919050565b60006020820190508181036000830152614fdb81614f9f565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000615018601183613891565b915061502382614fe2565b602082019050919050565b600060208201905081810360008301526150478161500b565b9050919050565b600060c0820190506150636000830189613cde565b6150706020830188613ac1565b61507d6040830187614e4f565b61508a6060830186614e4f565b6150976080830185613cde565b6150a460a0830184613ac1565b979650505050505050565b6000815190506150be816139b4565b92915050565b6000806000606084860312156150dd576150dc613942565b5b60006150eb868287016150af565b93505060206150fc868287016150af565b925050604061510d868287016150af565b9150509250925092565b600061512282613baa565b915061512d83613baa565b9250828203905060ff811115615146576151456142e9565b5b9291505056fea26469706673582212201a915a859f9acdadbc0edcc852bd6b18e37b20914a0b04a28b45ef3dffdd533164736f6c63430008110033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c806370a08231116100b657806399c8d5561161006f57806399c8d55614610469578063a9059cbb14610497578063b82690a2146104d4578063dd62ed3e146104fd578063f2fde38b1461053a578063f42938901461056357610156565b806370a0823114610377578063715018a6146103b4578063860aefcf146103cb5780638da5cb5b146103f7578063936f9d9a1461042257806395d89b411461043e57610156565b80632836be24116101085780632836be241461027d578063313ce567146102a657806342966c68146102d1578063429cead1146102fa57806351bc3c85146103375780635c07c9931461034e57610156565b806306fdde031461015b578063095ea7b3146101865780631466737f146101c357806318160ddd146101ec57806321c42e111461021757806323b872dd1461024057610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061057a565b60405161017d9190613916565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906139e0565b61065b565b6040516101ba9190613a3b565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e59190613a94565b610742565b005b3480156101f857600080fd5b506102016109cf565b60405161020e9190613ad0565b60405180910390f35b34801561022357600080fd5b5061023e60048036038101906102399190613b17565b610a27565b005b34801561024c57600080fd5b5061026760048036038101906102629190613b57565b610bef565b6040516102749190613a3b565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190613b17565b610da7565b005b3480156102b257600080fd5b506102bb610edf565b6040516102c89190613bc6565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f39190613be1565b610f44565b005b34801561030657600080fd5b50610321600480360381019061031c9190613c0e565b610fa0565b60405161032e9190613a3b565b60405180910390f35b34801561034357600080fd5b5061034c611044565b005b34801561035a57600080fd5b5061037560048036038101906103709190613c75565b61116b565b005b34801561038357600080fd5b5061039e60048036038101906103999190613c0e565b6112f5565b6040516103ab9190613ad0565b60405180910390f35b3480156103c057600080fd5b506103c961138c565b005b3480156103d757600080fd5b506103e0611426565b6040516103ee929190613cb5565b60405180910390f35b34801561040357600080fd5b5061040c611486565b6040516104199190613ced565b60405180910390f35b61043c60048036038101906104379190613e69565b6114af565b005b34801561044a57600080fd5b50610453611fce565b6040516104609190613916565b60405180910390f35b34801561047557600080fd5b5061047e6120af565b60405161048e9493929190613f95565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906139e0565b612165565b6040516104cb9190613a3b565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613fda565b6121ca565b005b34801561050957600080fd5b50610524600480360381019061051f919061402d565b6123f3565b6040516105319190613ad0565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190613c0e565b6124c8565b005b34801561056f57600080fd5b50610578612562565b005b6060600060149054906101000a900460ff166105cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c2906140b9565b60405180910390fd5b600580546105d890614108565b80601f016020809104026020016040519081016040528092919081815260200182805461060490614108565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b60008060149054906101000a900460ff166106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906140b9565b60405180910390fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161072d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072490614185565b60405180910390fd5b610738338484612649565b6001905092915050565b600060149054906101000a900460ff16610791576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610788906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610816906141f1565b60405180910390fd5b601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156108b95750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156108f157503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561092a5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61093357600080fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600860046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060149054906101000a900460ff16610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a16906140b9565b60405180910390fd5b600454905090565b600060149054906101000a900460ff16610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afb906141f1565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b9061425d565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060149054906101000a900460ff16610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c36906140b9565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906142c9565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d8a9190614318565b92505081905550610d9c8484846127dd565b600190509392505050565b600060149054906101000a900460ff16610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b906141f1565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060149054906101000a900460ff16610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f26906140b9565b60405180910390fd5b600360009054906101000a900460ff16905090565b600060149054906101000a900460ff16610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a906140b9565b60405180910390fd5b610f9d3382612ba3565b50565b60008060149054906101000a900460ff16610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe7906140b9565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600060149054906101000a900460ff16611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611118906141f1565b60405180910390fd5b611169600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d3b565b565b600060149054906101000a900460ff166111ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b1906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f906141f1565b60405180910390fd5b60006103e88361ffff1660045461125f919061434c565b61126991906143bd565b905060006103e88361ffff16600454611282919061434c565b61128c91906143bd565b905060095482101580156112a25750600a548110155b6112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d89061443a565b60405180910390fd5b8160098190555080600a8190555050505050565b60008060149054906101000a900460ff16611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c906140b9565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906141f1565b60405180910390fd5b6114246000612eec565b565b600080600060149054906101000a900460ff16611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f906140b9565b60405180910390fd5b600954600a54915091509091565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461153d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611534906141f1565b60405180910390fd5b600060149054906101000a900460ff161561158d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611584906144a6565b60405180910390fd5b6001600060146101000a81548160ff02191690831515021790555087600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff16600a6115df91906145f9565b896115ea919061434c565b6004819055508a600590816115ff91906147f0565b50896006908161160f91906147f0565b5060008160ff16118015611627575060648160ff1611155b611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d9061490e565b60405180910390fd5b60648160ff16600454611679919061434c565b61168391906143bd565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516117639190613ad0565b60405180910390a3600454600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461194b57600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004546118009190614318565b600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516119429190613ad0565b60405180910390a35b86600860006101000a81548160ff021916908360ff16021790555085600860016101000a81548160ff021916908360ff16021790555084600860026101000a81548160ff021916908360ff16021790555084600860019054906101000a900460ff16886119b8919061492e565b6119c2919061492e565b600860036101000a81548160ff021916908360ff1602179055506064600860039054906101000a900460ff1660ff161115611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a29906149af565b60405180910390fd5b83600860046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e88361ffff16600454611a88919061434c565b611a9291906143bd565b6009819055506103e88261ffff16600454611aad919061434c565b611ab791906143bd565b600a81905550620186a0600a600454611ad0919061434c565b611ada91906143bd565b600b81905550620186a06055600454611af3919061434c565b611afd91906143bd565b600c819055506001600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600860049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060003411611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf490614a41565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590614aad565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190614ae2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611e7b929190614b0f565b6020604051808303816000875af1158015611e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebe9190614ae2565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611fc1600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434612f66565b5050505050505050505050565b6060600060149054906101000a900460ff1661201f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612016906140b9565b60405180910390fd5b6006805461202c90614108565b80601f016020809104026020016040519081016040528092919081815260200182805461205890614108565b80156120a55780601f1061207a576101008083540402835291602001916120a5565b820191906000526020600020905b81548152906001019060200180831161208857829003601f168201915b5050505050905090565b600080600080600060149054906101000a900460ff16612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb906140b9565b60405180910390fd5b600860009054906101000a900460ff16600860019054906101000a900460ff16600860029054906101000a900460ff16600860049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b60008060149054906101000a900460ff166121b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ac906140b9565b60405180910390fd5b6121c03384846127dd565b6001905092915050565b600060149054906101000a900460ff16612219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612210906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e906141f1565b60405180910390fd5b60008183856122b6919061492e565b6122c0919061492e565b9050600f600860039054906101000a900460ff1660ff16111561233957600860039054906101000a900460ff1660ff168160ff1610612334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232b90614b84565b60405180910390fd5b612381565b600f8160ff161115612380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237790614bf0565b60405180910390fd5b5b83600860006101000a81548160ff021916908360ff16021790555082600860016101000a81548160ff021916908360ff16021790555081600860026101000a81548160ff021916908360ff16021790555080600860036101000a81548160ff021916908360ff16021790555050505050565b60008060149054906101000a900460ff16612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a906140b9565b60405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254d906141f1565b60405180910390fd5b61255f81612eec565b50565b600060149054906101000a900460ff166125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a8906140b9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461263f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612636906141f1565b60405180910390fd5b612647613107565b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6126f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e990614c5c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127d09190613ad0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128475750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d90614c5c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ff90614cc8565b60405180910390fd5b612913838383613182565b612952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294990614d34565b60405180910390fd5b601260009054906101000a900460ff161580156129b95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a0e5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a1c57612a1b6133c0565b5b6000612a298484846135e1565b905081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a7a9190614318565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ad09190614d54565b925050819055508082612ae39190614318565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b319190614d54565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b959190613ad0565b60405180910390a350505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1c90614dd4565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c749190614318565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cca9190614d54565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d2f9190613ad0565b60405180910390a35050565b612d44816137ab565b6000600267ffffffffffffffff811115612d6157612d60613d12565b5b604051908082528060200260200182016040528015612d8f5781602001602082028036833780820191505090505b5090503081600081518110612da757612da6614df4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e1857612e17614df4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612eb6959493929190614f1c565b600060405180830381600087803b158015612ed057600080fd5b505af1158015612ee4573d6000803e3d6000fd5b505050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612f5b9190613ced565b60405180910390a150565b80471015612fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa090614fc2565b60405180910390fd5b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561302b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130229061502e565b60405180910390fd5b613034826137ab565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130bd9695949392919061504e565b60606040518083038185885af11580156130db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061310091906150c4565b5050505050565b6000479050600081111561317f57600860049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561317d573d6000803e3d6000fd5b505b50565b60008060019050600954831180156131e45750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561323a5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324457600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132979190614d54565b9050600a54811180156132f45750600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561334a5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133a05750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133aa57600091505b8280156133b45750815b93505050509392505050565b6001601260006101000a81548160ff02191690831515021790555060006133e6306112f5565b90506000600c5490506000600860039054906101000a900460ff1690506000600860029054906101000a900460ff16905060008160ff1611801561342f57508160ff168160ff16105b156134615780826134409190615117565b60ff168260ff16600c54613454919061434c565b61345e91906143bd565b92505b600b5484106135b857828410613475578293505b6000600860029054906101000a900460ff1660ff1611156134f75760008260ff16600860029054906101000a900460ff1660ff16866134b4919061434c565b6134be91906143bd565b90506134ca3082612ba3565b600860029054906101000a900460ff16836134e59190615117565b925080856134f39190614318565b9450505b600060028360ff16600860019054906101000a900460ff1660ff168761351d919061434c565b61352791906143bd565b61353191906143bd565b9050600081866135419190614318565b9050600360009054906101000a900460ff16600a61355f91906145f9565b81106135b557600047905061357382612d3b565b6000600860019054906101000a900460ff1660ff1611156135b3576000814761359c9190614318565b90506135a7846137ab565b6135b18482612f66565b505b505b50505b6135c0613107565b505050506000601260006101000a81548160ff021916908315150217905550565b60008060009050601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561368b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c1576064600860039054906101000a900460ff1660ff16846136b0919061434c565b6136ba91906143bd565b90506137a0565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137645750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561379a576064600860039054906101000a900460ff1660ff1684613789919061434c565b61379391906143bd565b905061379f565b600090505b5b809150509392505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156138835761388230737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612649565b5b50565b600081519050919050565b600082825260208201905092915050565b60005b838110156138c05780820151818401526020810190506138a5565b60008484015250505050565b6000601f19601f8301169050919050565b60006138e882613886565b6138f28185613891565b93506139028185602086016138a2565b61390b816138cc565b840191505092915050565b6000602082019050818103600083015261393081846138dd565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139778261394c565b9050919050565b6139878161396c565b811461399257600080fd5b50565b6000813590506139a48161397e565b92915050565b6000819050919050565b6139bd816139aa565b81146139c857600080fd5b50565b6000813590506139da816139b4565b92915050565b600080604083850312156139f7576139f6613942565b5b6000613a0585828601613995565b9250506020613a16858286016139cb565b9150509250929050565b60008115159050919050565b613a3581613a20565b82525050565b6000602082019050613a506000830184613a2c565b92915050565b6000613a618261394c565b9050919050565b613a7181613a56565b8114613a7c57600080fd5b50565b600081359050613a8e81613a68565b92915050565b600060208284031215613aaa57613aa9613942565b5b6000613ab884828501613a7f565b91505092915050565b613aca816139aa565b82525050565b6000602082019050613ae56000830184613ac1565b92915050565b613af481613a20565b8114613aff57600080fd5b50565b600081359050613b1181613aeb565b92915050565b60008060408385031215613b2e57613b2d613942565b5b6000613b3c85828601613995565b9250506020613b4d85828601613b02565b9150509250929050565b600080600060608486031215613b7057613b6f613942565b5b6000613b7e86828701613995565b9350506020613b8f86828701613995565b9250506040613ba0868287016139cb565b9150509250925092565b600060ff82169050919050565b613bc081613baa565b82525050565b6000602082019050613bdb6000830184613bb7565b92915050565b600060208284031215613bf757613bf6613942565b5b6000613c05848285016139cb565b91505092915050565b600060208284031215613c2457613c23613942565b5b6000613c3284828501613995565b91505092915050565b600061ffff82169050919050565b613c5281613c3b565b8114613c5d57600080fd5b50565b600081359050613c6f81613c49565b92915050565b60008060408385031215613c8c57613c8b613942565b5b6000613c9a85828601613c60565b9250506020613cab85828601613c60565b9150509250929050565b6000604082019050613cca6000830185613ac1565b613cd76020830184613ac1565b9392505050565b613ce78161396c565b82525050565b6000602082019050613d026000830184613cde565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d4a826138cc565b810181811067ffffffffffffffff82111715613d6957613d68613d12565b5b80604052505050565b6000613d7c613938565b9050613d888282613d41565b919050565b600067ffffffffffffffff821115613da857613da7613d12565b5b613db1826138cc565b9050602081019050919050565b82818337600083830152505050565b6000613de0613ddb84613d8d565b613d72565b905082815260208101848484011115613dfc57613dfb613d0d565b5b613e07848285613dbe565b509392505050565b600082601f830112613e2457613e23613d08565b5b8135613e34848260208601613dcd565b91505092915050565b613e4681613baa565b8114613e5157600080fd5b50565b600081359050613e6381613e3d565b92915050565b60008060008060008060008060008060006101608c8e031215613e8f57613e8e613942565b5b60008c013567ffffffffffffffff811115613ead57613eac613947565b5b613eb98e828f01613e0f565b9b505060208c013567ffffffffffffffff811115613eda57613ed9613947565b5b613ee68e828f01613e0f565b9a50506040613ef78e828f016139cb565b9950506060613f088e828f01613e54565b9850506080613f198e828f01613e54565b97505060a0613f2a8e828f01613e54565b96505060c0613f3b8e828f01613e54565b95505060e0613f4c8e828f01613995565b945050610100613f5e8e828f01613c60565b935050610120613f708e828f01613c60565b925050610140613f828e828f01613e54565b9150509295989b509295989b9093969950565b6000608082019050613faa6000830187613bb7565b613fb76020830186613bb7565b613fc46040830185613bb7565b613fd16060830184613cde565b95945050505050565b600080600060608486031215613ff357613ff2613942565b5b600061400186828701613e54565b935050602061401286828701613e54565b925050604061402386828701613e54565b9150509250925092565b6000806040838503121561404457614043613942565b5b600061405285828601613995565b925050602061406385828601613995565b9150509250929050565b7f4e6f74206c61756e636865640000000000000000000000000000000000000000600082015250565b60006140a3600c83613891565b91506140ae8261406d565b602082019050919050565b600060208201905081810360008301526140d281614096565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061412057607f821691505b602082108103614133576141326140d9565b5b50919050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b600061416f601383613891565b915061417a82614139565b602082019050919050565b6000602082019050818103600083015261419e81614162565b9050919050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b60006141db600d83613891565b91506141e6826141a5565b602082019050919050565b6000602082019050818103600083015261420a816141ce565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614247601c83613891565b915061425282614211565b602082019050919050565b600060208201905081810360008301526142768161423a565b9050919050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b60006142b3601f83613891565b91506142be8261427d565b602082019050919050565b600060208201905081810360008301526142e2816142a6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614323826139aa565b915061432e836139aa565b9250828203905081811115614346576143456142e9565b5b92915050565b6000614357826139aa565b9150614362836139aa565b9250828202614370816139aa565b91508282048414831517614387576143866142e9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143c8826139aa565b91506143d3836139aa565b9250826143e3576143e261438e565b5b828204905092915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b6000614424601683613891565b915061442f826143ee565b602082019050919050565b6000602082019050818103600083015261445381614417565b9050919050565b7f416c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b6000614490601083613891565b915061449b8261445a565b602082019050919050565b600060208201905081810360008301526144bf81614483565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561451d578086048111156144f9576144f86142e9565b5b60018516156145085780820291505b8081029050614516856144c6565b94506144dd565b94509492505050565b60008261453657600190506145f2565b8161454457600090506145f2565b816001811461455a576002811461456457614593565b60019150506145f2565b60ff841115614576576145756142e9565b5b8360020a91508482111561458d5761458c6142e9565b5b506145f2565b5060208310610133831016604e8410600b84101617156145c85782820a9050838111156145c3576145c26142e9565b5b6145f2565b6145d584848460016144d3565b925090508184048111156145ec576145eb6142e9565b5b81810290505b9392505050565b6000614604826139aa565b915061460f83613baa565b925061463c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614526565b905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026146a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614669565b6146b08683614669565b95508019841693508086168417925050509392505050565b6000819050919050565b60006146ed6146e86146e3846139aa565b6146c8565b6139aa565b9050919050565b6000819050919050565b614707836146d2565b61471b614713826146f4565b848454614676565b825550505050565b600090565b614730614723565b61473b8184846146fe565b505050565b5b8181101561475f57614754600082614728565b600181019050614741565b5050565b601f8211156147a45761477581614644565b61477e84614659565b8101602085101561478d578190505b6147a161479985614659565b830182614740565b50505b505050565b600082821c905092915050565b60006147c7600019846008026147a9565b1980831691505092915050565b60006147e083836147b6565b9150826002028217905092915050565b6147f982613886565b67ffffffffffffffff81111561481257614811613d12565b5b61481c8254614108565b614827828285614763565b600060209050601f83116001811461485a5760008415614848578287015190505b61485285826147d4565b8655506148ba565b601f19841661486886614644565b60005b828110156148905784890151825560018201915060208501945060208101905061486b565b868310156148ad57848901516148a9601f8916826147b6565b8355505b6001600288020188555050505b505050505050565b7f4c5020737570706c79206d75737420626520312d313030250000000000000000600082015250565b60006148f8601883613891565b9150614903826148c2565b602082019050919050565b60006020820190508181036000830152614927816148eb565b9050919050565b600061493982613baa565b915061494483613baa565b9250828201905060ff81111561495d5761495c6142e9565b5b92915050565b7f546178206572726f720000000000000000000000000000000000000000000000600082015250565b6000614999600983613891565b91506149a482614963565b602082019050919050565b600060208201905081810360008301526149c88161498c565b9050919050565b7f43616e6e6f7420616464206c6971756964697479206966206d6573736167652060008201527f76616c7565206973203020455448000000000000000000000000000000000000602082015250565b6000614a2b602e83613891565b9150614a36826149cf565b604082019050919050565b60006020820190508181036000830152614a5a81614a1e565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000614a97600983613891565b9150614aa282614a61565b602082019050919050565b60006020820190508181036000830152614ac681614a8a565b9050919050565b600081519050614adc8161397e565b92915050565b600060208284031215614af857614af7613942565b5b6000614b0684828501614acd565b91505092915050565b6000604082019050614b246000830185613cde565b614b316020830184613cde565b9392505050565b7f546178206d757374206465637265617365000000000000000000000000000000600082015250565b6000614b6e601183613891565b9150614b7982614b38565b602082019050919050565b60006020820190508181036000830152614b9d81614b61565b9050919050565b7f5461782063616e6e6f7420657863656564203135250000000000000000000000600082015250565b6000614bda601583613891565b9150614be582614ba4565b602082019050919050565b60006020820190508181036000830152614c0981614bcd565b9050919050565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b6000614c46601383613891565b9150614c5182614c10565b602082019050919050565b60006020820190508181036000830152614c7581614c39565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614cb2601d83613891565b9150614cbd82614c7c565b602082019050919050565b60006020820190508181036000830152614ce181614ca5565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b6000614d1e600f83613891565b9150614d2982614ce8565b602082019050919050565b60006020820190508181036000830152614d4d81614d11565b9050919050565b6000614d5f826139aa565b9150614d6a836139aa565b9250828201905080821115614d8257614d816142e9565b5b92915050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b6000614dbe600b83613891565b9150614dc982614d88565b602082019050919050565b60006020820190508181036000830152614ded81614db1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614e48614e43614e3e84614e23565b6146c8565b6139aa565b9050919050565b614e5881614e2d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e938161396c565b82525050565b6000614ea58383614e8a565b60208301905092915050565b6000602082019050919050565b6000614ec982614e5e565b614ed38185614e69565b9350614ede83614e7a565b8060005b83811015614f0f578151614ef68882614e99565b9750614f0183614eb1565b925050600181019050614ee2565b5085935050505092915050565b600060a082019050614f316000830188613ac1565b614f3e6020830187614e4f565b8181036040830152614f508186614ebe565b9050614f5f6060830185613cde565b614f6c6080830184613ac1565b9695505050505050565b7f4e6f7420656e6f75676820455448000000000000000000000000000000000000600082015250565b6000614fac600e83613891565b9150614fb782614f76565b602082019050919050565b60006020820190508181036000830152614fdb81614f9f565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000615018601183613891565b915061502382614fe2565b602082019050919050565b600060208201905081810360008301526150478161500b565b9050919050565b600060c0820190506150636000830189613cde565b6150706020830188613ac1565b61507d6040830187614e4f565b61508a6060830186614e4f565b6150976080830185613cde565b6150a460a0830184613ac1565b979650505050505050565b6000815190506150be816139b4565b92915050565b6000806000606084860312156150dd576150dc613942565b5b60006150eb868287016150af565b93505060206150fc868287016150af565b925050604061510d868287016150af565b9150509250925092565b600061512282613baa565b915061512d83613baa565b9250828203905060ff811115615146576151456142e9565b5b9291505056fea26469706673582212201a915a859f9acdadbc0edcc852bd6b18e37b20914a0b04a28b45ef3dffdd533164736f6c63430008110033

Deployed Bytecode Sourcemap

1322:11007:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5093:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5684:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9497:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5346:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12097:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6510:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11975:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5263:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9876:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8515:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11799:100;;;;;;;;;;;;;:::i;:::-;;8623:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5437:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1002:83;;;;;;;;;;;;;:::i;:::-;;8385:127;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;932:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2755:1960;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5176:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8154:228;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;6369:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9000:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5547:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1088:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11902:70;;;;;;;;;;;;;:::i;:::-;;5093:80;5141:13;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;5165:5:::1;5158:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5093:80:::0;:::o;5684:207::-;5761:4;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;5804:1:::1;5780:9;:21;5790:10;5780:21;;;;;;;;;;;;;;;;:25;5772:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5833:37;5842:10;5854:7;5863:6;5833:8;:37::i;:::-;5882:4;5875:11;;5684:207:::0;;;;:::o;9497:372::-;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:6:::1;::::0;::::1;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9606:5:::2;:28;9612:21;9606:28;;;;;;;;;;;;;;;;;;;;;;;;;9605:29;:82;;;;;2013:42;9638:49;;:21;:49;;;;9605:82;:124;;;;;9724:4;9691:38;;:21;:38;;;;9605:124;:163;;;;;9766:1;9733:35;;:21;:35;;;;9605:163;9597:172;;;::::0;::::2;;9809:4;9774:9;:32;9784:21;9774:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;9843:21;9818:22;;:46;;;;;;;;;;;;;;;;;;9497:372:::0;:::o;5346:88::-;5401:7;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;5419:12:::1;;5412:19;;5346:88:::0;:::o;12097:229::-;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:6:::1;::::0;::::1;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12231:9:::2;;;;;;;;;;;12210:30;;:17;:30;;::::0;12202:71:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;12305:15;12278:5;:24;12284:17;12278:24;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12097:229:::0;;:::o;6510:281::-;6601:4;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;6653:6:::1;6620:11;:17;6632:4;6620:17;;;;;;;;;;;;;;;:29;6638:10;6620:29;;;;;;;;;;;;;;;;:39;;6612:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;6732:6;6699:11;:17;6711:4;6699:17;;;;;;;;;;;;;;;:29;6717:10;6699:29;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;6743:27;6753:4;6759:2;6763:6;6743:9;:27::i;:::-;6782:4;6775:11;;6510:281:::0;;;;;:::o;11975:119::-;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:6:::1;::::0;::::1;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12081:10:::2;12061:9;:17;12071:6;12061:17;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11975:119:::0;;:::o;5263:80::-;5315:5;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;5331:9:::1;;;;;;;;;;;5324:16;;5263:80:::0;:::o;9876:85::-;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;9931:25:::1;9937:10;9949:6;9931:5;:25::i;:::-;9876:85:::0;:::o;8515:103::-;8583:4;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;8598:9:::1;:17;8608:6;8598:17;;;;;;;;;;;;;;;;;;;;;;;;;8591:24;;8515:103:::0;;;:::o;11799:100::-;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:6:::1;::::0;::::1;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11853:43:::2;11871:9;:24;11889:4;11871:24;;;;;;;;;;;;;;;;11853:17;:43::i;:::-;11799:100::o:0;8623:372::-;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:6:::1;::::0;::::1;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8728:16:::2;8778:4;8762:13;8747:28;;:12;;:28;;;;:::i;:::-;:35;;;;:::i;:::-;8728:54;;8787:20;8845:4;8825:17;8810:32;;:12;;:32;;;;:::i;:::-;:39;;;;:::i;:::-;8787:62;;8875:6;;8863:8;:18;;:48;;;;;8901:10;;8885:12;:26;;8863:48;8855:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;8952:8;8943:6;:17;;;;8978:12;8965:10;:25;;;;8723:272;;8623:372:::0;;:::o;5437:107::-;5505:7;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;5523:9:::1;:18;5533:7;5523:18;;;;;;;;;;;;;;;;5516:25;;5437:107:::0;;;:::o;1002:83::-;899:6;;;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1052:30:::1;1079:1;1052:18;:30::i;:::-;1002:83::o:0;8385:127::-;8437:22;8461:17;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;8490:6:::1;;8498:10;;8482:27;;;;8385:127:::0;;:::o;932:67::-;972:7;990:6;;;;;;;;;;;983:13;;932:67;:::o;2755:1960::-;899:6;;;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3111:8:::1;;;;;;;;;;;3110:9;3102:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3157:4;3146:8;;:15;;;;;;;;;;;;;;;;;;3179:13;3167:9;;:25;;;;;;;;;;;;;;;;;;3232:9;;;;;;;;;;;3228:2;:13;;;;:::i;:::-;3213:11;:29;;;;:::i;:::-;3198:12;:44;;;;3256:9;3248:5;:17;;;;;;:::i;:::-;;3281:11;3271:7;:21;;;;;;:::i;:::-;;3337:1;3308:26;:30;;;:67;;;;;3372:3;3342:26;:33;;;;3308:67;3300:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;3481:3;3452:26;3437:41;;:12;;:41;;;;:::i;:::-;:47;;;;:::i;:::-;3410:9;:24;3428:4;3410:24;;;;;;;;;;;;;;;:74;;;;3524:4;3495:61;;3512:1;3495:61;;;3531:9;:24;3549:4;3531:24;;;;;;;;;;;;;;;;3495:61;;;;;;:::i;:::-;;;;;;;;3594:12;;3566:9;:24;3584:4;3566:24;;;;;;;;;;;;;;;;:40;3562:178;;3650:9;:24;3668:4;3650:24;;;;;;;;;;;;;;;;3635:12;;:39;;;;:::i;:::-;3615:9;:17;3625:6:::0;::::1;;;;;;;;;;3615:17;;;;;;;;;;;;;;;:59;;;;3707:6;::::0;::::1;;;;;;;;3686:47;;3703:1;3686:47;;;3715:9;:17;3725:6:::0;::::1;;;;;;;;;;3715:17;;;;;;;;;;;;;;;;3686:47;;;;;;:::i;:::-;;;;;;;;3562:178;3769:21;3747:19;;:43;;;;;;;;;;;;;;;;;;3813:15;3797:13;;:31;;;;;;;;;;;;;;;;;;3851:10;3835:13;;:26;;;;;;;;;;;;;;;;;;3922:10;3906:13;;;;;;;;;;;3882:21;:37;;;;:::i;:::-;:50;;;;:::i;:::-;3867:12;;:65;;;;;;;;;;;;;;;;;;3960:3;3946:12;;;;;;;;;;;:17;;;;3938:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4015:24;3982:22;;:58;;;;;;;;;;;;;;;;;;4088:4;4072:13;4057:28;;:12;;:28;;;;:::i;:::-;:35;;;;:::i;:::-;4048:6;:44;;;;4146:4;4126:17;4111:32;;:12;;:32;;;;:::i;:::-;:39;;;;:::i;:::-;4098:10;:52;;;;4193:6;4188:2;4173:12;;:17;;;;:::i;:::-;:26;;;;:::i;:::-;4156:14;:43;;;;4238:6;4233:2;4218:12;;:17;;;;:::i;:::-;:26;;;;:::i;:::-;4205:10;:39;;;;4272:4;4252:9;:17;4262:6:::0;::::1;;;;;;;;;;4252:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4309:4;4282:9;:24;4300:4;4282:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;4357:4;4319:9;:35;2013:42;4319:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;4403:4;4367:9;:33;4377:22;;;;;;;;;;;4367:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;4433:1;4423:9;:11;4415:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4520:1;4499:23;;:9;;;;;;;;;;;:23;;;4491:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;4572:10;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4554:50;;;4613:4;4620;;;;;;;;;;;4554:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4542:9;;:83;;;;;;;;;;;;;;;;;;4650:4;4631:5;:16;4637:9;;;;;;;;;;;4631:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;4660:50;4674:9;:24;4692:4;4674:24;;;;;;;;;;;;;;;;4700:9;4660:13;:50::i;:::-;2755:1960:::0;;;;;;;;;;;:::o;5176:84::-;5226:13;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;5250:7:::1;5243:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5176:84:::0;:::o;8154:228::-;8203:24;8229:18;8249:13;8264:29;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;8305:19:::1;;;;;;;;;;;8326:13;;;;;;;;;;;8341;;;;;;;;;;;8356:22;;;;;;;;;;;8297:82;;;;;;;;8154:228:::0;;;;:::o;6369:138::-;6442:4;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;6453::::1;6463:10;6475:2;6479:6;6453:9;:33::i;:::-;6498:4;6491:11;;6369:138:::0;;;;:::o;9000:492::-;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:6:::1;::::0;::::1;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9120:20:::2;9180:7;9165:12;9143:18;:34;;;;:::i;:::-;:44;;;;:::i;:::-;9120:67;;9211:2;9196:12;;;;;;;;;;;:17;;;9192:156;;;9242:12;;;;;;;;;;;9225:29;;:14;:29;;;9217:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9192:156;;;9317:2;9299:14;:20;;;;9291:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9192:156;9374:18;9352:19;;:40;;;;;;;;;;;;;;;;;;9413:12;9397:13;;:28;;;;;;;;;;;;;;;;;;9446:7;9430:13;;:23;;;;;;;;;;;;;;;;;;9473:14;9458:12;;:29;;;;;;;;;;;;;;;;;;9115:377;9000:492:::0;;;:::o;5547:131::-;5630:7;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;5648:11:::1;:18;5660:5;5648:18;;;;;;;;;;;;;;;:27;5667:7;5648:27;;;;;;;;;;;;;;;;5641:34;;5547:131:::0;;;;:::o;1088:97::-;899:6;;;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1154:28:::1;1173:8;1154:18;:28::i;:::-;1088:97:::0;:::o;11902:70::-;2349:8;;;;;;;;;;;2341:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:6:::1;::::0;::::1;;;;;;;;885:20;;:10;:20;;;877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11956:13:::2;:11;:13::i;:::-;11902:70::o:0;5894:244::-;5999:1;5982:19;;:5;:19;;;;:44;;;;;6024:1;6005:21;;:7;:21;;;;5982:44;5974:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6085:6;6055:11;:18;6067:5;6055:18;;;;;;;;;;;;;;;:27;6074:7;6055:27;;;;;;;;;;;;;;;:36;;;;6117:7;6101:32;;6110:5;6101:32;;;6126:6;6101:32;;;;;;:::i;:::-;;;;;;;;5894:244;;;:::o;6794:575::-;6892:1;6876:18;;:4;:18;;;;:38;;;;;6912:1;6898:16;;:2;:16;;;;6876:38;6868:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6971:6;6952:9;:15;6962:4;6952:15;;;;;;;;;;;;;;;;:25;;6944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7025:29;7037:4;7043:2;7047:6;7025:11;:29::i;:::-;7017:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;7087:10;;;;;;;;;;;7086:11;:31;;;;;7102:9;:15;7112:4;7102:15;;;;;;;;;;;;;;;;;;;;;;;;;7101:16;7086:31;:44;;;;;7121:5;:9;7127:2;7121:9;;;;;;;;;;;;;;;;;;;;;;;;;7086:44;7081:76;;;7135:19;:17;:19::i;:::-;7081:76;7161:17;7181:31;7195:4;7201:2;7205:6;7181:13;:31::i;:::-;7161:51;;7238:6;7219:9;:15;7229:4;7219:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;7277:9;7249;:24;7267:4;7249:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;7318:9;7309:6;:18;;;;:::i;:::-;7291:9;:13;7301:2;7291:13;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;7353:2;7338:26;;7347:4;7338:26;;;7357:6;7338:26;;;;;;:::i;:::-;;;;;;;;6863:506;6794:575;;;:::o;9966:222::-;10051:6;10032:9;:15;10042:4;10032:15;;;;;;;;;;;;;;;;:25;;10024:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10097:6;10078:9;:15;10088:4;10078:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;10133:6;10108:9;:21;10126:1;10108:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;10172:1;10149:34;;10158:4;10149:34;;;10176:6;10149:34;;;;;;:::i;:::-;;;;;;;;9966:222;;:::o;11327:309::-;11388:35;11411:11;11388:22;:35::i;:::-;11428:21;11466:1;11452:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11428:40;;11491:4;11473;11478:1;11473:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11511:4;;;;;;;;;;;11501;11506:1;11501:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;11520:10;;;;;;;;;;;:61;;;11582:11;11594:1;11596:4;11609;11615:15;11520:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11383:253;11327:309;:::o;1188:127::-;1258:9;1249:6;;:18;;;;;;;;;;;;;;;;;;1278:31;1299:9;1278:31;;;;;;:::i;:::-;;;;;;;;1188:127;:::o;4720:368::-;4829:9;4804:21;:34;;4796:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4898:11;4870:9;:24;4888:4;4870:24;;;;;;;;;;;;;;;;:39;;4862:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;4936:35;4959:11;4936:22;:35::i;:::-;4976:10;;;;;;;;;;;:26;;;5010:9;5031:4;5038:11;5051:1;5054;5057:7;;;;;;;;;;;5066:15;4976:107;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;4720:368;;:::o;11639:155::-;11675:18;11696:21;11675:42;;11739:1;11726:10;:14;11722:68;;;11744:22;;;;;;;;;;;:31;;:43;11776:10;11744:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11722:68;11670:124;11639:155::o;7372:427::-;7457:4;7468:11;7482:4;7468:18;;7505:6;;7496;:15;:35;;;;;7516:9;:15;7526:4;7516:15;;;;;;;;;;;;;;;;;;;;;;;;;7515:16;7496:35;:53;;;;;7536:9;:13;7546:2;7536:13;;;;;;;;;;;;;;;;;;;;;;;;;7535:14;7496:53;7491:80;;;7563:5;7554:14;;7491:80;7575:15;7593:4;7575:22;;7602:20;7641:6;7625:9;:13;7635:2;7625:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;7602:45;;7672:10;;7657:12;:25;:45;;;;;7687:9;:15;7697:4;7687:15;;;;;;;;;;;;;;;;;;;;;;;;;7686:16;7657:45;:63;;;;;7707:9;:13;7717:2;7707:13;;;;;;;;;;;;;;;;;;;;;;;;;7706:14;7657:63;:77;;;;;7725:5;:9;7731:2;7725:9;;;;;;;;;;;;;;;;;;;;;;;;;7724:10;7657:77;7652:108;;;7752:5;7739:18;;7652:108;7773:6;:20;;;;;7783:10;7773:20;7765:29;;;;;7372:427;;;;;:::o;10193:1131::-;2286:4;2273:10;;:17;;;;;;;;;;;;;;;;;;10244:18:::1;10265:24;10283:4;10265:9;:24::i;:::-;10244:45;;10294:17;10314:10;;10294:30;;10329:21;10353:12;;;;;;;;;;;10329:36;;10370:13;10386;;;;;;;;;;;10370:29;;10418:1;10408:7;:11;;;:40;;;;;10433:15;10423:25;;:7;:25;;;10408:40;10404:119;;;10512:7;10496:15;:23;;;;:::i;:::-;10464:56;;10477:15;10464:28;;:10;;:28;;;;:::i;:::-;:56;;;;:::i;:::-;10452:68;;10404:119;10545:14;;10531:10;:28;10527:775;;10585:9;10571:10;:23;10567:56;;10611:9;10598:22;;10567:56;10649:1;10633:13;;;;;;;;;;;:17;;;10629:212;;;10660:18;10710:15;10681:44;;10694:13;;;;;;;;;;;10681:26;;:10;:26;;;;:::i;:::-;:44;;;;:::i;:::-;10660:65;;10732:32;10746:4;10753:10;10732:5;:32::i;:::-;10790:13;;;;;;;;;;;10771:32;;;;;:::i;:::-;;;10824:10;10810:24;;;;;:::i;:::-;;;10652:189;10629:212;10846:16;10912:1;10894:15;10865:44;;10878:13;;;;;;;;;;;10865:26;;:10;:26;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;10846:67;;10919:18;10953:8;10940:10;:21;;;;:::i;:::-;10919:42;;10989:9;;;;;;;;;;;10985:2;:13;;;;:::i;:::-;10971:10;:27;10967:330;;11007:28;11038:21;11007:52;;11066:29;11084:10;11066:17;:29::i;:::-;11122:1;11106:13;;;;;;;;;;;:17;;;11102:189;;;11133:19;11179:20;11155:21;:44;;;;:::i;:::-;11133:66;;11207:32;11230:8;11207:22;:32::i;:::-;11247:36;11261:8;11271:11;11247:13;:36::i;:::-;11125:166;11102:189;11000:297;10967:330;10561:741;;10527:775;11306:13;:11;:13::i;:::-;10239:1085;;;;2308:5:::0;2295:10;;:18;;;;;;;;;;;;;;;;;;10193:1131::o;7802:347::-;7889:7;7903:17;7923:1;7903:21;;7933:5;:11;7939:4;7933:11;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;7949:9;:13;7959:2;7949:13;;;;;;;;;;;;;;;;;;;;;;;;;7948:14;7933:29;7929:194;;;8002:3;7987:12;;;;;;;;;;;7978:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;7966:39;;7929:194;;;8021:5;:9;8027:2;8021:9;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;8035:9;:15;8045:4;8035:15;;;;;;;;;;;;;;;;;;;;;;;;;8034:16;8021:29;8017:106;;;8090:3;8075:12;;;;;;;;;;;8066:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;8054:39;;8017:106;;;8119:1;8107:13;;8017:106;7929:194;8135:9;8128:16;;;7802:347;;;;;:::o;6141:223::-;6266:11;6211;:26;6231:4;6211:26;;;;;;;;;;;;;;;:52;2013:42;6211:52;;;;;;;;;;;;;;;;:66;6207:153;;;6286:68;6303:4;2013:42;6336:17;6286:8;:68::i;:::-;6207:153;6141:223;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:104::-;3491:7;3520:24;3538:5;3520:24;:::i;:::-;3509:35;;3446:104;;;:::o;3556:138::-;3637:32;3663:5;3637:32;:::i;:::-;3630:5;3627:43;3617:71;;3684:1;3681;3674:12;3617:71;3556:138;:::o;3700:155::-;3754:5;3792:6;3779:20;3770:29;;3808:41;3843:5;3808:41;:::i;:::-;3700:155;;;;:::o;3861:345::-;3928:6;3977:2;3965:9;3956:7;3952:23;3948:32;3945:119;;;3983:79;;:::i;:::-;3945:119;4103:1;4128:61;4181:7;4172:6;4161:9;4157:22;4128:61;:::i;:::-;4118:71;;4074:125;3861:345;;;;:::o;4212:118::-;4299:24;4317:5;4299:24;:::i;:::-;4294:3;4287:37;4212:118;;:::o;4336:222::-;4429:4;4467:2;4456:9;4452:18;4444:26;;4480:71;4548:1;4537:9;4533:17;4524:6;4480:71;:::i;:::-;4336:222;;;;:::o;4564:116::-;4634:21;4649:5;4634:21;:::i;:::-;4627:5;4624:32;4614:60;;4670:1;4667;4660:12;4614:60;4564:116;:::o;4686:133::-;4729:5;4767:6;4754:20;4745:29;;4783:30;4807:5;4783:30;:::i;:::-;4686:133;;;;:::o;4825:468::-;4890:6;4898;4947:2;4935:9;4926:7;4922:23;4918:32;4915:119;;;4953:79;;:::i;:::-;4915:119;5073:1;5098:53;5143:7;5134:6;5123:9;5119:22;5098:53;:::i;:::-;5088:63;;5044:117;5200:2;5226:50;5268:7;5259:6;5248:9;5244:22;5226:50;:::i;:::-;5216:60;;5171:115;4825:468;;;;;:::o;5299:619::-;5376:6;5384;5392;5441:2;5429:9;5420:7;5416:23;5412:32;5409:119;;;5447:79;;:::i;:::-;5409:119;5567:1;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5538:117;5694:2;5720:53;5765:7;5756:6;5745:9;5741:22;5720:53;:::i;:::-;5710:63;;5665:118;5822:2;5848:53;5893:7;5884:6;5873:9;5869:22;5848:53;:::i;:::-;5838:63;;5793:118;5299:619;;;;;:::o;5924:86::-;5959:7;5999:4;5992:5;5988:16;5977:27;;5924:86;;;:::o;6016:112::-;6099:22;6115:5;6099:22;:::i;:::-;6094:3;6087:35;6016:112;;:::o;6134:214::-;6223:4;6261:2;6250:9;6246:18;6238:26;;6274:67;6338:1;6327:9;6323:17;6314:6;6274:67;:::i;:::-;6134:214;;;;:::o;6354:329::-;6413:6;6462:2;6450:9;6441:7;6437:23;6433:32;6430:119;;;6468:79;;:::i;:::-;6430:119;6588:1;6613:53;6658:7;6649:6;6638:9;6634:22;6613:53;:::i;:::-;6603:63;;6559:117;6354:329;;;;:::o;6689:::-;6748:6;6797:2;6785:9;6776:7;6772:23;6768:32;6765:119;;;6803:79;;:::i;:::-;6765:119;6923:1;6948:53;6993:7;6984:6;6973:9;6969:22;6948:53;:::i;:::-;6938:63;;6894:117;6689:329;;;;:::o;7024:89::-;7060:7;7100:6;7093:5;7089:18;7078:29;;7024:89;;;:::o;7119:120::-;7191:23;7208:5;7191:23;:::i;:::-;7184:5;7181:34;7171:62;;7229:1;7226;7219:12;7171:62;7119:120;:::o;7245:137::-;7290:5;7328:6;7315:20;7306:29;;7344:32;7370:5;7344:32;:::i;:::-;7245:137;;;;:::o;7388:470::-;7454:6;7462;7511:2;7499:9;7490:7;7486:23;7482:32;7479:119;;;7517:79;;:::i;:::-;7479:119;7637:1;7662:52;7706:7;7697:6;7686:9;7682:22;7662:52;:::i;:::-;7652:62;;7608:116;7763:2;7789:52;7833:7;7824:6;7813:9;7809:22;7789:52;:::i;:::-;7779:62;;7734:117;7388:470;;;;;:::o;7864:332::-;7985:4;8023:2;8012:9;8008:18;8000:26;;8036:71;8104:1;8093:9;8089:17;8080:6;8036:71;:::i;:::-;8117:72;8185:2;8174:9;8170:18;8161:6;8117:72;:::i;:::-;7864:332;;;;;:::o;8202:118::-;8289:24;8307:5;8289:24;:::i;:::-;8284:3;8277:37;8202:118;;:::o;8326:222::-;8419:4;8457:2;8446:9;8442:18;8434:26;;8470:71;8538:1;8527:9;8523:17;8514:6;8470:71;:::i;:::-;8326:222;;;;:::o;8554:117::-;8663:1;8660;8653:12;8677:117;8786:1;8783;8776:12;8800:180;8848:77;8845:1;8838:88;8945:4;8942:1;8935:15;8969:4;8966:1;8959:15;8986:281;9069:27;9091:4;9069:27;:::i;:::-;9061:6;9057:40;9199:6;9187:10;9184:22;9163:18;9151:10;9148:34;9145:62;9142:88;;;9210:18;;:::i;:::-;9142:88;9250:10;9246:2;9239:22;9029:238;8986:281;;:::o;9273:129::-;9307:6;9334:20;;:::i;:::-;9324:30;;9363:33;9391:4;9383:6;9363:33;:::i;:::-;9273:129;;;:::o;9408:308::-;9470:4;9560:18;9552:6;9549:30;9546:56;;;9582:18;;:::i;:::-;9546:56;9620:29;9642:6;9620:29;:::i;:::-;9612:37;;9704:4;9698;9694:15;9686:23;;9408:308;;;:::o;9722:146::-;9819:6;9814:3;9809;9796:30;9860:1;9851:6;9846:3;9842:16;9835:27;9722:146;;;:::o;9874:425::-;9952:5;9977:66;9993:49;10035:6;9993:49;:::i;:::-;9977:66;:::i;:::-;9968:75;;10066:6;10059:5;10052:21;10104:4;10097:5;10093:16;10142:3;10133:6;10128:3;10124:16;10121:25;10118:112;;;10149:79;;:::i;:::-;10118:112;10239:54;10286:6;10281:3;10276;10239:54;:::i;:::-;9958:341;9874:425;;;;;:::o;10319:340::-;10375:5;10424:3;10417:4;10409:6;10405:17;10401:27;10391:122;;10432:79;;:::i;:::-;10391:122;10549:6;10536:20;10574:79;10649:3;10641:6;10634:4;10626:6;10622:17;10574:79;:::i;:::-;10565:88;;10381:278;10319:340;;;;:::o;10665:118::-;10736:22;10752:5;10736:22;:::i;:::-;10729:5;10726:33;10716:61;;10773:1;10770;10763:12;10716:61;10665:118;:::o;10789:135::-;10833:5;10871:6;10858:20;10849:29;;10887:31;10912:5;10887:31;:::i;:::-;10789:135;;;;:::o;10930:2125::-;11087:6;11095;11103;11111;11119;11127;11135;11143;11151;11159;11167:7;11217:3;11205:9;11196:7;11192:23;11188:33;11185:120;;;11224:79;;:::i;:::-;11185:120;11372:1;11361:9;11357:17;11344:31;11402:18;11394:6;11391:30;11388:117;;;11424:79;;:::i;:::-;11388:117;11529:63;11584:7;11575:6;11564:9;11560:22;11529:63;:::i;:::-;11519:73;;11315:287;11669:2;11658:9;11654:18;11641:32;11700:18;11692:6;11689:30;11686:117;;;11722:79;;:::i;:::-;11686:117;11827:63;11882:7;11873:6;11862:9;11858:22;11827:63;:::i;:::-;11817:73;;11612:288;11939:2;11965:53;12010:7;12001:6;11990:9;11986:22;11965:53;:::i;:::-;11955:63;;11910:118;12067:2;12093:51;12136:7;12127:6;12116:9;12112:22;12093:51;:::i;:::-;12083:61;;12038:116;12193:3;12220:51;12263:7;12254:6;12243:9;12239:22;12220:51;:::i;:::-;12210:61;;12164:117;12320:3;12347:51;12390:7;12381:6;12370:9;12366:22;12347:51;:::i;:::-;12337:61;;12291:117;12447:3;12474:51;12517:7;12508:6;12497:9;12493:22;12474:51;:::i;:::-;12464:61;;12418:117;12574:3;12601:53;12646:7;12637:6;12626:9;12622:22;12601:53;:::i;:::-;12591:63;;12545:119;12703:3;12730:52;12774:7;12765:6;12754:9;12750:22;12730:52;:::i;:::-;12720:62;;12674:118;12831:3;12858:52;12902:7;12893:6;12882:9;12878:22;12858:52;:::i;:::-;12848:62;;12802:118;12959:3;12987:51;13030:7;13021:6;13010:9;13006:22;12987:51;:::i;:::-;12976:62;;12930:118;10930:2125;;;;;;;;;;;;;;:::o;13061:529::-;13226:4;13264:3;13253:9;13249:19;13241:27;;13278:67;13342:1;13331:9;13327:17;13318:6;13278:67;:::i;:::-;13355:68;13419:2;13408:9;13404:18;13395:6;13355:68;:::i;:::-;13433;13497:2;13486:9;13482:18;13473:6;13433:68;:::i;:::-;13511:72;13579:2;13568:9;13564:18;13555:6;13511:72;:::i;:::-;13061:529;;;;;;;:::o;13596:607::-;13667:6;13675;13683;13732:2;13720:9;13711:7;13707:23;13703:32;13700:119;;;13738:79;;:::i;:::-;13700:119;13858:1;13883:51;13926:7;13917:6;13906:9;13902:22;13883:51;:::i;:::-;13873:61;;13829:115;13983:2;14009:51;14052:7;14043:6;14032:9;14028:22;14009:51;:::i;:::-;13999:61;;13954:116;14109:2;14135:51;14178:7;14169:6;14158:9;14154:22;14135:51;:::i;:::-;14125:61;;14080:116;13596:607;;;;;:::o;14209:474::-;14277:6;14285;14334:2;14322:9;14313:7;14309:23;14305:32;14302:119;;;14340:79;;:::i;:::-;14302:119;14460:1;14485:53;14530:7;14521:6;14510:9;14506:22;14485:53;:::i;:::-;14475:63;;14431:117;14587:2;14613:53;14658:7;14649:6;14638:9;14634:22;14613:53;:::i;:::-;14603:63;;14558:118;14209:474;;;;;:::o;14689:162::-;14829:14;14825:1;14817:6;14813:14;14806:38;14689:162;:::o;14857:366::-;14999:3;15020:67;15084:2;15079:3;15020:67;:::i;:::-;15013:74;;15096:93;15185:3;15096:93;:::i;:::-;15214:2;15209:3;15205:12;15198:19;;14857:366;;;:::o;15229:419::-;15395:4;15433:2;15422:9;15418:18;15410:26;;15482:9;15476:4;15472:20;15468:1;15457:9;15453:17;15446:47;15510:131;15636:4;15510:131;:::i;:::-;15502:139;;15229:419;;;:::o;15654:180::-;15702:77;15699:1;15692:88;15799:4;15796:1;15789:15;15823:4;15820:1;15813:15;15840:320;15884:6;15921:1;15915:4;15911:12;15901:22;;15968:1;15962:4;15958:12;15989:18;15979:81;;16045:4;16037:6;16033:17;16023:27;;15979:81;16107:2;16099:6;16096:14;16076:18;16073:38;16070:84;;16126:18;;:::i;:::-;16070:84;15891:269;15840:320;;;:::o;16166:169::-;16306:21;16302:1;16294:6;16290:14;16283:45;16166:169;:::o;16341:366::-;16483:3;16504:67;16568:2;16563:3;16504:67;:::i;:::-;16497:74;;16580:93;16669:3;16580:93;:::i;:::-;16698:2;16693:3;16689:12;16682:19;;16341:366;;;:::o;16713:419::-;16879:4;16917:2;16906:9;16902:18;16894:26;;16966:9;16960:4;16956:20;16952:1;16941:9;16937:17;16930:47;16994:131;17120:4;16994:131;:::i;:::-;16986:139;;16713:419;;;:::o;17138:163::-;17278:15;17274:1;17266:6;17262:14;17255:39;17138:163;:::o;17307:366::-;17449:3;17470:67;17534:2;17529:3;17470:67;:::i;:::-;17463:74;;17546:93;17635:3;17546:93;:::i;:::-;17664:2;17659:3;17655:12;17648:19;;17307:366;;;:::o;17679:419::-;17845:4;17883:2;17872:9;17868:18;17860:26;;17932:9;17926:4;17922:20;17918:1;17907:9;17903:17;17896:47;17960:131;18086:4;17960:131;:::i;:::-;17952:139;;17679:419;;;:::o;18104:178::-;18244:30;18240:1;18232:6;18228:14;18221:54;18104:178;:::o;18288:366::-;18430:3;18451:67;18515:2;18510:3;18451:67;:::i;:::-;18444:74;;18527:93;18616:3;18527:93;:::i;:::-;18645:2;18640:3;18636:12;18629:19;;18288:366;;;:::o;18660:419::-;18826:4;18864:2;18853:9;18849:18;18841:26;;18913:9;18907:4;18903:20;18899:1;18888:9;18884:17;18877:47;18941:131;19067:4;18941:131;:::i;:::-;18933:139;;18660:419;;;:::o;19085:181::-;19225:33;19221:1;19213:6;19209:14;19202:57;19085:181;:::o;19272:366::-;19414:3;19435:67;19499:2;19494:3;19435:67;:::i;:::-;19428:74;;19511:93;19600:3;19511:93;:::i;:::-;19629:2;19624:3;19620:12;19613:19;;19272:366;;;:::o;19644:419::-;19810:4;19848:2;19837:9;19833:18;19825:26;;19897:9;19891:4;19887:20;19883:1;19872:9;19868:17;19861:47;19925:131;20051:4;19925:131;:::i;:::-;19917:139;;19644:419;;;:::o;20069:180::-;20117:77;20114:1;20107:88;20214:4;20211:1;20204:15;20238:4;20235:1;20228:15;20255:194;20295:4;20315:20;20333:1;20315:20;:::i;:::-;20310:25;;20349:20;20367:1;20349:20;:::i;:::-;20344:25;;20393:1;20390;20386:9;20378:17;;20417:1;20411:4;20408:11;20405:37;;;20422:18;;:::i;:::-;20405:37;20255:194;;;;:::o;20455:410::-;20495:7;20518:20;20536:1;20518:20;:::i;:::-;20513:25;;20552:20;20570:1;20552:20;:::i;:::-;20547:25;;20607:1;20604;20600:9;20629:30;20647:11;20629:30;:::i;:::-;20618:41;;20808:1;20799:7;20795:15;20792:1;20789:22;20769:1;20762:9;20742:83;20719:139;;20838:18;;:::i;:::-;20719:139;20503:362;20455:410;;;;:::o;20871:180::-;20919:77;20916:1;20909:88;21016:4;21013:1;21006:15;21040:4;21037:1;21030:15;21057:185;21097:1;21114:20;21132:1;21114:20;:::i;:::-;21109:25;;21148:20;21166:1;21148:20;:::i;:::-;21143:25;;21187:1;21177:35;;21192:18;;:::i;:::-;21177:35;21234:1;21231;21227:9;21222:14;;21057:185;;;;:::o;21248:172::-;21388:24;21384:1;21376:6;21372:14;21365:48;21248:172;:::o;21426:366::-;21568:3;21589:67;21653:2;21648:3;21589:67;:::i;:::-;21582:74;;21665:93;21754:3;21665:93;:::i;:::-;21783:2;21778:3;21774:12;21767:19;;21426:366;;;:::o;21798:419::-;21964:4;22002:2;21991:9;21987:18;21979:26;;22051:9;22045:4;22041:20;22037:1;22026:9;22022:17;22015:47;22079:131;22205:4;22079:131;:::i;:::-;22071:139;;21798:419;;;:::o;22223:166::-;22363:18;22359:1;22351:6;22347:14;22340:42;22223:166;:::o;22395:366::-;22537:3;22558:67;22622:2;22617:3;22558:67;:::i;:::-;22551:74;;22634:93;22723:3;22634:93;:::i;:::-;22752:2;22747:3;22743:12;22736:19;;22395:366;;;:::o;22767:419::-;22933:4;22971:2;22960:9;22956:18;22948:26;;23020:9;23014:4;23010:20;23006:1;22995:9;22991:17;22984:47;23048:131;23174:4;23048:131;:::i;:::-;23040:139;;22767:419;;;:::o;23192:102::-;23234:8;23281:5;23278:1;23274:13;23253:34;;23192:102;;;:::o;23300:848::-;23361:5;23368:4;23392:6;23383:15;;23416:5;23407:14;;23430:712;23451:1;23441:8;23438:15;23430:712;;;23546:4;23541:3;23537:14;23531:4;23528:24;23525:50;;;23555:18;;:::i;:::-;23525:50;23605:1;23595:8;23591:16;23588:451;;;24020:4;24013:5;24009:16;24000:25;;23588:451;24070:4;24064;24060:15;24052:23;;24100:32;24123:8;24100:32;:::i;:::-;24088:44;;23430:712;;;23300:848;;;;;;;:::o;24154:1073::-;24208:5;24399:8;24389:40;;24420:1;24411:10;;24422:5;;24389:40;24448:4;24438:36;;24465:1;24456:10;;24467:5;;24438:36;24534:4;24582:1;24577:27;;;;24618:1;24613:191;;;;24527:277;;24577:27;24595:1;24586:10;;24597:5;;;24613:191;24658:3;24648:8;24645:17;24642:43;;;24665:18;;:::i;:::-;24642:43;24714:8;24711:1;24707:16;24698:25;;24749:3;24742:5;24739:14;24736:40;;;24756:18;;:::i;:::-;24736:40;24789:5;;;24527:277;;24913:2;24903:8;24900:16;24894:3;24888:4;24885:13;24881:36;24863:2;24853:8;24850:16;24845:2;24839:4;24836:12;24832:35;24816:111;24813:246;;;24969:8;24963:4;24959:19;24950:28;;25004:3;24997:5;24994:14;24991:40;;;25011:18;;:::i;:::-;24991:40;25044:5;;24813:246;25084:42;25122:3;25112:8;25106:4;25103:1;25084:42;:::i;:::-;25069:57;;;;25158:4;25153:3;25149:14;25142:5;25139:25;25136:51;;;25167:18;;:::i;:::-;25136:51;25216:4;25209:5;25205:16;25196:25;;24154:1073;;;;;;:::o;25233:281::-;25291:5;25315:23;25333:4;25315:23;:::i;:::-;25307:31;;25359:25;25375:8;25359:25;:::i;:::-;25347:37;;25403:104;25440:66;25430:8;25424:4;25403:104;:::i;:::-;25394:113;;25233:281;;;;:::o;25520:141::-;25569:4;25592:3;25584:11;;25615:3;25612:1;25605:14;25649:4;25646:1;25636:18;25628:26;;25520:141;;;:::o;25667:93::-;25704:6;25751:2;25746;25739:5;25735:14;25731:23;25721:33;;25667:93;;;:::o;25766:107::-;25810:8;25860:5;25854:4;25850:16;25829:37;;25766:107;;;;:::o;25879:393::-;25948:6;25998:1;25986:10;25982:18;26021:97;26051:66;26040:9;26021:97;:::i;:::-;26139:39;26169:8;26158:9;26139:39;:::i;:::-;26127:51;;26211:4;26207:9;26200:5;26196:21;26187:30;;26260:4;26250:8;26246:19;26239:5;26236:30;26226:40;;25955:317;;25879:393;;;;;:::o;26278:60::-;26306:3;26327:5;26320:12;;26278:60;;;:::o;26344:142::-;26394:9;26427:53;26445:34;26454:24;26472:5;26454:24;:::i;:::-;26445:34;:::i;:::-;26427:53;:::i;:::-;26414:66;;26344:142;;;:::o;26492:75::-;26535:3;26556:5;26549:12;;26492:75;;;:::o;26573:269::-;26683:39;26714:7;26683:39;:::i;:::-;26744:91;26793:41;26817:16;26793:41;:::i;:::-;26785:6;26778:4;26772:11;26744:91;:::i;:::-;26738:4;26731:105;26649:193;26573:269;;;:::o;26848:73::-;26893:3;26848:73;:::o;26927:189::-;27004:32;;:::i;:::-;27045:65;27103:6;27095;27089:4;27045:65;:::i;:::-;26980:136;26927:189;;:::o;27122:186::-;27182:120;27199:3;27192:5;27189:14;27182:120;;;27253:39;27290:1;27283:5;27253:39;:::i;:::-;27226:1;27219:5;27215:13;27206:22;;27182:120;;;27122:186;;:::o;27314:543::-;27415:2;27410:3;27407:11;27404:446;;;27449:38;27481:5;27449:38;:::i;:::-;27533:29;27551:10;27533:29;:::i;:::-;27523:8;27519:44;27716:2;27704:10;27701:18;27698:49;;;27737:8;27722:23;;27698:49;27760:80;27816:22;27834:3;27816:22;:::i;:::-;27806:8;27802:37;27789:11;27760:80;:::i;:::-;27419:431;;27404:446;27314:543;;;:::o;27863:117::-;27917:8;27967:5;27961:4;27957:16;27936:37;;27863:117;;;;:::o;27986:169::-;28030:6;28063:51;28111:1;28107:6;28099:5;28096:1;28092:13;28063:51;:::i;:::-;28059:56;28144:4;28138;28134:15;28124:25;;28037:118;27986:169;;;;:::o;28160:295::-;28236:4;28382:29;28407:3;28401:4;28382:29;:::i;:::-;28374:37;;28444:3;28441:1;28437:11;28431:4;28428:21;28420:29;;28160:295;;;;:::o;28460:1395::-;28577:37;28610:3;28577:37;:::i;:::-;28679:18;28671:6;28668:30;28665:56;;;28701:18;;:::i;:::-;28665:56;28745:38;28777:4;28771:11;28745:38;:::i;:::-;28830:67;28890:6;28882;28876:4;28830:67;:::i;:::-;28924:1;28948:4;28935:17;;28980:2;28972:6;28969:14;28997:1;28992:618;;;;29654:1;29671:6;29668:77;;;29720:9;29715:3;29711:19;29705:26;29696:35;;29668:77;29771:67;29831:6;29824:5;29771:67;:::i;:::-;29765:4;29758:81;29627:222;28962:887;;28992:618;29044:4;29040:9;29032:6;29028:22;29078:37;29110:4;29078:37;:::i;:::-;29137:1;29151:208;29165:7;29162:1;29159:14;29151:208;;;29244:9;29239:3;29235:19;29229:26;29221:6;29214:42;29295:1;29287:6;29283:14;29273:24;;29342:2;29331:9;29327:18;29314:31;;29188:4;29185:1;29181:12;29176:17;;29151:208;;;29387:6;29378:7;29375:19;29372:179;;;29445:9;29440:3;29436:19;29430:26;29488:48;29530:4;29522:6;29518:17;29507:9;29488:48;:::i;:::-;29480:6;29473:64;29395:156;29372:179;29597:1;29593;29585:6;29581:14;29577:22;29571:4;29564:36;28999:611;;;28962:887;;28552:1303;;;28460:1395;;:::o;29861:174::-;30001:26;29997:1;29989:6;29985:14;29978:50;29861:174;:::o;30041:366::-;30183:3;30204:67;30268:2;30263:3;30204:67;:::i;:::-;30197:74;;30280:93;30369:3;30280:93;:::i;:::-;30398:2;30393:3;30389:12;30382:19;;30041:366;;;:::o;30413:419::-;30579:4;30617:2;30606:9;30602:18;30594:26;;30666:9;30660:4;30656:20;30652:1;30641:9;30637:17;30630:47;30694:131;30820:4;30694:131;:::i;:::-;30686:139;;30413:419;;;:::o;30838:188::-;30876:3;30895:18;30911:1;30895:18;:::i;:::-;30890:23;;30927:18;30943:1;30927:18;:::i;:::-;30922:23;;30968:1;30965;30961:9;30954:16;;30991:4;30986:3;30983:13;30980:39;;;30999:18;;:::i;:::-;30980:39;30838:188;;;;:::o;31032:159::-;31172:11;31168:1;31160:6;31156:14;31149:35;31032:159;:::o;31197:365::-;31339:3;31360:66;31424:1;31419:3;31360:66;:::i;:::-;31353:73;;31435:93;31524:3;31435:93;:::i;:::-;31553:2;31548:3;31544:12;31537:19;;31197:365;;;:::o;31568:419::-;31734:4;31772:2;31761:9;31757:18;31749:26;;31821:9;31815:4;31811:20;31807:1;31796:9;31792:17;31785:47;31849:131;31975:4;31849:131;:::i;:::-;31841:139;;31568:419;;;:::o;31993:233::-;32133:34;32129:1;32121:6;32117:14;32110:58;32202:16;32197:2;32189:6;32185:15;32178:41;31993:233;:::o;32232:366::-;32374:3;32395:67;32459:2;32454:3;32395:67;:::i;:::-;32388:74;;32471:93;32560:3;32471:93;:::i;:::-;32589:2;32584:3;32580:12;32573:19;;32232:366;;;:::o;32604:419::-;32770:4;32808:2;32797:9;32793:18;32785:26;;32857:9;32851:4;32847:20;32843:1;32832:9;32828:17;32821:47;32885:131;33011:4;32885:131;:::i;:::-;32877:139;;32604:419;;;:::o;33029:159::-;33169:11;33165:1;33157:6;33153:14;33146:35;33029:159;:::o;33194:365::-;33336:3;33357:66;33421:1;33416:3;33357:66;:::i;:::-;33350:73;;33432:93;33521:3;33432:93;:::i;:::-;33550:2;33545:3;33541:12;33534:19;;33194:365;;;:::o;33565:419::-;33731:4;33769:2;33758:9;33754:18;33746:26;;33818:9;33812:4;33808:20;33804:1;33793:9;33789:17;33782:47;33846:131;33972:4;33846:131;:::i;:::-;33838:139;;33565:419;;;:::o;33990:143::-;34047:5;34078:6;34072:13;34063:22;;34094:33;34121:5;34094:33;:::i;:::-;33990:143;;;;:::o;34139:351::-;34209:6;34258:2;34246:9;34237:7;34233:23;34229:32;34226:119;;;34264:79;;:::i;:::-;34226:119;34384:1;34409:64;34465:7;34456:6;34445:9;34441:22;34409:64;:::i;:::-;34399:74;;34355:128;34139:351;;;;:::o;34496:332::-;34617:4;34655:2;34644:9;34640:18;34632:26;;34668:71;34736:1;34725:9;34721:17;34712:6;34668:71;:::i;:::-;34749:72;34817:2;34806:9;34802:18;34793:6;34749:72;:::i;:::-;34496:332;;;;;:::o;34834:167::-;34974:19;34970:1;34962:6;34958:14;34951:43;34834:167;:::o;35007:366::-;35149:3;35170:67;35234:2;35229:3;35170:67;:::i;:::-;35163:74;;35246:93;35335:3;35246:93;:::i;:::-;35364:2;35359:3;35355:12;35348:19;;35007:366;;;:::o;35379:419::-;35545:4;35583:2;35572:9;35568:18;35560:26;;35632:9;35626:4;35622:20;35618:1;35607:9;35603:17;35596:47;35660:131;35786:4;35660:131;:::i;:::-;35652:139;;35379:419;;;:::o;35804:171::-;35944:23;35940:1;35932:6;35928:14;35921:47;35804:171;:::o;35981:366::-;36123:3;36144:67;36208:2;36203:3;36144:67;:::i;:::-;36137:74;;36220:93;36309:3;36220:93;:::i;:::-;36338:2;36333:3;36329:12;36322:19;;35981:366;;;:::o;36353:419::-;36519:4;36557:2;36546:9;36542:18;36534:26;;36606:9;36600:4;36596:20;36592:1;36581:9;36577:17;36570:47;36634:131;36760:4;36634:131;:::i;:::-;36626:139;;36353:419;;;:::o;36778:169::-;36918:21;36914:1;36906:6;36902:14;36895:45;36778:169;:::o;36953:366::-;37095:3;37116:67;37180:2;37175:3;37116:67;:::i;:::-;37109:74;;37192:93;37281:3;37192:93;:::i;:::-;37310:2;37305:3;37301:12;37294:19;;36953:366;;;:::o;37325:419::-;37491:4;37529:2;37518:9;37514:18;37506:26;;37578:9;37572:4;37568:20;37564:1;37553:9;37549:17;37542:47;37606:131;37732:4;37606:131;:::i;:::-;37598:139;;37325:419;;;:::o;37750:179::-;37890:31;37886:1;37878:6;37874:14;37867:55;37750:179;:::o;37935:366::-;38077:3;38098:67;38162:2;38157:3;38098:67;:::i;:::-;38091:74;;38174:93;38263:3;38174:93;:::i;:::-;38292:2;38287:3;38283:12;38276:19;;37935:366;;;:::o;38307:419::-;38473:4;38511:2;38500:9;38496:18;38488:26;;38560:9;38554:4;38550:20;38546:1;38535:9;38531:17;38524:47;38588:131;38714:4;38588:131;:::i;:::-;38580:139;;38307:419;;;:::o;38732:165::-;38872:17;38868:1;38860:6;38856:14;38849:41;38732:165;:::o;38903:366::-;39045:3;39066:67;39130:2;39125:3;39066:67;:::i;:::-;39059:74;;39142:93;39231:3;39142:93;:::i;:::-;39260:2;39255:3;39251:12;39244:19;;38903:366;;;:::o;39275:419::-;39441:4;39479:2;39468:9;39464:18;39456:26;;39528:9;39522:4;39518:20;39514:1;39503:9;39499:17;39492:47;39556:131;39682:4;39556:131;:::i;:::-;39548:139;;39275:419;;;:::o;39700:191::-;39740:3;39759:20;39777:1;39759:20;:::i;:::-;39754:25;;39793:20;39811:1;39793:20;:::i;:::-;39788:25;;39836:1;39833;39829:9;39822:16;;39857:3;39854:1;39851:10;39848:36;;;39864:18;;:::i;:::-;39848:36;39700:191;;;;:::o;39897:161::-;40037:13;40033:1;40025:6;40021:14;40014:37;39897:161;:::o;40064:366::-;40206:3;40227:67;40291:2;40286:3;40227:67;:::i;:::-;40220:74;;40303:93;40392:3;40303:93;:::i;:::-;40421:2;40416:3;40412:12;40405:19;;40064:366;;;:::o;40436:419::-;40602:4;40640:2;40629:9;40625:18;40617:26;;40689:9;40683:4;40679:20;40675:1;40664:9;40660:17;40653:47;40717:131;40843:4;40717:131;:::i;:::-;40709:139;;40436:419;;;:::o;40861:180::-;40909:77;40906:1;40899:88;41006:4;41003:1;40996:15;41030:4;41027:1;41020:15;41047:85;41092:7;41121:5;41110:16;;41047:85;;;:::o;41138:158::-;41196:9;41229:61;41247:42;41256:32;41282:5;41256:32;:::i;:::-;41247:42;:::i;:::-;41229:61;:::i;:::-;41216:74;;41138:158;;;:::o;41302:147::-;41397:45;41436:5;41397:45;:::i;:::-;41392:3;41385:58;41302:147;;:::o;41455:114::-;41522:6;41556:5;41550:12;41540:22;;41455:114;;;:::o;41575:184::-;41674:11;41708:6;41703:3;41696:19;41748:4;41743:3;41739:14;41724:29;;41575:184;;;;:::o;41765:132::-;41832:4;41855:3;41847:11;;41885:4;41880:3;41876:14;41868:22;;41765:132;;;:::o;41903:108::-;41980:24;41998:5;41980:24;:::i;:::-;41975:3;41968:37;41903:108;;:::o;42017:179::-;42086:10;42107:46;42149:3;42141:6;42107:46;:::i;:::-;42185:4;42180:3;42176:14;42162:28;;42017:179;;;;:::o;42202:113::-;42272:4;42304;42299:3;42295:14;42287:22;;42202:113;;;:::o;42351:732::-;42470:3;42499:54;42547:5;42499:54;:::i;:::-;42569:86;42648:6;42643:3;42569:86;:::i;:::-;42562:93;;42679:56;42729:5;42679:56;:::i;:::-;42758:7;42789:1;42774:284;42799:6;42796:1;42793:13;42774:284;;;42875:6;42869:13;42902:63;42961:3;42946:13;42902:63;:::i;:::-;42895:70;;42988:60;43041:6;42988:60;:::i;:::-;42978:70;;42834:224;42821:1;42818;42814:9;42809:14;;42774:284;;;42778:14;43074:3;43067:10;;42475:608;;;42351:732;;;;:::o;43089:831::-;43352:4;43390:3;43379:9;43375:19;43367:27;;43404:71;43472:1;43461:9;43457:17;43448:6;43404:71;:::i;:::-;43485:80;43561:2;43550:9;43546:18;43537:6;43485:80;:::i;:::-;43612:9;43606:4;43602:20;43597:2;43586:9;43582:18;43575:48;43640:108;43743:4;43734:6;43640:108;:::i;:::-;43632:116;;43758:72;43826:2;43815:9;43811:18;43802:6;43758:72;:::i;:::-;43840:73;43908:3;43897:9;43893:19;43884:6;43840:73;:::i;:::-;43089:831;;;;;;;;:::o;43926:164::-;44066:16;44062:1;44054:6;44050:14;44043:40;43926:164;:::o;44096:366::-;44238:3;44259:67;44323:2;44318:3;44259:67;:::i;:::-;44252:74;;44335:93;44424:3;44335:93;:::i;:::-;44453:2;44448:3;44444:12;44437:19;;44096:366;;;:::o;44468:419::-;44634:4;44672:2;44661:9;44657:18;44649:26;;44721:9;44715:4;44711:20;44707:1;44696:9;44692:17;44685:47;44749:131;44875:4;44749:131;:::i;:::-;44741:139;;44468:419;;;:::o;44893:167::-;45033:19;45029:1;45021:6;45017:14;45010:43;44893:167;:::o;45066:366::-;45208:3;45229:67;45293:2;45288:3;45229:67;:::i;:::-;45222:74;;45305:93;45394:3;45305:93;:::i;:::-;45423:2;45418:3;45414:12;45407:19;;45066:366;;;:::o;45438:419::-;45604:4;45642:2;45631:9;45627:18;45619:26;;45691:9;45685:4;45681:20;45677:1;45666:9;45662:17;45655:47;45719:131;45845:4;45719:131;:::i;:::-;45711:139;;45438:419;;;:::o;45863:807::-;46112:4;46150:3;46139:9;46135:19;46127:27;;46164:71;46232:1;46221:9;46217:17;46208:6;46164:71;:::i;:::-;46245:72;46313:2;46302:9;46298:18;46289:6;46245:72;:::i;:::-;46327:80;46403:2;46392:9;46388:18;46379:6;46327:80;:::i;:::-;46417;46493:2;46482:9;46478:18;46469:6;46417:80;:::i;:::-;46507:73;46575:3;46564:9;46560:19;46551:6;46507:73;:::i;:::-;46590;46658:3;46647:9;46643:19;46634:6;46590:73;:::i;:::-;45863:807;;;;;;;;;:::o;46676:143::-;46733:5;46764:6;46758:13;46749:22;;46780:33;46807:5;46780:33;:::i;:::-;46676:143;;;;:::o;46825:663::-;46913:6;46921;46929;46978:2;46966:9;46957:7;46953:23;46949:32;46946:119;;;46984:79;;:::i;:::-;46946:119;47104:1;47129:64;47185:7;47176:6;47165:9;47161:22;47129:64;:::i;:::-;47119:74;;47075:128;47242:2;47268:64;47324:7;47315:6;47304:9;47300:22;47268:64;:::i;:::-;47258:74;;47213:129;47381:2;47407:64;47463:7;47454:6;47443:9;47439:22;47407:64;:::i;:::-;47397:74;;47352:129;46825:663;;;;;:::o;47494:191::-;47532:4;47552:18;47568:1;47552:18;:::i;:::-;47547:23;;47584:18;47600:1;47584:18;:::i;:::-;47579:23;;47626:1;47623;47619:9;47611:17;;47650:4;47644;47641:14;47638:40;;;47658:18;;:::i;:::-;47638:40;47494:191;;;;:::o

Swarm Source

ipfs://1a915a859f9acdadbc0edcc852bd6b18e37b20914a0b04a28b45ef3dffdd5331
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.