ETH Price: $3,086.73 (-0.53%)
Gas: 2 Gwei

Token

Tiny Predator (TINYP)
 

Overview

Max Total Supply

696,969,969,969,969 TINYP

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
795,065,435,576.912172735888347529 TINYP

Value
$0.00
0x39ccc0175abbc1599dac58226a4a8be395bee79b
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:
TinyPredator

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-08
*/

//SPDX-License-Identifier: MIT

pragma solidity 0.8.11;

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function decimals() external view returns (uint8);
	function symbol() external view returns (string memory);
	function name() external view returns (string memory);
	function getOwner() external view returns (address);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address _owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
	address internal owner;
	constructor(address _owner) { owner = _owner; }
	modifier onlyOwner() { require(msg.sender == owner, "Only contract owner can call this function"); _; }
	function transferOwnership(address payable newOwner) external onlyOwner { owner = newOwner;	emit OwnershipTransferred(newOwner); }
	event OwnershipTransferred(address owner);
}

interface IUniswapV2Router02 {
	function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract TinyPredator is IERC20, Auth {
	string _name = "Tiny Predator";
	string _symbol = "TINYP";
	uint8 constant _decimals = 18;
	uint256 constant _totalSupply = 696_969_969_969_969 * 1e18;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	mapping (address => bool) public noFees;
	mapping (address => bool) public noLimits;
    mapping (address => bool) private _isLiqPool;
	mapping (address => address) private _liqPoolRouterCA;
	mapping (address => address) private _liqPoolPairedCA;
    address constant _burnWallet = address(0);
	bool public tradingOpen;
    uint256 private openBlock;
	uint256 public maxTxAmount; 
    uint256 public maxWalletAmount;
	uint256 private taxSwapMin; 
    uint256 private taxSwapMax; 
	uint8 private constant _maxTaxRate = 3; 
    uint8 public taxRateSell = _maxTaxRate;
    uint8 public taxRateTX = _maxTaxRate;
	uint16 private _autoLPShares = 300; // 3% TAX TO LP 
	uint16 private _totalTaxShares = _autoLPShares;

	bool private _inTaxSwap = false;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	constructor () Auth(msg.sender) {      
		tradingOpen = false;
		maxTxAmount = _totalSupply;
		maxWalletAmount = _totalSupply;
		taxSwapMin = _totalSupply * 10 / 10000;
		taxSwapMax = _totalSupply * 50 / 10000;
		noFees[owner] = true;
		noFees[address(this)] = true;
		noLimits[owner] = true;
		noLimits[address(this)] = true;
		noLimits[_burnWallet] = true;

		_balances[address(owner)] = _totalSupply;
		emit Transfer(address(0), address(owner), _totalSupply);
	}

	receive() external payable {}
	
	function totalSupply() external pure override returns (uint256) { return _totalSupply; }
	function decimals() external pure override returns (uint8) { return _decimals; }
	function symbol() external view override returns (string memory) { return _symbol; }
	function name() external view override returns (string memory) { return _name; }
	function getOwner() external view override returns (address) { return owner; }
	function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
	function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

	function approve(address spender, uint256 amount) public override returns (bool) {
		require(balanceOf(msg.sender) > 0);
		_allowances[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function transfer(address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(msg.sender), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(sender), "Trading not open");
		if(_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; }
		return _transferFrom(sender, recipient, amount);
	}


	function setLiquidityPair(address liqPoolAddress, address swapRouterCA, address wethPairedCA, bool enabled) external onlyOwner {
		if (tradingOpen) { require(block.number < openBlock, "The token is live and the liquidity pair has already been set"); } 
        require(liqPoolAddress!=address(this) && swapRouterCA!=address(this) && wethPairedCA!=address(this));
        _isLiqPool[liqPoolAddress] = enabled;
		_liqPoolRouterCA[liqPoolAddress] = swapRouterCA;
		_liqPoolPairedCA[liqPoolAddress] = wethPairedCA;
		noLimits[liqPoolAddress] = false;
		noFees[liqPoolAddress] = false;

	}

	function _approveRouter(address routerAddress, uint256 _tokenAmount) internal {
		if ( _allowances[address(this)][routerAddress] < _tokenAmount ) {
			_allowances[address(this)][routerAddress] = type(uint256).max;
			emit Approval(address(this), routerAddress, type(uint256).max);
		}
	}

	function _addLiquidity(address routerAddress, uint256 _tokenAmount, uint256 _ethAmountWei) internal {
		address lpTokenRecipient = address(0);
		IUniswapV2Router02 dexRouter = IUniswapV2Router02(routerAddress);
		dexRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
	}

	function LFG() external onlyOwner {
		require(!tradingOpen, "Trading is already open");
		openBlock =  block.number;
		maxTxAmount = 6_969_699_699_699 * 1e18;
		maxWalletAmount = maxTxAmount * 2;
		tradingOpen = true;
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender != address(0), "No transfers from zero wallet");

		if (!tradingOpen) { require(noFees[sender] && noLimits[sender], "Trading not open"); }

		if ( !_inTaxSwap && _isLiqPool[recipient] ) {
			_swapTaxAndLiquify(recipient);
		}
		if ( sender != address(this) && recipient != address(this) && sender != owner ) { require(_checkLimits(recipient, amount), "Transaction exceeds limits"); }
		uint256 _taxAmount = _calculateTax(sender, recipient, amount);
		uint256 _transferAmount = amount - _taxAmount;
		_balances[sender] = _balances[sender] - amount;
		if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
		_balances[recipient] = _balances[recipient] + _transferAmount;
		emit Transfer(sender, recipient, amount);
		return true;
	}

	function _checkLimits(address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( tradingOpen && !noLimits[recipient] ) {
			if ( transferAmount > maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _checkTradingOpen(address sender) private view returns (bool){
		bool checkResult = false;
		if ( tradingOpen ) { checkResult = true; } 
		else if ( tx.origin == owner ) { checkResult = true; } 
		else if (noFees[sender] && noLimits[sender]) { checkResult = true; } 

		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !tradingOpen || noFees[sender] || noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * taxRateSell / 100; }
		else { taxAmount = amount * taxRateTX / 100; }
		return taxAmount;
	}

	function setExemptFromTax(address wallet, bool toggle) external onlyOwner {
		noFees[ wallet ] = toggle;
	}

	function setExemptFromLimits(address wallet, bool setting) external onlyOwner {
		noLimits[ wallet ] = setting;
	}

	function removeLimits() external onlyOwner {
		uint256 newTxAmt = _totalSupply;
        uint256 newWalletAmt = _totalSupply;
		maxTxAmount = newTxAmt;
		maxWalletAmount = newWalletAmt;
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		taxSwapMin = _totalSupply * minValue / minDivider;
		taxSwapMax = _totalSupply * maxValue / maxDivider;
		require(taxSwapMax>=taxSwapMin, "MinMax error");
		require(taxSwapMax>_totalSupply / 100000, "Upper threshold too low");
		require(taxSwapMax<_totalSupply / 100, "Upper threshold too high");
	}

	function _swapTaxAndLiquify(address _liqPoolAddress) private lockTaxSwap {
		uint256 _taxTokensAvailable = balanceOf(address(this));

		if ( _taxTokensAvailable >= taxSwapMin && tradingOpen ) {
			if ( _taxTokensAvailable >= taxSwapMax ) { _taxTokensAvailable = taxSwapMax; }
			uint256 _tokensForLP = _taxTokensAvailable * _autoLPShares / _totalTaxShares / 2;
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
			if( _tokensToSwap > 10**_decimals ) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_liqPoolRouterCA[_liqPoolAddress], _liqPoolPairedCA[_liqPoolAddress], _tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				if ( _autoLPShares > 0 ) {
					uint256 _ethWeiAmount = _ethSwapped * _autoLPShares / _totalTaxShares ;
					_approveRouter(_liqPoolRouterCA[_liqPoolAddress], _tokensForLP);
					_addLiquidity(_liqPoolRouterCA[_liqPoolAddress], _tokensForLP, _ethWeiAmount);
				}
			}

		}
	}

	function _swapTaxTokensForEth(address routerAddress, address pairedCA, uint256 _tokenAmount) private {
		_approveRouter(routerAddress, _tokenAmount);
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = pairedCA;
		IUniswapV2Router02 dexRouter = IUniswapV2Router02(routerAddress);
		dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp);
	}

	function taxTokensSwap(address liqPoolAddress) external onlyOwner {
		uint256 taxTokenBalance = balanceOf(address(this));
		require(taxTokenBalance > 0, "No tokens");
		require(_isLiqPool[liqPoolAddress], "Invalid liquidity pool");
		_swapTaxTokensForEth(_liqPoolRouterCA[liqPoolAddress], _liqPoolPairedCA[liqPoolAddress], taxTokenBalance);
	}

}

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":[],"name":"LFG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"setting","type":"bool"}],"name":"setExemptFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setExemptFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liqPoolAddress","type":"address"},{"internalType":"address","name":"swapRouterCA","type":"address"},{"internalType":"address","name":"wethPairedCA","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLiquidityPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRateSell","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRateTX","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"liqPoolAddress","type":"address"}],"name":"taxTokensSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600d81526020017f54696e79205072656461746f7200000000000000000000000000000000000000815250600190805190602001906200005192919062000541565b506040518060400160405280600581526020017f54494e5950000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000541565b506003601060006101000a81548160ff021916908360ff1602179055506003601060016101000a81548160ff021916908360ff16021790555061012c601060026101000a81548161ffff021916908361ffff160217905550601060029054906101000a900461ffff16601060046101000a81548161ffff021916908361ffff1602179055506000601060066101000a81548160ff0219169083151502179055503480156200014c57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600a60006101000a81548160ff0219169083151502179055506d225cff6eb0d9dbd83adad6240000600c819055506d225cff6eb0d9dbd83adad6240000600d81905550612710600a6d225cff6eb0d9dbd83adad6240000620001f491906200062a565b620002009190620006ba565b600e8190555061271060326d225cff6eb0d9dbd83adad62400006200022691906200062a565b620002329190620006ba565b600f819055506001600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506d225cff6eb0d9dbd83adad6240000600360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d225cff6eb0d9dbd83adad624000060405162000533919062000703565b60405180910390a362000785565b8280546200054f906200074f565b90600052602060002090601f016020900481019282620005735760008555620005bf565b82601f106200058e57805160ff1916838001178555620005bf565b82800160010185558215620005bf579182015b82811115620005be578251825591602001919060010190620005a1565b5b509050620005ce9190620005d2565b5090565b5b80821115620005ed576000816000905550600101620005d3565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200063782620005f1565b91506200064483620005f1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000680576200067f620005fb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006c782620005f1565b9150620006d483620005f1565b925082620006e757620006e66200068b565b5b828204905092915050565b620006fd81620005f1565b82525050565b60006020820190506200071a6000830184620006f2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200076857607f821691505b602082108114156200077f576200077e62000720565b5b50919050565b61391880620007956000396000f3fe60806040526004361061016a5760003560e01c806382cb5bbe116100d1578063aa4bde281161008a578063dd62ed3e11610064578063dd62ed3e14610539578063e4dbc45b14610576578063f2fde38b1461059f578063ffb54a99146105c857610171565b8063aa4bde28146104ba578063b6c76707146104e5578063cc18e05a1461050e57610171565b806382cb5bbe146103aa578063893d20e8146103d35780638c0b5e22146103fe57806395d89b4114610429578063a13d1a2b14610454578063a9059cbb1461047d57610171565b80631b533a9e116101235780631b533a9e1461028657806323b872dd146102b1578063313ce567146102ee5780635ea5208e1461031957806370a0823114610356578063751039fc1461039357610171565b806306fdde03146101765780630925070f146101a1578063095ea7b3146101b857806315b6c176146101f5578063174351e61461021e57806318160ddd1461025b57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105f3565b604051610198919061294f565b60405180910390f35b3480156101ad57600080fd5b506101b6610685565b005b3480156101c457600080fd5b506101df60048036038101906101da9190612a0a565b6107b0565b6040516101ec9190612a65565b60405180910390f35b34801561020157600080fd5b5061021c60048036038101906102179190612aac565b6108b6565b005b34801561022a57600080fd5b5061024560048036038101906102409190612aec565b61099f565b6040516102529190612a65565b60405180910390f35b34801561026757600080fd5b506102706109bf565b60405161027d9190612b28565b60405180910390f35b34801561029257600080fd5b5061029b6109d5565b6040516102a89190612b5f565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612b7a565b6109e8565b6040516102e59190612a65565b60405180910390f35b3480156102fa57600080fd5b50610303610bf2565b6040516103109190612b5f565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612aec565b610bfb565b60405161034d9190612a65565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612aec565b610c1b565b60405161038a9190612b28565b60405180910390f35b34801561039f57600080fd5b506103a8610c64565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612bcd565b610d2a565b005b3480156103df57600080fd5b506103e86110c4565b6040516103f59190612c43565b60405180910390f35b34801561040a57600080fd5b506104136110ed565b6040516104209190612b28565b60405180910390f35b34801561043557600080fd5b5061043e6110f3565b60405161044b919061294f565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612aac565b611185565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612a0a565b61126e565b6040516104b19190612a65565b60405180910390f35b3480156104c657600080fd5b506104cf6112cb565b6040516104dc9190612b28565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612aec565b6112d1565b005b34801561051a57600080fd5b50610523611508565b6040516105309190612b5f565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b9190612c5e565b61151b565b60405161056d9190612b28565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190612cda565b6115a2565b005b3480156105ab57600080fd5b506105c660048036038101906105c19190612d7f565b6117a9565b005b3480156105d457600080fd5b506105dd6118b1565b6040516105ea9190612a65565b60405180910390f35b60606001805461060290612ddb565b80601f016020809104026020016040519081016040528092919081815260200182805461062e90612ddb565b801561067b5780601f106106505761010080835404028352916020019161067b565b820191906000526020600020905b81548152906001019060200180831161065e57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a90612e7f565b60405180910390fd5b600a60009054906101000a900460ff1615610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a90612eeb565b60405180910390fd5b43600b819055506c57f850778742dcdeaf2fec0000600c819055506002600c5461078d9190612f3a565b600d819055506001600a60006101000a81548160ff021916908315150217905550565b6000806107bc33610c1b565b116107c657600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108a49190612b28565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90612e7f565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60056020528060005260406000206000915054906101000a900460ff1681565b60006d225cff6eb0d9dbd83adad6240000905090565b601060019054906101000a900460ff1681565b60006109f3846118c4565b610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990612fe0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bde5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b5d9190613000565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610be98484846119fd565b90509392505050565b60006012905090565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990612e7f565b60405180910390fd5b60006d225cff6eb0d9dbd83adad6240000905060006d225cff6eb0d9dbd83adad6240000905081600c8190555080600d819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90612e7f565b60405180910390fd5b600a60009054906101000a900460ff1615610e1257600b544310610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e08906130a6565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610e7a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610eb257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610ebb57600080fd5b80600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606002805461110290612ddb565b80601f016020809104026020016040519081016040528092919081815260200182805461112e90612ddb565b801561117b5780601f106111505761010080835404028352916020019161117b565b820191906000526020600020905b81548152906001019060200180831161115e57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90612e7f565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611279336118c4565b6112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90612fe0565b60405180910390fd5b6112c33384846119fd565b905092915050565b600d5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690612e7f565b60405180910390fd5b600061136a30610c1b565b9050600081116113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690613112565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661143b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114329061317e565b60405180910390fd5b611504600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611f2d565b5050565b601060009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162790612e7f565b60405180910390fd5b8263ffffffff168463ffffffff166d225cff6eb0d9dbd83adad62400006116579190612f3a565b61166191906131cd565b600e819055508063ffffffff168263ffffffff166d225cff6eb0d9dbd83adad624000061168e9190612f3a565b61169891906131cd565b600f81905550600e54600f5410156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc9061324a565b60405180910390fd5b620186a06d225cff6eb0d9dbd83adad624000061170291906131cd565b600f5411611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c906132b6565b60405180910390fd5b60646d225cff6eb0d9dbd83adad624000061176091906131cd565b600f54106117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613322565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90612e7f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118a691906133a1565b60405180910390a150565b600a60009054906101000a900460ff1681565b60008060009050600a60009054906101000a900460ff16156118e957600190506119f4565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141561194657600190506119f3565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119e85750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119f257600190505b5b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6590613408565b60405180910390fd5b600a60009054906101000a900460ff16611b6457600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b245750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5a90612fe0565b60405180910390fd5b5b601060069054906101000a900460ff16158015611bca5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611bd957611bd8836120a3565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c4157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c99575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ce857611ca883836123a9565b611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90613474565b60405180910390fd5b5b6000611cf58585856124e9565b905060008184611d059190613000565b905083600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d529190613000565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115611e2d5781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de99190613494565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e789190613494565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611f189190612b28565b60405180910390a36001925050509392505050565b611f37838261266f565b6000600267ffffffffffffffff811115611f5457611f536134ea565b5b604051908082528060200260200182016040528015611f825781602001602082028036833780820191505090505b5090503081600081518110611f9a57611f99613519565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508281600181518110611fe957611fe8613519565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008490508073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161206a959493929190613641565b600060405180830381600087803b15801561208457600080fd5b505af1158015612098573d6000803e3d6000fd5b505050505050505050565b6001601060066101000a81548160ff02191690831515021790555060006120c930610c1b565b9050600e5481101580156120e95750600a60009054906101000a900460ff165b1561238a57600f5481106120fd57600f5490505b60006002601060049054906101000a900461ffff1661ffff16601060029054906101000a900461ffff1661ffff16846121369190612f3a565b61214091906131cd565b61214a91906131cd565b90506000818361215a9190613000565b90506012600a61216a91906137ce565b81111561238757600047905061223f600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f2d565b6000814761224d9190613000565b90506000601060029054906101000a900461ffff1661ffff161115612384576000601060049054906101000a900461ffff1661ffff16601060029054906101000a900461ffff1661ffff16836122a39190612f3a565b6122ad91906131cd565b9050612318600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661266f565b612382600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868361281e565b505b50505b50505b506000601060066101000a81548160ff02191690831515021790555050565b60008060019050600a60009054906101000a900460ff1680156124165750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124df57600c5483111561242e57600090506124de565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124d35750600d5483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124d19190613494565b115b156124dd57600090505b5b5b8091505092915050565b600080600a60009054906101000a900460ff1615806125515750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125a55750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125b35760009050612664565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612636576064601060009054906101000a900460ff1660ff16846126259190612f3a565b61262f91906131cd565b9050612663565b6064601060019054906101000a900460ff1660ff16846126569190612f3a565b61266091906131cd565b90505b5b809150509392505050565b80600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561281a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516128119190612b28565b60405180910390a35b5050565b6000808490508073ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008088426040518863ffffffff1660e01b815260040161286996959493929190613819565b60606040518083038185885af1158015612887573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128ac919061388f565b5050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128f05780820151818401526020810190506128d5565b838111156128ff576000848401525b50505050565b6000601f19601f8301169050919050565b6000612921826128b6565b61292b81856128c1565b935061293b8185602086016128d2565b61294481612905565b840191505092915050565b600060208201905081810360008301526129698184612916565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129a182612976565b9050919050565b6129b181612996565b81146129bc57600080fd5b50565b6000813590506129ce816129a8565b92915050565b6000819050919050565b6129e7816129d4565b81146129f257600080fd5b50565b600081359050612a04816129de565b92915050565b60008060408385031215612a2157612a20612971565b5b6000612a2f858286016129bf565b9250506020612a40858286016129f5565b9150509250929050565b60008115159050919050565b612a5f81612a4a565b82525050565b6000602082019050612a7a6000830184612a56565b92915050565b612a8981612a4a565b8114612a9457600080fd5b50565b600081359050612aa681612a80565b92915050565b60008060408385031215612ac357612ac2612971565b5b6000612ad1858286016129bf565b9250506020612ae285828601612a97565b9150509250929050565b600060208284031215612b0257612b01612971565b5b6000612b10848285016129bf565b91505092915050565b612b22816129d4565b82525050565b6000602082019050612b3d6000830184612b19565b92915050565b600060ff82169050919050565b612b5981612b43565b82525050565b6000602082019050612b746000830184612b50565b92915050565b600080600060608486031215612b9357612b92612971565b5b6000612ba1868287016129bf565b9350506020612bb2868287016129bf565b9250506040612bc3868287016129f5565b9150509250925092565b60008060008060808587031215612be757612be6612971565b5b6000612bf5878288016129bf565b9450506020612c06878288016129bf565b9350506040612c17878288016129bf565b9250506060612c2887828801612a97565b91505092959194509250565b612c3d81612996565b82525050565b6000602082019050612c586000830184612c34565b92915050565b60008060408385031215612c7557612c74612971565b5b6000612c83858286016129bf565b9250506020612c94858286016129bf565b9150509250929050565b600063ffffffff82169050919050565b612cb781612c9e565b8114612cc257600080fd5b50565b600081359050612cd481612cae565b92915050565b60008060008060808587031215612cf457612cf3612971565b5b6000612d0287828801612cc5565b9450506020612d1387828801612cc5565b9350506040612d2487828801612cc5565b9250506060612d3587828801612cc5565b91505092959194509250565b6000612d4c82612976565b9050919050565b612d5c81612d41565b8114612d6757600080fd5b50565b600081359050612d7981612d53565b92915050565b600060208284031215612d9557612d94612971565b5b6000612da384828501612d6a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612df357607f821691505b60208210811415612e0757612e06612dac565b5b50919050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000612e69602a836128c1565b9150612e7482612e0d565b604082019050919050565b60006020820190508181036000830152612e9881612e5c565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612ed56017836128c1565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f45826129d4565b9150612f50836129d4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f8957612f88612f0b565b5b828202905092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612fca6010836128c1565b9150612fd582612f94565b602082019050919050565b60006020820190508181036000830152612ff981612fbd565b9050919050565b600061300b826129d4565b9150613016836129d4565b92508282101561302957613028612f0b565b5b828203905092915050565b7f54686520746f6b656e206973206c69766520616e6420746865206c697175696460008201527f69747920706169722068617320616c7265616479206265656e20736574000000602082015250565b6000613090603d836128c1565b915061309b82613034565b604082019050919050565b600060208201905081810360008301526130bf81613083565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006130fc6009836128c1565b9150613107826130c6565b602082019050919050565b6000602082019050818103600083015261312b816130ef565b9050919050565b7f496e76616c6964206c697175696469747920706f6f6c00000000000000000000600082015250565b60006131686016836128c1565b915061317382613132565b602082019050919050565b600060208201905081810360008301526131978161315b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131d8826129d4565b91506131e3836129d4565b9250826131f3576131f261319e565b5b828204905092915050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000613234600c836128c1565b915061323f826131fe565b602082019050919050565b6000602082019050818103600083015261326381613227565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b60006132a06017836128c1565b91506132ab8261326a565b602082019050919050565b600060208201905081810360008301526132cf81613293565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b600061330c6018836128c1565b9150613317826132d6565b602082019050919050565b6000602082019050818103600083015261333b816132ff565b9050919050565b6000819050919050565b600061336761336261335d84612976565b613342565b612976565b9050919050565b60006133798261334c565b9050919050565b600061338b8261336e565b9050919050565b61339b81613380565b82525050565b60006020820190506133b66000830184613392565b92915050565b7f4e6f207472616e73666572732066726f6d207a65726f2077616c6c6574000000600082015250565b60006133f2601d836128c1565b91506133fd826133bc565b602082019050919050565b60006020820190508181036000830152613421816133e5565b9050919050565b7f5472616e73616374696f6e2065786365656473206c696d697473000000000000600082015250565b600061345e601a836128c1565b915061346982613428565b602082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b600061349f826129d4565b91506134aa836129d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134df576134de612f0b565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061356d61356861356384613548565b613342565b6129d4565b9050919050565b61357d81613552565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135b881612996565b82525050565b60006135ca83836135af565b60208301905092915050565b6000602082019050919050565b60006135ee82613583565b6135f8818561358e565b93506136038361359f565b8060005b8381101561363457815161361b88826135be565b9750613626836135d6565b925050600181019050613607565b5085935050505092915050565b600060a0820190506136566000830188612b19565b6136636020830187613574565b818103604083015261367581866135e3565b90506136846060830185612c34565b6136916080830184612b19565b9695505050505050565b60008160011c9050919050565b6000808291508390505b60018511156136f2578086048111156136ce576136cd612f0b565b5b60018516156136dd5780820291505b80810290506136eb8561369b565b94506136b2565b94509492505050565b60008261370b57600190506137c7565b8161371957600090506137c7565b816001811461372f576002811461373957613768565b60019150506137c7565b60ff84111561374b5761374a612f0b565b5b8360020a91508482111561376257613761612f0b565b5b506137c7565b5060208310610133831016604e8410600b841016171561379d5782820a90508381111561379857613797612f0b565b5b6137c7565b6137aa84848460016136a8565b925090508184048111156137c1576137c0612f0b565b5b81810290505b9392505050565b60006137d9826129d4565b91506137e483612b43565b92506138117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136fb565b905092915050565b600060c08201905061382e6000830189612c34565b61383b6020830188612b19565b6138486040830187613574565b6138556060830186613574565b6138626080830185612c34565b61386f60a0830184612b19565b979650505050505050565b600081519050613889816129de565b92915050565b6000806000606084860312156138a8576138a7612971565b5b60006138b68682870161387a565b93505060206138c78682870161387a565b92505060406138d88682870161387a565b915050925092509256fea2646970667358221220dbcf810f99e2524751ebbeaf87ef14f86ecc48efa3fc0d533c52a638495516fd64736f6c634300080b0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806382cb5bbe116100d1578063aa4bde281161008a578063dd62ed3e11610064578063dd62ed3e14610539578063e4dbc45b14610576578063f2fde38b1461059f578063ffb54a99146105c857610171565b8063aa4bde28146104ba578063b6c76707146104e5578063cc18e05a1461050e57610171565b806382cb5bbe146103aa578063893d20e8146103d35780638c0b5e22146103fe57806395d89b4114610429578063a13d1a2b14610454578063a9059cbb1461047d57610171565b80631b533a9e116101235780631b533a9e1461028657806323b872dd146102b1578063313ce567146102ee5780635ea5208e1461031957806370a0823114610356578063751039fc1461039357610171565b806306fdde03146101765780630925070f146101a1578063095ea7b3146101b857806315b6c176146101f5578063174351e61461021e57806318160ddd1461025b57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105f3565b604051610198919061294f565b60405180910390f35b3480156101ad57600080fd5b506101b6610685565b005b3480156101c457600080fd5b506101df60048036038101906101da9190612a0a565b6107b0565b6040516101ec9190612a65565b60405180910390f35b34801561020157600080fd5b5061021c60048036038101906102179190612aac565b6108b6565b005b34801561022a57600080fd5b5061024560048036038101906102409190612aec565b61099f565b6040516102529190612a65565b60405180910390f35b34801561026757600080fd5b506102706109bf565b60405161027d9190612b28565b60405180910390f35b34801561029257600080fd5b5061029b6109d5565b6040516102a89190612b5f565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612b7a565b6109e8565b6040516102e59190612a65565b60405180910390f35b3480156102fa57600080fd5b50610303610bf2565b6040516103109190612b5f565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612aec565b610bfb565b60405161034d9190612a65565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612aec565b610c1b565b60405161038a9190612b28565b60405180910390f35b34801561039f57600080fd5b506103a8610c64565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612bcd565b610d2a565b005b3480156103df57600080fd5b506103e86110c4565b6040516103f59190612c43565b60405180910390f35b34801561040a57600080fd5b506104136110ed565b6040516104209190612b28565b60405180910390f35b34801561043557600080fd5b5061043e6110f3565b60405161044b919061294f565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612aac565b611185565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612a0a565b61126e565b6040516104b19190612a65565b60405180910390f35b3480156104c657600080fd5b506104cf6112cb565b6040516104dc9190612b28565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612aec565b6112d1565b005b34801561051a57600080fd5b50610523611508565b6040516105309190612b5f565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b9190612c5e565b61151b565b60405161056d9190612b28565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190612cda565b6115a2565b005b3480156105ab57600080fd5b506105c660048036038101906105c19190612d7f565b6117a9565b005b3480156105d457600080fd5b506105dd6118b1565b6040516105ea9190612a65565b60405180910390f35b60606001805461060290612ddb565b80601f016020809104026020016040519081016040528092919081815260200182805461062e90612ddb565b801561067b5780601f106106505761010080835404028352916020019161067b565b820191906000526020600020905b81548152906001019060200180831161065e57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a90612e7f565b60405180910390fd5b600a60009054906101000a900460ff1615610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a90612eeb565b60405180910390fd5b43600b819055506c57f850778742dcdeaf2fec0000600c819055506002600c5461078d9190612f3a565b600d819055506001600a60006101000a81548160ff021916908315150217905550565b6000806107bc33610c1b565b116107c657600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108a49190612b28565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90612e7f565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60056020528060005260406000206000915054906101000a900460ff1681565b60006d225cff6eb0d9dbd83adad6240000905090565b601060019054906101000a900460ff1681565b60006109f3846118c4565b610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990612fe0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bde5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b5d9190613000565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610be98484846119fd565b90509392505050565b60006012905090565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990612e7f565b60405180910390fd5b60006d225cff6eb0d9dbd83adad6240000905060006d225cff6eb0d9dbd83adad6240000905081600c8190555080600d819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90612e7f565b60405180910390fd5b600a60009054906101000a900460ff1615610e1257600b544310610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e08906130a6565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610e7a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610eb257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610ebb57600080fd5b80600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606002805461110290612ddb565b80601f016020809104026020016040519081016040528092919081815260200182805461112e90612ddb565b801561117b5780601f106111505761010080835404028352916020019161117b565b820191906000526020600020905b81548152906001019060200180831161115e57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90612e7f565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611279336118c4565b6112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90612fe0565b60405180910390fd5b6112c33384846119fd565b905092915050565b600d5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690612e7f565b60405180910390fd5b600061136a30610c1b565b9050600081116113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690613112565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661143b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114329061317e565b60405180910390fd5b611504600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611f2d565b5050565b601060009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162790612e7f565b60405180910390fd5b8263ffffffff168463ffffffff166d225cff6eb0d9dbd83adad62400006116579190612f3a565b61166191906131cd565b600e819055508063ffffffff168263ffffffff166d225cff6eb0d9dbd83adad624000061168e9190612f3a565b61169891906131cd565b600f81905550600e54600f5410156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc9061324a565b60405180910390fd5b620186a06d225cff6eb0d9dbd83adad624000061170291906131cd565b600f5411611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c906132b6565b60405180910390fd5b60646d225cff6eb0d9dbd83adad624000061176091906131cd565b600f54106117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613322565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90612e7f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516118a691906133a1565b60405180910390a150565b600a60009054906101000a900460ff1681565b60008060009050600a60009054906101000a900460ff16156118e957600190506119f4565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141561194657600190506119f3565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119e85750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119f257600190505b5b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6590613408565b60405180910390fd5b600a60009054906101000a900460ff16611b6457600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b245750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5a90612fe0565b60405180910390fd5b5b601060069054906101000a900460ff16158015611bca5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611bd957611bd8836120a3565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c4157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c99575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ce857611ca883836123a9565b611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90613474565b60405180910390fd5b5b6000611cf58585856124e9565b905060008184611d059190613000565b905083600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d529190613000565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115611e2d5781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de99190613494565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e789190613494565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611f189190612b28565b60405180910390a36001925050509392505050565b611f37838261266f565b6000600267ffffffffffffffff811115611f5457611f536134ea565b5b604051908082528060200260200182016040528015611f825781602001602082028036833780820191505090505b5090503081600081518110611f9a57611f99613519565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508281600181518110611fe957611fe8613519565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008490508073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161206a959493929190613641565b600060405180830381600087803b15801561208457600080fd5b505af1158015612098573d6000803e3d6000fd5b505050505050505050565b6001601060066101000a81548160ff02191690831515021790555060006120c930610c1b565b9050600e5481101580156120e95750600a60009054906101000a900460ff165b1561238a57600f5481106120fd57600f5490505b60006002601060049054906101000a900461ffff1661ffff16601060029054906101000a900461ffff1661ffff16846121369190612f3a565b61214091906131cd565b61214a91906131cd565b90506000818361215a9190613000565b90506012600a61216a91906137ce565b81111561238757600047905061223f600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f2d565b6000814761224d9190613000565b90506000601060029054906101000a900461ffff1661ffff161115612384576000601060049054906101000a900461ffff1661ffff16601060029054906101000a900461ffff1661ffff16836122a39190612f3a565b6122ad91906131cd565b9050612318600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661266f565b612382600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868361281e565b505b50505b50505b506000601060066101000a81548160ff02191690831515021790555050565b60008060019050600a60009054906101000a900460ff1680156124165750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124df57600c5483111561242e57600090506124de565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124d35750600d5483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124d19190613494565b115b156124dd57600090505b5b5b8091505092915050565b600080600a60009054906101000a900460ff1615806125515750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125a55750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125b35760009050612664565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612636576064601060009054906101000a900460ff1660ff16846126259190612f3a565b61262f91906131cd565b9050612663565b6064601060019054906101000a900460ff1660ff16846126569190612f3a565b61266091906131cd565b90505b5b809150509392505050565b80600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561281a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516128119190612b28565b60405180910390a35b5050565b6000808490508073ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008088426040518863ffffffff1660e01b815260040161286996959493929190613819565b60606040518083038185885af1158015612887573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128ac919061388f565b5050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128f05780820151818401526020810190506128d5565b838111156128ff576000848401525b50505050565b6000601f19601f8301169050919050565b6000612921826128b6565b61292b81856128c1565b935061293b8185602086016128d2565b61294481612905565b840191505092915050565b600060208201905081810360008301526129698184612916565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129a182612976565b9050919050565b6129b181612996565b81146129bc57600080fd5b50565b6000813590506129ce816129a8565b92915050565b6000819050919050565b6129e7816129d4565b81146129f257600080fd5b50565b600081359050612a04816129de565b92915050565b60008060408385031215612a2157612a20612971565b5b6000612a2f858286016129bf565b9250506020612a40858286016129f5565b9150509250929050565b60008115159050919050565b612a5f81612a4a565b82525050565b6000602082019050612a7a6000830184612a56565b92915050565b612a8981612a4a565b8114612a9457600080fd5b50565b600081359050612aa681612a80565b92915050565b60008060408385031215612ac357612ac2612971565b5b6000612ad1858286016129bf565b9250506020612ae285828601612a97565b9150509250929050565b600060208284031215612b0257612b01612971565b5b6000612b10848285016129bf565b91505092915050565b612b22816129d4565b82525050565b6000602082019050612b3d6000830184612b19565b92915050565b600060ff82169050919050565b612b5981612b43565b82525050565b6000602082019050612b746000830184612b50565b92915050565b600080600060608486031215612b9357612b92612971565b5b6000612ba1868287016129bf565b9350506020612bb2868287016129bf565b9250506040612bc3868287016129f5565b9150509250925092565b60008060008060808587031215612be757612be6612971565b5b6000612bf5878288016129bf565b9450506020612c06878288016129bf565b9350506040612c17878288016129bf565b9250506060612c2887828801612a97565b91505092959194509250565b612c3d81612996565b82525050565b6000602082019050612c586000830184612c34565b92915050565b60008060408385031215612c7557612c74612971565b5b6000612c83858286016129bf565b9250506020612c94858286016129bf565b9150509250929050565b600063ffffffff82169050919050565b612cb781612c9e565b8114612cc257600080fd5b50565b600081359050612cd481612cae565b92915050565b60008060008060808587031215612cf457612cf3612971565b5b6000612d0287828801612cc5565b9450506020612d1387828801612cc5565b9350506040612d2487828801612cc5565b9250506060612d3587828801612cc5565b91505092959194509250565b6000612d4c82612976565b9050919050565b612d5c81612d41565b8114612d6757600080fd5b50565b600081359050612d7981612d53565b92915050565b600060208284031215612d9557612d94612971565b5b6000612da384828501612d6a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612df357607f821691505b60208210811415612e0757612e06612dac565b5b50919050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000612e69602a836128c1565b9150612e7482612e0d565b604082019050919050565b60006020820190508181036000830152612e9881612e5c565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612ed56017836128c1565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f45826129d4565b9150612f50836129d4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f8957612f88612f0b565b5b828202905092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612fca6010836128c1565b9150612fd582612f94565b602082019050919050565b60006020820190508181036000830152612ff981612fbd565b9050919050565b600061300b826129d4565b9150613016836129d4565b92508282101561302957613028612f0b565b5b828203905092915050565b7f54686520746f6b656e206973206c69766520616e6420746865206c697175696460008201527f69747920706169722068617320616c7265616479206265656e20736574000000602082015250565b6000613090603d836128c1565b915061309b82613034565b604082019050919050565b600060208201905081810360008301526130bf81613083565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006130fc6009836128c1565b9150613107826130c6565b602082019050919050565b6000602082019050818103600083015261312b816130ef565b9050919050565b7f496e76616c6964206c697175696469747920706f6f6c00000000000000000000600082015250565b60006131686016836128c1565b915061317382613132565b602082019050919050565b600060208201905081810360008301526131978161315b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131d8826129d4565b91506131e3836129d4565b9250826131f3576131f261319e565b5b828204905092915050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000613234600c836128c1565b915061323f826131fe565b602082019050919050565b6000602082019050818103600083015261326381613227565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b60006132a06017836128c1565b91506132ab8261326a565b602082019050919050565b600060208201905081810360008301526132cf81613293565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b600061330c6018836128c1565b9150613317826132d6565b602082019050919050565b6000602082019050818103600083015261333b816132ff565b9050919050565b6000819050919050565b600061336761336261335d84612976565b613342565b612976565b9050919050565b60006133798261334c565b9050919050565b600061338b8261336e565b9050919050565b61339b81613380565b82525050565b60006020820190506133b66000830184613392565b92915050565b7f4e6f207472616e73666572732066726f6d207a65726f2077616c6c6574000000600082015250565b60006133f2601d836128c1565b91506133fd826133bc565b602082019050919050565b60006020820190508181036000830152613421816133e5565b9050919050565b7f5472616e73616374696f6e2065786365656473206c696d697473000000000000600082015250565b600061345e601a836128c1565b915061346982613428565b602082019050919050565b6000602082019050818103600083015261348d81613451565b9050919050565b600061349f826129d4565b91506134aa836129d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134df576134de612f0b565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061356d61356861356384613548565b613342565b6129d4565b9050919050565b61357d81613552565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135b881612996565b82525050565b60006135ca83836135af565b60208301905092915050565b6000602082019050919050565b60006135ee82613583565b6135f8818561358e565b93506136038361359f565b8060005b8381101561363457815161361b88826135be565b9750613626836135d6565b925050600181019050613607565b5085935050505092915050565b600060a0820190506136566000830188612b19565b6136636020830187613574565b818103604083015261367581866135e3565b90506136846060830185612c34565b6136916080830184612b19565b9695505050505050565b60008160011c9050919050565b6000808291508390505b60018511156136f2578086048111156136ce576136cd612f0b565b5b60018516156136dd5780820291505b80810290506136eb8561369b565b94506136b2565b94509492505050565b60008261370b57600190506137c7565b8161371957600090506137c7565b816001811461372f576002811461373957613768565b60019150506137c7565b60ff84111561374b5761374a612f0b565b5b8360020a91508482111561376257613761612f0b565b5b506137c7565b5060208310610133831016604e8410600b841016171561379d5782820a90508381111561379857613797612f0b565b5b6137c7565b6137aa84848460016136a8565b925090508184048111156137c1576137c0612f0b565b5b81810290505b9392505050565b60006137d9826129d4565b91506137e483612b43565b92506138117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136fb565b905092915050565b600060c08201905061382e6000830189612c34565b61383b6020830188612b19565b6138486040830187613574565b6138556060830186613574565b6138626080830185612c34565b61386f60a0830184612b19565b979650505050505050565b600081519050613889816129de565b92915050565b6000806000606084860312156138a8576138a7612971565b5b60006138b68682870161387a565b93505060206138c78682870161387a565b92505060406138d88682870161387a565b915050925092509256fea2646970667358221220dbcf810f99e2524751ebbeaf87ef14f86ecc48efa3fc0d533c52a638495516fd64736f6c634300080b0033

Deployed Bytecode Sourcemap

1736:9284:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3659:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6133:226;;;;;;;;;;;;;:::i;:::-;;4069:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8372:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2042:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3398:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2626:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4523:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3489:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2085:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3823:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8607:192;;;;;;;;;;;;;:::i;:::-;;4892:593;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3742:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2402:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3572:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8486:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4308:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2436:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10667:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2581:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3931:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8804:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1148:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2343:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3659:80;3707:13;3731:5;3724:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3659:80;:::o;6133:226::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6181:11:::1;;;;;;;;;;;6180:12;6172:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6238:12;6225:9;:25;;;;6269:24;6255:11;:38;;;;6330:1;6316:11;;:15;;;;:::i;:::-;6298;:33;;;;6350:4;6336:11;;:18;;;;;;;;;;;;;;;;;;6133:226::o:0;4069:234::-;4144:4;4187:1;4163:21;4173:10;4163:9;:21::i;:::-;:25;4155:34;;;;;;4229:6;4194:11;:23;4206:10;4194:23;;;;;;;;;;;;;;;:32;4218:7;4194:32;;;;;;;;;;;;;;;:41;;;;4266:7;4245:37;;4254:10;4245:37;;;4275:6;4245:37;;;;;;:::i;:::-;;;;;;;;4294:4;4287:11;;4069:234;;;;:::o;8372:109::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8470:6:::1;8451;:16;8459:6;8451:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;8372:109:::0;;:::o;2042:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;3398:88::-;3453:7;1905:26;3464:19;;3398:88;:::o;2626:36::-;;;;;;;;;;;;;:::o;4523:362::-;4623:4;4642:25;4660:6;4642:17;:25::i;:::-;4634:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4731:17;4696:11;:19;4708:6;4696:19;;;;;;;;;;;;;;;:31;4716:10;4696:31;;;;;;;;;;;;;;;;:52;4693:136;;4820:6;4786:11;:19;4798:6;4786:19;;;;;;;;;;;;;;;:31;4806:10;4786:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;4752:11;:19;4764:6;4752:19;;;;;;;;;;;;;;;:31;4772:10;4752:31;;;;;;;;;;;;;;;:74;;;;4693:136;4840:40;4854:6;4862:9;4873:6;4840:13;:40::i;:::-;4833:47;;4523:362;;;;;:::o;3489:80::-;3541:5;1867:2;3550:16;;3489:80;:::o;2085:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;3823:105::-;3889:7;3907:9;:18;3917:7;3907:18;;;;;;;;;;;;;;;;3900:25;;3823:105;;;:::o;8607:192::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8655:16:::1;1905:26;8655:31;;8697:20;1905:26;8697:35;;8751:8;8737:11;:22;;;;8782:12;8764:15;:30;;;;8650:149;;8607:192::o:0;4892:593::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5028:11:::1;;;;;;;;;;;5024:120;;;5066:9;;5051:12;:24;5043:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;5024:120;5187:4;5163:29;;:14;:29;;;;:60;;;;;5218:4;5196:27;;:12;:27;;;;5163:60;:91;;;;;5249:4;5227:27;;:12;:27;;;;5163:91;5155:100;;;::::0;::::1;;5295:7;5266:10;:26;5277:14;5266:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;5342:12;5307:16;:32;5324:14;5307:32;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;5394:12;5359:16;:32;5376:14;5359:32;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;5438:5;5411:8;:24;5420:14;5411:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5473:5;5448:6;:22;5455:14;5448:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;4892:593:::0;;;;:::o;3742:78::-;3794:7;3812:5;;;;;;;;;;;3805:12;;3742:78;:::o;2402:26::-;;;;:::o;3572:84::-;3622:13;3646:7;3639:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3572:84;:::o;8486:116::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8590:7:::1;8569:8;:18;8579:6;8569:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;8486:116:::0;;:::o;4308:210::-;4388:4;4407:29;4425:10;4407:17;:29::i;:::-;4399:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4469:44;4483:10;4495:9;4506:6;4469:13;:44::i;:::-;4462:51;;4308:210;;;;:::o;2436:30::-;;;;:::o;10667:348::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10738:23:::1;10764:24;10782:4;10764:9;:24::i;:::-;10738:50;;10819:1;10801:15;:19;10793:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;10847:10;:26;10858:14;10847:26;;;;;;;;;;;;;;;;;;;;;;;;;10839:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10905:105;10926:16;:32;10943:14;10926:32;;;;;;;;;;;;;;;;;;;;;;;;;10960:16;:32;10977:14;10960:32;;;;;;;;;;;;;;;;;;;;;;;;;10994:15;10905:20;:105::i;:::-;10733:282;10667:348:::0;:::o;2581:38::-;;;;;;;;;;;;;:::o;3931:133::-;4015:7;4033:11;:19;4045:6;4033:19;;;;;;;;;;;;;;;:28;4053:7;4033:28;;;;;;;;;;;;;;;;4026:35;;3931:133;;;;:::o;8804:426::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8965:10:::1;8939:36;;8954:8;8939:23;;1905:26;8939:23;;;;:::i;:::-;:36;;;;:::i;:::-;8926:10;:49;;;;9019:10;8993:36;;9008:8;8993:23;;1905:26;8993:23;;;;:::i;:::-;:36;;;;:::i;:::-;8980:10;:49;;;;9054:10;;9042;;:22;;9034:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9120:6;1905:26;9105:21;;;;:::i;:::-;9094:10;;:32;9086:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9193:3;1905:26;9178:18;;;;:::i;:::-;9167:10;;:29;9159:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8804:426:::0;;;;:::o;1148:130::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1230:8:::1;1222:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1245:30;1266:8;1245:30;;;;;;:::i;:::-;;;;;;;;1148:130:::0;:::o;2343:23::-;;;;;;;;;;;;;:::o;7688:308::-;7753:4;7763:16;7782:5;7763:24;;7797:11;;;;;;;;;;;7792:174;;;7827:4;7813:18;;7792:174;;;7862:5;;;;;;;;;;7849:18;;:9;:18;;;7844:122;;;7886:4;7872:18;;7844:122;;;7907:6;:14;7914:6;7907:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;7925:8;:16;7934:6;7925:16;;;;;;;;;;;;;;;;;;;;;;;;;7907:34;7903:63;;;7959:4;7945:18;;7903:63;7844:122;7792:174;7980:11;7973:18;;;7688:308;;;:::o;6364:901::-;6456:4;6493:1;6475:20;;:6;:20;;;;6467:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6541:11;;;;;;;;;;;6536:86;;6564:6;:14;6571:6;6564:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;6582:8;:16;6591:6;6582:16;;;;;;;;;;;;;;;;;;;;;;;;;6564:34;6556:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6536:86;6634:10;;;;;;;;;;;6633:11;:36;;;;;6648:10;:21;6659:9;6648:21;;;;;;;;;;;;;;;;;;;;;;;;;6633:36;6628:85;;;6678:29;6697:9;6678:18;:29::i;:::-;6628:85;6740:4;6722:23;;:6;:23;;;;:53;;;;;6770:4;6749:26;;:9;:26;;;;6722:53;:72;;;;;6789:5;;;;;;;;;;6779:15;;:6;:15;;;;6722:72;6717:155;;;6807:31;6820:9;6831:6;6807:12;:31::i;:::-;6799:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6717:155;6876:18;6897:40;6911:6;6919:9;6930:6;6897:13;:40::i;:::-;6876:61;;6942:23;6977:10;6968:6;:19;;;;:::i;:::-;6942:45;;7032:6;7012:9;:17;7022:6;7012:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;6992:9;:17;7002:6;6992:17;;;;;;;;;;;;;;;:46;;;;7061:1;7048:10;:14;7043:91;;;7121:10;7094:9;:24;7112:4;7094:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;7067:9;:24;7085:4;7067:24;;;;;;;;;;;;;;;:64;;;;7043:91;7184:15;7161:9;:20;7171:9;7161:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;7138:9;:20;7148:9;7138:20;;;;;;;;;;;;;;;:61;;;;7226:9;7209:35;;7218:6;7209:35;;;7237:6;7209:35;;;;;;:::i;:::-;;;;;;;;7256:4;7249:11;;;;6364:901;;;;;:::o;10227:435::-;10333:43;10348:13;10363:12;10333:14;:43::i;:::-;10381:21;10419:1;10405:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10381:40;;10444:4;10426;10431:1;10426:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10464:8;10454:4;10459:1;10454:7;;;;;;;;:::i;:::-;;;;;;;:18;;;;;;;;;;;10477:28;10527:13;10477:64;;10546:9;:60;;;10607:12;10620:1;10622:4;10635;10641:15;10546:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10328:334;;10227:435;;;:::o;9235:987::-;2844:4;2831:10;;:17;;;;;;;;;;;;;;;;;;9313:27:::1;9343:24;9361:4;9343:9;:24::i;:::-;9313:54;;9402:10;;9379:19;:33;;:48;;;;;9416:11;;;;;;;;;;;9379:48;9374:844;;;9464:10;;9441:19;:33;9436:78;;9501:10;;9479:32;;9436:78;9519:20;9598:1;9580:15;;;;;;;;;;;9542:53;;9564:13;;;;;;;;;;;9542:35;;:19;:35;;;;:::i;:::-;:53;;;;:::i;:::-;:57;;;;:::i;:::-;9519:80;;9605:21;9651:12;9629:19;:34;;;;:::i;:::-;9605:58;;1867:2;9689;:13;;;;:::i;:::-;9673;:29;9669:542;;;9712:19;9734:21;9712:43;;9762:105;9783:16;:33;9800:15;9783:33;;;;;;;;;;;;;;;;;;;;;;;;;9818:16;:33;9835:15;9818:33;;;;;;;;;;;;;;;;;;;;;;;;;9853:13;9762:20;:105::i;:::-;9874:19;9920:11;9896:21;:35;;;;:::i;:::-;9874:57;;9959:1;9943:13;;;;;;;;;;;:17;;;9938:267;;;9971:21;10025:15;;;;;;;;;;;9995:45;;10009:13;;;;;;;;;;;9995:27;;:11;:27;;;;:::i;:::-;:45;;;;:::i;:::-;9971:69;;10049:63;10064:16;:33;10081:15;10064:33;;;;;;;;;;;;;;;;;;;;;;;;;10099:12;10049:14;:63::i;:::-;10120:77;10134:16;:33;10151:15;10134:33;;;;;;;;;;;;;;;;;;;;;;;;;10169:12;10183:13;10120;:77::i;:::-;9963:242;9938:267;9705:506;;9669:542;9430:788;;9374:844;9308:914;2866:5:::0;2853:10;;:18;;;;;;;;;;;;;;;;;;9235:987;:::o;7270:413::-;7358:4;7369:21;7393:4;7369:28;;7407:11;;;;;;;;;;;:35;;;;;7423:8;:19;7432:9;7423:19;;;;;;;;;;;;;;;;;;;;;;;;;7422:20;7407:35;7402:249;;;7473:11;;7456:14;:28;7451:195;;;7508:5;7489:24;;7451:195;;;7532:10;:21;7543:9;7532:21;;;;;;;;;;;;;;;;;;;;;;;;;7531:22;:83;;;;;7598:15;;7581:14;7558:9;:20;7568:9;7558:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:55;7531:83;7526:120;;;7638:5;7619:24;;7526:120;7451:195;7402:249;7662:16;7655:23;;;7270:413;;;;:::o;8001:366::-;8098:7;8112:17;8140:11;;;;;;;;;;;8139:12;:30;;;;8155:6;:14;8162:6;8155:14;;;;;;;;;;;;;;;;;;;;;;;;;8139:30;:51;;;;8173:6;:17;8180:9;8173:17;;;;;;;;;;;;;;;;;;;;;;;;;8139:51;8134:208;;;8207:1;8195:13;;8134:208;;;8225:10;:21;8236:9;8225:21;;;;;;;;;;;;;;;;;;;;;;;;;8220:122;;;8286:3;8272:11;;;;;;;;;;;8263:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;8251:38;;8220:122;;;8336:3;8324:9;;;;;;;;;;;8315:18;;:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;8303:36;;8220:122;8134:208;8353:9;8346:16;;;8001:366;;;;;:::o;5490:292::-;5622:12;5578:11;:26;5598:4;5578:26;;;;;;;;;;;;;;;:41;5605:13;5578:41;;;;;;;;;;;;;;;;:56;5573:205;;;5687:17;5643:11;:26;5663:4;5643:26;;;;;;;;;;;;;;;:41;5670:13;5643:41;;;;;;;;;;;;;;;:61;;;;5739:13;5715:57;;5732:4;5715:57;;;5754:17;5715:57;;;;;;:::i;:::-;;;;;;;;5573:205;5490:292;;:::o;5787:341::-;5892:24;5934:28;5984:13;5934:64;;6003:9;:25;;;6036:13;6061:4;6068:12;6082:1;6085;6088:16;6106:15;6003:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5887:241;;5787:341;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:116::-;3564:21;3579:5;3564:21;:::i;:::-;3557:5;3554:32;3544:60;;3600:1;3597;3590:12;3544:60;3494:116;:::o;3616:133::-;3659:5;3697:6;3684:20;3675:29;;3713:30;3737:5;3713:30;:::i;:::-;3616:133;;;;:::o;3755:468::-;3820:6;3828;3877:2;3865:9;3856:7;3852:23;3848:32;3845:119;;;3883:79;;:::i;:::-;3845:119;4003:1;4028:53;4073:7;4064:6;4053:9;4049:22;4028:53;:::i;:::-;4018:63;;3974:117;4130:2;4156:50;4198:7;4189:6;4178:9;4174:22;4156:50;:::i;:::-;4146:60;;4101:115;3755:468;;;;;:::o;4229:329::-;4288:6;4337:2;4325:9;4316:7;4312:23;4308:32;4305:119;;;4343:79;;:::i;:::-;4305:119;4463:1;4488:53;4533:7;4524:6;4513:9;4509:22;4488:53;:::i;:::-;4478:63;;4434:117;4229:329;;;;:::o;4564:118::-;4651:24;4669:5;4651:24;:::i;:::-;4646:3;4639:37;4564:118;;:::o;4688:222::-;4781:4;4819:2;4808:9;4804:18;4796:26;;4832:71;4900:1;4889:9;4885:17;4876:6;4832:71;:::i;:::-;4688:222;;;;:::o;4916:86::-;4951:7;4991:4;4984:5;4980:16;4969:27;;4916:86;;;:::o;5008:112::-;5091:22;5107:5;5091:22;:::i;:::-;5086:3;5079:35;5008:112;;:::o;5126:214::-;5215:4;5253:2;5242:9;5238:18;5230:26;;5266:67;5330:1;5319:9;5315:17;5306:6;5266:67;:::i;:::-;5126:214;;;;:::o;5346:619::-;5423:6;5431;5439;5488:2;5476:9;5467:7;5463:23;5459:32;5456:119;;;5494:79;;:::i;:::-;5456:119;5614:1;5639:53;5684:7;5675:6;5664:9;5660:22;5639:53;:::i;:::-;5629:63;;5585:117;5741:2;5767:53;5812:7;5803:6;5792:9;5788:22;5767:53;:::i;:::-;5757:63;;5712:118;5869:2;5895:53;5940:7;5931:6;5920:9;5916:22;5895:53;:::i;:::-;5885:63;;5840:118;5346:619;;;;;:::o;5971:759::-;6054:6;6062;6070;6078;6127:3;6115:9;6106:7;6102:23;6098:33;6095:120;;;6134:79;;:::i;:::-;6095:120;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6381:2;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6352:118;6509:2;6535:53;6580:7;6571:6;6560:9;6556:22;6535:53;:::i;:::-;6525:63;;6480:118;6637:2;6663:50;6705:7;6696:6;6685:9;6681:22;6663:50;:::i;:::-;6653:60;;6608:115;5971:759;;;;;;;:::o;6736:118::-;6823:24;6841:5;6823:24;:::i;:::-;6818:3;6811:37;6736:118;;:::o;6860:222::-;6953:4;6991:2;6980:9;6976:18;6968:26;;7004:71;7072:1;7061:9;7057:17;7048:6;7004:71;:::i;:::-;6860:222;;;;:::o;7088:474::-;7156:6;7164;7213:2;7201:9;7192:7;7188:23;7184:32;7181:119;;;7219:79;;:::i;:::-;7181:119;7339:1;7364:53;7409:7;7400:6;7389:9;7385:22;7364:53;:::i;:::-;7354:63;;7310:117;7466:2;7492:53;7537:7;7528:6;7517:9;7513:22;7492:53;:::i;:::-;7482:63;;7437:118;7088:474;;;;;:::o;7568:93::-;7604:7;7644:10;7637:5;7633:22;7622:33;;7568:93;;;:::o;7667:120::-;7739:23;7756:5;7739:23;:::i;:::-;7732:5;7729:34;7719:62;;7777:1;7774;7767:12;7719:62;7667:120;:::o;7793:137::-;7838:5;7876:6;7863:20;7854:29;;7892:32;7918:5;7892:32;:::i;:::-;7793:137;;;;:::o;7936:757::-;8018:6;8026;8034;8042;8091:3;8079:9;8070:7;8066:23;8062:33;8059:120;;;8098:79;;:::i;:::-;8059:120;8218:1;8243:52;8287:7;8278:6;8267:9;8263:22;8243:52;:::i;:::-;8233:62;;8189:116;8344:2;8370:52;8414:7;8405:6;8394:9;8390:22;8370:52;:::i;:::-;8360:62;;8315:117;8471:2;8497:52;8541:7;8532:6;8521:9;8517:22;8497:52;:::i;:::-;8487:62;;8442:117;8598:2;8624:52;8668:7;8659:6;8648:9;8644:22;8624:52;:::i;:::-;8614:62;;8569:117;7936:757;;;;;;;:::o;8699:104::-;8744:7;8773:24;8791:5;8773:24;:::i;:::-;8762:35;;8699:104;;;:::o;8809:138::-;8890:32;8916:5;8890:32;:::i;:::-;8883:5;8880:43;8870:71;;8937:1;8934;8927:12;8870:71;8809:138;:::o;8953:155::-;9007:5;9045:6;9032:20;9023:29;;9061:41;9096:5;9061:41;:::i;:::-;8953:155;;;;:::o;9114:345::-;9181:6;9230:2;9218:9;9209:7;9205:23;9201:32;9198:119;;;9236:79;;:::i;:::-;9198:119;9356:1;9381:61;9434:7;9425:6;9414:9;9410:22;9381:61;:::i;:::-;9371:71;;9327:125;9114:345;;;;:::o;9465:180::-;9513:77;9510:1;9503:88;9610:4;9607:1;9600:15;9634:4;9631:1;9624:15;9651:320;9695:6;9732:1;9726:4;9722:12;9712:22;;9779:1;9773:4;9769:12;9800:18;9790:81;;9856:4;9848:6;9844:17;9834:27;;9790:81;9918:2;9910:6;9907:14;9887:18;9884:38;9881:84;;;9937:18;;:::i;:::-;9881:84;9702:269;9651:320;;;:::o;9977:229::-;10117:34;10113:1;10105:6;10101:14;10094:58;10186:12;10181:2;10173:6;10169:15;10162:37;9977:229;:::o;10212:366::-;10354:3;10375:67;10439:2;10434:3;10375:67;:::i;:::-;10368:74;;10451:93;10540:3;10451:93;:::i;:::-;10569:2;10564:3;10560:12;10553:19;;10212:366;;;:::o;10584:419::-;10750:4;10788:2;10777:9;10773:18;10765:26;;10837:9;10831:4;10827:20;10823:1;10812:9;10808:17;10801:47;10865:131;10991:4;10865:131;:::i;:::-;10857:139;;10584:419;;;:::o;11009:173::-;11149:25;11145:1;11137:6;11133:14;11126:49;11009:173;:::o;11188:366::-;11330:3;11351:67;11415:2;11410:3;11351:67;:::i;:::-;11344:74;;11427:93;11516:3;11427:93;:::i;:::-;11545:2;11540:3;11536:12;11529:19;;11188:366;;;:::o;11560:419::-;11726:4;11764:2;11753:9;11749:18;11741:26;;11813:9;11807:4;11803:20;11799:1;11788:9;11784:17;11777:47;11841:131;11967:4;11841:131;:::i;:::-;11833:139;;11560:419;;;:::o;11985:180::-;12033:77;12030:1;12023:88;12130:4;12127:1;12120:15;12154:4;12151:1;12144:15;12171:348;12211:7;12234:20;12252:1;12234:20;:::i;:::-;12229:25;;12268:20;12286:1;12268:20;:::i;:::-;12263:25;;12456:1;12388:66;12384:74;12381:1;12378:81;12373:1;12366:9;12359:17;12355:105;12352:131;;;12463:18;;:::i;:::-;12352:131;12511:1;12508;12504:9;12493:20;;12171:348;;;;:::o;12525:166::-;12665:18;12661:1;12653:6;12649:14;12642:42;12525:166;:::o;12697:366::-;12839:3;12860:67;12924:2;12919:3;12860:67;:::i;:::-;12853:74;;12936:93;13025:3;12936:93;:::i;:::-;13054:2;13049:3;13045:12;13038:19;;12697:366;;;:::o;13069:419::-;13235:4;13273:2;13262:9;13258:18;13250:26;;13322:9;13316:4;13312:20;13308:1;13297:9;13293:17;13286:47;13350:131;13476:4;13350:131;:::i;:::-;13342:139;;13069:419;;;:::o;13494:191::-;13534:4;13554:20;13572:1;13554:20;:::i;:::-;13549:25;;13588:20;13606:1;13588:20;:::i;:::-;13583:25;;13627:1;13624;13621:8;13618:34;;;13632:18;;:::i;:::-;13618:34;13677:1;13674;13670:9;13662:17;;13494:191;;;;:::o;13691:248::-;13831:34;13827:1;13819:6;13815:14;13808:58;13900:31;13895:2;13887:6;13883:15;13876:56;13691:248;:::o;13945:366::-;14087:3;14108:67;14172:2;14167:3;14108:67;:::i;:::-;14101:74;;14184:93;14273:3;14184:93;:::i;:::-;14302:2;14297:3;14293:12;14286:19;;13945:366;;;:::o;14317:419::-;14483:4;14521:2;14510:9;14506:18;14498:26;;14570:9;14564:4;14560:20;14556:1;14545:9;14541:17;14534:47;14598:131;14724:4;14598:131;:::i;:::-;14590:139;;14317:419;;;:::o;14742:159::-;14882:11;14878:1;14870:6;14866:14;14859:35;14742:159;:::o;14907:365::-;15049:3;15070:66;15134:1;15129:3;15070:66;:::i;:::-;15063:73;;15145:93;15234:3;15145:93;:::i;:::-;15263:2;15258:3;15254:12;15247:19;;14907:365;;;:::o;15278:419::-;15444:4;15482:2;15471:9;15467:18;15459:26;;15531:9;15525:4;15521:20;15517:1;15506:9;15502:17;15495:47;15559:131;15685:4;15559:131;:::i;:::-;15551:139;;15278:419;;;:::o;15703:172::-;15843:24;15839:1;15831:6;15827:14;15820:48;15703:172;:::o;15881:366::-;16023:3;16044:67;16108:2;16103:3;16044:67;:::i;:::-;16037:74;;16120:93;16209:3;16120:93;:::i;:::-;16238:2;16233:3;16229:12;16222:19;;15881:366;;;:::o;16253:419::-;16419:4;16457:2;16446:9;16442:18;16434:26;;16506:9;16500:4;16496:20;16492:1;16481:9;16477:17;16470:47;16534:131;16660:4;16534:131;:::i;:::-;16526:139;;16253:419;;;:::o;16678:180::-;16726:77;16723:1;16716:88;16823:4;16820:1;16813:15;16847:4;16844:1;16837:15;16864:185;16904:1;16921:20;16939:1;16921:20;:::i;:::-;16916:25;;16955:20;16973:1;16955:20;:::i;:::-;16950:25;;16994:1;16984:35;;16999:18;;:::i;:::-;16984:35;17041:1;17038;17034:9;17029:14;;16864:185;;;;:::o;17055:162::-;17195:14;17191:1;17183:6;17179:14;17172:38;17055:162;:::o;17223:366::-;17365:3;17386:67;17450:2;17445:3;17386:67;:::i;:::-;17379:74;;17462:93;17551:3;17462:93;:::i;:::-;17580:2;17575:3;17571:12;17564:19;;17223:366;;;:::o;17595:419::-;17761:4;17799:2;17788:9;17784:18;17776:26;;17848:9;17842:4;17838:20;17834:1;17823:9;17819:17;17812:47;17876:131;18002:4;17876:131;:::i;:::-;17868:139;;17595:419;;;:::o;18020:173::-;18160:25;18156:1;18148:6;18144:14;18137:49;18020:173;:::o;18199:366::-;18341:3;18362:67;18426:2;18421:3;18362:67;:::i;:::-;18355:74;;18438:93;18527:3;18438:93;:::i;:::-;18556:2;18551:3;18547:12;18540:19;;18199:366;;;:::o;18571:419::-;18737:4;18775:2;18764:9;18760:18;18752:26;;18824:9;18818:4;18814:20;18810:1;18799:9;18795:17;18788:47;18852:131;18978:4;18852:131;:::i;:::-;18844:139;;18571:419;;;:::o;18996:174::-;19136:26;19132:1;19124:6;19120:14;19113:50;18996:174;:::o;19176:366::-;19318:3;19339:67;19403:2;19398:3;19339:67;:::i;:::-;19332:74;;19415:93;19504:3;19415:93;:::i;:::-;19533:2;19528:3;19524:12;19517:19;;19176:366;;;:::o;19548:419::-;19714:4;19752:2;19741:9;19737:18;19729:26;;19801:9;19795:4;19791:20;19787:1;19776:9;19772:17;19765:47;19829:131;19955:4;19829:131;:::i;:::-;19821:139;;19548:419;;;:::o;19973:60::-;20001:3;20022:5;20015:12;;19973:60;;;:::o;20039:142::-;20089:9;20122:53;20140:34;20149:24;20167:5;20149:24;:::i;:::-;20140:34;:::i;:::-;20122:53;:::i;:::-;20109:66;;20039:142;;;:::o;20187:126::-;20237:9;20270:37;20301:5;20270:37;:::i;:::-;20257:50;;20187:126;;;:::o;20319:134::-;20377:9;20410:37;20441:5;20410:37;:::i;:::-;20397:50;;20319:134;;;:::o;20459:147::-;20554:45;20593:5;20554:45;:::i;:::-;20549:3;20542:58;20459:147;;:::o;20612:238::-;20713:4;20751:2;20740:9;20736:18;20728:26;;20764:79;20840:1;20829:9;20825:17;20816:6;20764:79;:::i;:::-;20612:238;;;;:::o;20856:179::-;20996:31;20992:1;20984:6;20980:14;20973:55;20856:179;:::o;21041:366::-;21183:3;21204:67;21268:2;21263:3;21204:67;:::i;:::-;21197:74;;21280:93;21369:3;21280:93;:::i;:::-;21398:2;21393:3;21389:12;21382:19;;21041:366;;;:::o;21413:419::-;21579:4;21617:2;21606:9;21602:18;21594:26;;21666:9;21660:4;21656:20;21652:1;21641:9;21637:17;21630:47;21694:131;21820:4;21694:131;:::i;:::-;21686:139;;21413:419;;;:::o;21838:176::-;21978:28;21974:1;21966:6;21962:14;21955:52;21838:176;:::o;22020:366::-;22162:3;22183:67;22247:2;22242:3;22183:67;:::i;:::-;22176:74;;22259:93;22348:3;22259:93;:::i;:::-;22377:2;22372:3;22368:12;22361:19;;22020:366;;;:::o;22392:419::-;22558:4;22596:2;22585:9;22581:18;22573:26;;22645:9;22639:4;22635:20;22631:1;22620:9;22616:17;22609:47;22673:131;22799:4;22673:131;:::i;:::-;22665:139;;22392:419;;;:::o;22817:305::-;22857:3;22876:20;22894:1;22876:20;:::i;:::-;22871:25;;22910:20;22928:1;22910:20;:::i;:::-;22905:25;;23064:1;22996:66;22992:74;22989:1;22986:81;22983:107;;;23070:18;;:::i;:::-;22983:107;23114:1;23111;23107:9;23100:16;;22817:305;;;;:::o;23128:180::-;23176:77;23173:1;23166:88;23273:4;23270:1;23263:15;23297:4;23294:1;23287:15;23314:180;23362:77;23359:1;23352:88;23459:4;23456:1;23449:15;23483:4;23480:1;23473:15;23500:85;23545:7;23574:5;23563:16;;23500:85;;;:::o;23591:158::-;23649:9;23682:61;23700:42;23709:32;23735:5;23709:32;:::i;:::-;23700:42;:::i;:::-;23682:61;:::i;:::-;23669:74;;23591:158;;;:::o;23755:147::-;23850:45;23889:5;23850:45;:::i;:::-;23845:3;23838:58;23755:147;;:::o;23908:114::-;23975:6;24009:5;24003:12;23993:22;;23908:114;;;:::o;24028:184::-;24127:11;24161:6;24156:3;24149:19;24201:4;24196:3;24192:14;24177:29;;24028:184;;;;:::o;24218:132::-;24285:4;24308:3;24300:11;;24338:4;24333:3;24329:14;24321:22;;24218:132;;;:::o;24356:108::-;24433:24;24451:5;24433:24;:::i;:::-;24428:3;24421:37;24356:108;;:::o;24470:179::-;24539:10;24560:46;24602:3;24594:6;24560:46;:::i;:::-;24638:4;24633:3;24629:14;24615:28;;24470:179;;;;:::o;24655:113::-;24725:4;24757;24752:3;24748:14;24740:22;;24655:113;;;:::o;24804:732::-;24923:3;24952:54;25000:5;24952:54;:::i;:::-;25022:86;25101:6;25096:3;25022:86;:::i;:::-;25015:93;;25132:56;25182:5;25132:56;:::i;:::-;25211:7;25242:1;25227:284;25252:6;25249:1;25246:13;25227:284;;;25328:6;25322:13;25355:63;25414:3;25399:13;25355:63;:::i;:::-;25348:70;;25441:60;25494:6;25441:60;:::i;:::-;25431:70;;25287:224;25274:1;25271;25267:9;25262:14;;25227:284;;;25231:14;25527:3;25520:10;;24928:608;;;24804:732;;;;:::o;25542:831::-;25805:4;25843:3;25832:9;25828:19;25820:27;;25857:71;25925:1;25914:9;25910:17;25901:6;25857:71;:::i;:::-;25938:80;26014:2;26003:9;25999:18;25990:6;25938:80;:::i;:::-;26065:9;26059:4;26055:20;26050:2;26039:9;26035:18;26028:48;26093:108;26196:4;26187:6;26093:108;:::i;:::-;26085:116;;26211:72;26279:2;26268:9;26264:18;26255:6;26211:72;:::i;:::-;26293:73;26361:3;26350:9;26346:19;26337:6;26293:73;:::i;:::-;25542:831;;;;;;;;:::o;26379:102::-;26421:8;26468:5;26465:1;26461:13;26440:34;;26379:102;;;:::o;26487:848::-;26548:5;26555:4;26579:6;26570:15;;26603:5;26594:14;;26617:712;26638:1;26628:8;26625:15;26617:712;;;26733:4;26728:3;26724:14;26718:4;26715:24;26712:50;;;26742:18;;:::i;:::-;26712:50;26792:1;26782:8;26778:16;26775:451;;;27207:4;27200:5;27196:16;27187:25;;26775:451;27257:4;27251;27247:15;27239:23;;27287:32;27310:8;27287:32;:::i;:::-;27275:44;;26617:712;;;26487:848;;;;;;;:::o;27341:1073::-;27395:5;27586:8;27576:40;;27607:1;27598:10;;27609:5;;27576:40;27635:4;27625:36;;27652:1;27643:10;;27654:5;;27625:36;27721:4;27769:1;27764:27;;;;27805:1;27800:191;;;;27714:277;;27764:27;27782:1;27773:10;;27784:5;;;27800:191;27845:3;27835:8;27832:17;27829:43;;;27852:18;;:::i;:::-;27829:43;27901:8;27898:1;27894:16;27885:25;;27936:3;27929:5;27926:14;27923:40;;;27943:18;;:::i;:::-;27923:40;27976:5;;;27714:277;;28100:2;28090:8;28087:16;28081:3;28075:4;28072:13;28068:36;28050:2;28040:8;28037:16;28032:2;28026:4;28023:12;28019:35;28003:111;28000:246;;;28156:8;28150:4;28146:19;28137:28;;28191:3;28184:5;28181:14;28178:40;;;28198:18;;:::i;:::-;28178:40;28231:5;;28000:246;28271:42;28309:3;28299:8;28293:4;28290:1;28271:42;:::i;:::-;28256:57;;;;28345:4;28340:3;28336:14;28329:5;28326:25;28323:51;;;28354:18;;:::i;:::-;28323:51;28403:4;28396:5;28392:16;28383:25;;27341:1073;;;;;;:::o;28420:281::-;28478:5;28502:23;28520:4;28502:23;:::i;:::-;28494:31;;28546:25;28562:8;28546:25;:::i;:::-;28534:37;;28590:104;28627:66;28617:8;28611:4;28590:104;:::i;:::-;28581:113;;28420:281;;;;:::o;28707:807::-;28956:4;28994:3;28983:9;28979:19;28971:27;;29008:71;29076:1;29065:9;29061:17;29052:6;29008:71;:::i;:::-;29089:72;29157:2;29146:9;29142:18;29133:6;29089:72;:::i;:::-;29171:80;29247:2;29236:9;29232:18;29223:6;29171:80;:::i;:::-;29261;29337:2;29326:9;29322:18;29313:6;29261:80;:::i;:::-;29351:73;29419:3;29408:9;29404:19;29395:6;29351:73;:::i;:::-;29434;29502:3;29491:9;29487:19;29478:6;29434:73;:::i;:::-;28707:807;;;;;;;;;:::o;29520:143::-;29577:5;29608:6;29602:13;29593:22;;29624:33;29651:5;29624:33;:::i;:::-;29520:143;;;;:::o;29669:663::-;29757:6;29765;29773;29822:2;29810:9;29801:7;29797:23;29793:32;29790:119;;;29828:79;;:::i;:::-;29790:119;29948:1;29973:64;30029:7;30020:6;30009:9;30005:22;29973:64;:::i;:::-;29963:74;;29919:128;30086:2;30112:64;30168:7;30159:6;30148:9;30144:22;30112:64;:::i;:::-;30102:74;;30057:129;30225:2;30251:64;30307:7;30298:6;30287:9;30283:22;30251:64;:::i;:::-;30241:74;;30196:129;29669:663;;;;;:::o

Swarm Source

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