Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 22 from a total of 22 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18021925 | 531 days ago | IN | 0 ETH | 0.00279345 | ||||
Approve | 18021922 | 531 days ago | IN | 0 ETH | 0.00273507 | ||||
Remove Limits | 18021920 | 531 days ago | IN | 0 ETH | 0.00137238 | ||||
Approve | 18021918 | 531 days ago | IN | 0 ETH | 0.00277356 | ||||
Change Tax | 18021917 | 531 days ago | IN | 0 ETH | 0.11997462 | ||||
Approve | 18021916 | 531 days ago | IN | 0 ETH | 0.00256323 | ||||
Approve | 18021916 | 531 days ago | IN | 0 ETH | 0.00288959 | ||||
Approve | 18021916 | 531 days ago | IN | 0 ETH | 0.00288959 | ||||
Approve | 18021916 | 531 days ago | IN | 0 ETH | 0.00288959 | ||||
Approve | 18021916 | 531 days ago | IN | 0 ETH | 0.00288959 | ||||
Approve | 18021916 | 531 days ago | IN | 0 ETH | 0.00288959 | ||||
Approve | 18021916 | 531 days ago | IN | 0 ETH | 0.00312271 | ||||
Add Initial Liqu... | 18021915 | 531 days ago | IN | 0 ETH | 0.01307772 | ||||
Approve | 18021756 | 531 days ago | IN | 0 ETH | 0.00316465 | ||||
Approve | 18021756 | 531 days ago | IN | 0 ETH | 0.00316465 | ||||
Approve | 18021756 | 531 days ago | IN | 0 ETH | 0.00316465 | ||||
Approve | 18021756 | 531 days ago | IN | 0 ETH | 0.00316465 | ||||
Approve | 18021756 | 531 days ago | IN | 0 ETH | 0.00316465 | ||||
Transfer | 18021751 | 531 days ago | IN | 5 ETH | 0.00115397 | ||||
Transfer | 18021750 | 531 days ago | IN | 0 ETH | 0.00326811 | ||||
Approve | 18021740 | 531 days ago | IN | 0 ETH | 0.00280506 | ||||
Clear Token Bala... | 18021736 | 531 days ago | IN | 0 ETH | 0.00365963 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BlockBot
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-29 */ /* ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀$$$$$$$\ $$\ $$\ $$$$$$$\ $$\ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣽⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀$$ __$$\ $$ | $$ | $$ __$$\ $$ | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣷⣶⣦⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀$$ | $$ |$$ | $$$$$$\ $$$$$$$\ $$ | $$\ $$ | $$ | $$$$$$\ $$$$$$\ ⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⡿⠿⠛⠛⠛⠻⢦⣤⣹⡲⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀$$$$$$$\ |$$ |$$ __$$\ $$ _____|$$ | $$ |$$$$$$$\ |$$ __$$\\_$$ _| ⠀⠀⠀⠀⠀⠀⢠⣴⡋⠀⠀⠀⣶⡄⠀⠀⣰⣦⠙⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀$$ __$$\ $$ |$$ / $$ |$$ / $$$$$$ / $$ __$$\ $$ / $$ | $$ | ⠀⠀⠀⠀⠀⠀⠘⣿⣧⠀⠀⠀⣿⣞⢀⣀⣻⡿⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀$$ | $$ |$$ |$$ | $$ |$$ | $$ _$$< $$ | $$ |$$ | $$ | $$ |$$\ ⠀⠀⠀⠀⠀⠀⠀⠈⢿⣷⠀⠈⠉⡅⠀⠀⢀⠌⢽⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀$$$$$$$ |$$ |\$$$$$$ |\$$$$$$$\ $$ | \$$\ $$$$$$$ |\$$$$$$ | \$$$$ | ⠀⠀⠀⠀⠀⠀⠀⠀⢘⣿⣀⠤⠤⠬⠵⠶⠥⠤⠬⢀⣀⡆⠀⠀⠀⠀⠀⠀⠀⠀\_______/ \__| \______/ \_______|\__| \__|\_______/ \______/ \____/ ⠀⠀⠀⠀⠀⠀⣀⠔⠻⡁⢠⣠⢤⣴⡒⠒⠒⢒⢴⠀⡜⠁⢀⡦⣲⡾⠹⣤⣀⢠ ⠀⠀⠀⠀⠀⢾⣧⠖⣒⣥⠀⡏⠀⢀⢠⠀⠀⢸⡄⢠⢻⢹⣿⠃⣿⠀⠀⣜⢯⡭ ⠀⠀⠀⢀⢀⣰⢿⣅⣀⡜⡇⢹⢣⡾⡜⡾⡾⢾⡇⢹⠘⠘⠛⠧⠘⠷⠚⠉⠐⠂Telegram: https://t.me/BlockBotETH ⠀⠀⣶⢿⠹⡽⣑⣿⣍⠀⢰⡀⡄⠁⠁⠀⠀⣸⠧⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⡀⠸⣿⡈⠷⣷⠂⠈⣿⡄⠀⡅⠵⠤⠄⠀⠀⠛⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀Twitter: https://twitter.com/BlockBotErc ⠮⡄⡉⡛⡖⠈⠀⠀⠘⠓⣖⡳⠖⡻⢻⣷⡒⠞⣍⣉⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠈⠁⠉⠁⠀⠀⢀⣾⣾⠏⡪⢵⠁⠀⠹⣗⡴⠉⠈⣦⡀⠀⢀⡀⢤⣄⣀⡀⠀Website: https://blockboterc.com/ ⠀⠀⠀⠀⠀⠀⠀⣸⣿⡙⠳⣾⡧⠀⠀⠀⣿⣀⣠⠞⠉⣳⠆⠁⡠⠔⣉⡬⡷⠁ ⠀⠀⠀⠀⠀⡴⢻⣿⠃⢉⠞⠛⠀⠀⠀⠀⠈⠛⢿⣶⡔⠁⡠⢊⣴⢾⢻⡝⠁⠀Platform: https://www.blockbot.chat/ ⠀⠀⠀⠀⢰⡇⠀⠉⠛⠉⡇⠀⠀⠀⠀⠀⠀⠀⠀⢻⢀⣼⣷⣿⣙⡤⠋⠀⠀⠀ ⠀⠀⠀⠀⢸⡇⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⠯⠟⠉⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠘⢿⠆⣐⣶⡿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀ */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BlockBot is ERC20, Ownable { string _name = "BLOCKBOT"; string _symbol = "BOT"; using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private isSwapping; uint256 public balance; address private marketingWallet; uint256 public maxTx; uint256 public swapTreshold; uint256 public maxWallet; bool public limitsActive = true; bool public shouldContractSellAll = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public tokensForLiquidity; uint256 public tokensForMarketing; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20(_name, _symbol) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 4; uint256 _buyLiquidityFee = 0; uint256 _sellMarketingFee = 4; uint256 _sellLiquidityFee = 0; uint256 totalSupply = 1000000 * 1e18; maxTx = totalSupply * 20 / 1000; // 2% maxWallet = totalSupply * 20 / 1000; // 2% swapTreshold = totalSupply * 1 / 1000; // 0.05% buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyTotalFees = buyMarketingFee + buyLiquidityFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellTotalFees = sellMarketingFee + sellLiquidityFee; marketingWallet = address(0x27d258917F4F171314f94563c2c0EFf7da7A7E5C); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(marketingWallet), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(marketingWallet), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(address(this), totalSupply); } receive() external payable { } function addInitialLiquidity() external onlyOwner{ uint256 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable marketingWallet, block.timestamp ); } function clearETH() external onlyOwner { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "ETH balance must be greater than 0"); (bool success,) = address(marketingWallet).call{value: ethBalance}(""); require(success, "Failed to clear ETH balance"); } function clearTokenBalance() external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(tokenBalance > 0, "Token balance must be greater than 0"); _transfer(address(this), marketingWallet, tokenBalance); } function removeLimits() external onlyOwner returns (bool){ limitsActive = false; return true; } function enableEmptyContract(bool enabled) external onlyOwner{ shouldContractSellAll = enabled; } // change the minimum amount of tokens to sell from fees function updateSwapTreshold(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."); swapTreshold = newAmount; return true; } function updateLimits(uint256 _maxTx, uint256 _maxWallet) external onlyOwner { require(_maxTx >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); require(_maxWallet >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxTx = _maxTx * (10**18); maxWallet = _maxWallet * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function changeTax( uint256 _liquidityBuyFee, uint256 _liquiditySellFee, uint256 _marketingBuyFee, uint256 _marketingSellFee ) external onlyOwner { buyLiquidityFee = _liquidityBuyFee; buyMarketingFee = _marketingBuyFee; buyTotalFees = buyLiquidityFee + buyMarketingFee; sellLiquidityFee = _liquiditySellFee; sellMarketingFee = _marketingSellFee; sellTotalFees = sellLiquidityFee + sellMarketingFee; require(buyTotalFees <= 99 && sellTotalFees <= 99, "Fees cannot be higher then 99%"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updatemarketingAddress(address newmarketingWallet) external onlyOwner{ emit marketingWalletUpdated(newmarketingWallet, marketingWallet); marketingWallet = newmarketingWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsActive){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !isSwapping ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTx, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTx, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTreshold; if( canSwap && !isSwapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { isSwapping = true; swapBack(); isSwapping = false; } bool takeFee = !isSwapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(shouldContractSellAll == false){ if(contractBalance > swapTreshold * 20){ contractBalance = swapTreshold * 20; } }else{ contractBalance = balanceOf(address(this)); } // Halve the amount of liquidity tokens 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 ethForLiquidity = ethBalance - ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","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":[],"name":"ManualNukeLP","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityBuyFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingBuyFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"}],"name":"changeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableEmptyContract","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":"limitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldContractSellAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketingWallet","type":"address"}],"name":"updatemarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
610100604052600860c090815267109313d0d2d093d560c21b60e0526006906200002a90826200089f565b506040805180820190915260038152621093d560ea1b60208201526007906200005490826200089f565b50600e805461ffff191660011790553480156200006f575f80fd5b50600680546200007f9062000814565b80601f0160208091040260200160405190810160405280929190818152602001828054620000ad9062000814565b8015620000fc5780601f10620000d257610100808354040283529160200191620000fc565b820191905f5260205f20905b815481529060010190602001808311620000de57829003601f168201915b505050505060078054620001109062000814565b80601f01602080910402602001604051908101604052809291908181526020018280546200013e9062000814565b80156200018d5780601f1062000163576101008083540402835291602001916200018d565b820191905f5260205f20905b8154815290600101906020018083116200016f57829003601f168201915b50505050508160039081620001a391906200089f565b506004620001b282826200089f565b5050505f620001c66200053760201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d620002358160016200053b565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200027e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a4919062000967565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000316919062000967565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000361573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000387919062000967565b6001600160a01b031660a0819052620003a29060016200053b565b60a051620003b2906001620005b3565b60045f818169d3c21bcecceda10000006103e8620003d2826014620009a3565b620003de9190620009bd565b600b556103e8620003f1826014620009a3565b620003fd9190620009bd565b600d556103e862000410826001620009a3565b6200041c9190620009bd565b600c5560108590556011849055620004358486620009dd565b600f55601383905560148290556200044e8284620009dd565b601255600a80546001600160a01b0319167327d258917f4f171314f94563c2c0eff7da7a7e5c179055620004966200048e6005546001600160a01b031690565b600162000606565b620004a330600162000606565b620004b261dead600162000606565b600a54620004cb906001600160a01b0316600162000606565b620004ea620004e26005546001600160a01b031690565b60016200053b565b620004f73060016200053b565b6200050661dead60016200053b565b600a546200051f906001600160a01b031660016200053b565b6200052b3082620006ae565b505050505050620009f3565b3390565b6005546001600160a01b03163314620005895760405162461bcd60e51b815260206004820181905260248201525f80516020620030f483398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6001600160a01b0382165f818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620006505760405162461bcd60e51b815260206004820181905260248201525f80516020620030f4833981519152604482015260640162000580565b6001600160a01b0382165f81815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620007065760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000580565b60025462000715908262000795565b6002556001600160a01b0382165f908152602081905260409020546200073c908262000795565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b5f80620007a38385620009dd565b905083811015620007f75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000580565b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200082957607f821691505b6020821081036200084857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000790575f81815260208120601f850160051c81016020861015620008765750805b601f850160051c820191505b81811015620008975782815560010162000882565b505050505050565b81516001600160401b03811115620008bb57620008bb62000800565b620008d381620008cc845462000814565b846200084e565b602080601f83116001811462000909575f8415620008f15750858301515b5f19600386901b1c1916600185901b17855562000897565b5f85815260208120601f198616915b82811015620009395788860151825594840194600190910190840162000918565b50858210156200095757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000978575f80fd5b81516001600160a01b0381168114620007f7575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620007fa57620007fa6200098f565b5f82620009d857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620007fa57620007fa6200098f565b60805160a0516126a762000a4d5f395f81816104870152610e2201525f8181610326015281816108210152818161086001528181611fab015281816120620152818161209e01528181612112015261214e01526126a75ff3fe60806040526004361061026d575f3560e01c8063751039fc1161014a578063a919a093116100be578063dd62ed3e11610078578063dd62ed3e14610724578063e52fb9ec14610768578063f11a24d31461077d578063f2fde38b14610792578063f6374342146107b1578063f8b45b05146107c6575f80fd5b8063a919a0931461066f578063b62496f51461068e578063b69ef8a8146106bc578063c0246668146106d1578063d1294d4c146106f0578063d85ba0631461070f575f80fd5b806395d89b411161010f57806395d89b41146105cb57806398252501146105df5780639a7a23d6146105f3578063a2240e1914610612578063a457c2d714610631578063a9059cbb14610650575f80fd5b8063751039fc146105515780637571336a146105655780637bce5a04146105845780638da5cb5b1461059957806392136913146105b6575f80fd5b80631f48e768116101e15780634fbee193116101a65780634fbee193146104a9578063616eb638146104e05780636a486a8e146104f457806370a0823114610509578063715018a6146105285780637437681e1461053c575f80fd5b80631f48e768146103fe57806323b872dd1461041d578063313ce5671461043c578063395093511461045757806349bd5a5e14610476575f80fd5b806318160ddd1161023257806318160ddd14610360578063184f5c6a1461037e5780631864217b1461039d5780631a8145bb146103bb5780631cce34ee146103d05780631f3fed8f146103e9575f80fd5b80630210a83d1461027857806306fdde031461028e578063095ea7b3146102b857806310d5de53146102e75780631694505e14610315575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c6107db565b005b348015610299575f80fd5b506102a26108eb565b6040516102af91906121bb565b60405180910390f35b3480156102c3575f80fd5b506102d76102d236600461221a565b61097b565b60405190151581526020016102af565b3480156102f2575f80fd5b506102d7610301366004612244565b60196020525f908152604090205460ff1681565b348015610320575f80fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102af565b34801561036b575f80fd5b506002545b6040519081526020016102af565b348015610389575f80fd5b5061028c61039836600461226e565b610991565b3480156103a8575f80fd5b50600e546102d790610100900460ff1681565b3480156103c6575f80fd5b5061037060155481565b3480156103db575f80fd5b50600e546102d79060ff1681565b3480156103f4575f80fd5b5061037060165481565b348015610409575f80fd5b5061028c610418366004612244565b6109d5565b348015610428575f80fd5b506102d7610437366004612287565b610a5b565b348015610447575f80fd5b50604051601281526020016102af565b348015610462575f80fd5b506102d761047136600461221a565b610ac2565b348015610481575f80fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b4575f80fd5b506102d76104c3366004612244565b6001600160a01b03165f9081526018602052604090205460ff1690565b3480156104eb575f80fd5b5061028c610af7565b3480156104ff575f80fd5b5061037060125481565b348015610514575f80fd5b50610370610523366004612244565b610c1e565b348015610533575f80fd5b5061028c610c38565b348015610547575f80fd5b50610370600b5481565b34801561055c575f80fd5b506102d7610cab565b348015610570575f80fd5b5061028c61057f3660046122c5565b610ce7565b34801561058f575f80fd5b5061037060105481565b3480156105a4575f80fd5b506005546001600160a01b0316610348565b3480156105c1575f80fd5b5061037060135481565b3480156105d6575f80fd5b506102a2610d3b565b3480156105ea575f80fd5b5061028c610d4a565b3480156105fe575f80fd5b5061028c61060d3660046122c5565b610df6565b34801561061d575f80fd5b5061028c61062c3660046122f8565b610ed1565b34801561063c575f80fd5b506102d761064b36600461221a565b611053565b34801561065b575f80fd5b506102d761066a36600461221a565b6110a0565b34801561067a575f80fd5b5061028c610689366004612318565b6110ac565b348015610699575f80fd5b506102d76106a8366004612244565b601a6020525f908152604090205460ff1681565b3480156106c7575f80fd5b5061037060095481565b3480156106dc575f80fd5b5061028c6106eb3660046122c5565b61116c565b3480156106fb575f80fd5b506102d761070a366004612347565b6111f4565b34801561071a575f80fd5b50610370600f5481565b34801561072f575f80fd5b5061037061073e36600461235e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610773575f80fd5b50610370600c5481565b348015610788575f80fd5b5061037060115481565b34801561079d575f80fd5b5061028c6107ac366004612244565b61134a565b3480156107bc575f80fd5b5061037060145481565b3480156107d1575f80fd5b50610370600d5481565b6005546001600160a01b0316331461080e5760405162461bcd60e51b815260040161080590612395565b60405180910390fd5b475f61081930610c1e565b9050610846307f0000000000000000000000000000000000000000000000000000000000000000836113cf565b600a5460405163f305d71960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263f305d7199286926108a392309288925f92839291169042906004016123ca565b60606040518083038185885af11580156108bf573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108e49190612405565b5050505050565b6060600380546108fa90612430565b80601f016020809104026020016040519081016040528092919081815260200182805461092690612430565b80156109715780601f1061094857610100808354040283529160200191610971565b820191905f5260205f20905b81548152906001019060200180831161095457829003601f168201915b5050505050905090565b5f6109873384846113cf565b5060015b92915050565b6005546001600160a01b031633146109bb5760405162461bcd60e51b815260040161080590612395565b600e80549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146109ff5760405162461bcd60e51b815260040161080590612395565b600a546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610a678484846114f3565b610ab88433610ab385604051806060016040528060288152602001612625602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190611aa5565b6113cf565b5060019392505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610987918590610ab39086611add565b6005546001600160a01b03163314610b215760405162461bcd60e51b815260040161080590612395565b4780610b7a5760405162461bcd60e51b815260206004820152602260248201527f4554482062616c616e6365206d7573742062652067726561746572207468616e604482015261020360f41b6064820152608401610805565b600a546040515f916001600160a01b03169083908381818185875af1925050503d805f8114610bc4576040519150601f19603f3d011682016040523d82523d5f602084013e610bc9565b606091505b5050905080610c1a5760405162461bcd60e51b815260206004820152601b60248201527f4661696c656420746f20636c656172204554482062616c616e636500000000006044820152606401610805565b5050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610c625760405162461bcd60e51b815260040161080590612395565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005545f906001600160a01b03163314610cd75760405162461bcd60e51b815260040161080590612395565b50600e805460ff19169055600190565b6005546001600160a01b03163314610d115760405162461bcd60e51b815260040161080590612395565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6060600480546108fa90612430565b6005546001600160a01b03163314610d745760405162461bcd60e51b815260040161080590612395565b5f610d7e30610c1e565b90505f8111610ddb5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e2062616c616e6365206d75737420626520677265617465722074686044820152630616e20360e41b6064820152608401610805565b600a54610df39030906001600160a01b0316836114f3565b50565b6005546001600160a01b03163314610e205760405162461bcd60e51b815260040161080590612395565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610ec75760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610805565b610c1a8282611b42565b6005546001600160a01b03163314610efb5760405162461bcd60e51b815260040161080590612395565b670de0b6b3a76400006103e8610f1060025490565b610f1b90600161247c565b610f259190612493565b610f2f9190612493565b821015610f965760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610805565b670de0b6b3a76400006103e8610fab60025490565b610fb690600561247c565b610fc09190612493565b610fca9190612493565b8110156110255760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610805565b61103782670de0b6b3a764000061247c565b600b5561104c81670de0b6b3a764000061247c565b600d555050565b5f6109873384610ab38560405180606001604052806025815260200161264d60259139335f9081526001602090815260408083206001600160a01b038d1684529091529020549190611aa5565b5f6109873384846114f3565b6005546001600160a01b031633146110d65760405162461bcd60e51b815260040161080590612395565b601184905560108290556110ea82856124b2565b600f556014839055601381905561110181846124b2565b601255600f5460631080159061111a5750606360125411155b6111665760405162461bcd60e51b815260206004820152601e60248201527f466565732063616e6e6f7420626520686967686572207468656e2039392500006044820152606401610805565b50505050565b6005546001600160a01b031633146111965760405162461bcd60e51b815260040161080590612395565b6001600160a01b0382165f81815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005545f906001600160a01b031633146112205760405162461bcd60e51b815260040161080590612395565b620186a061122d60025490565b61123890600161247c565b6112429190612493565b8210156112af5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610805565b6103e86112bb60025490565b6112c690600561247c565b6112d09190612493565b82111561133c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610805565b50600c81905560015b919050565b6005546001600160a01b031633146113745760405162461bcd60e51b815260040161080590612395565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166114315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610805565b6001600160a01b0382166114925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610805565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166115195760405162461bcd60e51b8152600401610805906124c5565b6001600160a01b03821661153f5760405162461bcd60e51b81526004016108059061250a565b805f036115565761155183835f611b95565b505050565b600e5460ff161561180d576005546001600160a01b0384811691161480159061158d57506005546001600160a01b03838116911614155b80156115a157506001600160a01b03821615155b80156115b857506001600160a01b03821661dead14155b80156115c7575060085460ff16155b1561180d576001600160a01b0383165f908152601a602052604090205460ff16801561160b57506001600160a01b0382165f9081526019602052604090205460ff16155b156116df57600b548111156116805760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610805565b600d5461168c83610c1e565b61169690836124b2565b11156116da5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610805565b61180d565b6001600160a01b0382165f908152601a602052604090205460ff16801561171e57506001600160a01b0383165f9081526019602052604090205460ff16155b1561179457600b548111156116da5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610805565b6001600160a01b0382165f9081526019602052604090205460ff1661180d57600d546117bf83610c1e565b6117c990836124b2565b111561180d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610805565b5f61181730610c1e565b600c5490915081108015908190611831575060085460ff16155b801561185557506001600160a01b0385165f908152601a602052604090205460ff16155b801561187957506001600160a01b0385165f9081526018602052604090205460ff16155b801561189d57506001600160a01b0384165f9081526018602052604090205460ff16155b156118c2576008805460ff191660011790556118b7611c9b565b6008805460ff191690555b6008546001600160a01b0386165f9081526018602052604090205460ff9182161591168061190757506001600160a01b0385165f9081526018602052604090205460ff165b1561190f57505f5b5f8115611a91576001600160a01b0386165f908152601a602052604090205460ff16801561193e57505f601254115b156119ca57611963606461195d60125488611e5690919063ffffffff16565b90611ed4565b905060125460145482611976919061247c565b6119809190612493565b60155f82825461199091906124b2565b90915550506012546013546119a5908361247c565b6119af9190612493565b60165f8282546119bf91906124b2565b90915550611a739050565b6001600160a01b0387165f908152601a602052604090205460ff1680156119f257505f600f54115b15611a7357611a11606461195d600f5488611e5690919063ffffffff16565b9050600f5460115482611a24919061247c565b611a2e9190612493565b60155f828254611a3e91906124b2565b9091555050600f54601054611a53908361247c565b611a5d9190612493565b60165f828254611a6d91906124b2565b90915550505b8015611a8457611a84873083611b95565b611a8e818661254d565b94505b611a9c878787611b95565b50505050505050565b5f8184841115611ac85760405162461bcd60e51b815260040161080591906121bb565b505f611ad4848661254d565b95945050505050565b5f80611ae983856124b2565b905083811015611b3b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610805565b9392505050565b6001600160a01b0382165f818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611bbb5760405162461bcd60e51b8152600401610805906124c5565b6001600160a01b038216611be15760405162461bcd60e51b81526004016108059061250a565b611c1d816040518060600160405280602681526020016125ff602691396001600160a01b0386165f908152602081905260409020549190611aa5565b6001600160a01b038085165f908152602081905260408082209390935590841681522054611c4b9082611add565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016114e6565b5f611ca530610c1e565b90505f601654601554611cb891906124b2565b90505f821580611cc6575081155b15611cd057505050565b600e54610100900460ff1615155f03611d0e57600c54611cf190601461247c565b831115611d0957600c54611d0690601461247c565b92505b611d1a565b611d1730610c1e565b92505b5f60028360155486611d2c919061247c565b611d369190612493565b611d409190612493565b90505f611d4d8583611f15565b905047611d5982611f56565b5f611d644783611f15565b90505f611d808761195d60165485611e5690919063ffffffff16565b90505f611d8d828461254d565b5f601581905560165590508515801590611da657505f81115b15611df957611db5868261210c565b601554604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b600a546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611e43576040519150601f19603f3d011682016040523d82523d5f602084013e611e48565b606091505b505050505050505050505050565b5f825f03611e6557505f61098b565b5f611e70838561247c565b905082611e7d8583612493565b14611b3b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610805565b5f611b3b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061218f565b5f611b3b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611aa5565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f8957611f89612560565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612005573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120299190612574565b8160018151811061203c5761203c612560565b60200260200101906001600160a01b031690816001600160a01b031681525050612087307f0000000000000000000000000000000000000000000000000000000000000000846113cf565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120db9085905f9086903090429060040161258f565b5f604051808303815f87803b1580156120f2575f80fd5b505af1158015612104573d5f803e3d5ffd5b505050505050565b612137307f0000000000000000000000000000000000000000000000000000000000000000846113cf565b60405163f305d71960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f305d7199083906108a390309087905f908190849042906004016123ca565b5f81836121af5760405162461bcd60e51b815260040161080591906121bb565b505f611ad48486612493565b5f6020808352835180828501525f5b818110156121e6578581018301518582016040015282016121ca565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610df3575f80fd5b5f806040838503121561222b575f80fd5b823561223681612206565b946020939093013593505050565b5f60208284031215612254575f80fd5b8135611b3b81612206565b80358015158114611345575f80fd5b5f6020828403121561227e575f80fd5b611b3b8261225f565b5f805f60608486031215612299575f80fd5b83356122a481612206565b925060208401356122b481612206565b929592945050506040919091013590565b5f80604083850312156122d6575f80fd5b82356122e181612206565b91506122ef6020840161225f565b90509250929050565b5f8060408385031215612309575f80fd5b50508035926020909101359150565b5f805f806080858703121561232b575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612357575f80fd5b5035919050565b5f806040838503121561236f575f80fd5b823561237a81612206565b9150602083013561238a81612206565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612417575f80fd5b8351925060208401519150604084015190509250925092565b600181811c9082168061244457607f821691505b60208210810361246257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761098b5761098b612468565b5f826124ad57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561098b5761098b612468565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561098b5761098b612468565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612584575f80fd5b8151611b3b81612206565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125dd5784516001600160a01b0316835293830193918301916001016125b8565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204e22b8439ae263e81cd8f945227ef763aca10936230bd1147be3f424742c3c6b64736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061026d575f3560e01c8063751039fc1161014a578063a919a093116100be578063dd62ed3e11610078578063dd62ed3e14610724578063e52fb9ec14610768578063f11a24d31461077d578063f2fde38b14610792578063f6374342146107b1578063f8b45b05146107c6575f80fd5b8063a919a0931461066f578063b62496f51461068e578063b69ef8a8146106bc578063c0246668146106d1578063d1294d4c146106f0578063d85ba0631461070f575f80fd5b806395d89b411161010f57806395d89b41146105cb57806398252501146105df5780639a7a23d6146105f3578063a2240e1914610612578063a457c2d714610631578063a9059cbb14610650575f80fd5b8063751039fc146105515780637571336a146105655780637bce5a04146105845780638da5cb5b1461059957806392136913146105b6575f80fd5b80631f48e768116101e15780634fbee193116101a65780634fbee193146104a9578063616eb638146104e05780636a486a8e146104f457806370a0823114610509578063715018a6146105285780637437681e1461053c575f80fd5b80631f48e768146103fe57806323b872dd1461041d578063313ce5671461043c578063395093511461045757806349bd5a5e14610476575f80fd5b806318160ddd1161023257806318160ddd14610360578063184f5c6a1461037e5780631864217b1461039d5780631a8145bb146103bb5780631cce34ee146103d05780631f3fed8f146103e9575f80fd5b80630210a83d1461027857806306fdde031461028e578063095ea7b3146102b857806310d5de53146102e75780631694505e14610315575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c6107db565b005b348015610299575f80fd5b506102a26108eb565b6040516102af91906121bb565b60405180910390f35b3480156102c3575f80fd5b506102d76102d236600461221a565b61097b565b60405190151581526020016102af565b3480156102f2575f80fd5b506102d7610301366004612244565b60196020525f908152604090205460ff1681565b348015610320575f80fd5b506103487f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102af565b34801561036b575f80fd5b506002545b6040519081526020016102af565b348015610389575f80fd5b5061028c61039836600461226e565b610991565b3480156103a8575f80fd5b50600e546102d790610100900460ff1681565b3480156103c6575f80fd5b5061037060155481565b3480156103db575f80fd5b50600e546102d79060ff1681565b3480156103f4575f80fd5b5061037060165481565b348015610409575f80fd5b5061028c610418366004612244565b6109d5565b348015610428575f80fd5b506102d7610437366004612287565b610a5b565b348015610447575f80fd5b50604051601281526020016102af565b348015610462575f80fd5b506102d761047136600461221a565b610ac2565b348015610481575f80fd5b506103487f00000000000000000000000034295e0dc93c897c4e8876fe65d7a4eb2d37a6dd81565b3480156104b4575f80fd5b506102d76104c3366004612244565b6001600160a01b03165f9081526018602052604090205460ff1690565b3480156104eb575f80fd5b5061028c610af7565b3480156104ff575f80fd5b5061037060125481565b348015610514575f80fd5b50610370610523366004612244565b610c1e565b348015610533575f80fd5b5061028c610c38565b348015610547575f80fd5b50610370600b5481565b34801561055c575f80fd5b506102d7610cab565b348015610570575f80fd5b5061028c61057f3660046122c5565b610ce7565b34801561058f575f80fd5b5061037060105481565b3480156105a4575f80fd5b506005546001600160a01b0316610348565b3480156105c1575f80fd5b5061037060135481565b3480156105d6575f80fd5b506102a2610d3b565b3480156105ea575f80fd5b5061028c610d4a565b3480156105fe575f80fd5b5061028c61060d3660046122c5565b610df6565b34801561061d575f80fd5b5061028c61062c3660046122f8565b610ed1565b34801561063c575f80fd5b506102d761064b36600461221a565b611053565b34801561065b575f80fd5b506102d761066a36600461221a565b6110a0565b34801561067a575f80fd5b5061028c610689366004612318565b6110ac565b348015610699575f80fd5b506102d76106a8366004612244565b601a6020525f908152604090205460ff1681565b3480156106c7575f80fd5b5061037060095481565b3480156106dc575f80fd5b5061028c6106eb3660046122c5565b61116c565b3480156106fb575f80fd5b506102d761070a366004612347565b6111f4565b34801561071a575f80fd5b50610370600f5481565b34801561072f575f80fd5b5061037061073e36600461235e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610773575f80fd5b50610370600c5481565b348015610788575f80fd5b5061037060115481565b34801561079d575f80fd5b5061028c6107ac366004612244565b61134a565b3480156107bc575f80fd5b5061037060145481565b3480156107d1575f80fd5b50610370600d5481565b6005546001600160a01b0316331461080e5760405162461bcd60e51b815260040161080590612395565b60405180910390fd5b475f61081930610c1e565b9050610846307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d836113cf565b600a5460405163f305d71960e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263f305d7199286926108a392309288925f92839291169042906004016123ca565b60606040518083038185885af11580156108bf573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108e49190612405565b5050505050565b6060600380546108fa90612430565b80601f016020809104026020016040519081016040528092919081815260200182805461092690612430565b80156109715780601f1061094857610100808354040283529160200191610971565b820191905f5260205f20905b81548152906001019060200180831161095457829003601f168201915b5050505050905090565b5f6109873384846113cf565b5060015b92915050565b6005546001600160a01b031633146109bb5760405162461bcd60e51b815260040161080590612395565b600e80549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146109ff5760405162461bcd60e51b815260040161080590612395565b600a546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610a678484846114f3565b610ab88433610ab385604051806060016040528060288152602001612625602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190611aa5565b6113cf565b5060019392505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610987918590610ab39086611add565b6005546001600160a01b03163314610b215760405162461bcd60e51b815260040161080590612395565b4780610b7a5760405162461bcd60e51b815260206004820152602260248201527f4554482062616c616e6365206d7573742062652067726561746572207468616e604482015261020360f41b6064820152608401610805565b600a546040515f916001600160a01b03169083908381818185875af1925050503d805f8114610bc4576040519150601f19603f3d011682016040523d82523d5f602084013e610bc9565b606091505b5050905080610c1a5760405162461bcd60e51b815260206004820152601b60248201527f4661696c656420746f20636c656172204554482062616c616e636500000000006044820152606401610805565b5050565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610c625760405162461bcd60e51b815260040161080590612395565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005545f906001600160a01b03163314610cd75760405162461bcd60e51b815260040161080590612395565b50600e805460ff19169055600190565b6005546001600160a01b03163314610d115760405162461bcd60e51b815260040161080590612395565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6060600480546108fa90612430565b6005546001600160a01b03163314610d745760405162461bcd60e51b815260040161080590612395565b5f610d7e30610c1e565b90505f8111610ddb5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e2062616c616e6365206d75737420626520677265617465722074686044820152630616e20360e41b6064820152608401610805565b600a54610df39030906001600160a01b0316836114f3565b50565b6005546001600160a01b03163314610e205760405162461bcd60e51b815260040161080590612395565b7f00000000000000000000000034295e0dc93c897c4e8876fe65d7a4eb2d37a6dd6001600160a01b0316826001600160a01b031603610ec75760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610805565b610c1a8282611b42565b6005546001600160a01b03163314610efb5760405162461bcd60e51b815260040161080590612395565b670de0b6b3a76400006103e8610f1060025490565b610f1b90600161247c565b610f259190612493565b610f2f9190612493565b821015610f965760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610805565b670de0b6b3a76400006103e8610fab60025490565b610fb690600561247c565b610fc09190612493565b610fca9190612493565b8110156110255760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610805565b61103782670de0b6b3a764000061247c565b600b5561104c81670de0b6b3a764000061247c565b600d555050565b5f6109873384610ab38560405180606001604052806025815260200161264d60259139335f9081526001602090815260408083206001600160a01b038d1684529091529020549190611aa5565b5f6109873384846114f3565b6005546001600160a01b031633146110d65760405162461bcd60e51b815260040161080590612395565b601184905560108290556110ea82856124b2565b600f556014839055601381905561110181846124b2565b601255600f5460631080159061111a5750606360125411155b6111665760405162461bcd60e51b815260206004820152601e60248201527f466565732063616e6e6f7420626520686967686572207468656e2039392500006044820152606401610805565b50505050565b6005546001600160a01b031633146111965760405162461bcd60e51b815260040161080590612395565b6001600160a01b0382165f81815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005545f906001600160a01b031633146112205760405162461bcd60e51b815260040161080590612395565b620186a061122d60025490565b61123890600161247c565b6112429190612493565b8210156112af5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610805565b6103e86112bb60025490565b6112c690600561247c565b6112d09190612493565b82111561133c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610805565b50600c81905560015b919050565b6005546001600160a01b031633146113745760405162461bcd60e51b815260040161080590612395565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166114315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610805565b6001600160a01b0382166114925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610805565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166115195760405162461bcd60e51b8152600401610805906124c5565b6001600160a01b03821661153f5760405162461bcd60e51b81526004016108059061250a565b805f036115565761155183835f611b95565b505050565b600e5460ff161561180d576005546001600160a01b0384811691161480159061158d57506005546001600160a01b03838116911614155b80156115a157506001600160a01b03821615155b80156115b857506001600160a01b03821661dead14155b80156115c7575060085460ff16155b1561180d576001600160a01b0383165f908152601a602052604090205460ff16801561160b57506001600160a01b0382165f9081526019602052604090205460ff16155b156116df57600b548111156116805760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610805565b600d5461168c83610c1e565b61169690836124b2565b11156116da5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610805565b61180d565b6001600160a01b0382165f908152601a602052604090205460ff16801561171e57506001600160a01b0383165f9081526019602052604090205460ff16155b1561179457600b548111156116da5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610805565b6001600160a01b0382165f9081526019602052604090205460ff1661180d57600d546117bf83610c1e565b6117c990836124b2565b111561180d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610805565b5f61181730610c1e565b600c5490915081108015908190611831575060085460ff16155b801561185557506001600160a01b0385165f908152601a602052604090205460ff16155b801561187957506001600160a01b0385165f9081526018602052604090205460ff16155b801561189d57506001600160a01b0384165f9081526018602052604090205460ff16155b156118c2576008805460ff191660011790556118b7611c9b565b6008805460ff191690555b6008546001600160a01b0386165f9081526018602052604090205460ff9182161591168061190757506001600160a01b0385165f9081526018602052604090205460ff165b1561190f57505f5b5f8115611a91576001600160a01b0386165f908152601a602052604090205460ff16801561193e57505f601254115b156119ca57611963606461195d60125488611e5690919063ffffffff16565b90611ed4565b905060125460145482611976919061247c565b6119809190612493565b60155f82825461199091906124b2565b90915550506012546013546119a5908361247c565b6119af9190612493565b60165f8282546119bf91906124b2565b90915550611a739050565b6001600160a01b0387165f908152601a602052604090205460ff1680156119f257505f600f54115b15611a7357611a11606461195d600f5488611e5690919063ffffffff16565b9050600f5460115482611a24919061247c565b611a2e9190612493565b60155f828254611a3e91906124b2565b9091555050600f54601054611a53908361247c565b611a5d9190612493565b60165f828254611a6d91906124b2565b90915550505b8015611a8457611a84873083611b95565b611a8e818661254d565b94505b611a9c878787611b95565b50505050505050565b5f8184841115611ac85760405162461bcd60e51b815260040161080591906121bb565b505f611ad4848661254d565b95945050505050565b5f80611ae983856124b2565b905083811015611b3b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610805565b9392505050565b6001600160a01b0382165f818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611bbb5760405162461bcd60e51b8152600401610805906124c5565b6001600160a01b038216611be15760405162461bcd60e51b81526004016108059061250a565b611c1d816040518060600160405280602681526020016125ff602691396001600160a01b0386165f908152602081905260409020549190611aa5565b6001600160a01b038085165f908152602081905260408082209390935590841681522054611c4b9082611add565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016114e6565b5f611ca530610c1e565b90505f601654601554611cb891906124b2565b90505f821580611cc6575081155b15611cd057505050565b600e54610100900460ff1615155f03611d0e57600c54611cf190601461247c565b831115611d0957600c54611d0690601461247c565b92505b611d1a565b611d1730610c1e565b92505b5f60028360155486611d2c919061247c565b611d369190612493565b611d409190612493565b90505f611d4d8583611f15565b905047611d5982611f56565b5f611d644783611f15565b90505f611d808761195d60165485611e5690919063ffffffff16565b90505f611d8d828461254d565b5f601581905560165590508515801590611da657505f81115b15611df957611db5868261210c565b601554604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b600a546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611e43576040519150601f19603f3d011682016040523d82523d5f602084013e611e48565b606091505b505050505050505050505050565b5f825f03611e6557505f61098b565b5f611e70838561247c565b905082611e7d8583612493565b14611b3b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610805565b5f611b3b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061218f565b5f611b3b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611aa5565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f8957611f89612560565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612005573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120299190612574565b8160018151811061203c5761203c612560565b60200260200101906001600160a01b031690816001600160a01b031681525050612087307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846113cf565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120db9085905f9086903090429060040161258f565b5f604051808303815f87803b1580156120f2575f80fd5b505af1158015612104573d5f803e3d5ffd5b505050505050565b612137307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846113cf565b60405163f305d71960e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063f305d7199083906108a390309087905f908190849042906004016123ca565b5f81836121af5760405162461bcd60e51b815260040161080591906121bb565b505f611ad48486612493565b5f6020808352835180828501525f5b818110156121e6578581018301518582016040015282016121ca565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610df3575f80fd5b5f806040838503121561222b575f80fd5b823561223681612206565b946020939093013593505050565b5f60208284031215612254575f80fd5b8135611b3b81612206565b80358015158114611345575f80fd5b5f6020828403121561227e575f80fd5b611b3b8261225f565b5f805f60608486031215612299575f80fd5b83356122a481612206565b925060208401356122b481612206565b929592945050506040919091013590565b5f80604083850312156122d6575f80fd5b82356122e181612206565b91506122ef6020840161225f565b90509250929050565b5f8060408385031215612309575f80fd5b50508035926020909101359150565b5f805f806080858703121561232b575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612357575f80fd5b5035919050565b5f806040838503121561236f575f80fd5b823561237a81612206565b9150602083013561238a81612206565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612417575f80fd5b8351925060208401519150604084015190509250925092565b600181811c9082168061244457607f821691505b60208210810361246257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761098b5761098b612468565b5f826124ad57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561098b5761098b612468565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561098b5761098b612468565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612584575f80fd5b8151611b3b81612206565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125dd5784516001600160a01b0316835293830193918301916001016125b8565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204e22b8439ae263e81cd8f945227ef763aca10936230bd1147be3f424742c3c6b64736f6c63430008140033
Deployed Bytecode Sourcemap
20056:13750:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24050:550;;;;;;;;;;;;;:::i;:::-;;7325:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8239:169;;;;;;;;;;-1:-1:-1;8239:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8239:169:0;1023:187:1;21111:64:0;;;;;;;;;;-1:-1:-1;21111:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20200:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;20200:51:0;1467:230:1;7646:108:0;;;;;;;;;;-1:-1:-1;7734:12:0;;7646:108;;;1848:25:1;;;1836:2;1821:18;7646:108:0;1702:177:1;25326:111:0;;;;;;;;;;-1:-1:-1;25326:111:0;;;;;:::i;:::-;;:::i;20539:41::-;;;;;;;;;;-1:-1:-1;20539:41:0;;;;;;;;;;;20814:33;;;;;;;;;;;;;;;;20501:31;;;;;;;;;;-1:-1:-1;20501:31:0;;;;;;;;20854:33;;;;;;;;;;;;;;;;27684:208;;;;;;;;;;-1:-1:-1;27684:208:0;;;;;:::i;:::-;;:::i;8416:355::-;;;;;;;;;;-1:-1:-1;8416:355:0;;;;;:::i;:::-;;:::i;7545:93::-;;;;;;;;;;-1:-1:-1;7545:93:0;;7628:2;2837:36:1;;2825:2;2810:18;7545:93:0;2695:184:1;8779:218:0;;;;;;;;;;-1:-1:-1;8779:218:0;;;;;:::i;:::-;;:::i;20258:38::-;;;;;;;;;;;;;;;27907:125;;;;;;;;;;-1:-1:-1;27907:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;27996:28:0;27972:4;27996:28;;;:19;:28;;;;;;;;;27907:125;24608:311;;;;;;;;;;;;;:::i;20700:28::-;;;;;;;;;;;;;;;;7762:127;;;;;;;;;;-1:-1:-1;7762:127:0;;;;;:::i;:::-;;:::i;13300:148::-;;;;;;;;;;;;;:::i;20406:20::-;;;;;;;;;;;;;;;;25199:118;;;;;;;;;;;;;:::i;26283:144::-;;;;;;;;;;-1:-1:-1;26283:144:0;;;;;:::i;:::-;;:::i;20623:30::-;;;;;;;;;;;;;;;;13086:79;;;;;;;;;;-1:-1:-1;13151:6:0;;-1:-1:-1;;;;;13151:6:0;13086:79;;20735:31;;;;;;;;;;;;;;;;7433:104;;;;;;;;;;;;;:::i;24927:256::-;;;;;;;;;;;;;:::i;27233:245::-;;;;;;;;;;-1:-1:-1;27233:245:0;;;;;:::i;:::-;;:::i;25892:382::-;;;;;;;;;;-1:-1:-1;25892:382:0;;;;;:::i;:::-;;:::i;9005:269::-;;;;;;;;;;-1:-1:-1;9005:269:0;;;;;:::i;:::-;;:::i;7897:175::-;;;;;;;;;;-1:-1:-1;7897:175:0;;;;;:::i;:::-;;:::i;26439:595::-;;;;;;;;;;-1:-1:-1;26439:595:0;;;;;:::i;:::-;;:::i;21334:58::-;;;;;;;;;;-1:-1:-1;21334:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20336:22;;;;;;;;;;;;;;;;27042:182;;;;;;;;;;-1:-1:-1;27042:182:0;;;;;:::i;:::-;;:::i;25509:374::-;;;;;;;;;;-1:-1:-1;25509:374:0;;;;;:::i;:::-;;:::i;20589:27::-;;;;;;;;;;;;;;;;8080:151;;;;;;;;;;-1:-1:-1;8080:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;8196:18:0;;;8169:7;8196:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8080:151;20433:27;;;;;;;;;;;;;;;;20660:30;;;;;;;;;;;;;;;;13456:169;;;;;;;;;;-1:-1:-1;13456:169:0;;;;;:::i;:::-;;:::i;20773:31::-;;;;;;;;;;;;;;;;20467:24;;;;;;;;;;;;;;;;24050:550;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;;;;;;;;;24140:21:::1;24120:17;24194:24;24212:4;24194:9;:24::i;:::-;24172:46;;24249:62;24266:4;24281:15;24299:11;24249:8;:62::i;:::-;24536:15;::::0;24324:268:::1;::::0;-1:-1:-1;;;24324:268:0;;-1:-1:-1;;;;;24324:15:0::1;:31:::0;::::1;::::0;::::1;::::0;24363:9;;24324:268:::1;::::0;24396:4:::1;::::0;24416:11;;24446:1:::1;::::0;;;24536:15;::::1;::::0;24566::::1;::::0;24324:268:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24099:501;;24050:550::o:0;7325:100::-;7379:13;7412:5;7405:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7325:100;:::o;8239:169::-;8322:4;8339:39;2758:10;8362:7;8371:6;8339:8;:39::i;:::-;-1:-1:-1;8396:4:0;8239:169;;;;;:::o;25326:111::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;25398:21:::1;:31:::0;;;::::1;;;;-1:-1:-1::0;;25398:31:0;;::::1;::::0;;;::::1;::::0;;25326:111::o;27684:208::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;27821:15:::1;::::0;27778:59:::1;::::0;-1:-1:-1;;;;;27821:15:0;;::::1;::::0;27778:59;::::1;::::0;::::1;::::0;27821:15:::1;::::0;27778:59:::1;27848:15;:36:::0;;-1:-1:-1;;;;;;27848:36:0::1;-1:-1:-1::0;;;;;27848:36:0;;;::::1;::::0;;;::::1;::::0;;27684:208::o;8416:355::-;8556:4;8573:36;8583:6;8591:9;8602:6;8573:9;:36::i;:::-;8620:121;8629:6;2758:10;8651:89;8689:6;8651:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8651:19:0;;;;;;:11;:19;;;;;;;;2758:10;8651:33;;;;;;;;;;:37;:89::i;:::-;8620:8;:121::i;:::-;-1:-1:-1;8759:4:0;8416:355;;;;;:::o;8779:218::-;2758:10;8867:4;8916:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8916:34:0;;;;;;;;;;8867:4;;8884:83;;8907:7;;8916:50;;8955:10;8916:38;:50::i;24608:311::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;24679:21:::1;24719:14:::0;24711:61:::1;;;::::0;-1:-1:-1;;;24711:61:0;;6504:2:1;24711:61:0::1;::::0;::::1;6486:21:1::0;6543:2;6523:18;;;6516:30;6582:34;6562:18;;;6555:62;-1:-1:-1;;;6633:18:1;;;6626:32;6675:19;;24711:61:0::1;6302:398:1::0;24711:61:0::1;24809:15;::::0;24801:52:::1;::::0;24784:12:::1;::::0;-1:-1:-1;;;;;24809:15:0::1;::::0;24838:10;;24784:12;24801:52;24784:12;24801:52;24838:10;24809:15;24801:52:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24783:70;;;24872:7;24864:47;;;::::0;-1:-1:-1;;;24864:47:0;;7117:2:1;24864:47:0::1;::::0;::::1;7099:21:1::0;7156:2;7136:18;;;7129:30;7195:29;7175:18;;;7168:57;7242:18;;24864:47:0::1;6915:351:1::0;24864:47:0::1;24647:272;;24608:311::o:0;7762:127::-;-1:-1:-1;;;;;7863:18:0;7836:7;7863:18;;;;;;;;;;;;7762:127::o;13300:148::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;13391:6:::1;::::0;13370:40:::1;::::0;13407:1:::1;::::0;-1:-1:-1;;;;;13391:6:0::1;::::0;13370:40:::1;::::0;13407:1;;13370:40:::1;13421:6;:19:::0;;-1:-1:-1;;;;;;13421:19:0::1;::::0;;13300:148::o;25199:118::-;13213:6;;25251:4;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;-1:-1:-1;25267:12:0::1;:20:::0;;-1:-1:-1;;25267:20:0::1;::::0;;;25199:118;:::o;26283:144::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26373:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;26373:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26283:144::o;7433:104::-;7489:13;7522:7;7515:14;;;;;:::i;24927:256::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;24986:20:::1;25009:24;25027:4;25009:9;:24::i;:::-;24986:47;;25067:1;25052:12;:16;25044:65;;;::::0;-1:-1:-1;;;25044:65:0;;7473:2:1;25044:65:0::1;::::0;::::1;7455:21:1::0;7512:2;7492:18;;;7485:30;7551:34;7531:18;;;7524:62;-1:-1:-1;;;7602:18:1;;;7595:34;7646:19;;25044:65:0::1;7271:400:1::0;25044:65:0::1;25145:15;::::0;25120:55:::1;::::0;25138:4:::1;::::0;-1:-1:-1;;;;;25145:15:0::1;25162:12:::0;25120:9:::1;:55::i;:::-;24975:208;24927:256::o:0;27233:245::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;27340:13:::1;-1:-1:-1::0;;;;;27332:21:0::1;:4;-1:-1:-1::0;;;;;27332:21:0::1;::::0;27324:91:::1;;;::::0;-1:-1:-1;;;27324:91:0;;7878:2:1;27324:91:0::1;::::0;::::1;7860:21:1::0;7917:2;7897:18;;;7890:30;7956:34;7936:18;;;7929:62;8027:27;8007:18;;;8000:55;8072:19;;27324:91:0::1;7676:421:1::0;27324:91:0::1;27429:41;27458:4;27464:5;27429:28;:41::i;25892:382::-:0;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;26025:4:::1;26019;25999:13;7734:12:::0;;;7646:108;25999:13:::1;:17;::::0;26015:1:::1;25999:17;:::i;:::-;:24;;;;:::i;:::-;25998:31;;;;:::i;:::-;25988:6;:41;;25980:101;;;::::0;-1:-1:-1;;;25980:101:0;;8831:2:1;25980:101:0::1;::::0;::::1;8813:21:1::0;8870:2;8850:18;;;8843:30;8909:34;8889:18;;;8882:62;-1:-1:-1;;;8960:18:1;;;8953:45;9015:19;;25980:101:0::1;8629:411:1::0;25980:101:0::1;26141:4;26135;26115:13;7734:12:::0;;;7646:108;26115:13:::1;:17;::::0;26131:1:::1;26115:17;:::i;:::-;:24;;;;:::i;:::-;26114:31;;;;:::i;:::-;26100:10;:45;;26092:94;;;::::0;-1:-1:-1;;;26092:94:0;;9247:2:1;26092:94:0::1;::::0;::::1;9229:21:1::0;9286:2;9266:18;;;9259:30;9325:34;9305:18;;;9298:62;-1:-1:-1;;;9376:18:1;;;9369:34;9420:19;;26092:94:0::1;9045:400:1::0;26092:94:0::1;26205:17;:6:::0;26215::::1;26205:17;:::i;:::-;26197:5;:25:::0;26245:21:::1;:10:::0;26259:6:::1;26245:21;:::i;:::-;26233:9;:33:::0;-1:-1:-1;;25892:382:0:o;9005:269::-;9098:4;9115:129;2758:10;9138:7;9147:96;9186:15;9147:96;;;;;;;;;;;;;;;;;2758:10;9147:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9147:34:0;;;;;;;;;;;;:38;:96::i;7897:175::-;7983:4;8000:42;2758:10;8024:9;8035:6;8000:9;:42::i;26439:595::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;26637:15:::1;:34:::0;;;26682:15:::1;:34:::0;;;26742:33:::1;26700:16:::0;26655;26742:33:::1;:::i;:::-;26727:12;:48:::0;26786:16:::1;:36:::0;;;26833:16:::1;:36:::0;;;26896:35:::1;26852:17:::0;26805;26896:35:::1;:::i;:::-;26880:13;:51:::0;26950:12:::1;::::0;26966:2:::1;-1:-1:-1::0;26950:18:0;::::1;::::0;:41:::1;;;26989:2;26972:13;;:19;;26950:41;26942:84;;;::::0;-1:-1:-1;;;26942:84:0;;9782:2:1;26942:84:0::1;::::0;::::1;9764:21:1::0;9821:2;9801:18;;;9794:30;9860:32;9840:18;;;9833:60;9910:18;;26942:84:0::1;9580:354:1::0;26942:84:0::1;26439:595:::0;;;;:::o;27042:182::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27127:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;27127:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;27182:34;;1163:41:1;;;27182:34:0::1;::::0;1136:18:1;27182:34:0::1;;;;;;;27042:182:::0;;:::o;25509:374::-;13213:6;;25584:4;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;25641:6:::1;25621:13;7734:12:::0;;;7646:108;25621:13:::1;:17;::::0;25637:1:::1;25621:17;:::i;:::-;:26;;;;:::i;:::-;25608:9;:39;;25600:105;;;::::0;-1:-1:-1;;;25600:105:0;;10141:2:1;25600:105:0::1;::::0;::::1;10123:21:1::0;10180:2;10160:18;;;10153:30;10219:34;10199:18;;;10192:62;-1:-1:-1;;;10270:18:1;;;10263:51;10331:19;;25600:105:0::1;9939:417:1::0;25600:105:0::1;25757:4;25737:13;7734:12:::0;;;7646:108;25737:13:::1;:17;::::0;25753:1:::1;25737:17;:::i;:::-;:24;;;;:::i;:::-;25724:9;:37;;25716:102;;;::::0;-1:-1:-1;;;25716:102:0;;10563:2:1;25716:102:0::1;::::0;::::1;10545:21:1::0;10602:2;10582:18;;;10575:30;10641:34;10621:18;;;10614:62;-1:-1:-1;;;10692:18:1;;;10685:50;10752:19;;25716:102:0::1;10361:416:1::0;25716:102:0::1;-1:-1:-1::0;25829:12:0::1;:24:::0;;;25871:4:::1;13283:1;25509:374:::0;;;:::o;13456:169::-;13213:6;;-1:-1:-1;;;;;13213:6:0;2758:10;13213:22;13205:67;;;;-1:-1:-1;;;13205:67:0;;;;;;;:::i;:::-;13572:6:::1;::::0;13551:38:::1;::::0;-1:-1:-1;;;;;13551:38:0;;::::1;::::0;13572:6:::1;::::0;13551:38:::1;::::0;13572:6:::1;::::0;13551:38:::1;13600:6;:17:::0;;-1:-1:-1;;;;;;13600:17:0::1;-1:-1:-1::0;;;;;13600:17:0;;;::::1;::::0;;;::::1;::::0;;13456:169::o;10681:381::-;-1:-1:-1;;;;;10817:19:0;;10809:68;;;;-1:-1:-1;;;10809:68:0;;10984:2:1;10809:68:0;;;10966:21:1;11023:2;11003:18;;;10996:30;11062:34;11042:18;;;11035:62;-1:-1:-1;;;11113:18:1;;;11106:34;11157:19;;10809:68:0;10782:400:1;10809:68:0;-1:-1:-1;;;;;10896:21:0;;10888:68;;;;-1:-1:-1;;;10888:68:0;;11389:2:1;10888:68:0;;;11371:21:1;11428:2;11408:18;;;11401:30;11467:34;11447:18;;;11440:62;-1:-1:-1;;;11518:18:1;;;11511:32;11560:19;;10888:68:0;11187:398:1;10888:68:0;-1:-1:-1;;;;;10970:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11022:32;;1848:25:1;;;11022:32:0;;1821:18:1;11022:32:0;;;;;;;;10681:381;;;:::o;28041:3117::-;-1:-1:-1;;;;;28173:18:0;;28165:68;;;;-1:-1:-1;;;28165:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28252:16:0;;28244:64;;;;-1:-1:-1;;;28244:64:0;;;;;;;:::i;:::-;28323:6;28333:1;28323:11;28320:92;;28351:28;28367:4;28373:2;28377:1;28351:15;:28::i;:::-;28041:3117;;;:::o;28320:92::-;28428:12;;;;28425:1052;;;13151:6;;-1:-1:-1;;;;;28478:15:0;;;13151:6;;28478:15;;;;:49;;-1:-1:-1;13151:6:0;;-1:-1:-1;;;;;28514:13:0;;;13151:6;;28514:13;;28478:49;:86;;;;-1:-1:-1;;;;;;28548:16:0;;;;28478:86;:128;;;;-1:-1:-1;;;;;;28585:21:0;;28599:6;28585:21;;28478:128;:160;;;;-1:-1:-1;28628:10:0;;;;28627:11;28478:160;28456:1010;;;-1:-1:-1;;;;;28722:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;28758:35:0;;;;;;:31;:35;;;;;;;;28757:36;28722:71;28718:733;;;28840:5;;28830:6;:15;;28822:81;;;;-1:-1:-1;;;28822:81:0;;12602:2:1;28822:81:0;;;12584:21:1;12641:2;12621:18;;;12614:30;12680:34;12660:18;;;12653:62;-1:-1:-1;;;12731:18:1;;;12724:51;12792:19;;28822:81:0;12400:417:1;28822:81:0;28964:9;;28947:13;28957:2;28947:9;:13::i;:::-;28938:22;;:6;:22;:::i;:::-;:35;;28930:67;;;;-1:-1:-1;;;28930:67:0;;13024:2:1;28930:67:0;;;13006:21:1;13063:2;13043:18;;;13036:30;-1:-1:-1;;;13082:18:1;;;13075:49;13141:18;;28930:67:0;12822:343:1;28930:67:0;28718:733;;;-1:-1:-1;;;;;29076:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;29110:37:0;;;;;;:31;:37;;;;;;;;29109:38;29076:71;29072:379;;;29194:5;;29184:6;:15;;29176:82;;;;-1:-1:-1;;;29176:82:0;;13372:2:1;29176:82:0;;;13354:21:1;13411:2;13391:18;;;13384:30;13450:34;13430:18;;;13423:62;-1:-1:-1;;;13501:18:1;;;13494:52;13563:19;;29176:82:0;13170:418:1;29072:379:0;-1:-1:-1;;;;;29305:35:0;;;;;;:31;:35;;;;;;;;29301:150;;29398:9;;29381:13;29391:2;29381:9;:13::i;:::-;29372:22;;:6;:22;:::i;:::-;:35;;29364:67;;;;-1:-1:-1;;;29364:67:0;;13024:2:1;29364:67:0;;;13006:21:1;13063:2;13043:18;;;13036:30;-1:-1:-1;;;13082:18:1;;;13075:49;13141:18;;29364:67:0;12822:343:1;29364:67:0;29490:28;29521:24;29539:4;29521:9;:24::i;:::-;29598:12;;29490:55;;-1:-1:-1;29574:36:0;;;;;;;29642:35;;-1:-1:-1;29667:10:0;;;;29666:11;29642:35;:84;;;;-1:-1:-1;;;;;;29695:31:0;;;;;;:25;:31;;;;;;;;29694:32;29642:84;:127;;;;-1:-1:-1;;;;;;29744:25:0;;;;;;:19;:25;;;;;;;;29743:26;29642:127;:168;;;;-1:-1:-1;;;;;;29787:23:0;;;;;;:19;:23;;;;;;;;29786:24;29642:168;29624:306;;;29837:10;:17;;-1:-1:-1;;29837:17:0;29850:4;29837:17;;;29872:10;:8;:10::i;:::-;29900;:18;;-1:-1:-1;;29900:18:0;;;29624:306;29959:10;;-1:-1:-1;;;;;30071:25:0;;29943:12;30071:25;;;:19;:25;;;;;;29959:10;;;;29958:11;;30071:25;;:52;;-1:-1:-1;;;;;;30100:23:0;;;;;;:19;:23;;;;;;;;30071:52;30068:99;;;-1:-1:-1;30150:5:0;30068:99;30180:12;30284:7;30281:823;;;-1:-1:-1;;;;;30335:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;30384:1;30368:13;;:17;30335:50;30331:620;;;30412:34;30442:3;30412:25;30423:13;;30412:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;30405:41;;30513:13;;30494:16;;30487:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30465:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;30593:13:0;;30574:16;;30567:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;30545:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;30331:620:0;;-1:-1:-1;30331:620:0;;-1:-1:-1;;;;;30667:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;30717:1;30702:12;;:16;30667:51;30664:287;;;30746:33;30775:3;30746:24;30757:12;;30746:6;:10;;:24;;;;:::i;:33::-;30739:40;;30845:12;;30827:15;;30820:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;30798:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;30923:12:0;;30905:15;;30898:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;30876:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;30664:287:0;30971:8;;30968:93;;31003:42;31019:4;31033;31040;31003:15;:42::i;:::-;31078:14;31088:4;31078:14;;:::i;:::-;;;30281:823;31117:33;31133:4;31139:2;31143:6;31117:15;:33::i;:::-;28154:3004;;;;28041:3117;;;:::o;11563:193::-;11649:7;11685:12;11677:6;;;;11669:29;;;;-1:-1:-1;;;11669:29:0;;;;;;;;:::i;:::-;-1:-1:-1;11709:9:0;11721:5;11725:1;11721;:5;:::i;:::-;11709:17;11563:193;-1:-1:-1;;;;;11563:193:0:o;11229:182::-;11287:7;;11319:5;11323:1;11319;:5;:::i;:::-;11307:17;;11348:1;11343;:6;;11335:46;;;;-1:-1:-1;;;11335:46:0;;13928:2:1;11335:46:0;;;13910:21:1;13967:2;13947:18;;;13940:30;14006:29;13986:18;;;13979:57;14053:18;;11335:46:0;13726:351:1;11335:46:0;11402:1;11229:182;-1:-1:-1;;;11229:182:0:o;27487:189::-;-1:-1:-1;;;;;27570:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;27570:39:0;;;;;;;;;;27628:40;;27570:39;;:31;27628:40;;;27487:189;;:::o;9282:575::-;-1:-1:-1;;;;;9422:20:0;;9414:70;;;;-1:-1:-1;;;9414:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9503:23:0;;9495:71;;;;-1:-1:-1;;;9495:71:0;;;;;;;:::i;:::-;9661;9683:6;9661:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9661:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;9641:17:0;;;:9;:17;;;;;;;;;;;:91;;;;9766:20;;;;;;;:32;;9791:6;9766:24;:32::i;:::-;-1:-1:-1;;;;;9743:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9814:35;1848:25:1;;;9743:20:0;;9814:35;;;;;;1821:18:1;9814:35:0;1702:177:1;32302:1501:0;32341:23;32367:24;32385:4;32367:9;:24::i;:::-;32341:50;;32402:25;32451:18;;32430;;:39;;;;:::i;:::-;32402:67;-1:-1:-1;32480:12:0;32509:20;;;:46;;-1:-1:-1;32533:22:0;;32509:46;32506:60;;;32558:7;;;32302:1501::o;32506:60::-;32582:21;;;;;;;:30;;32607:5;32582:30;32579:242;;32649:12;;:17;;32664:2;32649:17;:::i;:::-;32631:15;:35;32628:109;;;32704:12;;:17;;32719:2;32704:17;:::i;:::-;32686:35;;32628:109;32579:242;;;32785:24;32803:4;32785:9;:24::i;:::-;32767:42;;32579:242;32893:23;32978:1;32958:17;32937:18;;32919:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;32893:86;-1:-1:-1;32990:26:0;33019:36;:15;32893:86;33019:19;:36::i;:::-;32990:65;-1:-1:-1;33097:21:0;33132:36;32990:65;33132:16;:36::i;:::-;33183:18;33204:44;:21;33230:17;33204:25;:44::i;:::-;33183:65;;33262:23;33288:57;33327:17;33288:34;33303:18;;33288:10;:14;;:34;;;;:::i;:57::-;33262:83;-1:-1:-1;33356:23:0;33382:28;33262:83;33382:10;:28;:::i;:::-;33448:1;33427:18;:22;;;33460:18;:22;33356:54;-1:-1:-1;33499:19:0;;;;;:42;;;33540:1;33522:15;:19;33499:42;33496:210;;;33557:46;33570:15;33587;33557:12;:46::i;:::-;33675:18;;33623:71;;;14284:25:1;;;14340:2;14325:18;;14318:34;;;14368:18;;;14361:34;;;;33623:71:0;;;;;;14272:2:1;33623:71:0;;;33496:210;33740:15;;33732:63;;-1:-1:-1;;;;;33740:15:0;;;;33769:21;;33732:63;;;;33769:21;33740:15;33732:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;32302:1501:0:o;11764:254::-;11822:7;11848:1;11853;11848:6;11844:47;;-1:-1:-1;11878:1:0;11871:8;;11844:47;11904:9;11916:5;11920:1;11916;:5;:::i;:::-;11904:17;-1:-1:-1;11949:1:0;11940:5;11944:1;11904:17;11940:5;:::i;:::-;:10;11932:56;;;;-1:-1:-1;;;11932:56:0;;14608:2:1;11932:56:0;;;14590:21:1;14647:2;14627:18;;;14620:30;14686:34;14666:18;;;14659:62;-1:-1:-1;;;14737:18:1;;;14730:31;14778:19;;11932:56:0;14406:397:1;12026:132:0;12084:7;12111:39;12115:1;12118;12111:39;;;;;;;;;;;;;;;;;:3;:39::i;11419:136::-;11477:7;11504:43;11508:1;11511;11504:43;;;;;;;;;;;;;;;;;:3;:43::i;31167:597::-;31320:16;;;31334:1;31320:16;;;;;;;;31296:21;;31320:16;;;;;;;;;;-1:-1:-1;31320:16:0;31296:40;;31365:4;31347;31352:1;31347:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31347:23:0;;;-1:-1:-1;;;;;31347:23:0;;;;;31391:15;-1:-1:-1;;;;;31391:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31381:4;31386:1;31381:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;31381:32:0;;;-1:-1:-1;;;;;31381:32:0;;;;;31427:62;31444:4;31459:15;31477:11;31427:8;:62::i;:::-;31529:224;;-1:-1:-1;;;31529:224:0;;-1:-1:-1;;;;;31529:15:0;:66;;;;:224;;31610:11;;31636:1;;31680:4;;31707;;31727:15;;31529:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31222:542;31167:597;:::o;31773:520::-;31921:62;31938:4;31953:15;31971:11;31921:8;:62::i;:::-;32027:258;;-1:-1:-1;;;32027:258:0;;-1:-1:-1;;;;;32027:15:0;:31;;;;32066:9;;32027:258;;32099:4;;32119:11;;32145:1;;;;32099:4;;32259:15;;32027:258;;;:::i;12166:279::-;12252:7;12287:12;12280:5;12272:28;;;;-1:-1:-1;;;12272:28:0;;;;;;;;:::i;:::-;-1:-1:-1;12311:9:0;12323:5;12327:1;12323;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:160::-;1949:20;;2005:13;;1998:21;1988:32;;1978:60;;2034:1;2031;2024:12;2049:180;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;2197:26;2213:9;2197:26;:::i;2234:456::-;2311:6;2319;2327;2380:2;2368:9;2359:7;2355:23;2351:32;2348:52;;;2396:1;2393;2386:12;2348:52;2435:9;2422:23;2454:31;2479:5;2454:31;:::i;:::-;2504:5;-1:-1:-1;2561:2:1;2546:18;;2533:32;2574:33;2533:32;2574:33;:::i;:::-;2234:456;;2626:7;;-1:-1:-1;;;2680:2:1;2665:18;;;;2652:32;;2234:456::o;3092:315::-;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3273:9;3260:23;3292:31;3317:5;3292:31;:::i;:::-;3342:5;-1:-1:-1;3366:35:1;3397:2;3382:18;;3366:35;:::i;:::-;3356:45;;3092:315;;;;;:::o;3412:248::-;3480:6;3488;3541:2;3529:9;3520:7;3516:23;3512:32;3509:52;;;3557:1;3554;3547:12;3509:52;-1:-1:-1;;3580:23:1;;;3650:2;3635:18;;;3622:32;;-1:-1:-1;3412:248:1:o;3665:385::-;3751:6;3759;3767;3775;3828:3;3816:9;3807:7;3803:23;3799:33;3796:53;;;3845:1;3842;3835:12;3796:53;-1:-1:-1;;3868:23:1;;;3938:2;3923:18;;3910:32;;-1:-1:-1;3989:2:1;3974:18;;3961:32;;4040:2;4025:18;4012:32;;-1:-1:-1;3665:385:1;-1:-1:-1;3665:385:1:o;4055:180::-;4114:6;4167:2;4155:9;4146:7;4142:23;4138:32;4135:52;;;4183:1;4180;4173:12;4135:52;-1:-1:-1;4206:23:1;;4055:180;-1:-1:-1;4055:180:1:o;4240:388::-;4308:6;4316;4369:2;4357:9;4348:7;4344:23;4340:32;4337:52;;;4385:1;4382;4375:12;4337:52;4424:9;4411:23;4443:31;4468:5;4443:31;:::i;:::-;4493:5;-1:-1:-1;4550:2:1;4535:18;;4522:32;4563:33;4522:32;4563:33;:::i;:::-;4615:7;4605:17;;;4240:388;;;;;:::o;4633:356::-;4835:2;4817:21;;;4854:18;;;4847:30;4913:34;4908:2;4893:18;;4886:62;4980:2;4965:18;;4633:356::o;4994:607::-;-1:-1:-1;;;;;5353:15:1;;;5335:34;;5400:2;5385:18;;5378:34;;;;5443:2;5428:18;;5421:34;;;;5486:2;5471:18;;5464:34;;;;5535:15;;;5529:3;5514:19;;5507:44;5315:3;5567:19;;5560:35;;;;5284:3;5269:19;;4994:607::o;5606:306::-;5694:6;5702;5710;5763:2;5751:9;5742:7;5738:23;5734:32;5731:52;;;5779:1;5776;5769:12;5731:52;5808:9;5802:16;5792:26;;5858:2;5847:9;5843:18;5837:25;5827:35;;5902:2;5891:9;5887:18;5881:25;5871:35;;5606:306;;;;;:::o;5917:380::-;5996:1;5992:12;;;;6039;;;6060:61;;6114:4;6106:6;6102:17;6092:27;;6060:61;6167:2;6159:6;6156:14;6136:18;6133:38;6130:161;;6213:10;6208:3;6204:20;6201:1;6194:31;6248:4;6245:1;6238:15;6276:4;6273:1;6266:15;6130:161;;5917:380;;;:::o;8102:127::-;8163:10;8158:3;8154:20;8151:1;8144:31;8194:4;8191:1;8184:15;8218:4;8215:1;8208:15;8234:168;8307:9;;;8338;;8355:15;;;8349:22;;8335:37;8325:71;;8376:18;;:::i;8407:217::-;8447:1;8473;8463:132;;8517:10;8512:3;8508:20;8505:1;8498:31;8552:4;8549:1;8542:15;8580:4;8577:1;8570:15;8463:132;-1:-1:-1;8609:9:1;;8407:217::o;9450:125::-;9515:9;;;9536:10;;;9533:36;;;9549:18;;:::i;11590:401::-;11792:2;11774:21;;;11831:2;11811:18;;;11804:30;11870:34;11865:2;11850:18;;11843:62;-1:-1:-1;;;11936:2:1;11921:18;;11914:35;11981:3;11966:19;;11590:401::o;11996:399::-;12198:2;12180:21;;;12237:2;12217:18;;;12210:30;12276:34;12271:2;12256:18;;12249:62;-1:-1:-1;;;12342:2:1;12327:18;;12320:33;12385:3;12370:19;;11996:399::o;13593:128::-;13660:9;;;13681:11;;;13678:37;;;13695:18;;:::i;14940:127::-;15001:10;14996:3;14992:20;14989:1;14982:31;15032:4;15029:1;15022:15;15056:4;15053:1;15046:15;15072:251;15142:6;15195:2;15183:9;15174:7;15170:23;15166:32;15163:52;;;15211:1;15208;15201:12;15163:52;15243:9;15237:16;15262:31;15287:5;15262:31;:::i;15328:980::-;15590:4;15638:3;15627:9;15623:19;15669:6;15658:9;15651:25;15695:2;15733:6;15728:2;15717:9;15713:18;15706:34;15776:3;15771:2;15760:9;15756:18;15749:31;15800:6;15835;15829:13;15866:6;15858;15851:22;15904:3;15893:9;15889:19;15882:26;;15943:2;15935:6;15931:15;15917:29;;15964:1;15974:195;15988:6;15985:1;15982:13;15974:195;;;16053:13;;-1:-1:-1;;;;;16049:39:1;16037:52;;16144:15;;;;16109:12;;;;16085:1;16003:9;15974:195;;;-1:-1:-1;;;;;;;16225:32:1;;;;16220:2;16205:18;;16198:60;-1:-1:-1;;;16289:3:1;16274:19;16267:35;16186:3;15328:980;-1:-1:-1;;;15328:980:1:o
Swarm Source
ipfs://4e22b8439ae263e81cd8f945227ef763aca10936230bd1147be3f424742c3c6b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.