ERC-20
Overview
Max Total Supply
1,000,000,000 BRNR
Holders
252
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000111254864 BRNRValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BRNR
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-18 */ // SPDX-License-Identifier: MIT /** Burners // TG Multi Mixer. Website: https://burners.bot Docs: https://book.burners.bot Telegram: https://t.me/burnersdotbot **/ // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: Burners/token.sol pragma solidity ^0.8.17; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } 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; } // Uniswap Pair 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); 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; } // Uniswap Router 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; } abstract contract Burners { address public marketingWallet = 0xfdec102BF5EB5B4Cd8600f2505C3c7392F51Cee7; address public treasuryWallet = 0xfdec102BF5EB5B4Cd8600f2505C3c7392F51Cee7; string constant _name = "Burners"; string constant _symbol = "BRNR"; uint8 constant _decimals = 18; uint256 _totalSupply = 1 * 10**9 * 10**_decimals; uint256 public _maxTxAmount = (_totalSupply * 10) / 1000; uint256 public _maxWalletToken = (_totalSupply * 10) / 1000; uint256 public buyFee = 40; uint256 public buyTotalFee = buyFee; uint256 public swapLpFee = 1; uint256 public swapMarketing = 38; uint256 public swapTreasuryFee = 1; uint256 public swapTotalFee = swapMarketing + swapLpFee + swapTreasuryFee; uint256 public transFee = 0; uint256 public feeDenominator = 100; } contract BRNR is Burners, IERC20, Ownable { using SafeMath for uint256; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isMaxExempt; mapping (address => bool) isTimelockExempt; address public autoLiquidityReceiver; uint256 targetLiquidity = 20; uint256 targetLiquidityDenominator = 100; IUniswapV2Router02 public immutable contractRouter; address public immutable uniswapV2Pair; bool public tradingOpen = false; bool public buyCooldownEnabled = false; uint8 public cooldownTimerInterval = 10; mapping (address => uint) private cooldownTimer; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 30 / 10000; uint256 public swapAmount = _totalSupply * 20 / 10000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Mainnet & Testnet ETH // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables contractRouter = _uniswapV2Router; _allowances[address(this)][address(contractRouter)] = type(uint256).max; isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isMaxExempt[msg.sender] = true; isTimelockExempt[msg.sender] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; isFeeExempt[marketingWallet] = true; isMaxExempt[marketingWallet] = true; isTxLimitExempt[marketingWallet] = true; autoLiquidityReceiver = msg.sender; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure returns (uint8) { return _decimals; } function symbol() external pure returns (string memory) { return _symbol; } function name() external pure returns (string memory) { return _name; } function getOwner() external view returns (address) { return owner(); } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function setMaxWallet(uint256 maxWalletPercent) external onlyOwner() { _maxWalletToken = maxWalletPercent; } function setMaxTx(uint256 maxTxPercent) external onlyOwner() { _maxTxAmount = maxTxPercent; } function setTxLimit(uint256 amount) external onlyOwner() { _maxTxAmount = amount; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(sender != owner() && recipient != owner()){ require(tradingOpen,"Trading not open yet"); } bool inSell = (recipient == uniswapV2Pair); bool inTransfer = (recipient != uniswapV2Pair && sender != uniswapV2Pair); if (recipient != address(this) && recipient != address(DEAD) && recipient != uniswapV2Pair && recipient != marketingWallet && recipient != treasuryWallet && recipient != autoLiquidityReceiver ){ uint256 heldTokens = balanceOf(recipient); if(!isMaxExempt[recipient]) { require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much."); } } if (sender == uniswapV2Pair && buyCooldownEnabled && !isTimelockExempt[recipient] ){ require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } if(!isTxLimitExempt[recipient]) { checkTxLimit(sender, amount); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = amount; if(inTransfer) { if(transFee > 0) { amountReceived = takeTransferFee(sender, amount); } } else { amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount, inSell) : amount; if(shouldSwapBack()){ swapBack(); } } _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeTransferFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeToTake = transFee; uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) { uint256 feeToTake; feeToTake = isSell ? swapTotalFee : buyTotalFee; uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != uniswapV2Pair && !inSwap && _balances[address(this)] >= swapThreshold; } function clearStuckBalance(uint256 amountPercentage) external { uint256 amountETH = address(this).balance; payable(marketingWallet).transfer(amountETH * amountPercentage / 100); } // switch Trading function tradingStatus(bool _status) public onlyOwner { tradingOpen = _status; } function feeOnTransfer(uint256 fee) external onlyOwner() { transFee = fee; } function feeOnSell(uint256 _newSwapLpFee, uint256 _newSwapMarketingFee, uint256 _newSwapTreasuryFee, uint256 _feeDenominator) external onlyOwner() { swapLpFee = _newSwapLpFee; swapMarketing = _newSwapMarketingFee; swapTreasuryFee = _newSwapTreasuryFee; swapTotalFee = _newSwapLpFee.add(_newSwapMarketingFee).add(_newSwapTreasuryFee); feeDenominator = _feeDenominator; } function feeOnBuy(uint256 buyTax) external onlyOwner() { buyTotalFee = buyTax; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : swapLpFee; uint256 amountToLiquify = swapAmount.mul(dynamicLiquidityFee).div(swapTotalFee).div(2); uint256 amountToSwap = swapAmount.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = contractRouter.WETH(); uint256 balanceBefore = address(this).balance; contractRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = swapTotalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(swapLpFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(swapMarketing).div(totalETHFee); uint256 amountETHTreasury = amountETH.mul(swapTreasuryFee).div(totalETHFee); (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 30000}(""); (tmpSuccess,) = payable(treasuryWallet).call{value: amountETHTreasury, gas: 30000}(""); // Supress warning msg tmpSuccess = false; if(amountToLiquify > 0){ contractRouter.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function triggerSwapBack() external onlyOwner { swapBack(); } function setIsFeeExempt(address holder, bool exempt) external onlyOwner() { isFeeExempt[holder] = exempt; } function setIsMaxExempt(address holder, bool exempt) external onlyOwner() { isMaxExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner() { isTxLimitExempt[holder] = exempt; } function setIsTimelockExempt(address holder, bool exempt) external onlyOwner() { isTimelockExempt[holder] = exempt; } function setFeeReceivers(address _autoLiquidityReceiver, address _newMarketingWallet, address _newTreasuryWallet ) external onlyOwner() { isFeeExempt[treasuryWallet] = false; isFeeExempt[_newTreasuryWallet] = true; isFeeExempt[marketingWallet] = false; isFeeExempt[_newMarketingWallet] = true; isMaxExempt[_newMarketingWallet] = true; autoLiquidityReceiver = _autoLiquidityReceiver; marketingWallet = _newMarketingWallet; treasuryWallet = _newTreasuryWallet; } function setSwapThresholdAmount(uint256 _amount) external onlyOwner() { swapThreshold = _amount; } function setSwapAmount(uint256 _amount) external onlyOwner() { if(_amount > swapThreshold) { swapAmount = swapThreshold; } else { swapAmount = _amount; } } function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner() { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(uniswapV2Pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } /* Airdrop */ function airDropCustom(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses"); require(addresses.length == tokens.length,"Mismatch between Address and token count"); uint256 SCCC = 0; for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + tokens[i]; } require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i]); } } event AutoLiquify(uint256 amountETH, uint256 amountBOG); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airDropCustom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"}],"name":"feeOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapLpFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapTreasuryFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"feeOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"feeOnTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_newMarketingWallet","type":"address"},{"internalType":"address","name":"_newTreasuryWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transFee","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":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"triggerSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040525f805473fdec102bf5eb5b4cd8600f2505c3c7392f51cee76001600160a01b03199182168117909255600180549091169091179055620000476012600a62000582565b6200005790633b9aca0062000599565b6002556103e8600254600a6200006e919062000599565b6200007a9190620005b3565b6003556103e8600254600a62000091919062000599565b6200009d9190620005b3565b6004556028600555600554600655600160075560266008556001600955600954600754600854620000cf9190620005d3565b620000db9190620005d3565b600a555f600b556064600c819055600e805461dead6001600160a01b031991821617909155600f8054909116905560146017556018556019805462ffffff1916620a0000179055601b805460ff19166001179055600254612710906200014390601e62000599565b6200014f9190620005b3565b601c55612710600254601462000166919062000599565b620001729190620005b3565b601d5534801562000181575f80fd5b506200018d3362000422565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002089190620005e9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027a9190620005e9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002c5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002eb9190620005e9565b6001600160a01b0390811660a0528181166080819052305f8181526011602090815260408083209483529381528382205f1990553380835260128083528584208054600160ff1991821681179092556013808652888720805483168417905560148087528988208054841685179055601587528988208054841685179055600e548b1688528988208054841685179055978752888720805483168417905586548a168752928552878620805482168317905585548916865295845286852080548716821790558454909716845282528483208054909416909517909255601680546001600160a01b03191685179055600254848252601083528382208190559251928352917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000611565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004c757815f1904821115620004ab57620004ab62000473565b80851615620004b957918102915b93841c93908002906200048c565b509250929050565b5f82620004df575060016200057c565b81620004ed57505f6200057c565b8160018114620005065760028114620005115762000531565b60019150506200057c565b60ff84111562000525576200052562000473565b50506001821b6200057c565b5060208310610133831016604e8410600b841016171562000556575081810a6200057c565b62000562838362000487565b805f190482111562000578576200057862000473565b0290505b92915050565b5f6200059260ff841683620004cf565b9392505050565b80820281158282048414176200057c576200057c62000473565b5f82620005ce57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200057c576200057c62000473565b5f60208284031215620005fa575f80fd5b81516001600160a01b038116811462000592575f80fd5b60805160a0516122b4620006725f395f81816105ec01528181610f47015281816112510152818161128a015281816112f1015281816114280152611de601525f81816106f701528181611778015281816118300152611a2001526122b45ff3fe60806040526004361061035e575f3560e01c8063658d4b7f116101bd578063a9059cbb116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b146109ae578063f53fd584146109cd578063f84ba65d146109e2578063ffb54a9914610a01575f80fd5b8063dd62ed3e14610936578063e53c30b01461097a578063e632313c1461098f575f80fd5b8063cf703bb9116100cd578063cf703bb9146108ba578063d51ed1c8146108d9578063d7c01032146108f8578063dd395c6314610917575f80fd5b8063a9059cbb1461087c578063bc3371821461066b578063ca33e64c1461089b575f80fd5b806375f0a8741161015d578063893d20e811610138578063893d20e8146108005780638da5cb5b146108145780638e8aaafa1461083157806395d89b4114610850575f80fd5b806375f0a874146107b857806378109e54146107d65780637d1db4a5146107eb575f80fd5b806370a082311161019857806370a0823114610732578063713e4ae514610766578063715018a614610785578063722b62ad14610799575f80fd5b8063658d4b7f146106c757806367ac77b4146106e65780636ddd171314610719575f80fd5b80632e8fa8211161029357806349bd5a5e11610233578063571ac8b01161020e578063571ac8b01461064c5780635c85974f1461066b5780635d0044ca1461068a578063617fe0ed146106a9575f80fd5b806349bd5a5e146105db5780634dd0e4d31461060e57806350db71fb1461062d575f80fd5b8063456d401a1161026e578063456d401a146105665780634626402b1461057a57806346e421a2146105b157806347062402146105c6575f80fd5b80632e8fa8211461051b578063313ce567146105305780633705b39214610551575f80fd5b806318160ddd116102fe578063201e7991116102d9578063201e7991146104aa57806323b872dd146104c957806329e04b4a146104e85780632b112e4914610507575f80fd5b806318160ddd146104625780631da1db5e146104765780631e25dc5414610495575f80fd5b8063095ea7b311610339578063095ea7b3146103de5780630d2959801461040d5780631161ae391461042e578063180b0d7e1461044d575f80fd5b8063026f7d15146103695780630445b6671461039157806306fdde03146103a6575f80fd5b3661036557005b5f80fd5b348015610374575f80fd5b5061037e60085481565b6040519081526020015b60405180910390f35b34801561039c575f80fd5b5061037e601c5481565b3480156103b1575f80fd5b506040805180820190915260078152664275726e65727360c81b60208201525b6040516103889190611e36565b3480156103e9575f80fd5b506103fd6103f8366004611e96565b610a1a565b6040519015158152602001610388565b348015610418575f80fd5b5061042c610427366004611ed4565b610a86565b005b348015610439575f80fd5b506103fd610448366004611eed565b610aa1565b348015610458575f80fd5b5061037e600c5481565b34801561046d575f80fd5b5060025461037e565b348015610481575f80fd5b5061042c610490366004611f0d565b610ab4565b3480156104a0575f80fd5b5061037e600b5481565b3480156104b5575f80fd5b5061042c6104c4366004611eed565b610b04565b3480156104d4575f80fd5b506103fd6104e3366004611f24565b610b17565b3480156104f3575f80fd5b5061042c610502366004611f0d565b610bd5565b348015610512575f80fd5b5061037e610be2565b348015610526575f80fd5b5061037e601d5481565b34801561053b575f80fd5b5060125b60405160ff9091168152602001610388565b34801561055c575f80fd5b5061037e60065481565b348015610571575f80fd5b5061042c610c32565b348015610585575f80fd5b50600154610599906001600160a01b031681565b6040516001600160a01b039091168152602001610388565b3480156105bc575f80fd5b5061037e60075481565b3480156105d1575f80fd5b5061037e60055481565b3480156105e6575f80fd5b506105997f000000000000000000000000000000000000000000000000000000000000000081565b348015610619575f80fd5b5061042c610628366004611f0d565b610c44565b348015610638575f80fd5b5061042c610647366004611f62565b610c51565b348015610657575f80fd5b506103fd610666366004611f95565b610c83565b348015610676575f80fd5b5061042c610685366004611f0d565b610c8f565b348015610695575f80fd5b5061042c6106a4366004611f0d565b610c9c565b3480156106b4575f80fd5b506019546103fd90610100900460ff1681565b3480156106d2575f80fd5b5061042c6106e1366004611f62565b610ca9565b3480156106f1575f80fd5b506105997f000000000000000000000000000000000000000000000000000000000000000081565b348015610724575f80fd5b50601b546103fd9060ff1681565b34801561073d575f80fd5b5061037e61074c366004611f95565b6001600160a01b03165f9081526010602052604090205490565b348015610771575f80fd5b5061042c610780366004611ff8565b610cdb565b348015610790575f80fd5b5061042c610ebb565b3480156107a4575f80fd5b5060195461053f9062010000900460ff1681565b3480156107c3575f80fd5b505f54610599906001600160a01b031681565b3480156107e1575f80fd5b5061037e60045481565b3480156107f6575f80fd5b5061037e60035481565b34801561080b575f80fd5b50610599610ecc565b34801561081f575f80fd5b50600d546001600160a01b0316610599565b34801561083c575f80fd5b5061042c61084b366004612075565b610edf565b34801561085b575f80fd5b506040805180820190915260048152632129272960e11b60208201526103d1565b348015610887575f80fd5b506103fd610896366004611e96565b610f15565b3480156108a6575f80fd5b50601654610599906001600160a01b031681565b3480156108c5575f80fd5b5061042c6108d4366004611f0d565b610f21565b3480156108e4575f80fd5b5061037e6108f3366004611f0d565b610f2e565b348015610903575f80fd5b5061042c6109123660046120a4565b610f93565b348015610922575f80fd5b5061042c610931366004611f62565b611033565b348015610941575f80fd5b5061037e6109503660046120ec565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b348015610985575f80fd5b5061037e600a5481565b34801561099a575f80fd5b5061042c6109a9366004611f0d565b611065565b3480156109b9575f80fd5b5061042c6109c8366004611f95565b611089565b3480156109d8575f80fd5b5061037e60095481565b3480156109ed575f80fd5b5061042c6109fc366004611f62565b6110ff565b348015610a0c575f80fd5b506019546103fd9060ff1681565b335f8181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a749086815260200190565b60405180910390a35060015b92915050565b610a8e611131565b6019805460ff1916911515919091179055565b5f82610aac83610f2e565b119392505050565b5f5447906001600160a01b03166108fc6064610ad08585612137565b610ada919061214e565b6040518115909202915f818181858888f19350505050158015610aff573d5f803e3d5ffd5b505050565b610b0c611131565b601791909155601855565b6001600160a01b0383165f9081526011602090815260408083203384529091528120545f1914610bc0576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601182528381203382529091529190912054610b9c91849061118b565b6001600160a01b0385165f9081526011602090815260408083203384529091529020555b610bcb8484846111b6565b90505b9392505050565b610bdd611131565b601c55565b600f546001600160a01b03165f90815260106020526040812054610c2d90600e546001600160a01b03165f90815260106020526040902054610c2790600254906116ac565b906116ac565b905090565b610c3a611131565b610c426116b7565b565b610c4c611131565b600655565b610c59611131565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f610a80825f19610a1a565b610c97611131565b600355565b610ca4611131565b600455565b610cb1611131565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b610ce3611131565b6101f58310610d4f5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b60648201526084015b60405180910390fd5b828114610daf5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610d46565b5f805b84811015610de857838382818110610dcc57610dcc61216d565b9050602002013582610dde9190612181565b9150600101610db2565b5080610e08876001600160a01b03165f9081526010602052604090205490565b1015610e565760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d46565b5f5b84811015610eb257610ea987878784818110610e7657610e7661216d565b9050602002016020810190610e8b9190611f95565b868685818110610e9d57610e9d61216d565b90506020020135611ae3565b50600101610e58565b50505050505050565b610ec3611131565b610c425f611bb3565b5f610c2d600d546001600160a01b031690565b610ee7611131565b600784905560088390556009829055610f0a82610f048686611c04565b90611c04565b600a55600c55505050565b5f610bce3384846111b6565b610f29611131565b600b55565b5f610a80610f3a610be2565b610f8d610f866002610f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526010602052604090205490565b90611c0f565b8590611c0f565b90611c1a565b610f9b611131565b600180546001600160a01b039081165f908152601260209081526040808320805460ff1990811690915595841680845281842080548816871790558354851684528184208054881690559684168084528184208054881687179055601490925282208054909516841790945560168054969092166001600160a01b031996871617909155805485169092179091558054909216179055565b61103b611131565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b61106d611131565b601c5481111561108057601c54601d5550565b601d8190555b50565b611091611131565b6001600160a01b0381166110f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d46565b61108681611bb3565b611107611131565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314610c425760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d46565b5f81848411156111ae5760405162461bcd60e51b8152600401610d469190611e36565b505050900390565b601e545f9060ff16156111d5576111ce848484611ae3565b9050610bce565b600d546001600160a01b038581169116148015906112015750600d546001600160a01b03848116911614155b1561124f5760195460ff1661124f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610d46565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416145f8115826112bf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906112e85750600e546001600160a01b03868116911614155b801561132657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b801561133f57505f546001600160a01b03868116911614155b801561135957506001546001600160a01b03868116911614155b801561137357506016546001600160a01b03868116911614155b15611426576001600160a01b0385165f9081526010602090815260408083205460149092529091205460ff16611424576004546113b08683612181565b11156114245760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610d46565b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614801561146e5750601954610100900460ff165b801561149257506001600160a01b0385165f9081526015602052604090205460ff16155b1561153a576001600160a01b0385165f908152601a6020526040902054421161150b5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610d46565b6019546115219062010000900460ff1642612181565b6001600160a01b0386165f908152601a60205260409020555b6001600160a01b0385165f9081526013602052604090205460ff16611563576115638685611c25565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152601090915291909120546115b491869061118b565b6001600160a01b0387165f908152601060205260409020558381156115ed57600b54156115e8576115e58786611c91565b90505b611635565b6001600160a01b0387165f9081526012602052604090205460ff1615611613578461161e565b61161e878685611d2e565b9050611628611dda565b15611635576116356116b7565b6001600160a01b0386165f908152601060205260409020546116579082611c04565b6001600160a01b038088165f8181526010602052604090819020939093559151908916905f8051602061225f833981519152906116979085815260200190565b60405180910390a35060019695505050505050565b5f610bce8284612194565b601e805460ff191660011790556017546018545f916116d591610aa1565b6116e1576007546116e3565b5f5b90505f6117066002610f8d600a54610f8d86601d54611c0f90919063ffffffff16565b90505f61171e82601d546116ac90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106117565761175661216d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f691906121a7565b816001815181106118095761180961216d565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061186d9086905f908790309042906004016121c2565b5f604051808303815f87803b158015611884575f80fd5b505af1158015611896573d5f803e3d5ffd5b505050505f6118ae82476116ac90919063ffffffff16565b90505f6118c86118bf886002611c1a565b600a54906116ac565b90505f6118e96002610f8d84610f8d60075488611c0f90919063ffffffff16565b90505f61190583610f8d60085487611c0f90919063ffffffff16565b90505f61192184610f8d60095488611c0f90919063ffffffff16565b5f805460405192935090916001600160a01b039091169061753090859084818181858888f193505050503d805f8114611975576040519150601f19603f3d011682016040523d82523d5f602084013e61197a565b606091505b50506001546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f81146119cc576040519150601f19603f3d011682016040523d82523d5f602084013e6119d1565b606091505b505f9250508a159050611acc5760165460405163f305d71960e01b8152306004820152602481018c90525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990869060c40160606040518083038185885af1158015611a6a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a8f9190612233565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff19169055505050505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601090915291822054611b3391849061118b565b6001600160a01b038086165f908152601060205260408082209390935590851681522054611b619083611c04565b6001600160a01b038085165f8181526010602052604090819020939093559151908616905f8051602061225f83398151915290611ba19086815260200190565b60405180910390a35060019392505050565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f610bce8284612181565b5f610bce8284612137565b5f610bce828461214e565b60035481111580611c4d57506001600160a01b0382165f9081526013602052604090205460ff165b611c8d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610d46565b5050565b5f80600b5490505f611cba600c546064611cab9190612137565b610f8d6064610f808887611c0f565b305f90815260106020526040902054909150611cd69082611c04565b305f81815260106020526040908190209290925590516001600160a01b038716905f8051602061225f83398151915290611d139085815260200190565b60405180910390a3611d2584826116ac565b95945050505050565b5f8082611d3d57600654611d41565b600a545b90505f611d65600c546064611d569190612137565b610f8d6064610f808987611c0f565b305f90815260106020526040902054909150611d819082611c04565b305f81815260106020526040908190209290925590516001600160a01b038816905f8051602061225f83398151915290611dbe9085815260200190565b60405180910390a3611dd085826116ac565b9695505050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611e175750601e5460ff16155b8015610c2d575050601c54305f90815260106020526040902054101590565b5f602080835283518060208501525f5b81811015611e6257858101830151858201604001528201611e46565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611086575f80fd5b5f8060408385031215611ea7575f80fd5b8235611eb281611e82565b946020939093013593505050565b80358015158114611ecf575f80fd5b919050565b5f60208284031215611ee4575f80fd5b610bce82611ec0565b5f8060408385031215611efe575f80fd5b50508035926020909101359150565b5f60208284031215611f1d575f80fd5b5035919050565b5f805f60608486031215611f36575f80fd5b8335611f4181611e82565b92506020840135611f5181611e82565b929592945050506040919091013590565b5f8060408385031215611f73575f80fd5b8235611f7e81611e82565b9150611f8c60208401611ec0565b90509250929050565b5f60208284031215611fa5575f80fd5b8135610bce81611e82565b5f8083601f840112611fc0575f80fd5b50813567ffffffffffffffff811115611fd7575f80fd5b6020830191508360208260051b8501011115611ff1575f80fd5b9250929050565b5f805f805f6060868803121561200c575f80fd5b853561201781611e82565b9450602086013567ffffffffffffffff80821115612033575f80fd5b61203f89838a01611fb0565b90965094506040880135915080821115612057575f80fd5b5061206488828901611fb0565b969995985093965092949392505050565b5f805f8060808587031215612088575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f606084860312156120b6575f80fd5b83356120c181611e82565b925060208401356120d181611e82565b915060408401356120e181611e82565b809150509250925092565b5f80604083850312156120fd575f80fd5b823561210881611e82565b9150602083013561211881611e82565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a8057610a80612123565b5f8261216857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610a8057610a80612123565b81810381811115610a8057610a80612123565b5f602082840312156121b7575f80fd5b8151610bce81611e82565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122125784516001600160a01b0316835293830193918301916001016121ed565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612245575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122023872453b10a41dec9b9c717420dce86ed80d5b672fa7d11386ba365e4718d5164736f6c63430008170033
Deployed Bytecode
0x60806040526004361061035e575f3560e01c8063658d4b7f116101bd578063a9059cbb116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b146109ae578063f53fd584146109cd578063f84ba65d146109e2578063ffb54a9914610a01575f80fd5b8063dd62ed3e14610936578063e53c30b01461097a578063e632313c1461098f575f80fd5b8063cf703bb9116100cd578063cf703bb9146108ba578063d51ed1c8146108d9578063d7c01032146108f8578063dd395c6314610917575f80fd5b8063a9059cbb1461087c578063bc3371821461066b578063ca33e64c1461089b575f80fd5b806375f0a8741161015d578063893d20e811610138578063893d20e8146108005780638da5cb5b146108145780638e8aaafa1461083157806395d89b4114610850575f80fd5b806375f0a874146107b857806378109e54146107d65780637d1db4a5146107eb575f80fd5b806370a082311161019857806370a0823114610732578063713e4ae514610766578063715018a614610785578063722b62ad14610799575f80fd5b8063658d4b7f146106c757806367ac77b4146106e65780636ddd171314610719575f80fd5b80632e8fa8211161029357806349bd5a5e11610233578063571ac8b01161020e578063571ac8b01461064c5780635c85974f1461066b5780635d0044ca1461068a578063617fe0ed146106a9575f80fd5b806349bd5a5e146105db5780634dd0e4d31461060e57806350db71fb1461062d575f80fd5b8063456d401a1161026e578063456d401a146105665780634626402b1461057a57806346e421a2146105b157806347062402146105c6575f80fd5b80632e8fa8211461051b578063313ce567146105305780633705b39214610551575f80fd5b806318160ddd116102fe578063201e7991116102d9578063201e7991146104aa57806323b872dd146104c957806329e04b4a146104e85780632b112e4914610507575f80fd5b806318160ddd146104625780631da1db5e146104765780631e25dc5414610495575f80fd5b8063095ea7b311610339578063095ea7b3146103de5780630d2959801461040d5780631161ae391461042e578063180b0d7e1461044d575f80fd5b8063026f7d15146103695780630445b6671461039157806306fdde03146103a6575f80fd5b3661036557005b5f80fd5b348015610374575f80fd5b5061037e60085481565b6040519081526020015b60405180910390f35b34801561039c575f80fd5b5061037e601c5481565b3480156103b1575f80fd5b506040805180820190915260078152664275726e65727360c81b60208201525b6040516103889190611e36565b3480156103e9575f80fd5b506103fd6103f8366004611e96565b610a1a565b6040519015158152602001610388565b348015610418575f80fd5b5061042c610427366004611ed4565b610a86565b005b348015610439575f80fd5b506103fd610448366004611eed565b610aa1565b348015610458575f80fd5b5061037e600c5481565b34801561046d575f80fd5b5060025461037e565b348015610481575f80fd5b5061042c610490366004611f0d565b610ab4565b3480156104a0575f80fd5b5061037e600b5481565b3480156104b5575f80fd5b5061042c6104c4366004611eed565b610b04565b3480156104d4575f80fd5b506103fd6104e3366004611f24565b610b17565b3480156104f3575f80fd5b5061042c610502366004611f0d565b610bd5565b348015610512575f80fd5b5061037e610be2565b348015610526575f80fd5b5061037e601d5481565b34801561053b575f80fd5b5060125b60405160ff9091168152602001610388565b34801561055c575f80fd5b5061037e60065481565b348015610571575f80fd5b5061042c610c32565b348015610585575f80fd5b50600154610599906001600160a01b031681565b6040516001600160a01b039091168152602001610388565b3480156105bc575f80fd5b5061037e60075481565b3480156105d1575f80fd5b5061037e60055481565b3480156105e6575f80fd5b506105997f000000000000000000000000074aeced5a756536a917a15a6e0bfe7cfa41aff381565b348015610619575f80fd5b5061042c610628366004611f0d565b610c44565b348015610638575f80fd5b5061042c610647366004611f62565b610c51565b348015610657575f80fd5b506103fd610666366004611f95565b610c83565b348015610676575f80fd5b5061042c610685366004611f0d565b610c8f565b348015610695575f80fd5b5061042c6106a4366004611f0d565b610c9c565b3480156106b4575f80fd5b506019546103fd90610100900460ff1681565b3480156106d2575f80fd5b5061042c6106e1366004611f62565b610ca9565b3480156106f1575f80fd5b506105997f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610724575f80fd5b50601b546103fd9060ff1681565b34801561073d575f80fd5b5061037e61074c366004611f95565b6001600160a01b03165f9081526010602052604090205490565b348015610771575f80fd5b5061042c610780366004611ff8565b610cdb565b348015610790575f80fd5b5061042c610ebb565b3480156107a4575f80fd5b5060195461053f9062010000900460ff1681565b3480156107c3575f80fd5b505f54610599906001600160a01b031681565b3480156107e1575f80fd5b5061037e60045481565b3480156107f6575f80fd5b5061037e60035481565b34801561080b575f80fd5b50610599610ecc565b34801561081f575f80fd5b50600d546001600160a01b0316610599565b34801561083c575f80fd5b5061042c61084b366004612075565b610edf565b34801561085b575f80fd5b506040805180820190915260048152632129272960e11b60208201526103d1565b348015610887575f80fd5b506103fd610896366004611e96565b610f15565b3480156108a6575f80fd5b50601654610599906001600160a01b031681565b3480156108c5575f80fd5b5061042c6108d4366004611f0d565b610f21565b3480156108e4575f80fd5b5061037e6108f3366004611f0d565b610f2e565b348015610903575f80fd5b5061042c6109123660046120a4565b610f93565b348015610922575f80fd5b5061042c610931366004611f62565b611033565b348015610941575f80fd5b5061037e6109503660046120ec565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b348015610985575f80fd5b5061037e600a5481565b34801561099a575f80fd5b5061042c6109a9366004611f0d565b611065565b3480156109b9575f80fd5b5061042c6109c8366004611f95565b611089565b3480156109d8575f80fd5b5061037e60095481565b3480156109ed575f80fd5b5061042c6109fc366004611f62565b6110ff565b348015610a0c575f80fd5b506019546103fd9060ff1681565b335f8181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a749086815260200190565b60405180910390a35060015b92915050565b610a8e611131565b6019805460ff1916911515919091179055565b5f82610aac83610f2e565b119392505050565b5f5447906001600160a01b03166108fc6064610ad08585612137565b610ada919061214e565b6040518115909202915f818181858888f19350505050158015610aff573d5f803e3d5ffd5b505050565b610b0c611131565b601791909155601855565b6001600160a01b0383165f9081526011602090815260408083203384529091528120545f1914610bc0576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601182528381203382529091529190912054610b9c91849061118b565b6001600160a01b0385165f9081526011602090815260408083203384529091529020555b610bcb8484846111b6565b90505b9392505050565b610bdd611131565b601c55565b600f546001600160a01b03165f90815260106020526040812054610c2d90600e546001600160a01b03165f90815260106020526040902054610c2790600254906116ac565b906116ac565b905090565b610c3a611131565b610c426116b7565b565b610c4c611131565b600655565b610c59611131565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f610a80825f19610a1a565b610c97611131565b600355565b610ca4611131565b600455565b610cb1611131565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b610ce3611131565b6101f58310610d4f5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b60648201526084015b60405180910390fd5b828114610daf5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610d46565b5f805b84811015610de857838382818110610dcc57610dcc61216d565b9050602002013582610dde9190612181565b9150600101610db2565b5080610e08876001600160a01b03165f9081526010602052604090205490565b1015610e565760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610d46565b5f5b84811015610eb257610ea987878784818110610e7657610e7661216d565b9050602002016020810190610e8b9190611f95565b868685818110610e9d57610e9d61216d565b90506020020135611ae3565b50600101610e58565b50505050505050565b610ec3611131565b610c425f611bb3565b5f610c2d600d546001600160a01b031690565b610ee7611131565b600784905560088390556009829055610f0a82610f048686611c04565b90611c04565b600a55600c55505050565b5f610bce3384846111b6565b610f29611131565b600b55565b5f610a80610f3a610be2565b610f8d610f866002610f807f000000000000000000000000074aeced5a756536a917a15a6e0bfe7cfa41aff36001600160a01b03165f9081526010602052604090205490565b90611c0f565b8590611c0f565b90611c1a565b610f9b611131565b600180546001600160a01b039081165f908152601260209081526040808320805460ff1990811690915595841680845281842080548816871790558354851684528184208054881690559684168084528184208054881687179055601490925282208054909516841790945560168054969092166001600160a01b031996871617909155805485169092179091558054909216179055565b61103b611131565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b61106d611131565b601c5481111561108057601c54601d5550565b601d8190555b50565b611091611131565b6001600160a01b0381166110f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d46565b61108681611bb3565b611107611131565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314610c425760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d46565b5f81848411156111ae5760405162461bcd60e51b8152600401610d469190611e36565b505050900390565b601e545f9060ff16156111d5576111ce848484611ae3565b9050610bce565b600d546001600160a01b038581169116148015906112015750600d546001600160a01b03848116911614155b1561124f5760195460ff1661124f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610d46565b7f000000000000000000000000074aeced5a756536a917a15a6e0bfe7cfa41aff36001600160a01b03908116908416145f8115826112bf57507f000000000000000000000000074aeced5a756536a917a15a6e0bfe7cfa41aff36001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906112e85750600e546001600160a01b03868116911614155b801561132657507f000000000000000000000000074aeced5a756536a917a15a6e0bfe7cfa41aff36001600160a01b0316856001600160a01b031614155b801561133f57505f546001600160a01b03868116911614155b801561135957506001546001600160a01b03868116911614155b801561137357506016546001600160a01b03868116911614155b15611426576001600160a01b0385165f9081526010602090815260408083205460149092529091205460ff16611424576004546113b08683612181565b11156114245760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610d46565b505b7f000000000000000000000000074aeced5a756536a917a15a6e0bfe7cfa41aff36001600160a01b0316866001600160a01b031614801561146e5750601954610100900460ff165b801561149257506001600160a01b0385165f9081526015602052604090205460ff16155b1561153a576001600160a01b0385165f908152601a6020526040902054421161150b5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610d46565b6019546115219062010000900460ff1642612181565b6001600160a01b0386165f908152601a60205260409020555b6001600160a01b0385165f9081526013602052604090205460ff16611563576115638685611c25565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152601090915291909120546115b491869061118b565b6001600160a01b0387165f908152601060205260409020558381156115ed57600b54156115e8576115e58786611c91565b90505b611635565b6001600160a01b0387165f9081526012602052604090205460ff1615611613578461161e565b61161e878685611d2e565b9050611628611dda565b15611635576116356116b7565b6001600160a01b0386165f908152601060205260409020546116579082611c04565b6001600160a01b038088165f8181526010602052604090819020939093559151908916905f8051602061225f833981519152906116979085815260200190565b60405180910390a35060019695505050505050565b5f610bce8284612194565b601e805460ff191660011790556017546018545f916116d591610aa1565b6116e1576007546116e3565b5f5b90505f6117066002610f8d600a54610f8d86601d54611c0f90919063ffffffff16565b90505f61171e82601d546116ac90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106117565761175661216d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f691906121a7565b816001815181106118095761180961216d565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061186d9086905f908790309042906004016121c2565b5f604051808303815f87803b158015611884575f80fd5b505af1158015611896573d5f803e3d5ffd5b505050505f6118ae82476116ac90919063ffffffff16565b90505f6118c86118bf886002611c1a565b600a54906116ac565b90505f6118e96002610f8d84610f8d60075488611c0f90919063ffffffff16565b90505f61190583610f8d60085487611c0f90919063ffffffff16565b90505f61192184610f8d60095488611c0f90919063ffffffff16565b5f805460405192935090916001600160a01b039091169061753090859084818181858888f193505050503d805f8114611975576040519150601f19603f3d011682016040523d82523d5f602084013e61197a565b606091505b50506001546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f81146119cc576040519150601f19603f3d011682016040523d82523d5f602084013e6119d1565b606091505b505f9250508a159050611acc5760165460405163f305d71960e01b8152306004820152602481018c90525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990869060c40160606040518083038185885af1158015611a6a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a8f9190612233565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff19169055505050505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601090915291822054611b3391849061118b565b6001600160a01b038086165f908152601060205260408082209390935590851681522054611b619083611c04565b6001600160a01b038085165f8181526010602052604090819020939093559151908616905f8051602061225f83398151915290611ba19086815260200190565b60405180910390a35060019392505050565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f610bce8284612181565b5f610bce8284612137565b5f610bce828461214e565b60035481111580611c4d57506001600160a01b0382165f9081526013602052604090205460ff165b611c8d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610d46565b5050565b5f80600b5490505f611cba600c546064611cab9190612137565b610f8d6064610f808887611c0f565b305f90815260106020526040902054909150611cd69082611c04565b305f81815260106020526040908190209290925590516001600160a01b038716905f8051602061225f83398151915290611d139085815260200190565b60405180910390a3611d2584826116ac565b95945050505050565b5f8082611d3d57600654611d41565b600a545b90505f611d65600c546064611d569190612137565b610f8d6064610f808987611c0f565b305f90815260106020526040902054909150611d819082611c04565b305f81815260106020526040908190209290925590516001600160a01b038816905f8051602061225f83398151915290611dbe9085815260200190565b60405180910390a3611dd085826116ac565b9695505050505050565b5f336001600160a01b037f000000000000000000000000074aeced5a756536a917a15a6e0bfe7cfa41aff31614801590611e175750601e5460ff16155b8015610c2d575050601c54305f90815260106020526040902054101590565b5f602080835283518060208501525f5b81811015611e6257858101830151858201604001528201611e46565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611086575f80fd5b5f8060408385031215611ea7575f80fd5b8235611eb281611e82565b946020939093013593505050565b80358015158114611ecf575f80fd5b919050565b5f60208284031215611ee4575f80fd5b610bce82611ec0565b5f8060408385031215611efe575f80fd5b50508035926020909101359150565b5f60208284031215611f1d575f80fd5b5035919050565b5f805f60608486031215611f36575f80fd5b8335611f4181611e82565b92506020840135611f5181611e82565b929592945050506040919091013590565b5f8060408385031215611f73575f80fd5b8235611f7e81611e82565b9150611f8c60208401611ec0565b90509250929050565b5f60208284031215611fa5575f80fd5b8135610bce81611e82565b5f8083601f840112611fc0575f80fd5b50813567ffffffffffffffff811115611fd7575f80fd5b6020830191508360208260051b8501011115611ff1575f80fd5b9250929050565b5f805f805f6060868803121561200c575f80fd5b853561201781611e82565b9450602086013567ffffffffffffffff80821115612033575f80fd5b61203f89838a01611fb0565b90965094506040880135915080821115612057575f80fd5b5061206488828901611fb0565b969995985093965092949392505050565b5f805f8060808587031215612088575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f606084860312156120b6575f80fd5b83356120c181611e82565b925060208401356120d181611e82565b915060408401356120e181611e82565b809150509250925092565b5f80604083850312156120fd575f80fd5b823561210881611e82565b9150602083013561211881611e82565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a8057610a80612123565b5f8261216857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610a8057610a80612123565b81810381811115610a8057610a80612123565b5f602082840312156121b7575f80fd5b8151610bce81611e82565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122125784516001600160a01b0316835293830193918301916001016121ed565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612245575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122023872453b10a41dec9b9c717420dce86ed80d5b672fa7d11386ba365e4718d5164736f6c63430008170033
Deployed Bytecode Sourcemap
16847:13695:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16581:38;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;16581:38:0;;;;;;;;17818:56;;;;;;;;;;;;;;;;19423:71;;;;;;;;;;-1:-1:-1;19486:5:0;;;;;;;;;;;;-1:-1:-1;;;19486:5:0;;;;19423:71;;;;;;;:::i;19833:216::-;;;;;;;;;;-1:-1:-1;19833:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;19833:216:0;1205:187:1;25086:94:0;;;;;;;;;;-1:-1:-1;25086:94:0;;;;;:::i;:::-;;:::i;:::-;;29648:150;;;;;;;;;;-1:-1:-1;29648:150:0;;;;;:::i;:::-;;:::i;16800:39::-;;;;;;;;;;;;;;;;19171:88;;;;;;;;;;-1:-1:-1;19244:12:0;;19171:88;;24853:202;;;;;;;;;;-1:-1:-1;24853:202:0;;;;;:::i;:::-;;:::i;16756:37::-;;;;;;;;;;;;;;;;29122:184;;;;;;;;;;-1:-1:-1;29122:184:0;;;;;:::i;:::-;;:::i;20351:370::-;;;;;;;;;;-1:-1:-1;20351:370:0;;;;;:::i;:::-;;:::i;28773:112::-;;;;;;;;;;-1:-1:-1;28773:112:0;;;;;:::i;:::-;;:::i;29314:142::-;;;;;;;;;;;;;:::i;17881:53::-;;;;;;;;;;;;;;;;19265:71;;;;;;;;;;-1:-1:-1;16248:2:0;19265:71;;;2818:4:1;2806:17;;;2788:36;;2776:2;2761:18;19265:71:0;2646:184:1;16488:42:0;;;;;;;;;;;;;;;;27605:75;;;;;;;;;;;;;:::i;16059:74::-;;;;;;;;;;-1:-1:-1;16059:74:0;;;;-1:-1:-1;;;;;16059:74:0;;;;;;-1:-1:-1;;;;;2999:32:1;;;2981:51;;2969:2;2954:18;16059:74:0;2835:203:1;16537:37:0;;;;;;;;;;;;;;;;16443:38;;;;;;;;;;;;;;;;17547;;;;;;;;;;;;;;;25713:94;;;;;;;;;;-1:-1:-1;25713:94:0;;;;;:::i;:::-;;:::i;28083:131::-;;;;;;;;;;-1:-1:-1;28083:131:0;;;;;:::i;:::-;;:::i;20057:122::-;;;;;;;;;;-1:-1:-1;20057:122:0;;;;;:::i;:::-;;:::i;20974:97::-;;;;;;;;;;-1:-1:-1;20974:97:0;;;;;:::i;:::-;;:::i;20729:122::-;;;;;;;;;;-1:-1:-1;20729:122:0;;;;;:::i;:::-;;:::i;17634:38::-;;;;;;;;;;-1:-1:-1;17634:38:0;;;;;;;;;;;27688:121;;;;;;;;;;-1:-1:-1;27688:121:0;;;;;:::i;:::-;;:::i;17490:50::-;;;;;;;;;;;;;;;17781:30;;;;;;;;;;-1:-1:-1;17781:30:0;;;;;;;;19577:105;;;;;;;;;;-1:-1:-1;19577:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;19661:18:0;19643:7;19661:18;;;:9;:18;;;;;;;19577:105;29825:648;;;;;;;;;;-1:-1:-1;29825:648:0;;;;;:::i;:::-;;:::i;5763:103::-;;;;;;;;;;;;;:::i;17679:39::-;;;;;;;;;;-1:-1:-1;17679:39:0;;;;;;;;;;;15977:75;;;;;;;;;;-1:-1:-1;15977:75:0;;;;-1:-1:-1;;;;;15977:75:0;;;16377:59;;;;;;;;;;;;;;;;16314:56;;;;;;;;;;;;;;;;19500:71;;;;;;;;;;;;;:::i;5122:87::-;;;;;;;;;;-1:-1:-1;5195:6:0;;-1:-1:-1;;;;;5195:6:0;5122:87;;25286:419;;;;;;;;;;-1:-1:-1;25286:419:0;;;;;:::i;:::-;;:::i;19342:75::-;;;;;;;;;;-1:-1:-1;19407:7:0;;;;;;;;;;;;-1:-1:-1;;;19407:7:0;;;;19342:75;;20187:156;;;;;;;;;;-1:-1:-1;20187:156:0;;;;;:::i;:::-;;:::i;17361:36::-;;;;;;;;;;-1:-1:-1;17361:36:0;;;;-1:-1:-1;;;;;17361:36:0;;;25188:90;;;;;;;;;;-1:-1:-1;25188:90:0;;;;;:::i;:::-;;:::i;29464:176::-;;;;;;;;;;-1:-1:-1;29464:176:0;;;;;:::i;:::-;;:::i;28222:543::-;;;;;;;;;;-1:-1:-1;28222:543:0;;;;;:::i;:::-;;:::i;27817:121::-;;;;;;;;;;-1:-1:-1;27817:121:0;;;;;:::i;:::-;;:::i;19688:133::-;;;;;;;;;;-1:-1:-1;19688:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;19790:19:0;;;19772:7;19790:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19688:133;16670:79;;;;;;;;;;;;;;;;28893:221;;;;;;;;;;-1:-1:-1;28893:221:0;;;;;:::i;:::-;;:::i;6021:201::-;;;;;;;;;;-1:-1:-1;6021:201:0;;;;;:::i;:::-;;:::i;16626:37::-;;;;;;;;;;;;;;;;27946:129;;;;;;;;;;-1:-1:-1;27946:129:0;;;;;:::i;:::-;;:::i;17594:31::-;;;;;;;;;;-1:-1:-1;17594:31:0;;;;;;;;19833:216;19937:10;19908:4;19925:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19925:32:0;;;;;;;;;;:41;;;19982:37;19908:4;;19925:32;;19982:37;;;;19960:6;160:25:1;;148:2;133:18;;14:177;19982:37:0;;;;;;;;-1:-1:-1;20037:4:0;19833:216;;;;;:::o;25086:94::-;5008:13;:11;:13::i;:::-;25151:11:::1;:21:::0;;-1:-1:-1;;25151:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25086:94::o;29648:150::-;29728:4;29784:6;29752:29;29772:8;29752:19;:29::i;:::-;:38;;29648:150;-1:-1:-1;;;29648:150:0:o;24853:202::-;24926:17;24986:15;24946:21;;-1:-1:-1;;;;;24986:15:0;24978:69;25043:3;25012:28;25024:16;24946:21;25012:28;:::i;:::-;:34;;;;:::i;:::-;24978:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24915:140;24853:202;:::o;29122:184::-;5008:13;:11;:13::i;:::-;29221:15:::1;:25:::0;;;;29257:26:::1;:41:::0;29122:184::o;20351:370::-;-1:-1:-1;;;;;20471:19:0;;20451:4;20471:19;;;:11;:19;;;;;;;;20491:10;20471:31;;;;;;;;-1:-1:-1;;20471:52:0;20468:186;;20573:69;;;;;;;;;;;-1:-1:-1;;;20573:69:0;;;;;;;;-1:-1:-1;;;;;20573:19:0;;-1:-1:-1;20573:19:0;;;:11;:19;;;;;20593:10;20573:31;;;;;;;;;;:69;;20609:6;;20573:35;:69::i;:::-;-1:-1:-1;;;;;20539:19:0;;;;;;:11;:19;;;;;;;;20559:10;20539:31;;;;;;;:103;20468:186;20673:40;20687:6;20695:9;20706:6;20673:13;:40::i;:::-;20666:47;;20351:370;;;;;;:::o;28773:112::-;5008:13;:11;:13::i;:::-;28854::::1;:23:::0;28773:112::o;29314:142::-;29442:4;;-1:-1:-1;;;;;29442:4:0;29367:7;19661:18;;;:9;:18;;;;;;29394:54;;29421:4;;-1:-1:-1;;;;;29421:4:0;19643:7;19661:18;;;:9;:18;;;;;;29394:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;29387:61;;29314:142;:::o;27605:75::-;5008:13;:11;:13::i;:::-;27662:10:::1;:8;:10::i;:::-;27605:75::o:0;25713:94::-;5008:13;:11;:13::i;:::-;25779:11:::1;:20:::0;25713:94::o;28083:131::-;5008:13;:11;:13::i;:::-;-1:-1:-1;;;;;28173:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;28173:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28083:131::o;20057:122::-;20112:4;20136:35;20144:7;-1:-1:-1;;20136:7:0;:35::i;20974:97::-;5008:13;:11;:13::i;:::-;21042:12:::1;:21:::0;20974:97::o;20729:122::-;5008:13;:11;:13::i;:::-;20809:15:::1;:34:::0;20729:122::o;27688:121::-;5008:13;:11;:13::i;:::-;-1:-1:-1;;;;;27773:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;27773:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27688:121::o;29825:648::-;5008:13;:11;:13::i;:::-;29978:3:::1;29959:22:::0;::::1;29951:79;;;::::0;-1:-1:-1;;;29951:79:0;;7181:2:1;29951:79:0::1;::::0;::::1;7163:21:1::0;7220:2;7200:18;;;7193:30;7259:34;7239:18;;;7232:62;-1:-1:-1;;;7310:18:1;;;7303:43;7363:19;;29951:79:0::1;;;;;;;;;30049:33:::0;;::::1;30041:85;;;::::0;-1:-1:-1;;;30041:85:0;;7595:2:1;30041:85:0::1;::::0;::::1;7577:21:1::0;7634:2;7614:18;;;7607:30;7673:34;7653:18;;;7646:62;-1:-1:-1;;;7724:18:1;;;7717:38;7772:19;;30041:85:0::1;7393:404:1::0;30041:85:0::1;30139:12;30172:6:::0;30168:90:::1;30182:20:::0;;::::1;30168:90;;;30237:6;;30244:1;30237:9;;;;;;;:::i;:::-;;;;;;;30230:4;:16;;;;:::i;:::-;30223:23:::0;-1:-1:-1;30204:3:0::1;;30168:90;;;;30297:4;30278:15;30288:4;-1:-1:-1::0;;;;;19661:18:0;19643:7;19661:18;;;:9;:18;;;;;;;19577:105;30278:15:::1;:23;;30270:63;;;::::0;-1:-1:-1;;;30270:63:0;;8266:2:1;30270:63:0::1;::::0;::::1;8248:21:1::0;8305:2;8285:18;;;8278:30;8344:29;8324:18;;;8317:57;8391:18;;30270:63:0::1;8064:351:1::0;30270:63:0::1;30350:6;30346:110;30360:20:::0;;::::1;30346:110;;;30401:43;30416:4;30421:9;;30431:1;30421:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;30434:6;;30441:1;30434:9;;;;;;;:::i;:::-;;;;;;;30401:14;:43::i;:::-;-1:-1:-1::0;30382:3:0::1;;30346:110;;;;29938:535;29825:648:::0;;;;;:::o;5763:103::-;5008:13;:11;:13::i;:::-;5828:30:::1;5855:1;5828:18;:30::i;19500:71::-:0;19543:7;19561;5195:6;;-1:-1:-1;;;;;5195:6:0;;5122:87;25286:419;5008:13;:11;:13::i;:::-;25444:9:::1;:25:::0;;;25480:13:::1;:36:::0;;;25527:15:::1;:37:::0;;;25590:64:::1;25545:19:::0;25590:39:::1;25456:13:::0;25496:20;25590:17:::1;:39::i;:::-;:43:::0;::::1;:64::i;:::-;25575:12;:79:::0;25665:14:::1;:32:::0;-1:-1:-1;;;25286:419:0:o;20187:156::-;20267:4;20291:44;20305:10;20317:9;20328:6;20291:13;:44::i;25188:90::-;5008:13;:11;:13::i;:::-;25256:8:::1;:14:::0;25188:90::o;29464:176::-;29532:7;29559:73;29609:22;:20;:22::i;:::-;29559:45;29572:31;29601:1;29572:24;29582:13;-1:-1:-1;;;;;19661:18:0;19643:7;19661:18;;;:9;:18;;;;;;;19577:105;29572:24;:28;;:31::i;:::-;29559:8;;:12;:45::i;:::-;:49;;:73::i;28222:543::-;5008:13;:11;:13::i;:::-;28383:14:::1;::::0;;-1:-1:-1;;;;;28383:14:0;;::::1;28401:5;28371:27:::0;;;:11:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;28371:35:0;;::::1;::::0;;;28417:31;;::::1;::::0;;;;;;:38;;;::::1;::::0;::::1;::::0;;28478:15;;;::::1;28466:28:::0;;;;;:36;;;::::1;::::0;;28513:32;;::::1;::::0;;;;;;:39;;;::::1;::::0;::::1;::::0;;28565:11:::1;:32:::0;;;;;:39;;;;::::1;::::0;::::1;::::0;;;28617:21:::1;:46:::0;;;;;::::1;-1:-1:-1::0;;;;;;28617:46:0;;::::1;;::::0;;;28674:37;;;::::1;::::0;;::::1;::::0;;;28722:35;;;;::::1;;::::0;;28222:543::o;27817:121::-;5008:13;:11;:13::i;:::-;-1:-1:-1;;;;;27902:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;27902:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27817:121::o;28893:221::-;5008:13;:11;:13::i;:::-;28978::::1;;28968:7;:23;28965:134;;;29021:13;::::0;29008:10:::1;:26:::0;28893:221;:::o;28965:134::-:1;29067:10;:20:::0;;;28965:134:::1;28893:221:::0;:::o;6021:201::-;5008:13;:11;:13::i;:::-;-1:-1:-1;;;;;6110:22:0;::::1;6102:73;;;::::0;-1:-1:-1;;;6102:73:0;;8622:2:1;6102:73:0::1;::::0;::::1;8604:21:1::0;8661:2;8641:18;;;8634:30;8700:34;8680:18;;;8673:62;-1:-1:-1;;;8751:18:1;;;8744:36;8797:19;;6102:73:0::1;8420:402:1::0;6102:73:0::1;6186:28;6205:8;6186:18;:28::i;27946:129::-:0;5008:13;:11;:13::i;:::-;-1:-1:-1;;;;;28035:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;28035:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27946:129::o;5287:132::-;5195:6;;-1:-1:-1;;;;;5195:6:0;3753:10;5351:23;5343:68;;;;-1:-1:-1;;;5343:68:0;;9029:2:1;5343:68:0;;;9011:21:1;;;9048:18;;;9041:30;9107:34;9087:18;;;9080:62;9159:18;;5343:68:0;8827:356:1;7200:240:0;7320:7;7381:12;7373:6;;;;7365:29;;;;-1:-1:-1;;;7365:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;7416:5:0;;;7200:240::o;21079:2062::-;21191:6;;21171:4;;21191:6;;21188:63;;;21207:41;21222:6;21230:9;21241:6;21207:14;:41::i;:::-;21200:48;;;;21188:63;5195:6;;-1:-1:-1;;;;;21266:17:0;;;5195:6;;21266:17;;;;:41;;-1:-1:-1;5195:6:0;;-1:-1:-1;;;;;21287:20:0;;;5195:6;;21287:20;;21266:41;21263:115;;;21331:11;;;;21323:43;;;;-1:-1:-1;;;21323:43:0;;9390:2:1;21323:43:0;;;9372:21:1;9429:2;9409:18;;;9402:30;-1:-1:-1;;;9448:18:1;;;9441:50;9508:18;;21323:43:0;9188:344:1;21323:43:0;21418:13;-1:-1:-1;;;;;21405:26:0;;;;;;;21390:11;21462:26;;21405;21462:53;;;21502:13;-1:-1:-1;;;;;21492:23:0;:6;-1:-1:-1;;;;;21492:23:0;;;21462:53;21443:73;-1:-1:-1;;;;;;21533:26:0;;21554:4;21533:26;;;;:70;;-1:-1:-1;21598:4:0;;-1:-1:-1;;;;;21577:26:0;;;21598:4;;21577:26;;21533:70;:114;;;;;21634:13;-1:-1:-1;;;;;21621:26:0;:9;-1:-1:-1;;;;;21621:26:0;;;21533:114;:160;;;;-1:-1:-1;21678:15:0;;-1:-1:-1;;;;;21665:28:0;;;21678:15;;21665:28;;21533:160;:205;;;;-1:-1:-1;21724:14:0;;-1:-1:-1;;;;;21711:27:0;;;21724:14;;21711:27;;21533:205;:257;;;;-1:-1:-1;21769:21:0;;-1:-1:-1;;;;;21756:34:0;;;21769:21;;21756:34;;21533:257;21529:531;;;-1:-1:-1;;;;;19661:18:0;;21816;19661;;;:9;:18;;;;;;;;;21876:11;:22;;;;;;;;;21872:177;;21952:15;;21928:19;21941:6;21928:10;:19;:::i;:::-;21927:40;;21919:114;;;;-1:-1:-1;;;21919:114:0;;9739:2:1;21919:114:0;;;9721:21:1;9778:2;9758:18;;;9751:30;9817:34;9797:18;;;9790:62;9888:32;9868:18;;;9861:60;9938:19;;21919:114:0;9537:426:1;21919:114:0;21801:259;21529:531;22086:13;-1:-1:-1;;;;;22076:23:0;:6;-1:-1:-1;;;;;22076:23:0;;:58;;;;-1:-1:-1;22116:18:0;;;;;;;22076:58;:103;;;;-1:-1:-1;;;;;;22152:27:0;;;;;;:16;:27;;;;;;;;22151:28;22076:103;22072:317;;;-1:-1:-1;;;;;22213:24:0;;;;;;:13;:24;;;;;;22240:15;-1:-1:-1;22205:91:0;;;;-1:-1:-1;;;22205:91:0;;10170:2:1;22205:91:0;;;10152:21:1;10209:2;10189:18;;;10182:30;10248:34;10228:18;;;10221:62;-1:-1:-1;;;10299:18:1;;;10292:35;10344:19;;22205:91:0;9968:401:1;22205:91:0;22356:21;;22338:39;;22356:21;;;;;22338:15;:39;:::i;:::-;-1:-1:-1;;;;;22311:24:0;;;;;;:13;:24;;;;;:66;22072:317;-1:-1:-1;;;;;22405:26:0;;;;;;:15;:26;;;;;;;;22401:87;;22448:28;22461:6;22469;22448:12;:28::i;:::-;22547:53;;;;;;;;;;;-1:-1:-1;;;22547:53:0;;;;;;;;-1:-1:-1;;;;;22547:17:0;;-1:-1:-1;22547:17:0;;;:9;:17;;;;;;;;:53;;22569:6;;22547:21;:53::i;:::-;-1:-1:-1;;;;;22527:17:0;;;;;;:9;:17;;;;;:73;22638:6;22657:318;;;;22690:8;;:12;22687:100;;22740:31;22756:6;22764;22740:15;:31::i;:::-;22723:48;;22687:100;22657:318;;;-1:-1:-1;;;;;23748:19:0;;23723:4;23748:19;;;:11;:19;;;;;;;;23747:20;22836:64;;22894:6;22836:64;;;22860:31;22868:6;22876;22884;22860:7;:31::i;:::-;22819:81;;22932:16;:14;:16::i;:::-;22929:35;;;22951:10;:8;:10::i;:::-;-1:-1:-1;;;;;23010:20:0;;;;;;:9;:20;;;;;;:40;;23035:14;23010:24;:40::i;:::-;-1:-1:-1;;;;;22987:20:0;;;;;;;:9;:20;;;;;;;:63;;;;23068:43;;;;;;-1:-1:-1;;;;;;;;;;;23068:43:0;;;23096:14;160:25:1;;148:2;133:18;;14:177;23068:43:0;;;;;;;;-1:-1:-1;23129:4:0;;21079:2062;-1:-1:-1;;;;;;21079:2062:0:o;6776:98::-;6834:7;6861:5;6865:1;6861;:5;:::i;25815:1782::-;17983:6;:13;;-1:-1:-1;;17983:13:0;17992:4;17983:13;;;25910:15:::1;::::0;25927:26:::1;::::0;17983:6;;25894:60:::1;::::0;:15:::1;:60::i;:::-;:76;;25961:9;;25894:76;;;25957:1;25894:76;25864:106;;25981:23;26007:60;26065:1;26007:53;26047:12;;26007:35;26022:19;26007:10;;:14;;:35;;;;:::i;:60::-;25981:86;;26078:20;26101:31;26116:15;26101:10;;:14;;:31;;;;:::i;:::-;26169:16;::::0;;26183:1:::1;26169:16:::0;;;;;::::1;::::0;;26078:54;;-1:-1:-1;26145:21:0::1;::::0;26169:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;26169:16:0::1;26145:40;;26214:4;26196;26201:1;26196:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;26196:23:0::1;;;-1:-1:-1::0;;;;;26196:23:0::1;;;::::0;::::1;26240:14;-1:-1:-1::0;;;;;26240:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26230:4;26235:1;26230:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26230:31:0;;::::1;:7;::::0;;::::1;::::0;;;;;:31;26332:196:::1;::::0;-1:-1:-1;;;26332:196:0;;26298:21:::1;::::0;26332:14:::1;:65;::::0;::::1;::::0;:196:::1;::::0;26412:12;;26274:21:::1;::::0;26455:4;;26482::::1;::::0;26502:15:::1;::::0;26332:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26541:17;26561:40;26587:13;26561:21;:25;;:40;;;;:::i;:::-;26541:60:::0;-1:-1:-1;26614:19:0::1;26636:44;26653:26;:19:::0;26677:1:::1;26653:23;:26::i;:::-;26636:12;::::0;;:16:::1;:44::i;:::-;26614:66;;26693:26;26722:48;26768:1;26722:41;26751:11;26722:24;26736:9;;26722;:13;;:24;;;;:::i;:48::-;26693:77;;26781:26;26810:45;26843:11;26810:28;26824:13;;26810:9;:13;;:28;;;;:::i;:45::-;26781:74;;26866:25;26894:47;26929:11;26894:30;26908:15;;26894:9;:13;;:30;;;;:::i;:47::-;26955:15;26983::::0;;26975:72:::1;::::0;26866:75;;-1:-1:-1;26955:15:0;;-1:-1:-1;;;;;26983:15:0;;::::1;::::0;27037:5:::1;::::0;27012:18;;26955:15;26975:72;26955:15;26975:72;27012:18;26983:15;27037:5;26975:72:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;27082:14:0::1;::::0;27074:70:::1;::::0;26954:93;;-1:-1:-1;;;;;;27082:14:0::1;::::0;27134:5:::1;::::0;27110:17;;27074:70:::1;::::0;;;27110:17;27082:14;27134:5;27074:70:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;27202:5:0::1;::::0;-1:-1:-1;;27223:19:0;;;-1:-1:-1;27220:370:0::1;;27440:21;::::0;27258:252:::1;::::0;-1:-1:-1;;;27258:252:0;;27342:4:::1;27258:252;::::0;::::1;12431:34:1::0;12481:18;;;12474:34;;;-1:-1:-1;12524:18:1;;;12517:34;;;12567:18;;;12560:34;-1:-1:-1;;;;;27440:21:0;;::::1;12610:19:1::0;;;12603:44;27480:15:0::1;12663:19:1::0;;;12656:35;27258:14:0::1;:30:::0;;::::1;::::0;::::1;::::0;27296:18;;12365:19:1;;27258:252:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;27530:48:0::1;::::0;;13187:25:1;;;13243:2;13228:18;;13221:34;;;27530:48:0::1;::::0;-1:-1:-1;13160:18:1;27530:48:0::1;;;;;;;27220:370;-1:-1:-1::0;;18001:6:0;:14;;-1:-1:-1;;18001:14:0;;;-1:-1:-1;;;;;;;;;25815:1782:0:o;23149:330::-;23279:53;;;;;;;;;;;-1:-1:-1;;;23279:53:0;;;;;;;;-1:-1:-1;;;;;23279:17:0;;23242:4;23279:17;;;:9;:17;;;;;;;:53;;23301:6;;23279:21;:53::i;:::-;-1:-1:-1;;;;;23259:17:0;;;;;;;:9;:17;;;;;;:73;;;;23366:20;;;;;;;:32;;23391:6;23366:24;:32::i;:::-;-1:-1:-1;;;;;23343:20:0;;;;;;;:9;:20;;;;;;;:55;;;;23414:35;;;;;;-1:-1:-1;;;;;;;;;;;23414:35:0;;;23442:6;160:25:1;;148:2;133:18;;14:177;23414:35:0;;;;;;;;-1:-1:-1;23467:4:0;23149:330;;;;;:::o;6382:191::-;6475:6;;;-1:-1:-1;;;;;6492:17:0;;;-1:-1:-1;;;;;;6492:17:0;;;;;;;6525:40;;6475:6;;;6492:17;6475:6;;6525:40;;6456:16;;6525:40;6445:128;6382:191;:::o;6670:98::-;6728:7;6755:5;6759:1;6755;:5;:::i;6882:98::-;6940:7;6967:5;6971:1;6967;:5;:::i;6988:98::-;7046:7;7073:5;7077:1;7073;:5;:::i;23487:166::-;23584:12;;23574:6;:22;;:49;;;-1:-1:-1;;;;;;23600:23:0;;;;;;:15;:23;;;;;;;;23574:49;23566:79;;;;-1:-1:-1;;;23566:79:0;;13468:2:1;23566:79:0;;;13450:21:1;13507:2;13487:18;;;13480:30;-1:-1:-1;;;13526:18:1;;;13519:47;13583:18;;23566:79:0;13266:341:1;23566:79:0;23487:166;;:::o;23783:406::-;23858:7;23880:17;23900:8;;23880:28;;23919:17;23939:56;23974:14;;23991:3;23974:20;;;;:::i;:::-;23939:30;23965:3;23939:21;:6;23950:9;23939:10;:21::i;:56::-;24061:4;24043:24;;;;:9;:24;;;;;;23919:76;;-1:-1:-1;24043:39:0;;23919:76;24043:28;:39::i;:::-;24034:4;24016:24;;;;:9;:24;;;;;;;:66;;;;24098:42;;-1:-1:-1;;;;;24098:42:0;;;-1:-1:-1;;;;;;;;;;;24098:42:0;;;24130:9;160:25:1;;148:2;133:18;;14:177;24098:42:0;;;;;;;;24160:21;:6;24171:9;24160:10;:21::i;:::-;24153:28;23783:406;-1:-1:-1;;;;;23783:406:0:o;24197:458::-;24277:7;24297:17;24337:6;:35;;24361:11;;24337:35;;;24346:12;;24337:35;24325:47;;24385:17;24405:56;24440:14;;24457:3;24440:20;;;;:::i;:::-;24405:30;24431:3;24405:21;:6;24416:9;24405:10;:21::i;:56::-;24527:4;24509:24;;;;:9;:24;;;;;;24385:76;;-1:-1:-1;24509:39:0;;24385:76;24509:28;:39::i;:::-;24500:4;24482:24;;;;:9;:24;;;;;;;:66;;;;24564:42;;-1:-1:-1;;;;;24564:42:0;;;-1:-1:-1;;;;;;;;;;;24564:42:0;;;24596:9;160:25:1;;148:2;133:18;;14:177;24564:42:0;;;;;;;;24626:21;:6;24637:9;24626:10;:21::i;:::-;24619:28;24197:458;-1:-1:-1;;;;;;24197:458:0:o;24663:182::-;24712:4;24736:10;-1:-1:-1;;;;;24750:13:0;24736:27;;;;;:47;;-1:-1:-1;24777:6:0;;;;24776:7;24736:47;:101;;;;-1:-1:-1;;24824:13:0;;24814:4;24796:24;;;;:9;:24;;;;;;:41;;;24663:182::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:160::-;1462:20;;1518:13;;1511:21;1501:32;;1491:60;;1547:1;1544;1537:12;1491:60;1397:160;;;:::o;1562:180::-;1618:6;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1710:26;1726:9;1710:26;:::i;1747:248::-;1815:6;1823;1876:2;1864:9;1855:7;1851:23;1847:32;1844:52;;;1892:1;1889;1882:12;1844:52;-1:-1:-1;;1915:23:1;;;1985:2;1970:18;;;1957:32;;-1:-1:-1;1747:248:1:o;2000:180::-;2059:6;2112:2;2100:9;2091:7;2087:23;2083:32;2080:52;;;2128:1;2125;2118:12;2080:52;-1:-1:-1;2151:23:1;;2000:180;-1:-1:-1;2000:180:1:o;2185:456::-;2262:6;2270;2278;2331:2;2319:9;2310:7;2306:23;2302:32;2299:52;;;2347:1;2344;2337:12;2299:52;2386:9;2373:23;2405:31;2430:5;2405:31;:::i;:::-;2455:5;-1:-1:-1;2512:2:1;2497:18;;2484:32;2525:33;2484:32;2525:33;:::i;:::-;2185:456;;2577:7;;-1:-1:-1;;;2631:2:1;2616:18;;;;2603:32;;2185:456::o;3043:315::-;3108:6;3116;3169:2;3157:9;3148:7;3144:23;3140:32;3137:52;;;3185:1;3182;3175:12;3137:52;3224:9;3211:23;3243:31;3268:5;3243:31;:::i;:::-;3293:5;-1:-1:-1;3317:35:1;3348:2;3333:18;;3317:35;:::i;:::-;3307:45;;3043:315;;;;;:::o;3363:247::-;3422:6;3475:2;3463:9;3454:7;3450:23;3446:32;3443:52;;;3491:1;3488;3481:12;3443:52;3530:9;3517:23;3549:31;3574:5;3549:31;:::i;3850:367::-;3913:8;3923:6;3977:3;3970:4;3962:6;3958:17;3954:27;3944:55;;3995:1;3992;3985:12;3944:55;-1:-1:-1;4018:20:1;;4061:18;4050:30;;4047:50;;;4093:1;4090;4083:12;4047:50;4130:4;4122:6;4118:17;4106:29;;4190:3;4183:4;4173:6;4170:1;4166:14;4158:6;4154:27;4150:38;4147:47;4144:67;;;4207:1;4204;4197:12;4144:67;3850:367;;;;;:::o;4222:908::-;4353:6;4361;4369;4377;4385;4438:2;4426:9;4417:7;4413:23;4409:32;4406:52;;;4454:1;4451;4444:12;4406:52;4493:9;4480:23;4512:31;4537:5;4512:31;:::i;:::-;4562:5;-1:-1:-1;4618:2:1;4603:18;;4590:32;4641:18;4671:14;;;4668:34;;;4698:1;4695;4688:12;4668:34;4737:70;4799:7;4790:6;4779:9;4775:22;4737:70;:::i;:::-;4826:8;;-1:-1:-1;4711:96:1;-1:-1:-1;4914:2:1;4899:18;;4886:32;;-1:-1:-1;4930:16:1;;;4927:36;;;4959:1;4956;4949:12;4927:36;;4998:72;5062:7;5051:8;5040:9;5036:24;4998:72;:::i;:::-;4222:908;;;;-1:-1:-1;4222:908:1;;-1:-1:-1;5089:8:1;;4972:98;4222:908;-1:-1:-1;;;4222:908:1:o;5135:385::-;5221:6;5229;5237;5245;5298:3;5286:9;5277:7;5273:23;5269:33;5266:53;;;5315:1;5312;5305:12;5266:53;-1:-1:-1;;5338:23:1;;;5408:2;5393:18;;5380:32;;-1:-1:-1;5459:2:1;5444:18;;5431:32;;5510:2;5495:18;5482:32;;-1:-1:-1;5135:385:1;-1:-1:-1;5135:385:1:o;5525:529::-;5602:6;5610;5618;5671:2;5659:9;5650:7;5646:23;5642:32;5639:52;;;5687:1;5684;5677:12;5639:52;5726:9;5713:23;5745:31;5770:5;5745:31;:::i;:::-;5795:5;-1:-1:-1;5852:2:1;5837:18;;5824:32;5865:33;5824:32;5865:33;:::i;:::-;5917:7;-1:-1:-1;5976:2:1;5961:18;;5948:32;5989:33;5948:32;5989:33;:::i;:::-;6041:7;6031:17;;;5525:529;;;;;:::o;6059:388::-;6127:6;6135;6188:2;6176:9;6167:7;6163:23;6159:32;6156:52;;;6204:1;6201;6194:12;6156:52;6243:9;6230:23;6262:31;6287:5;6262:31;:::i;:::-;6312:5;-1:-1:-1;6369:2:1;6354:18;;6341:32;6382:33;6341:32;6382:33;:::i;:::-;6434:7;6424:17;;;6059:388;;;;;:::o;6452:127::-;6513:10;6508:3;6504:20;6501:1;6494:31;6544:4;6541:1;6534:15;6568:4;6565:1;6558:15;6584:168;6657:9;;;6688;;6705:15;;;6699:22;;6685:37;6675:71;;6726:18;;:::i;6757:217::-;6797:1;6823;6813:132;;6867:10;6862:3;6858:20;6855:1;6848:31;6902:4;6899:1;6892:15;6930:4;6927:1;6920:15;6813:132;-1:-1:-1;6959:9:1;;6757:217::o;7802:127::-;7863:10;7858:3;7854:20;7851:1;7844:31;7894:4;7891:1;7884:15;7918:4;7915:1;7908:15;7934:125;7999:9;;;8020:10;;;8017:36;;;8033:18;;:::i;10374:128::-;10441:9;;;10462:11;;;10459:37;;;10476:18;;:::i;10639:251::-;10709:6;10762:2;10750:9;10741:7;10737:23;10733:32;10730:52;;;10778:1;10775;10768:12;10730:52;10810:9;10804:16;10829:31;10854:5;10829:31;:::i;10895:980::-;11157:4;11205:3;11194:9;11190:19;11236:6;11225:9;11218:25;11262:2;11300:6;11295:2;11284:9;11280:18;11273:34;11343:3;11338:2;11327:9;11323:18;11316:31;11367:6;11402;11396:13;11433:6;11425;11418:22;11471:3;11460:9;11456:19;11449:26;;11510:2;11502:6;11498:15;11484:29;;11531:1;11541:195;11555:6;11552:1;11549:13;11541:195;;;11620:13;;-1:-1:-1;;;;;11616:39:1;11604:52;;11711:15;;;;11676:12;;;;11652:1;11570:9;11541:195;;;-1:-1:-1;;;;;;;11792:32:1;;;;11787:2;11772:18;;11765:60;-1:-1:-1;;;11856:3:1;11841:19;11834:35;11753:3;10895:980;-1:-1:-1;;;10895:980:1:o;12702:306::-;12790:6;12798;12806;12859:2;12847:9;12838:7;12834:23;12830:32;12827:52;;;12875:1;12872;12865:12;12827:52;12904:9;12898:16;12888:26;;12954:2;12943:9;12939:18;12933:25;12923:35;;12998:2;12987:9;12983:18;12977:25;12967:35;;12702:306;;;;;:::o
Swarm Source
ipfs://23872453b10a41dec9b9c717420dce86ed80d5b672fa7d11386ba365e4718d51
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.