ETH Price: $3,297.37 (-3.35%)
Gas: 19 Gwei

Token

Protectors of the realm (WeR1)
 

Overview

Max Total Supply

1,000,000,000 WeR1

Holders

324

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,995.202057315 WeR1

Value
$0.00
0xffddee81067efeefd8abf28893dbabcc1a88fdce
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

WeR1 is a decentralized community whose focus is protecting and building alongside our allies in a new memecosystem Empire.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
WeR1

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// Telegram: https://t.me/WeR1Portal
// Twitter : https://twitter.com/wer1legion

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

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);
}

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
	function getAmountsIn(uint amountOut, address[] memory path) external view returns (uint[] memory amounts);
	function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function factory() external pure returns (address);
	function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
}

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

contract WeR1_Sidecar {
	address private immutable _owner;
	constructor() { _owner = msg.sender; }
	function owner() external view returns (address) { return _owner; }
	function recoverErc20Tokens(address tokenCA) external returns (uint256) {
		require(msg.sender == _owner, "Not authorized");
		uint256 balance = IERC20(tokenCA).balanceOf(address(this));
		if (balance > 0) { IERC20(tokenCA).transfer(msg.sender, balance); }
		return balance;
	}
}

contract WeR1 is IERC20, OWNED {
	mapping(address => uint256) private _balances;
	mapping(address => mapping(address => uint256)) private _allowances;
	uint8 private constant _decimals = 9;
	uint256 private constant _totalSupply = 1_000_000_000 * 10**_decimals;
	string private constant _name = "Protectors of the realm";
	string private constant _symbol = "WeR1";

	uint256 private _thresholdUSDC = 1000;  // tax tokens USD value threshold to trigger tax token swap, transfer and adding liquidity
	uint256 private _maxTx; 
	uint256 private _maxWallet;
	uint8 private immutable _usdcDecimals;

	uint256 private constant taxMcBracket1 = 8_000_000; // below this MC tax is 6% (2 LP, 2 TsukaLP, 2 Marketing)
	uint256 private constant taxMcBracket2 = 16_000_000; // below this MC tax is 4% (2 TsukaLP, 2 Marketing)
	uint256 private constant taxMcBracket3 = 100_000_000; // below this MC tax is 2% (only TsukaLP), above it tax is 0%

	mapping(address => bool) private _excluded;
	address private _marketingWallet = address(0xB3C18994f975C26f4FEc2a407B17ee15671e408a);
	
	address private constant _tsuka = address(0xc5fB36dd2fb59d3B98dEfF88425a3F425Ee469eD); 
	address private constant _usdc = address(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); 
	
	address private immutable _sidecarAddress;
	WeR1_Sidecar private immutable _sidecarContract;

	address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Uniswap V2 Router
	IUniswapV2Router02 private constant _swapRouter = IUniswapV2Router02(_swapRouterAddress);
	address private _primaryLP;
	mapping(address => bool) private _isLP;
	
	uint256 private _openAt;
	uint256 private _addTime = 300; //trading opens 5m after adding liquidity
	uint256 private _protected;

	bool private swapLocked;
	modifier lockSwap { swapLocked = true; _; swapLocked = false; }

	constructor() OWNED(msg.sender)  {
		_balances[address(this)] = _totalSupply;
		emit Transfer(address(0), address(this), _balances[address(this)]);
		
		_sidecarContract = new WeR1_Sidecar();
		_sidecarAddress = address(_sidecarContract);
		_usdcDecimals = IERC20(_usdc).decimals();

		_changeLimits(5,10); //set max TX to 0.5%, max wallet 1%

		_excluded[_owner] = true;
		_excluded[address(this)] = true;
		_excluded[_swapRouterAddress] = true;
		_excluded[_marketingWallet] = true;
		_excluded[_sidecarAddress] = true;
	}

	function addressList() external view returns (address owner, address sidecar, address marketing, address tsuka, address usdc, address swapRouter, address primaryLP) {
		return (_owner, _sidecarAddress, _marketingWallet, _tsuka, _usdc, _swapRouterAddress, _primaryLP);
	}

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

	function _checkAndApproveRouterForToken(address _token, uint256 amount) internal {
		uint256 tokenAllowance;
		if (_token == address(this)) {
			tokenAllowance = _allowances[address(this)][_swapRouterAddress];
			if (amount > tokenAllowance) {
				_allowances[address(this)][_swapRouterAddress] = type(uint256).max;
			}
		} else {
			tokenAllowance = IERC20(_token).allowance(address(this), _swapRouterAddress);
			if (amount > tokenAllowance) {
				IERC20(_token).approve(_swapRouterAddress, type(uint256).max);
			}
		}
    }

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

		if (block.timestamp>_openAt && block.timestamp<_protected && tx.gasprice>block.basefee) {
			uint256 _gpb = tx.gasprice - block.basefee;
			uint256 _gpm = 10 * (10**9);
			require(_gpb<_gpm,"Not enabled");
		}

		if ( !swapLocked && !_excluded[from] && _isLP[to] ) { _processTaxTokens(); }
		
		(uint256 tsukaLP, uint256 werLP, uint256 marketing) = _getTaxTokens(from, to, amount);
		uint256 taxTokens = tsukaLP + werLP + marketing;
		_balances[from] -= amount;
		_balances[address(this)] += taxTokens;
		_balances[to] += (amount - taxTokens);
		emit Transfer(from, to, amount);
	}
	function _limitCheck(address from, address to, uint256 amount) private view returns (bool) {
		bool txSize = true;
		if ( amount > _maxTx && !_excluded[from] && !_excluded[to] ) { txSize = false; }
		bool walletSize = true;
		uint256 newBalanceTo = _balances[to] + amount;
		if ( newBalanceTo > _maxWallet && !_excluded[from] && !_excluded[to] && !_isLP[to] ) { walletSize = false; } 
		return (txSize && walletSize);
	}

	function _getCurrentDilutedMcUSD() private view returns (uint256) {
		uint256 marketCap;
		if (_primaryLP != address(0)) {
			uint256 tokensInLP = _balances[_primaryLP];
			uint256 usdcInLP = IERC20(_usdc).balanceOf(_primaryLP) / (10**_usdcDecimals);
			marketCap = (usdcInLP * _totalSupply / tokensInLP);
		}
		return marketCap;
	}
	function _getTaxRates() private view returns (uint8 tsukaRate, uint8 werRate, uint8 marketingRate) {
		uint8 _tsukaRate; uint8 _werRate; uint8 _marketingRate;
		uint256 currentDilutedUsdMC = _getCurrentDilutedMcUSD();
		if (currentDilutedUsdMC < taxMcBracket1 ) {
			_tsukaRate = 2; _werRate = 2; _marketingRate = 2;
		} else if (currentDilutedUsdMC >= taxMcBracket1 && currentDilutedUsdMC < taxMcBracket2) {
			_tsukaRate = 2; _werRate = 0; _marketingRate = 2;
		} else if (currentDilutedUsdMC >= taxMcBracket2 && currentDilutedUsdMC < taxMcBracket3) {
			_tsukaRate = 2; _werRate = 0; _marketingRate = 0;
		} else { 
			_tsukaRate = 0; _werRate = 0; _marketingRate = 0;
		}
		return (_tsukaRate, _werRate, _marketingRate);
	}
	function _getTaxTokens(address from, address to, uint256 amount) private view returns (uint256 tsukaLP, uint256 werLP, uint256 marketing) {
		uint256 _tsukaLP; uint256 _werLP; uint256 _marketing;
		if ( (_isLP[from] && !_excluded[to]) || (_isLP[to] && !_excluded[from]) ) { 
			(uint8 tsukaRate, uint8 werRate, uint8 marketingRate) = _getTaxRates();
			_tsukaLP = amount * tsukaRate / 100;
			_werLP = amount * werRate / 100;
			_marketing = amount * marketingRate / 100;
		}
		else { 
			_tsukaLP = 0;
			_werLP = 0;
			_marketing = 0;
		}
		return (_tsukaLP, _werLP, _marketing);
	}  

	function addInitialLiquidity() external onlyOwner {
		require(IERC20(_usdc).balanceOf(address(this))>0, "USDC value zero");
		require(_primaryLP == address(0), "LP exists");
		_primaryLP = IUniswapV2Factory(_swapRouter.factory()).createPair(address(this), _usdc);
		_isLP[_primaryLP] = true;
		_addLiquidity(address(this), _balances[address(this)], IERC20(_usdc).balanceOf(address(this)), false);
		_openAt = block.timestamp + _addTime;
		_protected = _openAt + 300;
	}

	function _addLiquidity(address _token, uint256 tokenAmount, uint256 usdcAmount, bool burnLpTokens) internal {
		require(IERC20(_token).balanceOf(address(this)) >= tokenAmount, "Not enough tokens");
		require(IERC20(_usdc).balanceOf(address(this)) >= usdcAmount, "Not enough USDC");
		_checkAndApproveRouterForToken(_token, tokenAmount);
		_checkAndApproveRouterForToken(_usdc, usdcAmount);
		address lpRecipient = _owner;
		if (burnLpTokens) { lpRecipient = address(0); }

		_swapRouter.addLiquidity(
			_usdc,  		// tokenA
			_token, 		// tokenB
			usdcAmount,     // amountADesired
			tokenAmount,    // amountBDesired
			0,      		// amountAMin -- allowing slippage
			0,      		// amountBMin -- allowing slippage
			lpRecipient, 	// to -- who gets the LP tokens
			block.timestamp // deadline
		);
	}

	function stats() external view returns (uint256 currentUsdMC, uint256 currentTaxUSD, uint256 swapThresholdUSD) { 
		uint256 currentMc = _getCurrentDilutedMcUSD();
		uint256 currentTaxValue = currentMc * _balances[address(this)] / _totalSupply;
		return (currentMc, currentTaxValue, _thresholdUSDC);
	}

	function tax() external view returns (uint8 LiquidityTSUKA, uint8 LiquidityWeR1, uint8 Marketing) { 
		(uint8 tsukaRate, uint8 werRate, uint8 marketingRate) = _getTaxRates();
		return (tsukaRate, werRate, marketingRate);
	}
	function limits() external view returns (uint256 maxTransaction, uint256 maxWallet) { return (_maxTx, _maxWallet); }
	function isExcluded(address wallet) external view returns (bool) { return _excluded[wallet]; }

	function changeLimits(uint16 maxTxPermille, uint16 maxWalletPermille) public onlyOwner { _changeLimits(maxTxPermille, maxWalletPermille); }
	function _changeLimits(uint16 _maxTxPermille, uint16 _maxWalletPermille) private {
		uint256 newMaxTx = (_totalSupply * _maxTxPermille / 1000) + (10 * 10**_decimals); //add 10 tokens to avoid rounding issues
		uint256 newMaxWallet = (_totalSupply * _maxWalletPermille / 1000) + (10 * 10**_decimals); //add 10 tokens to avoid rounding issues
		require(newMaxTx >= _maxTx && newMaxWallet >= _maxWallet, "Cannot decrease limits");
		if (newMaxTx > _totalSupply) { newMaxTx = _totalSupply; }
		if (newMaxWallet > _totalSupply) { newMaxWallet = _totalSupply; }
		_maxTx = newMaxTx;
		_maxWallet = newMaxWallet;
	}

	function changeTaxWallet(address walletMarketing) external onlyOwner {
		require(!_isLP[walletMarketing] && walletMarketing != _swapRouterAddress && walletMarketing != address(this) && walletMarketing != address(0));
		_excluded[walletMarketing] = true;
		_marketingWallet = walletMarketing;
	}	
	
	function _getThresholdTokenAmount() private view returns (uint256) {
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _usdc;
		uint256[] memory amounts = _swapRouter.getAmountsIn(_thresholdUSDC * 10**_usdcDecimals, path); 
		return amounts[0];
	}
	function _processTaxTokens() private lockSwap {
		uint256 thresholdTokens = _getThresholdTokenAmount();
		(uint8 tsukaRate, uint8 werRate, uint8 marketingRate) = _getTaxRates();
		uint8 totalRate = tsukaRate + werRate + marketingRate;
		uint256 swapAmount = _balances[address(this)];
		if (totalRate>0 && swapAmount >= thresholdTokens) {
			swapAmount = thresholdTokens;

			uint256 tokensForTsuka = (swapAmount * tsukaRate / totalRate);
			uint256 tokensForWerLP = (swapAmount * werRate / totalRate)/2;
			uint256 tokensForMarketing = swapAmount * marketingRate / totalRate;

			uint256 tokensToSwap = tokensForTsuka + tokensForMarketing + tokensForWerLP;
			if (tokensToSwap >= 10**_decimals) {
				uint256 swappedOutputUSDC = _swapTokens(address(this), _usdc, tokensToSwap, true); //swap WeR1 for USDC, use sidecar contract
				uint256 usdcForWerLP = swappedOutputUSDC * tokensForWerLP / tokensToSwap; //calc USDC for WeR1 liquidity
				uint256 usdcToSpendOnTsuka = (swappedOutputUSDC * tokensForTsuka / tokensToSwap) / 2; //calc USDC for TSUKA liquidity
				uint256 usdcForMarketing = swappedOutputUSDC * tokensForMarketing / tokensToSwap; //calc USDC for marketing

				if (werRate>0) { _addLiquidity(address(this), tokensForWerLP, usdcForWerLP, true); } //add WeR1 liquidity and burn LP tokens

				if (tsukaRate>0) {
					uint256 tsukaPurchased = _swapTokens(_usdc, _tsuka, usdcToSpendOnTsuka, false); //purchase TSUKA for liquidity, sidecar not used
					_addLiquidity(_tsuka, tsukaPurchased, usdcToSpendOnTsuka, true); //add TSUKA liquidity and burn LP tokens
				}

				if (marketingRate>0) {
					uint256 remainingUsdcBalance = IERC20(_usdc).balanceOf(address(this));
					if (usdcForMarketing > remainingUsdcBalance) { usdcForMarketing = remainingUsdcBalance; } //added check to avoid risk of having insufficient balance
					if (usdcForMarketing > 0) { IERC20(_usdc).transfer(_marketingWallet, usdcForMarketing); } //transfer USDC to marketing wallet
				}
			}

		}
	}

	function _swapTokens(address inputToken, address outputToken, uint256 inputAmount, bool useSidecar) private returns(uint256 outputAmount) {		
		address swapFunctionRecipient = address(this);
		uint256 balanceBefore;
		uint256 swappedOutputTokens;
		
		if (useSidecar == true) { swapFunctionRecipient = _sidecarAddress; }
		else { balanceBefore = IERC20(outputToken).balanceOf(address(this)); }

		_checkAndApproveRouterForToken(inputToken, inputAmount);
		address[] memory path = new address[](2);
		path[0] = inputToken;
		path[1] = outputToken;
		_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
			inputAmount,
			0,
			path,
			swapFunctionRecipient,
			block.timestamp
		);
		
		if (useSidecar == true) { swappedOutputTokens = _sidecarContract.recoverErc20Tokens(outputToken); }
		else { 
			uint256 balanceAfter = IERC20(outputToken).balanceOf(address(this));
			swappedOutputTokens = (balanceAfter - balanceBefore); 
		}

		return swappedOutputTokens; 
	}

	function recoverTokens(address tokenCa) external onlyOwner {
		require(tokenCa != address(this),"Not allowed");
		uint256 tokenBalance = IERC20(tokenCa).balanceOf(address(this));
		IERC20(tokenCa).transfer(msg.sender, tokenBalance);
	}

	function manualSwap() external onlyOwner { _processTaxTokens(); }
	function setExcluded(address wallet, bool exclude) external onlyOwner { 
		string memory notAllowedError = "Not allowed";
		require(!_isLP[wallet], notAllowedError);
		require(wallet != address(this), notAllowedError);
		require(wallet != _sidecarAddress, notAllowedError);
		require(wallet != _swapRouterAddress, notAllowedError);
	 	_excluded[wallet] = exclude; 
	}
	function setThreshold(uint256 amountUSD) external onlyOwner {
		require(amountUSD > 0, "Threshold cannot be 0");
		_thresholdUSDC = amountUSD;
	}

	function burn(uint256 amount) external {
		require(_balances[msg.sender] >= amount, "Low balance");
		_balances[msg.sender] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(msg.sender, address(0), amount);
	}
	function setAdditionalLP(address lpAddress, bool isLiqPool) external onlyOwner {
		string memory notAllowedError = "Not allowed";
		require(!_excluded[lpAddress], notAllowedError);
		require(lpAddress != _primaryLP, notAllowedError);
		require(lpAddress != address(this), notAllowedError);
		require(lpAddress != _sidecarAddress, notAllowedError);
		require(lpAddress != _swapRouterAddress, notAllowedError);
		_isLP[lpAddress] = isLiqPool;
	}
	function isLP(address ca) external view returns (bool) { return _isLP[ca]; }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addressList","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"sidecar","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"tsuka","type":"address"},{"internalType":"address","name":"usdc","type":"address"},{"internalType":"address","name":"swapRouter","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletMarketing","type":"address"}],"name":"changeTaxWallet","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ca","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenCa","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpAddress","type":"address"},{"internalType":"bool","name":"isLiqPool","type":"bool"}],"name":"setAdditionalLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountUSD","type":"uint256"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stats","outputs":[{"internalType":"uint256","name":"currentUsdMC","type":"uint256"},{"internalType":"uint256","name":"currentTaxUSD","type":"uint256"},{"internalType":"uint256","name":"swapThresholdUSD","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint8","name":"LiquidityTSUKA","type":"uint8"},{"internalType":"uint8","name":"LiquidityWeR1","type":"uint8"},{"internalType":"uint8","name":"Marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e06040526103e860035573b3c18994f975c26f4fec2a407b17ee15671e408a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061012c600b553480156200007257600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a620000c591906200089e565b633b9aca00620000d69190620008ef565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620001b891906200094b565b60405180910390a3604051620001ce90620006f6565b604051809103906000f080158015620001eb573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505060c05173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db91906200099e565b60ff1660808160ff1681525050620002fc6005600a6200051360201b60201c565b6001600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000af5565b60006009600a6200052591906200089e565b600a620005339190620008ef565b6103e88461ffff166009600a6200054b91906200089e565b633b9aca006200055c9190620008ef565b620005689190620008ef565b620005749190620009ff565b62000580919062000a37565b905060006009600a6200059491906200089e565b600a620005a29190620008ef565b6103e88461ffff166009600a620005ba91906200089e565b633b9aca00620005cb9190620008ef565b620005d79190620008ef565b620005e39190620009ff565b620005ef919062000a37565b905060045482101580156200060657506005548110155b62000648576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200063f9062000ad3565b60405180910390fd5b6009600a6200065891906200089e565b633b9aca00620006699190620008ef565b82111562000695576009600a6200068191906200089e565b633b9aca00620006929190620008ef565b91505b6009600a620006a591906200089e565b633b9aca00620006b69190620008ef565b811115620006e2576009600a620006ce91906200089e565b633b9aca00620006df9190620008ef565b90505b816004819055508060058190555050505050565b61053f8062005cfb83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000792578086048111156200076a576200076962000704565b5b60018516156200077a5780820291505b80810290506200078a8562000733565b94506200074a565b94509492505050565b600082620007ad576001905062000880565b81620007bd576000905062000880565b8160018114620007d65760028114620007e15762000817565b600191505062000880565b60ff841115620007f657620007f562000704565b5b8360020a91508482111562000810576200080f62000704565b5b5062000880565b5060208310610133831016604e8410600b8410161715620008515782820a9050838111156200084b576200084a62000704565b5b62000880565b62000860848484600162000740565b925090508184048111156200087a576200087962000704565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008ab8262000887565b9150620008b88362000891565b9250620008e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200079b565b905092915050565b6000620008fc8262000887565b9150620009098362000887565b9250828202620009198162000887565b9150828204841483151762000933576200093262000704565b5b5092915050565b620009458162000887565b82525050565b60006020820190506200096260008301846200093a565b92915050565b600080fd5b620009788162000891565b81146200098457600080fd5b50565b60008151905062000998816200096d565b92915050565b600060208284031215620009b757620009b662000968565b5b6000620009c78482850162000987565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a0c8262000887565b915062000a198362000887565b92508262000a2c5762000a2b620009d0565b5b828204905092915050565b600062000a448262000887565b915062000a518362000887565b925082820190508082111562000a6c5762000a6b62000704565b5b92915050565b600082825260208201905092915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b600062000abb60168362000a72565b915062000ac88262000a83565b602082019050919050565b6000602082019050818103600083015262000aee8162000aac565b9050919050565b60805160a05160c0516151ba62000b416000396000613c9c015260008181610cd6015281816113a301528181611abb0152613a6d01526000818161302e015261399501526151ba6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610440578063d80528ae14610470578063dd62ed3e14610490578063f2fde38b146104c05761018e565b8063a9059cbb146103d0578063c1eb6dfd14610400578063cb711595146104245761018e565b8063715018a61461031d5780637df0f76714610327578063860aefcf1461035757806395d89b4114610376578063960bfe041461039457806399c8d556146103b05761018e565b806323b872dd1161014b57806342966c681161012557806342966c68146102ab57806351bc3c85146102c75780635c07c993146102d157806370a08231146102ed5761018e565b806323b872dd146102415780632836be2414610271578063313ce5671461028d5761018e565b80630210a83d1461019357806306fdde031461019d578063095ea7b3146101bb5780630a6a52b9146101eb57806316114acd1461020757806318160ddd14610223575b600080fd5b61019b6104dc565b005b6101a561099e565b6040516101b29190613e6a565b60405180910390f35b6101d560048036038101906101d09190613f34565b6109db565b6040516101e29190613f8f565b60405180910390f35b61020560048036038101906102009190613fd6565b610a73565b005b610221600480360381019061021c9190614016565b610e4a565b005b61022b611047565b6040516102389190614052565b60405180910390f35b61025b6004803603810190610256919061406d565b61106b565b6040516102689190613f8f565b60405180910390f35b61028b60048036038101906102869190613fd6565b6111d5565b005b610295611517565b6040516102a291906140dc565b60405180910390f35b6102c560048036038101906102c091906140f7565b611520565b005b6102cf6116b7565b005b6102eb60048036038101906102e6919061415e565b61174f565b005b61030760048036038101906103029190614016565b6117eb565b6040516103149190614052565b60405180910390f35b610325611834565b005b610341600480360381019061033c9190614016565b6118ce565b60405161034e9190613f8f565b60405180910390f35b61035f611924565b60405161036d92919061419e565b60405180910390f35b61037e611935565b60405161038b9190613e6a565b60405180910390f35b6103ae60048036038101906103a991906140f7565b611972565b005b6103b8611a4d565b6040516103c7939291906141c7565b60405180910390f35b6103ea60048036038101906103e59190613f34565b611a75565b6040516103f79190613f8f565b60405180910390f35b610408611a8c565b60405161041b979695949392919061420d565b60405180910390f35b61043e60048036038101906104399190614016565b611b76565b005b61045a60048036038101906104559190614016565b611db4565b6040516104679190613f8f565b60405180910390f35b610478611e0a565b6040516104879392919061427c565b60405180910390f35b6104aa60048036038101906104a591906142b3565b611ea2565b6040516104b79190614052565b60405180910390f35b6104da60048036038101906104d59190614016565b611f29565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105619061433f565b60405180910390fd5b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105b9919061435f565b602060405180830381865afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa919061438f565b1161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290614474565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e91906144a9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b815260040161079c9291906144d6565b6020604051808303816000875af11580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906144a9565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061097230600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161092a919061435f565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b919061438f565b6000611fc3565b600b5442610980919061452e565b600a8190555061012c600a54610996919061452e565b600c81905550565b60606040518060400160405280601781526020017f50726f746563746f7273206f6620746865207265616c6d000000000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906145ae565b60405180910390fd5b610a69338484612265565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158190610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc29190613e6a565b60405180910390fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c579190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca9190613e6a565b60405180910390fd5b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49190613e6a565b60405180910390fd5b5081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf9061433f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d9061461a565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f81919061435f565b602060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc2919061438f565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fff92919061463a565b6020604051808303816000875af115801561101e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110429190614678565b505050565b60006009600a61105791906147d8565b633b9aca006110669190614823565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561112c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611123906148b1565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111b891906148d1565b925050819055506111ca8484846123f9565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615819061132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906113a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113979190613e6a565b60405180910390fd5b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19190613e6a565b60405180910390fd5b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009905090565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990614951565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f191906148d1565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611647919061452e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116ac9190614052565b60405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c9061433f565b60405180910390fd5b61174d6128a9565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d49061433f565b60405180910390fd5b6117e78282612c97565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b99061433f565b60405180910390fd5b6118cc6000612e48565b565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600454600554915091509091565b60606040518060400160405280600481526020017f5765523100000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f79061433f565b60405180910390fd5b60008111611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906149bd565b60405180910390fd5b8060038190555050565b600080600080600080611a5e612ec2565b925092509250828282955095509550505050909192565b6000611a823384846123f9565b6001905092915050565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c5fb36dd2fb59d3b98deff88425a3f425ee469ed73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48737a250d5630b4cf539739df2c5dacb4c659f2488d600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16965096509650965096509650965090919293949596565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061433f565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c9e5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611d1857600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080611e18612f6b565b905060006009600a611e2a91906147d8565b633b9aca00611e399190614823565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e849190614823565b611e8e9190614a0c565b905081816003549450945094505050909192565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9061433f565b60405180910390fd5b611fc081612e48565b50565b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ffd919061435f565b602060405180830381865afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e919061438f565b101561207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614a89565b60405180910390fd5b8173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120cd919061435f565b602060405180830381865afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e919061438f565b101561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690614af5565b60405180910390fd5b6121598484613154565b61217773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883613154565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156121a857600090505b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663e8e3370073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4887868860008088426040518963ffffffff1660e01b8152600401612218989796959493929190614b5a565b6060604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190614bd8565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122cf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230590614c77565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ec9190614052565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124635750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614c77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614ce3565b60405180910390fd5b61252f838383613433565b61256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614d4f565b60405180910390fd5b600a5442116125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990614dbb565b60405180910390fd5b600a54421180156125c45750600c5442105b80156125cf5750483a115b15612633576000483a6125e291906148d1565b905060006402540be4009050808210612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790614dbb565b60405180910390fd5b50505b600d60009054906101000a900460ff1615801561269a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126ef5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126fd576126fc6128a9565b5b600080600061270d868686613671565b9250925092506000818385612722919061452e565b61272c919061452e565b905084600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461277d91906148d1565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d3919061452e565b9250508190555080856127e691906148d1565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612834919061452e565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516128989190614052565b60405180910390a350505050505050565b6001600d60006101000a81548160ff02191690831515021790555060006128ce613860565b905060008060006128dd612ec2565b92509250925060008183856128f29190614ddb565b6128fc9190614ddb565b90506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008260ff161180156129555750858110155b15612c745785905060008260ff168660ff16836129729190614823565b61297c9190614a0c565b9050600060028460ff168760ff16856129959190614823565b61299f9190614a0c565b6129a99190614a0c565b905060008460ff168660ff16856129c09190614823565b6129ca9190614a0c565b905060008282856129db919061452e565b6129e5919061452e565b90506009600a6129f591906147d8565b8110612c6f576000612a1e3073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48846001613a56565b90506000828583612a2f9190614823565b612a399190614a0c565b905060006002848885612a4c9190614823565b612a569190614a0c565b612a609190614a0c565b90506000848685612a719190614823565b612a7b9190614a0c565b905060008c60ff161115612a9757612a963088856001611fc3565b5b60008d60ff161115612aff576000612ada73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873c5fb36dd2fb59d3b98deff88425a3f425ee469ed856000613a56565b9050612afd73c5fb36dd2fb59d3b98deff88425a3f425ee469ed82856001611fc3565b505b60008b60ff161115612c6a57600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5a919061435f565b602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b919061438f565b905080821115612ba9578091505b6000821115612c685773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612c2392919061463a565b6020604051808303816000875af1158015612c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c669190614678565b505b505b505050505b505050505b5050505050506000600d60006101000a81548160ff021916908315150217905550565b60006009600a612ca791906147d8565b600a612cb39190614823565b6103e88461ffff166009600a612cc991906147d8565b633b9aca00612cd89190614823565b612ce29190614823565b612cec9190614a0c565b612cf6919061452e565b905060006009600a612d0891906147d8565b600a612d149190614823565b6103e88461ffff166009600a612d2a91906147d8565b633b9aca00612d399190614823565b612d439190614823565b612d4d9190614a0c565b612d57919061452e565b90506004548210158015612d6d57506005548110155b612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614e5c565b60405180910390fd5b6009600a612dba91906147d8565b633b9aca00612dc99190614823565b821115612df0576009600a612dde91906147d8565b633b9aca00612ded9190614823565b91505b6009600a612dfe91906147d8565b633b9aca00612e0d9190614823565b811115612e34576009600a612e2291906147d8565b633b9aca00612e319190614823565b90505b816004819055508060058190555050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612eb7919061435f565b60405180910390a150565b6000806000806000806000612ed5612f6b565b9050627a1200811015612ef357600293506002925060029150612f59565b627a12008110158015612f08575062f4240081105b15612f1e57600293506000925060029150612f58565b62f424008110158015612f3457506305f5e10081105b15612f4a57600293506000925060009150612f57565b6000935060009250600091505b5b5b83838396509650965050505050909192565b600080600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314d57600060016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060007f0000000000000000000000000000000000000000000000000000000000000000600a61305991906147d8565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016130c8919061435f565b602060405180830381865afa1580156130e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613109919061438f565b6131139190614a0c565b9050816009600a61312491906147d8565b633b9aca006131339190614823565b8261313e9190614823565b6131489190614a0c565b925050505b8091505090565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132df57600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808211156132da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61342e565b8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b815260040161332e9291906144d6565b602060405180830381865afa15801561334b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336f919061438f565b90508082111561342d578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016133e892919061463a565b6020604051808303816000875af1158015613407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342b9190614678565b505b5b505050565b60008060019050600454831180156134955750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134eb5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134f557600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613548919061452e565b9050600554811180156135a55750600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135fb5750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136515750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561365b57600091505b8280156136655750815b93505050509392505050565b600080600080600080600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561371d5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806137c75750600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137c65750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561383e5760008060006137d9612ec2565b92509250925060648360ff168b6137f09190614823565b6137fa9190614a0c565b955060648260ff168b61380d9190614823565b6138179190614a0c565b945060648160ff168b61382a9190614823565b6138349190614a0c565b935050505061384b565b6000925060009150600090505b82828295509550955050505093509350939050565b600080600267ffffffffffffffff81111561387e5761387d614e7c565b5b6040519080825280602002602001820160405280156138ac5781602001602082028036833780820191505090505b50905030816000815181106138c4576138c3614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061392757613926614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16631f00ca747f0000000000000000000000000000000000000000000000000000000000000000600a6139c091906147d8565b6003546139cd9190614823565b846040518363ffffffff1660e01b81526004016139eb929190614f98565b600060405180830381865afa158015613a08573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a3191906150e1565b905080600081518110613a4757613a46614eab565b5b60200260200101519250505090565b6000803090506000806001151585151503613a93577f00000000000000000000000000000000000000000000000000000000000000009250613b10565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613acc919061435f565b602060405180830381865afa158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d919061438f565b91505b613b1a8887613154565b6000600267ffffffffffffffff811115613b3757613b36614e7c565b5b604051908082528060200260200182016040528015613b655781602001602082028036833780820191505090505b5090508881600081518110613b7d57613b7c614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508781600181518110613bcc57613bcb614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7958860008488426040518663ffffffff1660e01b8152600401613c5c95949392919061512a565b600060405180830381600087803b158015613c7657600080fd5b505af1158015613c8a573d6000803e3d6000fd5b505050506001151586151503613d3d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636433bbd7896040518263ffffffff1660e01b8152600401613cf3919061435f565b6020604051808303816000875af1158015613d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d36919061438f565b9150613dcb565b60008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d78919061435f565b602060405180830381865afa158015613d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db9919061438f565b90508381613dc791906148d1565b9250505b81945050505050949350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e14578082015181840152602081019050613df9565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3c82613dda565b613e468185613de5565b9350613e56818560208601613df6565b613e5f81613e20565b840191505092915050565b60006020820190508181036000830152613e848184613e31565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ecb82613ea0565b9050919050565b613edb81613ec0565b8114613ee657600080fd5b50565b600081359050613ef881613ed2565b92915050565b6000819050919050565b613f1181613efe565b8114613f1c57600080fd5b50565b600081359050613f2e81613f08565b92915050565b60008060408385031215613f4b57613f4a613e96565b5b6000613f5985828601613ee9565b9250506020613f6a85828601613f1f565b9150509250929050565b60008115159050919050565b613f8981613f74565b82525050565b6000602082019050613fa46000830184613f80565b92915050565b613fb381613f74565b8114613fbe57600080fd5b50565b600081359050613fd081613faa565b92915050565b60008060408385031215613fed57613fec613e96565b5b6000613ffb85828601613ee9565b925050602061400c85828601613fc1565b9150509250929050565b60006020828403121561402c5761402b613e96565b5b600061403a84828501613ee9565b91505092915050565b61404c81613efe565b82525050565b60006020820190506140676000830184614043565b92915050565b60008060006060848603121561408657614085613e96565b5b600061409486828701613ee9565b93505060206140a586828701613ee9565b92505060406140b686828701613f1f565b9150509250925092565b600060ff82169050919050565b6140d6816140c0565b82525050565b60006020820190506140f160008301846140cd565b92915050565b60006020828403121561410d5761410c613e96565b5b600061411b84828501613f1f565b91505092915050565b600061ffff82169050919050565b61413b81614124565b811461414657600080fd5b50565b60008135905061415881614132565b92915050565b6000806040838503121561417557614174613e96565b5b600061418385828601614149565b925050602061419485828601614149565b9150509250929050565b60006040820190506141b36000830185614043565b6141c06020830184614043565b9392505050565b60006060820190506141dc60008301866140cd565b6141e960208301856140cd565b6141f660408301846140cd565b949350505050565b61420781613ec0565b82525050565b600060e082019050614222600083018a6141fe565b61422f60208301896141fe565b61423c60408301886141fe565b61424960608301876141fe565b61425660808301866141fe565b61426360a08301856141fe565b61427060c08301846141fe565b98975050505050505050565b60006060820190506142916000830186614043565b61429e6020830185614043565b6142ab6040830184614043565b949350505050565b600080604083850312156142ca576142c9613e96565b5b60006142d885828601613ee9565b92505060206142e985828601613ee9565b9150509250929050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000614329600d83613de5565b9150614334826142f3565b602082019050919050565b600060208201905081810360008301526143588161431c565b9050919050565b600060208201905061437460008301846141fe565b92915050565b60008151905061438981613f08565b92915050565b6000602082840312156143a5576143a4613e96565b5b60006143b38482850161437a565b91505092915050565b7f555344432076616c7565207a65726f0000000000000000000000000000000000600082015250565b60006143f2600f83613de5565b91506143fd826143bc565b602082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b600061445e600983613de5565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b6000815190506144a381613ed2565b92915050565b6000602082840312156144bf576144be613e96565b5b60006144cd84828501614494565b91505092915050565b60006040820190506144eb60008301856141fe565b6144f860208301846141fe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061453982613efe565b915061454483613efe565b925082820190508082111561455c5761455b6144ff565b5b92915050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b6000614598601383613de5565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000614604600b83613de5565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b600060408201905061464f60008301856141fe565b61465c6020830184614043565b9392505050565b60008151905061467281613faa565b92915050565b60006020828403121561468e5761468d613e96565b5b600061469c84828501614663565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156146fc578086048111156146d8576146d76144ff565b5b60018516156146e75780820291505b80810290506146f5856146a5565b94506146bc565b94509492505050565b60008261471557600190506147d1565b8161472357600090506147d1565b8160018114614739576002811461474357614772565b60019150506147d1565b60ff841115614755576147546144ff565b5b8360020a91508482111561476c5761476b6144ff565b5b506147d1565b5060208310610133831016604e8410600b84101617156147a75782820a9050838111156147a2576147a16144ff565b5b6147d1565b6147b484848460016146b2565b925090508184048111156147cb576147ca6144ff565b5b81810290505b9392505050565b60006147e382613efe565b91506147ee836140c0565b925061481b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614705565b905092915050565b600061482e82613efe565b915061483983613efe565b925082820261484781613efe565b9150828204841483151761485e5761485d6144ff565b5b5092915050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b600061489b601f83613de5565b91506148a682614865565b602082019050919050565b600060208201905081810360008301526148ca8161488e565b9050919050565b60006148dc82613efe565b91506148e783613efe565b92508282039050818111156148ff576148fe6144ff565b5b92915050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b600061493b600b83613de5565b915061494682614905565b602082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f5468726573686f6c642063616e6e6f7420626520300000000000000000000000600082015250565b60006149a7601583613de5565b91506149b282614971565b602082019050919050565b600060208201905081810360008301526149d68161499a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a1782613efe565b9150614a2283613efe565b925082614a3257614a316149dd565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000614a73601183613de5565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f4e6f7420656e6f75676820555344430000000000000000000000000000000000600082015250565b6000614adf600f83613de5565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000819050919050565b6000614b44614b3f614b3a84614b15565b614b1f565b613efe565b9050919050565b614b5481614b29565b82525050565b600061010082019050614b70600083018b6141fe565b614b7d602083018a6141fe565b614b8a6040830189614043565b614b976060830188614043565b614ba46080830187614b4b565b614bb160a0830186614b4b565b614bbe60c08301856141fe565b614bcb60e0830184614043565b9998505050505050505050565b600080600060608486031215614bf157614bf0613e96565b5b6000614bff8682870161437a565b9350506020614c108682870161437a565b9250506040614c218682870161437a565b9150509250925092565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b6000614c61601383613de5565b9150614c6c82614c2b565b602082019050919050565b60006020820190508181036000830152614c9081614c54565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614ccd601d83613de5565b9150614cd882614c97565b602082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b6000614d39600f83613de5565b9150614d4482614d03565b602082019050919050565b60006020820190508181036000830152614d6881614d2c565b9050919050565b7f4e6f7420656e61626c6564000000000000000000000000000000000000000000600082015250565b6000614da5600b83613de5565b9150614db082614d6f565b602082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b6000614de6826140c0565b9150614df1836140c0565b9250828201905060ff811115614e0a57614e096144ff565b5b92915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b6000614e46601683613de5565b9150614e5182614e10565b602082019050919050565b60006020820190508181036000830152614e7581614e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f0f81613ec0565b82525050565b6000614f218383614f06565b60208301905092915050565b6000602082019050919050565b6000614f4582614eda565b614f4f8185614ee5565b9350614f5a83614ef6565b8060005b83811015614f8b578151614f728882614f15565b9750614f7d83614f2d565b925050600181019050614f5e565b5085935050505092915050565b6000604082019050614fad6000830185614043565b8181036020830152614fbf8184614f3a565b90509392505050565b600080fd5b614fd682613e20565b810181811067ffffffffffffffff82111715614ff557614ff4614e7c565b5b80604052505050565b6000615008613e8c565b90506150148282614fcd565b919050565b600067ffffffffffffffff82111561503457615033614e7c565b5b602082029050602081019050919050565b600080fd5b600061505d61505884615019565b614ffe565b905080838252602082019050602084028301858111156150805761507f615045565b5b835b818110156150a95780615095888261437a565b845260208401935050602081019050615082565b5050509392505050565b600082601f8301126150c8576150c7614fc8565b5b81516150d884826020860161504a565b91505092915050565b6000602082840312156150f7576150f6613e96565b5b600082015167ffffffffffffffff81111561511557615114613e9b565b5b615121848285016150b3565b91505092915050565b600060a08201905061513f6000830188614043565b61514c6020830187614b4b565b818103604083015261515e8186614f3a565b905061516d60608301856141fe565b61517a6080830184614043565b969550505050505056fea26469706673582212205f9c1051719f8d67a4dff62439e54b2883d7278a8c093d6f5506f43eed871aac64736f6c6343000811003360a060405234801561001057600080fd5b503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506080516104d961006660003960008181608d015261022d01526104d96000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636433bbd71461003b5780638da5cb5b1461006b575b600080fd5b610055600480360381019061005091906102b4565b610089565b60405161006291906102fa565b60405180910390f35b610073610229565b6040516100809190610324565b60405180910390f35b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101109061039c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101549190610324565b602060405180830381865afa158015610171573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019591906103e8565b90506000811115610220578273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016101db929190610415565b6020604051808303816000875af11580156101fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021e9190610476565b505b80915050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061028182610256565b9050919050565b61029181610276565b811461029c57600080fd5b50565b6000813590506102ae81610288565b92915050565b6000602082840312156102ca576102c9610251565b5b60006102d88482850161029f565b91505092915050565b6000819050919050565b6102f4816102e1565b82525050565b600060208201905061030f60008301846102eb565b92915050565b61031e81610276565b82525050565b60006020820190506103396000830184610315565b92915050565b600082825260208201905092915050565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b6000610386600e8361033f565b915061039182610350565b602082019050919050565b600060208201905081810360008301526103b581610379565b9050919050565b6103c5816102e1565b81146103d057600080fd5b50565b6000815190506103e2816103bc565b92915050565b6000602082840312156103fe576103fd610251565b5b600061040c848285016103d3565b91505092915050565b600060408201905061042a6000830185610315565b61043760208301846102eb565b9392505050565b60008115159050919050565b6104538161043e565b811461045e57600080fd5b50565b6000815190506104708161044a565b92915050565b60006020828403121561048c5761048b610251565b5b600061049a84828501610461565b9150509291505056fea2646970667358221220d2b7fa5525b55915758842676b46bf86e35541768c02d092c1fa47dd7b7ed81a64736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610440578063d80528ae14610470578063dd62ed3e14610490578063f2fde38b146104c05761018e565b8063a9059cbb146103d0578063c1eb6dfd14610400578063cb711595146104245761018e565b8063715018a61461031d5780637df0f76714610327578063860aefcf1461035757806395d89b4114610376578063960bfe041461039457806399c8d556146103b05761018e565b806323b872dd1161014b57806342966c681161012557806342966c68146102ab57806351bc3c85146102c75780635c07c993146102d157806370a08231146102ed5761018e565b806323b872dd146102415780632836be2414610271578063313ce5671461028d5761018e565b80630210a83d1461019357806306fdde031461019d578063095ea7b3146101bb5780630a6a52b9146101eb57806316114acd1461020757806318160ddd14610223575b600080fd5b61019b6104dc565b005b6101a561099e565b6040516101b29190613e6a565b60405180910390f35b6101d560048036038101906101d09190613f34565b6109db565b6040516101e29190613f8f565b60405180910390f35b61020560048036038101906102009190613fd6565b610a73565b005b610221600480360381019061021c9190614016565b610e4a565b005b61022b611047565b6040516102389190614052565b60405180910390f35b61025b6004803603810190610256919061406d565b61106b565b6040516102689190613f8f565b60405180910390f35b61028b60048036038101906102869190613fd6565b6111d5565b005b610295611517565b6040516102a291906140dc565b60405180910390f35b6102c560048036038101906102c091906140f7565b611520565b005b6102cf6116b7565b005b6102eb60048036038101906102e6919061415e565b61174f565b005b61030760048036038101906103029190614016565b6117eb565b6040516103149190614052565b60405180910390f35b610325611834565b005b610341600480360381019061033c9190614016565b6118ce565b60405161034e9190613f8f565b60405180910390f35b61035f611924565b60405161036d92919061419e565b60405180910390f35b61037e611935565b60405161038b9190613e6a565b60405180910390f35b6103ae60048036038101906103a991906140f7565b611972565b005b6103b8611a4d565b6040516103c7939291906141c7565b60405180910390f35b6103ea60048036038101906103e59190613f34565b611a75565b6040516103f79190613f8f565b60405180910390f35b610408611a8c565b60405161041b979695949392919061420d565b60405180910390f35b61043e60048036038101906104399190614016565b611b76565b005b61045a60048036038101906104559190614016565b611db4565b6040516104679190613f8f565b60405180910390f35b610478611e0a565b6040516104879392919061427c565b60405180910390f35b6104aa60048036038101906104a591906142b3565b611ea2565b6040516104b79190614052565b60405180910390f35b6104da60048036038101906104d59190614016565b611f29565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105619061433f565b60405180910390fd5b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105b9919061435f565b602060405180830381865afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa919061438f565b1161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290614474565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e91906144a9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b815260040161079c9291906144d6565b6020604051808303816000875af11580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906144a9565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061097230600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161092a919061435f565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b919061438f565b6000611fc3565b600b5442610980919061452e565b600a8190555061012c600a54610996919061452e565b600c81905550565b60606040518060400160405280601781526020017f50726f746563746f7273206f6620746865207265616c6d000000000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906145ae565b60405180910390fd5b610a69338484612265565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158190610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc29190613e6a565b60405180910390fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c579190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca9190613e6a565b60405180910390fd5b507f0000000000000000000000007e16065f15ec926e355904a620d95190bd8341f773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49190613e6a565b60405180910390fd5b5081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf9061433f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d9061461a565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f81919061435f565b602060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc2919061438f565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fff92919061463a565b6020604051808303816000875af115801561101e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110429190614678565b505050565b60006009600a61105791906147d8565b633b9aca006110669190614823565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561112c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611123906148b1565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111b891906148d1565b925050819055506111ca8484846123f9565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615819061132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906113a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113979190613e6a565b60405180910390fd5b507f0000000000000000000000007e16065f15ec926e355904a620d95190bd8341f773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19190613e6a565b60405180910390fd5b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009905090565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990614951565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f191906148d1565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611647919061452e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116ac9190614052565b60405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c9061433f565b60405180910390fd5b61174d6128a9565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d49061433f565b60405180910390fd5b6117e78282612c97565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b99061433f565b60405180910390fd5b6118cc6000612e48565b565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600454600554915091509091565b60606040518060400160405280600481526020017f5765523100000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f79061433f565b60405180910390fd5b60008111611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906149bd565b60405180910390fd5b8060038190555050565b600080600080600080611a5e612ec2565b925092509250828282955095509550505050909192565b6000611a823384846123f9565b6001905092915050565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000007e16065f15ec926e355904a620d95190bd8341f7600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c5fb36dd2fb59d3b98deff88425a3f425ee469ed73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48737a250d5630b4cf539739df2c5dacb4c659f2488d600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16965096509650965096509650965090919293949596565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061433f565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c9e5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611d1857600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080611e18612f6b565b905060006009600a611e2a91906147d8565b633b9aca00611e399190614823565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e849190614823565b611e8e9190614a0c565b905081816003549450945094505050909192565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9061433f565b60405180910390fd5b611fc081612e48565b50565b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ffd919061435f565b602060405180830381865afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e919061438f565b101561207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614a89565b60405180910390fd5b8173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120cd919061435f565b602060405180830381865afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e919061438f565b101561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690614af5565b60405180910390fd5b6121598484613154565b61217773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883613154565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156121a857600090505b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663e8e3370073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4887868860008088426040518963ffffffff1660e01b8152600401612218989796959493929190614b5a565b6060604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190614bd8565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122cf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230590614c77565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ec9190614052565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124635750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614c77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614ce3565b60405180910390fd5b61252f838383613433565b61256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614d4f565b60405180910390fd5b600a5442116125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990614dbb565b60405180910390fd5b600a54421180156125c45750600c5442105b80156125cf5750483a115b15612633576000483a6125e291906148d1565b905060006402540be4009050808210612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790614dbb565b60405180910390fd5b50505b600d60009054906101000a900460ff1615801561269a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126ef5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126fd576126fc6128a9565b5b600080600061270d868686613671565b9250925092506000818385612722919061452e565b61272c919061452e565b905084600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461277d91906148d1565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d3919061452e565b9250508190555080856127e691906148d1565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612834919061452e565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516128989190614052565b60405180910390a350505050505050565b6001600d60006101000a81548160ff02191690831515021790555060006128ce613860565b905060008060006128dd612ec2565b92509250925060008183856128f29190614ddb565b6128fc9190614ddb565b90506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008260ff161180156129555750858110155b15612c745785905060008260ff168660ff16836129729190614823565b61297c9190614a0c565b9050600060028460ff168760ff16856129959190614823565b61299f9190614a0c565b6129a99190614a0c565b905060008460ff168660ff16856129c09190614823565b6129ca9190614a0c565b905060008282856129db919061452e565b6129e5919061452e565b90506009600a6129f591906147d8565b8110612c6f576000612a1e3073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48846001613a56565b90506000828583612a2f9190614823565b612a399190614a0c565b905060006002848885612a4c9190614823565b612a569190614a0c565b612a609190614a0c565b90506000848685612a719190614823565b612a7b9190614a0c565b905060008c60ff161115612a9757612a963088856001611fc3565b5b60008d60ff161115612aff576000612ada73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873c5fb36dd2fb59d3b98deff88425a3f425ee469ed856000613a56565b9050612afd73c5fb36dd2fb59d3b98deff88425a3f425ee469ed82856001611fc3565b505b60008b60ff161115612c6a57600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5a919061435f565b602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b919061438f565b905080821115612ba9578091505b6000821115612c685773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612c2392919061463a565b6020604051808303816000875af1158015612c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c669190614678565b505b505b505050505b505050505b5050505050506000600d60006101000a81548160ff021916908315150217905550565b60006009600a612ca791906147d8565b600a612cb39190614823565b6103e88461ffff166009600a612cc991906147d8565b633b9aca00612cd89190614823565b612ce29190614823565b612cec9190614a0c565b612cf6919061452e565b905060006009600a612d0891906147d8565b600a612d149190614823565b6103e88461ffff166009600a612d2a91906147d8565b633b9aca00612d399190614823565b612d439190614823565b612d4d9190614a0c565b612d57919061452e565b90506004548210158015612d6d57506005548110155b612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614e5c565b60405180910390fd5b6009600a612dba91906147d8565b633b9aca00612dc99190614823565b821115612df0576009600a612dde91906147d8565b633b9aca00612ded9190614823565b91505b6009600a612dfe91906147d8565b633b9aca00612e0d9190614823565b811115612e34576009600a612e2291906147d8565b633b9aca00612e319190614823565b90505b816004819055508060058190555050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612eb7919061435f565b60405180910390a150565b6000806000806000806000612ed5612f6b565b9050627a1200811015612ef357600293506002925060029150612f59565b627a12008110158015612f08575062f4240081105b15612f1e57600293506000925060029150612f58565b62f424008110158015612f3457506305f5e10081105b15612f4a57600293506000925060009150612f57565b6000935060009250600091505b5b5b83838396509650965050505050909192565b600080600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314d57600060016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060007f0000000000000000000000000000000000000000000000000000000000000006600a61305991906147d8565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016130c8919061435f565b602060405180830381865afa1580156130e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613109919061438f565b6131139190614a0c565b9050816009600a61312491906147d8565b633b9aca006131339190614823565b8261313e9190614823565b6131489190614a0c565b925050505b8091505090565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132df57600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808211156132da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61342e565b8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b815260040161332e9291906144d6565b602060405180830381865afa15801561334b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336f919061438f565b90508082111561342d578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016133e892919061463a565b6020604051808303816000875af1158015613407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342b9190614678565b505b5b505050565b60008060019050600454831180156134955750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134eb5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134f557600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613548919061452e565b9050600554811180156135a55750600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135fb5750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136515750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561365b57600091505b8280156136655750815b93505050509392505050565b600080600080600080600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561371d5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806137c75750600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137c65750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561383e5760008060006137d9612ec2565b92509250925060648360ff168b6137f09190614823565b6137fa9190614a0c565b955060648260ff168b61380d9190614823565b6138179190614a0c565b945060648160ff168b61382a9190614823565b6138349190614a0c565b935050505061384b565b6000925060009150600090505b82828295509550955050505093509350939050565b600080600267ffffffffffffffff81111561387e5761387d614e7c565b5b6040519080825280602002602001820160405280156138ac5781602001602082028036833780820191505090505b50905030816000815181106138c4576138c3614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061392757613926614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16631f00ca747f0000000000000000000000000000000000000000000000000000000000000006600a6139c091906147d8565b6003546139cd9190614823565b846040518363ffffffff1660e01b81526004016139eb929190614f98565b600060405180830381865afa158015613a08573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a3191906150e1565b905080600081518110613a4757613a46614eab565b5b60200260200101519250505090565b6000803090506000806001151585151503613a93577f0000000000000000000000007e16065f15ec926e355904a620d95190bd8341f79250613b10565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613acc919061435f565b602060405180830381865afa158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d919061438f565b91505b613b1a8887613154565b6000600267ffffffffffffffff811115613b3757613b36614e7c565b5b604051908082528060200260200182016040528015613b655781602001602082028036833780820191505090505b5090508881600081518110613b7d57613b7c614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508781600181518110613bcc57613bcb614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7958860008488426040518663ffffffff1660e01b8152600401613c5c95949392919061512a565b600060405180830381600087803b158015613c7657600080fd5b505af1158015613c8a573d6000803e3d6000fd5b505050506001151586151503613d3d577f0000000000000000000000007e16065f15ec926e355904a620d95190bd8341f773ffffffffffffffffffffffffffffffffffffffff16636433bbd7896040518263ffffffff1660e01b8152600401613cf3919061435f565b6020604051808303816000875af1158015613d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d36919061438f565b9150613dcb565b60008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d78919061435f565b602060405180830381865afa158015613d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db9919061438f565b90508381613dc791906148d1565b9250505b81945050505050949350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e14578082015181840152602081019050613df9565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3c82613dda565b613e468185613de5565b9350613e56818560208601613df6565b613e5f81613e20565b840191505092915050565b60006020820190508181036000830152613e848184613e31565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ecb82613ea0565b9050919050565b613edb81613ec0565b8114613ee657600080fd5b50565b600081359050613ef881613ed2565b92915050565b6000819050919050565b613f1181613efe565b8114613f1c57600080fd5b50565b600081359050613f2e81613f08565b92915050565b60008060408385031215613f4b57613f4a613e96565b5b6000613f5985828601613ee9565b9250506020613f6a85828601613f1f565b9150509250929050565b60008115159050919050565b613f8981613f74565b82525050565b6000602082019050613fa46000830184613f80565b92915050565b613fb381613f74565b8114613fbe57600080fd5b50565b600081359050613fd081613faa565b92915050565b60008060408385031215613fed57613fec613e96565b5b6000613ffb85828601613ee9565b925050602061400c85828601613fc1565b9150509250929050565b60006020828403121561402c5761402b613e96565b5b600061403a84828501613ee9565b91505092915050565b61404c81613efe565b82525050565b60006020820190506140676000830184614043565b92915050565b60008060006060848603121561408657614085613e96565b5b600061409486828701613ee9565b93505060206140a586828701613ee9565b92505060406140b686828701613f1f565b9150509250925092565b600060ff82169050919050565b6140d6816140c0565b82525050565b60006020820190506140f160008301846140cd565b92915050565b60006020828403121561410d5761410c613e96565b5b600061411b84828501613f1f565b91505092915050565b600061ffff82169050919050565b61413b81614124565b811461414657600080fd5b50565b60008135905061415881614132565b92915050565b6000806040838503121561417557614174613e96565b5b600061418385828601614149565b925050602061419485828601614149565b9150509250929050565b60006040820190506141b36000830185614043565b6141c06020830184614043565b9392505050565b60006060820190506141dc60008301866140cd565b6141e960208301856140cd565b6141f660408301846140cd565b949350505050565b61420781613ec0565b82525050565b600060e082019050614222600083018a6141fe565b61422f60208301896141fe565b61423c60408301886141fe565b61424960608301876141fe565b61425660808301866141fe565b61426360a08301856141fe565b61427060c08301846141fe565b98975050505050505050565b60006060820190506142916000830186614043565b61429e6020830185614043565b6142ab6040830184614043565b949350505050565b600080604083850312156142ca576142c9613e96565b5b60006142d885828601613ee9565b92505060206142e985828601613ee9565b9150509250929050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000614329600d83613de5565b9150614334826142f3565b602082019050919050565b600060208201905081810360008301526143588161431c565b9050919050565b600060208201905061437460008301846141fe565b92915050565b60008151905061438981613f08565b92915050565b6000602082840312156143a5576143a4613e96565b5b60006143b38482850161437a565b91505092915050565b7f555344432076616c7565207a65726f0000000000000000000000000000000000600082015250565b60006143f2600f83613de5565b91506143fd826143bc565b602082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b600061445e600983613de5565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b6000815190506144a381613ed2565b92915050565b6000602082840312156144bf576144be613e96565b5b60006144cd84828501614494565b91505092915050565b60006040820190506144eb60008301856141fe565b6144f860208301846141fe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061453982613efe565b915061454483613efe565b925082820190508082111561455c5761455b6144ff565b5b92915050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b6000614598601383613de5565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000614604600b83613de5565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b600060408201905061464f60008301856141fe565b61465c6020830184614043565b9392505050565b60008151905061467281613faa565b92915050565b60006020828403121561468e5761468d613e96565b5b600061469c84828501614663565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156146fc578086048111156146d8576146d76144ff565b5b60018516156146e75780820291505b80810290506146f5856146a5565b94506146bc565b94509492505050565b60008261471557600190506147d1565b8161472357600090506147d1565b8160018114614739576002811461474357614772565b60019150506147d1565b60ff841115614755576147546144ff565b5b8360020a91508482111561476c5761476b6144ff565b5b506147d1565b5060208310610133831016604e8410600b84101617156147a75782820a9050838111156147a2576147a16144ff565b5b6147d1565b6147b484848460016146b2565b925090508184048111156147cb576147ca6144ff565b5b81810290505b9392505050565b60006147e382613efe565b91506147ee836140c0565b925061481b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614705565b905092915050565b600061482e82613efe565b915061483983613efe565b925082820261484781613efe565b9150828204841483151761485e5761485d6144ff565b5b5092915050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b600061489b601f83613de5565b91506148a682614865565b602082019050919050565b600060208201905081810360008301526148ca8161488e565b9050919050565b60006148dc82613efe565b91506148e783613efe565b92508282039050818111156148ff576148fe6144ff565b5b92915050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b600061493b600b83613de5565b915061494682614905565b602082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f5468726573686f6c642063616e6e6f7420626520300000000000000000000000600082015250565b60006149a7601583613de5565b91506149b282614971565b602082019050919050565b600060208201905081810360008301526149d68161499a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a1782613efe565b9150614a2283613efe565b925082614a3257614a316149dd565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000614a73601183613de5565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f4e6f7420656e6f75676820555344430000000000000000000000000000000000600082015250565b6000614adf600f83613de5565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000819050919050565b6000614b44614b3f614b3a84614b15565b614b1f565b613efe565b9050919050565b614b5481614b29565b82525050565b600061010082019050614b70600083018b6141fe565b614b7d602083018a6141fe565b614b8a6040830189614043565b614b976060830188614043565b614ba46080830187614b4b565b614bb160a0830186614b4b565b614bbe60c08301856141fe565b614bcb60e0830184614043565b9998505050505050505050565b600080600060608486031215614bf157614bf0613e96565b5b6000614bff8682870161437a565b9350506020614c108682870161437a565b9250506040614c218682870161437a565b9150509250925092565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b6000614c61601383613de5565b9150614c6c82614c2b565b602082019050919050565b60006020820190508181036000830152614c9081614c54565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614ccd601d83613de5565b9150614cd882614c97565b602082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b6000614d39600f83613de5565b9150614d4482614d03565b602082019050919050565b60006020820190508181036000830152614d6881614d2c565b9050919050565b7f4e6f7420656e61626c6564000000000000000000000000000000000000000000600082015250565b6000614da5600b83613de5565b9150614db082614d6f565b602082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b6000614de6826140c0565b9150614df1836140c0565b9250828201905060ff811115614e0a57614e096144ff565b5b92915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b6000614e46601683613de5565b9150614e5182614e10565b602082019050919050565b60006020820190508181036000830152614e7581614e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f0f81613ec0565b82525050565b6000614f218383614f06565b60208301905092915050565b6000602082019050919050565b6000614f4582614eda565b614f4f8185614ee5565b9350614f5a83614ef6565b8060005b83811015614f8b578151614f728882614f15565b9750614f7d83614f2d565b925050600181019050614f5e565b5085935050505092915050565b6000604082019050614fad6000830185614043565b8181036020830152614fbf8184614f3a565b90509392505050565b600080fd5b614fd682613e20565b810181811067ffffffffffffffff82111715614ff557614ff4614e7c565b5b80604052505050565b6000615008613e8c565b90506150148282614fcd565b919050565b600067ffffffffffffffff82111561503457615033614e7c565b5b602082029050602081019050919050565b600080fd5b600061505d61505884615019565b614ffe565b905080838252602082019050602084028301858111156150805761507f615045565b5b835b818110156150a95780615095888261437a565b845260208401935050602081019050615082565b5050509392505050565b600082601f8301126150c8576150c7614fc8565b5b81516150d884826020860161504a565b91505092915050565b6000602082840312156150f7576150f6613e96565b5b600082015167ffffffffffffffff81111561511557615114613e9b565b5b615121848285016150b3565b91505092915050565b600060a08201905061513f6000830188614043565b61514c6020830187614b4b565b818103604083015261515e8186614f3a565b905061516d60608301856141fe565b61517a6080830184614043565b969550505050505056fea26469706673582212205f9c1051719f8d67a4dff62439e54b2883d7278a8c093d6f5506f43eed871aac64736f6c63430008110033

Deployed Bytecode Sourcemap

2806:16033:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10779:477;;;:::i;:::-;;5772:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6099:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18306:451;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17235:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5511:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7446:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17547:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5602:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18077:226;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17479:65;;;:::i;:::-;;12845:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5855:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2024:83;;;:::i;:::-;;18760:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12627:116;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5685:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17924:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12398:226;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7316:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5234:272;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;13608:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12746:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12088:305;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5965:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2110:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10779:477;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10881:1:::1;4023:42;10842:23;;;10874:4;10842:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;10834:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10937:1;10915:24;;:10;;;;;;;;;;;:24;;;10907:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4226:42;10989:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10971:51;;;11031:4;4023:42;10971:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10958:10;;:86;;;;;;;;;;;;;;;;;;11069:4;11049:5;:17;11055:10;;;;;;;;;;;11049:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;11078:101;11100:4;11107:9;:24;11125:4;11107:24;;;;;;;;;;;;;;;;4023:42;11133:23;;;11165:4;11133:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11173:5;11078:13;:101::i;:::-;11212:8;;11194:15;:26;;;;:::i;:::-;11184:7;:36;;;;11248:3;11238:7;;:13;;;;:::i;:::-;11225:10;:26;;;;10779:477::o:0;5772:80::-;5820:13;5844:5;;;;;;;;;;;;;;;;;5837:12;;5772:80;:::o;6099:205::-;6174:4;6217:1;6193:9;:21;6203:10;6193:21;;;;;;;;;;;;;;;;:25;6185:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6246:37;6255:10;6267:7;6276:6;6246:8;:37::i;:::-;6295:4;6288:11;;6099:205;;;;:::o;18306:451::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;18390:29:::1;:45;;;;;;;;;;;;;;;;::::0;::::1;;18449:9;:20;18459:9;18449:20;;;;;;;;;;;;;;;;;;;;;;;;;18448:21;18471:15;18440:47;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18513:10;;;;;;;;;;;18500:23;;:9;:23;;;;18525:15;18492:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18575:4;18554:26;;:9;:26;;;;18582:15;18546:52;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18624:15;18611:28;;:9;:28;;;;18641:15;18603:54;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4226:42;18670:31;;:9;:31;;;;18703:15;18662:57;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18743:9;18724:5;:16;18730:9;18724:16;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18385:372;18306:451:::0;;:::o;17235:239::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17326:4:::1;17307:24;;:7;:24;;::::0;17299:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17351:20;17381:7;17374:25;;;17408:4;17374:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17351:63;;17426:7;17419:24;;;17444:10;17456:12;17419:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17294:180;17235:239:::0;:::o;5511:88::-;5566:7;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;5577:19;;5511:88;:::o;7446:270::-;7526:4;7578:6;7545:11;:17;7557:4;7545:17;;;;;;;;;;;;;;;:29;7563:10;7545:29;;;;;;;;;;;;;;;;:39;;7537:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7657:6;7624:11;:17;7636:4;7624:17;;;;;;;;;;;;;;;:29;7642:10;7624:29;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;7668:27;7678:4;7684:2;7688:6;7668:9;:27::i;:::-;7707:4;7700:11;;7446:270;;;;;:::o;17547:374::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17623:29:::1;:45;;;;;;;;;;;;;;;;::::0;::::1;;17682:5;:13;17688:6;17682:13;;;;;;;;;;;;;;;;;;;;;;;;;17681:14;17697:15;17673:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17744:4;17726:23;;:6;:23;;;;17751:15;17718:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17790:15;17780:25;;:6;:25;;;;17807:15;17772:51;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4226:42;17836:28;;:6;:28;;;;17866:15;17828:54;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17908:7;17888:9;:17;17898:6;17888:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17617:304;17547:374:::0;;:::o;5602:80::-;5654:5;2996:1;5663:16;;5602:80;:::o;18077:226::-;18154:6;18129:9;:21;18139:10;18129:21;;;;;;;;;;;;;;;;:31;;18121:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18206:6;18181:9;:21;18191:10;18181:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18242:6;18217:9;:21;18235:1;18217:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18287:1;18258:40;;18267:10;18258:40;;;18291:6;18258:40;;;;;;:::i;:::-;;;;;;;;18077:226;:::o;17479:65::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17522:19:::1;:17;:19::i;:::-;17479:65::o:0;12845:139::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12934:47:::1;12948:13;12963:17;12934:13;:47::i;:::-;12845:139:::0;;:::o;5855:107::-;5923:7;5941:9;:18;5951:7;5941:18;;;;;;;;;;;;;;;;5934:25;;5855:107;;;:::o;2024:83::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2074:30:::1;2101:1;2074:18;:30::i;:::-;2024:83::o:0;18760:76::-;18809:4;18824:5;:9;18830:2;18824:9;;;;;;;;;;;;;;;;;;;;;;;;;18817:16;;18760:76;;;:::o;12627:116::-;12668:22;12692:17;12721:6;;12729:10;;12713:27;;;;12627:116;;:::o;5685:84::-;5735:13;5759:7;;;;;;;;;;;;;;;;;5752:14;;5685:84;:::o;17924:148::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;18009:1:::1;17997:9;:13;17989:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18058:9;18041:14;:26;;;;17924:148:::0;:::o;12398:226::-;12436:20;12458:19;12479:15;12503;12520:13;12535:19;12558:14;:12;:14::i;:::-;12502:70;;;;;;12585:9;12596:7;12605:13;12577:42;;;;;;;;;12398:226;;;:::o;7316:127::-;7378:4;7389:33;7399:10;7411:2;7415:6;7389:9;:33::i;:::-;7434:4;7427:11;;7316:127;;;;:::o;5234:272::-;5280:13;5295:15;5312:17;5331:13;5346:12;5360:18;5380:17;5412:6;;;;;;;;;;;5420:15;5437:16;;;;;;;;;;;3934:42;4023;4226;5490:10;;;;;;;;;;;5404:97;;;;;;;;;;;;;;5234:272;;;;;;;:::o;13608:298::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13691:5:::1;:22;13697:15;13691:22;;;;;;;;;;;;;;;;;;;;;;;;;13690:23;:64;;;;;4226:42;13717:37;;:15;:37;;;;13690:64;:100;;;;;13785:4;13758:32;;:15;:32;;;;13690:100;:133;;;;;13821:1;13794:29;;:15;:29;;;;13690:133;13682:142;;;::::0;::::1;;13858:4;13829:9;:26;13839:15;13829:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;13886:15;13867:16;;:34;;;;;;;;;;;;;;;;;;13608:298:::0;:::o;12746:94::-;12805:4;12820:9;:17;12830:6;12820:17;;;;;;;;;;;;;;;;;;;;;;;;;12813:24;;12746:94;;;:::o;12088:305::-;12128:20;12150:21;12173:24;12205:17;12225:25;:23;:25::i;:::-;12205:45;;12255:23;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;12293:9;:24;12311:4;12293:24;;;;;;;;;;;;;;;;12281:9;:36;;;;:::i;:::-;:51;;;;:::i;:::-;12255:77;;12345:9;12356:15;12373:14;;12337:51;;;;;;;;12088:305;;;:::o;5965:131::-;6048:7;6066:11;:18;6078:5;6066:18;;;;;;;;;;;;;;;:27;6085:7;6066:27;;;;;;;;;;;;;;;;6059:34;;5965:131;;;;:::o;2110:97::-;1880:6;;;;;;;;;;1866:20;;:10;:20;;;1858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2176:28:::1;2195:8;2176:18;:28::i;:::-;2110:97:::0;:::o;11261:822::-;11425:11;11389:6;11382:24;;;11415:4;11382:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;11374:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;11513:10;4023:42;11471:23;;;11503:4;11471:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;11463:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;11548:51;11579:6;11587:11;11548:30;:51::i;:::-;11604:49;4023:42;11642:10;11604:30;:49::i;:::-;11658:19;11680:6;;;;;;;;;;;11658:28;;11695:12;11691:47;;;11733:1;11711:24;;11691:47;4226:42;11744:24;;;4023:42;11798:6;11822:10;11860:11;11898:1;11947;11996:11;12046:15;11744:334;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11369:714;11261:822;;;;:::o;6307:244::-;6412:1;6395:19;;:5;:19;;;;:44;;;;;6437:1;6418:21;;:7;:21;;;;6395:44;6387:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6498:6;6468:11;:18;6480:5;6468:18;;;;;;;;;;;;;;;:27;6487:7;6468:27;;;;;;;;;;;;;;;:36;;;;6530:7;6514:32;;6523:5;6514:32;;;6539:6;6514:32;;;;;;:::i;:::-;;;;;;;;6307:244;;;:::o;7719:934::-;7817:1;7801:18;;:4;:18;;;;:38;;;;;7837:1;7823:16;;:2;:16;;;;7801:38;7793:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7896:6;7877:9;:15;7887:4;7877:15;;;;;;;;;;;;;;;;:25;;7869:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7950:29;7962:4;7968:2;7972:6;7950:11;:29::i;:::-;7942:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8028:7;;8012:15;:23;8004:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;8078:7;;8062:15;:23;:53;;;;;8105:10;;8089:15;:26;8062:53;:82;;;;;8131:13;8119:11;:25;8062:82;8058:213;;;8152:12;8181:13;8167:11;:27;;;;:::i;:::-;8152:42;;8200:12;8215;8200:27;;8246:4;8241;:9;8233:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;8146:125;;8058:213;8283:10;;;;;;;;;;;8282:11;:31;;;;;8298:9;:15;8308:4;8298:15;;;;;;;;;;;;;;;;;;;;;;;;;8297:16;8282:31;:44;;;;;8317:5;:9;8323:2;8317:9;;;;;;;;;;;;;;;;;;;;;;;;;8282:44;8277:76;;;8331:19;:17;:19::i;:::-;8277:76;8362:15;8379:13;8394:17;8415:31;8429:4;8435:2;8439:6;8415:13;:31::i;:::-;8361:85;;;;;;8451:17;8489:9;8481:5;8471:7;:15;;;;:::i;:::-;:27;;;;:::i;:::-;8451:47;;8522:6;8503:9;:15;8513:4;8503:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;8561:9;8533;:24;8551:4;8533:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;8602:9;8593:6;:18;;;;:::i;:::-;8575:9;:13;8585:2;8575:13;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;8637:2;8622:26;;8631:4;8622:26;;;8641:6;8622:26;;;;;;:::i;:::-;;;;;;;;7788:865;;;;7719:934;;;:::o;14202:2016::-;4655:4;4642:10;;:17;;;;;;;;;;;;;;;;;;14253:23:::1;14279:26;:24;:26::i;:::-;14253:52;;14311:15;14328:13:::0;14343:19:::1;14366:14;:12;:14::i;:::-;14310:70;;;;;;14385:15;14425:13;14415:7;14403:9;:19;;;;:::i;:::-;:35;;;;:::i;:::-;14385:53;;14443:18;14464:9;:24;14482:4;14464:24;;;;;;;;;;;;;;;;14443:45;;14507:1;14497:9;:11;;;:44;;;;;14526:15;14512:10;:29;;14497:44;14493:1721;;;14562:15;14549:28;;14585:22;14636:9;14611:34;;14624:9;14611:22;;:10;:22;;;;:::i;:::-;:34;;;;:::i;:::-;14585:61;;14652:22;14712:1;14701:9;14678:32;;14691:7;14678:20;;:10;:20;;;;:::i;:::-;:32;;;;:::i;:::-;14677:36;;;;:::i;:::-;14652:61;;14719:26;14777:9;14748:38;;14761:13;14748:26;;:10;:26;;;;:::i;:::-;:38;;;;:::i;:::-;14719:67;;14794:20;14855:14;14834:18;14817:14;:35;;;;:::i;:::-;:52;;;;:::i;:::-;14794:75;;2996:1;14895:2;:13;;;;:::i;:::-;14879:12;:29;14875:1332;;14917:25;14945:53;14965:4;4023:42;14979:12;14993:4;14945:11;:53::i;:::-;14917:81;;15048:20;15108:12;15091:14;15071:17;:34;;;;:::i;:::-;:49;;;;:::i;:::-;15048:72;;15158:26;15241:1;15225:12;15208:14;15188:17;:34;;;;:::i;:::-;:49;;;;:::i;:::-;15187:55;;;;:::i;:::-;15158:84;;15281:24;15349:12;15328:18;15308:17;:38;;;;:::i;:::-;:53;;;;:::i;:::-;15281:80;;15408:1;15400:7;:9;;;15396:84;;;15413:64;15435:4;15442:14;15458:12;15472:4;15413:13;:64::i;:::-;15396:84;15542:1;15532:9;:11;;;15528:272;;;15553:22;15578:53;4023:42;3934;15605:18;15625:5;15578:11;:53::i;:::-;15553:78;;15688:63;3934:42;15710:14;15726:18;15746:4;15688:13;:63::i;:::-;15545:255;15528:272;15826:1;15812:13;:15;;;15808:393;;;15837:28;4023:42;15868:23;;;15900:4;15868:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15837:69;;15937:20;15918:16;:39;15914:89;;;15980:20;15961:39;;15914:89;16092:1;16073:16;:20;16069:89;;;4023:42;16097:22;;;16120:16;;;;;;;;;;;16138;16097:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16069:89;15829:372;15808:393;14910:1297;;;;14875:1332;14543:1671;;;;14493:1721;14248:1970;;;;;;4677:5:::0;4664:10;;:18;;;;;;;;;;;;;;;;;;14202:2016::o;12987:616::-;13073:16;2996:1;13139:2;:13;;;;:::i;:::-;13134:2;:18;;;;:::i;:::-;13125:4;13108:14;13093:29;;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;13093;;;;:::i;:::-;:36;;;;:::i;:::-;13092:61;;;;:::i;:::-;13073:80;;13199:20;2996:1;13273:2;:13;;;;:::i;:::-;13268:2;:18;;;;:::i;:::-;13259:4;13238:18;13223:33;;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;13223:33;;;;:::i;:::-;:40;;;;:::i;:::-;13222:65;;;;:::i;:::-;13199:88;;13353:6;;13341:8;:18;;:48;;;;;13379:10;;13363:12;:26;;13341:48;13333:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;13425:8;:23;13421:57;;;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;13452:23;;13421:57;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;13486:12;:27;13482:65;;;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;13517:27;;13482:65;13560:8;13551:6;:17;;;;13586:12;13573:10;:25;;;;13068:535;;12987:616;;:::o;2210:127::-;2280:9;2271:6;;:18;;;;;;;;;;;;;;;;;;2300:31;2321:9;2300:31;;;;;;:::i;:::-;;;;;;;;2210:127;:::o;9431:740::-;9477:15;9494:13;9509:19;9535:16;9553:14;9569:20;9594:27;9624:25;:23;:25::i;:::-;9594:55;;3455:9;9658:19;:35;9654:463;;;9715:1;9702:14;;9729:1;9718:12;;9749:1;9732:18;;9654:463;;;3455:9;9766:19;:36;;:75;;;;;3567:10;9806:19;:35;9766:75;9762:355;;;9862:1;9849:14;;9876:1;9865:12;;9896:1;9879:18;;9762:355;;;3567:10;9913:19;:36;;:75;;;;;3674:11;9953:19;:35;9913:75;9909:208;;;10009:1;9996:14;;10023:1;10012:12;;10043:1;10026:18;;9909:208;;;10076:1;10063:14;;10090:1;10079:12;;10110:1;10093:18;;9909:208;9762:355;9654:463;10129:10;10141:8;10151:14;10121:45;;;;;;;;;;9431:740;;;:::o;9088:340::-;9145:7;9159:17;9207:1;9185:24;;:10;;;;;;;;;;;:24;;;9181:222;;9217:18;9238:9;:21;9248:10;;;;;;;;;;;9238:21;;;;;;;;;;;;;;;;9217:42;;9265:16;9327:13;9323:2;:17;;;;:::i;:::-;4023:42;9284:23;;;9308:10;;;;;;;;;;;9284:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;;;:::i;:::-;9265:76;;9386:10;2996:1;3057:2;:13;;;;:::i;:::-;3041;:29;;;;:::i;:::-;9360:8;:23;;;;:::i;:::-;:36;;;;:::i;:::-;9347:50;;9211:192;;9181:222;9414:9;9407:16;;;9088:340;:::o;6770:541::-;6856:22;6905:4;6887:23;;:6;:23;;;6883:421;;6935:11;:26;6955:4;6935:26;;;;;;;;;;;;;;;:46;4226:42;6935:46;;;;;;;;;;;;;;;;6918:63;;7000:14;6991:6;:23;6987:109;;;7072:17;7023:11;:26;7043:4;7023:26;;;;;;;;;;;;;;;:46;4226:42;7023:46;;;;;;;;;;;;;;;:66;;;;6987:109;6883:421;;;7137:6;7130:24;;;7163:4;4226:42;7130:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7113:76;;7208:14;7199:6;:23;7195:104;;;7238:6;7231:22;;;4226:42;7274:17;7231:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7195:104;6883:421;6851:460;6770:541;;:::o;8656:427::-;8741:4;8752:11;8766:4;8752:18;;8789:6;;8780;:15;:35;;;;;8800:9;:15;8810:4;8800:15;;;;;;;;;;;;;;;;;;;;;;;;;8799:16;8780:35;:53;;;;;8820:9;:13;8830:2;8820:13;;;;;;;;;;;;;;;;;;;;;;;;;8819:14;8780:53;8775:80;;;8847:5;8838:14;;8775:80;8859:15;8877:4;8859:22;;8886:20;8925:6;8909:9;:13;8919:2;8909:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;8886:45;;8956:10;;8941:12;:25;:45;;;;;8971:9;:15;8981:4;8971:15;;;;;;;;;;;;;;;;;;;;;;;;;8970:16;8941:45;:63;;;;;8991:9;:13;9001:2;8991:13;;;;;;;;;;;;;;;;;;;;;;;;;8990:14;8941:63;:77;;;;;9009:5;:9;9015:2;9009:9;;;;;;;;;;;;;;;;;;;;;;;;;9008:10;8941:77;8936:108;;;9036:5;9023:18;;8936:108;9057:6;:20;;;;;9067:10;9057:20;9049:29;;;;;8656:427;;;;;:::o;10174:598::-;10261:15;10278:13;10293:17;10317:16;10335:14;10351:18;10380:5;:11;10386:4;10380:11;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;10396:9;:13;10406:2;10396:13;;;;;;;;;;;;;;;;;;;;;;;;;10395:14;10380:29;10379:66;;;;10415:5;:9;10421:2;10415:9;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;10429:9;:15;10439:4;10429:15;;;;;;;;;;;;;;;;;;;;;;;;;10428:16;10415:29;10379:66;10374:352;;;10456:15;10473:13;10488:19;10511:14;:12;:14::i;:::-;10455:70;;;;;;10563:3;10551:9;10542:18;;:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;10531:35;;10600:3;10590:7;10581:16;;:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10572:31;;10647:3;10631:13;10622:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10609:41;;10448:208;;;10374:352;;;10683:1;10672:12;;10699:1;10690:10;;10719:1;10706:14;;10374:352;10738:8;10748:6;10756:10;10730:37;;;;;;;;;10174:598;;;;;;;:::o;13913:286::-;13971:7;13985:21;14023:1;14009:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13985:40;;14048:4;14030;14035:1;14030:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;4023:42;14058:4;14063:1;14058:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;;;14078:24;4226:42;14105:24;;;14151:13;14147:2;:17;;;;:::i;:::-;14130:14;;:34;;;;:::i;:::-;14166:4;14105:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14078:93;;14184:7;14192:1;14184:10;;;;;;;;:::i;:::-;;;;;;;;14177:17;;;;13913:286;:::o;16223:1007::-;16339:20;16368:29;16408:4;16368:45;;16418:21;16444:27;16498:4;16484:18;;:10;:18;;;16480:142;;16530:15;16506:39;;16480:142;;;16582:11;16575:29;;;16613:4;16575:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16559:60;;16480:142;16628:55;16659:10;16671:11;16628:30;:55::i;:::-;16688:21;16726:1;16712:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16688:40;;16743:10;16733:4;16738:1;16733:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;16768:11;16758:4;16763:1;16758:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;4226:42;16784:65;;;16855:11;16872:1;16879:4;16889:21;16916:15;16784:152;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16963:4;16949:18;;:10;:18;;;16945:247;;16993:16;:35;;;17029:11;16993:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16971:70;;16945:247;;;17060:20;17090:11;17083:29;;;17121:4;17083:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17060:67;;17171:13;17156:12;:28;;;;:::i;:::-;17133:52;;17053:139;16945:247;17205:19;17198:26;;;;;;16223:1007;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:468::-;3772:6;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:119;;;3835:79;;:::i;:::-;3797:119;3955:1;3980:53;4025:7;4016:6;4005:9;4001:22;3980:53;:::i;:::-;3970:63;;3926:117;4082:2;4108:50;4150:7;4141:6;4130:9;4126:22;4108:50;:::i;:::-;4098:60;;4053:115;3707:468;;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:89::-;6294:7;6334:6;6327:5;6323:18;6312:29;;6258:89;;;:::o;6353:120::-;6425:23;6442:5;6425:23;:::i;:::-;6418:5;6415:34;6405:62;;6463:1;6460;6453:12;6405:62;6353:120;:::o;6479:137::-;6524:5;6562:6;6549:20;6540:29;;6578:32;6604:5;6578:32;:::i;:::-;6479:137;;;;:::o;6622:470::-;6688:6;6696;6745:2;6733:9;6724:7;6720:23;6716:32;6713:119;;;6751:79;;:::i;:::-;6713:119;6871:1;6896:52;6940:7;6931:6;6920:9;6916:22;6896:52;:::i;:::-;6886:62;;6842:116;6997:2;7023:52;7067:7;7058:6;7047:9;7043:22;7023:52;:::i;:::-;7013:62;;6968:117;6622:470;;;;;:::o;7098:332::-;7219:4;7257:2;7246:9;7242:18;7234:26;;7270:71;7338:1;7327:9;7323:17;7314:6;7270:71;:::i;:::-;7351:72;7419:2;7408:9;7404:18;7395:6;7351:72;:::i;:::-;7098:332;;;;;:::o;7436:418::-;7573:4;7611:2;7600:9;7596:18;7588:26;;7624:67;7688:1;7677:9;7673:17;7664:6;7624:67;:::i;:::-;7701:68;7765:2;7754:9;7750:18;7741:6;7701:68;:::i;:::-;7779;7843:2;7832:9;7828:18;7819:6;7779:68;:::i;:::-;7436:418;;;;;;:::o;7860:118::-;7947:24;7965:5;7947:24;:::i;:::-;7942:3;7935:37;7860:118;;:::o;7984:886::-;8245:4;8283:3;8272:9;8268:19;8260:27;;8297:71;8365:1;8354:9;8350:17;8341:6;8297:71;:::i;:::-;8378:72;8446:2;8435:9;8431:18;8422:6;8378:72;:::i;:::-;8460;8528:2;8517:9;8513:18;8504:6;8460:72;:::i;:::-;8542;8610:2;8599:9;8595:18;8586:6;8542:72;:::i;:::-;8624:73;8692:3;8681:9;8677:19;8668:6;8624:73;:::i;:::-;8707;8775:3;8764:9;8760:19;8751:6;8707:73;:::i;:::-;8790;8858:3;8847:9;8843:19;8834:6;8790:73;:::i;:::-;7984:886;;;;;;;;;;:::o;8876:442::-;9025:4;9063:2;9052:9;9048:18;9040:26;;9076:71;9144:1;9133:9;9129:17;9120:6;9076:71;:::i;:::-;9157:72;9225:2;9214:9;9210:18;9201:6;9157:72;:::i;:::-;9239;9307:2;9296:9;9292:18;9283:6;9239:72;:::i;:::-;8876:442;;;;;;:::o;9324:474::-;9392:6;9400;9449:2;9437:9;9428:7;9424:23;9420:32;9417:119;;;9455:79;;:::i;:::-;9417:119;9575:1;9600:53;9645:7;9636:6;9625:9;9621:22;9600:53;:::i;:::-;9590:63;;9546:117;9702:2;9728:53;9773:7;9764:6;9753:9;9749:22;9728:53;:::i;:::-;9718:63;;9673:118;9324:474;;;;;:::o;9804:163::-;9944:15;9940:1;9932:6;9928:14;9921:39;9804:163;:::o;9973:366::-;10115:3;10136:67;10200:2;10195:3;10136:67;:::i;:::-;10129:74;;10212:93;10301:3;10212:93;:::i;:::-;10330:2;10325:3;10321:12;10314:19;;9973:366;;;:::o;10345:419::-;10511:4;10549:2;10538:9;10534:18;10526:26;;10598:9;10592:4;10588:20;10584:1;10573:9;10569:17;10562:47;10626:131;10752:4;10626:131;:::i;:::-;10618:139;;10345:419;;;:::o;10770:222::-;10863:4;10901:2;10890:9;10886:18;10878:26;;10914:71;10982:1;10971:9;10967:17;10958:6;10914:71;:::i;:::-;10770:222;;;;:::o;10998:143::-;11055:5;11086:6;11080:13;11071:22;;11102:33;11129:5;11102:33;:::i;:::-;10998:143;;;;:::o;11147:351::-;11217:6;11266:2;11254:9;11245:7;11241:23;11237:32;11234:119;;;11272:79;;:::i;:::-;11234:119;11392:1;11417:64;11473:7;11464:6;11453:9;11449:22;11417:64;:::i;:::-;11407:74;;11363:128;11147:351;;;;:::o;11504:165::-;11644:17;11640:1;11632:6;11628:14;11621:41;11504:165;:::o;11675:366::-;11817:3;11838:67;11902:2;11897:3;11838:67;:::i;:::-;11831:74;;11914:93;12003:3;11914:93;:::i;:::-;12032:2;12027:3;12023:12;12016:19;;11675:366;;;:::o;12047:419::-;12213:4;12251:2;12240:9;12236:18;12228:26;;12300:9;12294:4;12290:20;12286:1;12275:9;12271:17;12264:47;12328:131;12454:4;12328:131;:::i;:::-;12320:139;;12047:419;;;:::o;12472:159::-;12612:11;12608:1;12600:6;12596:14;12589:35;12472:159;:::o;12637:365::-;12779:3;12800:66;12864:1;12859:3;12800:66;:::i;:::-;12793:73;;12875:93;12964:3;12875:93;:::i;:::-;12993:2;12988:3;12984:12;12977:19;;12637:365;;;:::o;13008:419::-;13174:4;13212:2;13201:9;13197:18;13189:26;;13261:9;13255:4;13251:20;13247:1;13236:9;13232:17;13225:47;13289:131;13415:4;13289:131;:::i;:::-;13281:139;;13008:419;;;:::o;13433:143::-;13490:5;13521:6;13515:13;13506:22;;13537:33;13564:5;13537:33;:::i;:::-;13433:143;;;;:::o;13582:351::-;13652:6;13701:2;13689:9;13680:7;13676:23;13672:32;13669:119;;;13707:79;;:::i;:::-;13669:119;13827:1;13852:64;13908:7;13899:6;13888:9;13884:22;13852:64;:::i;:::-;13842:74;;13798:128;13582:351;;;;:::o;13939:332::-;14060:4;14098:2;14087:9;14083:18;14075:26;;14111:71;14179:1;14168:9;14164:17;14155:6;14111:71;:::i;:::-;14192:72;14260:2;14249:9;14245:18;14236:6;14192:72;:::i;:::-;13939:332;;;;;:::o;14277:180::-;14325:77;14322:1;14315:88;14422:4;14419:1;14412:15;14446:4;14443:1;14436:15;14463:191;14503:3;14522:20;14540:1;14522:20;:::i;:::-;14517:25;;14556:20;14574:1;14556:20;:::i;:::-;14551:25;;14599:1;14596;14592:9;14585:16;;14620:3;14617:1;14614:10;14611:36;;;14627:18;;:::i;:::-;14611:36;14463:191;;;;:::o;14660:169::-;14800:21;14796:1;14788:6;14784:14;14777:45;14660:169;:::o;14835:366::-;14977:3;14998:67;15062:2;15057:3;14998:67;:::i;:::-;14991:74;;15074:93;15163:3;15074:93;:::i;:::-;15192:2;15187:3;15183:12;15176:19;;14835:366;;;:::o;15207:419::-;15373:4;15411:2;15400:9;15396:18;15388:26;;15460:9;15454:4;15450:20;15446:1;15435:9;15431:17;15424:47;15488:131;15614:4;15488:131;:::i;:::-;15480:139;;15207:419;;;:::o;15632:161::-;15772:13;15768:1;15760:6;15756:14;15749:37;15632:161;:::o;15799:366::-;15941:3;15962:67;16026:2;16021:3;15962:67;:::i;:::-;15955:74;;16038:93;16127:3;16038:93;:::i;:::-;16156:2;16151:3;16147:12;16140:19;;15799:366;;;:::o;16171:419::-;16337:4;16375:2;16364:9;16360:18;16352:26;;16424:9;16418:4;16414:20;16410:1;16399:9;16395:17;16388:47;16452:131;16578:4;16452:131;:::i;:::-;16444:139;;16171:419;;;:::o;16596:332::-;16717:4;16755:2;16744:9;16740:18;16732:26;;16768:71;16836:1;16825:9;16821:17;16812:6;16768:71;:::i;:::-;16849:72;16917:2;16906:9;16902:18;16893:6;16849:72;:::i;:::-;16596:332;;;;;:::o;16934:137::-;16988:5;17019:6;17013:13;17004:22;;17035:30;17059:5;17035:30;:::i;:::-;16934:137;;;;:::o;17077:345::-;17144:6;17193:2;17181:9;17172:7;17168:23;17164:32;17161:119;;;17199:79;;:::i;:::-;17161:119;17319:1;17344:61;17397:7;17388:6;17377:9;17373:22;17344:61;:::i;:::-;17334:71;;17290:125;17077:345;;;;:::o;17428:102::-;17470:8;17517:5;17514:1;17510:13;17489:34;;17428:102;;;:::o;17536:848::-;17597:5;17604:4;17628:6;17619:15;;17652:5;17643:14;;17666:712;17687:1;17677:8;17674:15;17666:712;;;17782:4;17777:3;17773:14;17767:4;17764:24;17761:50;;;17791:18;;:::i;:::-;17761:50;17841:1;17831:8;17827:16;17824:451;;;18256:4;18249:5;18245:16;18236:25;;17824:451;18306:4;18300;18296:15;18288:23;;18336:32;18359:8;18336:32;:::i;:::-;18324:44;;17666:712;;;17536:848;;;;;;;:::o;18390:1073::-;18444:5;18635:8;18625:40;;18656:1;18647:10;;18658:5;;18625:40;18684:4;18674:36;;18701:1;18692:10;;18703:5;;18674:36;18770:4;18818:1;18813:27;;;;18854:1;18849:191;;;;18763:277;;18813:27;18831:1;18822:10;;18833:5;;;18849:191;18894:3;18884:8;18881:17;18878:43;;;18901:18;;:::i;:::-;18878:43;18950:8;18947:1;18943:16;18934:25;;18985:3;18978:5;18975:14;18972:40;;;18992:18;;:::i;:::-;18972:40;19025:5;;;18763:277;;19149:2;19139:8;19136:16;19130:3;19124:4;19121:13;19117:36;19099:2;19089:8;19086:16;19081:2;19075:4;19072:12;19068:35;19052:111;19049:246;;;19205:8;19199:4;19195:19;19186:28;;19240:3;19233:5;19230:14;19227:40;;;19247:18;;:::i;:::-;19227:40;19280:5;;19049:246;19320:42;19358:3;19348:8;19342:4;19339:1;19320:42;:::i;:::-;19305:57;;;;19394:4;19389:3;19385:14;19378:5;19375:25;19372:51;;;19403:18;;:::i;:::-;19372:51;19452:4;19445:5;19441:16;19432:25;;18390:1073;;;;;;:::o;19469:281::-;19527:5;19551:23;19569:4;19551:23;:::i;:::-;19543:31;;19595:25;19611:8;19595:25;:::i;:::-;19583:37;;19639:104;19676:66;19666:8;19660:4;19639:104;:::i;:::-;19630:113;;19469:281;;;;:::o;19756:410::-;19796:7;19819:20;19837:1;19819:20;:::i;:::-;19814:25;;19853:20;19871:1;19853:20;:::i;:::-;19848:25;;19908:1;19905;19901:9;19930:30;19948:11;19930:30;:::i;:::-;19919:41;;20109:1;20100:7;20096:15;20093:1;20090:22;20070:1;20063:9;20043:83;20020:139;;20139:18;;:::i;:::-;20020:139;19804:362;19756:410;;;;:::o;20172:181::-;20312:33;20308:1;20300:6;20296:14;20289:57;20172:181;:::o;20359:366::-;20501:3;20522:67;20586:2;20581:3;20522:67;:::i;:::-;20515:74;;20598:93;20687:3;20598:93;:::i;:::-;20716:2;20711:3;20707:12;20700:19;;20359:366;;;:::o;20731:419::-;20897:4;20935:2;20924:9;20920:18;20912:26;;20984:9;20978:4;20974:20;20970:1;20959:9;20955:17;20948:47;21012:131;21138:4;21012:131;:::i;:::-;21004:139;;20731:419;;;:::o;21156:194::-;21196:4;21216:20;21234:1;21216:20;:::i;:::-;21211:25;;21250:20;21268:1;21250:20;:::i;:::-;21245:25;;21294:1;21291;21287:9;21279:17;;21318:1;21312:4;21309:11;21306:37;;;21323:18;;:::i;:::-;21306:37;21156:194;;;;:::o;21356:161::-;21496:13;21492:1;21484:6;21480:14;21473:37;21356:161;:::o;21523:366::-;21665:3;21686:67;21750:2;21745:3;21686:67;:::i;:::-;21679:74;;21762:93;21851:3;21762:93;:::i;:::-;21880:2;21875:3;21871:12;21864:19;;21523:366;;;:::o;21895:419::-;22061:4;22099:2;22088:9;22084:18;22076:26;;22148:9;22142:4;22138:20;22134:1;22123:9;22119:17;22112:47;22176:131;22302:4;22176:131;:::i;:::-;22168:139;;21895:419;;;:::o;22320:171::-;22460:23;22456:1;22448:6;22444:14;22437:47;22320:171;:::o;22497:366::-;22639:3;22660:67;22724:2;22719:3;22660:67;:::i;:::-;22653:74;;22736:93;22825:3;22736:93;:::i;:::-;22854:2;22849:3;22845:12;22838:19;;22497:366;;;:::o;22869:419::-;23035:4;23073:2;23062:9;23058:18;23050:26;;23122:9;23116:4;23112:20;23108:1;23097:9;23093:17;23086:47;23150:131;23276:4;23150:131;:::i;:::-;23142:139;;22869:419;;;:::o;23294:180::-;23342:77;23339:1;23332:88;23439:4;23436:1;23429:15;23463:4;23460:1;23453:15;23480:185;23520:1;23537:20;23555:1;23537:20;:::i;:::-;23532:25;;23571:20;23589:1;23571:20;:::i;:::-;23566:25;;23610:1;23600:35;;23615:18;;:::i;:::-;23600:35;23657:1;23654;23650:9;23645:14;;23480:185;;;;:::o;23671:167::-;23811:19;23807:1;23799:6;23795:14;23788:43;23671:167;:::o;23844:366::-;23986:3;24007:67;24071:2;24066:3;24007:67;:::i;:::-;24000:74;;24083:93;24172:3;24083:93;:::i;:::-;24201:2;24196:3;24192:12;24185:19;;23844:366;;;:::o;24216:419::-;24382:4;24420:2;24409:9;24405:18;24397:26;;24469:9;24463:4;24459:20;24455:1;24444:9;24440:17;24433:47;24497:131;24623:4;24497:131;:::i;:::-;24489:139;;24216:419;;;:::o;24641:165::-;24781:17;24777:1;24769:6;24765:14;24758:41;24641:165;:::o;24812:366::-;24954:3;24975:67;25039:2;25034:3;24975:67;:::i;:::-;24968:74;;25051:93;25140:3;25051:93;:::i;:::-;25169:2;25164:3;25160:12;25153:19;;24812:366;;;:::o;25184:419::-;25350:4;25388:2;25377:9;25373:18;25365:26;;25437:9;25431:4;25427:20;25423:1;25412:9;25408:17;25401:47;25465:131;25591:4;25465:131;:::i;:::-;25457:139;;25184:419;;;:::o;25609:85::-;25654:7;25683:5;25672:16;;25609:85;;;:::o;25700:60::-;25728:3;25749:5;25742:12;;25700:60;;;:::o;25766:158::-;25824:9;25857:61;25875:42;25884:32;25910:5;25884:32;:::i;:::-;25875:42;:::i;:::-;25857:61;:::i;:::-;25844:74;;25766:158;;;:::o;25930:147::-;26025:45;26064:5;26025:45;:::i;:::-;26020:3;26013:58;25930:147;;:::o;26083:1029::-;26388:4;26426:3;26415:9;26411:19;26403:27;;26440:71;26508:1;26497:9;26493:17;26484:6;26440:71;:::i;:::-;26521:72;26589:2;26578:9;26574:18;26565:6;26521:72;:::i;:::-;26603;26671:2;26660:9;26656:18;26647:6;26603:72;:::i;:::-;26685;26753:2;26742:9;26738:18;26729:6;26685:72;:::i;:::-;26767:81;26843:3;26832:9;26828:19;26819:6;26767:81;:::i;:::-;26858;26934:3;26923:9;26919:19;26910:6;26858:81;:::i;:::-;26949:73;27017:3;27006:9;27002:19;26993:6;26949:73;:::i;:::-;27032;27100:3;27089:9;27085:19;27076:6;27032:73;:::i;:::-;26083:1029;;;;;;;;;;;:::o;27118:663::-;27206:6;27214;27222;27271:2;27259:9;27250:7;27246:23;27242:32;27239:119;;;27277:79;;:::i;:::-;27239:119;27397:1;27422:64;27478:7;27469:6;27458:9;27454:22;27422:64;:::i;:::-;27412:74;;27368:128;27535:2;27561:64;27617:7;27608:6;27597:9;27593:22;27561:64;:::i;:::-;27551:74;;27506:129;27674:2;27700:64;27756:7;27747:6;27736:9;27732:22;27700:64;:::i;:::-;27690:74;;27645:129;27118:663;;;;;:::o;27787:169::-;27927:21;27923:1;27915:6;27911:14;27904:45;27787:169;:::o;27962:366::-;28104:3;28125:67;28189:2;28184:3;28125:67;:::i;:::-;28118:74;;28201:93;28290:3;28201:93;:::i;:::-;28319:2;28314:3;28310:12;28303:19;;27962:366;;;:::o;28334:419::-;28500:4;28538:2;28527:9;28523:18;28515:26;;28587:9;28581:4;28577:20;28573:1;28562:9;28558:17;28551:47;28615:131;28741:4;28615:131;:::i;:::-;28607:139;;28334:419;;;:::o;28759:179::-;28899:31;28895:1;28887:6;28883:14;28876:55;28759:179;:::o;28944:366::-;29086:3;29107:67;29171:2;29166:3;29107:67;:::i;:::-;29100:74;;29183:93;29272:3;29183:93;:::i;:::-;29301:2;29296:3;29292:12;29285:19;;28944:366;;;:::o;29316:419::-;29482:4;29520:2;29509:9;29505:18;29497:26;;29569:9;29563:4;29559:20;29555:1;29544:9;29540:17;29533:47;29597:131;29723:4;29597:131;:::i;:::-;29589:139;;29316:419;;;:::o;29741:165::-;29881:17;29877:1;29869:6;29865:14;29858:41;29741:165;:::o;29912:366::-;30054:3;30075:67;30139:2;30134:3;30075:67;:::i;:::-;30068:74;;30151:93;30240:3;30151:93;:::i;:::-;30269:2;30264:3;30260:12;30253:19;;29912:366;;;:::o;30284:419::-;30450:4;30488:2;30477:9;30473:18;30465:26;;30537:9;30531:4;30527:20;30523:1;30512:9;30508:17;30501:47;30565:131;30691:4;30565:131;:::i;:::-;30557:139;;30284:419;;;:::o;30709:161::-;30849:13;30845:1;30837:6;30833:14;30826:37;30709:161;:::o;30876:366::-;31018:3;31039:67;31103:2;31098:3;31039:67;:::i;:::-;31032:74;;31115:93;31204:3;31115:93;:::i;:::-;31233:2;31228:3;31224:12;31217:19;;30876:366;;;:::o;31248:419::-;31414:4;31452:2;31441:9;31437:18;31429:26;;31501:9;31495:4;31491:20;31487:1;31476:9;31472:17;31465:47;31529:131;31655:4;31529:131;:::i;:::-;31521:139;;31248:419;;;:::o;31673:188::-;31711:3;31730:18;31746:1;31730:18;:::i;:::-;31725:23;;31762:18;31778:1;31762:18;:::i;:::-;31757:23;;31803:1;31800;31796:9;31789:16;;31826:4;31821:3;31818:13;31815:39;;;31834:18;;:::i;:::-;31815:39;31673:188;;;;:::o;31867:172::-;32007:24;32003:1;31995:6;31991:14;31984:48;31867:172;:::o;32045:366::-;32187:3;32208:67;32272:2;32267:3;32208:67;:::i;:::-;32201:74;;32284:93;32373:3;32284:93;:::i;:::-;32402:2;32397:3;32393:12;32386:19;;32045:366;;;:::o;32417:419::-;32583:4;32621:2;32610:9;32606:18;32598:26;;32670:9;32664:4;32660:20;32656:1;32645:9;32641:17;32634:47;32698:131;32824:4;32698:131;:::i;:::-;32690:139;;32417:419;;;:::o;32842:180::-;32890:77;32887:1;32880:88;32987:4;32984:1;32977:15;33011:4;33008:1;33001:15;33028:180;33076:77;33073:1;33066:88;33173:4;33170:1;33163:15;33197:4;33194:1;33187:15;33214:114;33281:6;33315:5;33309:12;33299:22;;33214:114;;;:::o;33334:184::-;33433:11;33467:6;33462:3;33455:19;33507:4;33502:3;33498:14;33483:29;;33334:184;;;;:::o;33524:132::-;33591:4;33614:3;33606:11;;33644:4;33639:3;33635:14;33627:22;;33524:132;;;:::o;33662:108::-;33739:24;33757:5;33739:24;:::i;:::-;33734:3;33727:37;33662:108;;:::o;33776:179::-;33845:10;33866:46;33908:3;33900:6;33866:46;:::i;:::-;33944:4;33939:3;33935:14;33921:28;;33776:179;;;;:::o;33961:113::-;34031:4;34063;34058:3;34054:14;34046:22;;33961:113;;;:::o;34110:732::-;34229:3;34258:54;34306:5;34258:54;:::i;:::-;34328:86;34407:6;34402:3;34328:86;:::i;:::-;34321:93;;34438:56;34488:5;34438:56;:::i;:::-;34517:7;34548:1;34533:284;34558:6;34555:1;34552:13;34533:284;;;34634:6;34628:13;34661:63;34720:3;34705:13;34661:63;:::i;:::-;34654:70;;34747:60;34800:6;34747:60;:::i;:::-;34737:70;;34593:224;34580:1;34577;34573:9;34568:14;;34533:284;;;34537:14;34833:3;34826:10;;34234:608;;;34110:732;;;;:::o;34848:483::-;35019:4;35057:2;35046:9;35042:18;35034:26;;35070:71;35138:1;35127:9;35123:17;35114:6;35070:71;:::i;:::-;35188:9;35182:4;35178:20;35173:2;35162:9;35158:18;35151:48;35216:108;35319:4;35310:6;35216:108;:::i;:::-;35208:116;;34848:483;;;;;:::o;35337:117::-;35446:1;35443;35436:12;35460:281;35543:27;35565:4;35543:27;:::i;:::-;35535:6;35531:40;35673:6;35661:10;35658:22;35637:18;35625:10;35622:34;35619:62;35616:88;;;35684:18;;:::i;:::-;35616:88;35724:10;35720:2;35713:22;35503:238;35460:281;;:::o;35747:129::-;35781:6;35808:20;;:::i;:::-;35798:30;;35837:33;35865:4;35857:6;35837:33;:::i;:::-;35747:129;;;:::o;35882:311::-;35959:4;36049:18;36041:6;36038:30;36035:56;;;36071:18;;:::i;:::-;36035:56;36121:4;36113:6;36109:17;36101:25;;36181:4;36175;36171:15;36163:23;;35882:311;;;:::o;36199:117::-;36308:1;36305;36298:12;36339:732;36446:5;36471:81;36487:64;36544:6;36487:64;:::i;:::-;36471:81;:::i;:::-;36462:90;;36572:5;36601:6;36594:5;36587:21;36635:4;36628:5;36624:16;36617:23;;36688:4;36680:6;36676:17;36668:6;36664:30;36717:3;36709:6;36706:15;36703:122;;;36736:79;;:::i;:::-;36703:122;36851:6;36834:231;36868:6;36863:3;36860:15;36834:231;;;36943:3;36972:48;37016:3;37004:10;36972:48;:::i;:::-;36967:3;36960:61;37050:4;37045:3;37041:14;37034:21;;36910:155;36894:4;36889:3;36885:14;36878:21;;36834:231;;;36838:21;36452:619;;36339:732;;;;;:::o;37094:385::-;37176:5;37225:3;37218:4;37210:6;37206:17;37202:27;37192:122;;37233:79;;:::i;:::-;37192:122;37343:6;37337:13;37368:105;37469:3;37461:6;37454:4;37446:6;37442:17;37368:105;:::i;:::-;37359:114;;37182:297;37094:385;;;;:::o;37485:554::-;37580:6;37629:2;37617:9;37608:7;37604:23;37600:32;37597:119;;;37635:79;;:::i;:::-;37597:119;37776:1;37765:9;37761:17;37755:24;37806:18;37798:6;37795:30;37792:117;;;37828:79;;:::i;:::-;37792:117;37933:89;38014:7;38005:6;37994:9;37990:22;37933:89;:::i;:::-;37923:99;;37726:306;37485:554;;;;:::o;38045:831::-;38308:4;38346:3;38335:9;38331:19;38323:27;;38360:71;38428:1;38417:9;38413:17;38404:6;38360:71;:::i;:::-;38441:80;38517:2;38506:9;38502:18;38493:6;38441:80;:::i;:::-;38568:9;38562:4;38558:20;38553:2;38542:9;38538:18;38531:48;38596:108;38699:4;38690:6;38596:108;:::i;:::-;38588:116;;38714:72;38782:2;38771:9;38767:18;38758:6;38714:72;:::i;:::-;38796:73;38864:3;38853:9;38849:19;38840:6;38796:73;:::i;:::-;38045:831;;;;;;;;:::o

Swarm Source

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