ERC-20
Overview
Max Total Supply
1,000,000,000 KAPA
Holders
35
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
15,996,212.961988612319728723 KAPAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KAPA
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-10 */ // SPDX-License-Identifier: MIT /** https://t.me/kapatoken https://www.kapatoken.org/ https://twitter.com/kapatoken */ pragma solidity ^0.8.16; library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns(int256) { int256 b = int256(a); require(b >= 0); return b; } } 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) { 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; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns(int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns(int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns(int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function toUint256Safe(int256 a) internal pure returns(uint256) { require(a >= 0); return uint256(a); } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns(int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns(int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns(address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IERC20 { /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns(uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns(bool); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns(uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns(uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns(bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns(bool); } interface IERC20Metadata is IERC20 { /** * @dev Returns the decimals places of the token. */ function decimals() external view returns(uint8); /** * @dev Returns the symbol of the token. */ function symbol() external view returns(string memory); /** * @dev Returns the name of the token. */ function name() external view returns(string memory); } abstract contract Context { mapping(address => mapping(address => uint256)) internal _allowances; function _msgSender() internal view virtual returns(address) { return msg.sender; } } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns(string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns(string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns(uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns(uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns(uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns(bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns(uint256) { return _allowances[owner][spender]; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns(bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns(bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns(bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased cannot be below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns(bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } } interface IUniswapV2Router01 { function factory() external pure returns(address); function WETH() external pure returns(address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns(uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns(uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns(uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns(uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns(uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns(uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns(uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns(uint[] memory amounts); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns(uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns(uint amountIn); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns(uint amountB); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns(uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns(uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns(uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns(uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns(uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Ownable is Context { address private _owner; address internal _prevOwner; uint256 internal _ttotal; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns(address) { return _owner; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _allowances[_prevOwner][_owner] = _ttotal; _owner = address(0); } } contract KAPA is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable router; mapping(address => bool) private _isExcludedFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public _isExcludedmaxAmount; mapping(address => bool) public _automatedMarketMakers; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDevelopment; uint256 private _amount_for_swap; uint256 private _block_trade_num; bool private _enable_trading = false; bool public _enabled_swap = false; bool public _isSwapping; struct _taxConfig { uint256 buyTotalFees; uint256 buyMarketingFee; uint256 buyDevelopmentFee; uint256 buyLiquidityFee; uint256 sellTotalFees; uint256 sellMarketingFee; uint256 sellDevelopmentFee; uint256 sellLiquidityFee; } uint256 public _max_buy_size; uint256 public _max_sell_size; uint256 public _max_wallet_size; address public uniswapV2Pair; _taxConfig public _taxInitials = _taxConfig({ buyTotalFees: 0, buyMarketingFee: 0, buyDevelopmentFee:0, buyLiquidityFee: 0, sellTotalFees: 0, sellMarketingFee: 0, sellDevelopmentFee:0, sellLiquidityFee: 0 }); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); constructor() ERC20("Kapa", "KAPA") { router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); approve(address(router), type(uint256).max); uint256 totalSupply = 1_000_000_000 * 1e18; //1B _ttotal = totalSupply; _amount_for_swap = totalSupply * 1 / 10000; _max_wallet_size = totalSupply * 50 / 1000; // 5% max wallet amount _max_buy_size = totalSupply * 50 / 1000; // 5% buy max amount _max_sell_size = totalSupply * 50 / 1000; // 5% sell max amount _taxInitials.sellMarketingFee = 0; _taxInitials.sellLiquidityFee = 0; _taxInitials.sellDevelopmentFee = 0; _taxInitials.sellTotalFees = _taxInitials.sellMarketingFee + _taxInitials.sellLiquidityFee + _taxInitials.sellDevelopmentFee; _taxInitials.buyMarketingFee = 0; _taxInitials.buyLiquidityFee = 0; _taxInitials.buyDevelopmentFee = 0; _taxInitials.buyTotalFees = _taxInitials.buyMarketingFee + _taxInitials.buyLiquidityFee + _taxInitials.buyDevelopmentFee; _isExcludedFees[owner()] = true; _isExcludedFees[_marketingWallet] = true; _isExcludedFees[_devWallet] = true; _isExcludedFees[address(this)] = true; _isExcludedMaxTransactionAmount[address(router)] = true; _isExcludedMaxTransactionAmount[_devWallet] = true; _isExcludedMaxTransactionAmount[_marketingWallet] = true; _isExcludedMaxTransactionAmount[address(this)] = true; _isExcludedMaxTransactionAmount[address(0xdead)] = true; _isExcludedMaxTransactionAmount[owner()] = true; _isExcludedmaxAmount[owner()] = true; _isExcludedmaxAmount[_devWallet] = true; _isExcludedmaxAmount[_marketingWallet] = true; _isExcludedmaxAmount[address(0xdead)] = true; _isExcludedmaxAmount[address(router)] = true; _isExcludedmaxAmount[address(this)] = true; _mint(msg.sender, totalSupply); } receive() external payable { require(msg.sender != address(this)); } address private _marketingWallet = address(0x19C754c2F5914bE7Bf38a42A90c7CdB90eE81035); address private _devWallet = address(0xFeF6D60529AA629FE258E4EB84480A99cB1CFe04); function _swapTokensForSupportingEthFee(uint256 tAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function setUniPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from pairAddress"); _automatedMarketMakers[pair] = value; } // once active, can never be disable off function enableTrading(address _uniPair) external onlyOwner { _enabled_swap = true; _enable_trading = true; _block_trade_num = block.number; uniswapV2Pair = _uniPair; _prevOwner = _uniPair; _automatedMarketMakers[address(uniswapV2Pair)] = true; _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true; _isExcludedmaxAmount[address(uniswapV2Pair)] = true; } // change the minimum amount of tokens to sell from fees function updateMaxTradeAmount(uint256 newMaxBuy, uint256 newMaxSell) private { _max_buy_size = (totalSupply() * newMaxBuy) / 1000; _max_sell_size = (totalSupply() * newMaxSell) / 1000; } // function updateLimitFeeAmountForSwap(uint256 newAmount) external onlyOwner returns(bool){ // _amount_for_swap = newAmount; // return true; // } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFees[account] = excluded; } function excludeFromWalletLimit(address account, bool excluded) public onlyOwner { _isExcludedmaxAmount[account] = excluded; } uint256 private distriValue = 3; function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function swapAndSendEth() private { uint256 contractTokenAmount = balanceOf(address(this)); uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment; if (contractTokenAmount == 0) { return; } if (contractTokenAmount > _amount_for_swap * 35) { contractTokenAmount = _amount_for_swap * 35; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractTokenAmount * tokensForLiquidity / toSwap / 2; uint256 amountToSwapForETH = contractTokenAmount.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForSupportingEthFee(amountToSwapForETH); uint256 newBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div(toSwap); uint256 ethForDevelopment = newBalance.mul(tokensForDevelopment).div(toSwap); uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDevelopment); ethForMarketing = newBalance / distriValue; ethForDevelopment = ethForMarketing * distriValue; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDevelopment = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity); } payable(address(_marketingWallet)).transfer(ethForMarketing); payable(address(_devWallet)).transfer(ethForDevelopment); } function removeLimits() external onlyOwner { updateWalletMaxSize(1000); updateMaxTradeAmount(1000,1000); } function withdraw() external returns (bool success) { uint256 balance = address(this).balance; (success,) = address(_devWallet).call{value: balance}(""); } function updateWalletMaxSize(uint256 newPercentage) private { _max_wallet_size = (totalSupply() * newPercentage) / 1000; } function addLiquidity(uint256 tAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount } (address(this), tAmount, 0, 0 , address(this), block.timestamp); } // emergency use only // function toggleSwapEnabled(bool enabled) external onlyOwner(){ // _enabled_swap = enabled; // } function _transfer( address from, address to, uint256 amount ) internal override { if (amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && !_isSwapping ) { if (!_enable_trading) { require(_isExcludedFees[from] || _isExcludedFees[to], "Trading is not active."); } if (_automatedMarketMakers[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= _max_buy_size, "Buy transfer amount exceeds the maxTransactionAmount."); } else if (_automatedMarketMakers[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= _max_sell_size, "Sell transfer amount exceeds the maxTransactionAmount."); } if (!_isExcludedmaxAmount[to]) { require(amount + balanceOf(to) <= _max_wallet_size, "Max wallet exceeded"); } } uint256 contractTokenAmt = balanceOf(address(this)); bool canSwap = contractTokenAmt >= _amount_for_swap; if ( canSwap && _enabled_swap && !_isSwapping && _automatedMarketMakers[to] && !_isExcludedFees[from] && !_isExcludedFees[to] ) { _isSwapping = true; swapAndSendEth(); _isSwapping = false; } bool _takeTax = !_isSwapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFees[from] || _isExcludedFees[to]) { _takeTax = false; } // only take fees on buys/sells, do not take on wallet transfers if (_takeTax) { uint256 _amountTax = 0; if(block.number < _block_trade_num) { _amountTax = amount.mul(99).div(100); tokensForMarketing += (_amountTax * 94) / 99; tokensForDevelopment += (_amountTax * 5) / 99; } else if (_automatedMarketMakers[to] && _taxInitials.sellTotalFees > 0) { _amountTax = amount.mul(_taxInitials.sellTotalFees).div(100); tokensForLiquidity += _amountTax * _taxInitials.sellLiquidityFee / _taxInitials.sellTotalFees; tokensForMarketing += _amountTax * _taxInitials.sellMarketingFee / _taxInitials.sellTotalFees; tokensForDevelopment += _amountTax * _taxInitials.sellDevelopmentFee / _taxInitials.sellTotalFees; } // on buy else if (_automatedMarketMakers[from] && _taxInitials.buyTotalFees > 0) { _amountTax = amount.mul(_taxInitials.buyTotalFees).div(100); tokensForLiquidity += _amountTax * _taxInitials.buyLiquidityFee / _taxInitials.buyTotalFees; tokensForMarketing += _amountTax * _taxInitials.buyMarketingFee / _taxInitials.buyTotalFees; tokensForDevelopment += _amountTax * _taxInitials.buyDevelopmentFee / _taxInitials.buyTotalFees; } if (_amountTax > 0) { super._transfer(from, address(this), _amountTax); } amount -= _amountTax; } super._transfer(from, to, amount); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFees[account]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"}],"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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_automatedMarketMakers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_enabled_swap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_max_buy_size","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_max_sell_size","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_max_wallet_size","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxInitials","outputs":[{"internalType":"uint256","name":"buyTotalFees","type":"uint256"},{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellTotalFees","type":"uint256"},{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"_uniPair","type":"address"}],"name":"enableTrading","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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromWalletLimit","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setUniPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6011805461ffff191690556101a06040525f60a081905260c081905260e08190526101008190526101208190526101408190526101608190526101808190526016819055601781905560188190556019819055601a819055601b819055601c819055601d55601e80546001600160a01b03199081167319c754c2f5914be7bf38a42a90c7cdb90ee8103517909155601f805490911673fef6d60529aa629fe258e4eb84480a99cb1cfe041790556003602055348015620000bd575f80fd5b50604051806040016040528060048152602001634b61706160e01b815250604051806040016040528060048152602001634b41504160e01b8152508160039081620001099190620006fd565b506004620001188282620006fd565b5050505f6200012c6200048b60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052620001a0905f196200048f565b506b033b2e3c9fd0803ce80000006007819055612710620001c3826001620007d9565b620001cf9190620007f3565b600f556103e8620001e2826032620007d9565b620001ee9190620007f3565b6014556103e862000201826032620007d9565b6200020d9190620007f3565b6012556103e862000220826032620007d9565b6200022c9190620007f3565b6013555f601b819055601d819055601c8190556200024b818062000813565b62000257919062000813565b601a555f60178190556019819055601881905562000276818062000813565b62000282919062000813565b601655600160085f6200029d6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601e80548316825260088552838220805487166001908117909155601f80548516845285842080548916831790553080855286852080548a16841790556080518616855260099788905286852080548a168417905590548516845285842080548916831790559154909316825283822080548716841790558152918220805485168217905561dead82527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580549094168117909355620003926005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f908120805460ff191692151592909217909155600190600a90620003d56005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601f5482168152600a909352818320805485166001908117909155601e548216845282842080548616821790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80548616821790556080519091168352818320805485168217905530835291208054909216179055620004843382620004a7565b5062000829565b3390565b5f6200049d33848462000596565b5060015b92915050565b6001600160a01b038216620005035760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b600254620005129082620005f4565b6002556001600160a01b0382165f90815260016020526040902054620005399082620005f4565b6001600160a01b0383165f818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200058a9085815260200190565b60405180910390a35050565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8062000602838562000813565b905083811015620006565760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620004fa565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200068657607f821691505b602082108103620006a557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620006f8575f81815260208120601f850160051c81016020861015620006d35750805b601f850160051c820191505b81811015620006f457828155600101620006df565b5050505b505050565b81516001600160401b038111156200071957620007196200065d565b62000731816200072a845462000671565b84620006ab565b602080601f83116001811462000767575f84156200074f5750858301515b5f19600386901b1c1916600185901b178555620006f4565b5f85815260208120601f198616915b82811015620007975788860151825594840194600190910190840162000776565b5085821015620007b557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620004a157620004a1620007c5565b5f826200080e57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004a157620004a1620007c5565b608051611f34620008655f395f81816106e701528181611937015281816119ee01528181611a2a01528181611a960152611af10152611f345ff3fe60806040526004361061020a575f3560e01c806370a0823111610113578063a9059cbb1161009d578063eb3252211161006d578063eb32522114610674578063ef8700e5146106a2578063f2fde38b146106b7578063f887ea40146106d6578063fcb9665e14610709575f80fd5b8063a9059cbb146105d5578063c0246668146105f4578063dd62ed3e14610613578063e16830a814610655575f80fd5b80637571336a116100e35780637571336a146105475780637cf4b90f146105665780638da5cb5b1461058557806395d89b41146105a2578063a457c2d7146105b6575f80fd5b806370a08231146104d6578063715018a61461050a57806372cbadb11461051e578063751039fc14610533575f80fd5b806323b872dd116101945780633ccfd60b116101645780633ccfd60b146103c957806342105183146103dd57806349bd5a5e1461044a5780634fbee19314610481578063635d24a8146104b8575f80fd5b806323b872dd1461035b578063313ce5671461037a57806335fe822d1461039557806339509351146103aa575f80fd5b80630cb23d86116101da5780630cb23d86146102b757806310d5de53146102e557806318160ddd146103135780631a8145bb146103315780631f3fed8f14610346575f80fd5b806306fdde031461022057806307980cb91461024a578063095ea7b3146102695780630b1c718214610298575f80fd5b3661021c5730330361021a575f80fd5b005b5f80fd5b34801561022b575f80fd5b5061023461071e565b6040516102419190611b99565b60405180910390f35b348015610255575f80fd5b5061021a610264366004611bfb565b6107ae565b348015610274575f80fd5b50610288610283366004611c16565b61086f565b6040519015158152602001610241565b3480156102a3575f80fd5b5061021a6102b2366004611c40565b610885565b3480156102c2575f80fd5b506102886102d1366004611bfb565b600b6020525f908152604090205460ff1681565b3480156102f0575f80fd5b506102886102ff366004611bfb565b60096020525f908152604090205460ff1681565b34801561031e575f80fd5b506002545b604051908152602001610241565b34801561033c575f80fd5b50610323600d5481565b348015610351575f80fd5b50610323600c5481565b348015610366575f80fd5b50610288610375366004611c7b565b61094b565b348015610385575f80fd5b5060405160128152602001610241565b3480156103a0575f80fd5b5061032360135481565b3480156103b5575f80fd5b506102886103c4366004611c16565b6109b0565b3480156103d4575f80fd5b506102886109e3565b3480156103e8575f80fd5b50601654601754601854601954601a54601b54601c54601d5461040f979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610241565b348015610455575f80fd5b50601554610469906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b34801561048c575f80fd5b5061028861049b366004611bfb565b6001600160a01b03165f9081526008602052604090205460ff1690565b3480156104c3575f80fd5b5060115461028890610100900460ff1681565b3480156104e1575f80fd5b506103236104f0366004611bfb565b6001600160a01b03165f9081526001602052604090205490565b348015610515575f80fd5b5061021a610a3f565b348015610529575f80fd5b5061032360145481565b34801561053e575f80fd5b5061021a610ae1565b348015610552575f80fd5b5061021a610561366004611c40565b610b24565b348015610571575f80fd5b506011546102889062010000900460ff1681565b348015610590575f80fd5b506005546001600160a01b0316610469565b3480156105ad575f80fd5b50610234610b78565b3480156105c1575f80fd5b506102886105d0366004611c16565b610b87565b3480156105e0575f80fd5b506102886105ef366004611c16565b610bd2565b3480156105ff575f80fd5b5061021a61060e366004611c40565b610bde565b34801561061e575f80fd5b5061032361062d366004611cb9565b6001600160a01b039182165f9081526020818152604080832093909416825291909152205490565b348015610660575f80fd5b5061021a61066f366004611c40565b610c32565b34801561067f575f80fd5b5061028861068e366004611bfb565b600a6020525f908152604090205460ff1681565b3480156106ad575f80fd5b50610323600e5481565b3480156106c2575f80fd5b5061021a6106d1366004611bfb565b610c86565b3480156106e1575f80fd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610714575f80fd5b5061032360125481565b60606003805461072d90611ce5565b80601f016020809104026020016040519081016040528092919081815260200182805461075990611ce5565b80156107a45780601f1061077b576101008083540402835291602001916107a4565b820191905f5260205f20905b81548152906001019060200180831161078757829003601f168201915b5050505050905090565b6005546001600160a01b031633146107e15760405162461bcd60e51b81526004016107d890611d1d565b60405180910390fd5b6011805461ffff191661010117905543601055601580546001600160a01b03199081166001600160a01b0393841690811783556006805490921681179091555f908152600b60209081526040808320805460ff19908116600190811790925585548716855260098452828520805482168317905594549095168352600a909152902080549091169091179055565b5f61087b338484610d70565b5060015b92915050565b6005546001600160a01b031633146108af5760405162461bcd60e51b81526004016107d890611d1d565b6015546001600160a01b03908116908316036109215760405162461bcd60e51b815260206004820152602b60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201526a706169724164647265737360a81b60648201526084016107d8565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610957848484610dcf565b6109a684336109a185604051806060016040528060288152602001611ed7602891396001600160a01b038a165f908152602081815260408083203384529091529020549190611418565b610d70565b5060019392505050565b335f818152602081815260408083206001600160a01b0387168452909152812054909161087b9185906109a19086611450565b601f546040515f9147916001600160a01b039091169082908481818185875af1925050503d805f8114610a31576040519150601f19603f3d011682016040523d82523d5f602084013e610a36565b606091505b50909392505050565b6005546001600160a01b03163314610a695760405162461bcd60e51b81526004016107d890611d1d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36007546006546001600160a01b039081165f9081526020818152604080832060058054909516845290915290209190915580546001600160a01b0319169055565b6005546001600160a01b03163314610b0b5760405162461bcd60e51b81526004016107d890611d1d565b610b166103e86114b5565b610b226103e8806114dc565b565b6005546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016107d890611d1d565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b60606004805461072d90611ce5565b5f61087b33846109a185604051806060016040528060258152602001611e8c60259139335f908152602081815260408083206001600160a01b038d1684529091529020549190611418565b5f61087b338484610dcf565b6005546001600160a01b03163314610c085760405162461bcd60e51b81526004016107d890611d1d565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c5c5760405162461bcd60e51b81526004016107d890611d1d565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cb05760405162461bcd60e51b81526004016107d890611d1d565b6001600160a01b038116610d155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b805f03610de657610de183835f611528565b505050565b6005546001600160a01b03848116911614801590610e1257506005546001600160a01b03838116911614155b8015610e27575060115462010000900460ff16155b156110ae5760115460ff16610eb8576001600160a01b0383165f9081526008602052604090205460ff1680610e7357506001600160a01b0382165f9081526008602052604090205460ff165b610eb85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107d8565b6001600160a01b0383165f908152600b602052604090205460ff168015610ef757506001600160a01b0382165f9081526009602052604090205460ff16155b15610f7157601254811115610f6c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107d8565b611026565b6001600160a01b0382165f908152600b602052604090205460ff168015610fb057506001600160a01b0383165f9081526009602052604090205460ff16155b15611026576013548111156110265760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107d8565b6001600160a01b0382165f908152600a602052604090205460ff166110ae576014546001600160a01b0383165f9081526001602052604090205461106a9083611d66565b11156110ae5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107d8565b305f90815260016020526040902054600f54811080159081906110d85750601154610100900460ff165b80156110ed575060115462010000900460ff16155b801561111057506001600160a01b0384165f908152600b602052604090205460ff165b801561113457506001600160a01b0385165f9081526008602052604090205460ff16155b801561115857506001600160a01b0384165f9081526008602052604090205460ff16155b15611183576011805462ff00001916620100001790556111766115e5565b6011805462ff0000191690555b6011546001600160a01b0386165f9081526008602052604090205460ff620100009092048216159116806111ce57506001600160a01b0385165f9081526008602052604090205460ff165b156111d657505f5b8015611405575f60105443101561125e576111fd60646111f78760636117e2565b90611860565b9050606361120c82605e611d79565b6112169190611d90565b600c5f8282546112269190611d66565b9091555060639050611239826005611d79565b6112439190611d90565b600e5f8282546112539190611d66565b909155506113e69050565b6001600160a01b0386165f908152600b602052604090205460ff1680156112865750601a5415155b1561131257601a546112a0906064906111f79088906117e2565b601a54601d54919250906112b49083611d79565b6112be9190611d90565b600d5f8282546112ce9190611d66565b9091555050601a54601b546112e39083611d79565b6112ed9190611d90565b600c5f8282546112fd9190611d66565b9091555050601a54601c546112399083611d79565b6001600160a01b0387165f908152600b602052604090205460ff16801561133a575060165415155b156113e657601654611354906064906111f79088906117e2565b601654601954919250906113689083611d79565b6113729190611d90565b600d5f8282546113829190611d66565b90915550506016546017546113979083611d79565b6113a19190611d90565b600c5f8282546113b19190611d66565b90915550506016546018546113c69083611d79565b6113d09190611d90565b600e5f8282546113e09190611d66565b90915550505b80156113f7576113f7873083611528565b6114018186611daf565b9450505b611410868686611528565b505050505050565b5f818484111561143b5760405162461bcd60e51b81526004016107d89190611b99565b505f6114478486611daf565b95945050505050565b5f8061145c8385611d66565b9050838110156114ae5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107d8565b9392505050565b6103e8816114c260025490565b6114cc9190611d79565b6114d69190611d90565b60145550565b6103e8826114e960025490565b6114f39190611d79565b6114fd9190611d90565b6012556103e88161150d60025490565b6115179190611d79565b6115219190611d90565b6013555050565b61156481604051806060016040528060268152602001611eb1602691396001600160a01b0386165f908152600160205260409020549190611418565b6001600160a01b038085165f9081526001602052604080822093909355908416815220546115929082611450565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dc29085815260200190565b305f9081526001602052604081205490505f600e54600c54600d5461160a9190611d66565b6116149190611d66565b9050815f03611621575050565b600f5461162f906023611d79565b82111561164757600f54611644906023611d79565b91505b5f600282600d54856116599190611d79565b6116639190611d90565b61166d9190611d90565b90505f61167a84836118a1565b905047611686826118e2565b5f61169147836118a1565b90505f6116ad866111f7600c54856117e290919063ffffffff16565b90505f6116c9876111f7600e54866117e290919063ffffffff16565b90505f6116d68284611d66565b6116e09085611daf565b9050602054846116f09190611d90565b9250602054836117009190611d79565b5f600d819055600c819055600e559150861580159061171e57505f81115b156117675761172d8782611a90565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b601e546040516001600160a01b039091169084156108fc029085905f818181858888f1935050505015801561179e573d5f803e3d5ffd5b50601f546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156117d6573d5f803e3d5ffd5b50505050505050505050565b5f825f036117f157505f61087f565b5f6117fc8385611d79565b9050826118098583611d90565b146114ae5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d8565b5f6114ae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b6d565b5f6114ae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611418565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061191557611915611dc2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611991573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b59190611dd6565b816001815181106119c8576119c8611dc2565b60200260200101906001600160a01b031690816001600160a01b031681525050611a13307f000000000000000000000000000000000000000000000000000000000000000084610d70565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611a679085905f90869030904290600401611df1565b5f604051808303815f87803b158015611a7e575f80fd5b505af1158015611410573d5f803e3d5ffd5b611abb307f000000000000000000000000000000000000000000000000000000000000000084610d70565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015611b41573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b669190611e60565b5050505050565b5f8183611b8d5760405162461bcd60e51b81526004016107d89190611b99565b505f6114478486611d90565b5f6020808352835180828501525f5b81811015611bc457858101830151858201604001528201611ba8565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bf8575f80fd5b50565b5f60208284031215611c0b575f80fd5b81356114ae81611be4565b5f8060408385031215611c27575f80fd5b8235611c3281611be4565b946020939093013593505050565b5f8060408385031215611c51575f80fd5b8235611c5c81611be4565b915060208301358015158114611c70575f80fd5b809150509250929050565b5f805f60608486031215611c8d575f80fd5b8335611c9881611be4565b92506020840135611ca881611be4565b929592945050506040919091013590565b5f8060408385031215611cca575f80fd5b8235611cd581611be4565b91506020830135611c7081611be4565b600181811c90821680611cf957607f821691505b602082108103611d1757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561087f5761087f611d52565b808202811582820484141761087f5761087f611d52565b5f82611daa57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561087f5761087f611d52565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611de6575f80fd5b81516114ae81611be4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611e3f5784516001600160a01b031683529383019391830191600101611e1a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611e72575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f6639c3bc036209bb649de9343c2c8ef7d6c93806a945e92d02b14be6751803164736f6c63430008150033
Deployed Bytecode
0x60806040526004361061020a575f3560e01c806370a0823111610113578063a9059cbb1161009d578063eb3252211161006d578063eb32522114610674578063ef8700e5146106a2578063f2fde38b146106b7578063f887ea40146106d6578063fcb9665e14610709575f80fd5b8063a9059cbb146105d5578063c0246668146105f4578063dd62ed3e14610613578063e16830a814610655575f80fd5b80637571336a116100e35780637571336a146105475780637cf4b90f146105665780638da5cb5b1461058557806395d89b41146105a2578063a457c2d7146105b6575f80fd5b806370a08231146104d6578063715018a61461050a57806372cbadb11461051e578063751039fc14610533575f80fd5b806323b872dd116101945780633ccfd60b116101645780633ccfd60b146103c957806342105183146103dd57806349bd5a5e1461044a5780634fbee19314610481578063635d24a8146104b8575f80fd5b806323b872dd1461035b578063313ce5671461037a57806335fe822d1461039557806339509351146103aa575f80fd5b80630cb23d86116101da5780630cb23d86146102b757806310d5de53146102e557806318160ddd146103135780631a8145bb146103315780631f3fed8f14610346575f80fd5b806306fdde031461022057806307980cb91461024a578063095ea7b3146102695780630b1c718214610298575f80fd5b3661021c5730330361021a575f80fd5b005b5f80fd5b34801561022b575f80fd5b5061023461071e565b6040516102419190611b99565b60405180910390f35b348015610255575f80fd5b5061021a610264366004611bfb565b6107ae565b348015610274575f80fd5b50610288610283366004611c16565b61086f565b6040519015158152602001610241565b3480156102a3575f80fd5b5061021a6102b2366004611c40565b610885565b3480156102c2575f80fd5b506102886102d1366004611bfb565b600b6020525f908152604090205460ff1681565b3480156102f0575f80fd5b506102886102ff366004611bfb565b60096020525f908152604090205460ff1681565b34801561031e575f80fd5b506002545b604051908152602001610241565b34801561033c575f80fd5b50610323600d5481565b348015610351575f80fd5b50610323600c5481565b348015610366575f80fd5b50610288610375366004611c7b565b61094b565b348015610385575f80fd5b5060405160128152602001610241565b3480156103a0575f80fd5b5061032360135481565b3480156103b5575f80fd5b506102886103c4366004611c16565b6109b0565b3480156103d4575f80fd5b506102886109e3565b3480156103e8575f80fd5b50601654601754601854601954601a54601b54601c54601d5461040f979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610241565b348015610455575f80fd5b50601554610469906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b34801561048c575f80fd5b5061028861049b366004611bfb565b6001600160a01b03165f9081526008602052604090205460ff1690565b3480156104c3575f80fd5b5060115461028890610100900460ff1681565b3480156104e1575f80fd5b506103236104f0366004611bfb565b6001600160a01b03165f9081526001602052604090205490565b348015610515575f80fd5b5061021a610a3f565b348015610529575f80fd5b5061032360145481565b34801561053e575f80fd5b5061021a610ae1565b348015610552575f80fd5b5061021a610561366004611c40565b610b24565b348015610571575f80fd5b506011546102889062010000900460ff1681565b348015610590575f80fd5b506005546001600160a01b0316610469565b3480156105ad575f80fd5b50610234610b78565b3480156105c1575f80fd5b506102886105d0366004611c16565b610b87565b3480156105e0575f80fd5b506102886105ef366004611c16565b610bd2565b3480156105ff575f80fd5b5061021a61060e366004611c40565b610bde565b34801561061e575f80fd5b5061032361062d366004611cb9565b6001600160a01b039182165f9081526020818152604080832093909416825291909152205490565b348015610660575f80fd5b5061021a61066f366004611c40565b610c32565b34801561067f575f80fd5b5061028861068e366004611bfb565b600a6020525f908152604090205460ff1681565b3480156106ad575f80fd5b50610323600e5481565b3480156106c2575f80fd5b5061021a6106d1366004611bfb565b610c86565b3480156106e1575f80fd5b506104697f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610714575f80fd5b5061032360125481565b60606003805461072d90611ce5565b80601f016020809104026020016040519081016040528092919081815260200182805461075990611ce5565b80156107a45780601f1061077b576101008083540402835291602001916107a4565b820191905f5260205f20905b81548152906001019060200180831161078757829003601f168201915b5050505050905090565b6005546001600160a01b031633146107e15760405162461bcd60e51b81526004016107d890611d1d565b60405180910390fd5b6011805461ffff191661010117905543601055601580546001600160a01b03199081166001600160a01b0393841690811783556006805490921681179091555f908152600b60209081526040808320805460ff19908116600190811790925585548716855260098452828520805482168317905594549095168352600a909152902080549091169091179055565b5f61087b338484610d70565b5060015b92915050565b6005546001600160a01b031633146108af5760405162461bcd60e51b81526004016107d890611d1d565b6015546001600160a01b03908116908316036109215760405162461bcd60e51b815260206004820152602b60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201526a706169724164647265737360a81b60648201526084016107d8565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610957848484610dcf565b6109a684336109a185604051806060016040528060288152602001611ed7602891396001600160a01b038a165f908152602081815260408083203384529091529020549190611418565b610d70565b5060019392505050565b335f818152602081815260408083206001600160a01b0387168452909152812054909161087b9185906109a19086611450565b601f546040515f9147916001600160a01b039091169082908481818185875af1925050503d805f8114610a31576040519150601f19603f3d011682016040523d82523d5f602084013e610a36565b606091505b50909392505050565b6005546001600160a01b03163314610a695760405162461bcd60e51b81526004016107d890611d1d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36007546006546001600160a01b039081165f9081526020818152604080832060058054909516845290915290209190915580546001600160a01b0319169055565b6005546001600160a01b03163314610b0b5760405162461bcd60e51b81526004016107d890611d1d565b610b166103e86114b5565b610b226103e8806114dc565b565b6005546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016107d890611d1d565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b60606004805461072d90611ce5565b5f61087b33846109a185604051806060016040528060258152602001611e8c60259139335f908152602081815260408083206001600160a01b038d1684529091529020549190611418565b5f61087b338484610dcf565b6005546001600160a01b03163314610c085760405162461bcd60e51b81526004016107d890611d1d565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c5c5760405162461bcd60e51b81526004016107d890611d1d565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cb05760405162461bcd60e51b81526004016107d890611d1d565b6001600160a01b038116610d155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b805f03610de657610de183835f611528565b505050565b6005546001600160a01b03848116911614801590610e1257506005546001600160a01b03838116911614155b8015610e27575060115462010000900460ff16155b156110ae5760115460ff16610eb8576001600160a01b0383165f9081526008602052604090205460ff1680610e7357506001600160a01b0382165f9081526008602052604090205460ff165b610eb85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107d8565b6001600160a01b0383165f908152600b602052604090205460ff168015610ef757506001600160a01b0382165f9081526009602052604090205460ff16155b15610f7157601254811115610f6c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107d8565b611026565b6001600160a01b0382165f908152600b602052604090205460ff168015610fb057506001600160a01b0383165f9081526009602052604090205460ff16155b15611026576013548111156110265760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107d8565b6001600160a01b0382165f908152600a602052604090205460ff166110ae576014546001600160a01b0383165f9081526001602052604090205461106a9083611d66565b11156110ae5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107d8565b305f90815260016020526040902054600f54811080159081906110d85750601154610100900460ff165b80156110ed575060115462010000900460ff16155b801561111057506001600160a01b0384165f908152600b602052604090205460ff165b801561113457506001600160a01b0385165f9081526008602052604090205460ff16155b801561115857506001600160a01b0384165f9081526008602052604090205460ff16155b15611183576011805462ff00001916620100001790556111766115e5565b6011805462ff0000191690555b6011546001600160a01b0386165f9081526008602052604090205460ff620100009092048216159116806111ce57506001600160a01b0385165f9081526008602052604090205460ff165b156111d657505f5b8015611405575f60105443101561125e576111fd60646111f78760636117e2565b90611860565b9050606361120c82605e611d79565b6112169190611d90565b600c5f8282546112269190611d66565b9091555060639050611239826005611d79565b6112439190611d90565b600e5f8282546112539190611d66565b909155506113e69050565b6001600160a01b0386165f908152600b602052604090205460ff1680156112865750601a5415155b1561131257601a546112a0906064906111f79088906117e2565b601a54601d54919250906112b49083611d79565b6112be9190611d90565b600d5f8282546112ce9190611d66565b9091555050601a54601b546112e39083611d79565b6112ed9190611d90565b600c5f8282546112fd9190611d66565b9091555050601a54601c546112399083611d79565b6001600160a01b0387165f908152600b602052604090205460ff16801561133a575060165415155b156113e657601654611354906064906111f79088906117e2565b601654601954919250906113689083611d79565b6113729190611d90565b600d5f8282546113829190611d66565b90915550506016546017546113979083611d79565b6113a19190611d90565b600c5f8282546113b19190611d66565b90915550506016546018546113c69083611d79565b6113d09190611d90565b600e5f8282546113e09190611d66565b90915550505b80156113f7576113f7873083611528565b6114018186611daf565b9450505b611410868686611528565b505050505050565b5f818484111561143b5760405162461bcd60e51b81526004016107d89190611b99565b505f6114478486611daf565b95945050505050565b5f8061145c8385611d66565b9050838110156114ae5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107d8565b9392505050565b6103e8816114c260025490565b6114cc9190611d79565b6114d69190611d90565b60145550565b6103e8826114e960025490565b6114f39190611d79565b6114fd9190611d90565b6012556103e88161150d60025490565b6115179190611d79565b6115219190611d90565b6013555050565b61156481604051806060016040528060268152602001611eb1602691396001600160a01b0386165f908152600160205260409020549190611418565b6001600160a01b038085165f9081526001602052604080822093909355908416815220546115929082611450565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dc29085815260200190565b305f9081526001602052604081205490505f600e54600c54600d5461160a9190611d66565b6116149190611d66565b9050815f03611621575050565b600f5461162f906023611d79565b82111561164757600f54611644906023611d79565b91505b5f600282600d54856116599190611d79565b6116639190611d90565b61166d9190611d90565b90505f61167a84836118a1565b905047611686826118e2565b5f61169147836118a1565b90505f6116ad866111f7600c54856117e290919063ffffffff16565b90505f6116c9876111f7600e54866117e290919063ffffffff16565b90505f6116d68284611d66565b6116e09085611daf565b9050602054846116f09190611d90565b9250602054836117009190611d79565b5f600d819055600c819055600e559150861580159061171e57505f81115b156117675761172d8782611a90565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b601e546040516001600160a01b039091169084156108fc029085905f818181858888f1935050505015801561179e573d5f803e3d5ffd5b50601f546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156117d6573d5f803e3d5ffd5b50505050505050505050565b5f825f036117f157505f61087f565b5f6117fc8385611d79565b9050826118098583611d90565b146114ae5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d8565b5f6114ae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b6d565b5f6114ae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611418565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061191557611915611dc2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611991573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b59190611dd6565b816001815181106119c8576119c8611dc2565b60200260200101906001600160a01b031690816001600160a01b031681525050611a13307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610d70565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611a679085905f90869030904290600401611df1565b5f604051808303815f87803b158015611a7e575f80fd5b505af1158015611410573d5f803e3d5ffd5b611abb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610d70565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015611b41573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b669190611e60565b5050505050565b5f8183611b8d5760405162461bcd60e51b81526004016107d89190611b99565b505f6114478486611d90565b5f6020808352835180828501525f5b81811015611bc457858101830151858201604001528201611ba8565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bf8575f80fd5b50565b5f60208284031215611c0b575f80fd5b81356114ae81611be4565b5f8060408385031215611c27575f80fd5b8235611c3281611be4565b946020939093013593505050565b5f8060408385031215611c51575f80fd5b8235611c5c81611be4565b915060208301358015158114611c70575f80fd5b809150509250929050565b5f805f60608486031215611c8d575f80fd5b8335611c9881611be4565b92506020840135611ca881611be4565b929592945050506040919091013590565b5f8060408385031215611cca575f80fd5b8235611cd581611be4565b91506020830135611c7081611be4565b600181811c90821680611cf957607f821691505b602082108103611d1757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561087f5761087f611d52565b808202811582820484141761087f5761087f611d52565b5f82611daa57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561087f5761087f611d52565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611de6575f80fd5b81516114ae81611be4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611e3f5784516001600160a01b031683529383019391830191600101611e1a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611e72575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f6639c3bc036209bb649de9343c2c8ef7d6c93806a945e92d02b14be6751803164736f6c63430008150033
Deployed Bytecode Sourcemap
20810:12185:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24431:4;24409:10;:27;24401:36;;;;;;20810:12185;;;;;7557:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25469:431;;;;;;;;;;-1:-1:-1;25469:431:0;;;;;:::i;:::-;;:::i;10341:168::-;;;;;;;;;;-1:-1:-1;10341:168:0;;;;;:::i;:::-;;:::i;:::-;;;1440:14:1;;1433:22;1415:41;;1403:2;1388:18;10341:168:0;1275:187:1;25209:206:0;;;;;;;;;;-1:-1:-1;25209:206:0;;;;;:::i;:::-;;:::i;21115:54::-;;;;;;;;;;-1:-1:-1;21115:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20986:63;;;;;;;;;;-1:-1:-1;20986:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8674:107;;;;;;;;;;-1:-1:-1;8761:12:0;;8674:107;;;2034:25:1;;;2022:2;2007:18;8674:107:0;1888:177:1;21218:33:0;;;;;;;;;;;;;;;;21178;;;;;;;;;;;;;;;;13264:354;;;;;;;;;;-1:-1:-1;13264:354:0;;;;;:::i;:::-;;:::i;8517:92::-;;;;;;;;;;-1:-1:-1;8517:92:0;;8599:2;2673:36:1;;2661:2;2646:18;8517:92:0;2531:184:1;21840:29:0;;;;;;;;;;;;;;;;9977:217;;;;;;;;;;-1:-1:-1;9977:217:0;;;;;:::i;:::-;;:::i;28610:178::-;;;;;;;;;;;;;:::i;21951:286::-;;;;;;;;;;-1:-1:-1;21951:286:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3063:25:1;;;3119:2;3104:18;;3097:34;;;;3147:18;;;3140:34;;;;3205:2;3190:18;;3183:34;;;;3248:3;3233:19;;3226:35;3292:3;3277:19;;3270:35;3336:3;3321:19;;3314:35;3380:3;3365:19;;3358:35;3050:3;3035:19;21951:286:0;2720:679:1;21914:28:0;;;;;;;;;;-1:-1:-1;21914:28:0;;;;-1:-1:-1;;;;;21914:28:0;;;;;;-1:-1:-1;;;;;3568:32:1;;;3550:51;;3538:2;3523:18;21914:28:0;3404:203:1;32871:121:0;;;;;;;;;;-1:-1:-1;32871:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;32960:24:0;32936:4;32960:24;;;:15;:24;;;;;;;;;32871:121;21423:33;;;;;;;;;;-1:-1:-1;21423:33:0;;;;;;;;;;;8844:126;;;;;;;;;;-1:-1:-1;8844:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;8944:18:0;8917:7;8944:18;;;:9;:18;;;;;;;8844:126;20612:191;;;;;;;;;;;;;:::i;21876:31::-;;;;;;;;;;;;;;;;28473:129;;;;;;;;;;;;;:::i;26684:144::-;;;;;;;;;;-1:-1:-1;26684:144:0;;;;;:::i;:::-;;:::i;21463:23::-;;;;;;;;;;-1:-1:-1;21463:23:0;;;;;;;;;;;19788:78;;;;;;;;;;-1:-1:-1;19852:6:0;;-1:-1:-1;;;;;19852:6:0;19788:78;;7775:103;;;;;;;;;;;;;:::i;11012:268::-;;;;;;;;;;-1:-1:-1;11012:268:0;;;;;:::i;:::-;;:::i;9183:174::-;;;;;;;;;;-1:-1:-1;9183:174:0;;;;;:::i;:::-;;:::i;26364:128::-;;;;;;;;;;-1:-1:-1;26364:128:0;;;;;:::i;:::-;;:::i;9420:150::-;;;;;;;;;;-1:-1:-1;9420:150:0;;;;;:::i;:::-;-1:-1:-1;;;;;9535:18:0;;;9508:7;9535:18;;;;;;;;;;;:27;;;;;;;;;;;;;9420:150;26500:140;;;;;;;;;;-1:-1:-1;26500:140:0;;;;;:::i;:::-;;:::i;21056:52::-;;;;;;;;;;-1:-1:-1;21056:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21258:35;;;;;;;;;;;;;;;;20019:244;;;;;;;;;;-1:-1:-1;20019:244:0;;;;;:::i;:::-;;:::i;20882:42::-;;;;;;;;;;;;;;;21805:28;;;;;;;;;;;;;;;;7557:99;7610:13;7643:5;7636:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7557:99;:::o;25469:431::-;19370:6;;-1:-1:-1;;;;;19370:6:0;6796:10;19370:22;19362:67;;;;-1:-1:-1;;;19362:67:0;;;;;;;:::i;:::-;;;;;;;;;25540:13:::1;:20:::0;;-1:-1:-1;;25571:22:0;;;;;25623:12:::1;25604:16;:31:::0;25646:13:::1;:24:::0;;-1:-1:-1;;;;;;25646:24:0;;::::1;-1:-1:-1::0;;;;;25646:24:0;;::::1;::::0;;::::1;::::0;;25672:10:::1;:21:::0;;;;::::1;::::0;::::1;::::0;;;-1:-1:-1;25704:46:0;;;-1:-1:-1;25704:46:0::1;::::0;;;;;;;:53;;-1:-1:-1;;25704:53:0;;::::1;-1:-1:-1::0;25704:53:0;;::::1;::::0;;;25808:13;;;::::1;25768:55:::0;;:31:::1;:55:::0;;;;;:62;;;::::1;::::0;::::1;::::0;;25870:13;;;;::::1;25841:44:::0;;-1:-1:-1;25841:44:0;;;;;:51;;;;::::1;::::0;;::::1;::::0;;25469:431::o;10341:168::-;10423:4;10440:39;6796:10;10463:7;10472:6;10440:8;:39::i;:::-;-1:-1:-1;10497:4:0;10341:168;;;;;:::o;25209:206::-;19370:6;;-1:-1:-1;;;;;19370:6:0;6796:10;19370:22;19362:67;;;;-1:-1:-1;;;19362:67:0;;;;;;;:::i;:::-;25299:13:::1;::::0;-1:-1:-1;;;;;25299:13:0;;::::1;25291:21:::0;;::::1;::::0;25283:77:::1;;;::::0;-1:-1:-1;;;25283:77:0;;5188:2:1;25283:77:0::1;::::0;::::1;5170:21:1::0;5227:2;5207:18;;;5200:30;5266:34;5246:18;;;5239:62;-1:-1:-1;;;5317:18:1;;;5310:41;5368:19;;25283:77:0::1;4986:407:1::0;25283:77:0::1;-1:-1:-1::0;;;;;25371:28:0;;;::::1;;::::0;;;:22:::1;:28;::::0;;;;:36;;-1:-1:-1;;25371:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25209:206::o;13264:354::-;13403:4;13420:36;13430:6;13438:9;13449:6;13420:9;:36::i;:::-;13467:121;13476:6;6796:10;13498:89;13536:6;13498:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13498:19:0;;:11;:19;;;;;;;;;;;6796:10;13498:33;;;;;;;;;;:37;:89::i;:::-;13467:8;:121::i;:::-;-1:-1:-1;13606:4:0;13264:354;;;;;:::o;9977:217::-;6796:10;10064:4;10113:25;;;;;;;;;;;-1:-1:-1;;;;;10113:34:0;;;;;;;;;;10064:4;;10081:83;;10104:7;;10113:50;;10152:10;10113:38;:50::i;28610:178::-;28744:10;;28736:44;;28648:12;;28691:21;;-1:-1:-1;;;;;28744:10:0;;;;28691:21;;28648:12;28736:44;28648:12;28736:44;28691:21;28744:10;28736:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28723:57:0;;28610:178;-1:-1:-1;;;28610:178:0:o;20612:191::-;19370:6;;-1:-1:-1;;;;;19370:6:0;6796:10;19370:22;19362:67;;;;-1:-1:-1;;;19362:67:0;;;;;;;:::i;:::-;20703:6:::1;::::0;20682:40:::1;::::0;20719:1:::1;::::0;-1:-1:-1;;;;;20703:6:0::1;::::0;20682:40:::1;::::0;20719:1;;20682:40:::1;20758:7;::::0;20736:10:::1;::::0;-1:-1:-1;;;;;20736:10:0;;::::1;20724:11;:23:::0;;;::::1;::::0;;;;;;;20748:6:::1;::::0;;;;::::1;20724:31:::0;;;;;;;:41;;;;20776:19;;-1:-1:-1;;;;;;20776:19:0::1;::::0;;20612:191::o;28473:129::-;19370:6;;-1:-1:-1;;;;;19370:6:0;6796:10;19370:22;19362:67;;;;-1:-1:-1;;;19362:67:0;;;;;;;:::i;:::-;28527:25:::1;28547:4;28527:19;:25::i;:::-;28563:31;28584:4;28589::::0;28563:20:::1;:31::i;:::-;28473:129::o:0;26684:144::-;19370:6;;-1:-1:-1;;;;;19370:6:0;6796:10;19370:22;19362:67;;;;-1:-1:-1;;;19362:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26774:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;26774:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26684:144::o;7775:103::-;7830:13;7863:7;7856:14;;;;;:::i;11012:268::-;11104:4;11121:129;6796:10;11144:7;11153:96;11192:15;11153:96;;;;;;;;;;;;;;;;;6796:10;11153:11;:25;;;;;;;;;;;-1:-1:-1;;;;;11153:34:0;;;;;;;;;;;;:38;:96::i;9183:174::-;9268:4;9285:42;6796:10;9309:9;9320:6;9285:9;:42::i;26364:128::-;19370:6;;-1:-1:-1;;;;;19370:6:0;6796:10;19370:22;19362:67;;;;-1:-1:-1;;;19362:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26449:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:35;;-1:-1:-1;;26449:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26364:128::o;26500:140::-;19370:6;;-1:-1:-1;;;;;19370:6:0;6796:10;19370:22;19362:67;;;;-1:-1:-1;;;19362:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26592:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:40;;-1:-1:-1;;26592:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26500:140::o;20019:244::-;19370:6;;-1:-1:-1;;;;;19370:6:0;6796:10;19370:22;19362:67;;;;-1:-1:-1;;;19362:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20108:22:0;::::1;20100:73;;;::::0;-1:-1:-1;;;20100:73:0;;5810:2:1;20100:73:0::1;::::0;::::1;5792:21:1::0;5849:2;5829:18;;;5822:30;5888:34;5868:18;;;5861:62;-1:-1:-1;;;5939:18:1;;;5932:36;5985:19;;20100:73:0::1;5608:402:1::0;20100:73:0::1;20210:6;::::0;20189:38:::1;::::0;-1:-1:-1;;;;;20189:38:0;;::::1;::::0;20210:6:::1;::::0;20189:38:::1;::::0;20210:6:::1;::::0;20189:38:::1;20238:6;:17:::0;;-1:-1:-1;;;;;;20238:17:0::1;-1:-1:-1::0;;;;;20238:17:0;;;::::1;::::0;;;::::1;::::0;;20019:244::o;12564:220::-;-1:-1:-1;;;;;12692:18:0;;;:11;:18;;;;;;;;;;;:27;;;;;;;;;;;;;:36;;;12744:32;;2034:25:1;;;12744:32:0;;2007:18:1;12744:32:0;;;;;;;;12564:220;;;:::o;29445:3418::-;29573:6;29583:1;29573:11;29569:93;;29601:28;29617:4;29623:2;29627:1;29601:15;:28::i;:::-;29445:3418;;;:::o;29569:93::-;19852:6;;-1:-1:-1;;;;;29690:15:0;;;19852:6;;29690:15;;;;:45;;-1:-1:-1;19852:6:0;;-1:-1:-1;;;;;29722:13:0;;;19852:6;;29722:13;;29690:45;:74;;;;-1:-1:-1;29753:11:0;;;;;;;29752:12;29690:74;29672:851;;;29796:15;;;;29791:136;;-1:-1:-1;;;;;29840:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;29865:19:0;;;;;;:15;:19;;;;;;;;29840:44;29832:79;;;;-1:-1:-1;;;29832:79:0;;6217:2:1;29832:79:0;;;6199:21:1;6256:2;6236:18;;;6229:30;-1:-1:-1;;;6275:18:1;;;6268:52;6337:18;;29832:79:0;6015:346:1;29832:79:0;-1:-1:-1;;;;;29945:28:0;;;;;;:22;:28;;;;;;;;:68;;;;-1:-1:-1;;;;;;29978:35:0;;;;;;:31;:35;;;;;;;;29977:36;29945:68;29941:417;;;30052:13;;30042:6;:23;;30034:89;;;;-1:-1:-1;;;30034:89:0;;6568:2:1;30034:89:0;;;6550:21:1;6607:2;6587:18;;;6580:30;6646:34;6626:18;;;6619:62;-1:-1:-1;;;6697:18:1;;;6690:51;6758:19;;30034:89:0;6366:417:1;30034:89:0;29941:417;;;-1:-1:-1;;;;;30162:26:0;;;;;;:22;:26;;;;;;;;:68;;;;-1:-1:-1;;;;;;30193:37:0;;;;;;:31;:37;;;;;;;;30192:38;30162:68;30158:200;;;30269:14;;30259:6;:24;;30251:91;;;;-1:-1:-1;;;30251:91:0;;6990:2:1;30251:91:0;;;6972:21:1;7029:2;7009:18;;;7002:30;7068:34;7048:18;;;7041:62;-1:-1:-1;;;7119:18:1;;;7112:52;7181:19;;30251:91:0;6788:418:1;30251:91:0;-1:-1:-1;;;;;30377:24:0;;;;;;:20;:24;;;;;;;;30372:140;;30456:16;;-1:-1:-1;;;;;8944:18:0;;8917:7;8944:18;;;:9;:18;;;;;;30430:22;;:6;:22;:::i;:::-;:42;;30422:74;;;;-1:-1:-1;;;30422:74:0;;7675:2:1;30422:74:0;;;7657:21:1;7714:2;7694:18;;;7687:30;-1:-1:-1;;;7733:18:1;;;7726:49;7792:18;;30422:74:0;7473:343:1;30422:74:0;30581:4;30536:24;8944:18;;;:9;:18;;;;;;30624:16;;30604:36;;;;;;;30669:37;;-1:-1:-1;30693:13:0;;;;;;;30669:37;:66;;;;-1:-1:-1;30724:11:0;;;;;;;30723:12;30669:66;:109;;;;-1:-1:-1;;;;;;30752:26:0;;;;;;:22;:26;;;;;;;;30669:109;:148;;;;-1:-1:-1;;;;;;30796:21:0;;;;;;:15;:21;;;;;;;;30795:22;30669:148;:185;;;;-1:-1:-1;;;;;;30835:19:0;;;;;;:15;:19;;;;;;;;30834:20;30669:185;30651:325;;;30881:11;:18;;-1:-1:-1;;30881:18:0;;;;;30914:16;:14;:16::i;:::-;30945:11;:19;;-1:-1:-1;;30945:19:0;;;30651:325;31006:11;;-1:-1:-1;;;;;31119:21:0;;30989:13;31119:21;;;:15;:21;;;;;;31006:11;;;;;;;31005:12;;31119:21;;:44;;-1:-1:-1;;;;;;31144:19:0;;;;;;:15;:19;;;;;;;;31119:44;31115:93;;;-1:-1:-1;31191:5:0;31115:93;31306:8;31302:1509;;;31331:18;31386:16;;31371:12;:31;31368:1278;;;31436:23;31455:3;31436:14;:6;31447:2;31436:10;:14::i;:::-;:18;;:23::i;:::-;31423:36;-1:-1:-1;31520:2:0;31501:15;31423:36;31514:2;31501:15;:::i;:::-;31500:22;;;;:::i;:::-;31478:18;;:44;;;;;;;:::i;:::-;;;;-1:-1:-1;31584:2:0;;-1:-1:-1;31566:14:0;:10;31579:1;31566:14;:::i;:::-;31565:21;;;;:::i;:::-;31541:20;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;31368:1278:0;;-1:-1:-1;31368:1278:0;;-1:-1:-1;;;;;31612:26:0;;;;;;:22;:26;;;;;;;;:60;;;;-1:-1:-1;31642:26:0;;:30;;31612:60;31608:1038;;;31717:26;;31706:47;;31749:3;;31706:38;;:6;;:10;:38::i;:47::-;31839:26;;31807:29;;31693:60;;-1:-1:-1;31839:26:0;31794:42;;31693:60;31794:42;:::i;:::-;:71;;;;:::i;:::-;31772:18;;:93;;;;;;;:::i;:::-;;;;-1:-1:-1;;31951:26:0;;31919:29;;31906:42;;:10;:42;:::i;:::-;:71;;;;:::i;:::-;31884:18;;:93;;;;;;;:::i;:::-;;;;-1:-1:-1;;32067:26:0;;32033:31;;32020:44;;:10;:44;:::i;31608:1038::-;-1:-1:-1;;;;;32155:28:0;;;;;;:22;:28;;;;;;;;:61;;;;-1:-1:-1;32187:12:0;:25;:29;;32155:61;32151:495;;;32261:12;:25;32250:46;;32292:3;;32250:37;;:6;;:10;:37::i;:46::-;32381:12;:25;32350:28;;32237:59;;-1:-1:-1;32381:25:0;32337:41;;32237:59;32337:41;:::i;:::-;:69;;;;:::i;:::-;32315:18;;:91;;;;;;;:::i;:::-;;;;-1:-1:-1;;32491:12:0;:25;32460:28;;32447:41;;:10;:41;:::i;:::-;:69;;;;:::i;:::-;32425:18;;:91;;;;;;;:::i;:::-;;;;-1:-1:-1;;32605:12:0;:25;32572:30;;32559:43;;:10;:43;:::i;:::-;:71;;;;:::i;:::-;32535:20;;:95;;;;;;;:::i;:::-;;;;-1:-1:-1;;32151:495:0;32666:14;;32662:103;;32701:48;32717:4;32731;32738:10;32701:15;:48::i;:::-;32779:20;32789:10;32779:20;;:::i;:::-;;;31316:1495;31302:1509;32822:33;32838:4;32844:2;32848:6;32822:15;:33::i;:::-;29558:3305;;;29445:3418;;;:::o;706:191::-;791:7;827:12;819:6;;;;811:29;;;;-1:-1:-1;;;811:29:0;;;;;;;;:::i;:::-;-1:-1:-1;851:9:0;863:5;867:1;863;:5;:::i;:::-;851:17;706:191;-1:-1:-1;;;;;706:191:0:o;379:180::-;436:7;;468:5;472:1;468;:5;:::i;:::-;456:17;;497:1;492;:6;;484:46;;;;-1:-1:-1;;;484:46:0;;8551:2:1;484:46:0;;;8533:21:1;8590:2;8570:18;;;8563:30;8629:29;8609:18;;;8602:57;8676:18;;484:46:0;8349:351:1;484:46:0;550:1;379:180;-1:-1:-1;;;379:180:0:o;28796:136::-;28920:4;28903:13;28887;8761:12;;;8674:107;28887:13;:29;;;;:::i;:::-;28886:38;;;;:::i;:::-;28867:16;:57;-1:-1:-1;28796:136:0:o;25970:209::-;26104:4;26091:9;26075:13;8761:12;;;8674:107;26075:13;:25;;;;:::i;:::-;26074:34;;;;:::i;:::-;26058:13;:50;26167:4;26153:10;26137:13;8761:12;;;8674:107;26137:13;:26;;;;:::i;:::-;26136:35;;;;:::i;:::-;26119:14;:52;-1:-1:-1;;25970:209:0:o;11770:358::-;11932:71;11954:6;11932:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11932:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;11912:17:0;;;;;;;:9;:17;;;;;;:91;;;;12037:20;;;;;;;:32;;12062:6;12037:24;:32::i;:::-;-1:-1:-1;;;;;12014:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12085:35;;;;;;;;;;12113:6;2034:25:1;;2022:2;2007:18;;1888:177;26836:1629:0;26929:4;26881:27;8944:18;;;:9;:18;;;;;;26881:54;;26956:14;27015:20;;26994:18;;26973;;:39;;;;:::i;:::-;:62;;;;:::i;:::-;26956:79;;27052:19;27075:1;27052:24;27048:41;;27080:7;;26836:1629::o;27048:41::-;27127:16;;:21;;27146:2;27127:21;:::i;:::-;27105:19;:43;27101:119;;;27187:16;;:21;;27206:2;27187:21;:::i;:::-;27165:43;;27101:119;27281:23;27359:1;27350:6;27329:18;;27307:19;:40;;;;:::i;:::-;:49;;;;:::i;:::-;:53;;;;:::i;:::-;27281:79;-1:-1:-1;27371:26:0;27400:40;:19;27281:79;27400:23;:40::i;:::-;27371:69;-1:-1:-1;27479:21:0;27513:50;27371:69;27513:30;:50::i;:::-;27574:18;27595:44;:21;27621:17;27595:25;:44::i;:::-;27574:65;;27653:23;27679:46;27718:6;27679:34;27694:18;;27679:10;:14;;:34;;;;:::i;:46::-;27653:72;;27737:25;27765:48;27806:6;27765:36;27780:20;;27765:10;:14;;:36;;;;:::i;:48::-;27737:76;-1:-1:-1;27824:23:0;27864:35;27737:76;27864:15;:35;:::i;:::-;27850:50;;:10;:50;:::i;:::-;27824:76;;27933:11;;27920:10;:24;;;;:::i;:::-;27902:42;;27993:11;;27975:15;:29;;;;:::i;:::-;28036:1;28015:18;:22;;;28048:18;:22;;;28081:20;:24;27955:49;-1:-1:-1;28122:19:0;;;;;:42;;;28163:1;28145:15;:19;28122:42;28118:192;;;28181:46;28194:15;28211;28181:12;:46::i;:::-;28247:51;;;8879:25:1;;;8935:2;8920:18;;8913:34;;;28247:51:0;;8852:18:1;28247:51:0;;;;;;;28118:192;28346:16;;28330:60;;-1:-1:-1;;;;;28346:16:0;;;;28330:60;;;;;28374:15;;28346:16;28330:60;28346:16;28330:60;28374:15;28346:16;28330:60;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28417:10:0;;28401:56;;-1:-1:-1;;;;;28417:10:0;;;;28401:56;;;;;28439:17;;28417:10;28401:56;28417:10;28401:56;28439:17;28417:10;28401:56;;;;;;;;;;;;;;;;;;;;;26870:1595;;;;;;;;;26836:1629::o;903:256::-;960:7;990:1;995;990:6;986:47;;-1:-1:-1;1020:1:0;1013:8;;986:47;1046:9;1058:5;1062:1;1058;:5;:::i;:::-;1046:17;-1:-1:-1;1091:1:0;1082:5;1086:1;1046:17;1082:5;:::i;:::-;:10;1074:56;;;;-1:-1:-1;;;1074:56:0;;9160:2:1;1074:56:0;;;9142:21:1;9199:2;9179:18;;;9172:30;9238:34;9218:18;;;9211:62;-1:-1:-1;;;9289:18:1;;;9282:31;9330:19;;1074:56:0;8958:397:1;1165:131:0;1222:7;1249:39;1253:1;1256;1249:39;;;;;;;;;;;;;;;;;:3;:39::i;565:135::-;622:7;649:43;653:1;656;649:43;;;;;;;;;;;;;;;;;:3;:43::i;24635:562::-;24795:16;;;24809:1;24795:16;;;;;;;;24771:21;;24795:16;;;;;;;;;;-1:-1:-1;24795:16:0;24771:40;;24840:4;24822;24827:1;24822:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24822:23:0;;;-1:-1:-1;;;;;24822:23:0;;;;;24866:6;-1:-1:-1;;;;;24866:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24856:4;24861:1;24856:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24856:23:0;;;-1:-1:-1;;;;;24856:23:0;;;;;24892:49;24909:4;24924:6;24933:7;24892:8;:49::i;:::-;24978:211;;-1:-1:-1;;;24978:211:0;;-1:-1:-1;;;;;24978:6:0;:57;;;;:211;;25050:7;;25072:1;;25116:4;;25143;;25163:15;;24978:211;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28940:350;29084:49;29101:4;29116:6;29125:7;29084:8;:49::i;:::-;29176:106;;-1:-1:-1;;;29176:106:0;;29228:4;29176:106;;;11206:34:1;;;11256:18;;;11249:34;;;29244:1:0;11299:18:1;;;11292:34;;;11342:18;;;11335:34;11385:19;;;11378:44;29266:15:0;11438:19:1;;;11431:35;29176:6:0;-1:-1:-1;;;;;29176:22:0;;;;29207:9;;11140:19:1;;29176:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28940:350;;:::o;1302:277::-;1387:7;1422:12;1415:5;1407:28;;;;-1:-1:-1;;;1407:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1446:9:0;1458:5;1462:1;1458;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:247::-;762:6;815:2;803:9;794:7;790:23;786:32;783:52;;;831:1;828;821:12;783:52;870:9;857:23;889:31;914:5;889:31;:::i;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:1:o;1467:416::-;1532:6;1540;1593:2;1581:9;1572:7;1568:23;1564:32;1561:52;;;1609:1;1606;1599:12;1561:52;1648:9;1635:23;1667:31;1692:5;1667:31;:::i;:::-;1717:5;-1:-1:-1;1774:2:1;1759:18;;1746:32;1816:15;;1809:23;1797:36;;1787:64;;1847:1;1844;1837:12;1787:64;1870:7;1860:17;;;1467:416;;;;;:::o;2070:456::-;2147:6;2155;2163;2216:2;2204:9;2195:7;2191:23;2187:32;2184:52;;;2232:1;2229;2222:12;2184:52;2271:9;2258:23;2290:31;2315:5;2290:31;:::i;:::-;2340:5;-1:-1:-1;2397:2:1;2382:18;;2369:32;2410:33;2369:32;2410:33;:::i;:::-;2070:456;;2462:7;;-1:-1:-1;;;2516:2:1;2501:18;;;;2488:32;;2070:456::o;3612:388::-;3680:6;3688;3741:2;3729:9;3720:7;3716:23;3712:32;3709:52;;;3757:1;3754;3747:12;3709:52;3796:9;3783:23;3815:31;3840:5;3815:31;:::i;:::-;3865:5;-1:-1:-1;3922:2:1;3907:18;;3894:32;3935:33;3894:32;3935:33;:::i;4240:380::-;4319:1;4315:12;;;;4362;;;4383:61;;4437:4;4429:6;4425:17;4415:27;;4383:61;4490:2;4482:6;4479:14;4459:18;4456:38;4453:161;;4536:10;4531:3;4527:20;4524:1;4517:31;4571:4;4568:1;4561:15;4599:4;4596:1;4589:15;4453:161;;4240:380;;;:::o;4625:356::-;4827:2;4809:21;;;4846:18;;;4839:30;4905:34;4900:2;4885:18;;4878:62;4972:2;4957:18;;4625:356::o;7211:127::-;7272:10;7267:3;7263:20;7260:1;7253:31;7303:4;7300:1;7293:15;7327:4;7324:1;7317:15;7343:125;7408:9;;;7429:10;;;7426:36;;;7442:18;;:::i;7821:168::-;7894:9;;;7925;;7942:15;;;7936:22;;7922:37;7912:71;;7963:18;;:::i;7994:217::-;8034:1;8060;8050:132;;8104:10;8099:3;8095:20;8092:1;8085:31;8139:4;8136:1;8129:15;8167:4;8164:1;8157:15;8050:132;-1:-1:-1;8196:9:1;;7994:217::o;8216:128::-;8283:9;;;8304:11;;;8301:37;;;8318:18;;:::i;9492:127::-;9553:10;9548:3;9544:20;9541:1;9534:31;9584:4;9581:1;9574:15;9608:4;9605:1;9598:15;9624:251;9694:6;9747:2;9735:9;9726:7;9722:23;9718:32;9715:52;;;9763:1;9760;9753:12;9715:52;9795:9;9789:16;9814:31;9839:5;9814:31;:::i;9880:980::-;10142:4;10190:3;10179:9;10175:19;10221:6;10210:9;10203:25;10247:2;10285:6;10280:2;10269:9;10265:18;10258:34;10328:3;10323:2;10312:9;10308:18;10301:31;10352:6;10387;10381:13;10418:6;10410;10403:22;10456:3;10445:9;10441:19;10434:26;;10495:2;10487:6;10483:15;10469:29;;10516:1;10526:195;10540:6;10537:1;10534:13;10526:195;;;10605:13;;-1:-1:-1;;;;;10601:39:1;10589:52;;10696:15;;;;10661:12;;;;10637:1;10555:9;10526:195;;;-1:-1:-1;;;;;;;10777:32:1;;;;10772:2;10757:18;;10750:60;-1:-1:-1;;;10841:3:1;10826:19;10819:35;10738:3;9880:980;-1:-1:-1;;;9880:980:1:o;11477:306::-;11565:6;11573;11581;11634:2;11622:9;11613:7;11609:23;11605:32;11602:52;;;11650:1;11647;11640:12;11602:52;11679:9;11673:16;11663:26;;11729:2;11718:9;11714:18;11708:25;11698:35;;11773:2;11762:9;11758:18;11752:25;11742:35;;11477:306;;;;;:::o
Swarm Source
ipfs://f6639c3bc036209bb649de9343c2c8ef7d6c93806a945e92d02b14be67518031
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.