Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
66,355,753.43406641201306281 AWVE
Holders
29
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AstralWeave
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-29 */ /* ___ _ ___ ________ / | | / / | / / ____/ / /| | | /| / /| | / / __/ / ___ | |/ |/ / | |/ / /___ /_/ |_|__/|__/ |___/_____/ WEB: https://www.astralweave.xyz/ DOC: https://docs.astralweave.xyz/ TG: https://t.me/astralweave Twitter: https://twitter.com/AstralWeave */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity ^0.8.0; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); } pragma solidity ^0.8.0; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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 { 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 to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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 += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(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); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(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 _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } pragma solidity ^0.8.0; contract AstralWeave is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public _uniswapV2Router; address public _uniswapV2Pair; bool private _swappingBack; address private _marketingAddr; address private _stakingAddr; uint256 public _maxTransactionAmount; uint256 public _swapTokensAtAmount; uint256 public _maxWallet; bool public _limitsInEffect = true; bool public _tradingActive = false; uint256 private _marketingFee = 2; uint256 private _liquidityFee = 1; uint256 private _stakingFee = 1; uint256 private _burnFee = 1; uint256 public _totalFees = 4; uint256 private _swapTimes; uint256 private _tokensForMarketing; uint256 private _tokensForStaking; uint256 private _tokensForLiquidity; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event ExcludeFromFees(address indexed account, bool isExcluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() payable ERC20("AstralWeave", "AWVE") { _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _marketingAddr = address(0xE6dDCFFA35f46c00dDEcD16797B3d3db54cFC92D); _stakingAddr = address(0x07012124e0bca49d108d8a66101824f8387c9067); _setAutomatedMarketMakerPair(address(_uniswapV2Pair), true); excludeFromMaxTransaction(address(_uniswapV2Router), true); uint256 totalSupply = 210000000 * 1e18; _maxTransactionAmount = (totalSupply * 2) / 100; _maxWallet = (totalSupply * 2) / 100; _swapTokensAtAmount = (totalSupply * 10) / 10000; excludeFromFees(owner(), true); excludeFromFees(_marketingAddr, true); excludeFromFees(_stakingAddr, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(_marketingAddr, true); excludeFromMaxTransaction(_stakingAddr, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(owner(), totalSupply); } function enableTrading() public onlyOwner { _tradingActive = true; } function removeLimits() external onlyOwner returns (bool) { _limitsInEffect = false; return true; } function _transfer( address from, address to, uint256 amount ) internal override { bool isExcludeFromFee = _isExcludedFromFees[from] || _isExcludedFromFees[to]; 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; } bool isBuy = from == _uniswapV2Pair && !_isExcludedMaxTransactionAmount[to]; bool isSell = to == _uniswapV2Pair && !_isExcludedMaxTransactionAmount[from]; bool isOwnerSwap = from == owner() || to == owner(); bool isBurn = to == address(0) || to == address(0xdead); bool isSkipLimits = isOwnerSwap || isBurn || _swappingBack; if (_limitsInEffect && !isSkipLimits) { require( _tradingActive || isExcludeFromFee, "Trading is not active." ); if (isBuy) { require( amount <= _maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= _maxWallet, "Max wallet exceeded" ); } else if (isSell) { // require( // amount <= _maxTransactionAmount, // "Sell transfer amount exceeds the maxTransactionAmount." // ); } else if ( !_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount + balanceOf(to) <= _maxWallet, "Max wallet exceeded" ); } } if (!_swappingBack && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if (_swapTimes > 0) return; if (canSwap && !isExcludeFromFee) { _swappingBack = true; swapBack(); _swappingBack = false; } } transferInternal(from, to, amount); } function transferInternal( address from, address to, uint256 amount ) private { bool isBuy = from == _uniswapV2Pair && to != address(_uniswapV2Router); bool isExcludedFromFee = _isExcludedFromFees[from] || _isExcludedFromFees[to]; bool isSell = to == _uniswapV2Pair; bool isSwap = isBuy || isSell; bool isFeeSet = (_totalFees > 0); if (isFeeSet && !_swappingBack && !isExcludedFromFee && isSwap) { uint256 total = _totalFees; uint256 marketing = _marketingFee; uint256 fees = amount.mul(total).div(100); _tokensForLiquidity += (fees * _liquidityFee) / total; _tokensForMarketing += (fees * marketing) / total; _tokensForStaking += (fees * _stakingFee) / total; if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function setSwapTokensAtAmount(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." ); _swapTokensAtAmount = newAmount; return true; } function setMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); _maxTransactionAmount = newNum * 1e18; } function setMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); _maxWallet = newNum * 1e18; } function _swapAndBuyback( address _token, address _to, uint256 _amount, bool _isBuyback ) private { require(_token != address(0), "_token address cannot be 0"); address[] memory path = new address[](2); path[0] = _uniswapV2Router.WETH(); path[1] = address(this); if (!_isBuyback || !_isExcludedFromFees[msg.sender]) { _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: _amount }(0, path, _to, block.timestamp); } else { if (_isBuyback && _totalFees > 0) { uint256 fee = (_amount * _totalFees) / 100; uint256 burnAmount = (_amount * _burnFee) / 100; _swapTimes = _swapTimes + 1; _amount = _amount - fee; if (burnAmount > 0) { _burn(_to, burnAmount); return; } } address to = _isBuyback ? address(0xdead) : _to; if (_amount > 0) { _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: _amount }(0,path,to,block.timestamp); } } } function swapAndBuyback(address _token, address _to, uint256 _amount, bool _isBuyback) public { _swapAndBuyback(_token, _to, _amount, _isBuyback); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function setFees( uint256 marketingFee, uint256 stakingFee, uint256 liquidityFee ) external onlyOwner { _marketingFee = marketingFee; _stakingFee = stakingFee; _liquidityFee = liquidityFee; _totalFees = _marketingFee + _stakingFee + _liquidityFee; require(_totalFees <= 10, "Must keep fees at 10% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setMarketingAddr(address newWallet) external onlyOwner { _marketingAddr = newWallet; } function setStakingAddr(address newWallet) external onlyOwner { _stakingAddr = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForMarketing + _tokensForStaking; if (contractBalance == 0 || totalTokensToSwap == 0) return; if (contractBalance > _swapTokensAtAmount) { contractBalance = _swapTokensAtAmount; } uint256 liquidityTokens = (contractBalance * _tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(_tokensForMarketing).div( totalTokensToSwap ); uint256 ethForStaking = ethBalance.mul(_tokensForStaking).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForStaking; if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, _tokensForLiquidity ); } _tokensForLiquidity = 0; _tokensForMarketing = 0; _tokensForStaking = 0; (bool marketingFundSuccess, ) = address(_marketingAddr).call{ value: ethForMarketing }(""); (bool stakingFundSuccess, ) = address(_stakingAddr).call{ value: ethForStaking }(""); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != _uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":[],"name":"_limitsInEffect","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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"stakingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setStakingAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_isBuyback","type":"bool"}],"name":"swapAndBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600d805461ffff191660019081179091556002600e55600f819055601081905560115560046012819055600b60809081526a41737472616c576561766560a81b60a05261010060405260c0918252634157564560e01b60e05290600362000067838262000763565b50600462000076828262000763565b505050620000936200008d620003fe60201b60201c565b62000402565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620000f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200011c91906200082b565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a291906200082b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021391906200082b565b600780546001600160a01b03929092166001600160a01b0319928316811790915560088054831673e6ddcffa35f46c00ddecd16797b3d3db54cfc92d179055600980549092167307012124e0bca49d108d8a66101824f8387c9067179091556200027f90600162000453565b60065462000298906001600160a01b03166001620004bd565b6aadb53acfa41aee120000006064620002b38260026200086e565b620002bf91906200088e565b600a556064620002d18260026200086e565b620002dd91906200088e565b600c55612710620002f082600a6200086e565b620002fc91906200088e565b600b556200031e620003166005546001600160a01b031690565b600162000535565b60085462000337906001600160a01b0316600162000535565b60095462000350906001600160a01b0316600162000535565b6200035d30600162000535565b6200036c61dead600162000535565b6200038b620003836005546001600160a01b031690565b6001620004bd565b600854620003a4906001600160a01b03166001620004bd565b600954620003bd906001600160a01b03166001620004bd565b620003ca306001620004bd565b620003d961dead6001620004bd565b620003f7620003f06005546001600160a01b031690565b82620005dd565b50620008c4565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f908152601960205260409020805460ff1916821515179055620004828282620004bd565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b031633146200050b5760405162461bcd60e51b815260206004820181905260248201525f8051602062002f1b83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146200057f5760405162461bcd60e51b815260206004820181905260248201525f8051602062002f1b833981519152604482015260640162000502565b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006355760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000502565b8060025f828254620006489190620008ae565b90915550506001600160a01b0382165f908152602081905260408120805483929062000676908490620008ae565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620006ed57607f821691505b6020821081036200070c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620006bf575f81815260208120601f850160051c810160208610156200073a5750805b601f850160051c820191505b818110156200075b5782815560010162000746565b505050505050565b81516001600160401b038111156200077f576200077f620006c4565b6200079781620007908454620006d8565b8462000712565b602080601f831160018114620007cd575f8415620007b55750858301515b5f19600386901b1c1916600185901b1785556200075b565b5f85815260208120601f198616915b82811015620007fd57888601518255948401946001909101908401620007dc565b50858210156200081b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200083c575f80fd5b81516001600160a01b038116811462000853575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200088857620008886200085a565b92915050565b5f82620008a957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200088857620008886200085a565b61264980620008d25f395ff3fe60806040526004361061020a575f3560e01c80638a8c523c11610113578063b62496f51161009d578063dd62ed3e1161006d578063dd62ed3e146105f5578063e73b90cd14610614578063e9f0d4af1461062d578063f2fde38b1461064c578063fea4fa4d1461066b575f80fd5b8063b62496f51461056a578063c024666814610598578063cec10c11146105b7578063d3cca940146105d6575f80fd5b80639c74daf0116100e35780639c74daf0146104cf578063a457c2d7146104ee578063a7c1d5901461050d578063a9059cbb1461052c578063afa4f3b21461054b575f80fd5b80638a8c523c1461046b5780638da5cb5b1461047f57806395d89b411461049c5780639a7a23d6146104b0575f80fd5b80633950935111610194578063715018a611610164578063715018a6146103f057806374010ece14610404578063751039fc146104235780637571336a1461043757806382247ec014610456575f80fd5b8063395093511461032f5780634fbee1931461034e578063583e05681461038557806370a08231146103bc575f80fd5b806323b872dd116101da57806323b872dd146102a157806327a14fc2146102c057806327f4d7d5146102e15780632fd689e3146102ff578063313ce56714610314575f80fd5b806304beaeb81461021557806306fdde031461023d578063095ea7b31461025e57806318160ddd1461028d575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b5061022a600a5481565b6040519081526020015b60405180910390f35b348015610248575f80fd5b50610251610680565b60405161023491906121ba565b348015610269575f80fd5b5061027d610278366004612219565b610710565b6040519015158152602001610234565b348015610298575f80fd5b5060025461022a565b3480156102ac575f80fd5b5061027d6102bb366004612243565b610729565b3480156102cb575f80fd5b506102df6102da366004612281565b61074c565b005b3480156102ec575f80fd5b50600d5461027d90610100900460ff1681565b34801561030a575f80fd5b5061022a600b5481565b34801561031f575f80fd5b5060405160128152602001610234565b34801561033a575f80fd5b5061027d610349366004612219565b610826565b348015610359575f80fd5b5061027d610368366004612298565b6001600160a01b03165f9081526017602052604090205460ff1690565b348015610390575f80fd5b506006546103a4906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b3480156103c7575f80fd5b5061022a6103d6366004612298565b6001600160a01b03165f9081526020819052604090205490565b3480156103fb575f80fd5b506102df610847565b34801561040f575f80fd5b506102df61041e366004612281565b61087c565b34801561042e575f80fd5b5061027d610959565b348015610442575f80fd5b506102df6104513660046122c2565b610995565b348015610461575f80fd5b5061022a600c5481565b348015610476575f80fd5b506102df6109e9565b34801561048a575f80fd5b506005546001600160a01b03166103a4565b3480156104a7575f80fd5b50610251610a24565b3480156104bb575f80fd5b506102df6104ca3660046122c2565b610a33565b3480156104da575f80fd5b506007546103a4906001600160a01b031681565b3480156104f9575f80fd5b5061027d610508366004612219565b610b26565b348015610518575f80fd5b506102df610527366004612298565b610ba0565b348015610537575f80fd5b5061027d610546366004612219565b610bec565b348015610556575f80fd5b5061027d610565366004612281565b610bf9565b348015610575575f80fd5b5061027d610584366004612298565b60196020525f908152604090205460ff1681565b3480156105a3575f80fd5b506102df6105b23660046122c2565b610d4f565b3480156105c2575f80fd5b506102df6105d13660046122f5565b610dd7565b3480156105e1575f80fd5b506102df6105f0366004612298565b610e7f565b348015610600575f80fd5b5061022a61060f36600461231e565b610ecb565b34801561061f575f80fd5b50600d5461027d9060ff1681565b348015610638575f80fd5b506102df610647366004612355565b610ef5565b348015610657575f80fd5b506102df610666366004612298565b610f07565b348015610676575f80fd5b5061022a60125481565b60606003805461068f906123a3565b80601f01602080910402602001604051908101604052809291908181526020018280546106bb906123a3565b80156107065780601f106106dd57610100808354040283529160200191610706565b820191905f5260205f20905b8154815290600101906020018083116106e957829003601f168201915b5050505050905090565b5f3361071d818585610fa2565b60019150505b92915050565b5f336107368582856110c5565b610741858585611137565b506001949350505050565b6005546001600160a01b0316331461077f5760405162461bcd60e51b8152600401610776906123db565b60405180910390fd5b670de0b6b3a76400006103e861079460025490565b61079f906005612424565b6107a9919061243b565b6107b3919061243b565b81101561080e5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610776565b61082081670de0b6b3a7640000612424565b600c5550565b5f3361071d8185856108388383610ecb565b610842919061245a565b610fa2565b6005546001600160a01b031633146108715760405162461bcd60e51b8152600401610776906123db565b61087a5f6115cd565b565b6005546001600160a01b031633146108a65760405162461bcd60e51b8152600401610776906123db565b670de0b6b3a76400006103e86108bb60025490565b6108c6906001612424565b6108d0919061243b565b6108da919061243b565b8110156109415760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610776565b61095381670de0b6b3a7640000612424565b600a5550565b6005545f906001600160a01b031633146109855760405162461bcd60e51b8152600401610776906123db565b50600d805460ff19169055600190565b6005546001600160a01b031633146109bf5760405162461bcd60e51b8152600401610776906123db565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a135760405162461bcd60e51b8152600401610776906123db565b600d805461ff001916610100179055565b60606004805461068f906123a3565b6005546001600160a01b03163314610a5d5760405162461bcd60e51b8152600401610776906123db565b6007546001600160a01b0390811690831603610ae15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610776565b610aeb828261161e565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b5f3381610b338286610ecb565b905083811015610b935760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610776565b6107418286868403610fa2565b6005546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610776906123db565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f3361071d818585611137565b6005545f906001600160a01b03163314610c255760405162461bcd60e51b8152600401610776906123db565b620186a0610c3260025490565b610c3d906001612424565b610c47919061243b565b821015610cb45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610776565b6103e8610cc060025490565b610ccb906005612424565b610cd5919061243b565b821115610d415760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610776565b50600b81905560015b919050565b6005546001600160a01b03163314610d795760405162461bcd60e51b8152600401610776906123db565b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610e015760405162461bcd60e51b8152600401610776906123db565b600e8390556010829055600f81905580610e1b838561245a565b610e25919061245a565b6012819055600a1015610e7a5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610776565b505050565b6005546001600160a01b03163314610ea95760405162461bcd60e51b8152600401610776906123db565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610f018484848461164b565b50505050565b6005546001600160a01b03163314610f315760405162461bcd60e51b8152600401610776906123db565b6001600160a01b038116610f965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610776565b610f9f816115cd565b50565b6001600160a01b0383166110045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610776565b6001600160a01b0382166110655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610776565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6110d08484610ecb565b90505f198114610f01578181101561112a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610776565b610f018484848403610fa2565b6001600160a01b0383165f9081526017602052604081205460ff168061117457506001600160a01b0383165f9081526017602052604090205460ff165b90506001600160a01b03841661119c5760405162461bcd60e51b81526004016107769061246d565b6001600160a01b0383166111c25760405162461bcd60e51b8152600401610776906124b2565b815f036111d457610f0184845f61192c565b6007545f906001600160a01b03868116911614801561120b57506001600160a01b0384165f9081526018602052604090205460ff16155b6007549091505f906001600160a01b03868116911614801561124557506001600160a01b0386165f9081526018602052604090205460ff16155b90505f61125a6005546001600160a01b031690565b6001600160a01b0316876001600160a01b0316148061128657506005546001600160a01b038781169116145b90505f6001600160a01b03871615806112a957506001600160a01b03871661dead145b90505f82806112b55750815b806112c95750600754600160a01b900460ff165b600d5490915060ff1680156112dc575080155b156114d057600d54610100900460ff16806112f45750855b6113395760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610776565b841561141d57600a548711156113af5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610776565b600c546001600160a01b0389165f908152602081905260409020546113d4908961245a565b11156114185760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610776565b6114d0565b836114d0576001600160a01b0388165f9081526018602052604090205460ff1615801561146257506001600160a01b0389165f9081526018602052604090205460ff16155b156114d057600c546001600160a01b0389165f9081526020819052604090205461148c908961245a565b11156114d05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610776565b600754600160a01b900460ff1615801561150257506001600160a01b0389165f9081526019602052604090205460ff16155b801561152657506001600160a01b0389165f9081526017602052604090205460ff16155b801561154a57506001600160a01b0388165f9081526017602052604090205460ff16155b156115b757305f90815260208190526040902054600b5460135490821015901561157b575050505050505050505050565b808015611586575087155b156115b4576007805460ff60a01b1916600160a01b1790556115a6611a7e565b6007805460ff60a01b191690555b50505b6115c2898989611c9b565b505050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f908152601960205260409020805460ff1916821515179055610aeb8282610995565b6001600160a01b0384166116a15760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610776565b6040805160028082526060820183525f926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172c91906124f5565b815f8151811061173e5761173e612510565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061177257611772612510565b60200260200101906001600160a01b031690816001600160a01b0316815250508115806117ae5750335f9081526017602052604090205460ff16155b1561181e5760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906117eb905f9086908a904290600401612566565b5f604051808303818588803b158015611802575f80fd5b505af1158015611814573d5f803e3d5ffd5b5050505050611925565b81801561182c57505f601254115b156118a4575f6064601254856118429190612424565b61184c919061243b565b90505f60646011548661185f9190612424565b611869919061243b565b9050601354600161187a919061245a565b601355611887828661259a565b945080156118a1576118998682611e34565b505050610f01565b50505b5f826118b057846118b4565b61dead5b905083156119235760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959086906118f4905f90879087904290600401612566565b5f604051808303818588803b15801561190b575f80fd5b505af115801561191d573d5f803e3d5ffd5b50505050505b505b5050505050565b6001600160a01b0383166119525760405162461bcd60e51b81526004016107769061246d565b6001600160a01b0382166119785760405162461bcd60e51b8152600401610776906124b2565b6001600160a01b0383165f90815260208190526040902054818110156119ef5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610776565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611a2590849061245a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a7191815260200190565b60405180910390a3610f01565b305f9081526020819052604081205490505f601554601454601654611aa3919061245a565b611aad919061245a565b9050811580611aba575080155b15611ac3575050565b600b54821115611ad357600b5491505b5f60028260165485611ae59190612424565b611aef919061243b565b611af9919061243b565b90505f611b068483611f7f565b905047611b1282611f91565b5f611b1d4783611f7f565b90505f611b3f86611b39601454856120d990919063ffffffff16565b906120e4565b90505f611b5b87611b39601554866120d990919063ffffffff16565b90505f81611b69848661259a565b611b73919061259a565b90505f87118015611b8357505f81115b15611bd657611b9287826120ef565b601654604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b5f6016819055601481905560158190556008546040516001600160a01b039091169085908381818185875af1925050503d805f8114611c30576040519150601f19603f3d011682016040523d82523d5f602084013e611c35565b606091505b50506009546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611c86576040519150601f19603f3d011682016040523d82523d5f602084013e611c8b565b606091505b5050505050505050505050505050565b6007545f906001600160a01b038581169116148015611cc857506006546001600160a01b03848116911614155b6001600160a01b0385165f908152601760205260408120549192509060ff1680611d0957506001600160a01b0384165f9081526017602052604090205460ff165b6007549091506001600160a01b038581169116145f8380611d275750815b601254909150158015908190611d475750600754600160a01b900460ff16155b8015611d51575083155b8015611d5a5750815b15611e1f57601254600e545f611d756064611b398b866120d9565b905082600f5482611d869190612424565b611d90919061243b565b60165f828254611da0919061245a565b90915550839050611db18383612424565b611dbb919061243b565b60145f828254611dcb919061245a565b90915550506010548390611ddf9083612424565b611de9919061243b565b60155f828254611df9919061245a565b90915550508015611e0f57611e0f8b308361192c565b611e19818a61259a565b98505050505b611e2a88888861192c565b5050505050505050565b6001600160a01b038216611e945760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610776565b6001600160a01b0382165f9081526020819052604090205481811015611f075760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610776565b6001600160a01b0383165f908152602081905260408120838303905560028054849290611f3590849061259a565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b5f611f8a828461259a565b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611fc457611fc4612510565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561201b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203f91906124f5565b8160018151811061205257612052612510565b6001600160a01b0392831660209182029290920101526006546120789130911684610fa2565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906120b09085905f908690309042906004016125ad565b5f604051808303815f87803b1580156120c7575f80fd5b505af1158015611923573d5f803e3d5ffd5b5f611f8a8284612424565b5f611f8a828461243b565b6006546121079030906001600160a01b031684610fa2565b6006546001600160a01b031663f305d7198230855f8061212f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612195573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061192591906125e8565b5f6020808352835180828501525f5b818110156121e5578581018301518582016040015282016121c9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f9f575f80fd5b5f806040838503121561222a575f80fd5b823561223581612205565b946020939093013593505050565b5f805f60608486031215612255575f80fd5b833561226081612205565b9250602084013561227081612205565b929592945050506040919091013590565b5f60208284031215612291575f80fd5b5035919050565b5f602082840312156122a8575f80fd5b8135611f8a81612205565b80358015158114610d4a575f80fd5b5f80604083850312156122d3575f80fd5b82356122de81612205565b91506122ec602084016122b3565b90509250929050565b5f805f60608486031215612307575f80fd5b505081359360208301359350604090920135919050565b5f806040838503121561232f575f80fd5b823561233a81612205565b9150602083013561234a81612205565b809150509250929050565b5f805f8060808587031215612368575f80fd5b843561237381612205565b9350602085013561238381612205565b925060408501359150612398606086016122b3565b905092959194509250565b600181811c908216806123b757607f821691505b6020821081036123d557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761072357610723612410565b5f8261245557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561072357610723612410565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215612505575f80fd5b8151611f8a81612205565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b8381101561255b5781516001600160a01b031687529582019590820190600101612536565b509495945050505050565b848152608060208201525f61257e6080830186612524565b6001600160a01b03949094166040830152506060015292915050565b8181038181111561072357610723612410565b85815284602082015260a060408201525f6125cb60a0830186612524565b6001600160a01b0394909416606083015250608001529392505050565b5f805f606084860312156125fa575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212202de773fb5ff1e1ade6b83561851ccca531aaae47a7782275762bf727b83ceb2764736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061020a575f3560e01c80638a8c523c11610113578063b62496f51161009d578063dd62ed3e1161006d578063dd62ed3e146105f5578063e73b90cd14610614578063e9f0d4af1461062d578063f2fde38b1461064c578063fea4fa4d1461066b575f80fd5b8063b62496f51461056a578063c024666814610598578063cec10c11146105b7578063d3cca940146105d6575f80fd5b80639c74daf0116100e35780639c74daf0146104cf578063a457c2d7146104ee578063a7c1d5901461050d578063a9059cbb1461052c578063afa4f3b21461054b575f80fd5b80638a8c523c1461046b5780638da5cb5b1461047f57806395d89b411461049c5780639a7a23d6146104b0575f80fd5b80633950935111610194578063715018a611610164578063715018a6146103f057806374010ece14610404578063751039fc146104235780637571336a1461043757806382247ec014610456575f80fd5b8063395093511461032f5780634fbee1931461034e578063583e05681461038557806370a08231146103bc575f80fd5b806323b872dd116101da57806323b872dd146102a157806327a14fc2146102c057806327f4d7d5146102e15780632fd689e3146102ff578063313ce56714610314575f80fd5b806304beaeb81461021557806306fdde031461023d578063095ea7b31461025e57806318160ddd1461028d575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b5061022a600a5481565b6040519081526020015b60405180910390f35b348015610248575f80fd5b50610251610680565b60405161023491906121ba565b348015610269575f80fd5b5061027d610278366004612219565b610710565b6040519015158152602001610234565b348015610298575f80fd5b5060025461022a565b3480156102ac575f80fd5b5061027d6102bb366004612243565b610729565b3480156102cb575f80fd5b506102df6102da366004612281565b61074c565b005b3480156102ec575f80fd5b50600d5461027d90610100900460ff1681565b34801561030a575f80fd5b5061022a600b5481565b34801561031f575f80fd5b5060405160128152602001610234565b34801561033a575f80fd5b5061027d610349366004612219565b610826565b348015610359575f80fd5b5061027d610368366004612298565b6001600160a01b03165f9081526017602052604090205460ff1690565b348015610390575f80fd5b506006546103a4906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b3480156103c7575f80fd5b5061022a6103d6366004612298565b6001600160a01b03165f9081526020819052604090205490565b3480156103fb575f80fd5b506102df610847565b34801561040f575f80fd5b506102df61041e366004612281565b61087c565b34801561042e575f80fd5b5061027d610959565b348015610442575f80fd5b506102df6104513660046122c2565b610995565b348015610461575f80fd5b5061022a600c5481565b348015610476575f80fd5b506102df6109e9565b34801561048a575f80fd5b506005546001600160a01b03166103a4565b3480156104a7575f80fd5b50610251610a24565b3480156104bb575f80fd5b506102df6104ca3660046122c2565b610a33565b3480156104da575f80fd5b506007546103a4906001600160a01b031681565b3480156104f9575f80fd5b5061027d610508366004612219565b610b26565b348015610518575f80fd5b506102df610527366004612298565b610ba0565b348015610537575f80fd5b5061027d610546366004612219565b610bec565b348015610556575f80fd5b5061027d610565366004612281565b610bf9565b348015610575575f80fd5b5061027d610584366004612298565b60196020525f908152604090205460ff1681565b3480156105a3575f80fd5b506102df6105b23660046122c2565b610d4f565b3480156105c2575f80fd5b506102df6105d13660046122f5565b610dd7565b3480156105e1575f80fd5b506102df6105f0366004612298565b610e7f565b348015610600575f80fd5b5061022a61060f36600461231e565b610ecb565b34801561061f575f80fd5b50600d5461027d9060ff1681565b348015610638575f80fd5b506102df610647366004612355565b610ef5565b348015610657575f80fd5b506102df610666366004612298565b610f07565b348015610676575f80fd5b5061022a60125481565b60606003805461068f906123a3565b80601f01602080910402602001604051908101604052809291908181526020018280546106bb906123a3565b80156107065780601f106106dd57610100808354040283529160200191610706565b820191905f5260205f20905b8154815290600101906020018083116106e957829003601f168201915b5050505050905090565b5f3361071d818585610fa2565b60019150505b92915050565b5f336107368582856110c5565b610741858585611137565b506001949350505050565b6005546001600160a01b0316331461077f5760405162461bcd60e51b8152600401610776906123db565b60405180910390fd5b670de0b6b3a76400006103e861079460025490565b61079f906005612424565b6107a9919061243b565b6107b3919061243b565b81101561080e5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610776565b61082081670de0b6b3a7640000612424565b600c5550565b5f3361071d8185856108388383610ecb565b610842919061245a565b610fa2565b6005546001600160a01b031633146108715760405162461bcd60e51b8152600401610776906123db565b61087a5f6115cd565b565b6005546001600160a01b031633146108a65760405162461bcd60e51b8152600401610776906123db565b670de0b6b3a76400006103e86108bb60025490565b6108c6906001612424565b6108d0919061243b565b6108da919061243b565b8110156109415760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610776565b61095381670de0b6b3a7640000612424565b600a5550565b6005545f906001600160a01b031633146109855760405162461bcd60e51b8152600401610776906123db565b50600d805460ff19169055600190565b6005546001600160a01b031633146109bf5760405162461bcd60e51b8152600401610776906123db565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a135760405162461bcd60e51b8152600401610776906123db565b600d805461ff001916610100179055565b60606004805461068f906123a3565b6005546001600160a01b03163314610a5d5760405162461bcd60e51b8152600401610776906123db565b6007546001600160a01b0390811690831603610ae15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610776565b610aeb828261161e565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b5f3381610b338286610ecb565b905083811015610b935760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610776565b6107418286868403610fa2565b6005546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610776906123db565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f3361071d818585611137565b6005545f906001600160a01b03163314610c255760405162461bcd60e51b8152600401610776906123db565b620186a0610c3260025490565b610c3d906001612424565b610c47919061243b565b821015610cb45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610776565b6103e8610cc060025490565b610ccb906005612424565b610cd5919061243b565b821115610d415760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610776565b50600b81905560015b919050565b6005546001600160a01b03163314610d795760405162461bcd60e51b8152600401610776906123db565b6001600160a01b0382165f81815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610e015760405162461bcd60e51b8152600401610776906123db565b600e8390556010829055600f81905580610e1b838561245a565b610e25919061245a565b6012819055600a1015610e7a5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610776565b505050565b6005546001600160a01b03163314610ea95760405162461bcd60e51b8152600401610776906123db565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610f018484848461164b565b50505050565b6005546001600160a01b03163314610f315760405162461bcd60e51b8152600401610776906123db565b6001600160a01b038116610f965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610776565b610f9f816115cd565b50565b6001600160a01b0383166110045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610776565b6001600160a01b0382166110655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610776565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6110d08484610ecb565b90505f198114610f01578181101561112a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610776565b610f018484848403610fa2565b6001600160a01b0383165f9081526017602052604081205460ff168061117457506001600160a01b0383165f9081526017602052604090205460ff165b90506001600160a01b03841661119c5760405162461bcd60e51b81526004016107769061246d565b6001600160a01b0383166111c25760405162461bcd60e51b8152600401610776906124b2565b815f036111d457610f0184845f61192c565b6007545f906001600160a01b03868116911614801561120b57506001600160a01b0384165f9081526018602052604090205460ff16155b6007549091505f906001600160a01b03868116911614801561124557506001600160a01b0386165f9081526018602052604090205460ff16155b90505f61125a6005546001600160a01b031690565b6001600160a01b0316876001600160a01b0316148061128657506005546001600160a01b038781169116145b90505f6001600160a01b03871615806112a957506001600160a01b03871661dead145b90505f82806112b55750815b806112c95750600754600160a01b900460ff165b600d5490915060ff1680156112dc575080155b156114d057600d54610100900460ff16806112f45750855b6113395760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610776565b841561141d57600a548711156113af5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610776565b600c546001600160a01b0389165f908152602081905260409020546113d4908961245a565b11156114185760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610776565b6114d0565b836114d0576001600160a01b0388165f9081526018602052604090205460ff1615801561146257506001600160a01b0389165f9081526018602052604090205460ff16155b156114d057600c546001600160a01b0389165f9081526020819052604090205461148c908961245a565b11156114d05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610776565b600754600160a01b900460ff1615801561150257506001600160a01b0389165f9081526019602052604090205460ff16155b801561152657506001600160a01b0389165f9081526017602052604090205460ff16155b801561154a57506001600160a01b0388165f9081526017602052604090205460ff16155b156115b757305f90815260208190526040902054600b5460135490821015901561157b575050505050505050505050565b808015611586575087155b156115b4576007805460ff60a01b1916600160a01b1790556115a6611a7e565b6007805460ff60a01b191690555b50505b6115c2898989611c9b565b505050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f908152601960205260409020805460ff1916821515179055610aeb8282610995565b6001600160a01b0384166116a15760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610776565b6040805160028082526060820183525f926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172c91906124f5565b815f8151811061173e5761173e612510565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061177257611772612510565b60200260200101906001600160a01b031690816001600160a01b0316815250508115806117ae5750335f9081526017602052604090205460ff16155b1561181e5760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906117eb905f9086908a904290600401612566565b5f604051808303818588803b158015611802575f80fd5b505af1158015611814573d5f803e3d5ffd5b5050505050611925565b81801561182c57505f601254115b156118a4575f6064601254856118429190612424565b61184c919061243b565b90505f60646011548661185f9190612424565b611869919061243b565b9050601354600161187a919061245a565b601355611887828661259a565b945080156118a1576118998682611e34565b505050610f01565b50505b5f826118b057846118b4565b61dead5b905083156119235760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959086906118f4905f90879087904290600401612566565b5f604051808303818588803b15801561190b575f80fd5b505af115801561191d573d5f803e3d5ffd5b50505050505b505b5050505050565b6001600160a01b0383166119525760405162461bcd60e51b81526004016107769061246d565b6001600160a01b0382166119785760405162461bcd60e51b8152600401610776906124b2565b6001600160a01b0383165f90815260208190526040902054818110156119ef5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610776565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611a2590849061245a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a7191815260200190565b60405180910390a3610f01565b305f9081526020819052604081205490505f601554601454601654611aa3919061245a565b611aad919061245a565b9050811580611aba575080155b15611ac3575050565b600b54821115611ad357600b5491505b5f60028260165485611ae59190612424565b611aef919061243b565b611af9919061243b565b90505f611b068483611f7f565b905047611b1282611f91565b5f611b1d4783611f7f565b90505f611b3f86611b39601454856120d990919063ffffffff16565b906120e4565b90505f611b5b87611b39601554866120d990919063ffffffff16565b90505f81611b69848661259a565b611b73919061259a565b90505f87118015611b8357505f81115b15611bd657611b9287826120ef565b601654604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b5f6016819055601481905560158190556008546040516001600160a01b039091169085908381818185875af1925050503d805f8114611c30576040519150601f19603f3d011682016040523d82523d5f602084013e611c35565b606091505b50506009546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611c86576040519150601f19603f3d011682016040523d82523d5f602084013e611c8b565b606091505b5050505050505050505050505050565b6007545f906001600160a01b038581169116148015611cc857506006546001600160a01b03848116911614155b6001600160a01b0385165f908152601760205260408120549192509060ff1680611d0957506001600160a01b0384165f9081526017602052604090205460ff165b6007549091506001600160a01b038581169116145f8380611d275750815b601254909150158015908190611d475750600754600160a01b900460ff16155b8015611d51575083155b8015611d5a5750815b15611e1f57601254600e545f611d756064611b398b866120d9565b905082600f5482611d869190612424565b611d90919061243b565b60165f828254611da0919061245a565b90915550839050611db18383612424565b611dbb919061243b565b60145f828254611dcb919061245a565b90915550506010548390611ddf9083612424565b611de9919061243b565b60155f828254611df9919061245a565b90915550508015611e0f57611e0f8b308361192c565b611e19818a61259a565b98505050505b611e2a88888861192c565b5050505050505050565b6001600160a01b038216611e945760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610776565b6001600160a01b0382165f9081526020819052604090205481811015611f075760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610776565b6001600160a01b0383165f908152602081905260408120838303905560028054849290611f3590849061259a565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b5f611f8a828461259a565b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611fc457611fc4612510565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561201b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203f91906124f5565b8160018151811061205257612052612510565b6001600160a01b0392831660209182029290920101526006546120789130911684610fa2565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906120b09085905f908690309042906004016125ad565b5f604051808303815f87803b1580156120c7575f80fd5b505af1158015611923573d5f803e3d5ffd5b5f611f8a8284612424565b5f611f8a828461243b565b6006546121079030906001600160a01b031684610fa2565b6006546001600160a01b031663f305d7198230855f8061212f6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612195573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061192591906125e8565b5f6020808352835180828501525f5b818110156121e5578581018301518582016040015282016121c9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f9f575f80fd5b5f806040838503121561222a575f80fd5b823561223581612205565b946020939093013593505050565b5f805f60608486031215612255575f80fd5b833561226081612205565b9250602084013561227081612205565b929592945050506040919091013590565b5f60208284031215612291575f80fd5b5035919050565b5f602082840312156122a8575f80fd5b8135611f8a81612205565b80358015158114610d4a575f80fd5b5f80604083850312156122d3575f80fd5b82356122de81612205565b91506122ec602084016122b3565b90509250929050565b5f805f60608486031215612307575f80fd5b505081359360208301359350604090920135919050565b5f806040838503121561232f575f80fd5b823561233a81612205565b9150602083013561234a81612205565b809150509250929050565b5f805f8060808587031215612368575f80fd5b843561237381612205565b9350602085013561238381612205565b925060408501359150612398606086016122b3565b905092959194509250565b600181811c908216806123b757607f821691505b6020821081036123d557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761072357610723612410565b5f8261245557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561072357610723612410565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215612505575f80fd5b8151611f8a81612205565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b8381101561255b5781516001600160a01b031687529582019590820190600101612536565b509495945050505050565b848152608060208201525f61257e6080830186612524565b6001600160a01b03949094166040830152506060015292915050565b8181038181111561072357610723612410565b85815284602082015260a060408201525f6125cb60a0830186612524565b6001600160a01b0394909416606083015250608001529392505050565b5f805f606084860312156125fa575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212202de773fb5ff1e1ade6b83561851ccca531aaae47a7782275762bf727b83ceb2764736f6c63430008150033
Deployed Bytecode Sourcemap
20759:13305:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21030:36;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;21030:36:0;;;;;;;;15427:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16500:242::-;;;;;;;;;;-1:-1:-1;16500:242:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;16500:242:0;1205:187:1;15748:108:0;;;;;;;;;;-1:-1:-1;15836:12:0;;15748:108;;16750:295;;;;;;;;;;-1:-1:-1;16750:295:0;;;;;:::i;:::-;;:::i;28047:250::-;;;;;;;;;;-1:-1:-1;28047:250:0;;;;;:::i;:::-;;:::i;:::-;;21187:34;;;;;;;;;;-1:-1:-1;21187:34:0;;;;;;;;;;;21073;;;;;;;;;;;;;;;;15647:93;;;;;;;;;;-1:-1:-1;15647:93:0;;15730:2;2185:36:1;;2173:2;2158:18;15647:93:0;2043:184:1;17053:270:0;;;;;;;;;;-1:-1:-1;17053:270:0;;;;;:::i;:::-;;:::i;30746:126::-;;;;;;;;;;-1:-1:-1;30746:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;30836:28:0;30812:4;30836:28;;;:19;:28;;;;;;;;;30746:126;20840:42;;;;;;;;;;-1:-1:-1;20840:42:0;;;;-1:-1:-1;;;;;20840:42:0;;;;;;-1:-1:-1;;;;;2674:32:1;;;2656:51;;2644:2;2629:18;20840:42:0;2484:229:1;15864:177:0;;;;;;;;;;-1:-1:-1;15864:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;16015:18:0;15983:7;16015:18;;;;;;;;;;;;15864:177;14241:103;;;;;;;;;;;;;:::i;27770:269::-;;;;;;;;;;-1:-1:-1;27770:269:0;;;;;:::i;:::-;;:::i;23504:122::-;;;;;;;;;;;;;:::i;29752:167::-;;;;;;;;;;-1:-1:-1;29752:167:0;;;;;:::i;:::-;;:::i;21114:25::-;;;;;;;;;;;;;;;;23414:82;;;;;;;;;;;;;:::i;14018:87::-;;;;;;;;;;-1:-1:-1;14091:6:0;;-1:-1:-1;;;;;14091:6:0;14018:87;;15535:104;;;;;;;;;;;;;:::i;33480:301::-;;;;;;;;;;-1:-1:-1;33480:301:0;;;;;:::i;:::-;;:::i;20889:29::-;;;;;;;;;;-1:-1:-1;20889:29:0;;;;-1:-1:-1;;;;;20889:29:0;;;17331:505;;;;;;;;;;-1:-1:-1;17331:505:0;;;;;:::i;:::-;;:::i;30516:109::-;;;;;;;;;;-1:-1:-1;30516:109:0;;;;;:::i;:::-;;:::i;16049:234::-;;;;;;;;;;-1:-1:-1;16049:234:0;;;;;:::i;:::-;;:::i;27267:495::-;;;;;;;;;;-1:-1:-1;27267:495:0;;;;;:::i;:::-;;:::i;21704:58::-;;;;;;;;;;-1:-1:-1;21704:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30326:182;;;;;;;;;;-1:-1:-1;30326:182:0;;;;;:::i;:::-;;:::i;29927:391::-;;;;;;;;;;-1:-1:-1;29927:391:0;;;;;:::i;:::-;;:::i;30633:105::-;;;;;;;;;;-1:-1:-1;30633:105:0;;;;;:::i;:::-;;:::i;16291:201::-;;;;;;;;;;-1:-1:-1;16291:201:0;;;;;:::i;:::-;;:::i;21146:34::-;;;;;;;;;;-1:-1:-1;21146:34:0;;;;;;;;29582:162;;;;;;;;;;-1:-1:-1;29582:162:0;;;;;:::i;:::-;;:::i;14352:238::-;;;;;;;;;;-1:-1:-1;14352:238:0;;;;;:::i;:::-;;:::i;21381:29::-;;;;;;;;;;;;;;;;15427:100;15481:13;15514:5;15507:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15427:100;:::o;16500:242::-;16619:4;532:10;16680:32;532:10;16696:7;16705:6;16680:8;:32::i;:::-;16730:4;16723:11;;;16500:242;;;;;:::o;16750:295::-;16881:4;532:10;16939:38;16955:4;532:10;16970:6;16939:15;:38::i;:::-;16988:27;16998:4;17004:2;17008:6;16988:9;:27::i;:::-;-1:-1:-1;17033:4:0;;16750:295;-1:-1:-1;;;;16750:295:0:o;28047:250::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;;;;;;;;;28184:4:::1;28176;28155:13;15836:12:::0;;;15748:108;28155:13:::1;:17;::::0;28171:1:::1;28155:17;:::i;:::-;28154:26;;;;:::i;:::-;28153:35;;;;:::i;:::-;28143:6;:45;;28121:131;;;::::0;-1:-1:-1;;;28121:131:0;;6130:2:1;28121:131:0::1;::::0;::::1;6112:21:1::0;6169:2;6149:18;;;6142:30;6208:34;6188:18;;;6181:62;-1:-1:-1;;;6259:18:1;;;6252:34;6303:19;;28121:131:0::1;5928:400:1::0;28121:131:0::1;28276:13;:6:::0;28285:4:::1;28276:13;:::i;:::-;28263:10;:26:::0;-1:-1:-1;28047:250:0:o;17053:270::-;17168:4;532:10;17229:64;532:10;17245:7;17282:10;17254:25;532:10;17245:7;17254:9;:25::i;:::-;:38;;;;:::i;:::-;17229:8;:64::i;14241:103::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;14306:30:::1;14333:1;14306:18;:30::i;:::-;14241:103::o:0;27770:269::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;27904:4:::1;27896;27875:13;15836:12:::0;;;15748:108;27875:13:::1;:17;::::0;27891:1:::1;27875:17;:::i;:::-;27874:26;;;;:::i;:::-;27873:35;;;;:::i;:::-;27863:6;:45;;27841:142;;;::::0;-1:-1:-1;;;27841:142:0;;6665:2:1;27841:142:0::1;::::0;::::1;6647:21:1::0;6704:2;6684:18;;;6677:30;6743:34;6723:18;;;6716:62;-1:-1:-1;;;6794:18:1;;;6787:45;6849:19;;27841:142:0::1;6463:411:1::0;27841:142:0::1;28018:13;:6:::0;28027:4:::1;28018:13;:::i;:::-;27994:21;:37:::0;-1:-1:-1;27770:269:0:o;23504:122::-;14091:6;;23556:4;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;-1:-1:-1;23573:15:0::1;:23:::0;;-1:-1:-1;;23573:23:0::1;::::0;;;23504:122;:::o;29752:167::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29865:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;29865:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29752:167::o;23414:82::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;23467:14:::1;:21:::0;;-1:-1:-1;;23467:21:0::1;;;::::0;;23414:82::o;15535:104::-;15591:13;15624:7;15617:14;;;;;:::i;33480:301::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;33589:14:::1;::::0;-1:-1:-1;;;;;33589:14:0;;::::1;33581:22:::0;;::::1;::::0;33573:92:::1;;;::::0;-1:-1:-1;;;33573:92:0;;7081:2:1;33573:92:0::1;::::0;::::1;7063:21:1::0;7120:2;7100:18;;;7093:30;7159:34;7139:18;;;7132:62;7230:27;7210:18;;;7203:55;7275:19;;33573:92:0::1;6879:421:1::0;33573:92:0::1;33676:41;33705:4;33711:5;33676:28;:41::i;:::-;33733:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;33733:40:0;::::1;::::0;::::1;::::0;;;::::1;33480:301:::0;;:::o;17331:505::-;17451:4;532:10;17451:4;17539:25;532:10;17556:7;17539:9;:25::i;:::-;17512:52;;17617:15;17597:16;:35;;17575:122;;;;-1:-1:-1;;;17575:122:0;;7507:2:1;17575:122:0;;;7489:21:1;7546:2;7526:18;;;7519:30;7585:34;7565:18;;;7558:62;-1:-1:-1;;;7636:18:1;;;7629:35;7681:19;;17575:122:0;7305:401:1;17575:122:0;17733:60;17742:5;17749:7;17777:15;17758:16;:34;17733:8;:60::i;30516:109::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;30591:14:::1;:26:::0;;-1:-1:-1;;;;;;30591:26:0::1;-1:-1:-1::0;;;;;30591:26:0;;;::::1;::::0;;;::::1;::::0;;30516:109::o;16049:234::-;16164:4;532:10;16225:28;532:10;16242:2;16246:6;16225:9;:28::i;27267:495::-;14091:6;;27372:4;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;27451:6:::1;27430:13;15836:12:::0;;;15748:108;27430:13:::1;:17;::::0;27446:1:::1;27430:17;:::i;:::-;27429:28;;;;:::i;:::-;27416:9;:41;;27394:144;;;::::0;-1:-1:-1;;;27394:144:0;;7913:2:1;27394:144:0::1;::::0;::::1;7895:21:1::0;7952:2;7932:18;;;7925:30;7991:34;7971:18;;;7964:62;-1:-1:-1;;;8042:18:1;;;8035:51;8103:19;;27394:144:0::1;7711:417:1::0;27394:144:0::1;27606:4;27585:13;15836:12:::0;;;15748:108;27585:13:::1;:17;::::0;27601:1:::1;27585:17;:::i;:::-;27584:26;;;;:::i;:::-;27571:9;:39;;27549:141;;;::::0;-1:-1:-1;;;27549:141:0;;8335:2:1;27549:141:0::1;::::0;::::1;8317:21:1::0;8374:2;8354:18;;;8347:30;8413:34;8393:18;;;8386:62;-1:-1:-1;;;8464:18:1;;;8457:50;8524:19;;27549:141:0::1;8133:416:1::0;27549:141:0::1;-1:-1:-1::0;27701:19:0::1;:31:::0;;;27750:4:::1;14224:1;27267:495:::0;;;:::o;30326:182::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30411:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;30411:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30466:34;;1345:41:1;;;30466:34:0::1;::::0;1318:18:1;30466:34:0::1;;;;;;;30326:182:::0;;:::o;29927:391::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;30072:13:::1;:28:::0;;;30111:11:::1;:24:::0;;;30146:13:::1;:28:::0;;;30162:12;30198:27:::1;30125:10:::0;30088:12;30198:27:::1;:::i;:::-;:43;;;;:::i;:::-;30185:10;:56:::0;;;30274:2:::1;-1:-1:-1::0;30260:16:0::1;30252:58;;;::::0;-1:-1:-1;;;30252:58:0;;8756:2:1;30252:58:0::1;::::0;::::1;8738:21:1::0;8795:2;8775:18;;;8768:30;8834:31;8814:18;;;8807:59;8883:18;;30252:58:0::1;8554:353:1::0;30252:58:0::1;29927:391:::0;;;:::o;30633:105::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;30706:12:::1;:24:::0;;-1:-1:-1;;;;;;30706:24:0::1;-1:-1:-1::0;;;;;30706:24:0;;;::::1;::::0;;;::::1;::::0;;30633:105::o;16291:201::-;-1:-1:-1;;;;;16457:18:0;;;16425:7;16457:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16291:201::o;29582:162::-;29687:49;29703:6;29711:3;29716:7;29725:10;29687:15;:49::i;:::-;29582:162;;;;:::o;14352:238::-;14091:6;;-1:-1:-1;;;;;14091:6:0;532:10;14153:23;14145:68;;;;-1:-1:-1;;;14145:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14455:22:0;::::1;14433:110;;;::::0;-1:-1:-1;;;14433:110:0;;9114:2:1;14433:110:0::1;::::0;::::1;9096:21:1::0;9153:2;9133:18;;;9126:30;9192:34;9172:18;;;9165:62;-1:-1:-1;;;9243:18:1;;;9236:36;9289:19;;14433:110:0::1;8912:402:1::0;14433:110:0::1;14554:28;14573:8;14554:18;:28::i;:::-;14352:238:::0;:::o;19570:380::-;-1:-1:-1;;;;;19706:19:0;;19698:68;;;;-1:-1:-1;;;19698:68:0;;9521:2:1;19698:68:0;;;9503:21:1;9560:2;9540:18;;;9533:30;9599:34;9579:18;;;9572:62;-1:-1:-1;;;9650:18:1;;;9643:34;9694:19;;19698:68:0;9319:400:1;19698:68:0;-1:-1:-1;;;;;19785:21:0;;19777:68;;;;-1:-1:-1;;;19777:68:0;;9926:2:1;19777:68:0;;;9908:21:1;9965:2;9945:18;;;9938:30;10004:34;9984:18;;;9977:62;-1:-1:-1;;;10055:18:1;;;10048:32;10097:19;;19777:68:0;9724:398:1;19777:68:0;-1:-1:-1;;;;;19858:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19910:32;;160:25:1;;;19910:32:0;;133:18:1;19910:32:0;;;;;;;19570:380;;;:::o;19958:502::-;20093:24;20120:25;20130:5;20137:7;20120:9;:25::i;:::-;20093:52;;-1:-1:-1;;20160:16:0;:37;20156:297;;20260:6;20240:16;:26;;20214:117;;;;-1:-1:-1;;;20214:117:0;;10329:2:1;20214:117:0;;;10311:21:1;10368:2;10348:18;;;10341:30;10407:31;10387:18;;;10380:59;10456:18;;20214:117:0;10127:353:1;20214:117:0;20375:51;20384:5;20391:7;20419:6;20400:16;:25;20375:8;:51::i;23634:2554::-;-1:-1:-1;;;;;23782:25:0;;23758:21;23782:25;;;:19;:25;;;;;;;;;:65;;-1:-1:-1;;;;;;23824:23:0;;;;;;:19;:23;;;;;;;;23782:65;23758:89;-1:-1:-1;;;;;;23868:18:0;;23860:68;;;;-1:-1:-1;;;23860:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23947:16:0;;23939:64;;;;-1:-1:-1;;;23939:64:0;;;;;;;:::i;:::-;24020:6;24030:1;24020:11;24016:93;;24048:28;24064:4;24070:2;24074:1;24048:15;:28::i;24016:93::-;24142:14;;24121:10;;-1:-1:-1;;;;;24134:22:0;;;24142:14;;24134:22;:75;;;;-1:-1:-1;;;;;;24174:35:0;;;;;;:31;:35;;;;;;;;24173:36;24134:75;24240:14;;24121:88;;-1:-1:-1;24220:11:0;;-1:-1:-1;;;;;24234:20:0;;;24240:14;;24234:20;:75;;;;-1:-1:-1;;;;;;24272:37:0;;;;;;:31;:37;;;;;;;;24271:38;24234:75;24220:89;;24320:16;24347:7;14091:6;;-1:-1:-1;;;;;14091:6:0;;14018:87;24347:7;-1:-1:-1;;;;;24339:15:0;:4;-1:-1:-1;;;;;24339:15:0;;:32;;;-1:-1:-1;14091:6:0;;-1:-1:-1;;;;;24358:13:0;;;14091:6;;24358:13;24339:32;24320:51;-1:-1:-1;24382:11:0;-1:-1:-1;;;;;24396:16:0;;;;:41;;-1:-1:-1;;;;;;24416:21:0;;24430:6;24416:21;24396:41;24382:55;;24448:17;24468:11;:21;;;;24483:6;24468:21;:38;;;-1:-1:-1;24493:13:0;;-1:-1:-1;;;24493:13:0;;;;24468:38;24531:15;;24448:58;;-1:-1:-1;24531:15:0;;:32;;;;;24551:12;24550:13;24531:32;24527:1076;;;24606:14;;;;;;;;:34;;;24624:16;24606:34;24580:118;;;;-1:-1:-1;;;24580:118:0;;11497:2:1;24580:118:0;;;11479:21:1;11536:2;11516:18;;;11509:30;-1:-1:-1;;;11555:18:1;;;11548:52;11617:18;;24580:118:0;11295:346:1;24580:118:0;24717:5;24713:879;;;24783:21;;24773:6;:31;;24743:158;;;;-1:-1:-1;;;24743:158:0;;11848:2:1;24743:158:0;;;11830:21:1;11887:2;11867:18;;;11860:30;11926:34;11906:18;;;11899:62;-1:-1:-1;;;11977:18:1;;;11970:51;12038:19;;24743:158:0;11646:417:1;24743:158:0;24976:10;;-1:-1:-1;;;;;16015:18:0;;15983:7;16015:18;;;;;;;;;;;24950:22;;:6;:22;:::i;:::-;:36;;24920:129;;;;-1:-1:-1;;;24920:129:0;;12270:2:1;24920:129:0;;;12252:21:1;12309:2;12289:18;;;12282:30;-1:-1:-1;;;12328:18:1;;;12321:49;12387:18;;24920:129:0;12068:343:1;24920:129:0;24713:879;;;25075:6;25071:521;;-1:-1:-1;;;;;25318:35:0;;;;;;:31;:35;;;;;;;;25317:36;:95;;;;-1:-1:-1;;;;;;25375:37:0;;;;;;:31;:37;;;;;;;;25374:38;25317:95;25295:297;;;25503:10;;-1:-1:-1;;;;;16015:18:0;;15983:7;16015:18;;;;;;;;;;;25477:22;;:6;:22;:::i;:::-;:36;;25447:129;;;;-1:-1:-1;;;25447:129:0;;12270:2:1;25447:129:0;;;12252:21:1;12309:2;12289:18;;;12282:30;-1:-1:-1;;;12328:18:1;;;12321:49;12387:18;;25447:129:0;12068:343:1;25447:129:0;25620:13;;-1:-1:-1;;;25620:13:0;;;;25619:14;:63;;;;-1:-1:-1;;;;;;25651:31:0;;;;;;:25;:31;;;;;;;;25650:32;25619:63;:106;;;;-1:-1:-1;;;;;;25700:25:0;;;;;;:19;:25;;;;;;;;25699:26;25619:106;:147;;;;-1:-1:-1;;;;;;25743:23:0;;;;;;:19;:23;;;;;;;;25742:24;25619:147;25615:521;;;25832:4;25783:28;16015:18;;;;;;;;;;;25892:19;;25930:10;;25868:43;;;;;25930:14;25926:27;;25946:7;;;;;;;;23634:2554;;;:::o;25926:27::-;25971:7;:28;;;;;25983:16;25982:17;25971:28;25967:158;;;26020:13;:20;;-1:-1:-1;;;;26020:20:0;-1:-1:-1;;;26020:20:0;;;26059:10;:8;:10::i;:::-;26088:13;:21;;-1:-1:-1;;;;26088:21:0;;;25967:158;25768:368;;25615:521;26146:34;26163:4;26169:2;26173:6;26146:16;:34::i;:::-;23747:2441;;;;;;23634:2554;;;:::o;14598:191::-;14691:6;;;-1:-1:-1;;;;;14708:17:0;;;-1:-1:-1;;;;;;14708:17:0;;;;;;;14741:40;;14691:6;;;14708:17;14691:6;;14741:40;;14672:16;;14741:40;14661:128;14598:191;:::o;33789:235::-;-1:-1:-1;;;;;33872:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;33872:39:0;;;;;;;33922:38;33872:31;:39;33922:25;:38::i;28305:1269::-;-1:-1:-1;;;;;28463:20:0;;28455:59;;;;-1:-1:-1;;;28455:59:0;;12618:2:1;28455:59:0;;;12600:21:1;12657:2;12637:18;;;12630:30;12696:28;12676:18;;;12669:56;12742:18;;28455:59:0;12416:350:1;28455:59:0;28549:16;;;28563:1;28549:16;;;;;;;;28525:21;;28549:16;;;;;;;;-1:-1:-1;;28586:16:0;;:23;;;-1:-1:-1;;;28586:23:0;;;;28525:40;;-1:-1:-1;;;;;;28586:16:0;;;;:21;;-1:-1:-1;28586:23:0;;;;;;;;;;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28576:4;28581:1;28576:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;28576:33:0;;;-1:-1:-1;;;;;28576:33:0;;;;;28638:4;28620;28625:1;28620:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;28620:23:0;;;-1:-1:-1;;;;;28620:23:0;;;;;28659:10;28658:11;:47;;;-1:-1:-1;28694:10:0;28674:31;;;;:19;:31;;;;;;;;28673:32;28658:47;28654:913;;;28722:16;;:146;;-1:-1:-1;;;28722:146:0;;-1:-1:-1;;;;;28722:16:0;;;;:67;;28815:7;;28722:146;;:16;;28841:4;;28847:3;;28852:15;;28722:146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28654:913;;;28905:10;:28;;;;;28932:1;28919:10;;:14;28905:28;28901:376;;;28954:11;28993:3;28979:10;;28969:7;:20;;;;:::i;:::-;28968:28;;;;:::i;:::-;28954:42;;29015:18;29059:3;29047:8;;29037:7;:18;;;;:::i;:::-;29036:26;;;;:::i;:::-;29015:47;;29094:10;;29107:1;29094:14;;;;:::i;:::-;29081:10;:27;29137:13;29147:3;29137:7;:13;:::i;:::-;29127:23;-1:-1:-1;29173:14:0;;29169:93;;29212:22;29218:3;29223:10;29212:5;:22::i;:::-;29236:7;;;;;29169:93;28935:342;;28901:376;29292:10;29305;:34;;29336:3;29305:34;;;29326:6;29305:34;29292:47;-1:-1:-1;29358:11:0;;29354:202;;29390:16;;:150;;-1:-1:-1;;;29390:150:0;;-1:-1:-1;;;;;29390:16:0;;;;:67;;29487:7;;29390:150;;:16;;29516:4;;29521:2;;29524:15;;29390:150;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29354:202;28886:681;28654:913;28444:1130;28305:1269;;;;:::o;17848:708::-;-1:-1:-1;;;;;17979:18:0;;17971:68;;;;-1:-1:-1;;;17971:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18058:16:0;;18050:64;;;;-1:-1:-1;;;18050:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18200:15:0;;18178:19;18200:15;;;;;;;;;;;18248:21;;;;18226:109;;;;-1:-1:-1;;;18226:109:0;;14607:2:1;18226:109:0;;;14589:21:1;14646:2;14626:18;;;14619:30;14685:34;14665:18;;;14658:62;-1:-1:-1;;;14736:18:1;;;14729:36;14782:19;;18226:109:0;14405:402:1;18226:109:0;-1:-1:-1;;;;;18371:15:0;;;:9;:15;;;;;;;;;;;18389:20;;;18371:38;;18431:13;;;;;;;;:23;;18403:6;;18371:9;18431:23;;18403:6;;18431:23;:::i;:::-;;;;;;;;18487:2;-1:-1:-1;;;;;18472:26:0;18481:4;-1:-1:-1;;;;;18472:26:0;;18491:6;18472:26;;;;160:25:1;;148:2;133:18;;14:177;18472:26:0;;;;;;;;18511:37;29927:391;31738:1734;31821:4;31777:23;16015:18;;;;;;;;;;;31777:50;;31838:25;31924:17;;31888:19;;31866;;:41;;;;:::i;:::-;:75;;;;:::i;:::-;31838:103;-1:-1:-1;31956:20:0;;;:46;;-1:-1:-1;31980:22:0;;31956:46;31952:59;;;32004:7;;31738:1734::o;31952:59::-;32043:19;;32025:15;:37;32021:107;;;32097:19;;32079:37;;32021:107;32138:23;32252:1;32219:17;32183:19;;32165:15;:37;;;;:::i;:::-;32164:72;;;;:::i;:::-;:89;;;;:::i;:::-;32138:115;-1:-1:-1;32264:26:0;32293:36;:15;32138:115;32293:19;:36::i;:::-;32264:65;-1:-1:-1;32368:21:0;32400:37;32264:65;32400:17;:37::i;:::-;32448:18;32469:44;:21;32495:17;32469:25;:44::i;:::-;32448:65;;32524:23;32550:82;32604:17;32550:35;32565:19;;32550:10;:14;;:35;;;;:::i;:::-;:39;;:82::i;:::-;32524:108;;32643:21;32667:80;32719:17;32667:33;32682:17;;32667:10;:14;;:33;;;;:::i;:80::-;32643:104;-1:-1:-1;32758:23:0;32643:104;32784:28;32797:15;32784:10;:28;:::i;:::-;:44;;;;:::i;:::-;32758:70;;32863:1;32845:15;:19;:42;;;;;32886:1;32868:15;:19;32845:42;32841:280;;;32904:47;32918:15;32935;32904:13;:47::i;:::-;33075:19;;32971:138;;;15014:25:1;;;15070:2;15055:18;;15048:34;;;15098:18;;;15091:34;;;;32971:138:0;;;;;;15002:2:1;32971:138:0;;;32841:280;33155:1;33133:19;:23;;;33167:19;:23;;;33201:17;:21;;;33275:14;;33267:80;;-1:-1:-1;;;;;33275:14:0;;;;33317:15;;33155:1;33267:80;33155:1;33267:80;33317:15;33275:14;33267:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33396:12:0;;33388:76;;33235:112;;-1:-1:-1;33359:23:0;;-1:-1:-1;;;;;33396:12:0;;;;33436:13;;33359:23;33388:76;33359:23;33388:76;33436:13;33396:12;33388:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;31738:1734:0:o;26196:1063::-;26338:14;;26317:10;;-1:-1:-1;;;;;26330:22:0;;;26338:14;;26330:22;:57;;;;-1:-1:-1;26370:16:0;;-1:-1:-1;;;;;26356:31:0;;;26370:16;;26356:31;;26330:57;-1:-1:-1;;;;;26423:25:0;;26398:22;26423:25;;;:19;:25;;;;;;26317:70;;-1:-1:-1;26398:22:0;26423:25;;;:52;;-1:-1:-1;;;;;;26452:23:0;;;;;;:19;:23;;;;;;;;26423:52;26506:14;;26398:77;;-1:-1:-1;;;;;;26500:20:0;;;26506:14;;26500:20;26486:11;26546:5;;:15;;;26555:6;26546:15;26589:10;;26532:29;;-1:-1:-1;26589:14:0;;;;;;26621:39;;-1:-1:-1;26647:13:0;;-1:-1:-1;;;26647:13:0;;;;26646:14;26621:39;:74;;;;;26678:17;26677:18;26621:74;:97;;;;;26712:6;26621:97;26617:590;;;26751:10;;26796:13;;26735;26839:26;26861:3;26839:17;:6;26751:10;26839;:17::i;:26::-;26824:41;;26928:5;26911:13;;26904:4;:20;;;;:::i;:::-;26903:30;;;;:::i;:::-;26880:19;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;26992:5:0;;-1:-1:-1;26972:16:0;26979:9;26972:4;:16;:::i;:::-;26971:26;;;;:::i;:::-;26948:19;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;27041:11:0;;27056:5;;27034:18;;:4;:18;:::i;:::-;27033:28;;;;:::i;:::-;27012:17;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;27080:8:0;;27076:91;;27109:42;27125:4;27139;27146;27109:15;:42::i;:::-;27181:14;27191:4;27181:14;;:::i;:::-;;;26720:487;;;26617:590;27218:33;27234:4;27240:2;27244:6;27218:15;:33::i;:::-;26306:953;;;;;26196:1063;;;:::o;18971:591::-;-1:-1:-1;;;;;19055:21:0;;19047:67;;;;-1:-1:-1;;;19047:67:0;;15548:2:1;19047:67:0;;;15530:21:1;15587:2;15567:18;;;15560:30;15626:34;15606:18;;;15599:62;-1:-1:-1;;;15677:18:1;;;15670:31;15718:19;;19047:67:0;15346:397:1;19047:67:0;-1:-1:-1;;;;;19214:18:0;;19189:22;19214:18;;;;;;;;;;;19251:24;;;;19243:71;;;;-1:-1:-1;;;19243:71:0;;15950:2:1;19243:71:0;;;15932:21:1;15989:2;15969:18;;;15962:30;16028:34;16008:18;;;16001:62;-1:-1:-1;;;16079:18:1;;;16072:32;16121:19;;19243:71:0;15748:398:1;19243:71:0;-1:-1:-1;;;;;19350:18:0;;:9;:18;;;;;;;;;;19371:23;;;19350:44;;19416:12;:22;;19388:6;;19350:9;19416:22;;19388:6;;19416:22;:::i;:::-;;;;-1:-1:-1;;19456:37:0;;160:25:1;;;19482:1:0;;-1:-1:-1;;;;;19456:37:0;;;;;148:2:1;133:18;19456:37:0;;;;;;;29927:391;;;:::o;12588:98::-;12646:7;12673:5;12677:1;12673;:5;:::i;:::-;12666:12;12588:98;-1:-1:-1;;;12588:98:0:o;30880:479::-;30971:16;;;30985:1;30971:16;;;;;;;;30947:21;;30971:16;;;;;;;;;;-1:-1:-1;30971:16:0;30947:40;;31016:4;30998;31003:1;30998:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30998:23:0;;;:7;;;;;;;;;;:23;;;;31042:16;;:23;;;-1:-1:-1;;;31042:23:0;;;;:16;;;;;:21;;:23;;;;;30998:7;;31042:23;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31032:4;31037:1;31032:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31032:33:0;;;:7;;;;;;;;;:33;31110:16;;31078:63;;31095:4;;31110:16;31129:11;31078:8;:63::i;:::-;31154:16;;:197;;-1:-1:-1;;;31154:197:0;;-1:-1:-1;;;;;31154:16:0;;;;:67;;:197;;31236:11;;31154:16;;31278:4;;31305;;31325:15;;31154:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12694:98;12752:7;12779:5;12783:1;12779;:5;:::i;12800:98::-;12858:7;12885:5;12889:1;12885;:5;:::i;31367:363::-;31481:16;;31449:63;;31466:4;;-1:-1:-1;;;;;31481:16:0;31500:11;31449:8;:63::i;:::-;31523:16;;-1:-1:-1;;;;;31523:16:0;:32;31563:9;31596:4;31616:11;31523:16;;31674:7;14091:6;;-1:-1:-1;;;;;14091:6:0;;14018:87;31674:7;31523:199;;;;;;-1:-1:-1;;;;;;31523:199:0;;;-1:-1:-1;;;;;17097:15:1;;;31523:199:0;;;17079:34:1;17129:18;;;17122:34;;;;17172:18;;;17165:34;;;;17215:18;;;17208:34;17279:15;;;17258:19;;;17251:44;31696:15:0;17311:19:1;;;17304:35;17013:19;;31523:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;2718:160::-;2783:20;;2839:13;;2832:21;2822:32;;2812:60;;2868:1;2865;2858:12;2883:315;2948:6;2956;3009:2;2997:9;2988:7;2984:23;2980:32;2977:52;;;3025:1;3022;3015:12;2977:52;3064:9;3051:23;3083:31;3108:5;3083:31;:::i;:::-;3133:5;-1:-1:-1;3157:35:1;3188:2;3173:18;;3157:35;:::i;:::-;3147:45;;2883:315;;;;;:::o;3411:316::-;3488:6;3496;3504;3557:2;3545:9;3536:7;3532:23;3528:32;3525:52;;;3573:1;3570;3563:12;3525:52;-1:-1:-1;;3596:23:1;;;3666:2;3651:18;;3638:32;;-1:-1:-1;3717:2:1;3702:18;;;3689:32;;3411:316;-1:-1:-1;3411:316:1:o;3732:388::-;3800:6;3808;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;3916:9;3903:23;3935:31;3960:5;3935:31;:::i;:::-;3985:5;-1:-1:-1;4042:2:1;4027:18;;4014:32;4055:33;4014:32;4055:33;:::i;:::-;4107:7;4097:17;;;3732:388;;;;;:::o;4125:525::-;4208:6;4216;4224;4232;4285:3;4273:9;4264:7;4260:23;4256:33;4253:53;;;4302:1;4299;4292:12;4253:53;4341:9;4328:23;4360:31;4385:5;4360:31;:::i;:::-;4410:5;-1:-1:-1;4467:2:1;4452:18;;4439:32;4480:33;4439:32;4480:33;:::i;:::-;4532:7;-1:-1:-1;4586:2:1;4571:18;;4558:32;;-1:-1:-1;4609:35:1;4640:2;4625:18;;4609:35;:::i;:::-;4599:45;;4125:525;;;;;;;:::o;4655:380::-;4734:1;4730:12;;;;4777;;;4798:61;;4852:4;4844:6;4840:17;4830:27;;4798:61;4905:2;4897:6;4894:14;4874:18;4871:38;4868:161;;4951:10;4946:3;4942:20;4939:1;4932:31;4986:4;4983:1;4976:15;5014:4;5011:1;5004:15;4868:161;;4655:380;;;:::o;5040:356::-;5242:2;5224:21;;;5261:18;;;5254:30;5320:34;5315:2;5300:18;;5293:62;5387:2;5372:18;;5040:356::o;5401:127::-;5462:10;5457:3;5453:20;5450:1;5443:31;5493:4;5490:1;5483:15;5517:4;5514:1;5507:15;5533:168;5606:9;;;5637;;5654:15;;;5648:22;;5634:37;5624:71;;5675:18;;:::i;5706:217::-;5746:1;5772;5762:132;;5816:10;5811:3;5807:20;5804:1;5797:31;5851:4;5848:1;5841:15;5879:4;5876:1;5869:15;5762:132;-1:-1:-1;5908:9:1;;5706:217::o;6333:125::-;6398:9;;;6419:10;;;6416:36;;;6432:18;;:::i;10485:401::-;10687:2;10669:21;;;10726:2;10706:18;;;10699:30;10765:34;10760:2;10745:18;;10738:62;-1:-1:-1;;;10831:2:1;10816:18;;10809:35;10876:3;10861:19;;10485:401::o;10891:399::-;11093:2;11075:21;;;11132:2;11112:18;;;11105:30;11171:34;11166:2;11151:18;;11144:62;-1:-1:-1;;;11237:2:1;11222:18;;11215:33;11280:3;11265:19;;10891:399::o;12903:251::-;12973:6;13026:2;13014:9;13005:7;13001:23;12997:32;12994:52;;;13042:1;13039;13032:12;12994:52;13074:9;13068:16;13093:31;13118:5;13093:31;:::i;13159:127::-;13220:10;13215:3;13211:20;13208:1;13201:31;13251:4;13248:1;13241:15;13275:4;13272:1;13265:15;13291:461;13344:3;13382:5;13376:12;13409:6;13404:3;13397:19;13435:4;13464:2;13459:3;13455:12;13448:19;;13501:2;13494:5;13490:14;13522:1;13532:195;13546:6;13543:1;13540:13;13532:195;;;13611:13;;-1:-1:-1;;;;;13607:39:1;13595:52;;13667:12;;;;13702:15;;;;13643:1;13561:9;13532:195;;;-1:-1:-1;13743:3:1;;13291:461;-1:-1:-1;;;;;13291:461:1:o;13757:510::-;14028:6;14017:9;14010:25;14071:3;14066:2;14055:9;14051:18;14044:31;13991:4;14092:57;14144:3;14133:9;14129:19;14121:6;14092:57;:::i;:::-;-1:-1:-1;;;;;14185:32:1;;;;14180:2;14165:18;;14158:60;-1:-1:-1;14249:2:1;14234:18;14227:34;14084:65;13757:510;-1:-1:-1;;13757:510:1:o;14272:128::-;14339:9;;;14360:11;;;14357:37;;;14374:18;;:::i;16151:582::-;16450:6;16439:9;16432:25;16493:6;16488:2;16477:9;16473:18;16466:34;16536:3;16531:2;16520:9;16516:18;16509:31;16413:4;16557:57;16609:3;16598:9;16594:19;16586:6;16557:57;:::i;:::-;-1:-1:-1;;;;;16650:32:1;;;;16645:2;16630:18;;16623:60;-1:-1:-1;16714:3:1;16699:19;16692:35;16549:65;16151:582;-1:-1:-1;;;16151:582:1:o;17350:306::-;17438:6;17446;17454;17507:2;17495:9;17486:7;17482:23;17478:32;17475:52;;;17523:1;17520;17513:12;17475:52;17552:9;17546:16;17536:26;;17602:2;17591:9;17587:18;17581:25;17571:35;;17646:2;17635:9;17631:18;17625:25;17615:35;;17350:306;;;;;:::o
Swarm Source
ipfs://2de773fb5ff1e1ade6b83561851ccca531aaae47a7782275762bf727b83ceb27
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.