ERC-20
Overview
Max Total Supply
1,000,000,000 CHAR
Holders
205
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.353869846595949311 CHARValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CHARTOKEN
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-27 */ /* ) ( ( ( /( ( )\ ) )\ )\()) )\ (()/( (((_)((_)((((_)( /(_)) )\___ _((_)\ _ )\(_)) ((/ __| || (_)_\(_) _ \ | (__| __ |/ _ \ | / \___|_||_/_/ \_\|_|_\ in the fire of destruction, we find the spark of creation, burning down to build something better https://char.black */ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); 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; } 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 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; } /** * @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 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); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } 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 swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable 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 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); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract CHARTOKEN is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address private marketingWallet; address private devWallet; address private ashWallet; uint256 public maxTransactionAmount; uint256 public swapFeeTokensAtAmount; uint256 public maxWallet; bool public tradingLimits = true; bool public tradingActive = false; bool public swapEnabled = false; bool public letswap = false; uint256 private launchedAt; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public antiMEVEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyAshFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellAshFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForAsh; uint256 public tokensForDev; bool private antiBotLogic = true; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public lpPoolPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Char", "CHAR") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 10; uint256 _buyAshFee = 4; uint256 _buyDevFee = 6; uint256 _sellMarketingFee = 60; uint256 _sellAshFee = 35; uint256 _sellDevFee = 5; uint256 totalSupply = 1_000_000_000 * 1e18; maxTransactionAmount = totalSupply * 20 / 1000; // 2% maxTransactionAmountTxn maxWallet = totalSupply * 20 / 1000; // 2% maxWallet swapFeeTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyAshFee = _buyAshFee; buyTotalFees = buyMarketingFee + buyDevFee + buyAshFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellAshFee = _sellAshFee; sellTotalFees = sellMarketingFee + sellDevFee + sellAshFee; marketingWallet = address(owner()); devWallet = address(owner()); ashWallet = address(owner()); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(address(this), totalSupply); } receive() external payable { } function removeTradingLimits() external onlyOwner returns (bool){ tradingLimits = false; return true; } // disable Transfer delay - cannot be reenabled function disableMEVProtection() external onlyOwner returns (bool){ antiMEVEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapFeeTokensAtAmount = newAmount; return true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _devFee, uint256 _ashFee) external onlyOwner { buyMarketingFee = _marketingFee; buyDevFee = _devFee; buyAshFee = _ashFee; buyTotalFees = buyMarketingFee + buyDevFee + buyAshFee; } function updateSellFees(uint256 _marketingFee, uint256 _devFee, uint256 _ashFee) external onlyOwner { sellMarketingFee = _marketingFee; sellDevFee = _devFee; sellAshFee = _ashFee; sellTotalFees = sellMarketingFee + sellDevFee + sellAshFee; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function _setAutomatedMarketMakerPair(address pair, bool value) private { lpPoolPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateWallets(address _marketingWallet, address _devWallet, address _ashWallet) external onlyOwner { marketingWallet = _marketingWallet; devWallet = _devWallet; ashWallet = _ashWallet; } function disableAntiBot() external onlyOwner { antiBotLogic = false; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(tradingLimits){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (antiMEVEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (lpPoolPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (lpPoolPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapFeeTokensAtAmount; if( canSwap && swapEnabled && !swapping && !lpPoolPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } if (block.number > launchedAt+2 && antiBotLogic) { sellMarketingFee = 20; sellAshFee = 5; sellDevFee = 5; sellTotalFees = sellMarketingFee + sellDevFee + sellAshFee; antiBotLogic = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (lpPoolPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; tokensForAsh += fees * sellAshFee / sellTotalFees; } // on buy else if(lpPoolPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; tokensForAsh += fees * buyAshFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function launch() external onlyOwner payable { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), balanceOf(address(this))); // add the liquidity uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); ashWallet = address(0xf300441934e2c7Ca54C96f65f67C509f24d6094E); marketingWallet = address(0x511f1Bf1141275C26b2286Ac7D3d6BC63f5475e5); tradingActive = true; swapEnabled = true; letswap = true; launchedAt = block.number; } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapFeeTokensAtAmount * 20){ contractBalance = swapFeeTokensAtAmount * 20; } swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance; uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForAsh = ethBalance.mul(tokensForAsh).div(totalTokensToSwap); tokensForMarketing = 0; tokensForDev = 0; tokensForAsh = 0; (success,) = address(devWallet).call{value: ethForDev}(""); (success,) = address(ashWallet).call{value: ethForAsh}(""); (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","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":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"antiMEVEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"buyAshFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","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":[],"name":"disableAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableMEVProtection","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":"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":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"letswap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpPoolPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTradingLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAshFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFeeTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForAsh","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_ashFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_ashFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_ashWallet","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600c805463ffffffff19166001908117909155600f805460ff199081168317909155601b805490911690911790553480156200003e575f80fd5b506040518060400160405280600481526020016321b430b960e11b8152506040518060400160405280600481526020016321a420a960e11b81525081600390816200008a919062000784565b50600462000099828262000784565b5050505f620000ad6200041c60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200011c81600162000420565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000165573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200018b91906200084c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fd91906200084c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000248573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026e91906200084c565b6001600160a01b031660a08190526200028990600162000420565b60a0516200029990600162000498565b600a60046006603c602360056b033b2e3c9fd0803ce80000006103e8620002c282601462000888565b620002ce9190620008a2565b6009556103e8620002e182601462000888565b620002ed9190620008a2565b600b556127106200030082600a62000888565b6200030c9190620008a2565b600a55601187905560138590556012869055856200032b8689620008c2565b620003379190620008c2565b60105560158490556017829055601683905582620003568386620008c2565b620003629190620008c2565b601455600554600680546001600160a01b03199081166001600160a01b03909316928317909155600780548216831790556008805490911682179055620003ab906001620004eb565b620003b8306001620004eb565b620003c761dead6001620004eb565b620003e6620003de6005546001600160a01b031690565b600162000420565b620003f330600162000420565b6200040261dead600162000420565b6200040e308262000593565b5050505050505050620008d8565b3390565b6005546001600160a01b031633146200046e5760405162461bcd60e51b815260206004820181905260248201525f8051602062002ed383398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601d60205260409020805460ff1916911515919091179055565b6001600160a01b0382165f818152601e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005355760405162461bcd60e51b815260206004820181905260248201525f8051602062002ed3833981519152604482015260640162000465565b6001600160a01b0382165f818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005eb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000465565b600254620005fa90826200067a565b6002556001600160a01b0382165f908152602081905260409020546200062190826200067a565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b5f80620006888385620008c2565b905083811015620006dc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000465565b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200070e57607f821691505b6020821081036200072d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000675575f81815260208120601f850160051c810160208610156200075b5750805b601f850160051c820191505b818110156200077c5782815560010162000767565b505050505050565b81516001600160401b03811115620007a057620007a0620006e5565b620007b881620007b18454620006f9565b8462000733565b602080601f831160018114620007ee575f8415620007d65750858301515b5f19600386901b1c1916600185901b1785556200077c565b5f85815260208120601f198616915b828110156200081e57888601518255948401946001909101908401620007fd565b50858210156200083c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200085d575f80fd5b81516001600160a01b0381168114620006dc575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620006df57620006df62000874565b5f82620008bd57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620006df57620006df62000874565b60805160a0516125a86200092b5f395f8181610488015261144501525f81816103b1015281816108a2015281816108d10152818161140701528181611f4501528181611ffc015261203801526125a85ff3fe6080604052600436106102a8575f3560e01c80637e88a33d1161016f578063a457c2d7116100d8578063c17b5b8c11610092578063d85ba0631161006d578063d85ba063146107dc578063dd62ed3e146107f1578063f2fde38b14610835578063f8b45b0514610854575f80fd5b8063c17b5b8c14610789578063c8c8ebe4146107a8578063d257b34f146107bd575f80fd5b8063a457c2d7146106cb578063a9059cbb146106ea578063b80bfc3214610709578063bbbee3cd1461071e578063bbc0c7421461074c578063c02466681461076a575f80fd5b8063924de9b711610129578063924de9b71461064457806395d89b41146106635780639c3b4fdc146106775780639f86db5d1461068c5780639fccce32146106a1578063a0d82dc5146106b6575f80fd5b80637e88a33d146105b15780638095d564146105c55780638a1af6d8146105e45780638da5cb5b146105f95780638f44dbcd14610616578063921369131461062f575f80fd5b8063313ce567116102115780636ddd1713116101cb5780636ddd1713146105165780636ee2a9b21461053557806370a082311461054a578063715018a6146105695780637571336a1461057d5780637bce5a041461059c575f80fd5b8063313ce5671461043d578063395093511461045857806349bd5a5e146104775780634fbee193146104aa5780636a486a8e146104e15780636b37f0c5146104f6575f80fd5b806310d5de531161026257806310d5de5314610353578063147c9f6d146103815780631694505e146103a057806318160ddd146103eb5780631f3fed8f1461040957806323b872dd1461041e575f80fd5b806301339c21146102b357806304113890146102bd57806306fdde03146102eb57806307ce9de41461030c578063095ea7b3146103205780630c0d7da61461033f575f80fd5b366102af57005b5f80fd5b6102bb610869565b005b3480156102c8575f80fd5b50600f546102d69060ff1681565b60405190151581526020015b60405180910390f35b3480156102f6575f80fd5b506102ff6109f5565b6040516102e291906120d2565b348015610317575f80fd5b506102bb610a85565b34801561032b575f80fd5b506102d661033a366004612134565b610abb565b34801561034a575f80fd5b506102d6610ad1565b34801561035e575f80fd5b506102d661036d36600461215e565b601d6020525f908152604090205460ff1681565b34801561038c575f80fd5b506102bb61039b366004612179565b610b0d565b3480156103ab575f80fd5b506103d37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102e2565b3480156103f6575f80fd5b506002545b6040519081526020016102e2565b348015610414575f80fd5b506103fb60185481565b348015610429575f80fd5b506102d66104383660046121c1565b610b76565b348015610448575f80fd5b50604051601281526020016102e2565b348015610463575f80fd5b506102d6610472366004612134565b610bd8565b348015610482575f80fd5b506103d37f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b5575f80fd5b506102d66104c436600461215e565b6001600160a01b03165f908152601c602052604090205460ff1690565b3480156104ec575f80fd5b506103fb60145481565b348015610501575f80fd5b50600c546102d6906301000000900460ff1681565b348015610521575f80fd5b50600c546102d69062010000900460ff1681565b348015610540575f80fd5b506103fb600a5481565b348015610555575f80fd5b506103fb61056436600461215e565b610c0d565b348015610574575f80fd5b506102bb610c27565b348015610588575f80fd5b506102bb61059736600461220e565b610c9a565b3480156105a7575f80fd5b506103fb60115481565b3480156105bc575f80fd5b506102d6610cee565b3480156105d0575f80fd5b506102bb6105df366004612241565b610d2a565b3480156105ef575f80fd5b506103fb60165481565b348015610604575f80fd5b506005546001600160a01b03166103d3565b348015610621575f80fd5b50600c546102d69060ff1681565b34801561063a575f80fd5b506103fb60155481565b34801561064f575f80fd5b506102bb61065e36600461226a565b610d80565b34801561066e575f80fd5b506102ff610dc6565b348015610682575f80fd5b506103fb60135481565b348015610697575f80fd5b506103fb60195481565b3480156106ac575f80fd5b506103fb601a5481565b3480156106c1575f80fd5b506103fb60175481565b3480156106d6575f80fd5b506102d66106e5366004612134565b610dd5565b3480156106f5575f80fd5b506102d6610704366004612134565b610e22565b348015610714575f80fd5b506103fb60125481565b348015610729575f80fd5b506102d661073836600461215e565b601e6020525f908152604090205460ff1681565b348015610757575f80fd5b50600c546102d690610100900460ff1681565b348015610775575f80fd5b506102bb61078436600461220e565b610e2e565b348015610794575f80fd5b506102bb6107a3366004612241565b610eb6565b3480156107b3575f80fd5b506103fb60095481565b3480156107c8575f80fd5b506102d66107d7366004612283565b610f0c565b3480156107e7575f80fd5b506103fb60105481565b3480156107fc575f80fd5b506103fb61080b36600461229a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610840575f80fd5b506102bb61084f36600461215e565b611062565b34801561085f575f80fd5b506103fb600b5481565b6005546001600160a01b0316331461089c5760405162461bcd60e51b8152600401610893906122d1565b60405180910390fd5b6108cf307f00000000000000000000000000000000000000000000000000000000000000006108ca30610c0d565b61114c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719473061090930610c0d565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523060848201524260a482015260c40160606040518083038185885af115801561096a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061098f9190612306565b5050600880546001600160a01b031990811673f300441934e2c7ca54c96f65f67c509f24d6094e179091556006805490911673511f1bf1141275c26b2286ac7d3d6bc63f5475e517905550600c8054630101010063ffffff001990911617905543600d55565b606060038054610a0490612331565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3090612331565b8015610a7b5780601f10610a5257610100808354040283529160200191610a7b565b820191905f5260205f20905b815481529060010190602001808311610a5e57829003601f168201915b5050505050905090565b6005546001600160a01b03163314610aaf5760405162461bcd60e51b8152600401610893906122d1565b601b805460ff19169055565b5f610ac733848461114c565b5060015b92915050565b6005545f906001600160a01b03163314610afd5760405162461bcd60e51b8152600401610893906122d1565b50600c805460ff19169055600190565b6005546001600160a01b03163314610b375760405162461bcd60e51b8152600401610893906122d1565b600680546001600160a01b039485166001600160a01b031991821617909155600780549385169382169390931790925560088054919093169116179055565b5f610b82848484611270565b610bce84336108ca85604051806060016040528060288152602001612526602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190611ae2565b5060019392505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610ac79185906108ca9086611b1a565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610c515760405162461bcd60e51b8152600401610893906122d1565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610cc45760405162461bcd60e51b8152600401610893906122d1565b6001600160a01b03919091165f908152601d60205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610d1a5760405162461bcd60e51b8152600401610893906122d1565b50600f805460ff19169055600190565b6005546001600160a01b03163314610d545760405162461bcd60e51b8152600401610893906122d1565b60118390556013829055601281905580610d6e838561237d565b610d78919061237d565b601055505050565b6005546001600160a01b03163314610daa5760405162461bcd60e51b8152600401610893906122d1565b600c8054911515620100000262ff000019909216919091179055565b606060048054610a0490612331565b5f610ac733846108ca8560405180606001604052806025815260200161254e60259139335f9081526001602090815260408083206001600160a01b038d1684529091529020549190611ae2565b5f610ac7338484611270565b6005546001600160a01b03163314610e585760405162461bcd60e51b8152600401610893906122d1565b6001600160a01b0382165f818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ee05760405162461bcd60e51b8152600401610893906122d1565b60158390556017829055601681905580610efa838561237d565b610f04919061237d565b601455505050565b6005545f906001600160a01b03163314610f385760405162461bcd60e51b8152600401610893906122d1565b620186a0610f4560025490565b610f50906001612390565b610f5a91906123a7565b821015610fc75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610893565b6103e8610fd360025490565b610fde906005612390565b610fe891906123a7565b8211156110545760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610893565b50600a81905560015b919050565b6005546001600160a01b0316331461108c5760405162461bcd60e51b8152600401610893906122d1565b6001600160a01b0381166110f15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610893565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111ae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610893565b6001600160a01b03821661120f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610893565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112965760405162461bcd60e51b8152600401610893906123c6565b6001600160a01b0382166112bc5760405162461bcd60e51b81526004016108939061240b565b805f036112d3576112ce83835f611b7f565b505050565b600c5460ff1615611767576005546001600160a01b0384811691161480159061130a57506005546001600160a01b03838116911614155b801561131e57506001600160a01b03821615155b801561133557506001600160a01b03821661dead14155b801561134b5750600554600160a01b900460ff16155b1561176757600c54610100900460ff166113e1576001600160a01b0383165f908152601c602052604090205460ff168061139c57506001600160a01b0382165f908152601c602052604090205460ff165b6113e15760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610893565b600f5460ff1615611526576005546001600160a01b0383811691161480159061143c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561147a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561152657325f908152600e602052604090205443116115145760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610893565b325f908152600e602052604090204390555b6001600160a01b0383165f908152601e602052604090205460ff16801561156557506001600160a01b0382165f908152601d602052604090205460ff16155b15611639576009548111156115da5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610893565b600b546115e683610c0d565b6115f0908361237d565b11156116345760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610893565b611767565b6001600160a01b0382165f908152601e602052604090205460ff16801561167857506001600160a01b0383165f908152601d602052604090205460ff16155b156116ee576009548111156116345760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610893565b6001600160a01b0382165f908152601d602052604090205460ff1661176757600b5461171983610c0d565b611723908361237d565b11156117675760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610893565b5f61177130610c0d565b600a54909150811080159081906117905750600c5462010000900460ff165b80156117a65750600554600160a01b900460ff16155b80156117ca57506001600160a01b0385165f908152601e602052604090205460ff16155b80156117ee57506001600160a01b0385165f908152601c602052604090205460ff16155b801561181257506001600160a01b0384165f908152601c602052604090205460ff16155b15611840576005805460ff60a01b1916600160a01b179055611832611c85565b6005805460ff60a01b191690555b6005546001600160a01b0386165f908152601c602052604090205460ff600160a01b90920482161591168061188c57506001600160a01b0385165f908152601c602052604090205460ff165b1561189457505f5b600d546118a290600261237d565b431180156118b25750601b5460ff165b156118ee5760146015819055600560168190556017819055906118d690829061237d565b6118e0919061237d565b601455601b805460ff191690555b5f8115611ace576001600160a01b0386165f908152601e602052604090205460ff16801561191d57505f601454115b156119d857611942606461193c60145488611e3190919063ffffffff16565b90611eaf565b9050601454601754826119559190612390565b61195f91906123a7565b601a5f82825461196f919061237d565b90915550506014546015546119849083612390565b61198e91906123a7565b60185f82825461199e919061237d565b90915550506014546016546119b39083612390565b6119bd91906123a7565b60195f8282546119cd919061237d565b90915550611ab09050565b6001600160a01b0387165f908152601e602052604090205460ff168015611a0057505f601054115b15611ab057611a1f606461193c60105488611e3190919063ffffffff16565b905060105460135482611a329190612390565b611a3c91906123a7565b601a5f828254611a4c919061237d565b9091555050601054601154611a619083612390565b611a6b91906123a7565b60185f828254611a7b919061237d565b9091555050601054601254611a909083612390565b611a9a91906123a7565b60195f828254611aaa919061237d565b90915550505b8015611ac157611ac1873083611b7f565b611acb818661244e565b94505b611ad9878787611b7f565b50505050505050565b5f8184841115611b055760405162461bcd60e51b815260040161089391906120d2565b505f611b11848661244e565b95945050505050565b5f80611b26838561237d565b905083811015611b785760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610893565b9392505050565b6001600160a01b038316611ba55760405162461bcd60e51b8152600401610893906123c6565b6001600160a01b038216611bcb5760405162461bcd60e51b81526004016108939061240b565b611c0781604051806060016040528060268152602001612500602691396001600160a01b0386165f908152602081905260409020549190611ae2565b6001600160a01b038085165f908152602081905260408082209390935590841681522054611c359082611b1a565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611263565b5f611c8f30610c0d565b90505f601a54601854611ca2919061237d565b90505f821580611cb0575081155b15611cba57505050565b600a54611cc8906014612390565b831115611ce057600a54611cdd906014612390565b92505b611ce983611ef0565b5f4790505f611d078461193c601a5485611e3190919063ffffffff16565b90505f611d238561193c60195486611e3190919063ffffffff16565b5f6018819055601a81905560198190556007546040519293506001600160a01b031691849181818185875af1925050503d805f8114611d7d576040519150601f19603f3d011682016040523d82523d5f602084013e611d82565b606091505b50506008546040519195506001600160a01b03169082905f81818185875af1925050503d805f8114611dcf576040519150601f19603f3d011682016040523d82523d5f602084013e611dd4565b606091505b50506006546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611e21576040519150601f19603f3d011682016040523d82523d5f602084013e611e26565b606091505b505050505050505050565b5f825f03611e4057505f610acb565b5f611e4b8385612390565b905082611e5885836123a7565b14611b785760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610893565b5f611b7883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a6565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f2357611f23612461565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc39190612475565b81600181518110611fd657611fd6612461565b60200260200101906001600160a01b031690816001600160a01b031681525050612021307f00000000000000000000000000000000000000000000000000000000000000008461114c565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120759085905f90869030904290600401612490565b5f604051808303815f87803b15801561208c575f80fd5b505af115801561209e573d5f803e3d5ffd5b505050505050565b5f81836120c65760405162461bcd60e51b815260040161089391906120d2565b505f611b1184866123a7565b5f6020808352835180828501525f5b818110156120fd578581018301518582016040015282016120e1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612131575f80fd5b50565b5f8060408385031215612145575f80fd5b82356121508161211d565b946020939093013593505050565b5f6020828403121561216e575f80fd5b8135611b788161211d565b5f805f6060848603121561218b575f80fd5b83356121968161211d565b925060208401356121a68161211d565b915060408401356121b68161211d565b809150509250925092565b5f805f606084860312156121d3575f80fd5b83356121de8161211d565b925060208401356121ee8161211d565b929592945050506040919091013590565b8035801515811461105d575f80fd5b5f806040838503121561221f575f80fd5b823561222a8161211d565b9150612238602084016121ff565b90509250929050565b5f805f60608486031215612253575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561227a575f80fd5b611b78826121ff565b5f60208284031215612293575f80fd5b5035919050565b5f80604083850312156122ab575f80fd5b82356122b68161211d565b915060208301356122c68161211d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f805f60608486031215612318575f80fd5b8351925060208401519150604084015190509250925092565b600181811c9082168061234557607f821691505b60208210810361236357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610acb57610acb612369565b8082028115828204841417610acb57610acb612369565b5f826123c157634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610acb57610acb612369565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612485575f80fd5b8151611b788161211d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156124de5784516001600160a01b0316835293830193918301916001016124b9565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204b839f5991e74198f49d5ebdc45d2e743277bab335316c761bcacac66114f71664736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106102a8575f3560e01c80637e88a33d1161016f578063a457c2d7116100d8578063c17b5b8c11610092578063d85ba0631161006d578063d85ba063146107dc578063dd62ed3e146107f1578063f2fde38b14610835578063f8b45b0514610854575f80fd5b8063c17b5b8c14610789578063c8c8ebe4146107a8578063d257b34f146107bd575f80fd5b8063a457c2d7146106cb578063a9059cbb146106ea578063b80bfc3214610709578063bbbee3cd1461071e578063bbc0c7421461074c578063c02466681461076a575f80fd5b8063924de9b711610129578063924de9b71461064457806395d89b41146106635780639c3b4fdc146106775780639f86db5d1461068c5780639fccce32146106a1578063a0d82dc5146106b6575f80fd5b80637e88a33d146105b15780638095d564146105c55780638a1af6d8146105e45780638da5cb5b146105f95780638f44dbcd14610616578063921369131461062f575f80fd5b8063313ce567116102115780636ddd1713116101cb5780636ddd1713146105165780636ee2a9b21461053557806370a082311461054a578063715018a6146105695780637571336a1461057d5780637bce5a041461059c575f80fd5b8063313ce5671461043d578063395093511461045857806349bd5a5e146104775780634fbee193146104aa5780636a486a8e146104e15780636b37f0c5146104f6575f80fd5b806310d5de531161026257806310d5de5314610353578063147c9f6d146103815780631694505e146103a057806318160ddd146103eb5780631f3fed8f1461040957806323b872dd1461041e575f80fd5b806301339c21146102b357806304113890146102bd57806306fdde03146102eb57806307ce9de41461030c578063095ea7b3146103205780630c0d7da61461033f575f80fd5b366102af57005b5f80fd5b6102bb610869565b005b3480156102c8575f80fd5b50600f546102d69060ff1681565b60405190151581526020015b60405180910390f35b3480156102f6575f80fd5b506102ff6109f5565b6040516102e291906120d2565b348015610317575f80fd5b506102bb610a85565b34801561032b575f80fd5b506102d661033a366004612134565b610abb565b34801561034a575f80fd5b506102d6610ad1565b34801561035e575f80fd5b506102d661036d36600461215e565b601d6020525f908152604090205460ff1681565b34801561038c575f80fd5b506102bb61039b366004612179565b610b0d565b3480156103ab575f80fd5b506103d37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102e2565b3480156103f6575f80fd5b506002545b6040519081526020016102e2565b348015610414575f80fd5b506103fb60185481565b348015610429575f80fd5b506102d66104383660046121c1565b610b76565b348015610448575f80fd5b50604051601281526020016102e2565b348015610463575f80fd5b506102d6610472366004612134565b610bd8565b348015610482575f80fd5b506103d37f0000000000000000000000006c124064c612e9c120bf644b4b244d4b46f9cb1081565b3480156104b5575f80fd5b506102d66104c436600461215e565b6001600160a01b03165f908152601c602052604090205460ff1690565b3480156104ec575f80fd5b506103fb60145481565b348015610501575f80fd5b50600c546102d6906301000000900460ff1681565b348015610521575f80fd5b50600c546102d69062010000900460ff1681565b348015610540575f80fd5b506103fb600a5481565b348015610555575f80fd5b506103fb61056436600461215e565b610c0d565b348015610574575f80fd5b506102bb610c27565b348015610588575f80fd5b506102bb61059736600461220e565b610c9a565b3480156105a7575f80fd5b506103fb60115481565b3480156105bc575f80fd5b506102d6610cee565b3480156105d0575f80fd5b506102bb6105df366004612241565b610d2a565b3480156105ef575f80fd5b506103fb60165481565b348015610604575f80fd5b506005546001600160a01b03166103d3565b348015610621575f80fd5b50600c546102d69060ff1681565b34801561063a575f80fd5b506103fb60155481565b34801561064f575f80fd5b506102bb61065e36600461226a565b610d80565b34801561066e575f80fd5b506102ff610dc6565b348015610682575f80fd5b506103fb60135481565b348015610697575f80fd5b506103fb60195481565b3480156106ac575f80fd5b506103fb601a5481565b3480156106c1575f80fd5b506103fb60175481565b3480156106d6575f80fd5b506102d66106e5366004612134565b610dd5565b3480156106f5575f80fd5b506102d6610704366004612134565b610e22565b348015610714575f80fd5b506103fb60125481565b348015610729575f80fd5b506102d661073836600461215e565b601e6020525f908152604090205460ff1681565b348015610757575f80fd5b50600c546102d690610100900460ff1681565b348015610775575f80fd5b506102bb61078436600461220e565b610e2e565b348015610794575f80fd5b506102bb6107a3366004612241565b610eb6565b3480156107b3575f80fd5b506103fb60095481565b3480156107c8575f80fd5b506102d66107d7366004612283565b610f0c565b3480156107e7575f80fd5b506103fb60105481565b3480156107fc575f80fd5b506103fb61080b36600461229a565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610840575f80fd5b506102bb61084f36600461215e565b611062565b34801561085f575f80fd5b506103fb600b5481565b6005546001600160a01b0316331461089c5760405162461bcd60e51b8152600401610893906122d1565b60405180910390fd5b6108cf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6108ca30610c0d565b61114c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719473061090930610c0d565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523060848201524260a482015260c40160606040518083038185885af115801561096a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061098f9190612306565b5050600880546001600160a01b031990811673f300441934e2c7ca54c96f65f67c509f24d6094e179091556006805490911673511f1bf1141275c26b2286ac7d3d6bc63f5475e517905550600c8054630101010063ffffff001990911617905543600d55565b606060038054610a0490612331565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3090612331565b8015610a7b5780601f10610a5257610100808354040283529160200191610a7b565b820191905f5260205f20905b815481529060010190602001808311610a5e57829003601f168201915b5050505050905090565b6005546001600160a01b03163314610aaf5760405162461bcd60e51b8152600401610893906122d1565b601b805460ff19169055565b5f610ac733848461114c565b5060015b92915050565b6005545f906001600160a01b03163314610afd5760405162461bcd60e51b8152600401610893906122d1565b50600c805460ff19169055600190565b6005546001600160a01b03163314610b375760405162461bcd60e51b8152600401610893906122d1565b600680546001600160a01b039485166001600160a01b031991821617909155600780549385169382169390931790925560088054919093169116179055565b5f610b82848484611270565b610bce84336108ca85604051806060016040528060288152602001612526602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190611ae2565b5060019392505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610ac79185906108ca9086611b1a565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610c515760405162461bcd60e51b8152600401610893906122d1565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610cc45760405162461bcd60e51b8152600401610893906122d1565b6001600160a01b03919091165f908152601d60205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610d1a5760405162461bcd60e51b8152600401610893906122d1565b50600f805460ff19169055600190565b6005546001600160a01b03163314610d545760405162461bcd60e51b8152600401610893906122d1565b60118390556013829055601281905580610d6e838561237d565b610d78919061237d565b601055505050565b6005546001600160a01b03163314610daa5760405162461bcd60e51b8152600401610893906122d1565b600c8054911515620100000262ff000019909216919091179055565b606060048054610a0490612331565b5f610ac733846108ca8560405180606001604052806025815260200161254e60259139335f9081526001602090815260408083206001600160a01b038d1684529091529020549190611ae2565b5f610ac7338484611270565b6005546001600160a01b03163314610e585760405162461bcd60e51b8152600401610893906122d1565b6001600160a01b0382165f818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ee05760405162461bcd60e51b8152600401610893906122d1565b60158390556017829055601681905580610efa838561237d565b610f04919061237d565b601455505050565b6005545f906001600160a01b03163314610f385760405162461bcd60e51b8152600401610893906122d1565b620186a0610f4560025490565b610f50906001612390565b610f5a91906123a7565b821015610fc75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610893565b6103e8610fd360025490565b610fde906005612390565b610fe891906123a7565b8211156110545760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610893565b50600a81905560015b919050565b6005546001600160a01b0316331461108c5760405162461bcd60e51b8152600401610893906122d1565b6001600160a01b0381166110f15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610893565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111ae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610893565b6001600160a01b03821661120f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610893565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112965760405162461bcd60e51b8152600401610893906123c6565b6001600160a01b0382166112bc5760405162461bcd60e51b81526004016108939061240b565b805f036112d3576112ce83835f611b7f565b505050565b600c5460ff1615611767576005546001600160a01b0384811691161480159061130a57506005546001600160a01b03838116911614155b801561131e57506001600160a01b03821615155b801561133557506001600160a01b03821661dead14155b801561134b5750600554600160a01b900460ff16155b1561176757600c54610100900460ff166113e1576001600160a01b0383165f908152601c602052604090205460ff168061139c57506001600160a01b0382165f908152601c602052604090205460ff165b6113e15760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610893565b600f5460ff1615611526576005546001600160a01b0383811691161480159061143c57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561147a57507f0000000000000000000000006c124064c612e9c120bf644b4b244d4b46f9cb106001600160a01b0316826001600160a01b031614155b1561152657325f908152600e602052604090205443116115145760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610893565b325f908152600e602052604090204390555b6001600160a01b0383165f908152601e602052604090205460ff16801561156557506001600160a01b0382165f908152601d602052604090205460ff16155b15611639576009548111156115da5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610893565b600b546115e683610c0d565b6115f0908361237d565b11156116345760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610893565b611767565b6001600160a01b0382165f908152601e602052604090205460ff16801561167857506001600160a01b0383165f908152601d602052604090205460ff16155b156116ee576009548111156116345760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610893565b6001600160a01b0382165f908152601d602052604090205460ff1661176757600b5461171983610c0d565b611723908361237d565b11156117675760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610893565b5f61177130610c0d565b600a54909150811080159081906117905750600c5462010000900460ff165b80156117a65750600554600160a01b900460ff16155b80156117ca57506001600160a01b0385165f908152601e602052604090205460ff16155b80156117ee57506001600160a01b0385165f908152601c602052604090205460ff16155b801561181257506001600160a01b0384165f908152601c602052604090205460ff16155b15611840576005805460ff60a01b1916600160a01b179055611832611c85565b6005805460ff60a01b191690555b6005546001600160a01b0386165f908152601c602052604090205460ff600160a01b90920482161591168061188c57506001600160a01b0385165f908152601c602052604090205460ff165b1561189457505f5b600d546118a290600261237d565b431180156118b25750601b5460ff165b156118ee5760146015819055600560168190556017819055906118d690829061237d565b6118e0919061237d565b601455601b805460ff191690555b5f8115611ace576001600160a01b0386165f908152601e602052604090205460ff16801561191d57505f601454115b156119d857611942606461193c60145488611e3190919063ffffffff16565b90611eaf565b9050601454601754826119559190612390565b61195f91906123a7565b601a5f82825461196f919061237d565b90915550506014546015546119849083612390565b61198e91906123a7565b60185f82825461199e919061237d565b90915550506014546016546119b39083612390565b6119bd91906123a7565b60195f8282546119cd919061237d565b90915550611ab09050565b6001600160a01b0387165f908152601e602052604090205460ff168015611a0057505f601054115b15611ab057611a1f606461193c60105488611e3190919063ffffffff16565b905060105460135482611a329190612390565b611a3c91906123a7565b601a5f828254611a4c919061237d565b9091555050601054601154611a619083612390565b611a6b91906123a7565b60185f828254611a7b919061237d565b9091555050601054601254611a909083612390565b611a9a91906123a7565b60195f828254611aaa919061237d565b90915550505b8015611ac157611ac1873083611b7f565b611acb818661244e565b94505b611ad9878787611b7f565b50505050505050565b5f8184841115611b055760405162461bcd60e51b815260040161089391906120d2565b505f611b11848661244e565b95945050505050565b5f80611b26838561237d565b905083811015611b785760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610893565b9392505050565b6001600160a01b038316611ba55760405162461bcd60e51b8152600401610893906123c6565b6001600160a01b038216611bcb5760405162461bcd60e51b81526004016108939061240b565b611c0781604051806060016040528060268152602001612500602691396001600160a01b0386165f908152602081905260409020549190611ae2565b6001600160a01b038085165f908152602081905260408082209390935590841681522054611c359082611b1a565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611263565b5f611c8f30610c0d565b90505f601a54601854611ca2919061237d565b90505f821580611cb0575081155b15611cba57505050565b600a54611cc8906014612390565b831115611ce057600a54611cdd906014612390565b92505b611ce983611ef0565b5f4790505f611d078461193c601a5485611e3190919063ffffffff16565b90505f611d238561193c60195486611e3190919063ffffffff16565b5f6018819055601a81905560198190556007546040519293506001600160a01b031691849181818185875af1925050503d805f8114611d7d576040519150601f19603f3d011682016040523d82523d5f602084013e611d82565b606091505b50506008546040519195506001600160a01b03169082905f81818185875af1925050503d805f8114611dcf576040519150601f19603f3d011682016040523d82523d5f602084013e611dd4565b606091505b50506006546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611e21576040519150601f19603f3d011682016040523d82523d5f602084013e611e26565b606091505b505050505050505050565b5f825f03611e4057505f610acb565b5f611e4b8385612390565b905082611e5885836123a7565b14611b785760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610893565b5f611b7883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a6565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f2357611f23612461565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc39190612475565b81600181518110611fd657611fd6612461565b60200260200101906001600160a01b031690816001600160a01b031681525050612021307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461114c565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120759085905f90869030904290600401612490565b5f604051808303815f87803b15801561208c575f80fd5b505af115801561209e573d5f803e3d5ffd5b505050505050565b5f81836120c65760405162461bcd60e51b815260040161089391906120d2565b505f611b1184866123a7565b5f6020808352835180828501525f5b818110156120fd578581018301518582016040015282016120e1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612131575f80fd5b50565b5f8060408385031215612145575f80fd5b82356121508161211d565b946020939093013593505050565b5f6020828403121561216e575f80fd5b8135611b788161211d565b5f805f6060848603121561218b575f80fd5b83356121968161211d565b925060208401356121a68161211d565b915060408401356121b68161211d565b809150509250925092565b5f805f606084860312156121d3575f80fd5b83356121de8161211d565b925060208401356121ee8161211d565b929592945050506040919091013590565b8035801515811461105d575f80fd5b5f806040838503121561221f575f80fd5b823561222a8161211d565b9150612238602084016121ff565b90509250929050565b5f805f60608486031215612253575f80fd5b505081359360208301359350604090920135919050565b5f6020828403121561227a575f80fd5b611b78826121ff565b5f60208284031215612293575f80fd5b5035919050565b5f80604083850312156122ab575f80fd5b82356122b68161211d565b915060208301356122c68161211d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f805f60608486031215612318575f80fd5b8351925060208401519150604084015190509250925092565b600181811c9082168061234557607f821691505b60208210810361236357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610acb57610acb612369565b8082028115828204841417610acb57610acb612369565b5f826123c157634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610acb57610acb612369565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612485575f80fd5b8151611b788161211d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156124de5784516001600160a01b0316835293830193918301916001016124b9565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204b839f5991e74198f49d5ebdc45d2e743277bab335316c761bcacac66114f71664736f6c63430008150033
Deployed Bytecode Sourcemap
18250:12789:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29235:808;;;:::i;:::-;;19063:33;;;;;;;;;;-1:-1:-1;19063:33:0;;;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;19063:33:0;;;;;;;;5351:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24303:84::-;;;;;;;;;;;;;:::i;6251:169::-;;;;;;;;;;-1:-1:-1;6251:169:0;;;;;:::i;:::-;;:::i;21978:126::-;;;;;;;;;;;;;:::i;19595:64::-;;;;;;;;;;-1:-1:-1;19595:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24067:227;;;;;;;;;;-1:-1:-1;24067:227:0;;;;;:::i;:::-;;:::i;18330:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2192:32:1;;;2174:51;;2162:2;2147:18;18330:51:0;2001:230:1;5666:108:0;;;;;;;;;;-1:-1:-1;5754:12:0;;5666:108;;;2382:25:1;;;2370:2;2355:18;5666:108:0;2236:177:1;19385:33:0;;;;;;;;;;;;;;;;6426:355;;;;;;;;;;-1:-1:-1;6426:355:0;;;;;:::i;:::-;;:::i;5567:93::-;;;;;;;;;;-1:-1:-1;5567:93:0;;5650:2;3021:36:1;;3009:2;2994:18;5567:93:0;2879:184:1;6787:218:0;;;;;;;;;;-1:-1:-1;6787:218:0;;;;;:::i;:::-;;:::i;18388:38::-;;;;;;;;;;;;;;;24397:125;;;;;;;;;;-1:-1:-1;24397:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;24486:28:0;24462:4;24486:28;;;:19;:28;;;;;;;;;24397:125;19242:28;;;;;;;;;;;;;;;;18808:27;;;;;;;;;;-1:-1:-1;18808:27:0;;;;;;;;;;;18770:31;;;;;;;;;;-1:-1:-1;18770:31:0;;;;;;;;;;;18614:36;;;;;;;;;;;;;;;;5780:127;;;;;;;;;;-1:-1:-1;5780:127:0;;;;;:::i;:::-;;:::i;11180:148::-;;;;;;;;;;;;;:::i;22767:144::-;;;;;;;;;;-1:-1:-1;22767:144:0;;;;;:::i;:::-;;:::i;19140:30::-;;;;;;;;;;;;;;;;22166:128;;;;;;;;;;;;;:::i;23118:274::-;;;;;;;;;;-1:-1:-1;23118:274:0;;;;;:::i;:::-;;:::i;19315:25::-;;;;;;;;;;;;;;;;10970:79;;;;;;;;;;-1:-1:-1;11035:6:0;;-1:-1:-1;;;;;11035:6:0;10970:79;;18691:32;;;;;;;;;;-1:-1:-1;18691:32:0;;;;;;;;19277:31;;;;;;;;;;;;;;;;23008:101;;;;;;;;;;-1:-1:-1;23008:101:0;;;;;:::i;:::-;;:::i;5457:104::-;;;;;;;;;;;;;:::i;19208:24::-;;;;;;;;;;;;;;;;19425:27;;;;;;;;;;;;;;;;19459;;;;;;;;;;;;;;;;19347:25;;;;;;;;;;;;;;;;7011:269;;;;;;;;;;-1:-1:-1;7011:269:0;;;;;:::i;:::-;;:::i;5913:175::-;;;;;;;;;;-1:-1:-1;5913:175:0;;;;;:::i;:::-;;:::i;19177:24::-;;;;;;;;;;;;;;;;19669:44;;;;;;;;;;-1:-1:-1;19669:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18730:33;;;;;;;;;;-1:-1:-1;18730:33:0;;;;;;;;;;;23692:182;;;;;;;;;;-1:-1:-1;23692:182:0;;;;;:::i;:::-;;:::i;23401:282::-;;;;;;;;;;-1:-1:-1;23401:282:0;;;;;:::i;:::-;;:::i;18572:35::-;;;;;;;;;;;;;;;;22366:389;;;;;;;;;;-1:-1:-1;22366:389:0;;;;;:::i;:::-;;:::i;19106:27::-;;;;;;;;;;;;;;;;6094:151;;;;;;;;;;-1:-1:-1;6094:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;6210:18:0;;;6183:7;6210:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6094:151;11334:244;;;;;;;;;;-1:-1:-1;11334:244:0;;;;;:::i;:::-;;:::i;18657:24::-;;;;;;;;;;;;;;;;29235:808;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;;;;;;;;;29358:75:::1;29375:4;29390:15;29408:24;29426:4;29408:9;:24::i;:::-;29358:8;:75::i;:::-;29477:15;-1:-1:-1::0;;;;;29477:31:0::1;;29516:21;29561:4;29581:24;29599:4;29581:9;:24::i;:::-;29477:283;::::0;-1:-1:-1;;;;;;29477:283:0::1;::::0;;;;;;-1:-1:-1;;;;;5565:15:1;;;29477:283:0::1;::::0;::::1;5547:34:1::0;5597:18;;;5590:34;29620:1:0::1;5640:18:1::0;;;5633:34;;;5683:18;;;5676:34;29714:4:0::1;5726:19:1::0;;;5719:44;29734:15:0::1;5779:19:1::0;;;5772:35;5481:19;;29477:283:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;29771:9:0::1;:63:::0;;-1:-1:-1;;;;;;29771:63:0;;::::1;29791:42;29771:63;::::0;;;29845:15:::1;:69:::0;;;;::::1;29871:42;29845:69;::::0;;-1:-1:-1;29925:13:0::1;:20:::0;;29985:14;-1:-1:-1;;29985:14:0;;;;;;30023:12:::1;30010:10;:25:::0;29235:808::o;5351:100::-;5405:13;5438:5;5431:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5351:100;:::o;24303:84::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;24359:12:::1;:20:::0;;-1:-1:-1;;24359:20:0::1;::::0;;24303:84::o;6251:169::-;6334:4;6351:39;688:10;6374:7;6383:6;6351:8;:39::i;:::-;-1:-1:-1;6408:4:0;6251:169;;;;;:::o;21978:126::-;11095:6;;22037:4;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;-1:-1:-1;22053:13:0::1;:21:::0;;-1:-1:-1;;22053:21:0::1;::::0;;;21978:126;:::o;24067:227::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;24186:15:::1;:34:::0;;-1:-1:-1;;;;;24186:34:0;;::::1;-1:-1:-1::0;;;;;;24186:34:0;;::::1;;::::0;;;24231:9:::1;:22:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;24264:9:::1;:22:::0;;;;;::::1;::::0;::::1;;::::0;;24067:227::o;6426:355::-;6566:4;6583:36;6593:6;6601:9;6612:6;6583:9;:36::i;:::-;6630:121;6639:6;688:10;6661:89;6699:6;6661:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6661:19:0;;;;;;:11;:19;;;;;;;;688:10;6661:33;;;;;;;;;;:37;:89::i;6630:121::-;-1:-1:-1;6769:4:0;6426:355;;;;;:::o;6787:218::-;688:10;6875:4;6924:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6924:34:0;;;;;;;;;;6875:4;;6892:83;;6915:7;;6924:50;;6963:10;6924:38;:50::i;5780:127::-;-1:-1:-1;;;;;5881:18:0;5854:7;5881:18;;;;;;;;;;;;5780:127::o;11180:148::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;11271:6:::1;::::0;11250:40:::1;::::0;11287:1:::1;::::0;-1:-1:-1;;;;;11271:6:0::1;::::0;11250:40:::1;::::0;11287:1;;11250:40:::1;11301:6;:19:::0;;-1:-1:-1;;;;;;11301:19:0::1;::::0;;11180:148::o;22767:144::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22857:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;22857:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22767:144::o;22166:128::-;11095:6;;22226:4;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;-1:-1:-1;22242:14:0::1;:22:::0;;-1:-1:-1;;22242:22:0::1;::::0;;;22166:128;:::o;23118:274::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;23228:15:::1;:31:::0;;;23270:9:::1;:19:::0;;;23300:9:::1;:19:::0;;;23312:7;23345:27:::1;23282:7:::0;23246:13;23345:27:::1;:::i;:::-;:39;;;;:::i;:::-;23330:12;:54:::0;-1:-1:-1;;;23118:274:0:o;23008:101::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;23080:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;23080:21:0;;::::1;::::0;;;::::1;::::0;;23008:101::o;5457:104::-;5513:13;5546:7;5539:14;;;;;:::i;7011:269::-;7104:4;7121:129;688:10;7144:7;7153:96;7192:15;7153:96;;;;;;;;;;;;;;;;;688:10;7153:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7153:34:0;;;;;;;;;;;;:38;:96::i;5913:175::-;5999:4;6016:42;688:10;6040:9;6051:6;6016:9;:42::i;23692:182::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23777:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;23777:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23832:34;;154:41:1;;;23832:34:0::1;::::0;127:18:1;23832:34:0::1;;;;;;;23692:182:::0;;:::o;23401:282::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;23512:16:::1;:32:::0;;;23555:10:::1;:20:::0;;;23586:10:::1;:20:::0;;;23599:7;23633:29:::1;23568:7:::0;23531:13;23633:29:::1;:::i;:::-;:42;;;;:::i;:::-;23617:13;:58:::0;-1:-1:-1;;;23401:282:0:o;22366:389::-;11095:6;;22447:4;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;22504:6:::1;22484:13;5754:12:::0;;;5666:108;22484:13:::1;:17;::::0;22500:1:::1;22484:17;:::i;:::-;:26;;;;:::i;:::-;22471:9;:39;;22463:105;;;::::0;-1:-1:-1;;;22463:105:0;;7373:2:1;22463:105:0::1;::::0;::::1;7355:21:1::0;7412:2;7392:18;;;7385:30;7451:34;7431:18;;;7424:62;-1:-1:-1;;;7502:18:1;;;7495:51;7563:19;;22463:105:0::1;7171:417:1::0;22463:105:0::1;22620:4;22600:13;5754:12:::0;;;5666:108;22600:13:::1;:17;::::0;22616:1:::1;22600:17;:::i;:::-;:24;;;;:::i;:::-;22587:9;:37;;22579:102;;;::::0;-1:-1:-1;;;22579:102:0;;7795:2:1;22579:102:0::1;::::0;::::1;7777:21:1::0;7834:2;7814:18;;;7807:30;7873:34;7853:18;;;7846:62;-1:-1:-1;;;7924:18:1;;;7917:50;7984:19;;22579:102:0::1;7593:416:1::0;22579:102:0::1;-1:-1:-1::0;22692:21:0::1;:33:::0;;;22743:4:::1;11165:1;22366:389:::0;;;:::o;11334:244::-;11095:6;;-1:-1:-1;;;;;11095:6:0;688:10;11095:22;11087:67;;;;-1:-1:-1;;;11087:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11423:22:0;::::1;11415:73;;;::::0;-1:-1:-1;;;11415:73:0;;8216:2:1;11415:73:0::1;::::0;::::1;8198:21:1::0;8255:2;8235:18;;;8228:30;8294:34;8274:18;;;8267:62;-1:-1:-1;;;8345:18:1;;;8338:36;8391:19;;11415:73:0::1;8014:402:1::0;11415:73:0::1;11525:6;::::0;11504:38:::1;::::0;-1:-1:-1;;;;;11504:38:0;;::::1;::::0;11525:6:::1;::::0;11504:38:::1;::::0;11525:6:::1;::::0;11504:38:::1;11553:6;:17:::0;;-1:-1:-1;;;;;;11553:17:0::1;-1:-1:-1::0;;;;;11553:17:0;;;::::1;::::0;;;::::1;::::0;;11334:244::o;8679:381::-;-1:-1:-1;;;;;8815:19:0;;8807:68;;;;-1:-1:-1;;;8807:68:0;;8623:2:1;8807:68:0;;;8605:21:1;8662:2;8642:18;;;8635:30;8701:34;8681:18;;;8674:62;-1:-1:-1;;;8752:18:1;;;8745:34;8796:19;;8807:68:0;8421:400:1;8807:68:0;-1:-1:-1;;;;;8894:21:0;;8886:68;;;;-1:-1:-1;;;8886:68:0;;9028:2:1;8886:68:0;;;9010:21:1;9067:2;9047:18;;;9040:30;9106:34;9086:18;;;9079:62;-1:-1:-1;;;9157:18:1;;;9150:32;9199:19;;8886:68:0;8826:398:1;8886:68:0;-1:-1:-1;;;;;8968:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9020:32;;2382:25:1;;;9020:32:0;;2355:18:1;9020:32:0;;;;;;;;8679:381;;;:::o;24531:4089::-;-1:-1:-1;;;;;24663:18:0;;24655:68;;;;-1:-1:-1;;;24655:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24742:16:0;;24734:64;;;;-1:-1:-1;;;24734:64:0;;;;;;;:::i;:::-;24813:6;24823:1;24813:11;24810:92;;24841:28;24857:4;24863:2;24867:1;24841:15;:28::i;:::-;24531:4089;;;:::o;24810:92::-;24918:13;;;;24915:1642;;;11035:6;;-1:-1:-1;;;;;24969:15:0;;;11035:6;;24969:15;;;;:49;;-1:-1:-1;11035:6:0;;-1:-1:-1;;;;;25005:13:0;;;11035:6;;25005:13;;24969:49;:86;;;;-1:-1:-1;;;;;;25039:16:0;;;;24969:86;:128;;;;-1:-1:-1;;;;;;25076:21:0;;25090:6;25076:21;;24969:128;:158;;;;-1:-1:-1;25119:8:0;;-1:-1:-1;;;25119:8:0;;;;25118:9;24969:158;24947:1599;;;25165:13;;;;;;;25161:148;;-1:-1:-1;;;;;25210:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;25239:23:0;;;;;;:19;:23;;;;;;;;25210:52;25202:87;;;;-1:-1:-1;;;25202:87:0;;10241:2:1;25202:87:0;;;10223:21:1;10280:2;10260:18;;;10253:30;-1:-1:-1;;;10299:18:1;;;10292:52;10361:18;;25202:87:0;10039:346:1;25202:87:0;25334:14;;;;25330:417;;;11035:6;;-1:-1:-1;;;;;25376:13:0;;;11035:6;;25376:13;;;;:47;;;25407:15;-1:-1:-1;;;;;25393:30:0;:2;-1:-1:-1;;;;;25393:30:0;;;25376:47;:79;;;;;25441:13;-1:-1:-1;;;;;25427:28:0;:2;-1:-1:-1;;;;;25427:28:0;;;25376:79;25372:356;;;25520:9;25491:39;;;;:28;:39;;;;;;25533:12;-1:-1:-1;25483:140:0;;;;-1:-1:-1;;;25483:140:0;;10592:2:1;25483:140:0;;;10574:21:1;10631:2;10611:18;;;10604:30;10670:34;10650:18;;;10643:62;10741:34;10721:18;;;10714:62;-1:-1:-1;;;10792:19:1;;;10785:40;10842:19;;25483:140:0;10390:477:1;25483:140:0;25679:9;25650:39;;;;:28;:39;;;;;25692:12;25650:54;;25372:356;-1:-1:-1;;;;;25800:17:0;;;;;;:11;:17;;;;;;;;:57;;;;-1:-1:-1;;;;;;25822:35:0;;;;;;:31;:35;;;;;;;;25821:36;25800:57;25796:735;;;25904:20;;25894:6;:30;;25886:96;;;;-1:-1:-1;;;25886:96:0;;11074:2:1;25886:96:0;;;11056:21:1;11113:2;11093:18;;;11086:30;11152:34;11132:18;;;11125:62;-1:-1:-1;;;11203:18:1;;;11196:51;11264:19;;25886:96:0;10872:417:1;25886:96:0;26043:9;;26026:13;26036:2;26026:9;:13::i;:::-;26017:22;;:6;:22;:::i;:::-;:35;;26009:67;;;;-1:-1:-1;;;26009:67:0;;11496:2:1;26009:67:0;;;11478:21:1;11535:2;11515:18;;;11508:30;-1:-1:-1;;;11554:18:1;;;11547:49;11613:18;;26009:67:0;11294:343:1;26009:67:0;25796:735;;;-1:-1:-1;;;;;26155:15:0;;;;;;:11;:15;;;;;;;;:57;;;;-1:-1:-1;;;;;;26175:37:0;;;;;;:31;:37;;;;;;;;26174:38;26155:57;26151:380;;;26259:20;;26249:6;:30;;26241:97;;;;-1:-1:-1;;;26241:97:0;;11844:2:1;26241:97:0;;;11826:21:1;11883:2;11863:18;;;11856:30;11922:34;11902:18;;;11895:62;-1:-1:-1;;;11973:18:1;;;11966:52;12035:19;;26241:97:0;11642:418:1;26151:380:0;-1:-1:-1;;;;;26385:35:0;;;;;;:31;:35;;;;;;;;26381:150;;26478:9;;26461:13;26471:2;26461:9;:13::i;:::-;26452:22;;:6;:22;:::i;:::-;:35;;26444:67;;;;-1:-1:-1;;;26444:67:0;;11496:2:1;26444:67:0;;;11478:21:1;11535:2;11515:18;;;11508:30;-1:-1:-1;;;11554:18:1;;;11547:49;11613:18;;26444:67:0;11294:343:1;26444:67:0;26575:28;26606:24;26624:4;26606:9;:24::i;:::-;26680:21;;26575:55;;-1:-1:-1;26656:45:0;;;;;;;26733:35;;-1:-1:-1;26757:11:0;;;;;;;26733:35;:61;;;;-1:-1:-1;26786:8:0;;-1:-1:-1;;;26786:8:0;;;;26785:9;26733:61;:96;;;;-1:-1:-1;;;;;;26812:17:0;;;;;;:11;:17;;;;;;;;26811:18;26733:96;:139;;;;-1:-1:-1;;;;;;26847:25:0;;;;;;:19;:25;;;;;;;;26846:26;26733:139;:180;;;;-1:-1:-1;;;;;;26890:23:0;;;;;;:19;:23;;;;;;;;26889:24;26733:180;26715:314;;;26940:8;:15;;-1:-1:-1;;;;26940:15:0;-1:-1:-1;;;26940:15:0;;;26973:10;:8;:10::i;:::-;27001:8;:16;;-1:-1:-1;;;;27001:16:0;;;26715:314;27058:8;;-1:-1:-1;;;;;27168:25:0;;27042:12;27168:25;;;:19;:25;;;;;;27058:8;-1:-1:-1;;;27058:8:0;;;;;27057:9;;27168:25;;:52;;-1:-1:-1;;;;;;27197:23:0;;;;;;:19;:23;;;;;;;;27168:52;27165:99;;;-1:-1:-1;27247:5:0;27165:99;27293:10;;:12;;27304:1;27293:12;:::i;:::-;27278;:27;:43;;;;-1:-1:-1;27309:12:0;;;;27278:43;27274:263;;;27357:2;27338:16;:21;;;27387:1;27374:10;:14;;;27403:10;:14;;;27387:1;27448:29;;27387:1;;27448:29;:::i;:::-;:42;;;;:::i;:::-;27432:13;:58;27505:12;:20;;-1:-1:-1;;27505:20:0;;;27274:263;27560:12;27664:7;27661:905;;;-1:-1:-1;;;;;27715:15:0;;;;;;:11;:15;;;;;;;;:36;;;;;27750:1;27734:13;;:17;27715:36;27711:702;;;27778:34;27808:3;27778:25;27789:13;;27778:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;27771:41;;27867:13;;27854:10;;27847:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;27831:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;27947:13:0;;27928:16;;27921:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;27899:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;28015:13:0;;28002:10;;27995:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;27979:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;27711:702:0;;-1:-1:-1;27711:702:0;;-1:-1:-1;;;;;28089:17:0;;;;;;:11;:17;;;;;;;;:37;;;;;28125:1;28110:12;;:16;28089:37;28086:327;;;28154:33;28183:3;28154:24;28165:12;;28154:6;:10;;:24;;;;:::i;:33::-;28147:40;;28241:12;;28229:9;;28222:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;28206:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;28319:12:0;;28301:15;;28294:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;28272:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;28385:12:0;;28373:9;;28366:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;28350:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;28086:327:0;28433:8;;28430:93;;28465:42;28481:4;28495;28502;28465:15;:42::i;:::-;28540:14;28550:4;28540:14;;:::i;:::-;;;27661:905;28579:33;28595:4;28601:2;28605:6;28579:15;:33::i;:::-;24644:3976;;;;24531:4089;;;:::o;9553:193::-;9639:7;9675:12;9667:6;;;;9659:29;;;;-1:-1:-1;;;9659:29:0;;;;;;;;:::i;:::-;-1:-1:-1;9699:9:0;9711:5;9715:1;9711;:5;:::i;:::-;9699:17;9553:193;-1:-1:-1;;;;;9553:193:0:o;9223:182::-;9281:7;;9313:5;9317:1;9313;:5;:::i;:::-;9301:17;;9342:1;9337;:6;;9329:46;;;;-1:-1:-1;;;9329:46:0;;12400:2:1;9329:46:0;;;12382:21:1;12439:2;12419:18;;;12412:30;12478:29;12458:18;;;12451:57;12525:18;;9329:46:0;12198:351:1;9329:46:0;9396:1;9223:182;-1:-1:-1;;;9223:182:0:o;7286:575::-;-1:-1:-1;;;;;7426:20:0;;7418:70;;;;-1:-1:-1;;;7418:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7507:23:0;;7499:71;;;;-1:-1:-1;;;7499:71:0;;;;;;;:::i;:::-;7665;7687:6;7665:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7665:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7645:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7770:20;;;;;;;:32;;7795:6;7770:24;:32::i;:::-;-1:-1:-1;;;;;7747:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7818:35;2382:25:1;;;7747:20:0;;7818:35;;;;;;2355:18:1;7818:35:0;2236:177:1;30052:982:0;30091:23;30117:24;30135:4;30117:9;:24::i;:::-;30091:50;;30152:25;30201:12;;30180:18;;:33;;;;:::i;:::-;30152:61;-1:-1:-1;30224:12:0;30253:20;;;:46;;-1:-1:-1;30277:22:0;;30253:46;30250:60;;;30302:7;;;30052:982::o;30250:60::-;30344:21;;:26;;30368:2;30344:26;:::i;:::-;30326:15;:44;30323:117;;;30402:21;;:26;;30426:2;30402:26;:::i;:::-;30384:44;;30323:117;30453:33;30470:15;30453:16;:33::i;:::-;30501:18;30522:21;30501:42;;30555:17;30575:51;30608:17;30575:28;30590:12;;30575:10;:14;;:28;;;;:::i;:51::-;30555:71;;30637:17;30657:51;30690:17;30657:28;30672:12;;30657:10;:14;;:28;;;;:::i;:51::-;30743:1;30722:18;:22;;;30755:12;:16;;;30782:12;:16;;;30833:9;;30825:45;;30637:71;;-1:-1:-1;;;;;;30833:9:0;;30856;;30825:45;30743:1;30825:45;30856:9;30833;30825:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30902:9:0;;30894:45;;30812:58;;-1:-1:-1;;;;;;30902:9:0;;30925;;30894:45;;;;30925:9;30902;30894:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30971:15:0;;30963:63;;30881:58;;-1:-1:-1;;;;;;30971:15:0;;31000:21;;30963:63;;;;31000:21;30971:15;30963:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;30052:982:0:o;9752:252::-;9810:7;9834:1;9839;9834:6;9830:47;;-1:-1:-1;9864:1:0;9857:8;;9830:47;9890:9;9902:5;9906:1;9902;:5;:::i;:::-;9890:17;-1:-1:-1;9935:1:0;9926:5;9930:1;9890:17;9926:5;:::i;:::-;:10;9918:56;;;;-1:-1:-1;;;9918:56:0;;12966:2:1;9918:56:0;;;12948:21:1;13005:2;12985:18;;;12978:30;13044:34;13024:18;;;13017:62;-1:-1:-1;;;13095:18:1;;;13088:31;13136:19;;9918:56:0;12764:397:1;10010:132:0;10068:7;10095:39;10099:1;10102;10095:39;;;;;;;;;;;;;;;;;:3;:39::i;28629:597::-;28782:16;;;28796:1;28782:16;;;;;;;;28758:21;;28782:16;;;;;;;;;;-1:-1:-1;28782:16:0;28758:40;;28827:4;28809;28814:1;28809:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;28809:23:0;;;-1:-1:-1;;;;;28809:23:0;;;;;28853:15;-1:-1:-1;;;;;28853:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28843:4;28848:1;28843:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;28843:32:0;;;-1:-1:-1;;;;;28843:32:0;;;;;28889:62;28906:4;28921:15;28939:11;28889:8;:62::i;:::-;28991:224;;-1:-1:-1;;;28991:224:0;;-1:-1:-1;;;;;28991:15:0;:66;;;;:224;;29072:11;;29098:1;;29142:4;;29169;;29189:15;;28991:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28684:542;28629:597;:::o;10148:189::-;10234:7;10269:12;10262:5;10254:28;;;;-1:-1:-1;;;10254:28:0;;;;;;;;:::i;:::-;-1:-1:-1;10293:9:0;10305:5;10309:1;10305;:5;:::i;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;759:131::-;-1:-1:-1;;;;;834:31:1;;824:42;;814:70;;880:1;877;870:12;814:70;759:131;:::o;895:315::-;963:6;971;1024:2;1012:9;1003:7;999:23;995:32;992:52;;;1040:1;1037;1030:12;992:52;1079:9;1066:23;1098:31;1123:5;1098:31;:::i;:::-;1148:5;1200:2;1185:18;;;;1172:32;;-1:-1:-1;;;895:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1467:529::-;1544:6;1552;1560;1613:2;1601:9;1592:7;1588:23;1584:32;1581:52;;;1629:1;1626;1619:12;1581:52;1668:9;1655:23;1687:31;1712:5;1687:31;:::i;:::-;1737:5;-1:-1:-1;1794:2:1;1779:18;;1766:32;1807:33;1766:32;1807:33;:::i;:::-;1859:7;-1:-1:-1;1918:2:1;1903:18;;1890:32;1931:33;1890:32;1931:33;:::i;:::-;1983:7;1973:17;;;1467:529;;;;;:::o;2418:456::-;2495:6;2503;2511;2564:2;2552:9;2543:7;2539:23;2535:32;2532:52;;;2580:1;2577;2570:12;2532:52;2619:9;2606:23;2638:31;2663:5;2638:31;:::i;:::-;2688:5;-1:-1:-1;2745:2:1;2730:18;;2717:32;2758:33;2717:32;2758:33;:::i;:::-;2418:456;;2810:7;;-1:-1:-1;;;2864:2:1;2849:18;;;;2836:32;;2418:456::o;3276:160::-;3341:20;;3397:13;;3390:21;3380:32;;3370:60;;3426:1;3423;3416:12;3441:315;3506:6;3514;3567:2;3555:9;3546:7;3542:23;3538:32;3535:52;;;3583:1;3580;3573:12;3535:52;3622:9;3609:23;3641:31;3666:5;3641:31;:::i;:::-;3691:5;-1:-1:-1;3715:35:1;3746:2;3731:18;;3715:35;:::i;:::-;3705:45;;3441:315;;;;;:::o;3761:316::-;3838:6;3846;3854;3907:2;3895:9;3886:7;3882:23;3878:32;3875:52;;;3923:1;3920;3913:12;3875:52;-1:-1:-1;;3946:23:1;;;4016:2;4001:18;;3988:32;;-1:-1:-1;4067:2:1;4052:18;;;4039:32;;3761:316;-1:-1:-1;3761:316:1:o;4082:180::-;4138:6;4191:2;4179:9;4170:7;4166:23;4162:32;4159:52;;;4207:1;4204;4197:12;4159:52;4230:26;4246:9;4230:26;:::i;4267:180::-;4326:6;4379:2;4367:9;4358:7;4354:23;4350:32;4347:52;;;4395:1;4392;4385:12;4347:52;-1:-1:-1;4418:23:1;;4267:180;-1:-1:-1;4267:180:1:o;4452:388::-;4520:6;4528;4581:2;4569:9;4560:7;4556:23;4552:32;4549:52;;;4597:1;4594;4587:12;4549:52;4636:9;4623:23;4655:31;4680:5;4655:31;:::i;:::-;4705:5;-1:-1:-1;4762:2:1;4747:18;;4734:32;4775:33;4734:32;4775:33;:::i;:::-;4827:7;4817:17;;;4452:388;;;;;:::o;4845:356::-;5047:2;5029:21;;;5066:18;;;5059:30;5125:34;5120:2;5105:18;;5098:62;5192:2;5177:18;;4845:356::o;5818:306::-;5906:6;5914;5922;5975:2;5963:9;5954:7;5950:23;5946:32;5943:52;;;5991:1;5988;5981:12;5943:52;6020:9;6014:16;6004:26;;6070:2;6059:9;6055:18;6049:25;6039:35;;6114:2;6103:9;6099:18;6093:25;6083:35;;5818:306;;;;;:::o;6129:380::-;6208:1;6204:12;;;;6251;;;6272:61;;6326:4;6318:6;6314:17;6304:27;;6272:61;6379:2;6371:6;6368:14;6348:18;6345:38;6342:161;;6425:10;6420:3;6416:20;6413:1;6406:31;6460:4;6457:1;6450:15;6488:4;6485:1;6478:15;6342:161;;6129:380;;;:::o;6514:127::-;6575:10;6570:3;6566:20;6563:1;6556:31;6606:4;6603:1;6596:15;6630:4;6627:1;6620:15;6646:125;6711:9;;;6732:10;;;6729:36;;;6745:18;;:::i;6776:168::-;6849:9;;;6880;;6897:15;;;6891:22;;6877:37;6867:71;;6918:18;;:::i;6949:217::-;6989:1;7015;7005:132;;7059:10;7054:3;7050:20;7047:1;7040:31;7094:4;7091:1;7084:15;7122:4;7119:1;7112:15;7005:132;-1:-1:-1;7151:9:1;;6949:217::o;9229:401::-;9431:2;9413:21;;;9470:2;9450:18;;;9443:30;9509:34;9504:2;9489:18;;9482:62;-1:-1:-1;;;9575:2:1;9560:18;;9553:35;9620:3;9605:19;;9229:401::o;9635:399::-;9837:2;9819:21;;;9876:2;9856:18;;;9849:30;9915:34;9910:2;9895:18;;9888:62;-1:-1:-1;;;9981:2:1;9966:18;;9959:33;10024:3;10009:19;;9635:399::o;12065:128::-;12132:9;;;12153:11;;;12150:37;;;12167:18;;:::i;13298:127::-;13359:10;13354:3;13350:20;13347:1;13340:31;13390:4;13387:1;13380:15;13414:4;13411:1;13404:15;13430:251;13500:6;13553:2;13541:9;13532:7;13528:23;13524:32;13521:52;;;13569:1;13566;13559:12;13521:52;13601:9;13595:16;13620:31;13645:5;13620:31;:::i;13686:980::-;13948:4;13996:3;13985:9;13981:19;14027:6;14016:9;14009:25;14053:2;14091:6;14086:2;14075:9;14071:18;14064:34;14134:3;14129:2;14118:9;14114:18;14107:31;14158:6;14193;14187:13;14224:6;14216;14209:22;14262:3;14251:9;14247:19;14240:26;;14301:2;14293:6;14289:15;14275:29;;14322:1;14332:195;14346:6;14343:1;14340:13;14332:195;;;14411:13;;-1:-1:-1;;;;;14407:39:1;14395:52;;14502:15;;;;14467:12;;;;14443:1;14361:9;14332:195;;;-1:-1:-1;;;;;;;14583:32:1;;;;14578:2;14563:18;;14556:60;-1:-1:-1;;;14647:3:1;14632:19;14625:35;14544:3;13686:980;-1:-1:-1;;;13686:980:1:o
Swarm Source
ipfs://4b839f5991e74198f49d5ebdc45d2e743277bab335316c761bcacac66114f716
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.