ETH Price: $3,270.75 (-1.20%)
Gas: 8 Gwei

Contract

0x98342918bc3B72fe2E63495da9A63Cc6Bac30e9A
 

Overview

ETH Balance

0.043481860796467761 ETH

Eth Value

$142.22 (@ $3,270.75/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve176963952023-07-15 4:20:35381 days ago1689394835IN
FlipToken: FLIP Token
0 ETH0.0003633214.91909938
Approve167826982023-03-08 9:38:11510 days ago1678268291IN
FlipToken: FLIP Token
0 ETH0.000485519.93620197
Approve166590342023-02-19 0:19:59527 days ago1676765999IN
FlipToken: FLIP Token
0 ETH0.0006210725.5030755
Approve166590312023-02-19 0:19:23527 days ago1676765963IN
FlipToken: FLIP Token
0 ETH0.0006070424.92701577
Approve166085842023-02-11 22:44:23534 days ago1676155463IN
FlipToken: FLIP Token
0 ETH0.0007480416.06031524
Approve158628892022-10-30 19:12:11639 days ago1667157131IN
FlipToken: FLIP Token
0 ETH0.000336227.20943137
Approve156205422022-09-26 22:33:23672 days ago1664231603IN
FlipToken: FLIP Token
0 ETH0.0006995515
Approve155330562022-09-14 12:53:58685 days ago1663160038IN
FlipToken: FLIP Token
0 ETH0.0009747420.90065677
Approve155330542022-09-14 12:53:29685 days ago1663160009IN
FlipToken: FLIP Token
0 ETH0.0010120921.70154403
Approve155330532022-09-14 12:52:52685 days ago1663159972IN
FlipToken: FLIP Token
0 ETH0.0009268819.87444497
Approve155159622022-09-11 16:59:30688 days ago1662915570IN
FlipToken: FLIP Token
0 ETH0.0005352311.47656108
Approve154134312022-08-26 5:06:09704 days ago1661490369IN
FlipToken: FLIP Token
0 ETH0.00034617.42131208
Approve154018912022-08-24 8:34:21706 days ago1661330061IN
FlipToken: FLIP Token
0 ETH0.00038668.28972563
Approve153719332022-08-19 14:55:39711 days ago1660920939IN
FlipToken: FLIP Token
0 ETH0.0011556624.78
Approve153560542022-08-17 2:30:38713 days ago1660703438IN
FlipToken: FLIP Token
0 ETH0.0004833610.36439369
Approve153513082022-08-16 8:30:22714 days ago1660638622IN
FlipToken: FLIP Token
0 ETH0.0004785310.2608767
Approve153503742022-08-16 4:58:11714 days ago1660625891IN
FlipToken: FLIP Token
0 ETH0.0004907910.52364605
Approve153422272022-08-14 21:49:50715 days ago1660513790IN
FlipToken: FLIP Token
0 ETH0.000379178.1302527
Approve152670722022-08-03 3:30:11727 days ago1659497411IN
FlipToken: FLIP Token
0 ETH0.0008528918.28791839
Approve152137932022-07-25 20:16:33735 days ago1658780193IN
FlipToken: FLIP Token
0 ETH0.0010467322.44424894
Approve151875862022-07-21 18:36:00740 days ago1658428560IN
FlipToken: FLIP Token
0 ETH0.0005790612.41641619
Approve151837542022-07-21 4:18:26740 days ago1658377106IN
FlipToken: FLIP Token
0 ETH0.0006743514.45966748
Transfer151837522022-07-21 4:17:56740 days ago1658377076IN
FlipToken: FLIP Token
0 ETH0.0014125312.69765232
Approve151698092022-07-19 0:25:26742 days ago1658190326IN
FlipToken: FLIP Token
0 ETH0.001991142.69376081
Approve151672552022-07-18 14:44:06743 days ago1658155446IN
FlipToken: FLIP Token
0 ETH0.0019121141
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
160714662022-11-28 22:26:59609 days ago1669674419
FlipToken: FLIP Token
0.00089614 ETH
160714662022-11-28 22:26:59609 days ago1669674419
FlipToken: FLIP Token
0.00233224 ETH
160714662022-11-28 22:26:59609 days ago1669674419
FlipToken: FLIP Token
0.01632571 ETH
160714662022-11-28 22:26:59609 days ago1669674419
FlipToken: FLIP Token
0.01865795 ETH
156989162022-10-07 21:33:47661 days ago1665178427
FlipToken: FLIP Token
0.00031282 ETH
156989162022-10-07 21:33:47661 days ago1665178427
FlipToken: FLIP Token
0.00081623 ETH
156989162022-10-07 21:33:47661 days ago1665178427
FlipToken: FLIP Token
0.00571367 ETH
156989162022-10-07 21:33:47661 days ago1665178427
FlipToken: FLIP Token
0.00652991 ETH
156187342022-09-26 16:27:59673 days ago1664209679
FlipToken: FLIP Token
0.00035771 ETH
156187342022-09-26 16:27:59673 days ago1664209679
FlipToken: FLIP Token
0.00093323 ETH
156187342022-09-26 16:27:59673 days ago1664209679
FlipToken: FLIP Token
0.00653266 ETH
156187342022-09-26 16:27:59673 days ago1664209679
FlipToken: FLIP Token
0.0074659 ETH
153837862022-08-21 11:41:09709 days ago1661082069
FlipToken: FLIP Token
0.00033569 ETH
153837862022-08-21 11:41:09709 days ago1661082069
FlipToken: FLIP Token
0.0008759 ETH
153837862022-08-21 11:41:09709 days ago1661082069
FlipToken: FLIP Token
0.00613133 ETH
153837862022-08-21 11:41:09709 days ago1661082069
FlipToken: FLIP Token
0.00700723 ETH
153560752022-08-17 2:37:00713 days ago1660703820
FlipToken: FLIP Token
0.00056611 ETH
153560752022-08-17 2:37:00713 days ago1660703820
FlipToken: FLIP Token
0.00147587 ETH
153560752022-08-17 2:37:00713 days ago1660703820
FlipToken: FLIP Token
0.01033111 ETH
153560752022-08-17 2:37:00713 days ago1660703820
FlipToken: FLIP Token
0.01180698 ETH
152308132022-07-28 11:43:47733 days ago1659008627
FlipToken: FLIP Token
0.00051453 ETH
152308132022-07-28 11:43:47733 days ago1659008627
FlipToken: FLIP Token
0.00134176 ETH
152308132022-07-28 11:43:47733 days ago1659008627
FlipToken: FLIP Token
0.00939237 ETH
152308132022-07-28 11:43:47733 days ago1659008627
FlipToken: FLIP Token
0.01073414 ETH
151875882022-07-21 18:36:31740 days ago1658428591
FlipToken: FLIP Token
0.001206 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FlipToken

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

interface IERC20 {
	function totalSupply() external view returns (uint256);

	function balanceOf(address account) external view returns (uint256);

	function transfer(address recipient, uint256 amount)
	external
	returns (bool);

	function allowance(address owner, address spender)
	external
	view
	returns (uint256);

	function approve(address spender, uint256 amount) external returns (bool);

	function transferFrom(
		address sender,
		address recipient,
		uint256 amount
	) external returns (bool);

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

	event Approval(
		address indexed owner,
		address indexed spender,
		uint256 value
	);
}

interface IFactory {
	function createPair(address tokenA, address tokenB)
	external
	returns (address pair);

	function getPair(address tokenA, address tokenB)
	external
	view
	returns (address pair);
}

interface IRouter {
	function factory() external pure returns (address);

	function WETH() external pure returns (address);

	function addLiquidityETH(
		address token,
		uint256 amountTokenDesired,
		uint256 amountTokenMin,
		uint256 amountETHMin,
		address to,
		uint256 deadline
	)
	external
	payable
	returns (
		uint256 amountToken,
		uint256 amountETH,
		uint256 liquidity
	);

	function swapExactETHForTokensSupportingFeeOnTransferTokens(
		uint256 amountOutMin,
		address[] calldata path,
		address to,
		uint256 deadline
	) external payable;

	function swapExactTokensForETHSupportingFeeOnTransferTokens(
		uint256 amountIn,
		uint256 amountOutMin,
		address[] calldata path,
		address to,
		uint256 deadline
	) external;
}

library SafeMath {

	function add(uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		require(c >= a, "SafeMath: addition overflow");

		return c;
	}

	function sub(uint256 a, uint256 b) internal pure returns (uint256) {
		return sub(a, b, "SafeMath: subtraction overflow");
	}

	function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b <= a, errorMessage);
		uint256 c = a - b;

		return c;
	}

	function mul(uint256 a, uint256 b) internal pure returns (uint256) {
		// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
		// benefit is lost if 'b' is also tested.
		// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
		if (a == 0) {
			return 0;
		}

		uint256 c = a * b;
		require(c / a == b, "SafeMath: multiplication overflow");

		return c;
	}

	function div(uint256 a, uint256 b) internal pure returns (uint256) {
		return div(a, b, "SafeMath: division by zero");
	}

	function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b > 0, errorMessage);
		uint256 c = a / b;
		// assert(a == b * c + a % b); // There is no case in which this doesn't hold

		return c;
	}

	function mod(uint256 a, uint256 b) internal pure returns (uint256) {
		return mod(a, b, "SafeMath: modulo by zero");
	}

	function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b != 0, errorMessage);
		return a % b;
	}
}

library Address {
	function isContract(address account) internal view returns (bool) {
		uint256 size;
		assembly {
			size := extcodesize(account)
		}
		return size > 0;
	}

	function sendValue(address payable recipient, uint256 amount) internal {
		require(
			address(this).balance >= amount,
			"Address: insufficient balance"
		);

		(bool success, ) = recipient.call{value: amount}("");
		require(
			success,
			"Address: unable to send value, recipient may have reverted"
		);
	}

	function functionCall(address target, bytes memory data)
	internal
	returns (bytes memory)
	{
		return functionCall(target, data, "Address: low-level call failed");
	}

	function functionCall(
		address target,
		bytes memory data,
		string memory errorMessage
	) internal returns (bytes memory) {
		return functionCallWithValue(target, data, 0, errorMessage);
	}

	function functionCallWithValue(
		address target,
		bytes memory data,
		uint256 value
	) internal returns (bytes memory) {
		return
		functionCallWithValue(
			target,
			data,
			value,
			"Address: low-level call with value failed"
		);
	}

	function functionCallWithValue(
		address target,
		bytes memory data,
		uint256 value,
		string memory errorMessage
	) internal returns (bytes memory) {
		require(
			address(this).balance >= value,
			"Address: insufficient balance for call"
		);
		require(isContract(target), "Address: call to non-contract");

		(bool success, bytes memory returndata) = target.call{value: value}(
		data
		);
		return _verifyCallResult(success, returndata, errorMessage);
	}

	function functionStaticCall(address target, bytes memory data)
	internal
	view
	returns (bytes memory)
	{
		return
		functionStaticCall(
			target,
			data,
			"Address: low-level static call failed"
		);
	}

	function functionStaticCall(
		address target,
		bytes memory data,
		string memory errorMessage
	) internal view returns (bytes memory) {
		require(isContract(target), "Address: static call to non-contract");

		(bool success, bytes memory returndata) = target.staticcall(data);
		return _verifyCallResult(success, returndata, errorMessage);
	}

	function functionDelegateCall(address target, bytes memory data)
	internal
	returns (bytes memory)
	{
		return
		functionDelegateCall(
			target,
			data,
			"Address: low-level delegate call failed"
		);
	}

	function functionDelegateCall(
		address target,
		bytes memory data,
		string memory errorMessage
	) internal returns (bytes memory) {
		require(isContract(target), "Address: delegate call to non-contract");

		(bool success, bytes memory returndata) = target.delegatecall(data);
		return _verifyCallResult(success, returndata, errorMessage);
	}

	function _verifyCallResult(
		bool success,
		bytes memory returndata,
		string memory errorMessage
	) private pure returns (bytes memory) {
		if (success) {
			return returndata;
		} else {
			if (returndata.length > 0) {
				assembly {
					let returndata_size := mload(returndata)
					revert(add(32, returndata), returndata_size)
				}
			} else {
				revert(errorMessage);
			}
		}
	}
}

abstract contract Context {
		function _msgSender() internal view virtual returns (address) {
		return msg.sender;
	}

	function _msgData() internal view virtual returns (bytes calldata) {
		this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
		return msg.data;
	}
}

contract Ownable is Context {
	address private _owner;

	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

	constructor () {
		address msgSender = _msgSender();
		_owner = msgSender;
		emit OwnershipTransferred(address(0), msgSender);
	}

	function owner() public view returns (address) {
		return _owner;
	}

	modifier onlyOwner() {
		require(_owner == _msgSender(), "Ownable: caller is not the owner");
		_;
	}

	function renounceOwnership() public virtual onlyOwner {
		emit OwnershipTransferred(_owner, address(0));
		_owner = address(0);
	}

	function transferOwnership(address newOwner) public virtual onlyOwner {
		require(newOwner != address(0), "Ownable: new owner is the zero address");
		emit OwnershipTransferred(_owner, newOwner);
		_owner = newOwner;
	}
}

contract FlipToken is IERC20, Ownable {
	using Address for address;
	using SafeMath for uint256;

	IRouter public uniswapV2Router;
	address public immutable uniswapV2Pair;

	string private constant _name =  "FlipToken";
	string private constant _symbol = "FLIP";
	uint8 private constant _decimals = 18;

	mapping (address => uint256) private _rOwned;
	mapping (address => uint256) private _tOwned;
	mapping (address => mapping (address => uint256)) private _allowances;

	uint256 private constant MAX = ~uint256(0);
	uint256 private constant _tTotal = 1000000000000 * 10**18;
	uint256 private _rTotal = (MAX - (MAX % _tTotal));
	uint256 private _tFeeTotal;

	bool public isTradingEnabled;
    uint256 private _tradingPausedTimestamp;

    // max tx is 1.0% of initialSupply
	uint256 public maxTxAmount = _tTotal * 100 / 10000;

	bool private _swapping;

    // max wallet is 0.05% of initialSupply
	uint256 public minimumTokensBeforeSwap = _tTotal * 500 / 1000000;

    address private dead = 0x000000000000000000000000000000000000dEaD;

	address public liquidityWallet;
	address public investmentWallet;

	struct CustomTaxPeriod {
		bytes23 periodName;
		uint8 blocksInPeriod;
		uint256 timeInPeriod;
		uint8 liquidityFeeOnBuy;
		uint8 liquidityFeeOnSell;
        uint8 investmentFeeOnBuy;
		uint8 investmentFeeOnSell;
		uint8 holdersFeeOnBuy;
		uint8 holdersFeeOnSell;
	}

	// Base taxes
	CustomTaxPeriod private _base = CustomTaxPeriod('base',0,0,1,1,3,3,3,3);

    uint256 private _launchTimestamp;
	uint256 private _launchBlockNumber;
    uint256 constant private _blockedTimeLimit = 172800;
    mapping (address => bool) private _isBlocked;
	mapping (address => bool) private _isExcludedFromFee;
	mapping (address => bool) private _isExcludedFromMaxTransactionLimit;
	mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private _isExcludedFromDividends;
	mapping (address => bool) private _isAllowedToTradeWhenDisabled;
    address[] private _excludedFromDividends;

	uint8 private _liquidityFee;
    uint8 private _investmentFee;
	uint8 private _holdersFee;
	uint8 private _totalFee;

	event AutomatedMarketMakerPairChange(address indexed pair, bool indexed value);
	event AllowedWhenTradingDisabledChange(address indexed account, bool isExcluded);
    event BlockedAccountChange(address indexed holder, bool indexed status);
	event UniswapV2RouterChange(address indexed newAddress, address indexed oldAddress);
	event WalletChange(string indexed indentifier, address indexed newWallet, address indexed oldWallet);
	event FeeChange(string indexed identifier, uint8 liquidityFee, uint8 investmentFee, uint8 holdersFee);
	event CustomTaxPeriodChange(uint256 indexed newValue, uint256 indexed oldValue, string indexed taxType, bytes23 period);
	event MaxTransactionAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
    event ExcludeFromDividendsChange(address indexed account, bool isExcluded);
	event ExcludeFromFeesChange(address indexed account, bool isExcluded);
	event ExcludeFromMaxTransferChange(address indexed account, bool isExcluded);
	event MinTokenAmountBeforeSwapChange(uint256 indexed newValue, uint256 indexed oldValue);
	event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived,uint256 tokensIntoLiqudity);
	event ClaimETHOverflow(uint256 amount);
	event FeesApplied(uint8 liquidityFee, uint8 investmentFee, uint8 holdersFee, uint8 totalFee);

	constructor() {
		liquidityWallet = owner();
        investmentWallet = owner();

		IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
		address _uniswapV2Pair = IFactory(_uniswapV2Router.factory()).createPair(
			address(this),
			_uniswapV2Router.WETH()
		);
        uniswapV2Router = _uniswapV2Router;
		uniswapV2Pair = _uniswapV2Pair;
		_setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        _isExcludedFromFee[owner()] = true;
		_isExcludedFromFee[address(this)] = true;

        excludeFromDividends(address(this), true);
		excludeFromDividends(address(dead), true);
		excludeFromDividends(address(_uniswapV2Router), true);

		_isAllowedToTradeWhenDisabled[owner()] = true;
		_isAllowedToTradeWhenDisabled[address(this)] = true;

        _isExcludedFromMaxTransactionLimit[address(this)] = true;
		_isExcludedFromMaxTransactionLimit[address(dead)] = true;
		_isExcludedFromMaxTransactionLimit[owner()] = true;

		_rOwned[owner()] = _rTotal;
		emit Transfer(address(0), owner(), _tTotal);
	}

	receive() external payable {}

	// Setters
	function transfer(address recipient, uint256 amount) external override returns (bool) {
		_transfer(_msgSender(), recipient, amount);
		return true;
	}
	function approve(address spender, uint256 amount) public override returns (bool) {
		_approve(_msgSender(), spender, amount);
		return true;
	}
	function transferFrom( address sender,address recipient,uint256 amount) external override returns (bool) {
		_transfer(sender, recipient, amount);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
		return true;
	}
	function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool){
		_approve(_msgSender(),spender,_allowances[_msgSender()][spender].add(addedValue));
		return true;
	}
	function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
		_approve(_msgSender(),spender,_allowances[_msgSender()][spender].sub(subtractedValue,"ERC20: decreased allowance below zero"));
		return true;
	}
	function _approve(address owner,address spender,uint256 amount) private {
		require(owner != address(0), "ERC20: approve from the zero address");
		require(spender != address(0), "ERC20: approve to the zero address");
		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}
	function _getNow() private view returns (uint256) {
		return block.timestamp;
	}
	function activateTrading() external onlyOwner {
		isTradingEnabled = true;
        if (_launchTimestamp == 0) {
			_launchTimestamp = block.timestamp;
			_launchBlockNumber = block.number;
		}
	}
	function deactivateTrading() external onlyOwner {
		isTradingEnabled = false;
		_tradingPausedTimestamp = _getNow();
	}
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
		require(automatedMarketMakerPairs[pair] != value, "Flip: Automated market maker pair is already set to that value");
		automatedMarketMakerPairs[pair] = value;
		emit AutomatedMarketMakerPairChange(pair, value);
	}
	function allowTradingWhenDisabled(address account, bool allowed) external onlyOwner {
		_isAllowedToTradeWhenDisabled[account] = allowed;
		emit AllowedWhenTradingDisabledChange(account, allowed);
	}
	function excludeFromFees(address account, bool excluded) external onlyOwner {
		require(_isExcludedFromFee[account] != excluded, "Flip: Account is already the value of 'excluded'");
		_isExcludedFromFee[account] = excluded;
		emit ExcludeFromFeesChange(account, excluded);
	}
	function excludeFromMaxTransactionLimit(address account, bool excluded) external onlyOwner {
		require(_isExcludedFromMaxTransactionLimit[account] != excluded, "Flip: Account is already the value of 'excluded'");
		_isExcludedFromMaxTransactionLimit[account] = excluded;
		emit ExcludeFromMaxTransferChange(account, excluded);
	}
	function setWallets(address newLiquidityWallet, address newInvestmentWallet) external onlyOwner {
		if(liquidityWallet != newLiquidityWallet) {
            require(newLiquidityWallet != address(0), "Flip: The liquidityWallet cannot be 0");
			emit WalletChange('liquidityWallet', newLiquidityWallet, liquidityWallet);
			liquidityWallet = newLiquidityWallet;
		}
		if(investmentWallet != newInvestmentWallet) {
            require(newInvestmentWallet != address(0), "Flip: The investmentWallet cannot be 0");
			emit WalletChange('investmentWallet', newInvestmentWallet, investmentWallet);
			investmentWallet = newInvestmentWallet;
		}
	}
    // Base fees
	function setBaseFeesOnBuy(uint8 _liquidityFeeOnBuy, uint8 _investmentFeeOnBuy, uint8 _holdersFeeOnBuy) external onlyOwner {
		_setCustomBuyTaxPeriod(_base, _liquidityFeeOnBuy, _investmentFeeOnBuy, _holdersFeeOnBuy);
		emit FeeChange('baseFees-Buy', _liquidityFeeOnBuy, _investmentFeeOnBuy, _holdersFeeOnBuy);
	}
	function setBaseFeesOnSell(uint8 _liquidityFeeOnSell, uint8 _investmentFeeOnSell, uint8 _holdersFeeOnSell) external onlyOwner {
		_setCustomSellTaxPeriod(_base, _liquidityFeeOnSell, _investmentFeeOnSell, _holdersFeeOnSell);
		emit FeeChange('baseFees-Sell', _liquidityFeeOnSell, _investmentFeeOnSell, _holdersFeeOnSell);
	}
	function setMaxTransactionAmount(uint256 newValue) external onlyOwner {
		require(newValue != maxTxAmount, "Flip: Cannot update maxTxAmount to same value");
        emit MaxTransactionAmountChange(newValue, maxTxAmount);
        maxTxAmount = newValue;
	}
	function excludeFromDividends(address account, bool excluded) public onlyOwner {
		require(_isExcludedFromDividends[account] != excluded, "Flip: Account is already the value of 'excluded'");
		if(excluded) {
			if(_rOwned[account] > 0) {
				_tOwned[account] = tokenFromReflection(_rOwned[account]);
			}
			_isExcludedFromDividends[account] = excluded;
			_excludedFromDividends.push(account);
		} else {
			for (uint256 i = 0; i < _excludedFromDividends.length; i++) {
				if (_excludedFromDividends[i] == account) {
					_excludedFromDividends[i] = _excludedFromDividends[_excludedFromDividends.length - 1];
					_tOwned[account] = 0;
					_isExcludedFromDividends[account] = false;
					_excludedFromDividends.pop();
					break;
				}
			}
		}
		emit ExcludeFromDividendsChange(account, excluded);
	}
	function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner {
		require(newValue != minimumTokensBeforeSwap, "Flip: Cannot update minimumTokensBeforeSwap to same value");
		emit MinTokenAmountBeforeSwapChange(newValue, minimumTokensBeforeSwap);
		minimumTokensBeforeSwap = newValue;
	}
    function blockAccount(address account) external onlyOwner {
		require(!_isBlocked[account], "Flip: Account is already blocked");
		require((block.timestamp - _launchTimestamp) < _blockedTimeLimit, "Flip: Time to block accounts has expired");
		_isBlocked[account] = true;
		emit BlockedAccountChange(account, true);
	}
	function unblockAccount(address account) external onlyOwner {
		require(_isBlocked[account], "Flip: Account is not blcoked");
		_isBlocked[account] = false;
		emit BlockedAccountChange(account, false);
	}
	function claimETHOverflow() external onlyOwner {
		require(address(this).balance > 0, "Flip: Cannot send more than contract balance");
        uint256 amount = address(this).balance;
		(bool success,) = address(owner()).call{value : amount}("");
		if (success){
			emit ClaimETHOverflow(amount);
		}
	}

	// Getters
	function name() external view returns (string memory) {
		return _name;
	}
	function symbol() external view returns (string memory) {
		return _symbol;
	}
	function decimals() external view virtual returns (uint8) {
		return _decimals;
	}
	function totalSupply() external view override returns (uint256) {
		return _tTotal;
	}
	function balanceOf(address account) public view override returns (uint256) {
		if (_isExcludedFromDividends[account]) return _tOwned[account];
		return tokenFromReflection(_rOwned[account]);
	}
	function totalFees() external view returns (uint256) {
		return _tFeeTotal;
	}
	function allowance(address owner, address spender) external view override returns (uint256) {
		return _allowances[owner][spender];
	}
    function getBaseBuyFees() external view returns (uint8, uint8, uint8){
		return (_base.liquidityFeeOnBuy, _base.investmentFeeOnBuy, _base.holdersFeeOnBuy);
	}
	function getBaseSellFees() external view returns (uint8, uint8, uint8){
		return (_base.liquidityFeeOnSell, _base.investmentFeeOnSell, _base.holdersFeeOnSell);
	}
	function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
		require(rAmount <= _rTotal, "Flip: Amount must be less than total reflections");
		uint256 currentRate =  _getRate();
		return rAmount / currentRate;
	}
	function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns (uint256) {
		require(tAmount <= _tTotal, "Flip: Amount must be less than supply");
		uint256 currentRate = _getRate();
		uint256 rAmount  = tAmount * currentRate;
		if (!deductTransferFee) {
			return rAmount;
		}
		else {
			uint256 rTotalFee  = tAmount * _totalFee / 100 * currentRate;
			uint256 rTransferAmount = rAmount - rTotalFee;
			return rTransferAmount;
		}
	}

	// Main
	function _transfer(
	address from,
	address to,
	uint256 amount
	) internal {
		require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
		require(amount > 0, "Transfer amount must be greater than zero");
		require(amount <= balanceOf(from), "Flip: Cannot transfer more than balance");

		bool isBuyFromLp = automatedMarketMakerPairs[from];
		bool isSelltoLp = automatedMarketMakerPairs[to];

		if(!_isAllowedToTradeWhenDisabled[from] && !_isAllowedToTradeWhenDisabled[to]) {
			require(isTradingEnabled, "Flip: Trading is currently disabled.");
            require(!_isBlocked[to], "Flip: Account is blocked");
			require(!_isBlocked[from], "Flip: Account is blocked");
            if (!_isExcludedFromMaxTransactionLimit[to] && !_isExcludedFromMaxTransactionLimit[from]) {
                require(amount <= maxTxAmount, "Flip: Transfer amount exceeds the maxTxAmount.");
            }
		}

		_adjustTaxes(isBuyFromLp, isSelltoLp);
		bool canSwap = balanceOf(address(this)) >= minimumTokensBeforeSwap;

		if (
			isTradingEnabled &&
			canSwap &&
			!_swapping &&
			_totalFee > 0 &&
			automatedMarketMakerPairs[to]
		) {
			_swapping = true;
			_swapAndLiquify();
			_swapping = false;
		}

		bool takeFee = !_swapping && isTradingEnabled;

		if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
			takeFee = false;
		}
		_tokenTransfer(from, to, amount, takeFee);
	}
	function _tokenTransfer(address sender,address recipient, uint256 tAmount, bool takeFee) private {
		(uint256 tTransferAmount,uint256 tFee, uint256 tOther) = _getTValues(tAmount, takeFee);
		(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rOther) = _getRValues(tAmount, tFee, tOther, _getRate());

		if (_isExcludedFromDividends[sender]) {
			_tOwned[sender] = _tOwned[sender] - tAmount;
		}
		if (_isExcludedFromDividends[recipient]) {
			_tOwned[recipient] = _tOwned[recipient] + tTransferAmount;
		}
		_rOwned[sender] = _rOwned[sender] - rAmount;
		_rOwned[recipient] = _rOwned[recipient] + rTransferAmount;
		_takeContractFees(rOther, tOther);
		_reflectFee(rFee, tFee);
		emit Transfer(sender, recipient, tTransferAmount);
	}
	function _reflectFee(uint256 rFee, uint256 tFee) private {
		_rTotal -= rFee;
		_tFeeTotal += tFee;
	}
	function _getTValues(uint256 tAmount, bool takeFee) private view returns (uint256,uint256,uint256){
		if (!takeFee) {
			return (tAmount, 0, 0);
		}
		else {
			uint256 tFee = tAmount * _holdersFee / 100;
			uint256 tOther = tAmount * (_liquidityFee + _investmentFee) / 100;
			uint256 tTransferAmount = tAmount - (tFee + tOther);
			return (tTransferAmount, tFee, tOther);
		}
	}
	function _getRValues(
		uint256 tAmount,
		uint256 tFee,
		uint256 tOther,
		uint256 currentRate
		) private pure returns ( uint256, uint256, uint256, uint256) {
		uint256 rAmount = tAmount * currentRate;
		uint256 rFee = tFee * currentRate;
		uint256 rOther = tOther * currentRate;
		uint256 rTransferAmount = rAmount - (rFee + rOther);
		return (rAmount, rTransferAmount, rFee, rOther);
	}
	function _getRate() private view returns (uint256) {
		(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
		return rSupply.div(tSupply);
	}
	function _getCurrentSupply() private view returns (uint256, uint256) {
		uint256 rSupply = _rTotal;
		uint256 tSupply = _tTotal;
		for (uint256 i = 0; i < _excludedFromDividends.length; i++) {
			if (
				_rOwned[_excludedFromDividends[i]] > rSupply ||
				_tOwned[_excludedFromDividends[i]] > tSupply
			) return (_rTotal, _tTotal);
			rSupply = rSupply - _rOwned[_excludedFromDividends[i]];
			tSupply = tSupply - _tOwned[_excludedFromDividends[i]];
		}
		if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
		return (rSupply, tSupply);
	}
	function _takeContractFees(uint256 rOther, uint256 tOther) private {
		if (_isExcludedFromDividends[address(this)]) {
			_tOwned[address(this)] += tOther;
		}
		_rOwned[address(this)] += rOther;
	}
	function _adjustTaxes(bool isBuyFromLp, bool isSelltoLp) private {
		_liquidityFee = 0;
		_investmentFee = 0;
		_holdersFee = 0;

		if (isBuyFromLp) {
            if ((block.number - _launchBlockNumber) <= 5) {
				_liquidityFee = 100;
			}
            else {
                _liquidityFee = _base.liquidityFeeOnBuy;
                _investmentFee = _base.investmentFeeOnBuy;
                _holdersFee = _base.holdersFeeOnBuy;
            }
		}
		if (isSelltoLp) {
			_liquidityFee = _base.liquidityFeeOnSell;
			_investmentFee = _base.investmentFeeOnSell;
			_holdersFee = _base.holdersFeeOnSell;

            if (block.timestamp - _launchTimestamp <= 86400) {
                _liquidityFee = 5;
                _holdersFee = 10;
                if (block.timestamp - _launchTimestamp <= 3600) {
                    _investmentFee = 15;
                } else {
                    _investmentFee = 10;
                }
            }
		}
		_totalFee = _liquidityFee + _investmentFee + _holdersFee;
		emit FeesApplied(_liquidityFee, _investmentFee, _holdersFee, _totalFee);
	}
	function _setCustomSellTaxPeriod(CustomTaxPeriod storage map,
		uint8 _liquidityFeeOnSell,
        uint8 _investmentFeeOnSell,
		uint8 _holdersFeeOnSell
	) private {
		if (map.liquidityFeeOnSell != _liquidityFeeOnSell) {
			emit CustomTaxPeriodChange(_liquidityFeeOnSell, map.liquidityFeeOnSell, 'liquidityFeeOnSell', map.periodName);
			map.liquidityFeeOnSell = _liquidityFeeOnSell;
		}
        if (map.investmentFeeOnSell != _investmentFeeOnSell) {
			emit CustomTaxPeriodChange(_investmentFeeOnSell, map.investmentFeeOnSell, 'investmentFeeOnSell', map.periodName);
			map.investmentFeeOnSell = _investmentFeeOnSell;
		}
		if (map.holdersFeeOnSell != _holdersFeeOnSell) {
			emit CustomTaxPeriodChange(_holdersFeeOnSell, map.holdersFeeOnSell, 'holdersFeeOnSell', map.periodName);
			map.holdersFeeOnSell = _holdersFeeOnSell;
		}
	}
	function _setCustomBuyTaxPeriod(CustomTaxPeriod storage map,
		uint8 _liquidityFeeOnBuy,
        uint8 _investmentFeeOnBuy,
		uint8 _holdersFeeOnBuy
	) private {
		if (map.liquidityFeeOnBuy != _liquidityFeeOnBuy) {
			emit CustomTaxPeriodChange(_liquidityFeeOnBuy, map.liquidityFeeOnBuy, 'liquidityFeeOnBuy', map.periodName);
			map.liquidityFeeOnBuy = _liquidityFeeOnBuy;
		}
        if (map.investmentFeeOnBuy != _investmentFeeOnBuy) {
			emit CustomTaxPeriodChange(_investmentFeeOnBuy, map.investmentFeeOnBuy, 'investmentFeeOnBuy', map.periodName);
			map.investmentFeeOnBuy = _investmentFeeOnBuy;
		}
		if (map.holdersFeeOnBuy != _holdersFeeOnBuy) {
			emit CustomTaxPeriodChange(_holdersFeeOnBuy, map.holdersFeeOnBuy, 'holdersFeeOnBuy', map.periodName);
			map.holdersFeeOnBuy = _holdersFeeOnBuy;
		}
	}
	function _swapAndLiquify() private {
		uint256 contractBalance = balanceOf(address(this));
		uint256 initialETHBalance = address(this).balance;

		uint8 totalFeePrior = _totalFee;
        uint8 liquidityFeePrior = _liquidityFee;
        uint8 investmentFeePrior = _investmentFee;
		uint8 holdersFeePrior = _holdersFee;

		uint256 amountToLiquify = contractBalance * _liquidityFee / _totalFee / 2;
		uint256 amountToSwapForETH = contractBalance - amountToLiquify;

		_swapTokensForETH(amountToSwapForETH);

		uint256 ETHBalanceAfterSwap = address(this).balance - initialETHBalance;
		uint256 totalETHFee = totalFeePrior - (liquidityFeePrior / 2) - (holdersFeePrior);
		uint256 amountETHLiquidity = ETHBalanceAfterSwap * liquidityFeePrior / totalETHFee / 2;
		uint256 amountETHInvestment = ETHBalanceAfterSwap - amountETHLiquidity;

		payable(investmentWallet).transfer(amountETHInvestment);

		if (amountToLiquify > 0) {
			_addLiquidity(amountToLiquify, amountETHLiquidity);
			emit SwapAndLiquify(amountToSwapForETH, amountETHLiquidity, amountToLiquify);
		}
		_totalFee = totalFeePrior;
        _liquidityFee = liquidityFeePrior;
        _investmentFee = investmentFeePrior;
		_holdersFee = holdersFeePrior;
	}
	function _swapTokensForETH(uint256 tokenAmount) private {
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = uniswapV2Router.WETH();
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
		tokenAmount,
		0, // accept any amount of ETH
		path,
		address(this),
		block.timestamp
		);
	}
	function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.addLiquidityETH{value: ethAmount}(
		address(this),
		tokenAmount,
		0, // slippage is unavoidable
		0, // slippage is unavoidable
		liquidityWallet,
		block.timestamp
		);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"AllowedWhenTradingDisabledChange","type":"event"},{"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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"AutomatedMarketMakerPairChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"BlockedAccountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimETHOverflow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"string","name":"taxType","type":"string"},{"indexed":false,"internalType":"bytes23","name":"period","type":"bytes23"}],"name":"CustomTaxPeriodChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromDividendsChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFeesChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxTransferChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"identifier","type":"string"},{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"investmentFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"holdersFee","type":"uint8"}],"name":"FeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"investmentFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"holdersFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"totalFee","type":"uint8"}],"name":"FeesApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxTransactionAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MinTokenAmountBeforeSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UniswapV2RouterChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indentifier","type":"string"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"WalletChange","type":"event"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowTradingWhenDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"blockAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimETHOverflow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deactivateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBaseBuyFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseSellFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"investmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_investmentFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnBuy","type":"uint8"}],"name":"setBaseFeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_investmentFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnSell","type":"uint8"}],"name":"setBaseFeesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityWallet","type":"address"},{"internalType":"address","name":"newInvestmentWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblockAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526200001f6c0c9f2c9cd04674edea4000000060001962000c7a565b6200002d9060001962000ca7565b6005556127106200004d6c0c9f2c9cd04674edea40000000606462000cc1565b62000059919062000ce3565b600955620f42406200007b6c0c9f2c9cd04674edea400000006101f462000cc1565b62000087919062000ce3565b600b55600c80546001600160a01b03191661dead1790556040805161012081018252636261736560e01b81526000602082018190529181018290526001606082018190526080820152600360a0820181905260c0820181905260e082018190526101009190910152600f80546001600160c01b031916636261736560981b179055601055601180546503030303010165ffffffffffff199091161790553480156200013157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060008054600d80546001600160a01b039092166001600160a01b03199283168117909155600e80549092161790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021c919062000cfa565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000cfa565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000cfa565b600180546001600160a01b0319166001600160a01b0385811691909117825582166080529091506200033890829062000530565b600160156000620003516000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530808252601590935220805490921660019081179092556200039f9162000620565b600c54620003b8906001600160a01b0316600162000620565b620003c582600162000620565b600160196000620003de6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601984528281208054861660019081179091556016948590528382208054871682179055600c549092168152918220805490941681179093556200045b6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff19169215159290921790915560055490600290620004a06000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055620004cd6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c0c9f2c9cd04674edea400000006040516200052091815260200190565b60405180910390a3505062000dc5565b6001600160a01b03821660009081526017602052604090205481151560ff909116151503620005cc5760405162461bcd60e51b815260206004820152603e60248201527f466c69703a204175746f6d61746564206d61726b6574206d616b65722070616960448201527f7220697320616c72656164792073657420746f20746861742076616c7565000060648201526084015b60405180910390fd5b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6000546001600160a01b031633146200067c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620005c3565b6001600160a01b03821660009081526018602052604090205481151560ff909116151503620007075760405162461bcd60e51b815260206004820152603060248201527f466c69703a204163636f756e7420697320616c7265616479207468652076616c60448201526f7565206f6620276578636c756465642760801b6064820152608401620005c3565b8015620007d4576001600160a01b038216600090815260026020526040902054156200076b576001600160a01b038216600090815260026020526040902054620007519062000955565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601860205260408120805460ff1916841515179055601a805460018101825591527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b03191690911790556200090b565b60005b601a548110156200090957826001600160a01b0316601a828154811062000802576200080262000d25565b6000918252602090912001546001600160a01b031603620008f457601a80546200082f9060019062000ca7565b8154811062000842576200084262000d25565b600091825260209091200154601a80546001600160a01b03909216918390811062000871576200087162000d25565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601890925220805460ff19169055601a805480620008cc57620008cc62000d3b565b600082815260209020810160001990810180546001600160a01b031916905501905562000909565b80620009008162000d51565b915050620007d7565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa98260405162000949911515815260200190565b60405180910390a25050565b6000600554821115620009c45760405162461bcd60e51b815260206004820152603060248201527f466c69703a20416d6f756e74206d757374206265206c657373207468616e207460448201526f6f74616c207265666c656374696f6e7360801b6064820152608401620005c3565b6000620009d0620009e5565b9050620009de818462000ce3565b9392505050565b60008080620009f362000a18565b9150915062000a11818362000bde60201b620019871790919060201c565b9250505090565b60055460009081906c0c9f2c9cd04674edea40000000825b601a5481101562000b95578260026000601a848154811062000a565762000a5662000d25565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000ac557508160036000601a848154811062000a9e5762000a9e62000d25565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000ae6575050600554936c0c9f2c9cd04674edea400000009350915050565b60026000601a838154811062000b005762000b0062000d25565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000b31908462000ca7565b925060036000601a838154811062000b4d5762000b4d62000d25565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000b7e908362000ca7565b91508062000b8c8162000d51565b91505062000a30565b506c0c9f2c9cd04674edea4000000060055462000bb3919062000ce3565b82101562000bd5575050600554926c0c9f2c9cd04674edea4000000092509050565b90939092509050565b6000620009de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c2860201b60201c565b6000818362000c4c5760405162461bcd60e51b8152600401620005c3919062000d6d565b50600062000c5b848662000ce3565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b60008262000c8c5762000c8c62000c64565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562000cbc5762000cbc62000c91565b500390565b600081600019048311821515161562000cde5762000cde62000c91565b500290565b60008262000cf55762000cf562000c64565b500490565b60006020828403121562000d0d57600080fd5b81516001600160a01b0381168114620009de57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001820162000d665762000d6662000c91565b5060010190565b600060208083528351808285015260005b8181101562000d9c5785810183015185820160400152820162000d7e565b8181111562000daf576000604083870101525b50601f01601f1916929092016040019392505050565b60805161342362000de1600039600061047101526134236000f3fe60806040526004361061024a5760003560e01c806376dca83511610139578063b6fa37bc116100b6578063d3f6a1571161007a578063d3f6a15714610712578063d469801614610732578063dd62ed3e14610752578063e625724614610798578063f2fde38b146107b8578063fe017535146107d857600080fd5b8063b6fa37bc1461064e578063c02466681461066e578063cd43e2281461068e578063d2d7ad83146106dc578063d3221576146106f257600080fd5b806395d89b41116100fd57806395d89b4114610591578063a457c2d7146105be578063a9059cbb146105de578063aee50b1e146105fe578063b62496f51461061e57600080fd5b806376dca835146104fd5780637c0a893d1461051d578063880bcbc11461053d5780638c0b5e221461055d5780638da5cb5b1461057357600080fd5b80632d838119116101c757806349bd5a5e1161018b57806349bd5a5e1461045f5780634d78fdc61461049357806366164f6f146104b357806370a08231146104c8578063715018a6146104e857600080fd5b80632d838119146103ce578063313ce567146103ee57806334cf1fea1461040a578063395093511461041f5780634549b0391461043f57600080fd5b806313114a9d1161020e57806313114a9d146103175780631694505e1461033657806318160ddd1461036e5780631e293c101461038e57806323b872dd146103ae57600080fd5b80630483f7a014610256578063064a59d01461027857806306fdde03146102a7578063095ea7b3146102e25780630bd05b691461030257600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004612f0e565b61080a565b005b34801561028457600080fd5b506007546102929060ff1681565b60405190151581526020015b60405180910390f35b3480156102b357600080fd5b50604080518082019091526009815268233634b82a37b5b2b760b91b60208201525b60405161029e9190612f43565b3480156102ee57600080fd5b506102926102fd366004612f98565b610ab1565b34801561030e57600080fd5b50610276610ac8565b34801561032357600080fd5b506006545b60405190815260200161029e565b34801561034257600080fd5b50600154610356906001600160a01b031681565b6040516001600160a01b03909116815260200161029e565b34801561037a57600080fd5b506c0c9f2c9cd04674edea40000000610328565b34801561039a57600080fd5b506102766103a9366004612fc4565b610b14565b3480156103ba57600080fd5b506102926103c9366004612fdd565b610bd8565b3480156103da57600080fd5b506103286103e9366004612fc4565b610c41565b3480156103fa57600080fd5b506040516012815260200161029e565b34801561041657600080fd5b50610276610ccb565b34801561042b57600080fd5b5061029261043a366004612f98565b610d05565b34801561044b57600080fd5b5061032861045a36600461301e565b610d3b565b34801561046b57600080fd5b506103567f000000000000000000000000000000000000000000000000000000000000000081565b34801561049f57600080fd5b506102766104ae366004613041565b610e1d565b3480156104bf57600080fd5b50610276610efc565b3480156104d457600080fd5b506103286104e3366004613041565b611032565b3480156104f457600080fd5b50610276611091565b34801561050957600080fd5b5061027661051836600461306f565b611105565b34801561052957600080fd5b50610276610538366004613041565b6111a9565b34801561054957600080fd5b50610276610558366004612f0e565b6112fe565b34801561056957600080fd5b5061032860095481565b34801561057f57600080fd5b506000546001600160a01b0316610356565b34801561059d57600080fd5b506040805180820190915260048152630464c49560e41b60208201526102d5565b3480156105ca57600080fd5b506102926105d9366004612f98565b6113c0565b3480156105ea57600080fd5b506102926105f9366004612f98565b61140f565b34801561060a57600080fd5b50610276610619366004612fc4565b61141c565b34801561062a57600080fd5b50610292610639366004613041565b60176020526000908152604090205460ff1681565b34801561065a57600080fd5b50600e54610356906001600160a01b031681565b34801561067a57600080fd5b50610276610689366004612f0e565b6114f0565b34801561069a57600080fd5b5060115460ff80821691620100008104821691640100000000909104165b6040805160ff9485168152928416602084015292169181019190915260600161029e565b3480156106e857600080fd5b50610328600b5481565b3480156106fe57600080fd5b5061027661070d366004612f0e565b6115b2565b34801561071e57600080fd5b5061027661072d3660046130b2565b611634565b34801561073e57600080fd5b50600d54610356906001600160a01b031681565b34801561075e57600080fd5b5061032861076d3660046130b2565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156107a457600080fd5b506102766107b336600461306f565b611849565b3480156107c457600080fd5b506102766107d3366004613041565b61189d565b3480156107e457600080fd5b5060115460ff610100820481169163010000008104821691600160281b909104166106b8565b6000546001600160a01b0316331461083d5760405162461bcd60e51b8152600401610834906130eb565b60405180910390fd5b6001600160a01b03821660009081526018602052604090205481151560ff90911615150361087d5760405162461bcd60e51b815260040161083490613120565b8015610945576001600160a01b038216600090815260026020526040902054156108dd576001600160a01b0382166000908152600260205260409020546108c390610c41565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601860205260408120805460ff1916841515179055601a805460018101825591527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b0319169091179055610a68565b60005b601a54811015610a6657826001600160a01b0316601a828154811061096f5761096f613170565b6000918252602090912001546001600160a01b031603610a5457601a80546109999060019061319c565b815481106109a9576109a9613170565b600091825260209091200154601a80546001600160a01b0390921691839081106109d5576109d5613170565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601890925220805460ff19169055601a805480610a2d57610a2d6131b3565b600082815260209020810160001990810180546001600160a01b0319169055019055610a66565b80610a5e816131c9565b915050610948565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051610aa5911515815260200190565b60405180910390a25050565b6000610abe3384846119c9565b5060015b92915050565b6000546001600160a01b03163314610af25760405162461bcd60e51b8152600401610834906130eb565b6007805460ff19166001179055601254600003610b125742601255436013555b565b6000546001600160a01b03163314610b3e5760405162461bcd60e51b8152600401610834906130eb565b6009548103610ba55760405162461bcd60e51b815260206004820152602d60248201527f466c69703a2043616e6e6f7420757064617465206d61785478416d6f756e742060448201526c746f2073616d652076616c756560981b6064820152608401610834565b60095460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600955565b6000610be5848484611aed565b610c378433610c3285604051806060016040528060288152602001613381602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611fcd565b6119c9565b5060019392505050565b6000600554821115610cae5760405162461bcd60e51b815260206004820152603060248201527f466c69703a20416d6f756e74206d757374206265206c657373207468616e207460448201526f6f74616c207265666c656374696f6e7360801b6064820152608401610834565b6000610cb8612007565b9050610cc481846131f8565b9392505050565b6000546001600160a01b03163314610cf55760405162461bcd60e51b8152600401610834906130eb565b6007805460ff1916905542600855565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610abe918590610c32908661202a565b60006c0c9f2c9cd04674edea40000000831115610da85760405162461bcd60e51b815260206004820152602560248201527f466c69703a20416d6f756e74206d757374206265206c657373207468616e20736044820152647570706c7960d81b6064820152608401610834565b6000610db2612007565b90506000610dc0828661320c565b905083610dd0579150610ac29050565b601b546000908390606490610def906301000000900460ff168961320c565b610df991906131f8565b610e03919061320c565b90506000610e11828461319c565b9450610ac29350505050565b6000546001600160a01b03163314610e475760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03811660009081526014602052604090205460ff16610eaf5760405162461bcd60e51b815260206004820152601c60248201527f466c69703a204163636f756e74206973206e6f7420626c636f6b6564000000006044820152606401610834565b6001600160a01b038116600081815260146020526040808220805460ff19169055519091907f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba908390a350565b6000546001600160a01b03163314610f265760405162461bcd60e51b8152600401610834906130eb565b60004711610f8b5760405162461bcd60e51b815260206004820152602c60248201527f466c69703a2043616e6e6f742073656e64206d6f7265207468616e20636f6e7460448201526b726163742062616c616e636560a01b6064820152608401610834565b476000610fa06000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610fea576040519150601f19603f3d011682016040523d82523d6000602084013e610fef565b606091505b50509050801561102e576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca48906020015b60405180910390a15b5050565b6001600160a01b03811660009081526018602052604081205460ff161561106f57506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610ac290610c41565b6000546001600160a01b031633146110bb5760405162461bcd60e51b8152600401610834906130eb565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610834906130eb565b61113c600f848484612089565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d015b6040805191829003822060ff86811684528581166020850152841683830152905190917f0fc5b99eebb78c10fca186b25746da968ffa81b56e2a79e89fd5ed16f238b576919081900360600190a2505050565b6000546001600160a01b031633146111d35760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03811660009081526014602052604090205460ff161561123c5760405162461bcd60e51b815260206004820181905260248201527f466c69703a204163636f756e7420697320616c726561647920626c6f636b65646044820152606401610834565b6202a3006012544261124e919061319c565b106112ac5760405162461bcd60e51b815260206004820152602860248201527f466c69703a2054696d6520746f20626c6f636b206163636f756e74732068617360448201526708195e1c1a5c995960c21b6064820152608401610834565b6001600160a01b038116600081815260146020526040808220805460ff1916600190811790915590519092917f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba91a350565b6000546001600160a01b031633146113285760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03821660009081526016602052604090205481151560ff9091161515036113685760405162461bcd60e51b815260040161083490613120565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610aa5565b6000610abe3384610c32856040518060600160405280602581526020016133c9602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611fcd565b6000610abe338484611aed565b6000546001600160a01b031633146114465760405162461bcd60e51b8152600401610834906130eb565b600b5481036114bd5760405162461bcd60e51b815260206004820152603960248201527f466c69703a2043616e6e6f7420757064617465206d696e696d756d546f6b656e60448201527f734265666f72655377617020746f2073616d652076616c7565000000000000006064820152608401610834565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b0316331461151a5760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03821660009081526015602052604090205481151560ff90911615150361155a5760405162461bcd60e51b815260040161083490613120565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101610aa5565b6000546001600160a01b031633146115dc5760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610aa5565b6000546001600160a01b0316331461165e5760405162461bcd60e51b8152600401610834906130eb565b600d546001600160a01b03838116911614611750576001600160a01b0382166116d75760405162461bcd60e51b815260206004820152602560248201527f466c69703a20546865206c697175696469747957616c6c65742063616e6e6f74604482015264020626520360dc1b6064820152608401610834565b600d546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691841690600f01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600d80546001600160a01b0319166001600160a01b0384161790555b600e546001600160a01b0382811691161461102e576001600160a01b0381166117ca5760405162461bcd60e51b815260206004820152602660248201527f466c69703a2054686520696e766573746d656e7457616c6c65742063616e6e6f60448201526507420626520360d41b6064820152608401610834565b600e546040516f1a5b9d995cdd1b595b9d15d85b1b195d60821b81526001600160a01b0391821691831690601001604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600e80546001600160a01b0383166001600160a01b03199091161790555050565b6000546001600160a01b031633146118735760405162461bcd60e51b8152600401610834906130eb565b611880600f848484612253565b6040516b62617365466565732d42757960a01b8152600c01611156565b6000546001600160a01b031633146118c75760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03811661192c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610834565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610cc483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061240a565b6001600160a01b038316611a2b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610834565b6001600160a01b038216611a8c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610834565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610834565b6001600160a01b038216611bb35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610834565b60008111611c155760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610834565b611c1e83611032565b811115611c7d5760405162461bcd60e51b815260206004820152602760248201527f466c69703a2043616e6e6f74207472616e73666572206d6f7265207468616e2060448201526662616c616e636560c81b6064820152608401610834565b6001600160a01b03808416600081815260176020908152604080832054948716835280832054938352601990915290205460ff928316929182169116158015611cdf57506001600160a01b03841660009081526019602052604090205460ff16155b15611eba5760075460ff16611d425760405162461bcd60e51b8152602060048201526024808201527f466c69703a2054726164696e672069732063757272656e746c792064697361626044820152633632b21760e11b6064820152608401610834565b6001600160a01b03841660009081526014602052604090205460ff1615611da65760405162461bcd60e51b8152602060048201526018602482015277119b1a5c0e881058d8dbdd5b9d081a5cc8189b1bd8dad95960421b6044820152606401610834565b6001600160a01b03851660009081526014602052604090205460ff1615611e0a5760405162461bcd60e51b8152602060048201526018602482015277119b1a5c0e881058d8dbdd5b9d081a5cc8189b1bd8dad95960421b6044820152606401610834565b6001600160a01b03841660009081526016602052604090205460ff16158015611e4c57506001600160a01b03851660009081526016602052604090205460ff16155b15611eba57600954831115611eba5760405162461bcd60e51b815260206004820152602e60248201527f466c69703a205472616e7366657220616d6f756e74206578636565647320746860448201526d329036b0bc2a3c20b6b7bab73a1760911b6064820152608401610834565b611ec48282612438565b6000600b54611ed230611032565b600754911115915060ff168015611ee65750805b8015611ef55750600a5460ff16155b8015611f0c5750601b546301000000900460ff1615155b8015611f3057506001600160a01b03851660009081526017602052604090205460ff165b15611f5557600a805460ff19166001179055611f4a61260b565b600a805460ff191690555b600a5460009060ff16158015611f6d575060075460ff165b6001600160a01b03881660009081526015602052604090205490915060ff1680611faf57506001600160a01b03861660009081526015602052604090205460ff165b15611fb8575060005b611fc4878787846127cb565b50505050505050565b60008184841115611ff15760405162461bcd60e51b81526004016108349190612f43565b506000611ffe848661319c565b95945050505050565b600080600061201461299c565b90925090506120238282611987565b9250505090565b600080612037838561322b565b905083811015610cc45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610834565b600284015460ff848116610100909204161461211a57604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028601548654919260ff610100909204821692918716916000805160206133a9833981519152916120fb9160481b90613243565b60405180910390a460028401805461ff00191661010060ff8616021790555b600284015460ff838116630100000090920416146121b457604051721a5b9d995cdd1b595b9d11995953db94d95b1b606a1b815260130160405190819003812060028601548654919260ff6301000000909204821692918616916000805160206133a9833981519152916121919160481b90613243565b60405180910390a460028401805463ff0000001916630100000060ff8516021790555b600284015460ff828116600160281b909204161461224d576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028601548654919260ff600160281b909204821692918516916000805160206133a9833981519152916122289160481b90613243565b60405180910390a460028401805465ff00000000001916600160281b60ff8416021790555b50505050565b600284015460ff8481169116146122d457604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028601548654919260ff91821692918716916000805160206133a9833981519152916122ba9160481b90613243565b60405180910390a460028401805460ff191660ff85161790555b600284015460ff8381166201000090920416146123695760405171696e766573746d656e744665654f6e42757960701b815260120160405190819003812060028601548654919260ff62010000909204821692918616916000805160206133a9833981519152916123489160481b90613243565b60405180910390a460028401805462ff000019166201000060ff8516021790555b600284015460ff828116640100000000909204161461224d576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028601548654919260ff640100000000909204821692918516916000805160206133a9833981519152916123de9160481b90613243565b60405180910390a460028401805460ff83166401000000000264ff000000001990911617905550505050565b6000818361242b5760405162461bcd60e51b81526004016108349190612f43565b506000611ffe84866131f8565b601b805462ffffff1916905581156124b55760056013544361245a919061319c565b1161247157601b805460ff191660641790556124b5565b601154601b8054640100000000830460ff9081166201000090810262ff00001991860483166101000261ffff19909416929095169190911791909117169190911790555b801561256257601154601b805461010080840460ff90811661ffff1990931692909217630100000085048316919091021762ff00001916600160281b9093041662010000029190911790556012546201518090612512904261319c565b1161256257601b805462ff00ff1916620a0005179055601254610e1090612539904261319c565b1161255257601b805461ff001916610f00179055612562565b601b805461ff001916610a001790555b601b5460ff6201000082048116916125829161010082048116911661325a565b61258c919061325a565b601b805463ff000000198116630100000060ff9485168102918217938490556040805193861692861692909217835261010084048516602084015262010000840485169183019190915290910490911660608201527fe732842e0997f2bd5f26f9b53d4f761dfb12c53c4352fa949eb7b4d8522dd25b90608001611025565b600061261630611032565b601b54909150479060ff6301000000820481169181811691610100820481169162010000900416600060028561264c868a61320c565b61265691906131f8565b61266091906131f8565b9050600061266e828961319c565b905061267981612b49565b6000612685884761319c565b905060008461269560028961327f565b61269f908a6132a1565b6126a991906132a1565b60ff16905060006002828960ff16856126c2919061320c565b6126cc91906131f8565b6126d691906131f8565b905060006126e4828561319c565b600e546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561271f573d6000803e3d6000fd5b508515612772576127308683612ca3565b60408051868152602081018490529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050601b805460ff968716620100000262ff0000199888166101000261ffff199b89166301000000029b909b1663ff00ffff19909216919091179890961697909717979097179490941692909217909355505050505050565b60008060006127da8585612d57565b9250925092506000806000806127f98987876127f4612007565b612df9565b6001600160a01b038f166000908152601860205260409020549397509195509350915060ff1615612862576001600160a01b038b16600090815260036020526040902054612848908a9061319c565b6001600160a01b038c166000908152600360205260409020555b6001600160a01b038a1660009081526018602052604090205460ff16156128c1576001600160a01b038a166000908152600360205260409020546128a790889061322b565b6001600160a01b038b166000908152600360205260409020555b6001600160a01b038b166000908152600260205260409020546128e590859061319c565b6001600160a01b03808d1660009081526002602052604080822093909355908c168152205461291590849061322b565b6001600160a01b038b166000908152600260205260409020556129388186612e51565b6129428287612eb6565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8960405161298791815260200190565b60405180910390a35050505050505050505050565b60055460009081906c0c9f2c9cd04674edea40000000825b601a54811015612b03578260026000601a84815481106129d6576129d6613170565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a4157508160036000601a8481548110612a1a57612a1a613170565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a61575050600554936c0c9f2c9cd04674edea400000009350915050565b60026000601a8381548110612a7857612a78613170565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612aa7908461319c565b925060036000601a8381548110612ac057612ac0613170565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612aef908361319c565b915080612afb816131c9565b9150506129b4565b506c0c9f2c9cd04674edea40000000600554612b1f91906131f8565b821015612b40575050600554926c0c9f2c9cd04674edea4000000092509050565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b7e57612b7e613170565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906132c4565b81600181518110612c0e57612c0e613170565b6001600160a01b039283166020918202929092010152600154612c3491309116846119c9565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790612c6d9085906000908690309042906004016132e1565b600060405180830381600087803b158015612c8757600080fd5b505af1158015612c9b573d6000803e3d6000fd5b505050505050565b600154612cbb9030906001600160a01b0316846119c9565b600154600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d2b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d509190613352565b5050505050565b600080600083612d6f57508391506000905080612df2565b601b54600090606490612d8b9062010000900460ff168861320c565b612d9591906131f8565b601b54909150600090606490612db59060ff61010082048116911661325a565b612dc29060ff168961320c565b612dcc91906131f8565b90506000612dda828461322b565b612de4908961319c565b95509193509150612df29050565b9250925092565b600080808080612e09868a61320c565b90506000612e17878a61320c565b90506000612e25888a61320c565b90506000612e33828461322b565b612e3d908561319c565b939c939b5091995097509095505050505050565b3060009081526018602052604090205460ff1615612e8e573060009081526003602052604081208054839290612e8890849061322b565b90915550505b3060009081526002602052604081208054849290612ead90849061322b565b90915550505050565b8160056000828254612ec8919061319c565b925050819055508060066000828254612ead919061322b565b6001600160a01b0381168114612ef657600080fd5b50565b80358015158114612f0957600080fd5b919050565b60008060408385031215612f2157600080fd5b8235612f2c81612ee1565b9150612f3a60208401612ef9565b90509250929050565b600060208083528351808285015260005b81811015612f7057858101830151858201604001528201612f54565b81811115612f82576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612fab57600080fd5b8235612fb681612ee1565b946020939093013593505050565b600060208284031215612fd657600080fd5b5035919050565b600080600060608486031215612ff257600080fd5b8335612ffd81612ee1565b9250602084013561300d81612ee1565b929592945050506040919091013590565b6000806040838503121561303157600080fd5b82359150612f3a60208401612ef9565b60006020828403121561305357600080fd5b8135610cc481612ee1565b803560ff81168114612f0957600080fd5b60008060006060848603121561308457600080fd5b61308d8461305e565b925061309b6020850161305e565b91506130a96040850161305e565b90509250925092565b600080604083850312156130c557600080fd5b82356130d081612ee1565b915060208301356130e081612ee1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f466c69703a204163636f756e7420697320616c7265616479207468652076616c60408201526f7565206f6620276578636c756465642760801b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156131ae576131ae613186565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600182016131db576131db613186565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082613207576132076131e2565b500490565b600081600019048311821515161561322657613226613186565b500290565b6000821982111561323e5761323e613186565b500190565b68ffffffffffffffffff1991909116815260200190565b600060ff821660ff84168060ff0382111561327757613277613186565b019392505050565b600060ff831680613292576132926131e2565b8060ff84160491505092915050565b600060ff821660ff8416808210156132bb576132bb613186565b90039392505050565b6000602082840312156132d657600080fd5b8151610cc481612ee1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133315784516001600160a01b03168352938301939183019160010161330c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561336757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e6ab72041654a0155f3ca1cd1717d715959f325b5374bf96c9ea51f19e76494964736f6c634300080d0033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c806376dca83511610139578063b6fa37bc116100b6578063d3f6a1571161007a578063d3f6a15714610712578063d469801614610732578063dd62ed3e14610752578063e625724614610798578063f2fde38b146107b8578063fe017535146107d857600080fd5b8063b6fa37bc1461064e578063c02466681461066e578063cd43e2281461068e578063d2d7ad83146106dc578063d3221576146106f257600080fd5b806395d89b41116100fd57806395d89b4114610591578063a457c2d7146105be578063a9059cbb146105de578063aee50b1e146105fe578063b62496f51461061e57600080fd5b806376dca835146104fd5780637c0a893d1461051d578063880bcbc11461053d5780638c0b5e221461055d5780638da5cb5b1461057357600080fd5b80632d838119116101c757806349bd5a5e1161018b57806349bd5a5e1461045f5780634d78fdc61461049357806366164f6f146104b357806370a08231146104c8578063715018a6146104e857600080fd5b80632d838119146103ce578063313ce567146103ee57806334cf1fea1461040a578063395093511461041f5780634549b0391461043f57600080fd5b806313114a9d1161020e57806313114a9d146103175780631694505e1461033657806318160ddd1461036e5780631e293c101461038e57806323b872dd146103ae57600080fd5b80630483f7a014610256578063064a59d01461027857806306fdde03146102a7578063095ea7b3146102e25780630bd05b691461030257600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004612f0e565b61080a565b005b34801561028457600080fd5b506007546102929060ff1681565b60405190151581526020015b60405180910390f35b3480156102b357600080fd5b50604080518082019091526009815268233634b82a37b5b2b760b91b60208201525b60405161029e9190612f43565b3480156102ee57600080fd5b506102926102fd366004612f98565b610ab1565b34801561030e57600080fd5b50610276610ac8565b34801561032357600080fd5b506006545b60405190815260200161029e565b34801561034257600080fd5b50600154610356906001600160a01b031681565b6040516001600160a01b03909116815260200161029e565b34801561037a57600080fd5b506c0c9f2c9cd04674edea40000000610328565b34801561039a57600080fd5b506102766103a9366004612fc4565b610b14565b3480156103ba57600080fd5b506102926103c9366004612fdd565b610bd8565b3480156103da57600080fd5b506103286103e9366004612fc4565b610c41565b3480156103fa57600080fd5b506040516012815260200161029e565b34801561041657600080fd5b50610276610ccb565b34801561042b57600080fd5b5061029261043a366004612f98565b610d05565b34801561044b57600080fd5b5061032861045a36600461301e565b610d3b565b34801561046b57600080fd5b506103567f000000000000000000000000923693f167ed56a529f191012b1523a4ce69724681565b34801561049f57600080fd5b506102766104ae366004613041565b610e1d565b3480156104bf57600080fd5b50610276610efc565b3480156104d457600080fd5b506103286104e3366004613041565b611032565b3480156104f457600080fd5b50610276611091565b34801561050957600080fd5b5061027661051836600461306f565b611105565b34801561052957600080fd5b50610276610538366004613041565b6111a9565b34801561054957600080fd5b50610276610558366004612f0e565b6112fe565b34801561056957600080fd5b5061032860095481565b34801561057f57600080fd5b506000546001600160a01b0316610356565b34801561059d57600080fd5b506040805180820190915260048152630464c49560e41b60208201526102d5565b3480156105ca57600080fd5b506102926105d9366004612f98565b6113c0565b3480156105ea57600080fd5b506102926105f9366004612f98565b61140f565b34801561060a57600080fd5b50610276610619366004612fc4565b61141c565b34801561062a57600080fd5b50610292610639366004613041565b60176020526000908152604090205460ff1681565b34801561065a57600080fd5b50600e54610356906001600160a01b031681565b34801561067a57600080fd5b50610276610689366004612f0e565b6114f0565b34801561069a57600080fd5b5060115460ff80821691620100008104821691640100000000909104165b6040805160ff9485168152928416602084015292169181019190915260600161029e565b3480156106e857600080fd5b50610328600b5481565b3480156106fe57600080fd5b5061027661070d366004612f0e565b6115b2565b34801561071e57600080fd5b5061027661072d3660046130b2565b611634565b34801561073e57600080fd5b50600d54610356906001600160a01b031681565b34801561075e57600080fd5b5061032861076d3660046130b2565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156107a457600080fd5b506102766107b336600461306f565b611849565b3480156107c457600080fd5b506102766107d3366004613041565b61189d565b3480156107e457600080fd5b5060115460ff610100820481169163010000008104821691600160281b909104166106b8565b6000546001600160a01b0316331461083d5760405162461bcd60e51b8152600401610834906130eb565b60405180910390fd5b6001600160a01b03821660009081526018602052604090205481151560ff90911615150361087d5760405162461bcd60e51b815260040161083490613120565b8015610945576001600160a01b038216600090815260026020526040902054156108dd576001600160a01b0382166000908152600260205260409020546108c390610c41565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601860205260408120805460ff1916841515179055601a805460018101825591527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b0319169091179055610a68565b60005b601a54811015610a6657826001600160a01b0316601a828154811061096f5761096f613170565b6000918252602090912001546001600160a01b031603610a5457601a80546109999060019061319c565b815481106109a9576109a9613170565b600091825260209091200154601a80546001600160a01b0390921691839081106109d5576109d5613170565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601890925220805460ff19169055601a805480610a2d57610a2d6131b3565b600082815260209020810160001990810180546001600160a01b0319169055019055610a66565b80610a5e816131c9565b915050610948565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051610aa5911515815260200190565b60405180910390a25050565b6000610abe3384846119c9565b5060015b92915050565b6000546001600160a01b03163314610af25760405162461bcd60e51b8152600401610834906130eb565b6007805460ff19166001179055601254600003610b125742601255436013555b565b6000546001600160a01b03163314610b3e5760405162461bcd60e51b8152600401610834906130eb565b6009548103610ba55760405162461bcd60e51b815260206004820152602d60248201527f466c69703a2043616e6e6f7420757064617465206d61785478416d6f756e742060448201526c746f2073616d652076616c756560981b6064820152608401610834565b60095460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600955565b6000610be5848484611aed565b610c378433610c3285604051806060016040528060288152602001613381602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611fcd565b6119c9565b5060019392505050565b6000600554821115610cae5760405162461bcd60e51b815260206004820152603060248201527f466c69703a20416d6f756e74206d757374206265206c657373207468616e207460448201526f6f74616c207265666c656374696f6e7360801b6064820152608401610834565b6000610cb8612007565b9050610cc481846131f8565b9392505050565b6000546001600160a01b03163314610cf55760405162461bcd60e51b8152600401610834906130eb565b6007805460ff1916905542600855565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610abe918590610c32908661202a565b60006c0c9f2c9cd04674edea40000000831115610da85760405162461bcd60e51b815260206004820152602560248201527f466c69703a20416d6f756e74206d757374206265206c657373207468616e20736044820152647570706c7960d81b6064820152608401610834565b6000610db2612007565b90506000610dc0828661320c565b905083610dd0579150610ac29050565b601b546000908390606490610def906301000000900460ff168961320c565b610df991906131f8565b610e03919061320c565b90506000610e11828461319c565b9450610ac29350505050565b6000546001600160a01b03163314610e475760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03811660009081526014602052604090205460ff16610eaf5760405162461bcd60e51b815260206004820152601c60248201527f466c69703a204163636f756e74206973206e6f7420626c636f6b6564000000006044820152606401610834565b6001600160a01b038116600081815260146020526040808220805460ff19169055519091907f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba908390a350565b6000546001600160a01b03163314610f265760405162461bcd60e51b8152600401610834906130eb565b60004711610f8b5760405162461bcd60e51b815260206004820152602c60248201527f466c69703a2043616e6e6f742073656e64206d6f7265207468616e20636f6e7460448201526b726163742062616c616e636560a01b6064820152608401610834565b476000610fa06000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610fea576040519150601f19603f3d011682016040523d82523d6000602084013e610fef565b606091505b50509050801561102e576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca48906020015b60405180910390a15b5050565b6001600160a01b03811660009081526018602052604081205460ff161561106f57506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610ac290610c41565b6000546001600160a01b031633146110bb5760405162461bcd60e51b8152600401610834906130eb565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610834906130eb565b61113c600f848484612089565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d015b6040805191829003822060ff86811684528581166020850152841683830152905190917f0fc5b99eebb78c10fca186b25746da968ffa81b56e2a79e89fd5ed16f238b576919081900360600190a2505050565b6000546001600160a01b031633146111d35760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03811660009081526014602052604090205460ff161561123c5760405162461bcd60e51b815260206004820181905260248201527f466c69703a204163636f756e7420697320616c726561647920626c6f636b65646044820152606401610834565b6202a3006012544261124e919061319c565b106112ac5760405162461bcd60e51b815260206004820152602860248201527f466c69703a2054696d6520746f20626c6f636b206163636f756e74732068617360448201526708195e1c1a5c995960c21b6064820152608401610834565b6001600160a01b038116600081815260146020526040808220805460ff1916600190811790915590519092917f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba91a350565b6000546001600160a01b031633146113285760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03821660009081526016602052604090205481151560ff9091161515036113685760405162461bcd60e51b815260040161083490613120565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610aa5565b6000610abe3384610c32856040518060600160405280602581526020016133c9602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611fcd565b6000610abe338484611aed565b6000546001600160a01b031633146114465760405162461bcd60e51b8152600401610834906130eb565b600b5481036114bd5760405162461bcd60e51b815260206004820152603960248201527f466c69703a2043616e6e6f7420757064617465206d696e696d756d546f6b656e60448201527f734265666f72655377617020746f2073616d652076616c7565000000000000006064820152608401610834565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b0316331461151a5760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03821660009081526015602052604090205481151560ff90911615150361155a5760405162461bcd60e51b815260040161083490613120565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101610aa5565b6000546001600160a01b031633146115dc5760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610aa5565b6000546001600160a01b0316331461165e5760405162461bcd60e51b8152600401610834906130eb565b600d546001600160a01b03838116911614611750576001600160a01b0382166116d75760405162461bcd60e51b815260206004820152602560248201527f466c69703a20546865206c697175696469747957616c6c65742063616e6e6f74604482015264020626520360dc1b6064820152608401610834565b600d546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691841690600f01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600d80546001600160a01b0319166001600160a01b0384161790555b600e546001600160a01b0382811691161461102e576001600160a01b0381166117ca5760405162461bcd60e51b815260206004820152602660248201527f466c69703a2054686520696e766573746d656e7457616c6c65742063616e6e6f60448201526507420626520360d41b6064820152608401610834565b600e546040516f1a5b9d995cdd1b595b9d15d85b1b195d60821b81526001600160a01b0391821691831690601001604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600e80546001600160a01b0383166001600160a01b03199091161790555050565b6000546001600160a01b031633146118735760405162461bcd60e51b8152600401610834906130eb565b611880600f848484612253565b6040516b62617365466565732d42757960a01b8152600c01611156565b6000546001600160a01b031633146118c75760405162461bcd60e51b8152600401610834906130eb565b6001600160a01b03811661192c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610834565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610cc483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061240a565b6001600160a01b038316611a2b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610834565b6001600160a01b038216611a8c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610834565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610834565b6001600160a01b038216611bb35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610834565b60008111611c155760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610834565b611c1e83611032565b811115611c7d5760405162461bcd60e51b815260206004820152602760248201527f466c69703a2043616e6e6f74207472616e73666572206d6f7265207468616e2060448201526662616c616e636560c81b6064820152608401610834565b6001600160a01b03808416600081815260176020908152604080832054948716835280832054938352601990915290205460ff928316929182169116158015611cdf57506001600160a01b03841660009081526019602052604090205460ff16155b15611eba5760075460ff16611d425760405162461bcd60e51b8152602060048201526024808201527f466c69703a2054726164696e672069732063757272656e746c792064697361626044820152633632b21760e11b6064820152608401610834565b6001600160a01b03841660009081526014602052604090205460ff1615611da65760405162461bcd60e51b8152602060048201526018602482015277119b1a5c0e881058d8dbdd5b9d081a5cc8189b1bd8dad95960421b6044820152606401610834565b6001600160a01b03851660009081526014602052604090205460ff1615611e0a5760405162461bcd60e51b8152602060048201526018602482015277119b1a5c0e881058d8dbdd5b9d081a5cc8189b1bd8dad95960421b6044820152606401610834565b6001600160a01b03841660009081526016602052604090205460ff16158015611e4c57506001600160a01b03851660009081526016602052604090205460ff16155b15611eba57600954831115611eba5760405162461bcd60e51b815260206004820152602e60248201527f466c69703a205472616e7366657220616d6f756e74206578636565647320746860448201526d329036b0bc2a3c20b6b7bab73a1760911b6064820152608401610834565b611ec48282612438565b6000600b54611ed230611032565b600754911115915060ff168015611ee65750805b8015611ef55750600a5460ff16155b8015611f0c5750601b546301000000900460ff1615155b8015611f3057506001600160a01b03851660009081526017602052604090205460ff165b15611f5557600a805460ff19166001179055611f4a61260b565b600a805460ff191690555b600a5460009060ff16158015611f6d575060075460ff165b6001600160a01b03881660009081526015602052604090205490915060ff1680611faf57506001600160a01b03861660009081526015602052604090205460ff165b15611fb8575060005b611fc4878787846127cb565b50505050505050565b60008184841115611ff15760405162461bcd60e51b81526004016108349190612f43565b506000611ffe848661319c565b95945050505050565b600080600061201461299c565b90925090506120238282611987565b9250505090565b600080612037838561322b565b905083811015610cc45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610834565b600284015460ff848116610100909204161461211a57604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028601548654919260ff610100909204821692918716916000805160206133a9833981519152916120fb9160481b90613243565b60405180910390a460028401805461ff00191661010060ff8616021790555b600284015460ff838116630100000090920416146121b457604051721a5b9d995cdd1b595b9d11995953db94d95b1b606a1b815260130160405190819003812060028601548654919260ff6301000000909204821692918616916000805160206133a9833981519152916121919160481b90613243565b60405180910390a460028401805463ff0000001916630100000060ff8516021790555b600284015460ff828116600160281b909204161461224d576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028601548654919260ff600160281b909204821692918516916000805160206133a9833981519152916122289160481b90613243565b60405180910390a460028401805465ff00000000001916600160281b60ff8416021790555b50505050565b600284015460ff8481169116146122d457604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028601548654919260ff91821692918716916000805160206133a9833981519152916122ba9160481b90613243565b60405180910390a460028401805460ff191660ff85161790555b600284015460ff8381166201000090920416146123695760405171696e766573746d656e744665654f6e42757960701b815260120160405190819003812060028601548654919260ff62010000909204821692918616916000805160206133a9833981519152916123489160481b90613243565b60405180910390a460028401805462ff000019166201000060ff8516021790555b600284015460ff828116640100000000909204161461224d576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028601548654919260ff640100000000909204821692918516916000805160206133a9833981519152916123de9160481b90613243565b60405180910390a460028401805460ff83166401000000000264ff000000001990911617905550505050565b6000818361242b5760405162461bcd60e51b81526004016108349190612f43565b506000611ffe84866131f8565b601b805462ffffff1916905581156124b55760056013544361245a919061319c565b1161247157601b805460ff191660641790556124b5565b601154601b8054640100000000830460ff9081166201000090810262ff00001991860483166101000261ffff19909416929095169190911791909117169190911790555b801561256257601154601b805461010080840460ff90811661ffff1990931692909217630100000085048316919091021762ff00001916600160281b9093041662010000029190911790556012546201518090612512904261319c565b1161256257601b805462ff00ff1916620a0005179055601254610e1090612539904261319c565b1161255257601b805461ff001916610f00179055612562565b601b805461ff001916610a001790555b601b5460ff6201000082048116916125829161010082048116911661325a565b61258c919061325a565b601b805463ff000000198116630100000060ff9485168102918217938490556040805193861692861692909217835261010084048516602084015262010000840485169183019190915290910490911660608201527fe732842e0997f2bd5f26f9b53d4f761dfb12c53c4352fa949eb7b4d8522dd25b90608001611025565b600061261630611032565b601b54909150479060ff6301000000820481169181811691610100820481169162010000900416600060028561264c868a61320c565b61265691906131f8565b61266091906131f8565b9050600061266e828961319c565b905061267981612b49565b6000612685884761319c565b905060008461269560028961327f565b61269f908a6132a1565b6126a991906132a1565b60ff16905060006002828960ff16856126c2919061320c565b6126cc91906131f8565b6126d691906131f8565b905060006126e4828561319c565b600e546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561271f573d6000803e3d6000fd5b508515612772576127308683612ca3565b60408051868152602081018490529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050601b805460ff968716620100000262ff0000199888166101000261ffff199b89166301000000029b909b1663ff00ffff19909216919091179890961697909717979097179490941692909217909355505050505050565b60008060006127da8585612d57565b9250925092506000806000806127f98987876127f4612007565b612df9565b6001600160a01b038f166000908152601860205260409020549397509195509350915060ff1615612862576001600160a01b038b16600090815260036020526040902054612848908a9061319c565b6001600160a01b038c166000908152600360205260409020555b6001600160a01b038a1660009081526018602052604090205460ff16156128c1576001600160a01b038a166000908152600360205260409020546128a790889061322b565b6001600160a01b038b166000908152600360205260409020555b6001600160a01b038b166000908152600260205260409020546128e590859061319c565b6001600160a01b03808d1660009081526002602052604080822093909355908c168152205461291590849061322b565b6001600160a01b038b166000908152600260205260409020556129388186612e51565b6129428287612eb6565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8960405161298791815260200190565b60405180910390a35050505050505050505050565b60055460009081906c0c9f2c9cd04674edea40000000825b601a54811015612b03578260026000601a84815481106129d6576129d6613170565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612a4157508160036000601a8481548110612a1a57612a1a613170565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612a61575050600554936c0c9f2c9cd04674edea400000009350915050565b60026000601a8381548110612a7857612a78613170565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612aa7908461319c565b925060036000601a8381548110612ac057612ac0613170565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612aef908361319c565b915080612afb816131c9565b9150506129b4565b506c0c9f2c9cd04674edea40000000600554612b1f91906131f8565b821015612b40575050600554926c0c9f2c9cd04674edea4000000092509050565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b7e57612b7e613170565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906132c4565b81600181518110612c0e57612c0e613170565b6001600160a01b039283166020918202929092010152600154612c3491309116846119c9565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790612c6d9085906000908690309042906004016132e1565b600060405180830381600087803b158015612c8757600080fd5b505af1158015612c9b573d6000803e3d6000fd5b505050505050565b600154612cbb9030906001600160a01b0316846119c9565b600154600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d2b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d509190613352565b5050505050565b600080600083612d6f57508391506000905080612df2565b601b54600090606490612d8b9062010000900460ff168861320c565b612d9591906131f8565b601b54909150600090606490612db59060ff61010082048116911661325a565b612dc29060ff168961320c565b612dcc91906131f8565b90506000612dda828461322b565b612de4908961319c565b95509193509150612df29050565b9250925092565b600080808080612e09868a61320c565b90506000612e17878a61320c565b90506000612e25888a61320c565b90506000612e33828461322b565b612e3d908561319c565b939c939b5091995097509095505050505050565b3060009081526018602052604090205460ff1615612e8e573060009081526003602052604081208054839290612e8890849061322b565b90915550505b3060009081526002602052604081208054849290612ead90849061322b565b90915550505050565b8160056000828254612ec8919061319c565b925050819055508060066000828254612ead919061322b565b6001600160a01b0381168114612ef657600080fd5b50565b80358015158114612f0957600080fd5b919050565b60008060408385031215612f2157600080fd5b8235612f2c81612ee1565b9150612f3a60208401612ef9565b90509250929050565b600060208083528351808285015260005b81811015612f7057858101830151858201604001528201612f54565b81811115612f82576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612fab57600080fd5b8235612fb681612ee1565b946020939093013593505050565b600060208284031215612fd657600080fd5b5035919050565b600080600060608486031215612ff257600080fd5b8335612ffd81612ee1565b9250602084013561300d81612ee1565b929592945050506040919091013590565b6000806040838503121561303157600080fd5b82359150612f3a60208401612ef9565b60006020828403121561305357600080fd5b8135610cc481612ee1565b803560ff81168114612f0957600080fd5b60008060006060848603121561308457600080fd5b61308d8461305e565b925061309b6020850161305e565b91506130a96040850161305e565b90509250925092565b600080604083850312156130c557600080fd5b82356130d081612ee1565b915060208301356130e081612ee1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f466c69703a204163636f756e7420697320616c7265616479207468652076616c60408201526f7565206f6620276578636c756465642760801b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156131ae576131ae613186565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600182016131db576131db613186565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082613207576132076131e2565b500490565b600081600019048311821515161561322657613226613186565b500290565b6000821982111561323e5761323e613186565b500190565b68ffffffffffffffffff1991909116815260200190565b600060ff821660ff84168060ff0382111561327757613277613186565b019392505050565b600060ff831680613292576132926131e2565b8060ff84160491505092915050565b600060ff821660ff8416808210156132bb576132bb613186565b90039392505050565b6000602082840312156132d657600080fd5b8151610cc481612ee1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133315784516001600160a01b03168352938301939183019160010161330c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561336757600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e6ab72041654a0155f3ca1cd1717d715959f325b5374bf96c9ea51f19e76494964736f6c634300080d0033

Deployed Bytecode Sourcemap

7734:21825:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16843:824;;;;;;;;;;-1:-1:-1;16843:824:0;;;;;:::i;:::-;;:::i;:::-;;8413:28;;;;;;;;;;-1:-1:-1;8413:28:0;;;;;;;;;;;800:14:1;;793:22;775:41;;763:2;748:18;8413:28:0;;;;;;;;18842:76;;;;;;;;;;-1:-1:-1;18908:5:0;;;;;;;;;;;;-1:-1:-1;;;18908:5:0;;;;18842:76;;;;;;;:::i;12513:146::-;;;;;;;;;;-1:-1:-1;12513:146:0;;;;;:::i;:::-;;:::i;13812:201::-;;;;;;;;;;;;;:::i;19381:80::-;;;;;;;;;;-1:-1:-1;19446:10:0;;19381:80;;;1895:25:1;;;1883:2;1868:18;19381:80:0;1749:177:1;7837:30:0;;;;;;;;;;-1:-1:-1;7837:30:0;;;;-1:-1:-1;;;;;7837:30:0;;;;;;-1:-1:-1;;;;;2110:32:1;;;2092:51;;2080:2;2065:18;7837:30:0;1931:218:1;19091:88:0;;;;;;;;;;-1:-1:-1;8302:22:0;19091:88;;16581:259;;;;;;;;;;-1:-1:-1;16581:259:0;;;;;:::i;:::-;;:::i;12662:292::-;;;;;;;;;;-1:-1:-1;12662:292:0;;;;;:::i;:::-;;:::i;19936:235::-;;;;;;;;;;-1:-1:-1;19936:235:0;;;;;:::i;:::-;;:::i;19004:84::-;;;;;;;;;;-1:-1:-1;19004:84:0;;8042:2;2942:36:1;;2930:2;2915:18;19004:84:0;2800:184:1;14016:122:0;;;;;;;;;;;;;:::i;12957:202::-;;;;;;;;;;-1:-1:-1;12957:202:0;;;;;:::i;:::-;;:::i;20174:476::-;;;;;;;;;;-1:-1:-1;20174:476:0;;;;;:::i;:::-;;:::i;7871:38::-;;;;;;;;;;;;;;;18304:208;;;;;;;;;;-1:-1:-1;18304:208:0;;;;;:::i;:::-;;:::i;18515:309::-;;;;;;;;;;;;;:::i;19182:196::-;;;;;;;;;;-1:-1:-1;19182:196:0;;;;;:::i;:::-;;:::i;7366:133::-;;;;;;;;;;;;;:::i;16252:326::-;;;;;;;;;;-1:-1:-1;16252:326:0;;;;;:::i;:::-;;:::i;17978:323::-;;;;;;;;;;-1:-1:-1;17978:323:0;;;;;:::i;:::-;;:::i;14928:333::-;;;;;;;;;;-1:-1:-1;14928:333:0;;;;;:::i;:::-;;:::i;8533:50::-;;;;;;;;;;;;;;;;7182:70;;;;;;;;;;-1:-1:-1;7220:7:0;7241:6;-1:-1:-1;;;;;7241:6:0;7182:70;;18921:80;;;;;;;;;;-1:-1:-1;18989:7:0;;;;;;;;;;;;-1:-1:-1;;;18989:7:0;;;;18921:80;;13162:253;;;;;;;;;;-1:-1:-1;13162:253:0;;;;;:::i;:::-;;:::i;12356:154::-;;;;;;;;;;-1:-1:-1;12356:154:0;;;;;:::i;:::-;;:::i;17670:302::-;;;;;;;;;;-1:-1:-1;17670:302:0;;;;;:::i;:::-;;:::i;9565:58::-;;;;;;;;;;-1:-1:-1;9565:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8840:31;;;;;;;;;;-1:-1:-1;8840:31:0;;;;-1:-1:-1;;;;;8840:31:0;;;14646:279;;;;;;;;;;-1:-1:-1;14646:279:0;;;;;:::i;:::-;;:::i;19606:160::-;;;;;;;;;;-1:-1:-1;19688:23:0;;;;;;;19713:24;;;;;;19739:21;;;;;19606:160;;;;4410:4:1;4398:17;;;4380:36;;4452:17;;;4447:2;4432:18;;4425:45;4506:17;;4486:18;;;4479:45;;;;4368:2;4353:18;19606:160:0;4190:340:1;8662:64:0;;;;;;;;;;;;;;;;14441:202;;;;;;;;;;-1:-1:-1;14441:202:0;;;;;:::i;:::-;;:::i;15264:650::-;;;;;;;;;;-1:-1:-1;15264:650:0;;;;;:::i;:::-;;:::i;8806:30::-;;;;;;;;;;-1:-1:-1;8806:30:0;;;;-1:-1:-1;;;;;8806:30:0;;;19464:136;;;;;;;;;;-1:-1:-1;19464:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;19568:18:0;;;19547:7;19568:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19464:136;15935:314;;;;;;;;;;-1:-1:-1;15935:314:0;;;;;:::i;:::-;;:::i;7504:223::-;;;;;;;;;;-1:-1:-1;7504:223:0;;;;;:::i;:::-;;:::i;19769:164::-;;;;;;;;;;-1:-1:-1;19852:24:0;;;;;;;;;19878:25;;;;;;-1:-1:-1;;;19905:22:0;;;;19769:164;;16843:824;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;16935:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;:45;::::1;;:33;::::0;;::::1;:45;;::::0;16927:106:::1;;;;-1:-1:-1::0;;;16927:106:0::1;;;;;;;:::i;:::-;17041:8;17038:570;;;-1:-1:-1::0;;;;;17060:16:0;::::1;17079:1;17060:16:::0;;;:7:::1;:16;::::0;;;;;:20;17057:95:::1;;-1:-1:-1::0;;;;;17128:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;17108:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;17089:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;17057:95:::1;-1:-1:-1::0;;;;;17157:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:44;;-1:-1:-1;;17157:44:0::1;::::0;::::1;;;::::0;;17207:22:::1;:36:::0;;-1:-1:-1;17207:36:0;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;17207:36:0::1;::::0;;::::1;::::0;;17038:570:::1;;;17266:9;17261:342;17285:22;:29:::0;17281:33;::::1;17261:342;;;17361:7;-1:-1:-1::0;;;;;17332:36:0::1;:22;17355:1;17332:25;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;17332:25:0::1;:36:::0;17328:269:::1;;17406:22;17429:29:::0;;:33:::1;::::0;17461:1:::1;::::0;17429:33:::1;:::i;:::-;17406:57;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;17378:22:::1;:25:::0;;-1:-1:-1;;;;;17406:57:0;;::::1;::::0;17401:1;;17378:25;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:85:::0;;-1:-1:-1;;;;;;17378:85:0::1;-1:-1:-1::0;;;;;17378:85:0;;::::1;;::::0;;17471:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;17499:24:::1;:33:::0;;;;:41;;-1:-1:-1;;17499:41:0::1;::::0;;17548:22:::1;:28:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;17548:28:0;;;;;-1:-1:-1;;;;;;17548:28:0::1;::::0;;;;;17584:5:::1;;17328:269;17316:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17261:342;;;;17038:570;17644:7;-1:-1:-1::0;;;;;17617:45:0::1;;17653:8;17617:45;;;;800:14:1::0;793:22;775:41;;763:2;748:18;;635:187;17617:45:0::1;;;;;;;;16843:824:::0;;:::o;12513:146::-;12588:4;12599:39;6648:10;12622:7;12631:6;12599:8;:39::i;:::-;-1:-1:-1;12650:4:0;12513:146;;;;;:::o;13812:201::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;13863:16:::1;:23:::0;;-1:-1:-1;;13863:23:0::1;13882:4;13863:23;::::0;;13901:16:::1;::::0;13863::::1;13901:21:::0;13897:112:::1;;13949:15;13930:16;:34:::0;13991:12:::1;13970:18;:33:::0;13897:112:::1;13812:201::o:0;16581:259::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;16676:11:::1;;16664:8;:23:::0;16656:81:::1;;;::::0;-1:-1:-1;;;16656:81:0;;6574:2:1;16656:81:0::1;::::0;::::1;6556:21:1::0;6613:2;6593:18;;;6586:30;6652:34;6632:18;;;6625:62;-1:-1:-1;;;6703:18:1;;;6696:43;6756:19;;16656:81:0::1;6372:409:1::0;16656:81:0::1;16790:11;::::0;16753:49:::1;::::0;16780:8;;16753:49:::1;::::0;;;::::1;16813:11;:22:::0;16581:259::o;12662:292::-;12761:4;12772:36;12782:6;12790:9;12801:6;12772:9;:36::i;:::-;12813:120;12822:6;6648:10;12844:88;12882:6;12844:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12844:19:0;;;;;;:11;:19;;;;;;;;6648:10;12844:33;;;;;;;;;;:37;:88::i;:::-;12813:8;:120::i;:::-;-1:-1:-1;12945:4:0;12662:292;;;;;:::o;19936:235::-;20002:7;20035;;20024;:18;;20016:79;;;;-1:-1:-1;;;20016:79:0;;6988:2:1;20016:79:0;;;6970:21:1;7027:2;7007:18;;;7000:30;7066:34;7046:18;;;7039:62;-1:-1:-1;;;7117:18:1;;;7110:46;7173:19;;20016:79:0;6786:412:1;20016:79:0;20100:19;20123:10;:8;:10::i;:::-;20100:33;-1:-1:-1;20145:21:0;20100:33;20145:7;:21;:::i;:::-;20138:28;19936:235;-1:-1:-1;;;19936:235:0:o;14016:122::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;14069:16:::1;:24:::0;;-1:-1:-1;;14069:24:0::1;::::0;;13789:15;14098:23:::1;:35:::0;14016:122::o;12957:202::-;6648:10;13047:4;13087:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13087:34:0;;;;;;;;;;13047:4;;13057:81;;13079:7;;13087:50;;13126:10;13087:38;:50::i;20174:476::-;20267:7;8302:22;20289:7;:18;;20281:68;;;;-1:-1:-1;;;20281:68:0;;7662:2:1;20281:68:0;;;7644:21:1;7701:2;7681:18;;;7674:30;7740:34;7720:18;;;7713:62;-1:-1:-1;;;7791:18:1;;;7784:35;7836:19;;20281:68:0;7460:401:1;20281:68:0;20354:19;20376:10;:8;:10::i;:::-;20354:32;-1:-1:-1;20391:15:0;20410:21;20354:32;20410:7;:21;:::i;:::-;20391:40;;20441:17;20436:210;;20473:7;-1:-1:-1;20466:14:0;;-1:-1:-1;20466:14:0;20436:210;20532:9;;20501:17;;20550:11;;20544:3;;20522:19;;20532:9;;;;;20522:7;:19;:::i;:::-;:25;;;;:::i;:::-;:39;;;;:::i;:::-;20501:60;-1:-1:-1;20567:23:0;20593:19;20501:60;20593:7;:19;:::i;:::-;20567:45;-1:-1:-1;20618:22:0;;-1:-1:-1;;;;20618:22:0;18304:208;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18377:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;18369:60;;;::::0;-1:-1:-1;;;18369:60:0;;8241:2:1;18369:60:0::1;::::0;::::1;8223:21:1::0;8280:2;8260:18;;;8253:30;8319;8299:18;;;8292:58;8367:18;;18369:60:0::1;8039:352:1::0;18369:60:0::1;-1:-1:-1::0;;;;;18434:19:0;::::1;18456:5;18434:19:::0;;;:10:::1;:19;::::0;;;;;:27;;-1:-1:-1;;18434:27:0::1;::::0;;18471:36;18456:5;;18434:19;18471:36:::1;::::0;18456:5;;18471:36:::1;18304:208:::0;:::o;18515:309::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;18599:1:::1;18575:21;:25;18567:82;;;::::0;-1:-1:-1;;;18567:82:0;;8598:2:1;18567:82:0::1;::::0;::::1;8580:21:1::0;8637:2;8617:18;;;8610:30;8676:34;8656:18;;;8649:62;-1:-1:-1;;;8727:18:1;;;8720:42;8779:19;;18567:82:0::1;8396:408:1::0;18567:82:0::1;18677:21;18660:14;18729:7;7220::::0;7241:6;-1:-1:-1;;;;;7241:6:0;;7182:70;18729:7:::1;-1:-1:-1::0;;;;;18721:21:0::1;18751:6;18721:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18703:59;;;18771:7;18767:53;;;18790:24;::::0;1895:25:1;;;18790:24:0::1;::::0;1883:2:1;1868:18;18790:24:0::1;;;;;;;;18767:53;18562:262;;18515:309::o:0;19182:196::-;-1:-1:-1;;;;;19266:33:0;;19248:7;19266:33;;;:24;:33;;;;;;;;19262:62;;;-1:-1:-1;;;;;;19308:16:0;;;;;:7;:16;;;;;;;19182:196::o;19262:62::-;-1:-1:-1;;;;;19356:16:0;;;;;;:7;:16;;;;;;19336:37;;:19;:37::i;7366:133::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;7467:1:::1;7451:6:::0;;7430:40:::1;::::0;-1:-1:-1;;;;;7451:6:0;;::::1;::::0;7430:40:::1;::::0;7467:1;;7430:40:::1;7492:1;7475:19:::0;;-1:-1:-1;;;;;;7475:19:0::1;::::0;;7366:133::o;16252:326::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;16383:92:::1;16407:5;16414:19;16435:20;16457:17;16383:23;:92::i;:::-;16485:88;::::0;-1:-1:-1;;;9221:28:1;;9274:2;9265:12;16485:88:0::1;;::::0;;;;;::::1;::::0;;4410:4:1;4398:17;;;4380:36;;4452:17;;;4447:2;4432:18;;4425:45;4506:17;;4486:18;;;4479:45;16485:88:0;;;;::::1;::::0;;;;;4368:2:1;16485:88:0;;::::1;16252:326:::0;;;:::o;17978:323::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18050:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;18049:20;18041:65;;;::::0;-1:-1:-1;;;18041:65:0;;9490:2:1;18041:65:0::1;::::0;::::1;9472:21:1::0;;;9509:18;;;9502:30;9568:34;9548:18;;;9541:62;9620:18;;18041:65:0::1;9288:356:1::0;18041:65:0::1;9376:6;18138:16;;18120:15;:34;;;;:::i;:::-;18119:56;18111:109;;;::::0;-1:-1:-1;;;18111:109:0;;9851:2:1;18111:109:0::1;::::0;::::1;9833:21:1::0;9890:2;9870:18;;;9863:30;9929:34;9909:18;;;9902:62;-1:-1:-1;;;9980:18:1;;;9973:38;10028:19;;18111:109:0::1;9649:404:1::0;18111:109:0::1;-1:-1:-1::0;;;;;18225:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;:26;;-1:-1:-1;;18225:26:0::1;18247:4;18225:26:::0;;::::1;::::0;;;18261:35;;18247:4;;18225:19;18261:35:::1;::::0;::::1;17978:323:::0;:::o;14928:333::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15032:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;:55;::::1;;:43;::::0;;::::1;:55;;::::0;15024:116:::1;;;;-1:-1:-1::0;;;15024:116:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15145:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;;;;:54;;-1:-1:-1;;15145:54:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15209:47;;775:41:1;;;15209:47:0::1;::::0;748:18:1;15209:47:0::1;635:187:1::0;13162:253:0;13257:4;13268:126;6648:10;13290:7;13298:95;13337:15;13298:95;;;;;;;;;;;;;;;;;6648:10;13298:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13298:34:0;;;;;;;;;;;;:38;:95::i;12356:154::-;12436:4;12447:42;6648:10;12471:9;12482:6;12447:9;:42::i;17670:302::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;17768:23:::1;;17756:8;:35:::0;17748:105:::1;;;::::0;-1:-1:-1;;;17748:105:0;;10260:2:1;17748:105:0::1;::::0;::::1;10242:21:1::0;10299:2;10279:18;;;10272:30;10338:34;10318:18;;;10311:62;10409:27;10389:18;;;10382:55;10454:19;;17748:105:0::1;10058:421:1::0;17748:105:0::1;17904:23;::::0;17863:65:::1;::::0;17894:8;;17863:65:::1;::::0;;;::::1;17933:23;:34:::0;17670:302::o;14646:279::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14735:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:39;::::1;;:27;::::0;;::::1;:39;;::::0;14727:100:::1;;;;-1:-1:-1::0;;;14727:100:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14832:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;14832:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14880:40;;775:41:1;;;14880:40:0::1;::::0;748:18:1;14880:40:0::1;635:187:1::0;14441:202:0;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14530:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:48;;-1:-1:-1;;14530:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14588:50;;775:41:1;;;14588:50:0::1;::::0;748:18:1;14588:50:0::1;635:187:1::0;15264:650:0;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;15368:15:::1;::::0;-1:-1:-1;;;;;15368:37:0;;::::1;:15:::0;::::1;:37;15365:266;;-1:-1:-1::0;;;;;15430:32:0;::::1;15422:82;;;::::0;-1:-1:-1;;;15422:82:0;;10686:2:1;15422:82:0::1;::::0;::::1;10668:21:1::0;10725:2;10705:18;;;10698:30;10764:34;10744:18;;;10737:62;-1:-1:-1;;;10815:18:1;;;10808:35;10860:19;;15422:82:0::1;10484:401:1::0;15422:82:0::1;15567:15;::::0;15515:68:::1;::::0;-1:-1:-1;;;11092:30:1;;-1:-1:-1;;;;;15567:15:0;;::::1;::::0;15515:68;::::1;::::0;11147:2:1;11138:12;15515:68:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;15589:15;:36:::0;;-1:-1:-1;;;;;;15589:36:0::1;-1:-1:-1::0;;;;;15589:36:0;::::1;;::::0;;15365:266:::1;15638:16;::::0;-1:-1:-1;;;;;15638:39:0;;::::1;:16:::0;::::1;:39;15635:275;;-1:-1:-1::0;;;;;15702:33:0;::::1;15694:84;;;::::0;-1:-1:-1;;;15694:84:0;;11363:2:1;15694:84:0::1;::::0;::::1;11345:21:1::0;11402:2;11382:18;;;11375:30;11441:34;11421:18;;;11414:62;-1:-1:-1;;;11492:18:1;;;11485:36;11538:19;;15694:84:0::1;11161:402:1::0;15694:84:0::1;15843:16;::::0;15789:71:::1;::::0;-1:-1:-1;;;11770:31:1;;-1:-1:-1;;;;;15843:16:0;;::::1;::::0;15789:71;::::1;::::0;11826:2:1;11817:12;15789:71:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;15866:16;:38:::0;;-1:-1:-1;;;;;15866:38:0;::::1;-1:-1:-1::0;;;;;;15866:38:0;;::::1;;::::0;;15264:650;;:::o;15935:314::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;16062:88:::1;16085:5;16092:18;16112:19;16133:16;16062:22;:88::i;:::-;16160:84;::::0;-1:-1:-1;;;12042:27:1;;12094:2;12085:12;16160:84:0::1;11840:263:1::0;7504:223:0;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7587:22:0;::::1;7579:73;;;::::0;-1:-1:-1;;;7579:73:0;;12310:2:1;7579:73:0::1;::::0;::::1;12292:21:1::0;12349:2;12329:18;;;12322:30;12388:34;12368:18;;;12361:62;-1:-1:-1;;;12439:18:1;;;12432:36;12485:19;;7579:73:0::1;12108:402:1::0;7579:73:0::1;7683:6;::::0;;7662:38:::1;::::0;-1:-1:-1;;;;;7662:38:0;;::::1;::::0;7683:6;::::1;::::0;7662:38:::1;::::0;::::1;7705:6;:17:::0;;-1:-1:-1;;;;;;7705:17:0::1;-1:-1:-1::0;;;;;7705:17:0;;;::::1;::::0;;;::::1;::::0;;7504:223::o;2663:123::-;2721:7;2742:39;2746:1;2749;2742:39;;;;;;;;;;;;;;;;;:3;:39::i;13418:306::-;-1:-1:-1;;;;;13503:19:0;;13495:68;;;;-1:-1:-1;;;13495:68:0;;12717:2:1;13495:68:0;;;12699:21:1;12756:2;12736:18;;;12729:30;12795:34;12775:18;;;12768:62;-1:-1:-1;;;12846:18:1;;;12839:34;12890:19;;13495:68:0;12515:400:1;13495:68:0;-1:-1:-1;;;;;13576:21:0;;13568:68;;;;-1:-1:-1;;;13568:68:0;;13122:2:1;13568:68:0;;;13104:21:1;13161:2;13141:18;;;13134:30;13200:34;13180:18;;;13173:62;-1:-1:-1;;;13251:18:1;;;13244:32;13293:19;;13568:68:0;12920:398:1;13568:68:0;-1:-1:-1;;;;;13641:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13687:32;;1895:25:1;;;13687:32:0;;1868:18:1;13687:32:0;;;;;;;13418:306;;;:::o;20665:1497::-;-1:-1:-1;;;;;20758:18:0;;20750:68;;;;-1:-1:-1;;;20750:68:0;;13525:2:1;20750:68:0;;;13507:21:1;13564:2;13544:18;;;13537:30;13603:34;13583:18;;;13576:62;-1:-1:-1;;;13654:18:1;;;13647:35;13699:19;;20750:68:0;13323:401:1;20750:68:0;-1:-1:-1;;;;;20831:16:0;;20823:64;;;;-1:-1:-1;;;20823:64:0;;13931:2:1;20823:64:0;;;13913:21:1;13970:2;13950:18;;;13943:30;14009:34;13989:18;;;13982:62;-1:-1:-1;;;14060:18:1;;;14053:33;14103:19;;20823:64:0;13729:399:1;20823:64:0;20909:1;20900:6;:10;20892:64;;;;-1:-1:-1;;;20892:64:0;;14335:2:1;20892:64:0;;;14317:21:1;14374:2;14354:18;;;14347:30;14413:34;14393:18;;;14386:62;-1:-1:-1;;;14464:18:1;;;14457:39;14513:19;;20892:64:0;14133:405:1;20892:64:0;20979:15;20989:4;20979:9;:15::i;:::-;20969:6;:25;;20961:77;;;;-1:-1:-1;;;20961:77:0;;14745:2:1;20961:77:0;;;14727:21:1;14784:2;14764:18;;;14757:30;14823:34;14803:18;;;14796:62;-1:-1:-1;;;14874:18:1;;;14867:37;14921:19;;20961:77:0;14543:403:1;20961:77:0;-1:-1:-1;;;;;21064:31:0;;;21045:16;21064:31;;;:25;:31;;;;;;;;;21118:29;;;;;;;;;21158:35;;;:29;:35;;;;;;21064:31;;;;;21118:29;;;;21158:35;21157:36;:74;;;;-1:-1:-1;;;;;;21198:33:0;;;;;;:29;:33;;;;;;;;21197:34;21157:74;21154:502;;;21247:16;;;;21239:65;;;;-1:-1:-1;;;21239:65:0;;15153:2:1;21239:65:0;;;15135:21:1;15192:2;15172:18;;;15165:30;15231:34;15211:18;;;15204:62;-1:-1:-1;;;15282:18:1;;;15275:34;15326:19;;21239:65:0;14951:400:1;21239:65:0;-1:-1:-1;;;;;21328:14:0;;;;;;:10;:14;;;;;;;;21327:15;21319:52;;;;-1:-1:-1;;;21319:52:0;;15558:2:1;21319:52:0;;;15540:21:1;15597:2;15577:18;;;15570:30;-1:-1:-1;;;15616:18:1;;;15609:54;15680:18;;21319:52:0;15356:348:1;21319:52:0;-1:-1:-1;;;;;21386:16:0;;;;;;:10;:16;;;;;;;;21385:17;21377:54;;;;-1:-1:-1;;;21377:54:0;;15558:2:1;21377:54:0;;;15540:21:1;15597:2;15577:18;;;15570:30;-1:-1:-1;;;15616:18:1;;;15609:54;15680:18;;21377:54:0;15356:348:1;21377:54:0;-1:-1:-1;;;;;21451:38:0;;;;;;:34;:38;;;;;;;;21450:39;:84;;;;-1:-1:-1;;;;;;21494:40:0;;;;;;:34;:40;;;;;;;;21493:41;21450:84;21446:205;;;21573:11;;21563:6;:21;;21555:80;;;;-1:-1:-1;;;21555:80:0;;15911:2:1;21555:80:0;;;15893:21:1;15950:2;15930:18;;;15923:30;15989:34;15969:18;;;15962:62;-1:-1:-1;;;16040:18:1;;;16033:44;16094:19;;21555:80:0;15709:410:1;21555:80:0;21662:37;21675:11;21688:10;21662:12;:37::i;:::-;21704:12;21747:23;;21719:24;21737:4;21719:9;:24::i;:::-;21786:16;;21719:51;-1:-1:-1;21719:51:0;;-1:-1:-1;21786:16:0;;:31;;;;;21810:7;21786:31;:49;;;;-1:-1:-1;21826:9:0;;;;21825:10;21786:49;:70;;;;-1:-1:-1;21843:9:0;;;;;;;:13;;21786:70;:107;;;;-1:-1:-1;;;;;;21864:29:0;;;;;;:25;:29;;;;;;;;21786:107;21777:196;;;21905:9;:16;;-1:-1:-1;;21905:16:0;21917:4;21905:16;;;21927:17;:15;:17::i;:::-;21950:9;:17;;-1:-1:-1;;21950:17:0;;;21777:196;21995:9;;21979:12;;21995:9;;21994:10;:30;;;;-1:-1:-1;22008:16:0;;;;21994:30;-1:-1:-1;;;;;22034:24:0;;;;;;:18;:24;;;;;;21979:45;;-1:-1:-1;22034:24:0;;;:50;;-1:-1:-1;;;;;;22062:22:0;;;;;;:18;:22;;;;;;;;22034:50;22031:81;;;-1:-1:-1;22101:5:0;22031:81;22116:41;22131:4;22137:2;22141:6;22149:7;22116:14;:41::i;:::-;20745:1417;;;;20665:1497;;;:::o;2071:171::-;2157:7;2187:12;2179:6;;;;2171:29;;;;-1:-1:-1;;;2171:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2205:9:0;2217:5;2221:1;2217;:5;:::i;:::-;2205:17;2071:171;-1:-1:-1;;;;;2071:171:0:o;23836:149::-;23878:7;23893:15;23910;23929:19;:17;:19::i;:::-;23892:56;;-1:-1:-1;23892:56:0;-1:-1:-1;23960:20:0;23892:56;;23960:11;:20::i;:::-;23953:27;;;;23836:149;:::o;1774:160::-;1832:7;;1858:5;1862:1;1858;:5;:::i;:::-;1846:17;;1881:1;1876;:6;;1868:46;;;;-1:-1:-1;;;1868:46:0;;16459:2:1;1868:46:0;;;16441:21:1;16498:2;16478:18;;;16471:30;16537:29;16517:18;;;16510:57;16584:18;;1868:46:0;16257:351:1;25872:850:0;26049:22;;;;:45;;;;:22;;;;;:45;26045:222;;26107:104;;-1:-1:-1;;;16815:33:1;;16873:2;16864:12;26107:104:0;;;;;;;;26150:22;;;;26196:14;;26107:104;;26150:22;;;;;;;;26107:104;;;;-1:-1:-1;;;;;;;;;;;26107:104:0;;;26196:14;;;26107:104;:::i;:::-;;;;;;;;26217:22;;;:44;;-1:-1:-1;;26217:44:0;;;;;;;;;26045:222;26281:23;;;;:47;;;;:23;;;;;:47;26277:229;;26341:107;;-1:-1:-1;;;17303:34:1;;17362:2;17353:12;26341:107:0;;;;;;;;26385:23;;;;26433:14;;26341:107;;26385:23;;;;;;;;26341:107;;;;-1:-1:-1;;;;;;;;;;;26341:107:0;;;26433:14;;;26341:107;:::i;:::-;;;;;;;;26454:23;;;:46;;-1:-1:-1;;26454:46:0;;;;;;;;;26277:229;26514:20;;;;:41;;;;-1:-1:-1;;;26514:20:0;;;;:41;26510:208;;26568:98;;-1:-1:-1;;;17578:31:1;;17634:2;17625:12;26568:98:0;;;;;;;;26609:20;;;;26651:14;;26568:98;;26609:20;-1:-1:-1;;;26609:20:0;;;;;;26568:98;;;;-1:-1:-1;;;;;;;;;;;26568:98:0;;;26651:14;;;26568:98;:::i;:::-;;;;;;;;26672:20;;;:40;;-1:-1:-1;;26672:40:0;-1:-1:-1;;;26672:40:0;;;;;;;26510:208;25872:850;;;;:::o;26725:825::-;26898:21;;;;:43;;;;:21;;:43;26894:215;;26954:101;;-1:-1:-1;;;17850:32:1;;17907:2;17898:12;26954:101:0;;;;;;;;26996:21;;;;27040:14;;26954:101;;26996:21;;;;;26954:101;;;;-1:-1:-1;;;;;;;;;;;26954:101:0;;;27040:14;;;26954:101;:::i;:::-;;;;;;;;27061:21;;;:42;;-1:-1:-1;;27061:42:0;;;;;;;26894:215;27123:22;;;;:45;;;;:22;;;;;:45;27119:222;;27181:104;;-1:-1:-1;;;18123:33:1;;18181:2;18172:12;27181:104:0;;;;;;;;27224:22;;;;27270:14;;27181:104;;27224:22;;;;;;;;27181:104;;;;-1:-1:-1;;;;;;;;;;;27181:104:0;;;27270:14;;;27181:104;:::i;:::-;;;;;;;;27291:22;;;:44;;-1:-1:-1;;27291:44:0;;;;;;;;;27119:222;27349:19;;;;:39;;;;:19;;;;;:39;27345:201;;27401:95;;-1:-1:-1;;;18397:30:1;;18452:2;18443:12;27401:95:0;;;;;;;;27441:19;;;;27481:14;;27401:95;;27441:19;;;;;;;;27401:95;;;;-1:-1:-1;;;;;;;;;;;27401:95:0;;;27481:14;;;27401:95;:::i;:::-;;;;;;;;27502:19;;;:38;;;;;;;-1:-1:-1;;27502:38:0;;;;;;26725:825;;;;:::o;2791:251::-;2877:7;2906:12;2899:5;2891:28;;;;-1:-1:-1;;;2891:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2924:9:0;2936:5;2940:1;2936;:5;:::i;24758:1111::-;24828:13;:17;;-1:-1:-1;;24873:15:0;;;24895:323;;;;24970:1;24947:18;;24932:12;:33;;;;:::i;:::-;24931:40;24927:286;;24980:13;:19;;-1:-1:-1;;24980:19:0;24996:3;24980:19;;;24927:286;;;25060:23;;25044:13;:39;;25176:21;;;25060:23;25176:21;;;25119:24;25162:35;;;-1:-1:-1;;25119:24:0;;;;;25060:23;25102:41;-1:-1:-1;;25102:41:0;;;25060:23;;;;25102:41;;;;;;;;25162:35;;;;;;;24927:286;25226:10;25222:506;;;25260:24;;25244:13;:40;;25260:24;;;;;;;;-1:-1:-1;;25290:42:0;;;;;;;25307:25;;;;;25290:42;;;;;-1:-1:-1;;25338:36:0;-1:-1:-1;;;25352:22:0;;;;25338:36;;;;;;;;25413:16;;25433:5;;25395:34;;:15;:34;:::i;:::-;:43;25391:332;;25459:13;:17;;-1:-1:-1;;25495:16:0;;;;;25552;;25572:4;;25534:34;;:15;:34;:::i;:::-;:42;25530:178;;25601:14;:19;;-1:-1:-1;;25601:19:0;;;;;25530:178;;;25669:14;:19;;-1:-1:-1;;25669:19:0;;;;;25530:178;25777:11;;;;;;;;;25744:30;;25777:11;25760:14;;;;;25744:13;:30;:::i;:::-;:44;;;;:::i;:::-;25732:9;:56;;-1:-1:-1;;25732:56:0;;;;;;;;;;;;;;;;25798:66;;;25810:13;;;;;;;;;;18890:36:1;;25732:56:0;25825:14;;;;18957:2:1;18942:18;;18935:45;25841:11:0;;;;;18996:18:1;;;18989:45;;;;25854:9:0;;;;;;19065:2:1;19050:18;;19043:45;25798:66:0;;18877:3:1;18862:19;25798:66:0;18675:419:1;27553:1241:0;27593:23;27619:24;27637:4;27619:9;:24::i;:::-;27726:9;;27593:50;;-1:-1:-1;27676:21:0;;27726:9;;;;;;;27772:13;;;;27726:9;27823:14;;;;;27866:11;;;;27648:25;27866:11;27726:9;27910:31;27772:13;27593:50;27910:31;:::i;:::-;:43;;;;:::i;:::-;:47;;;;:::i;:::-;27884:73;-1:-1:-1;27962:26:0;27991:33;27884:73;27991:15;:33;:::i;:::-;27962:62;;28031:37;28049:18;28031:17;:37::i;:::-;28075:27;28105:41;28129:17;28105:21;:41;:::i;:::-;28075:71;-1:-1:-1;28151:19:0;28216:15;28190:21;28210:1;28190:17;:21;:::i;:::-;28173:39;;:13;:39;:::i;:::-;:59;;;;:::i;:::-;28151:81;;;;28237:26;28322:1;28308:11;28288:17;28266:39;;:19;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:57;;;;:::i;:::-;28237:86;-1:-1:-1;28328:27:0;28358:40;28237:86;28358:19;:40;:::i;:::-;28413:16;;28405:55;;28328:70;;-1:-1:-1;;;;;;28413:16:0;;28405:55;;;;;28328:70;;28413:16;28405:55;28413:16;28405:55;28328:70;28413:16;28405:55;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28471:19:0;;28467:169;;28498:50;28512:15;28529:18;28498:13;:50::i;:::-;28559:71;;;19671:25:1;;;19727:2;19712:18;;19705:34;;;19755:18;;;19748:34;;;28559:71:0;;19659:2:1;19644:18;28559:71:0;;;;;;;28467:169;-1:-1:-1;;28640:9:0;:25;;;28760:29;;;;;-1:-1:-1;;28720:35:0;;;28640:25;28720:35;-1:-1:-1;;28640:25:0;;;;;28720:35;;;;-1:-1:-1;;28720:35:0;;;;;;;28676:33;;;;28720:35;;;;;;;;28760:29;;;;;;;;;;;-1:-1:-1;;;;;;27553:1241:0:o;22165:762::-;22268:23;22292:12;22306:14;22324:29;22336:7;22345;22324:11;:29::i;:::-;22267:86;;;;;;22359:15;22376:23;22401:12;22415:14;22433:46;22445:7;22454:4;22460:6;22468:10;:8;:10::i;:::-;22433:11;:46::i;:::-;-1:-1:-1;;;;;22490:32:0;;;;;;:24;:32;;;;;;22358:121;;-1:-1:-1;22358:121:0;;-1:-1:-1;22358:121:0;-1:-1:-1;22358:121:0;-1:-1:-1;22490:32:0;;22486:93;;;-1:-1:-1;;;;;22548:15:0;;;;;;:7;:15;;;;;;:25;;22566:7;;22548:25;:::i;:::-;-1:-1:-1;;;;;22530:15:0;;;;;;:7;:15;;;;;:43;22486:93;-1:-1:-1;;;;;22587:35:0;;;;;;:24;:35;;;;;;;;22583:110;;;-1:-1:-1;;;;;22651:18:0;;;;;;:7;:18;;;;;;:36;;22672:15;;22651:36;:::i;:::-;-1:-1:-1;;;;;22630:18:0;;;;;;:7;:18;;;;;:57;22583:110;-1:-1:-1;;;;;22715:15:0;;;;;;:7;:15;;;;;;:25;;22733:7;;22715:25;:::i;:::-;-1:-1:-1;;;;;22697:15:0;;;;;;;:7;:15;;;;;;:43;;;;22766:18;;;;;;;:36;;22787:15;;22766:36;:::i;:::-;-1:-1:-1;;;;;22745:18:0;;;;;;:7;:18;;;;;:57;22807:33;22825:6;22833;22807:17;:33::i;:::-;22845:23;22857:4;22863;22845:11;:23::i;:::-;22895:9;-1:-1:-1;;;;;22878:44:0;22887:6;-1:-1:-1;;;;;22878:44:0;;22906:15;22878:44;;;;1895:25:1;;1883:2;1868:18;;1749:177;22878:44:0;;;;;;;;22262:665;;;;;;;22165:762;;;;:::o;23988:562::-;24080:7;;24039;;;;8302:22;24039:7;24122:331;24146:22;:29;24142:33;;24122:331;;;24235:7;24198;:34;24206:22;24229:1;24206:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24206:25:0;24198:34;;;;;;;;;;;;;:44;;:97;;;24288:7;24251;:34;24259:22;24282:1;24259:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24259:25:0;24251:34;;;;;;;;;;;;;:44;24198:97;24188:139;;;-1:-1:-1;;24310:7:0;;;8302:22;;-1:-1:-1;23988:562:0;-1:-1:-1;;23988:562:0:o;24188:139::-;24353:7;:34;24361:22;24384:1;24361:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24361:25:0;24353:34;;;;;;;;;;;;;24343:44;;:7;:44;:::i;:::-;24333:54;;24413:7;:34;24421:22;24444:1;24421:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24421:25:0;24413:34;;;;;;;;;;;;;24403:44;;:7;:44;:::i;:::-;24393:54;-1:-1:-1;24177:3:0;;;;:::i;:::-;;;;24122:331;;;;8302:22;24471:7;;:17;;;;:::i;:::-;24461:7;:27;24457:58;;;-1:-1:-1;;24498:7:0;;;8302:22;;-1:-1:-1;23988:562:0;-1:-1:-1;23988:562:0:o;24457:58::-;24528:7;;24537;;-1:-1:-1;23988:562:0;-1:-1:-1;23988:562:0:o;28797:411::-;28882:16;;;28896:1;28882:16;;;;;;;;28858:21;;28882:16;;;;;;;;;;-1:-1:-1;28882:16:0;28858:40;;28921:4;28903;28908:1;28903:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28903:23:0;;;:7;;;;;;;;;;:23;;;;28941:15;;:22;;;-1:-1:-1;;;28941:22:0;;;;:15;;;;;:20;;:22;;;;;28903:7;;28941:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28931:4;28936:1;28931:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28931:32:0;;;:7;;;;;;;;;:32;29000:15;;28968:62;;28985:4;;29000:15;29018:11;28968:8;:62::i;:::-;29035:15;;:168;;-1:-1:-1;;;29035:168:0;;-1:-1:-1;;;;;29035:15:0;;;;:66;;:168;;29106:11;;29035:15;;29156:4;;29173;;29183:15;;29035:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28853:355;28797:411;:::o;29211:345::-;29319:15;;29287:62;;29304:4;;-1:-1:-1;;;;;29319:15:0;29337:11;29287:8;:62::i;:::-;29354:15;;29508;;29354:194;;-1:-1:-1;;;29354:194:0;;29416:4;29354:194;;;21507:34:1;21557:18;;;21550:34;;;29354:15:0;21600:18:1;;;21593:34;;;21643:18;;;21636:34;-1:-1:-1;;;;;29508:15:0;;;21686:19:1;;;21679:44;29528:15:0;21739:19:1;;;21732:35;29354:15:0;;;:31;;29393:9;;21441:19:1;;29354:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29211:345;;:::o;23038:390::-;23112:7;23120;23128;23146;23141:283;;-1:-1:-1;23169:7:0;;-1:-1:-1;23178:1:0;;-1:-1:-1;23178:1:0;23161:22;;23141:283;23229:11;;23204:12;;23243:3;;23219:21;;23229:11;;;;;23219:7;:21;:::i;:::-;:27;;;;:::i;:::-;23296:14;;23204:42;;-1:-1:-1;23252:14:0;;23314:3;;23280:30;;23296:14;;;;;;;23280:13;:30;:::i;:::-;23269:42;;;;:7;:42;:::i;:::-;:48;;;;:::i;:::-;23252:65;-1:-1:-1;23323:23:0;23360:13;23252:65;23360:4;:13;:::i;:::-;23349:25;;:7;:25;:::i;:::-;23323:51;-1:-1:-1;23405:4:0;;-1:-1:-1;23411:6:0;-1:-1:-1;23380:38:0;;-1:-1:-1;23380:38:0;23141:283;23038:390;;;;;:::o;23431:402::-;23560:7;;;;;23619:21;23629:11;23619:7;:21;:::i;:::-;23601:39;-1:-1:-1;23645:12:0;23660:18;23667:11;23660:4;:18;:::i;:::-;23645:33;-1:-1:-1;23683:14:0;23700:20;23709:11;23700:6;:20;:::i;:::-;23683:37;-1:-1:-1;23725:23:0;23762:13;23683:37;23762:4;:13;:::i;:::-;23751:25;;:7;:25;:::i;:::-;23789:7;;;;-1:-1:-1;23815:4:0;;-1:-1:-1;23815:4:0;-1:-1:-1;23431:402:0;;-1:-1:-1;;;;;;23431:402:0:o;24553:202::-;24662:4;24629:39;;;;:24;:39;;;;;;;;24625:89;;;24692:4;24676:22;;;;:7;:22;;;;;:32;;24702:6;;24676:22;:32;;24702:6;;24676:32;:::i;:::-;;;;-1:-1:-1;;24625:89:0;24734:4;24718:22;;;;:7;:22;;;;;:32;;24744:6;;24718:22;:32;;24744:6;;24718:32;:::i;:::-;;;;-1:-1:-1;;;;24553:202:0:o;22930:105::-;23003:4;22992:7;;:15;;;;;;;:::i;:::-;;;;;;;;23026:4;23012:10;;:18;;;;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:160::-;215:20;;271:13;;264:21;254:32;;244:60;;300:1;297;290:12;244:60;150:160;;;:::o;315:315::-;380:6;388;441:2;429:9;420:7;416:23;412:32;409:52;;;457:1;454;447:12;409:52;496:9;483:23;515:31;540:5;515:31;:::i;:::-;565:5;-1:-1:-1;589:35:1;620:2;605:18;;589:35;:::i;:::-;579:45;;315:315;;;;;:::o;827:597::-;939:4;968:2;997;986:9;979:21;1029:6;1023:13;1072:6;1067:2;1056:9;1052:18;1045:34;1097:1;1107:140;1121:6;1118:1;1115:13;1107:140;;;1216:14;;;1212:23;;1206:30;1182:17;;;1201:2;1178:26;1171:66;1136:10;;1107:140;;;1265:6;1262:1;1259:13;1256:91;;;1335:1;1330:2;1321:6;1310:9;1306:22;1302:31;1295:42;1256:91;-1:-1:-1;1408:2:1;1387:15;-1:-1:-1;;1383:29:1;1368:45;;;;1415:2;1364:54;;827:597;-1:-1:-1;;;827:597:1:o;1429:315::-;1497:6;1505;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;:::-;1682:5;1734:2;1719:18;;;;1706:32;;-1:-1:-1;;;1429:315:1:o;2154:180::-;2213:6;2266:2;2254:9;2245:7;2241:23;2237:32;2234:52;;;2282:1;2279;2272:12;2234:52;-1:-1:-1;2305:23:1;;2154:180;-1:-1:-1;2154:180:1:o;2339:456::-;2416:6;2424;2432;2485:2;2473:9;2464:7;2460:23;2456:32;2453:52;;;2501:1;2498;2491:12;2453:52;2540:9;2527:23;2559:31;2584:5;2559:31;:::i;:::-;2609:5;-1:-1:-1;2666:2:1;2651:18;;2638:32;2679:33;2638:32;2679:33;:::i;:::-;2339:456;;2731:7;;-1:-1:-1;;;2785:2:1;2770:18;;;;2757:32;;2339:456::o;2989:248::-;3054:6;3062;3115:2;3103:9;3094:7;3090:23;3086:32;3083:52;;;3131:1;3128;3121:12;3083:52;3167:9;3154:23;3144:33;;3196:35;3227:2;3216:9;3212:18;3196:35;:::i;3450:247::-;3509:6;3562:2;3550:9;3541:7;3537:23;3533:32;3530:52;;;3578:1;3575;3568:12;3530:52;3617:9;3604:23;3636:31;3661:5;3636:31;:::i;3702:156::-;3768:20;;3828:4;3817:16;;3807:27;;3797:55;;3848:1;3845;3838:12;3863:322;3934:6;3942;3950;4003:2;3991:9;3982:7;3978:23;3974:32;3971:52;;;4019:1;4016;4009:12;3971:52;4042:27;4059:9;4042:27;:::i;:::-;4032:37;;4088:36;4120:2;4109:9;4105:18;4088:36;:::i;:::-;4078:46;;4143:36;4175:2;4164:9;4160:18;4143:36;:::i;:::-;4133:46;;3863:322;;;;;:::o;4535:388::-;4603:6;4611;4664:2;4652:9;4643:7;4639:23;4635:32;4632:52;;;4680:1;4677;4670:12;4632:52;4719:9;4706:23;4738:31;4763:5;4738:31;:::i;:::-;4788:5;-1:-1:-1;4845:2:1;4830:18;;4817:32;4858:33;4817:32;4858:33;:::i;:::-;4910:7;4900:17;;;4535:388;;;;;:::o;4928:356::-;5130:2;5112:21;;;5149:18;;;5142:30;5208:34;5203:2;5188:18;;5181:62;5275:2;5260:18;;4928:356::o;5289:412::-;5491:2;5473:21;;;5530:2;5510:18;;;5503:30;5569:34;5564:2;5549:18;;5542:62;-1:-1:-1;;;5635:2:1;5620:18;;5613:46;5691:3;5676:19;;5289:412::o;5706:127::-;5767:10;5762:3;5758:20;5755:1;5748:31;5798:4;5795:1;5788:15;5822:4;5819:1;5812:15;5838:127;5899:10;5894:3;5890:20;5887:1;5880:31;5930:4;5927:1;5920:15;5954:4;5951:1;5944:15;5970:125;6010:4;6038:1;6035;6032:8;6029:34;;;6043:18;;:::i;:::-;-1:-1:-1;6080:9:1;;5970:125::o;6100:127::-;6161:10;6156:3;6152:20;6149:1;6142:31;6192:4;6189:1;6182:15;6216:4;6213:1;6206:15;6232:135;6271:3;6292:17;;;6289:43;;6312:18;;:::i;:::-;-1:-1:-1;6359:1:1;6348:13;;6232:135::o;7203:127::-;7264:10;7259:3;7255:20;7252:1;7245:31;7295:4;7292:1;7285:15;7319:4;7316:1;7309:15;7335:120;7375:1;7401;7391:35;;7406:18;;:::i;:::-;-1:-1:-1;7440:9:1;;7335:120::o;7866:168::-;7906:7;7972:1;7968;7964:6;7960:14;7957:1;7954:21;7949:1;7942:9;7935:17;7931:45;7928:71;;;7979:18;;:::i;:::-;-1:-1:-1;8019:9:1;;7866:168::o;16124:128::-;16164:3;16195:1;16191:6;16188:1;16185:13;16182:39;;;16201:18;;:::i;:::-;-1:-1:-1;16237:9:1;;16124:128::o;16887:209::-;-1:-1:-1;;17051:38:1;;;;17033:57;;17021:2;17006:18;;16887:209::o;18466:204::-;18504:3;18540:4;18537:1;18533:12;18572:4;18569:1;18565:12;18607:3;18601:4;18597:14;18592:3;18589:23;18586:49;;;18615:18;;:::i;:::-;18651:13;;18466:204;-1:-1:-1;;;18466:204:1:o;19099:165::-;19137:1;19171:4;19168:1;19164:12;19195:3;19185:37;;19202:18;;:::i;:::-;19254:3;19247:4;19244:1;19240:12;19236:22;19231:27;;;19099:165;;;;:::o;19269:195::-;19307:4;19344;19341:1;19337:12;19376:4;19373:1;19369:12;19401:3;19396;19393:12;19390:38;;;19408:18;;:::i;:::-;19445:13;;;19269:195;-1:-1:-1;;;19269:195:1:o;19925:251::-;19995:6;20048:2;20036:9;20027:7;20023:23;20019:32;20016:52;;;20064:1;20061;20054:12;20016:52;20096:9;20090:16;20115:31;20140:5;20115:31;:::i;20181:980::-;20443:4;20491:3;20480:9;20476:19;20522:6;20511:9;20504:25;20548:2;20586:6;20581:2;20570:9;20566:18;20559:34;20629:3;20624:2;20613:9;20609:18;20602:31;20653:6;20688;20682:13;20719:6;20711;20704:22;20757:3;20746:9;20742:19;20735:26;;20796:2;20788:6;20784:15;20770:29;;20817:1;20827:195;20841:6;20838:1;20835:13;20827:195;;;20906:13;;-1:-1:-1;;;;;20902:39:1;20890:52;;20997:15;;;;20962:12;;;;20938:1;20856:9;20827:195;;;-1:-1:-1;;;;;;;21078:32:1;;;;21073:2;21058:18;;21051:60;-1:-1:-1;;;21142:3:1;21127:19;21120:35;21039:3;20181:980;-1:-1:-1;;;20181:980:1:o;21778:306::-;21866:6;21874;21882;21935:2;21923:9;21914:7;21910:23;21906:32;21903:52;;;21951:1;21948;21941:12;21903:52;21980:9;21974:16;21964:26;;22030:2;22019:9;22015:18;22009:25;21999:35;;22074:2;22063:9;22059:18;22053:25;22043:35;;21778:306;;;;;:::o

Swarm Source

ipfs://e6ab72041654a0155f3ca1cd1717d715959f325b5374bf96c9ea51f19e764949

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

FlipToken is designed to keep building value despite all obstacles. They have procured the method of utilizing the fullness of the blockchain to generate value from within.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.