ETH Price: $2,173.37 (+1.34%)

Contract

0xEb37faeddd9CE5EF92D8Bb3A3b673a2eaF23f6E8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve234665502025-09-29 5:26:23177 days ago1759123583IN
0xEb37faed...eaF23f6E8
0 ETH0.000010360.21318043
Approve218677192025-02-17 17:54:47401 days ago1739814887IN
0xEb37faed...eaF23f6E8
0 ETH0.000419248.63463704
Approve152437382022-07-30 12:20:091334 days ago1659183609IN
0xEb37faed...eaF23f6E8
0 ETH0.00044099.069521
Approve152404352022-07-29 23:51:351334 days ago1659138695IN
0xEb37faed...eaF23f6E8
0 ETH0.0005047410.3827468
Approve152404302022-07-29 23:50:421334 days ago1659138642IN
0xEb37faed...eaF23f6E8
0 ETH0.000568811.70035397
Approve152388242022-07-29 17:49:201335 days ago1659116960IN
0xEb37faed...eaF23f6E8
0 ETH0.0007769215.98142697
Approve152380922022-07-29 15:09:531335 days ago1659107393IN
0xEb37faed...eaF23f6E8
0 ETH0.0011485640
Approve152380842022-07-29 15:08:311335 days ago1659107311IN
0xEb37faed...eaF23f6E8
0 ETH0.0019445640
Approve152379132022-07-29 14:30:071335 days ago1659105007IN
0xEb37faed...eaF23f6E8
0 ETH0.0011514623.68578103
Approve152379022022-07-29 14:27:521335 days ago1659104872IN
0xEb37faed...eaF23f6E8
0 ETH0.00115923.84091142
Approve152377752022-07-29 14:01:001335 days ago1659103260IN
0xEb37faed...eaF23f6E8
0 ETH0.0018703238.47301591
Approve152377042022-07-29 13:42:391335 days ago1659102159IN
0xEb37faed...eaF23f6E8
0 ETH0.0010795322.20615837
Approve152376932022-07-29 13:40:051335 days ago1659102005IN
0xEb37faed...eaF23f6E8
0 ETH0.0007974616.40411301
Approve152376872022-07-29 13:39:131335 days ago1659101953IN
0xEb37faed...eaF23f6E8
0 ETH0.0009196318.91706132
Tax Manual Swap ...152376082022-07-29 13:22:531335 days ago1659100973IN
0xEb37faed...eaF23f6E8
0 ETH0.000275979.71494989
Approve152375462022-07-29 13:10:171335 days ago1659100217IN
0xEb37faed...eaF23f6E8
0 ETH0.0005708411.7423487
Approve152375342022-07-29 13:07:341335 days ago1659100054IN
0xEb37faed...eaF23f6E8
0 ETH0.0005487211.28747507
Increase Limits152375082022-07-29 13:03:001335 days ago1659099780IN
0xEb37faed...eaF23f6E8
0 ETH0.00056215.25409436
Approve152374592022-07-29 12:52:231335 days ago1659099143IN
0xEb37faed...eaF23f6E8
0 ETH0.0007161714.73195342
Approve152374562022-07-29 12:52:091335 days ago1659099129IN
0xEb37faed...eaF23f6E8
0 ETH0.0007998716.45357014
Approve152374412022-07-29 12:48:281335 days ago1659098908IN
0xEb37faed...eaF23f6E8
0 ETH0.0006106812.56192379
Approve152374412022-07-29 12:48:281335 days ago1659098908IN
0xEb37faed...eaF23f6E8
0 ETH0.0006106812.56192379
Approve152374382022-07-29 12:47:471335 days ago1659098867IN
0xEb37faed...eaF23f6E8
0 ETH0.0005874712.08450411
Approve152374362022-07-29 12:47:261335 days ago1659098846IN
0xEb37faed...eaF23f6E8
0 ETH0.0005798411.92756538
Approve152373892022-07-29 12:39:421335 days ago1659098382IN
0xEb37faed...eaF23f6E8
0 ETH0.0007778216
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer234665502025-09-29 5:26:23177 days ago1759123583
0xEb37faed...eaF23f6E8
0.00051668 ETH
Add Liquidity ET...234665502025-09-29 5:26:23177 days ago1759123583
0xEb37faed...eaF23f6E8
0.00022963 ETH
Transfer234665502025-09-29 5:26:23177 days ago1759123583
0xEb37faed...eaF23f6E8
0.00074632 ETH
Transfer218677242025-02-17 17:55:47401 days ago1739814947
0xEb37faed...eaF23f6E8
0.0010676 ETH
Add Liquidity ET...218677242025-02-17 17:55:47401 days ago1739814947
0xEb37faed...eaF23f6E8
0.00047449 ETH
Transfer218677242025-02-17 17:55:47401 days ago1739814947
0xEb37faed...eaF23f6E8
0.00154209 ETH
Transfer152675312022-08-03 5:10:561330 days ago1659503456
0xEb37faed...eaF23f6E8
0.00056349 ETH
Add Liquidity ET...152675312022-08-03 5:10:561330 days ago1659503456
0xEb37faed...eaF23f6E8
0.00025044 ETH
Transfer152675312022-08-03 5:10:561330 days ago1659503456
0xEb37faed...eaF23f6E8
0.00081393 ETH
Transfer152589842022-08-01 21:05:171332 days ago1659387917
0xEb37faed...eaF23f6E8
0.00109156 ETH
Add Liquidity ET...152589842022-08-01 21:05:171332 days ago1659387917
0xEb37faed...eaF23f6E8
0.00048513 ETH
Transfer152589842022-08-01 21:05:171332 days ago1659387917
0xEb37faed...eaF23f6E8
0.0015767 ETH
Transfer152437402022-07-30 12:20:141334 days ago1659183614
0xEb37faed...eaF23f6E8
0.00056126 ETH
Add Liquidity ET...152437402022-07-30 12:20:141334 days ago1659183614
0xEb37faed...eaF23f6E8
0.00024945 ETH
Transfer152437402022-07-30 12:20:141334 days ago1659183614
0xEb37faed...eaF23f6E8
0.00081072 ETH
Transfer152424292022-07-30 7:26:141334 days ago1659165974
0xEb37faed...eaF23f6E8
0.00058907 ETH
Add Liquidity ET...152424292022-07-30 7:26:141334 days ago1659165974
0xEb37faed...eaF23f6E8
0.00026181 ETH
Transfer152424292022-07-30 7:26:141334 days ago1659165974
0xEb37faed...eaF23f6E8
0.00085088 ETH
Transfer152404372022-07-29 23:52:031334 days ago1659138723
0xEb37faed...eaF23f6E8
0.00060105 ETH
Add Liquidity ET...152404372022-07-29 23:52:031334 days ago1659138723
0xEb37faed...eaF23f6E8
0.00026713 ETH
Transfer152404372022-07-29 23:52:031334 days ago1659138723
0xEb37faed...eaF23f6E8
0.00086818 ETH
Transfer152404332022-07-29 23:51:031334 days ago1659138663
0xEb37faed...eaF23f6E8
0.00057559 ETH
Add Liquidity ET...152404332022-07-29 23:51:031334 days ago1659138663
0xEb37faed...eaF23f6E8
0.00025581 ETH
Transfer152404332022-07-29 23:51:031334 days ago1659138663
0xEb37faed...eaF23f6E8
0.0008314 ETH
Transfer152388172022-07-29 17:48:101335 days ago1659116890
0xEb37faed...eaF23f6E8
0.00052687 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MadaraInu

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2022-07-29
*/

/**
MADARA INU ($MINU)
Stealth Launch

The next big inu

Taxes for buy backs
Ownership Renounced
7 Days Liquidity Lock will be extended

Telegram: @MadaraInuERC
Website : http://madarainu.org/


6% burns and 4% will go to the lp 
*/

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

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

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

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

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

	uint8 private fee_taxRateMaxLimit; uint8 private fee_taxRateBuy; uint8 private fee_taxRateSell; uint8 private fee_taxRateTransfer;
	uint16 private fee_sharesAutoLP; uint16 private fee_sharesBurn; uint16 private fee_sharesDevelopment; uint16 private fee_sharesTOTAL;

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

	address payable private wlt_development;
	address private _liquidityPool;

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

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

	event TokensBurned(address burnedFrom, uint256 tokenAmount);
	event TaxRatesChanged(uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer);
	event TaxWalletChanged(address development);
	event TaxDistributionChanged(uint16 autoLP, uint16 burn, uint16 development);
	event LimitsIncreased(uint256 maxTransaction, uint256 maxWalletSize);
	event TaxSwapSettingsChanged(uint256 taxSwapMin, uint256 taxSwapMax);
	event WalletExemptionsSet(address wallet, bool noFees, bool noLimits);


	constructor() Auth(msg.sender) {
		_tradingOpenBlock = type(uint256).max; 
		fee_taxRateMaxLimit = 8;
		lim_maxTxAmount = _totalSupply;
		lim_maxWalletAmount = _totalSupply;
		lim_taxSwapMin = _totalSupply * 1 / 10000;
		lim_taxSwapMax = _totalSupply * 50 / 10000;
		fee_sharesAutoLP = 400;
		fee_sharesBurn = 600;
		fee_sharesDevelopment = 300;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesBurn + fee_sharesDevelopment;
		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);

		wlt_development = payable(0x0D9aAc718056C16D8cCd766586B4a663bA969A17);

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

		exm_noLimits[owner] = true;
		exm_noLimits[address(this)] = true;
		exm_noLimits[_uniswapV2RouterAddress] = true;
		exm_noLimits[wlt_development] = true;

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

	function approve(address spender, uint256 amount) public override returns (bool) {
		if ( _humanBlock > block.number && !_nonSniper[msg.sender] ) {
			_addBlacklist(msg.sender, block.number, true);
		}

		_allowances[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

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

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

	function addLP() external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_liquidityPool == address(0), "LP already added");

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

		_wethAddress = _uniswapV2Router.WETH();
		_liquidityPool = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _wethAddress);

		_isLiqPool[_liquidityPool] = true;
		_nonSniper[_liquidityPool] = true;

		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance >= 0, "no eth");		
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");

		_approveRouter(_contractTokenBalance);
		_addLiquidity(_contractTokenBalance, _contractETHBalance, false);
		uint256 _blks = 14;
		_openTrading(_blks);
	}

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

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

	function _openTrading(uint256 blks) internal {
		lim_maxTxAmount     = 100 * _totalSupply / 10000 + 10**_decimals; 
		lim_maxWalletAmount = 100 * _totalSupply / 10000 + 10**_decimals;
		fee_taxRateBuy = 5;
		fee_taxRateSell = 8;
		fee_taxRateTransfer = 0; 
		_tradingOpenBlock = block.number + blks;
		_humanBlock = _tradingOpenBlock + 9;
	}

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

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

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

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

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

	function _addBlacklist(address wallet, uint256 blackBlockNum, bool addSniper) internal {
		if ( !_nonSniper[wallet] && _blacklistBlock[wallet] == 0 ) { 
			_blacklistBlock[wallet] = blackBlockNum; 
			if ( addSniper) { _blacklistedWallets ++; }
		}
	}
	
	function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( _tradingOpen() && !exm_noLimits[recipient] && !exm_noLimits[sender] ) {
			if ( transferAmount > lim_maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > lim_maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

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

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

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

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

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

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

	function getFeeSettings() external view returns(uint8 taxRateMaxLimit, uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer, uint16 sharesAutoLP, uint16 sharesBurn, uint16 sharesDevelopment ) {
		return (fee_taxRateMaxLimit, fee_taxRateBuy, fee_taxRateSell, fee_taxRateTransfer, fee_sharesAutoLP, fee_sharesBurn, fee_sharesDevelopment);
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newTxTax) external onlyOwner {
		require(newBuyTax+newSellTax <= 2*fee_taxRateMaxLimit, "Avg tax too high");
		require(newTxTax <= fee_taxRateMaxLimit, "Tax too high");
		fee_taxRateBuy = newBuyTax;
		fee_taxRateSell = newSellTax;
		fee_taxRateTransfer = newTxTax;
		emit TaxRatesChanged(newBuyTax, newSellTax, newTxTax);
	}

	function setTaxDistribution(uint16 sharesAutoLP, uint16 sharesBurn, uint16 sharesDevelopment) external onlyOwner {
		fee_sharesAutoLP = sharesAutoLP;
		fee_sharesBurn = sharesBurn;
		fee_sharesDevelopment = sharesDevelopment;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesBurn + fee_sharesDevelopment;
		emit TaxDistributionChanged(sharesAutoLP, sharesBurn, sharesDevelopment);
	}
	
	function getWallets() external view returns(address contractOwner, address liquidityPool, address development) {
		return (owner, _liquidityPool, wlt_development);
	}

	function setTaxWallets(address newDevelopmentWallet) external onlyOwner {
		wlt_development = payable(newDevelopmentWallet);
		exm_noFees[newDevelopmentWallet] = true;
		exm_noLimits[newDevelopmentWallet] = true;
		emit TaxWalletChanged(newDevelopmentWallet);
	}

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

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

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

	function _burnTokens(uint256 amount, address burnedFrom) private {
		if ( amount > 0 ) {
			_balances[burnedFrom] -= amount;
			_balances[address(0)] += amount;
			emit Transfer(burnedFrom, address(0), amount);
			emit TokensBurned(burnedFrom, amount);
		}
	}

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

		if ( _taxTokensAvailable >= lim_taxSwapMin && _tradingOpen() ) {
			if ( _taxTokensAvailable >= lim_taxSwapMax ) { _taxTokensAvailable = lim_taxSwapMax; }
			
			uint256 _tokensForLP = _taxTokensAvailable * fee_sharesAutoLP / fee_sharesTOTAL / 2;
			
			uint256 _tokensToBurn = _taxTokensAvailable * fee_sharesBurn / fee_sharesTOTAL;
			_burnTokens(_tokensToBurn, address(this));

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

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

	function _distributeTaxEth(uint256 _amount) private {
		if ( fee_sharesDevelopment > 0 ) { wlt_development.transfer(_amount); }
	}

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

	function burnTokens(uint256 amount) external {
		uint256 _tokensAvailable = balanceOf(msg.sender);
		require(amount <= _tokensAvailable, "Token balance too low");
		_burnTokens(amount, msg.sender);
	}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"LimitsIncreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"autoLP","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"burn","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"development","type":"uint16"}],"name":"TaxDistributionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateTransfer","type":"uint8"}],"name":"TaxRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"name":"TaxSwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"development","type":"address"}],"name":"TaxWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"burnedFrom","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"noFees","type":"bool"},{"indexed":false,"internalType":"bool","name":"noLimits","type":"bool"}],"name":"WalletExemptionsSet","type":"event"},{"inputs":[],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getBlacklistStatus","outputs":[{"internalType":"bool","name":"isBlacklisted","type":"bool"},{"internalType":"uint256","name":"blacklistBlock","type":"uint256"},{"internalType":"uint16","name":"totalBlacklistedWallets","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeSettings","outputs":[{"internalType":"uint8","name":"taxRateMaxLimit","type":"uint8"},{"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"internalType":"uint8","name":"taxRateTransfer","type":"uint8"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesBurn","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWallets","outputs":[{"internalType":"address","name":"contractOwner","type":"address"},{"internalType":"address","name":"liquidityPool","type":"address"},{"internalType":"address","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesBurn","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"},{"internalType":"uint8","name":"newTxTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevelopmentWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"swapTokens","type":"bool"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"taxManualSwapSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805461ffff191690556000600e55601180546001600160a81b03191674c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2001790553480156200004857600080fd5b50600080546001600160a01b03191633179055600019600355600580546208000062ff000019909116179055620000826009600a62000475565b6200009190620f42406200048d565b600655620000a26009600a62000475565b620000b190620f42406200048d565b600755612710620000c56009600a62000475565b620000d490620f42406200048d565b620000e19060016200048d565b620000ed9190620004af565b600855612710620001016009600a62000475565b6200011090620f42406200048d565b6200011d9060326200048d565b620001299190620004af565b6009556005805465ffffffffffff60301b19166b012c02580190000000000000179081905561ffff6a0100000000000000000000820481169162000187916801000000000000000082048116916601000000000000900416620004d2565b620001939190620004d2565b6005805461ffff929092166c010000000000000000000000000261ffff60601b19909216919091179055601280546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155600a8054909116730d9aac718056c16d8ccd766586b4a663ba969a17178155600080546001600160a01b039081168252600c60209081526040808420805460ff1990811660019081179092553080875283872080548316841790557f0ec9aca9afadc09fc0bd96ec7d7d6cfbb5408a5bc5bcf87bc0656b65508e559a80548316841790558754861687528387208054831684179055865486168752600d909452828620805482168317905592855281852080548416821790557fe491d3ddab46a3ddc2b907c015f7e2686859fac31a4f174b9b79a82620b0324e8054841682179055855490931684529092208054909216179055620002e89060099062000475565b620002f790620f42406200048d565b30600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200033a6009600a62000475565b6200034990620f42406200048d565b60405190815260200160405180910390a3620004fb565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003b75781600019048211156200039b576200039b62000360565b80851615620003a957918102915b93841c93908002906200037b565b509250929050565b600082620003d0575060016200046f565b81620003df575060006200046f565b8160018114620003f85760028114620004035762000423565b60019150506200046f565b60ff84111562000417576200041762000360565b50506001821b6200046f565b5060208310610133831016604e8410600b841016171562000448575081810a6200046f565b62000454838362000376565b80600019048211156200046b576200046b62000360565b0290505b92915050565b60006200048660ff841683620003bf565b9392505050565b6000816000190483118215151615620004aa57620004aa62000360565b500290565b600082620004cd57634e487b7160e01b600052601260045260246000fd5b500490565b600061ffff808316818516808303821115620004f257620004f262000360565b01949350505050565b6125e1806200050b6000396000f3fe60806040526004361061016a5760003560e01c80638c194bd9116100d1578063d01dc84b1161008a578063de1a356c11610064578063de1a356c1461058c578063e4dbc45b146105ac578063f2fde38b146105cc578063ffb54a99146105ec57600080fd5b8063d01dc84b146104e6578063db7a460514610506578063dd62ed3e1461054657600080fd5b80638c194bd9146103e3578063931b68ea1461040357806395d89b4114610464578063a9059cbb14610491578063b1421803146104b1578063bc37e1a3146104d157600080fd5b80632b38400e116101235780632b38400e14610270578063313ce567146102f757806358d2b4a5146103135780636d1b229d146103545780636f89e4091461037457806370a08231146103ad57600080fd5b806306fdde0314610176578063095ea7b3146101bb57806309ef509f146101eb57806318160ddd1461020d57806318839bc31461023057806323b872dd1461025057600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600a8152694d616461726120496e7560b01b60208201525b6040516101b29190611f92565b60405180910390f35b3480156101c757600080fd5b506101db6101d6366004611ffc565b610601565b60405190151581526020016101b2565b3480156101f757600080fd5b5061020b610206366004612039565b61069a565b005b34801561021957600080fd5b50610222610818565b6040519081526020016101b2565b34801561023c57600080fd5b5061020b61024b36600461208c565b610838565b34801561025c57600080fd5b506101db61026b3660046120c8565b6108d9565b34801561027c57600080fd5b506005546040805160ff6201000084048116825263010000008404811660208301526401000000008404811692820192909252650100000000008304909116606082015261ffff600160301b830481166080830152600160401b8304811660a0830152600160501b90920490911660c082015260e0016101b2565b34801561030357600080fd5b50604051600981526020016101b2565b34801561031f57600080fd5b5061033361032e366004612109565b6109b5565b604080519315158452602084019290925261ffff16908201526060016101b2565b34801561036057600080fd5b5061020b61036f366004612126565b610a0a565b34801561038057600080fd5b506006546007546008546009546040805194855260208501939093529183015260608201526080016101b2565b3480156103b957600080fd5b506102226103c8366004612109565b6001600160a01b031660009081526001602052604090205490565b3480156103ef57600080fd5b5061020b6103fe36600461213f565b610a70565b34801561040f57600080fd5b5061044d61041e366004612109565b6001600160a01b03166000908152600c6020908152604080832054600d9092529091205460ff91821692911690565b6040805192151583529015156020830152016101b2565b34801561047057600080fd5b506040805180820190915260048152634d494e5560e01b60208201526101a5565b34801561049d57600080fd5b506101db6104ac366004611ffc565b610b03565b3480156104bd57600080fd5b5061020b6104cc366004612184565b610b5e565b3480156104dd57600080fd5b5061020b610ceb565b3480156104f257600080fd5b5061020b610501366004612109565b61101f565b34801561051257600080fd5b50600054600b54600a54604080516001600160a01b03948516815292841660208401529216918101919091526060016101b2565b34801561055257600080fd5b506102226105613660046121ae565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561059857600080fd5b5061020b6105a73660046121e7565b6110cc565b3480156105b857600080fd5b5061020b6105c7366004612235565b6111cb565b3480156105d857600080fd5b5061020b6105e7366004612109565b6112b8565b3480156105f857600080fd5b506101db611330565b600043600e541180156106245750336000908152600f602052604090205460ff16155b156106355761063533436001611366565b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000546001600160a01b031633146106cd5760405162461bcd60e51b81526004016106c490612289565b60405180910390fd5b6005546106e49062010000900460ff1660026122e9565b60ff166106f18385612312565b60ff1611156107355760405162461bcd60e51b815260206004820152601060248201526f082ecce40e8c2f040e8dede40d0d2ced60831b60448201526064016106c4565b60055460ff62010000909104811690821611156107835760405162461bcd60e51b815260206004820152600c60248201526b0a8c2f040e8dede40d0d2ced60a31b60448201526064016106c4565b6005805464ffff0000001916630100000060ff86811691820264ff000000001916929092176401000000008684169081029190911765ff000000000019166501000000000093861693840217909355604080519182526020820193909352918201527f3936da96a2d6c0884221e809bd19e72c2f0ac9e9d7e63d75e371a66e8f71144a906060015b60405180910390a1505050565b60006108266009600a612413565b61083390620f4240612422565b905090565b6000546001600160a01b031633146108625760405162461bcd60e51b81526004016106c490612289565b6001600160a01b0383166000818152600c60209081526040808320805487151560ff199182168117909255600d84529382902080548715159516851790558151948552918401919091528201527fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed09060600161080b565b60006108e36113ff565b6109225760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016106c4565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146109a2576001600160a01b038416600090815260026020908152604080832033845290915290205461097d908390612441565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6109ad848484611432565b949350505050565b6001600160a01b038116600090815260106020526040812054819081908190156109dd575060015b6001600160a01b03949094166000908152601060205260409020546005549495909461ffff169350915050565b3360009081526001602052604090205480821115610a625760405162461bcd60e51b8152602060048201526015602482015274546f6b656e2062616c616e636520746f6f206c6f7760581b60448201526064016106c4565b610a6c82336117a8565b5050565b6000546001600160a01b03163314610a9a5760405162461bcd60e51b81526004016106c490612289565b8115610af4573060009081526001602052604090205480610ae95760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016106c4565b610af2816118a2565b505b8015610a6c57610a6c47611994565b6000610b0d6113ff565b610b4c5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016106c4565b610b57338484611432565b9392505050565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016106c490612289565b60006103e861ffff8416610b9e6009600a612413565b610bab90620f4240612422565b610bb59190612422565b610bbf9190612458565b610bca90600161247a565b9050600654811015610c115760405162461bcd60e51b815260206004820152601060248201526f7478206c696d697420746f6f206c6f7760801b60448201526064016106c4565b600681905560006103e861ffff8416610c2c6009600a612413565b610c3990620f4240612422565b610c439190612422565b610c4d9190612458565b610c5890600161247a565b9050600754811015610ca35760405162461bcd60e51b815260206004820152601460248201527377616c6c6574206c696d697420746f6f206c6f7760601b60448201526064016106c4565b600781905560065460408051918252602082018390527f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f791015b60405180910390a150505050565b6000546001600160a01b03163314610d155760405162461bcd60e51b81526004016106c490612289565b610d1d6119e4565b15610d615760405162461bcd60e51b81526020600482015260146024820152733a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016106c4565b600b546001600160a01b031615610dad5760405162461bcd60e51b815260206004820152601060248201526f131408185b1c9958591e48185919195960821b60448201526064016106c4565b306000908152600f602090815260408083208054600160ff19918216811790925584546001600160a01b0390811686528386208054831684179055600a5481168652948390208054909116909117905560125481516315ab88c960e31b8152915193169263ad5c4648926004808401939192918290030181865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612492565b60118054610100600160a81b0319166101006001600160a01b03938416021790556012546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee49190612492565b6011546040516364e329cb60e11b81523060048201526001600160a01b036101009092048216602482015291169063c9c65396906044016020604051808303816000875af1158015610f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5e9190612492565b600b80546001600160a01b0319166001600160a01b0392831690811782556000908152600460209081526040808320805460ff19908116600190811790925594549095168352600f82528083208054909416851790935530825292909252902054479080610ffa5760405162461bcd60e51b81526020600482015260096024820152686e6f20746f6b656e7360b81b60448201526064016106c4565b611003816119fa565b61100f81836000611a9e565b600e61101a81611b4f565b505050565b6000546001600160a01b031633146110495760405162461bcd60e51b81526004016106c490612289565b600a80546001600160a01b0319166001600160a01b0383169081179091556000818152600c60209081526040808320805460ff199081166001908117909255600d84529382902080549094161790925590519182527ea263b61aab5ebdcff20c4c0c74c2589ea5ab52149abde19eca17ad5221789991015b60405180910390a150565b6000546001600160a01b031633146110f65760405162461bcd60e51b81526004016106c490612289565b6005805469ffffffff0000000000001916600160301b61ffff868116820269ffff0000000000000000191692909217600160401b86841681029190911761ffff60501b1916600160501b868516810291909117948590558404831693611164939181048216929004166124af565b61116e91906124af565b6005805461ffff60601b1916600160601b61ffff938416021790556040805185831681528483166020820152918316908201527f09d1c6e0dc7290333e3eb301ba9b06f7ec15ce885a8a1efc702befd956c1bd939060600161080b565b6000546001600160a01b031633146111f55760405162461bcd60e51b81526004016106c490612289565b63ffffffff80841690851661120c6009600a612413565b61121990620f4240612422565b6112239190612422565b61122d9190612458565b60085563ffffffff8082169083166112476009600a612413565b61125490620f4240612422565b61125e9190612422565b6112689190612458565b60098190556008541061127a57600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb600854600954604051610cdd929190918252602082015260400190565b6000546001600160a01b031633146112e25760405162461bcd60e51b81526004016106c490612289565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163906020016110c1565b600061133a6119e4565b80156113535750600e5461134f90600a61247a565b4310155b15611360576108336119e4565b50600090565b6001600160a01b0383166000908152600f602052604090205460ff161580156113a557506001600160a01b038316600090815260106020526040902054155b1561101a576001600160a01b0383166000908152601060205260409020829055801561101a576005805461ffff169060006113df836124d5565b91906101000a81548161ffff021916908361ffff16021790555050505050565b60008061140a6119e4565b1561141757506001919050565b6000546001600160a01b0316320361142d575060015b919050565b60006001600160a01b0384161580159061145457506001600160a01b03831615155b6114a05760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064016106c4565b43600e5411156114ff576001600160a01b03841660009081526010602052604081205490036114da576114d583436001611366565b611542565b6001600160a01b0384166000908152601060205260408120546114d591859190611366565b6001600160a01b03841660009081526010602052604090205415611542576001600160a01b03841660009081526010602052604081205461154291859190611366565b61154a6119e4565b801561156d57506001600160a01b03841660009081526010602052604090205415155b801561159057506001600160a01b03841660009081526010602052604090205443115b156115cb5760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b60448201526064016106c4565b60115460ff161580156115f657506001600160a01b03831660009081526004602052604090205460ff165b1561160357611603611c19565b6001600160a01b038416301480159061162557506001600160a01b0383163014155b801561163f57506000546001600160a01b03858116911614155b1561168f5761164f848484611db2565b61168f5760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b60448201526064016106c4565b600061169c858585611e7c565b905060006116aa8285612441565b6001600160a01b0387166000908152600160205260409020549091506116d1908590612441565b6001600160a01b038716600090815260016020526040902055811561171c573060009081526001602052604090205461170b90839061247a565b306000908152600160205260409020555b6001600160a01b03851660009081526001602052604090205461174090829061247a565b6001600160a01b0380871660008181526001602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117949088815260200190565b60405180910390a350600195945050505050565b8115610a6c576001600160a01b038116600090815260016020526040812080548492906117d6908490612441565b9091555050600080805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49805484929061181690849061247a565b90915550506040518281526000906001600160a01b038316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3604080516001600160a01b0383168152602081018490527ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6910160405180910390a15050565b6118ab816119fa565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106118e0576118e06124f6565b6001600160a01b03928316602091820292909201015260115482516101009091049091169082906001908110611918576119186124f6565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac9479061195e90859060009086903090429060040161250c565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505050565b600554600160501b900461ffff16156119e157600a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a6c573d6000803e3d6000fd5b50565b6003546000908190431061142d57506001919050565b306000908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156119e157306000818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350565b600081611ab357506000546001600160a01b03165b60125460405163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611b21573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b46919061257d565b50505050505050565b611b5b6009600a612413565b612710611b6a6009600a612413565b611b7790620f4240612422565b611b82906064612422565b611b8c9190612458565b611b96919061247a565b600655611ba56009600a612413565b612710611bb46009600a612413565b611bc190620f4240612422565b611bcc906064612422565b611bd69190612458565b611be0919061247a565b6007556005805465ffffff0000001916640805000000179055611c03814361247a565b6003819055611c1390600961247a565b600e5550565b6011805460ff191660011790556000611c47306001600160a01b031660009081526001602052604090205490565b90506008548110158015611c5e5750611c5e6119e4565b15611da5576009548110611c7157506009545b60055460009060029061ffff600160601b8204811691611c9a91600160301b9091041685612422565b611ca49190612458565b611cae9190612458565b60055490915060009061ffff600160601b8204811691611cd791600160401b9091041685612422565b611ce19190612458565b9050611ced81306117a8565b600082611cfa8386612441565b611d049190612441565b9050611d126009600a612413565b8110611d905747611d22826118a2565b6000611d2e8247612441565b600554909150600160301b900461ffff1615611d8d5760055460009061ffff600160601b8204811691611d6a91600160301b9091041684612422565b611d749190612458565b9050611d7f866119fa565b611d8b86826000611a9e565b505b50505b478015611da057611da081611994565b505050505b506011805460ff19169055565b60006001611dbe6119e4565b8015611de357506001600160a01b0384166000908152600d602052604090205460ff16155b8015611e0857506001600160a01b0385166000908152600d602052604090205460ff16155b156109ad57600654831115611e1f575060006109ad565b6001600160a01b03841660009081526004602052604090205460ff16158015611e6c57506007546001600160a01b038516600090815260016020526040902054611e6a90859061247a565b115b156109ad57506000949350505050565b600080611e876119e4565b1580611eab57506001600160a01b0385166000908152600c602052604090205460ff165b80611ece57506001600160a01b0384166000908152600c602052604090205460ff165b15611edb575060006109ad565b6001600160a01b03851660009081526004602052604090205460ff1615611f2757600554606490611f16906301000000900460ff1685612422565b611f209190612458565b90506109ad565b6001600160a01b03841660009081526004602052604090205460ff1615611f6357600554606490611f1690640100000000900460ff1685612422565b600554606490611f7f9065010000000000900460ff1685612422565b611f899190612458565b95945050505050565b600060208083528351808285015260005b81811015611fbf57858101830151858201604001528201611fa3565b81811115611fd1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119e157600080fd5b6000806040838503121561200f57600080fd5b823561201a81611fe7565b946020939093013593505050565b803560ff8116811461142d57600080fd5b60008060006060848603121561204e57600080fd5b61205784612028565b925061206560208501612028565b915061207360408501612028565b90509250925092565b8035801515811461142d57600080fd5b6000806000606084860312156120a157600080fd5b83356120ac81611fe7565b92506120ba6020850161207c565b91506120736040850161207c565b6000806000606084860312156120dd57600080fd5b83356120e881611fe7565b925060208401356120f881611fe7565b929592945050506040919091013590565b60006020828403121561211b57600080fd5b8135610b5781611fe7565b60006020828403121561213857600080fd5b5035919050565b6000806040838503121561215257600080fd5b61215b8361207c565b91506121696020840161207c565b90509250929050565b803561ffff8116811461142d57600080fd5b6000806040838503121561219757600080fd5b6121a083612172565b915061216960208401612172565b600080604083850312156121c157600080fd5b82356121cc81611fe7565b915060208301356121dc81611fe7565b809150509250929050565b6000806000606084860312156121fc57600080fd5b61220584612172565b925061221360208501612172565b915061207360408501612172565b803563ffffffff8116811461142d57600080fd5b6000806000806080858703121561224b57600080fd5b61225485612221565b935061226260208601612221565b925061227060408601612221565b915061227e60608601612221565b905092959194509250565b6020808252602a908201527f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c207468696040820152693990333ab731ba34b7b760b11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168160ff048111821515161561230a5761230a6122d3565b029392505050565b600060ff821660ff84168060ff0382111561232f5761232f6122d3565b019392505050565b600181815b80851115612372578160001904821115612358576123586122d3565b8085161561236557918102915b93841c939080029061233c565b509250929050565b60008261238957506001610694565b8161239657506000610694565b81600181146123ac57600281146123b6576123d2565b6001915050610694565b60ff8411156123c7576123c76122d3565b50506001821b610694565b5060208310610133831016604e8410600b84101617156123f5575081810a610694565b6123ff8383612337565b806000190482111561230a5761230a6122d3565b6000610b5760ff84168361237a565b600081600019048311821515161561243c5761243c6122d3565b500290565b600082821015612453576124536122d3565b500390565b60008261247557634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561248d5761248d6122d3565b500190565b6000602082840312156124a457600080fd5b8151610b5781611fe7565b600061ffff8083168185168083038211156124cc576124cc6122d3565b01949350505050565b600061ffff8083168181036124ec576124ec6122d3565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561255c5784516001600160a01b031683529383019391830191600101612537565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561259257600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220798c6ebfc5ece0695f91430edb722b95b44c3b1e6f5be61e37f6713fbb67ef6064736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80638c194bd9116100d1578063d01dc84b1161008a578063de1a356c11610064578063de1a356c1461058c578063e4dbc45b146105ac578063f2fde38b146105cc578063ffb54a99146105ec57600080fd5b8063d01dc84b146104e6578063db7a460514610506578063dd62ed3e1461054657600080fd5b80638c194bd9146103e3578063931b68ea1461040357806395d89b4114610464578063a9059cbb14610491578063b1421803146104b1578063bc37e1a3146104d157600080fd5b80632b38400e116101235780632b38400e14610270578063313ce567146102f757806358d2b4a5146103135780636d1b229d146103545780636f89e4091461037457806370a08231146103ad57600080fd5b806306fdde0314610176578063095ea7b3146101bb57806309ef509f146101eb57806318160ddd1461020d57806318839bc31461023057806323b872dd1461025057600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600a8152694d616461726120496e7560b01b60208201525b6040516101b29190611f92565b60405180910390f35b3480156101c757600080fd5b506101db6101d6366004611ffc565b610601565b60405190151581526020016101b2565b3480156101f757600080fd5b5061020b610206366004612039565b61069a565b005b34801561021957600080fd5b50610222610818565b6040519081526020016101b2565b34801561023c57600080fd5b5061020b61024b36600461208c565b610838565b34801561025c57600080fd5b506101db61026b3660046120c8565b6108d9565b34801561027c57600080fd5b506005546040805160ff6201000084048116825263010000008404811660208301526401000000008404811692820192909252650100000000008304909116606082015261ffff600160301b830481166080830152600160401b8304811660a0830152600160501b90920490911660c082015260e0016101b2565b34801561030357600080fd5b50604051600981526020016101b2565b34801561031f57600080fd5b5061033361032e366004612109565b6109b5565b604080519315158452602084019290925261ffff16908201526060016101b2565b34801561036057600080fd5b5061020b61036f366004612126565b610a0a565b34801561038057600080fd5b506006546007546008546009546040805194855260208501939093529183015260608201526080016101b2565b3480156103b957600080fd5b506102226103c8366004612109565b6001600160a01b031660009081526001602052604090205490565b3480156103ef57600080fd5b5061020b6103fe36600461213f565b610a70565b34801561040f57600080fd5b5061044d61041e366004612109565b6001600160a01b03166000908152600c6020908152604080832054600d9092529091205460ff91821692911690565b6040805192151583529015156020830152016101b2565b34801561047057600080fd5b506040805180820190915260048152634d494e5560e01b60208201526101a5565b34801561049d57600080fd5b506101db6104ac366004611ffc565b610b03565b3480156104bd57600080fd5b5061020b6104cc366004612184565b610b5e565b3480156104dd57600080fd5b5061020b610ceb565b3480156104f257600080fd5b5061020b610501366004612109565b61101f565b34801561051257600080fd5b50600054600b54600a54604080516001600160a01b03948516815292841660208401529216918101919091526060016101b2565b34801561055257600080fd5b506102226105613660046121ae565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561059857600080fd5b5061020b6105a73660046121e7565b6110cc565b3480156105b857600080fd5b5061020b6105c7366004612235565b6111cb565b3480156105d857600080fd5b5061020b6105e7366004612109565b6112b8565b3480156105f857600080fd5b506101db611330565b600043600e541180156106245750336000908152600f602052604090205460ff16155b156106355761063533436001611366565b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000546001600160a01b031633146106cd5760405162461bcd60e51b81526004016106c490612289565b60405180910390fd5b6005546106e49062010000900460ff1660026122e9565b60ff166106f18385612312565b60ff1611156107355760405162461bcd60e51b815260206004820152601060248201526f082ecce40e8c2f040e8dede40d0d2ced60831b60448201526064016106c4565b60055460ff62010000909104811690821611156107835760405162461bcd60e51b815260206004820152600c60248201526b0a8c2f040e8dede40d0d2ced60a31b60448201526064016106c4565b6005805464ffff0000001916630100000060ff86811691820264ff000000001916929092176401000000008684169081029190911765ff000000000019166501000000000093861693840217909355604080519182526020820193909352918201527f3936da96a2d6c0884221e809bd19e72c2f0ac9e9d7e63d75e371a66e8f71144a906060015b60405180910390a1505050565b60006108266009600a612413565b61083390620f4240612422565b905090565b6000546001600160a01b031633146108625760405162461bcd60e51b81526004016106c490612289565b6001600160a01b0383166000818152600c60209081526040808320805487151560ff199182168117909255600d84529382902080548715159516851790558151948552918401919091528201527fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed09060600161080b565b60006108e36113ff565b6109225760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016106c4565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146109a2576001600160a01b038416600090815260026020908152604080832033845290915290205461097d908390612441565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6109ad848484611432565b949350505050565b6001600160a01b038116600090815260106020526040812054819081908190156109dd575060015b6001600160a01b03949094166000908152601060205260409020546005549495909461ffff169350915050565b3360009081526001602052604090205480821115610a625760405162461bcd60e51b8152602060048201526015602482015274546f6b656e2062616c616e636520746f6f206c6f7760581b60448201526064016106c4565b610a6c82336117a8565b5050565b6000546001600160a01b03163314610a9a5760405162461bcd60e51b81526004016106c490612289565b8115610af4573060009081526001602052604090205480610ae95760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b60448201526064016106c4565b610af2816118a2565b505b8015610a6c57610a6c47611994565b6000610b0d6113ff565b610b4c5760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016106c4565b610b57338484611432565b9392505050565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016106c490612289565b60006103e861ffff8416610b9e6009600a612413565b610bab90620f4240612422565b610bb59190612422565b610bbf9190612458565b610bca90600161247a565b9050600654811015610c115760405162461bcd60e51b815260206004820152601060248201526f7478206c696d697420746f6f206c6f7760801b60448201526064016106c4565b600681905560006103e861ffff8416610c2c6009600a612413565b610c3990620f4240612422565b610c439190612422565b610c4d9190612458565b610c5890600161247a565b9050600754811015610ca35760405162461bcd60e51b815260206004820152601460248201527377616c6c6574206c696d697420746f6f206c6f7760601b60448201526064016106c4565b600781905560065460408051918252602082018390527f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f791015b60405180910390a150505050565b6000546001600160a01b03163314610d155760405162461bcd60e51b81526004016106c490612289565b610d1d6119e4565b15610d615760405162461bcd60e51b81526020600482015260146024820152733a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016106c4565b600b546001600160a01b031615610dad5760405162461bcd60e51b815260206004820152601060248201526f131408185b1c9958591e48185919195960821b60448201526064016106c4565b306000908152600f602090815260408083208054600160ff19918216811790925584546001600160a01b0390811686528386208054831684179055600a5481168652948390208054909116909117905560125481516315ab88c960e31b8152915193169263ad5c4648926004808401939192918290030181865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612492565b60118054610100600160a81b0319166101006001600160a01b03938416021790556012546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee49190612492565b6011546040516364e329cb60e11b81523060048201526001600160a01b036101009092048216602482015291169063c9c65396906044016020604051808303816000875af1158015610f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5e9190612492565b600b80546001600160a01b0319166001600160a01b0392831690811782556000908152600460209081526040808320805460ff19908116600190811790925594549095168352600f82528083208054909416851790935530825292909252902054479080610ffa5760405162461bcd60e51b81526020600482015260096024820152686e6f20746f6b656e7360b81b60448201526064016106c4565b611003816119fa565b61100f81836000611a9e565b600e61101a81611b4f565b505050565b6000546001600160a01b031633146110495760405162461bcd60e51b81526004016106c490612289565b600a80546001600160a01b0319166001600160a01b0383169081179091556000818152600c60209081526040808320805460ff199081166001908117909255600d84529382902080549094161790925590519182527ea263b61aab5ebdcff20c4c0c74c2589ea5ab52149abde19eca17ad5221789991015b60405180910390a150565b6000546001600160a01b031633146110f65760405162461bcd60e51b81526004016106c490612289565b6005805469ffffffff0000000000001916600160301b61ffff868116820269ffff0000000000000000191692909217600160401b86841681029190911761ffff60501b1916600160501b868516810291909117948590558404831693611164939181048216929004166124af565b61116e91906124af565b6005805461ffff60601b1916600160601b61ffff938416021790556040805185831681528483166020820152918316908201527f09d1c6e0dc7290333e3eb301ba9b06f7ec15ce885a8a1efc702befd956c1bd939060600161080b565b6000546001600160a01b031633146111f55760405162461bcd60e51b81526004016106c490612289565b63ffffffff80841690851661120c6009600a612413565b61121990620f4240612422565b6112239190612422565b61122d9190612458565b60085563ffffffff8082169083166112476009600a612413565b61125490620f4240612422565b61125e9190612422565b6112689190612458565b60098190556008541061127a57600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb600854600954604051610cdd929190918252602082015260400190565b6000546001600160a01b031633146112e25760405162461bcd60e51b81526004016106c490612289565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163906020016110c1565b600061133a6119e4565b80156113535750600e5461134f90600a61247a565b4310155b15611360576108336119e4565b50600090565b6001600160a01b0383166000908152600f602052604090205460ff161580156113a557506001600160a01b038316600090815260106020526040902054155b1561101a576001600160a01b0383166000908152601060205260409020829055801561101a576005805461ffff169060006113df836124d5565b91906101000a81548161ffff021916908361ffff16021790555050505050565b60008061140a6119e4565b1561141757506001919050565b6000546001600160a01b0316320361142d575060015b919050565b60006001600160a01b0384161580159061145457506001600160a01b03831615155b6114a05760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064016106c4565b43600e5411156114ff576001600160a01b03841660009081526010602052604081205490036114da576114d583436001611366565b611542565b6001600160a01b0384166000908152601060205260408120546114d591859190611366565b6001600160a01b03841660009081526010602052604090205415611542576001600160a01b03841660009081526010602052604081205461154291859190611366565b61154a6119e4565b801561156d57506001600160a01b03841660009081526010602052604090205415155b801561159057506001600160a01b03841660009081526010602052604090205443115b156115cb5760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b60448201526064016106c4565b60115460ff161580156115f657506001600160a01b03831660009081526004602052604090205460ff165b1561160357611603611c19565b6001600160a01b038416301480159061162557506001600160a01b0383163014155b801561163f57506000546001600160a01b03858116911614155b1561168f5761164f848484611db2565b61168f5760405162461bcd60e51b815260206004820152601160248201527054582065786365656473206c696d69747360781b60448201526064016106c4565b600061169c858585611e7c565b905060006116aa8285612441565b6001600160a01b0387166000908152600160205260409020549091506116d1908590612441565b6001600160a01b038716600090815260016020526040902055811561171c573060009081526001602052604090205461170b90839061247a565b306000908152600160205260409020555b6001600160a01b03851660009081526001602052604090205461174090829061247a565b6001600160a01b0380871660008181526001602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117949088815260200190565b60405180910390a350600195945050505050565b8115610a6c576001600160a01b038116600090815260016020526040812080548492906117d6908490612441565b9091555050600080805260016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49805484929061181690849061247a565b90915550506040518281526000906001600160a01b038316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3604080516001600160a01b0383168152602081018490527ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6910160405180910390a15050565b6118ab816119fa565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106118e0576118e06124f6565b6001600160a01b03928316602091820292909201015260115482516101009091049091169082906001908110611918576119186124f6565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac9479061195e90859060009086903090429060040161250c565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505050565b600554600160501b900461ffff16156119e157600a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a6c573d6000803e3d6000fd5b50565b6003546000908190431061142d57506001919050565b306000908152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84529091529020548111156119e157306000818152600260209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d808552908352928190206000199081905590519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350565b600081611ab357506000546001600160a01b03165b60125460405163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611b21573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b46919061257d565b50505050505050565b611b5b6009600a612413565b612710611b6a6009600a612413565b611b7790620f4240612422565b611b82906064612422565b611b8c9190612458565b611b96919061247a565b600655611ba56009600a612413565b612710611bb46009600a612413565b611bc190620f4240612422565b611bcc906064612422565b611bd69190612458565b611be0919061247a565b6007556005805465ffffff0000001916640805000000179055611c03814361247a565b6003819055611c1390600961247a565b600e5550565b6011805460ff191660011790556000611c47306001600160a01b031660009081526001602052604090205490565b90506008548110158015611c5e5750611c5e6119e4565b15611da5576009548110611c7157506009545b60055460009060029061ffff600160601b8204811691611c9a91600160301b9091041685612422565b611ca49190612458565b611cae9190612458565b60055490915060009061ffff600160601b8204811691611cd791600160401b9091041685612422565b611ce19190612458565b9050611ced81306117a8565b600082611cfa8386612441565b611d049190612441565b9050611d126009600a612413565b8110611d905747611d22826118a2565b6000611d2e8247612441565b600554909150600160301b900461ffff1615611d8d5760055460009061ffff600160601b8204811691611d6a91600160301b9091041684612422565b611d749190612458565b9050611d7f866119fa565b611d8b86826000611a9e565b505b50505b478015611da057611da081611994565b505050505b506011805460ff19169055565b60006001611dbe6119e4565b8015611de357506001600160a01b0384166000908152600d602052604090205460ff16155b8015611e0857506001600160a01b0385166000908152600d602052604090205460ff16155b156109ad57600654831115611e1f575060006109ad565b6001600160a01b03841660009081526004602052604090205460ff16158015611e6c57506007546001600160a01b038516600090815260016020526040902054611e6a90859061247a565b115b156109ad57506000949350505050565b600080611e876119e4565b1580611eab57506001600160a01b0385166000908152600c602052604090205460ff165b80611ece57506001600160a01b0384166000908152600c602052604090205460ff165b15611edb575060006109ad565b6001600160a01b03851660009081526004602052604090205460ff1615611f2757600554606490611f16906301000000900460ff1685612422565b611f209190612458565b90506109ad565b6001600160a01b03841660009081526004602052604090205460ff1615611f6357600554606490611f1690640100000000900460ff1685612422565b600554606490611f7f9065010000000000900460ff1685612422565b611f899190612458565b95945050505050565b600060208083528351808285015260005b81811015611fbf57858101830151858201604001528201611fa3565b81811115611fd1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119e157600080fd5b6000806040838503121561200f57600080fd5b823561201a81611fe7565b946020939093013593505050565b803560ff8116811461142d57600080fd5b60008060006060848603121561204e57600080fd5b61205784612028565b925061206560208501612028565b915061207360408501612028565b90509250925092565b8035801515811461142d57600080fd5b6000806000606084860312156120a157600080fd5b83356120ac81611fe7565b92506120ba6020850161207c565b91506120736040850161207c565b6000806000606084860312156120dd57600080fd5b83356120e881611fe7565b925060208401356120f881611fe7565b929592945050506040919091013590565b60006020828403121561211b57600080fd5b8135610b5781611fe7565b60006020828403121561213857600080fd5b5035919050565b6000806040838503121561215257600080fd5b61215b8361207c565b91506121696020840161207c565b90509250929050565b803561ffff8116811461142d57600080fd5b6000806040838503121561219757600080fd5b6121a083612172565b915061216960208401612172565b600080604083850312156121c157600080fd5b82356121cc81611fe7565b915060208301356121dc81611fe7565b809150509250929050565b6000806000606084860312156121fc57600080fd5b61220584612172565b925061221360208501612172565b915061207360408501612172565b803563ffffffff8116811461142d57600080fd5b6000806000806080858703121561224b57600080fd5b61225485612221565b935061226260208601612221565b925061227060408601612221565b915061227e60608601612221565b905092959194509250565b6020808252602a908201527f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c207468696040820152693990333ab731ba34b7b760b11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168160ff048111821515161561230a5761230a6122d3565b029392505050565b600060ff821660ff84168060ff0382111561232f5761232f6122d3565b019392505050565b600181815b80851115612372578160001904821115612358576123586122d3565b8085161561236557918102915b93841c939080029061233c565b509250929050565b60008261238957506001610694565b8161239657506000610694565b81600181146123ac57600281146123b6576123d2565b6001915050610694565b60ff8411156123c7576123c76122d3565b50506001821b610694565b5060208310610133831016604e8410600b84101617156123f5575081810a610694565b6123ff8383612337565b806000190482111561230a5761230a6122d3565b6000610b5760ff84168361237a565b600081600019048311821515161561243c5761243c6122d3565b500290565b600082821015612453576124536122d3565b500390565b60008261247557634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561248d5761248d6122d3565b500190565b6000602082840312156124a457600080fd5b8151610b5781611fe7565b600061ffff8083168185168083038211156124cc576124cc6122d3565b01949350505050565b600061ffff8083168181036124ec576124ec6122d3565b6001019392505050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561255c5784516001600160a01b031683529383019391830191600101612537565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561259257600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220798c6ebfc5ece0695f91430edb722b95b44c3b1e6f5be61e37f6713fbb67ef6064736f6c634300080f0033

Deployed Bytecode Sourcemap

2153:15244:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5474:80;;;;;;;;;;-1:-1:-1;5546:5:0;;;;;;;;;;;;-1:-1:-1;;;5546:5:0;;;;5474:80;;;;;;;:::i;:::-;;;;;;;;5803:319;;;;;;;;;;-1:-1:-1;5803:319:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;5803:319:0;1072:187:1;12648:393:0;;;;;;;;;;-1:-1:-1;12648:393:0;;;;;:::i;:::-;;:::i;:::-;;5213:88;;;;;;;;;;;;;:::i;:::-;;;1898:25:1;;;1886:2;1871:18;5213:88:0;1752:177:1;12077:214:0;;;;;;;;;;-1:-1:-1;12077:214:0;;;;;:::i;:::-;;:::i;6332:363::-;;;;;;;;;;-1:-1:-1;6332:363:0;;;;;:::i;:::-;;:::i;12296:347::-;;;;;;;;;;-1:-1:-1;12507:19:0;;12296:347;;;12507:19;;;;;;3241:36:1;;12528:14:0;;;;;3308:2:1;3293:18;;3286:45;12544:15:0;;;;;3347:18:1;;;3340:45;;;;12561:19:0;;;;;;3416:2:1;3401:18;;3394:45;12582:16:0;-1:-1:-1;;;12582:16:0;;;;3495:3:1;3480:19;;3473:44;-1:-1:-1;;;12600:14:0;;;;3548:3:1;3533:19;;3526:44;-1:-1:-1;;;12616:21:0;;;;;;3601:3:1;3586:19;;3579:44;3228:3;3213:19;12296:347:0;2948:681:1;5304:80:0;;;;;;;;;;-1:-1:-1;5304:80:0;;2297:1;3776:36:1;;3764:2;3749:18;5304:80:0;3634:184:1;11606:313:0;;;;;;;;;;-1:-1:-1;11606:313:0;;;;;:::i;:::-;;:::i;:::-;;;;4294:14:1;;4287:22;4269:41;;4341:2;4326:18;;4319:34;;;;4401:6;4389:19;4369:18;;;4362:47;4257:2;4242:18;11606:313:0;4075:340:1;17190:204:0;;;;;;;;;;-1:-1:-1;17190:204:0;;;;;:::i;:::-;;:::i;13886:216::-;;;;;;;;;;-1:-1:-1;14028:15:0;;14045:19;;14066:14;;14082;;13886:216;;;4836:25:1;;;4892:2;4877:18;;4870:34;;;;4920:18;;;4913:34;4978:2;4963:18;;4956:34;4823:3;4808:19;13886:216:0;4605:391:1;5557:105:0;;;;;;;;;;-1:-1:-1;5557:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;5641:18:0;5623:7;5641:18;;;:9;:18;;;;;;;5557:105;16857:328;;;;;;;;;;-1:-1:-1;16857:328:0;;;;;:::i;:::-;;:::i;11924:148::-;;;;;;;;;;-1:-1:-1;11924:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;12026:18:0;11985:11;12026:18;;;:10;:18;;;;;;;;;12046:12;:20;;;;;;;12026:18;;;;;12046:20;;;11924:148;;;;;5441:14:1;;5434:22;5416:41;;5500:14;;5493:22;5488:2;5473:18;;5466:50;5389:18;11924:148:0;5254:268:1;5387:84:0;;;;;;;;;;-1:-1:-1;5461:7:0;;;;;;;;;;;;-1:-1:-1;;;5461:7:0;;;;5387:84;;6127:200;;;;;;;;;;-1:-1:-1;6127:200:0;;;;;:::i;:::-;;:::i;14107:505::-;;;;;;;;;;-1:-1:-1;14107:505:0;;;;;:::i;:::-;;:::i;6700:874::-;;;;;;;;;;;;;:::i;13614:267::-;;;;;;;;;;-1:-1:-1;13614:267:0;;;;;:::i;:::-;;:::i;13441:168::-;;;;;;;;;;-1:-1:-1;13485:21:0;13565:5;13572:14;;13588:15;;13441:168;;;-1:-1:-1;;;;;13565:5:0;;;6192:34:1;;13572:14:0;;;6257:2:1;6242:18;;6235:43;13588:15:0;;6294:18:1;;;6287:43;;;;6142:2;6127:18;13441:168:0;5952:384:1;5665:133:0;;;;;;;;;;-1:-1:-1;5665:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5767:19:0;;;5749:7;5767:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5665:133;13046:389;;;;;;;;;;-1:-1:-1;13046:389:0;;;;;:::i;:::-;;:::i;14617:347::-;;;;;;;;;;-1:-1:-1;14617:347:0;;;;;:::i;:::-;;:::i;1342:130::-;;;;;;;;;;-1:-1:-1;1342:130:0;;;;;:::i;:::-;;:::i;8563:169::-;;;;;;;;;;;;;:::i;5803:319::-;5878:4;5908:12;5894:11;;:26;:53;;;;-1:-1:-1;5936:10:0;5925:22;;;;:10;:22;;;;;;;;5924:23;5894:53;5889:118;;;5956:45;5970:10;5982:12;5996:4;5956:13;:45::i;:::-;6025:10;6013:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6013:32:0;;;;;;;;;;;;:41;;;6064:37;1898:25:1;;;6013:32:0;;6025:10;6064:37;;1871:18:1;6064:37:0;;;;;;;-1:-1:-1;6113:4:0;5803:319;;;;;:::o;12648:393::-;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;;;;;;;;;12778:19:::1;::::0;12776:21:::1;::::0;12778:19;;::::1;;;;12776:21;:::i;:::-;12752:45;;:20;12762:10:::0;12752:9;:20:::1;:::i;:::-;:45;;;;12744:74;;;::::0;-1:-1:-1;;;12744:74:0;;9098:2:1;12744:74:0::1;::::0;::::1;9080:21:1::0;9137:2;9117:18;;;9110:30;-1:-1:-1;;;9156:18:1;;;9149:46;9212:18;;12744:74:0::1;8896:340:1::0;12744:74:0::1;12843:19;::::0;::::1;::::0;;;::::1;::::0;::::1;12831:31:::0;;::::1;;;12823:56;;;::::0;-1:-1:-1;;;12823:56:0;;9443:2:1;12823:56:0::1;::::0;::::1;9425:21:1::0;9482:2;9462:18;;;9455:30;-1:-1:-1;;;9501:18:1;;;9494:42;9553:18;;12823:56:0::1;9241:336:1::0;12823:56:0::1;12884:14;:26:::0;;-1:-1:-1;;12915:28:0;12884:26;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;12915:28:0;;;;;;;;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;12948:30:0::1;::::0;;;::::1;::::0;;::::1;;::::0;;;12988:48:::1;::::0;;9772:36:1;;;9839:2;9824:18;;9817:45;;;;9878:18;;;9871:45;12988:48:0::1;::::0;9760:2:1;9745:18;12988:48:0::1;;;;;;;;12648:393:::0;;;:::o;5213:88::-;5268:7;2346:13;2297:1;2346:2;:13;:::i;:::-;2334:25;;:9;:25;:::i;:::-;5279:19;;5213:88;:::o;12077:214::-;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12168:18:0;::::1;;::::0;;;:10:::1;:18;::::0;;;;;;;:27;;;::::1;;-1:-1:-1::0;;12168:27:0;;::::1;::::0;::::1;::::0;;;12200:12:::1;:20:::0;;;;;;:31;;;::::1;;::::0;::::1;::::0;::::1;::::0;;12241:45;;11673:51:1;;;11740:18;;;11733:50;;;;11799:18;;11792:50;12241:45:0::1;::::0;11661:2:1;11646:18;12241:45:0::1;11483:365:1::0;6332:363:0;6432:4;6451:19;:17;:19::i;:::-;6443:48;;;;-1:-1:-1;;;6443:48:0;;12055:2:1;6443:48:0;;;12037:21:1;12094:2;12074:18;;;12067:30;-1:-1:-1;;;12113:18:1;;;12106:46;12169:18;;6443:48:0;11853:340:1;6443:48:0;-1:-1:-1;;;;;6500:19:0;;;;;;:11;:19;;;;;;;;6520:10;6500:31;;;;;;;;-1:-1:-1;;6500:52:0;6496:143;;-1:-1:-1;;;;;6593:19:0;;;;;;:11;:19;;;;;;;;6613:10;6593:31;;;;;;;;:40;;6627:6;;6593:40;:::i;:::-;-1:-1:-1;;;;;6559:19:0;;;;;;:11;:19;;;;;;;;6579:10;6559:31;;;;;;;:74;6496:143;6650:40;6664:6;6672:9;6683:6;6650:13;:40::i;:::-;6643:47;6332:363;-1:-1:-1;;;;6332:363:0:o;11606:313::-;-1:-1:-1;;;;;11782:23:0;;11672:18;11782:23;;;:15;:23;;;;;;11672:18;;;;;;11782:28;11777:62;;-1:-1:-1;11832:4:0;11777:62;-1:-1:-1;;;;;11868:23:0;;;;;;;;:15;:23;;;;;;11893:19;;11852:14;;11868:23;;11893:19;;;-1:-1:-1;11606:313:0;-1:-1:-1;;11606:313:0:o;17190:204::-;17277:10;17240:24;5641:18;;;:9;:18;;;;;;17301:26;;;;17293:60;;;;-1:-1:-1;;;17293:60:0;;12530:2:1;17293:60:0;;;12512:21:1;12569:2;12549:18;;;12542:30;-1:-1:-1;;;12588:18:1;;;12581:51;12649:18;;17293:60:0;12328:345:1;17293:60:0;17358:31;17370:6;17378:10;17358:11;:31::i;:::-;17235:159;17190:204;:::o;16857:328::-;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;16943:10:::1;16939:168;;;17005:4;16961:23;5641:18:::0;;;:9;:18;;;;;;17025:19;17017:41:::1;;;::::0;-1:-1:-1;;;17017:41:0;;12880:2:1;17017:41:0::1;::::0;::::1;12862:21:1::0;12919:1;12899:18;;;12892:29;-1:-1:-1;;;12937:18:1;;;12930:39;12986:18;;17017:41:0::1;12678:332:1::0;17017:41:0::1;17064:37;17085:15;17064:20;:37::i;:::-;16955:152;16939:168;17119:7;17115:66;;;17134:40;17152:21;17134:17;:40::i;6127:200::-:0;6207:4;6226:19;:17;:19::i;:::-;6218:48;;;;-1:-1:-1;;;6218:48:0;;12055:2:1;6218:48:0;;;12037:21:1;12094:2;12074:18;;;12067:30;-1:-1:-1;;;12113:18:1;;;12106:46;12169:18;;6218:48:0;11853:340:1;6218:48:0;6278:44;6292:10;6304:9;6315:6;6278:13;:44::i;:::-;6271:51;6127:200;-1:-1:-1;;;6127:200:0:o;14107:505::-;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;14207:16:::1;14259:4;14226:30;::::0;::::1;2346:13;2297:1;2346:2;:13;:::i;:::-;2334:25;::::0;:9:::1;:25;:::i;:::-;14226:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;::::0;14266:1:::1;14226:41;:::i;:::-;14207:60;;14292:15;;14280:8;:27;;14272:56;;;::::0;-1:-1:-1;;;14272:56:0;;13572:2:1;14272:56:0::1;::::0;::::1;13554:21:1::0;13611:2;13591:18;;;13584:30;-1:-1:-1;;;13630:18:1;;;13623:46;13686:18;;14272:56:0::1;13370:340:1::0;14272:56:0::1;14333:15;:26:::0;;;14364:20:::1;14424:4;14387:34;::::0;::::1;2346:13;2297:1;2346:2;:13;:::i;:::-;2334:25;::::0;:9:::1;:25;:::i;:::-;14387:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;::::0;14431:1:::1;14387:45;:::i;:::-;14364:68;;14461:19;;14445:12;:35;;14437:68;;;::::0;-1:-1:-1;;;14437:68:0;;13917:2:1;14437:68:0::1;::::0;::::1;13899:21:1::0;13956:2;13936:18;;;13929:30;-1:-1:-1;;;13975:18:1;;;13968:50;14035:18;;14437:68:0::1;13715:344:1::0;14437:68:0::1;14510:19;:34:::0;;;14570:15:::1;::::0;14554:53:::1;::::0;;14238:25:1;;;14294:2;14279:18;;14272:34;;;14554:53:0::1;::::0;14211:18:1;14554:53:0::1;;;;;;;;14202:410;;14107:505:::0;;:::o;6700:874::-;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;6750:14:::1;:12;:14::i;:::-;6749:15;6741:48;;;::::0;-1:-1:-1;;;6741:48:0;;14519:2:1;6741:48:0::1;::::0;::::1;14501:21:1::0;14558:2;14538:18;;;14531:30;-1:-1:-1;;;14577:18:1;;;14570:50;14637:18;;6741:48:0::1;14317:344:1::0;6741:48:0::1;6802:14;::::0;-1:-1:-1;;;;;6802:14:0::1;:28:::0;6794:57:::1;;;::::0;-1:-1:-1;;;6794:57:0;;14868:2:1;6794:57:0::1;::::0;::::1;14850:21:1::0;14907:2;14887:18;;;14880:30;-1:-1:-1;;;14926:18:1;;;14919:46;14982:18;;6794:57:0::1;14666:340:1::0;6794:57:0::1;6877:4;6858:25;::::0;;;:10:::1;:25;::::0;;;;;;;:32;;6886:4:::1;-1:-1:-1::0;;6858:32:0;;::::1;::::0;::::1;::::0;;;6906:5;;-1:-1:-1;;;;;6906:5:0;;::::1;6895:17:::0;;;;;:24;;;::::1;::::0;::::1;::::0;;6935:15:::1;::::0;;::::1;6924:27:::0;;;;;;:34;;;;::::1;::::0;;::::1;::::0;;6980:16:::1;::::0;:23;;-1:-1:-1;;;6980:23:0;;;;:16;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;6858:25;;6980:23;;;;;;:16;:23:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6965:12;:38:::0;;-1:-1:-1;;;;;;6965:38:0::1;;-1:-1:-1::0;;;;;6965:38:0;;::::1;;;::::0;;7043:16:::1;::::0;:26:::1;::::0;;-1:-1:-1;;;7043:26:0;;;;:16;;;::::1;::::0;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:16;:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7097:12;::::0;7025:85:::1;::::0;-1:-1:-1;;;7025:85:0;;7090:4:::1;7025:85;::::0;::::1;15479:34:1::0;-1:-1:-1;;;;;7097:12:0::1;::::0;;::::1;::::0;::::1;15529:18:1::0;;;15522:43;7025:56:0;::::1;::::0;::::1;::::0;15414:18:1;;7025:85:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7008:14;:102:::0;;-1:-1:-1;;;;;;7008:102:0::1;-1:-1:-1::0;;;;;7008:102:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;7117:26:0;;;:10:::1;:26;::::0;;;;;;;:33;;-1:-1:-1;;7117:33:0;;::::1;-1:-1:-1::0;7117:33:0;;::::1;::::0;;;7166:14;;;;::::1;7155:26:::0;;:10:::1;:26:::0;;;;;:33;;;;::::1;::::0;::::1;::::0;;;7351:4:::1;5641:18:::0;;;;;;;;;7225:21:::1;::::0;5641:18;7362:47:::1;;;::::0;-1:-1:-1;;;7362:47:0;;16112:2:1;7362:47:0::1;::::0;::::1;16094:21:1::0;16151:1;16131:18;;;16124:29;-1:-1:-1;;;16169:18:1;;;16162:39;16218:18;;7362:47:0::1;15910:332:1::0;7362:47:0::1;7416:37;7431:21;7416:14;:37::i;:::-;7458:64;7472:21;7495:19;7516:5;7458:13;:64::i;:::-;7543:2;7550:19;7543:2:::0;7550:12:::1;:19::i;:::-;6736:838;;;6700:874::o:0;13614:267::-;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;13691:15:::1;:47:::0;;-1:-1:-1;;;;;;13691:47:0::1;-1:-1:-1::0;;;;;13691:47:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13743:32:0;;;:10:::1;:32;::::0;;;;;;;:39;;-1:-1:-1;;13743:39:0;;::::1;-1:-1:-1::0;13743:39:0;;::::1;::::0;;;13787:12:::1;:34:::0;;;;;;:41;;;;::::1;;::::0;;;13838:38;;16393:51:1;;;13838:38:0::1;::::0;16366:18:1;13838:38:0::1;;;;;;;;13614:267:::0;:::o;13046:389::-;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;13164:16:::1;:31:::0;;-1:-1:-1;;13200:27:0;-1:-1:-1;;;13164:31:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;13200:27:0;;;;;-1:-1:-1;;;13200:27:0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;;13232:41:0::1;-1:-1:-1::0;;;13232:41:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13332:21;::::1;::::0;::::1;::::0;13296:33:::1;::::0;13315:14;;::::1;::::0;::::1;::::0;13296:16;::::1;;:33;:::i;:::-;:57;;;;:::i;:::-;13278:15;:75:::0;;-1:-1:-1;;;;13278:75:0::1;-1:-1:-1::0;;;13278:75:0::1;::::0;;::::1;;;::::0;;13363:67:::1;::::0;;16923:15:1;;;16905:34;;16975:15;;;16970:2;16955:18;;16948:43;17027:15;;;17007:18;;;17000:43;13363:67:0::1;::::0;16868:2:1;16853:18;13363:67:0::1;16684:365:1::0;14617:347:0;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;14756:36:::1;::::0;;::::1;::::0;:23;::::1;2346:13;2297:1;2346:2;:13;:::i;:::-;2334:25;::::0;:9:::1;:25;:::i;:::-;14756:23;;;;:::i;:::-;:36;;;;:::i;:::-;14739:14;:53:::0;14814:36:::1;::::0;;::::1;::::0;:23;::::1;2346:13;2297:1;2346:2;:13;:::i;:::-;2334:25;::::0;:9:::1;:25;:::i;:::-;14814:23;;;;:::i;:::-;:36;;;;:::i;:::-;14797:14;:53:::0;;;14880:14:::1;::::0;-1:-1:-1;14855:40:0::1;;;::::0;::::1;;14905:54;14928:14;;14944;;14905:54;;;;;;14238:25:1::0;;;14294:2;14279:18;;14272:34;14226:2;14211:18;;14064:248;1342:130:0;1281:5;;-1:-1:-1;;;;;1281:5:0;1267:10;:19;1259:74;;;;-1:-1:-1;;;1259:74:0;;;;;;;:::i;:::-;1416:5:::1;:16:::0;;-1:-1:-1;;;;;;1416:16:0::1;-1:-1:-1::0;;;;;1416:16:0;::::1;::::0;;::::1;::::0;;;1439:30:::1;::::0;16393:51:1;;;1439:30:0::1;::::0;16381:2:1;16366:18;1439:30:0::1;16247:203:1::0;8563:169:0;8609:4;8624:14;:12;:14::i;:::-;:50;;;;-1:-1:-1;8658:11:0;;:16;;8672:2;8658:16;:::i;:::-;8642:12;:32;;8624:50;8620:108;;;8685:14;:12;:14::i;8620:108::-;-1:-1:-1;8720:5:0;;8563:169::o;10001:256::-;-1:-1:-1;;;;;10099:18:0;;;;;;:10;:18;;;;;;;;10098:19;:51;;;;-1:-1:-1;;;;;;10121:23:0;;;;;;:15;:23;;;;;;:28;10098:51;10093:160;;;-1:-1:-1;;;;;10159:23:0;;;;;;:15;:23;;;;;:39;;;10205:43;;;;10223:19;:22;;;;;:19;:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;10001:256;;;:::o;10902:222::-;10953:4;;10997:14;:12;:14::i;:::-;10992:104;;;-1:-1:-1;11030:4:0;11108:11;10902:222;-1:-1:-1;10902:222:0:o;10992:104::-;11065:5;;-1:-1:-1;;;;;11065:5:0;11052:9;:18;11047:49;;-1:-1:-1;11089:4:0;11047:49;11108:11;10902:222;-1:-1:-1;10902:222:0:o;8737:1259::-;8829:4;-1:-1:-1;;;;;8848:18:0;;;;;;:43;;-1:-1:-1;;;;;;8870:21:0;;;;8848:43;8840:80;;;;-1:-1:-1;;;8840:80:0;;17674:2:1;8840:80:0;;;17656:21:1;17713:2;17693:18;;;17686:30;17752:26;17732:18;;;17725:54;17796:18;;8840:80:0;17472:348:1;8840:80:0;8944:12;8930:11;;:26;8925:315;;;-1:-1:-1;;;;;8970:23:0;;;;;;:15;:23;;;;;;:28;;8965:156;;9003:44;9017:9;9028:12;9042:4;9003:13;:44::i;:::-;8925:315;;8965:156;-1:-1:-1;;;;;9087:23:0;;;;;;:15;:23;;;;;;9062:56;;9076:9;;9087:23;9062:13;:56::i;8925:315::-;-1:-1:-1;;;;;9143:23:0;;;;;;:15;:23;;;;;;:28;9138:97;;-1:-1:-1;;;;;9201:23:0;;;;;;:15;:23;;;;;;9176:56;;9190:9;;9201:23;9176:13;:56::i;:::-;9251:14;:12;:14::i;:::-;:46;;;;-1:-1:-1;;;;;;9269:23:0;;;;;;:15;:23;;;;;;:28;;9251:46;:88;;;;-1:-1:-1;;;;;;9301:23:0;;;;;;:15;:23;;;;;;9327:12;-1:-1:-1;9251:88:0;9246:122;;;9344:21;;-1:-1:-1;;;9344:21:0;;18027:2:1;9344:21:0;;;18009::1;18066:2;18046:18;;;18039:30;-1:-1:-1;;;18085:18:1;;;18078:41;18136:18;;9344:21:0;17825:335:1;9246:122:0;9380:10;;;;9379:11;:36;;;;-1:-1:-1;;;;;;9394:21:0;;;;;;:10;:21;;;;;;;;9379:36;9374:69;;;9420:20;:18;:20::i;:::-;-1:-1:-1;;;;;9454:23:0;;9472:4;9454:23;;;;:53;;-1:-1:-1;;;;;;9481:26:0;;9502:4;9481:26;;9454:53;:72;;;;-1:-1:-1;9521:5:0;;-1:-1:-1;;;;;9511:15:0;;;9521:5;;9511:15;;9454:72;9449:154;;;9539:39;9552:6;9560:9;9571:6;9539:12;:39::i;:::-;9531:69;;;;-1:-1:-1;;;9531:69:0;;18367:2:1;9531:69:0;;;18349:21:1;18406:2;18386:18;;;18379:30;-1:-1:-1;;;18425:18:1;;;18418:47;18482:18;;9531:69:0;18165:341:1;9531:69:0;9607:18;9628:40;9642:6;9650:9;9661:6;9628:13;:40::i;:::-;9607:61;-1:-1:-1;9673:23:0;9699:19;9607:61;9699:6;:19;:::i;:::-;-1:-1:-1;;;;;9743:17:0;;;;;;:9;:17;;;;;;9673:45;;-1:-1:-1;9743:26:0;;9763:6;;9743:26;:::i;:::-;-1:-1:-1;;;;;9723:17:0;;;;;;:9;:17;;;;;:46;9779:14;;9774:91;;9843:4;9825:24;;;;:9;:24;;;;;;:37;;9852:10;;9825:37;:::i;:::-;9816:4;9798:24;;;;:9;:24;;;;;:64;9774:91;-1:-1:-1;;;;;9892:20:0;;;;;;:9;:20;;;;;;:38;;9915:15;;9892:38;:::i;:::-;-1:-1:-1;;;;;9869:20:0;;;;;;;:9;:20;;;;;;;:61;;;;9940:35;;;;;;;;;;9968:6;1898:25:1;;1886:2;1871:18;;1752:177;9940:35:0;;;;;;;;-1:-1:-1;9987:4:0;;8737:1259;-1:-1:-1;;;;;8737:1259:0:o;14969:266::-;15044:10;;15039:192;;-1:-1:-1;;;;;15063:21:0;;;;;;:9;:21;;;;;:31;;15088:6;;15063:21;:31;;15088:6;;15063:31;:::i;:::-;;;;-1:-1:-1;;15100:21:0;;;;:9;:21;;;:31;;15125:6;;15100:21;:31;;15125:6;;15100:31;:::i;:::-;;;;-1:-1:-1;;15142:40:0;;1898:25:1;;;15171:1:0;;-1:-1:-1;;;;;15142:40:0;;;;;1886:2:1;1871:18;15142:40:0;;;;;;;15193:32;;;-1:-1:-1;;;;;18703:32:1;;18685:51;;18767:2;18752:18;;18745:34;;;15193:32:0;;18658:18:1;15193:32:0;;;;;;;14969:266;;:::o;16394:321::-;16459:28;16474:12;16459:14;:28::i;:::-;16516:16;;;16530:1;16516:16;;;;;;;;16492:21;;16516:16;;;;;;;;;;-1:-1:-1;16516:16:0;16492:40;;16555:4;16537;16542:1;16537:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16537:23:0;;;:7;;;;;;;;;:23;16575:12;;16565:7;;16575:12;;;;;;;;16565:4;;16575:12;;16565:7;;;;;;:::i;:::-;-1:-1:-1;;;;;16565:22:0;;;:7;;;;;;;;;:22;16592:16;;:118;;-1:-1:-1;;;16592:118:0;;:16;;;:67;;:118;;16660:12;;16592:16;;16675:4;;16688;;16694:15;;16592:118;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16454:261;16394:321;:::o;16720:132::-;16782:21;;-1:-1:-1;;;16782:21:0;;;;:25;16777:71;;16812:15;;:33;;-1:-1:-1;;;;;16812:15:0;;;;:33;;;;;16837:7;;16812:15;:33;:15;:33;16837:7;16812:15;:33;;;;;;;;;;;;;;;;;;;16777:71;16720:132;:::o;10737:160::-;10838:17;;10783:4;;;;10822:12;:33;10818:57;;-1:-1:-1;10868:4:0;10886:6;10737:160;-1:-1:-1;10737:160:0:o;7579:299::-;7664:4;7644:26;;;;:11;:26;;;;;;;;3423:42;7644:51;;;;;;;;:66;-1:-1:-1;7639:235:0;;;7739:4;7719:26;;;;:11;:26;;;;;;;;3423:42;7719:51;;;;;;;;;;-1:-1:-1;;7719:71:0;;;;7801:67;;1898:25:1;;;3423:42:0;;7739:4;7801:67;;1871:18:1;7801:67:0;;;;;;;7579:299;:::o;7883:321::-;7980:24;8028:8;8022:46;;-1:-1:-1;8060:5:0;;-1:-1:-1;;;;;8060:5:0;8022:46;8072:16;;:127;;-1:-1:-1;;;8072:127:0;;8137:4;8072:127;;;20380:34:1;20430:18;;;20423:34;;;8072:16:0;20473:18:1;;;20466:34;;;20516:18;;;20509:34;-1:-1:-1;;;;;20580:15:1;;;20559:19;;;20552:44;8182:15:0;20612:19:1;;;20605:35;8072:16:0;;;;:32;;8112:13;;20314:19:1;;8072:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7975:229;7883:321;;;:::o;8209:349::-;8310:13;2297:1;8310:2;:13;:::i;:::-;8302:5;2346:13;2297:1;2346:2;:13;:::i;:::-;2334:25;;:9;:25;:::i;:::-;8281:18;;:3;:18;:::i;:::-;:26;;;;:::i;:::-;:42;;;;:::i;:::-;8259:15;:64;8380:13;2297:1;8380:2;:13;:::i;:::-;8372:5;2346:13;2297:1;2346:2;:13;:::i;:::-;2334:25;;:9;:25;:::i;:::-;8351:18;;:3;:18;:::i;:::-;:26;;;;:::i;:::-;:42;;;;:::i;:::-;8329:19;:64;8415:1;8398:18;;-1:-1:-1;;8445:23:0;8421:19;8445:23;;;8494:19;8509:4;8494:12;:19;:::i;:::-;8474:17;:39;;;8532:21;;8552:1;8532:21;:::i;:::-;8518:11;:35;-1:-1:-1;8209:349:0:o;15240:1149::-;3626:10;:17;;-1:-1:-1;;3626:17:0;3639:4;3626:17;;;:10;15325:24:::1;15343:4;-1:-1:-1::0;;;;;5641:18:0;5623:7;5641:18;;;:9;:18;;;;;;;5557:105;15325:24:::1;15295:54;;15384:14;;15361:19;:37;;:55;;;;;15402:14;:12;:14::i;:::-;15356:1029;;;15453:14;;15430:19;:37;15425:86;;-1:-1:-1::0;15494:14:0::1;::::0;15425:86:::1;15585:15;::::0;15521:20:::1;::::0;15603:1:::1;::::0;15585:15:::1;-1:-1:-1::0;;;15585:15:0;::::1;::::0;::::1;::::0;15544:38:::1;::::0;-1:-1:-1;;;15566:16:0;;::::1;;15544:19:::0;:38:::1;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;15678:15;::::0;15521:83;;-1:-1:-1;15615:21:0::1;::::0;15678:15:::1;-1:-1:-1::0;;;15678:15:0;::::1;::::0;::::1;::::0;15639:36:::1;::::0;-1:-1:-1;;;15661:14:0;;::::1;;15639:19:::0;:36:::1;:::i;:::-;:54;;;;:::i;:::-;15615:78;;15699:41;15711:13;15734:4;15699:11;:41::i;:::-;15748:21;15810:12:::0;15772:35:::1;15794:13:::0;15772:19;:35:::1;:::i;:::-;:50;;;;:::i;:::-;15748:74:::0;-1:-1:-1;15849:13:0::1;2297:1;15849:2;:13;:::i;:::-;15832;:30;15828:415;;15893:21;15921:35;15942:13:::0;15921:20:::1;:35::i;:::-;15963:19;15985:35;16009:11:::0;15985:21:::1;:35;:::i;:::-;16032:16;::::0;15963:57;;-1:-1:-1;;;;16032:16:0;::::1;;;:20:::0;16027:210:::1;;16120:15;::::0;16063:21:::1;::::0;16120:15:::1;-1:-1:-1::0;;;16120:15:0;::::1;::::0;::::1;::::0;16087:30:::1;::::0;-1:-1:-1;;;16101:16:0;;::::1;;16087:11:::0;:30:::1;:::i;:::-;:48;;;;:::i;:::-;16063:72;;16144:28;16159:12;16144:14;:28::i;:::-;16180:49;16194:12;16208:13;16223:5;16180:13;:49::i;:::-;16055:182;16027:210;15864:379;;15828:415;16278:21;16312:23:::0;;16308:72:::1;;16339:38;16357:19;16339:17;:38::i;:::-;15419:966;;;;15356:1029;-1:-1:-1::0;3648:10:0;:18;;-1:-1:-1;;3648:18:0;;;15240:1149::o;10263:469::-;10367:4;10402;10416:14;:12;:14::i;:::-;:42;;;;-1:-1:-1;;;;;;10435:23:0;;;;;;:12;:23;;;;;;;;10434:24;10416:42;:67;;;;-1:-1:-1;;;;;;10463:20:0;;;;;;:12;:20;;;;;;;;10462:21;10416:67;10411:289;;;10514:15;;10497:14;:32;10492:203;;;-1:-1:-1;10553:5:0;10492:203;;;-1:-1:-1;;;;;10577:21:0;;;;;;:10;:21;;;;;;;;10576:22;:87;;;;-1:-1:-1;10643:19:0;;-1:-1:-1;;;;;10603:20:0;;;;;;:9;:20;;;;;;:37;;10626:14;;10603:37;:::i;:::-;:59;10576:87;10571:124;;;-1:-1:-1;10687:5:0;10711:16;10263:469;-1:-1:-1;;;;10263:469:0:o;11129:472::-;11226:7;11240:17;11268:14;:12;:14::i;:::-;11267:15;:37;;;-1:-1:-1;;;;;;11286:18:0;;;;;;:10;:18;;;;;;;;11267:37;:62;;;-1:-1:-1;;;;;;11308:21:0;;;;;;:10;:21;;;;;;;;11267:62;11262:314;;;-1:-1:-1;11346:1:0;11262:314;;;-1:-1:-1;;;;;11364:18:0;;;;;;:10;:18;;;;;;;;11359:217;;;11408:14;;11425:3;;11399:23;;11408:14;;;;;11399:6;:23;:::i;:::-;:29;;;;:::i;:::-;11387:41;;11359:217;;;-1:-1:-1;;;;;11445:21:0;;;;;;:10;:21;;;;;;;;11440:136;;;11492:15;;11510:3;;11483:24;;11492:15;;;;;11483:6;:24;:::i;11440:136::-;11548:19;;11570:3;;11539:28;;11548:19;;;;;11539:6;:28;:::i;:::-;:34;;;;:::i;:::-;11527:46;11129:472;-1:-1:-1;;;;;11129:472:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:156::-;1330:20;;1390:4;1379:16;;1369:27;;1359:55;;1410:1;1407;1400:12;1425:322;1496:6;1504;1512;1565:2;1553:9;1544:7;1540:23;1536:32;1533:52;;;1581:1;1578;1571:12;1533:52;1604:27;1621:9;1604:27;:::i;:::-;1594:37;;1650:36;1682:2;1671:9;1667:18;1650:36;:::i;:::-;1640:46;;1705:36;1737:2;1726:9;1722:18;1705:36;:::i;:::-;1695:46;;1425:322;;;;;:::o;1934:160::-;1999:20;;2055:13;;2048:21;2038:32;;2028:60;;2084:1;2081;2074:12;2099:383;2170:6;2178;2186;2239:2;2227:9;2218:7;2214:23;2210:32;2207:52;;;2255:1;2252;2245:12;2207:52;2294:9;2281:23;2313:31;2338:5;2313:31;:::i;:::-;2363:5;-1:-1:-1;2387:35:1;2418:2;2403:18;;2387:35;:::i;:::-;2377:45;;2441:35;2472:2;2461:9;2457:18;2441:35;:::i;2487:456::-;2564:6;2572;2580;2633:2;2621:9;2612:7;2608:23;2604:32;2601:52;;;2649:1;2646;2639:12;2601:52;2688:9;2675:23;2707:31;2732:5;2707:31;:::i;:::-;2757:5;-1:-1:-1;2814:2:1;2799:18;;2786:32;2827:33;2786:32;2827:33;:::i;:::-;2487:456;;2879:7;;-1:-1:-1;;;2933:2:1;2918:18;;;;2905:32;;2487:456::o;3823:247::-;3882:6;3935:2;3923:9;3914:7;3910:23;3906:32;3903:52;;;3951:1;3948;3941:12;3903:52;3990:9;3977:23;4009:31;4034:5;4009:31;:::i;4420:180::-;4479:6;4532:2;4520:9;4511:7;4507:23;4503:32;4500:52;;;4548:1;4545;4538:12;4500:52;-1:-1:-1;4571:23:1;;4420:180;-1:-1:-1;4420:180:1:o;5001:248::-;5063:6;5071;5124:2;5112:9;5103:7;5099:23;5095:32;5092:52;;;5140:1;5137;5130:12;5092:52;5163:26;5179:9;5163:26;:::i;:::-;5153:36;;5208:35;5239:2;5228:9;5224:18;5208:35;:::i;:::-;5198:45;;5001:248;;;;;:::o;5527:159::-;5594:20;;5654:6;5643:18;;5633:29;;5623:57;;5676:1;5673;5666:12;5691:256;5757:6;5765;5818:2;5806:9;5797:7;5793:23;5789:32;5786:52;;;5834:1;5831;5824:12;5786:52;5857:28;5875:9;5857:28;:::i;:::-;5847:38;;5904:37;5937:2;5926:9;5922:18;5904:37;:::i;6341:388::-;6409:6;6417;6470:2;6458:9;6449:7;6445:23;6441:32;6438:52;;;6486:1;6483;6476:12;6438:52;6525:9;6512:23;6544:31;6569:5;6544:31;:::i;:::-;6594:5;-1:-1:-1;6651:2:1;6636:18;;6623:32;6664:33;6623:32;6664:33;:::i;:::-;6716:7;6706:17;;;6341:388;;;;;:::o;6734:328::-;6808:6;6816;6824;6877:2;6865:9;6856:7;6852:23;6848:32;6845:52;;;6893:1;6890;6883:12;6845:52;6916:28;6934:9;6916:28;:::i;:::-;6906:38;;6963:37;6996:2;6985:9;6981:18;6963:37;:::i;:::-;6953:47;;7019:37;7052:2;7041:9;7037:18;7019:37;:::i;7067:163::-;7134:20;;7194:10;7183:22;;7173:33;;7163:61;;7220:1;7217;7210:12;7235:401;7317:6;7325;7333;7341;7394:3;7382:9;7373:7;7369:23;7365:33;7362:53;;;7411:1;7408;7401:12;7362:53;7434:28;7452:9;7434:28;:::i;:::-;7424:38;;7481:37;7514:2;7503:9;7499:18;7481:37;:::i;:::-;7471:47;;7537:37;7570:2;7559:9;7555:18;7537:37;:::i;:::-;7527:47;;7593:37;7626:2;7615:9;7611:18;7593:37;:::i;:::-;7583:47;;7235:401;;;;;;;:::o;7901:406::-;8103:2;8085:21;;;8142:2;8122:18;;;8115:30;8181:34;8176:2;8161:18;;8154:62;-1:-1:-1;;;8247:2:1;8232:18;;8225:40;8297:3;8282:19;;7901:406::o;8312:127::-;8373:10;8368:3;8364:20;8361:1;8354:31;8404:4;8401:1;8394:15;8428:4;8425:1;8418:15;8444:238;8482:7;8522:4;8519:1;8515:12;8554:4;8551:1;8547:12;8614:3;8608:4;8604:14;8599:3;8596:23;8589:3;8582:11;8575:19;8571:49;8568:75;;;8623:18;;:::i;:::-;8663:13;;8444:238;-1:-1:-1;;;8444:238:1:o;8687:204::-;8725:3;8761:4;8758:1;8754:12;8793:4;8790:1;8786:12;8828:3;8822:4;8818:14;8813:3;8810:23;8807:49;;;8836:18;;:::i;:::-;8872:13;;8687:204;-1:-1:-1;;;8687:204:1:o;9927:422::-;10016:1;10059:5;10016:1;10073:270;10094:7;10084:8;10081:21;10073:270;;;10153:4;10149:1;10145:6;10141:17;10135:4;10132:27;10129:53;;;10162:18;;:::i;:::-;10212:7;10202:8;10198:22;10195:55;;;10232:16;;;;10195:55;10311:22;;;;10271:15;;;;10073:270;;;10077:3;9927:422;;;;;:::o;10354:806::-;10403:5;10433:8;10423:80;;-1:-1:-1;10474:1:1;10488:5;;10423:80;10522:4;10512:76;;-1:-1:-1;10559:1:1;10573:5;;10512:76;10604:4;10622:1;10617:59;;;;10690:1;10685:130;;;;10597:218;;10617:59;10647:1;10638:10;;10661:5;;;10685:130;10722:3;10712:8;10709:17;10706:43;;;10729:18;;:::i;:::-;-1:-1:-1;;10785:1:1;10771:16;;10800:5;;10597:218;;10899:2;10889:8;10886:16;10880:3;10874:4;10871:13;10867:36;10861:2;10851:8;10848:16;10843:2;10837:4;10834:12;10830:35;10827:77;10824:159;;;-1:-1:-1;10936:19:1;;;10968:5;;10824:159;11015:34;11040:8;11034:4;11015:34;:::i;:::-;11085:6;11081:1;11077:6;11073:19;11064:7;11061:32;11058:58;;;11096:18;;:::i;11165:140::-;11223:5;11252:47;11293:4;11283:8;11279:19;11273:4;11252:47;:::i;11310:168::-;11350:7;11416:1;11412;11408:6;11404:14;11401:1;11398:21;11393:1;11386:9;11379:17;11375:45;11372:71;;;11423:18;;:::i;:::-;-1:-1:-1;11463:9:1;;11310:168::o;12198:125::-;12238:4;12266:1;12263;12260:8;12257:34;;;12271:18;;:::i;:::-;-1:-1:-1;12308:9:1;;12198:125::o;13015:217::-;13055:1;13081;13071:132;;13125:10;13120:3;13116:20;13113:1;13106:31;13160:4;13157:1;13150:15;13188:4;13185:1;13178:15;13071:132;-1:-1:-1;13217:9:1;;13015:217::o;13237:128::-;13277:3;13308:1;13304:6;13301:1;13298:13;13295:39;;;13314:18;;:::i;:::-;-1:-1:-1;13350:9:1;;13237:128::o;15011:251::-;15081:6;15134:2;15122:9;15113:7;15109:23;15105:32;15102:52;;;15150:1;15147;15140:12;15102:52;15182:9;15176:16;15201:31;15226:5;15201:31;:::i;16455:224::-;16494:3;16522:6;16555:2;16552:1;16548:10;16585:2;16582:1;16578:10;16616:3;16612:2;16608:12;16603:3;16600:21;16597:47;;;16624:18;;:::i;:::-;16660:13;;16455:224;-1:-1:-1;;;;16455:224:1:o;17270:197::-;17308:3;17336:6;17377:2;17370:5;17366:14;17404:2;17395:7;17392:15;17389:41;;17410:18;;:::i;:::-;17459:1;17446:15;;17270:197;-1:-1:-1;;;17270:197:1:o;18922:127::-;18983:10;18978:3;18974:20;18971:1;18964:31;19014:4;19011:1;19004:15;19038:4;19035:1;19028:15;19054:980;19316:4;19364:3;19353:9;19349:19;19395:6;19384:9;19377:25;19421:2;19459:6;19454:2;19443:9;19439:18;19432:34;19502:3;19497:2;19486:9;19482:18;19475:31;19526:6;19561;19555:13;19592:6;19584;19577:22;19630:3;19619:9;19615:19;19608:26;;19669:2;19661:6;19657:15;19643:29;;19690:1;19700:195;19714:6;19711:1;19708:13;19700:195;;;19779:13;;-1:-1:-1;;;;;19775:39:1;19763:52;;19870:15;;;;19835:12;;;;19811:1;19729:9;19700:195;;;-1:-1:-1;;;;;;;19951:32:1;;;;19946:2;19931:18;;19924:60;-1:-1:-1;;;20015:3:1;20000:19;19993:35;19912:3;19054:980;-1:-1:-1;;;19054:980:1:o;20651:306::-;20739:6;20747;20755;20808:2;20796:9;20787:7;20783:23;20779:32;20776:52;;;20824:1;20821;20814:12;20776:52;20853:9;20847:16;20837:26;;20903:2;20892:9;20888:18;20882:25;20872:35;;20947:2;20936:9;20932:18;20926:25;20916:35;;20651:306;;;;;:::o

Swarm Source

ipfs://798c6ebfc5ece0695f91430edb722b95b44c3b1e6f5be61e37f6713fbb67ef60

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.