Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
10,000,000 GTC
Holders
66
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.05 GTCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GrandtoClub
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "./IERC20.sol"; import "./blacklist.sol"; import "./safeMath.sol"; import "./ownable.sol"; import "./address.sol"; import "./liquifier.sol"; import "./IERC20Metadata.sol"; /** * Tokenomics: * Liquidity 3% * Dev 2% */ abstract contract Tokenomics { using SafeMath for uint256; // !!! IMPORTANT !!!! address public uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; /// SET THE SAME ROUTER ADDRESS ON LIQUIFIER CONTRACT BELOW !! // --------------------- Token Settings ------------------- // address public developerFEEAddress = 0xb280eB22334f4c3b0cC2fE6C5665FE11B15AE5e3; /** * * The value of fees is given in part per 1000 (based on the value of FEES_DIVISOR), * e.g. for 5% use 50, for 3.5% use 35, etc. */ uint256 public _devFee = 20; // 2% uint256 public _liqFee = 30; // 3% string internal constant NAME = "GrandtoClub"; string internal constant SYMBOL = "GTC"; uint16 internal constant FEES_DIVISOR = 10**3; uint8 internal constant DECIMALS = 18; uint256 internal constant ZEROES = 10**DECIMALS; uint256 private constant MAX = ~uint256(0); uint256 internal constant TOTAL_SUPPLY = 10000000 * ZEROES; // 10 MM /** * @dev Set the maximum transaction amount allowed in a transfer. * */ uint256 public constant maxTransactionAmount = 75000 * ZEROES; // 0.75% of the total supply //75000 /** * * IMPORTANT: This value MUST be greater than `numberOfTokensToSwapToLiquidity` set below, * otherwise the liquidity swap will never be executed */ uint256 public constant maxWalletBalance = 150000 * ZEROES; // 1.5% of the total supply //150000 /** * @dev Set the number of tokens to swap and add to liquidity. * See: `Liquifier` */ uint256 public constant numberOfTokensToSwapToLiquidity = TOTAL_SUPPLY / 1000; // 0.1% of the total supply //10k in contract before liq // --------------------- Fees Settings ------------------- // enum FeeType { Liquidity, ExternalToETH } struct Fee { FeeType name; uint256 value; address recipient; uint256 total; } Fee[] internal fees; uint256 internal sumOfFees; constructor() { _addFees(); } function _addFee( FeeType name, uint256 value, address recipient ) private { fees.push(Fee(name, value, recipient, 0)); sumOfFees += value; } function _addFees() private { /** * * The value of fees is given in part per 1000 (based on the value of FEES_DIVISOR), * e.g. for 5% use 50, for 3.5% use 35, etc. */ _addFee(FeeType.Liquidity, _liqFee, address(this)); //2% _addFee(FeeType.ExternalToETH, _devFee, developerFEEAddress); //2% } function _getFeesCount() internal view returns (uint256) { return fees.length; } function _getFeeStruct(uint256 index) private view returns (Fee storage) { require( index >= 0 && index < fees.length, "FeesSettings._getFeeStruct: Fee index out of bounds" ); return fees[index]; } function _getFee(uint256 index) internal view returns ( FeeType, uint256, address, uint256 ) { Fee memory fee = _getFeeStruct(index); return (fee.name, fee.value, fee.recipient, fee.total); } function _addFeeCollectedAmount(uint256 index, uint256 amount) internal { Fee storage fee = _getFeeStruct(index); fee.total = fee.total.add(amount); } // function getCollectedFeeTotal(uint256 index) external view returns (uint256){ function getCollectedFeeTotal(uint256 index) internal view returns (uint256) { Fee memory fee = _getFeeStruct(index); return fee.total; } } abstract contract Base is IERC20, IERC20Metadata, Ownable, Tokenomics, Blacklist { using SafeMath for uint256; using Address for address; mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; mapping(address => bool) internal _isExcludedFromFee; constructor() { _balances[owner()] = TOTAL_SUPPLY; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[developerFEEAddress] = true; _isExcludedFromFee[uniswapV2Router] = true; _isExcludedFromFee[address(this)] = true; _addToWhitelistedSenders(owner()); _addToWhitelistedSenders(developerFEEAddress); _addToWhitelistedSenders(address(this)); _addToWhitelistedSenders(uniswapV2Router); _addToWhitelistedRecipients(owner()); _addToWhitelistedRecipients(developerFEEAddress); _addToWhitelistedRecipients(address(this)); _addToWhitelistedRecipients(uniswapV2Router); emit Transfer(address(0), owner(), TOTAL_SUPPLY); } function changeDevFeeAddress(address _newDevFeeAddress) public onlyOwner { developerFEEAddress = _newDevFeeAddress; } function changeDevFee(uint256 _newDevFee) public onlyOwner { uint256 _sumOfFees = _liqFee + _newDevFee; require(_sumOfFees <= 50, "Total fees cannot be more than 5%"); _devFee = _newDevFee; } function changeLiqFee(uint256 _newLiqFee) public onlyOwner { uint256 _sumOfFees = _devFee + _newLiqFee; require(_sumOfFees <= 50, "Total fees cannot be more than 5%"); _liqFee = _newLiqFee; } function blackListWallets(address _wallet, bool _status) public onlyOwner { antiBot._blacklistedUsers[_wallet] = _status; // true or false } // BLACKLIST ARRAY OF ADDRESSES EG: ["0X000...","0X000","0X000"],true function blackListWalletsBulk(address[] memory _wallets, bool _status) public onlyOwner { for (uint256 i = 0; i < _wallets.length; i++) { antiBot._blacklistedUsers[_wallets[i]] = _status; } } function removeBlackListWallet(address _wallet) public onlyOwner { antiBot._blacklistedUsers[_wallet] = false; } function removeBlackListWalletBulk(address[] memory _wallets) public onlyOwner { for (uint256 i = 0; i < _wallets.length; i++) { antiBot._blacklistedUsers[_wallets[i]] = false; } } /** Functions required by IERC20Metadata **/ function name() external pure override returns (string memory) { return NAME; } function symbol() external pure override returns (string memory) { return SYMBOL; } function decimals() external pure override returns (uint8) { return DECIMALS; } /** Functions required by IERC20 **/ function totalSupply() external pure override returns (uint256) { return TOTAL_SUPPLY; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function setExcludedFromFee(address account, bool value) external onlyOwner { _isExcludedFromFee[account] = value; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) internal { require( owner != address(0), "BaseRfiToken: approve from the zero address" ); require( spender != address(0), "BaseRfiToken: approve to the zero address" ); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } address[] private whitelistedSenders; address[] private whitelistedRecipients; function _isUnlimitedSender(address account) public view returns (bool) { // check if the provided address is in the whitelisted senders array or is the owner for (uint256 i = 0; i < whitelistedSenders.length; i++) { if (account == whitelistedSenders[i] || account == owner()) { return true; } } return false; } function _isUnlimitedRecipient(address account) public view returns (bool) { // check if the provided address is in the whitelisted recipients array or is the owner for (uint256 i = 0; i < whitelistedRecipients.length; i++) { if (account == whitelistedRecipients[i] || account == owner()) { return true; } } return false; } function _addToWhitelistedSenders(address account) internal { whitelistedSenders.push(account); } function addToWhitelistedSenders(address account) external onlyOwner { whitelistedSenders.push(account); } function removeFromWhitelistedSenders(address account) external onlyOwner { for (uint256 i = 0; i < whitelistedSenders.length; i++) { if (whitelistedSenders[i] == account) { whitelistedSenders[i] = whitelistedSenders[ whitelistedSenders.length - 1 ]; whitelistedSenders.pop(); break; } } } function _addToWhitelistedRecipients(address account) internal { whitelistedRecipients.push(account); } function addToWhitelistedRecipients(address account) external onlyOwner { whitelistedRecipients.push(account); } function removeFromWhitelistedRecipients(address account) external onlyOwner { for (uint256 i = 0; i < whitelistedRecipients.length; i++) { if (whitelistedRecipients[i] == account) { whitelistedRecipients[i] = whitelistedRecipients[ whitelistedRecipients.length - 1 ]; whitelistedRecipients.pop(); break; } } } bool public tradeStarted = false; // once enabled, can never be turned off function EnableTrading() external onlyOwner { tradeStarted = true; } modifier isTradeStarted(address from, address to) { if (!tradeStarted) { require( _isUnlimitedSender(from) || _isUnlimitedRecipient(to), "trade not started" ); } _; } function _transfer( address sender, address recipient, uint256 amount ) private isTradeStarted(sender, recipient) { require( sender != address(0), "BaseRfiToken: transfer from the zero address" ); require( recipient != address(0), "BaseRfiToken: transfer to the zero address" ); require(amount > 0, "Transfer amount must be greater than zero"); require( !antiBot._blacklistedUsers[recipient] && !antiBot._blacklistedUsers[sender], "You are not allowed" ); // indicates whether or not feee should be deducted from the transfer bool takeFee = true; if ( amount > maxTransactionAmount && !_isUnlimitedSender(sender) && !_isUnlimitedRecipient(recipient) ) { revert("Transfer amount exceeds the maxTxAmount."); } if ( maxWalletBalance > 0 && !_isUnlimitedSender(sender) && !_isUnlimitedRecipient(recipient) && !_isV2Pair(recipient) ) { uint256 recipientBalance = balanceOf(recipient); require( recipientBalance + amount <= maxWalletBalance, "New balance would exceed the maxWalletBalance" ); } // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) { takeFee = false; } _beforeTokenTransfer(sender, recipient, amount, takeFee); _transferTokens(sender, recipient, amount, takeFee); } function _transferTokens( address sender, address recipient, uint256 amount, bool takeFee ) private { uint256 sumOfFees = _getSumOfFees(sender, amount); if (!takeFee) { sumOfFees = 0; } (uint256 tAmount, uint256 tTransferAmount) = _getValues( amount, sumOfFees ); _balances[sender] = _balances[sender].sub(tAmount); _balances[recipient] = _balances[recipient].add(tTransferAmount); _takeFees(amount, sumOfFees); emit Transfer(sender, recipient, tTransferAmount); } function _takeFees(uint256 amount, uint256 sumOfFees) private { if (sumOfFees > 0) { _takeTransactionFees(amount); } } function _getValues(uint256 tAmount, uint256 feesSum) internal pure returns (uint256, uint256) { uint256 tTotalFees = tAmount.mul(feesSum).div(FEES_DIVISOR); uint256 tTransferAmount = tAmount.sub(tTotalFees); return (tAmount, tTransferAmount); } function _getCurrentSupply() internal pure returns (uint256) { uint256 tSupply = TOTAL_SUPPLY; return (tSupply); } /** * @dev Hook that is called before any transfer of tokens. */ function _beforeTokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) internal virtual; function _getSumOfFees(address sender, uint256 amount) internal view virtual returns (uint256); /** * @dev A delegate which should return true if the given address is the V2 Pair and false otherwise */ function _isV2Pair(address account) internal view virtual returns (bool); /** * @dev Hook that is called before the `Transfer` event is emitted if fees are enabled for the transfer */ function _takeTransactionFees(uint256 amount) internal virtual; } abstract contract Grandto is Base, Liquifier { using SafeMath for uint256; // constructor(string memory _name, string memory _symbol, uint8 _decimals){ constructor(Env _env) { initializeLiquiditySwapper( _env, maxTransactionAmount, numberOfTokensToSwapToLiquidity ); } function _isV2Pair(address account) internal view override returns (bool) { return (account == _pair); } function _getSumOfFees(address sender, uint256 amount) internal view override returns (uint256) { return _getAntiwhaleFees(balanceOf(sender), amount); } function _getAntiwhaleFees(uint256, uint256) internal view returns (uint256) { return sumOfFees; } // function _beforeTokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) internal override { function _beforeTokenTransfer( address sender, address, uint256, bool ) internal override { uint256 contractTokenBalance = balanceOf(address(this)); liquify(contractTokenBalance, sender); } function _takeTransactionFees(uint256 amount) internal override { uint256 feesCount = _getFeesCount(); for (uint256 index = 0; index < feesCount; index++) { (FeeType name, uint256 value, address recipient, ) = _getFee(index); // no need to check value < 0 as the value is uint (i.e. from 0 to 2^256-1) if (value == 0) continue; else if (name == FeeType.ExternalToETH) { _takeFee(amount, value, recipient, index); } else { _takeFee(amount, value, recipient, index); } } } function _takeFee( uint256 amount, uint256 fee, address recipient, uint256 index ) private { uint256 tAmount = amount.mul(fee).div(FEES_DIVISOR); _balances[recipient] = _balances[recipient].add(tAmount); _addFeeCollectedAmount(index, tAmount); } function _approveDelegate( address owner, address spender, uint256 amount ) internal override { _approve(owner, spender, amount); } } contract GrandtoClub is Grandto { constructor() Grandto(Env.MainnetV2) { // pre-approve the initial liquidity supply (to safe a bit of time) _approve(owner(), address(_router), ~uint256(0)); } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "./IERC20.sol"; interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "./ownable.sol"; import "./safeMath.sol"; import "./uniswap.sol"; abstract contract Liquifier is Ownable { using SafeMath for uint256; uint256 private withdrawableBalance; enum Env { MainnetV2 } Env private _env; address public _mainnetRouterV2Address = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IPancakeV2Router internal _router; address internal _pair; bool private inSwapAndLiquify; bool private swapAndLiquifyEnabled = true; uint256 private maxTransactionAmount; uint256 private numberOfTokensToSwapToLiquidity; modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } event RouterSet(address indexed router); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event SwapAndLiquifyEnabledUpdated(bool enabled); event LiquidityAdded( uint256 tokenAmountSent, uint256 ethAmountSent, uint256 liquidity ); receive() external payable {} function initializeLiquiditySwapper( Env env, uint256 maxTx, uint256 liquifyAmount ) internal { _env = env; if (_env == Env.MainnetV2) { _setRouterAddress(_mainnetRouterV2Address); } maxTransactionAmount = maxTx; numberOfTokensToSwapToLiquidity = liquifyAmount; } /** * NOTE: passing the `contractTokenBalance` here is preferred to creating `balanceOfDelegate` */ function liquify(uint256 contractTokenBalance, address sender) internal { if (contractTokenBalance >= maxTransactionAmount) contractTokenBalance = maxTransactionAmount; bool isOverRequiredTokenBalance = (contractTokenBalance >= numberOfTokensToSwapToLiquidity); /** * - first check if the contract has collected enough tokens to swap and liquify * - then check swap and liquify is enabled * - then make sure not to get caught in a circular liquidity event * - finally, don't swap & liquify if the sender is the uniswap pair */ if ( isOverRequiredTokenBalance && swapAndLiquifyEnabled && !inSwapAndLiquify && (sender != _pair) ) { // TODO check if the `(sender != _pair)` is necessary because that basically // stops swap and liquify for all "buy" transactions _swapAndLiquify(contractTokenBalance); } } /** * @dev sets the router address and created the router, factory pair to enable * swapping and liquifying (contract) tokens */ function _setRouterAddress(address router) private { IPancakeV2Router _newPancakeRouter = IPancakeV2Router(router); _pair = IPancakeV2Factory(_newPancakeRouter.factory()).createPair( address(this), _newPancakeRouter.WETH() ); _router = _newPancakeRouter; emit RouterSet(router); } function _swapAndLiquify(uint256 amount) private lockTheSwap { // split the contract balance into halves uint256 half = amount.div(2); uint256 otherHalf = amount.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH _swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap _addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function _swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approveDelegate(address(this), address(_router), tokenAmount); // make the swap _router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approveDelegate(address(this), address(_router), tokenAmount); // add tahe liquidity ( uint256 tokenAmountSent, uint256 ethAmountSent, uint256 liquidity ) = _router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); // fix the forever locked BNBs/ETH as per the certik's audit /** * The swapAndLiquify function converts half of the contractTokenBalance SafeMoon tokens to BNB. * For every swapAndLiquify function call, a small amount of BNB remains in the contract. * This amount grows over time with the swapAndLiquify function being called throughout the life * of the contract. EG: The Safemoon contract does not contain a method to withdraw these funds, * and the ETH/BNB will be locked in the Safemoon v1 contract forever. */ withdrawableBalance = address(this).balance; emit LiquidityAdded(tokenAmountSent, ethAmountSent, liquidity); } /** * @dev The owner can withdraw ETH(BNB) collected in the contract from `swapAndLiquify` * or if someone (accidentally) sends ETH/BNB directly to the contract. * * Note: This addresses the contract flaw pointed out in the Certik Audit of Safemoon (SSL-03): * * The swapAndLiquify function converts half of the contractTokenBalance SafeMoon tokens to BNB. * For every swapAndLiquify function call, a small amount of BNB remains in the contract. * This amount grows over time with the swapAndLiquify function being called * throughout the life of the contract. The Safemoon contract does not contain a method * to withdraw these funds, and the BNB will be locked in the Safemoon contract forever. * https://www.certik.org/projects/safemoon */ function withdrawLockedEth(address payable recipient) external onlyOwner { require( recipient != address(0), "Cannot withdraw the ETH balance to the zero address" ); require( withdrawableBalance > 0, "The ETH balance must be greater than 0" ); // prevent re-entrancy attacks uint256 amount = withdrawableBalance; withdrawableBalance = 0; recipient.transfer(amount); } /** * @dev Sends the swap and liquify flag to the provided value. If set to `false` tokens collected in the contract will * NOT be converted into liquidity. */ function setSwapAndLiquifyEnabled(bool enabled) external onlyOwner { swapAndLiquifyEnabled = enabled; emit SwapAndLiquifyEnabledUpdated(swapAndLiquifyEnabled); } /** * @dev Use this delegate instead of having (unnecessarily) extend `BaseRfiToken` to gained access * to the `_approve` function. */ function _approveDelegate( address owner, address spender, uint256 amount ) internal virtual; }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; 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); } } } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "./context.sol"; abstract contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; 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; } } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; contract Blacklist { struct AntiBot { mapping(address => bool) _blacklistedUsers; } AntiBot antiBot; }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; 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 ); }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; 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; } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IPancakeV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IPancakeV2Router { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
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":"tokenAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"LiquidityAdded","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":"router","type":"address"}],"name":"RouterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_isUnlimitedRecipient","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_isUnlimitedSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainnetRouterV2Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addToWhitelistedRecipients","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addToWhitelistedSenders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blackListWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blackListWalletsBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDevFee","type":"uint256"}],"name":"changeDevFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newDevFeeAddress","type":"address"}],"name":"changeDevFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLiqFee","type":"uint256"}],"name":"changeLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"developerFEEAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numberOfTokensToSwapToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"removeBlackListWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"}],"name":"removeBlackListWalletBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromWhitelistedRecipients","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromWhitelistedSenders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[],"name":"tradeStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"withdrawLockedEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600380546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556004805490911673b280eb22334f4c3b0cc2fe6c5665fe11b15ae5e31790556014600555601e600655600f805460ff1916905560118054747a250d5630b4cf539739df2c5dacb4c659f2488d00610100600160a81b03199091161790556013805460ff60a81b1916600160a81b179055348015620000aa57600080fd5b50600080546001600160a01b031916339081178255604051819083907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000f6620003f8565b620001046012600a6200098b565b62000113906298968062000a4c565b600a60006200012a6000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600c6000620001646200042d60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560045482168152600c909352818320805485166001908117909155600354909116835281832080548516821790553083529120805490921617905562000225620001e46000546001600160a01b031690565b600d8054600181018255600091909152600080516020620033238339815191520180546001600160a01b0319166001600160a01b0392909216919091179055565b60048054600d8054600180820183556000805160206200332383398151915291820180546001600160a01b03199081166001600160a01b0396871617909155835480830185558301805482163090811790915560038054865480860190975595909401805483169587169590951790945560008054600e805480860182558184527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9081018054938a1693861693909317909255975488548086018a55820180548516918916919091179055875480850189558101805484169096179095559254865492830190965592018054909216938316939093179055815416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003516012600a6200098b565b62000360906298968062000a4c565b60405190815260200160405180910390a3620003c581620003846012600a6200098b565b6200039390620124f862000a4c565b6103e8620003a46012600a6200098b565b620003b3906298968062000a4c565b620003bf919062000921565b6200043c565b50620003f2620003dd6000546001600160a01b031690565b6012546001600160a01b0316600019620004c0565b62000a84565b6200040e600060065430620005fb60201b60201c565b6005546004546200042b916001916001600160a01b0316620005fb565b565b6000546001600160a01b031690565b6011805484919060ff191660018380156200046757634e487b7160e01b600052602160045260246000fd5b0217905550600060115460ff1680156200049157634e487b7160e01b600052602160045260246000fd5b1415620004b457601154620004b49061010090046001600160a01b0316620006f7565b60149190915560155550565b6001600160a01b038316620005305760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b6001600160a01b0382166200059a5760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b606482015260840162000527565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600760405180608001604052808560018111156200062957634e487b7160e01b600052602160045260246000fd5b815260208082018690526001600160a01b03851660408301526000606090920182905283546001818101865594835291208251600490920201805492939092839160ff199091169083818111156200069157634e487b7160e01b600052602160045260246000fd5b02179055506020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015550508160086000828254620006ed919062000906565b9091555050505050565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200073657600080fd5b505afa1580156200074b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007719190620008d6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620007ba57600080fd5b505afa158015620007cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007f59190620008d6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200083e57600080fd5b505af115801562000853573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008799190620008d6565b601380546001600160a01b03199081166001600160a01b039384161790915560128054909116838316179055604051908316907fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d1590600090a25050565b600060208284031215620008e8578081fd5b81516001600160a01b0381168114620008ff578182fd5b9392505050565b600082198211156200091c576200091c62000a6e565b500190565b6000826200093d57634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156200098357816000190482111562000967576200096762000a6e565b808516156200097557918102915b93841c939080029062000947565b509250929050565b6000620008ff60ff841683600082620009a75750600162000a46565b81620009b65750600062000a46565b8160018114620009cf5760028114620009da57620009fa565b600191505062000a46565b60ff841115620009ee57620009ee62000a6e565b50506001821b62000a46565b5060208310610133831016604e8410600b841016171562000a1f575081810a62000a46565b62000a2b838362000942565b806000190482111562000a425762000a4262000a6e565b0290505b92915050565b600081600019048311821515161562000a695762000a6962000a6e565b500290565b634e487b7160e01b600052601160045260246000fd5b61288f8062000a946000396000f3fe6080604052600436106102555760003560e01c806385fe5fbd11610139578063bbde77c1116100b6578063dd62ed3e1161007a578063dd62ed3e1461071c578063ed08ae2e14610762578063f2fde38b14610782578063f6372cab146107a2578063fac6529a146107b8578063fd547e11146107d857600080fd5b8063bbde77c114610692578063bd69fbe4146106a7578063c49b9a80146106c7578063c8c8ebe4146106e7578063dc1a3add146106fc57600080fd5b806395d89b41116100fd57806395d89b41146105f0578063a457c2d71461061c578063a9059cbb1461063c578063aa45026b1461065c578063b7671a0d1461067257600080fd5b806385fe5fbd1461055257806386d506db14610572578063876da9fa146105925780638c52c6c8146105b25780638da5cb5b146105d257600080fd5b806332049b2c116101d2578063602bc62b11610196578063602bc62b146104925780636612e66f146104a757806370a08231146104c7578063715018a6146104fd5780637ab52a761461051257806381c4322b1461053257600080fd5b806332049b2c146103d457806339509351146103f45780634c544c771461041457806351c0d937146104345780635342acb41461045957600080fd5b80631d97b7cd116102195780631d97b7cd1461034757806323b872dd1461035e5780632858fe8c1461037e57806329d42dbd1461039e578063313ce567146103b857600080fd5b806306fdde0314610261578063095ea7b3146102a75780630b76dbec146102d75780631694505e146102fa57806318160ddd1461033257600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201909152600b81526a23b930b7323a37a1b63ab160a91b60208201525b60405161029e9190612518565b60405180910390f35b3480156102b357600080fd5b506102c76102c2366004612410565b6107f8565b604051901515815260200161029e565b3480156102e357600080fd5b506102ec61080f565b60405190815260200161029e565b34801561030657600080fd5b5060035461031a906001600160a01b031681565b6040516001600160a01b03909116815260200161029e565b34801561033e57600080fd5b506102ec610838565b34801561035357600080fd5b5061035c610858565b005b34801561036a57600080fd5b506102c761037936600461239c565b61089a565b34801561038a57600080fd5b5061035c6103993660046124d3565b610903565b3480156103aa57600080fd5b50600f546102c79060ff1681565b3480156103c457600080fd5b506040516012815260200161029e565b3480156103e057600080fd5b506102c76103ef36600461232c565b610966565b34801561040057600080fd5b506102c761040f366004612410565b6109f0565b34801561042057600080fd5b5061035c61042f36600461232c565b610a26565b34801561044057600080fd5b5060115461031a9061010090046001600160a01b031681565b34801561046557600080fd5b506102c761047436600461232c565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561049e57600080fd5b506002546102ec565b3480156104b357600080fd5b5061035c6104c23660046123dc565b610aa2565b3480156104d357600080fd5b506102ec6104e236600461232c565b6001600160a01b03166000908152600a602052604090205490565b34801561050957600080fd5b5061035c610af7565b34801561051e57600080fd5b5061035c61052d3660046124d3565b610b6b565b34801561053e57600080fd5b506102c761054d36600461232c565b610bce565b34801561055e57600080fd5b5060045461031a906001600160a01b031681565b34801561057e57600080fd5b5061035c61058d36600461232c565b610c4f565b34801561059e57600080fd5b5061035c6105ad36600461243b565b610c9b565b3480156105be57600080fd5b5061035c6105cd3660046123dc565b610d42565b3480156105de57600080fd5b506000546001600160a01b031661031a565b3480156105fc57600080fd5b5060408051808201909152600381526247544360e81b6020820152610291565b34801561062857600080fd5b506102c7610637366004612410565b610d97565b34801561064857600080fd5b506102c7610657366004612410565b610de6565b34801561066857600080fd5b506102ec60055481565b34801561067e57600080fd5b5061035c61068d36600461232c565b610df3565b34801561069e57600080fd5b506102ec610f36565b3480156106b357600080fd5b5061035c6106c236600461232c565b610f4f565b3480156106d357600080fd5b5061035c6106e23660046124b9565b6110b9565b3480156106f357600080fd5b506102ec61113e565b34801561070857600080fd5b5061035c61071736600461232c565b611157565b34801561072857600080fd5b506102ec610737366004612364565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561076e57600080fd5b5061035c61077d366004612476565b61129b565b34801561078e57600080fd5b5061035c61079d36600461232c565b61133d565b3480156107ae57600080fd5b506102ec60065481565b3480156107c457600080fd5b5061035c6107d336600461232c565b611427565b3480156107e457600080fd5b5061035c6107f336600461232c565b611472565b60006108053384846114ee565b5060015b92915050565b6103e861081e6012600a6126cc565b61082b9062989680612777565b6108359190612669565b81565b60006108466012600a6126cc565b6108539062989680612777565b905090565b6000546001600160a01b0316331461088b5760405162461bcd60e51b81526004016108829061256b565b60405180910390fd5b600f805460ff19166001179055565b60006108a7848484611621565b6108f984336108f48560405180606001604052806028815260200161280d602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611a4b565b6114ee565b5060019392505050565b6000546001600160a01b0316331461092d5760405162461bcd60e51b81526004016108829061256b565b60008160055461093d9190612651565b905060328111156109605760405162461bcd60e51b8152600401610882906125a0565b50600655565b6000805b600e548110156109e757600e818154811061099557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03848116911614806109c757506000546001600160a01b038481169116145b156109d55750600192915050565b806109df816127ad565b91505061096a565b50600092915050565b336000818152600b602090815260408083206001600160a01b038716845290915281205490916108059185906108f49086611a77565b6000546001600160a01b03163314610a505760405162461bcd60e51b81526004016108829061256b565b600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610acc5760405162461bcd60e51b81526004016108829061256b565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b215760405162461bcd60e51b81526004016108829061256b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b955760405162461bcd60e51b81526004016108829061256b565b600081600654610ba59190612651565b90506032811115610bc85760405162461bcd60e51b8152600401610882906125a0565b50600555565b6000805b600d548110156109e757600d8181548110610bfd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0384811691161480610c2f57506000546001600160a01b038481169116145b15610c3d5750600192915050565b80610c47816127ad565b915050610bd2565b6000546001600160a01b03163314610c795760405162461bcd60e51b81526004016108829061256b565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610cc55760405162461bcd60e51b81526004016108829061256b565b60005b8151811015610d3e57600060096000016000848481518110610cfa57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d36816127ad565b915050610cc8565b5050565b6000546001600160a01b03163314610d6c5760405162461bcd60e51b81526004016108829061256b565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600061080533846108f48560405180606001604052806025815260200161283560259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611a4b565b6000610805338484611621565b6000546001600160a01b03163314610e1d5760405162461bcd60e51b81526004016108829061256b565b6001600160a01b038116610e8f5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015272746f20746865207a65726f206164647265737360681b6064820152608401610882565b600060105411610ef05760405162461bcd60e51b815260206004820152602660248201527f546865204554482062616c616e6365206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608401610882565b6010805460009182905560405190916001600160a01b0384169183156108fc0291849190818181858888f19350505050158015610f31573d6000803e3d6000fd5b505050565b610f426012600a6126cc565b61083590620249f0612777565b6000546001600160a01b03163314610f795760405162461bcd60e51b81526004016108829061256b565b60005b600d54811015610d3e57816001600160a01b0316600d8281548110610fb157634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156110a757600d8054610fdc90600190612796565b81548110610ffa57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600d80546001600160a01b03909216918390811061103457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600d80548061108157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110b1816127ad565b915050610f7c565b6000546001600160a01b031633146110e35760405162461bcd60e51b81526004016108829061256b565b6013805460ff60a81b1916600160a81b8315158102919091179182905560405160ff9190920416151581527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b61114a6012600a6126cc565b61083590620124f8612777565b6000546001600160a01b031633146111815760405162461bcd60e51b81526004016108829061256b565b60005b600e54811015610d3e57816001600160a01b0316600e82815481106111b957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561128957600e80546111e490600190612796565b8154811061120257634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600e80546001600160a01b03909216918390811061123c57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600e80548061108157634e487b7160e01b600052603160045260246000fd5b80611293816127ad565b915050611184565b6000546001600160a01b031633146112c55760405162461bcd60e51b81526004016108829061256b565b60005b8251811015610f315781600960000160008584815181106112f957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611335816127ad565b9150506112c8565b6000546001600160a01b031633146113675760405162461bcd60e51b81526004016108829061256b565b6001600160a01b0381166113cc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610882565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114515760405162461bcd60e51b81526004016108829061256b565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b0316331461149c5760405162461bcd60e51b81526004016108829061256b565b600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166115585760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610882565b6001600160a01b0382166115c05760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610882565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600f548390839060ff166116875761163882610bce565b80611647575061164781610966565b6116875760405162461bcd60e51b81526020600482015260116024820152701d1c985919481b9bdd081cdd185c9d1959607a1b6044820152606401610882565b6001600160a01b0385166116f25760405162461bcd60e51b815260206004820152602c60248201527f42617365526669546f6b656e3a207472616e736665722066726f6d207468652060448201526b7a65726f206164647265737360a01b6064820152608401610882565b6001600160a01b03841661175b5760405162461bcd60e51b815260206004820152602a60248201527f42617365526669546f6b656e3a207472616e7366657220746f20746865207a65604482015269726f206164647265737360b01b6064820152608401610882565b600083116117bd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610882565b6001600160a01b03841660009081526009602052604090205460ff161580156117ff57506001600160a01b03851660009081526009602052604090205460ff16155b6118415760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c99481b9bdd08185b1b1bddd959606a1b6044820152606401610882565b600161184f6012600a6126cc565b61185c90620124f8612777565b84118015611870575061186e86610bce565b155b8015611882575061188085610966565b155b156118e05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610882565b60006118ee6012600a6126cc565b6118fb90620249f0612777565b11801561190e575061190c86610bce565b155b8015611920575061191e85610966565b155b801561193a57506013546001600160a01b03868116911614155b156119e3576001600160a01b0385166000908152600a602052604081205490506119666012600a6126cc565b61197390620249f0612777565b61197d8683612651565b11156119e15760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610882565b505b6001600160a01b0386166000908152600c602052604090205460ff1680611a2257506001600160a01b0385166000908152600c602052604090205460ff165b15611a2b575060005b611a3786868684611a8a565b611a4386868684611aab565b505050505050565b60008184841115611a6f5760405162461bcd60e51b81526004016108829190612518565b505050900390565b6000611a838284612651565b9392505050565b306000908152600a6020526040902054611aa48186611b9f565b5050505050565b6000611ab78584611c09565b905081611ac2575060005b600080611acf8584611c25565b6001600160a01b0389166000908152600a60205260409020549193509150611af79083611c57565b6001600160a01b038089166000908152600a60205260408082209390935590881681522054611b269082611a77565b6001600160a01b0387166000908152600a6020526040902055611b498584611c63565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b8e91815260200190565b60405180910390a350505050505050565b6014548210611bae5760145491505b60155482108015908190611bcb5750601354600160a81b900460ff165b8015611be15750601354600160a01b900460ff16155b8015611bfb57506013546001600160a01b03838116911614155b15610f3157610f3183611c72565b6001600160a01b0382166000908152600a602052600854611a83565b60008080611c3f6103e8611c398787611d19565b90611d25565b90506000611c4d8683611c57565b9596945050505050565b6000611a838284612796565b8015610d3e57610d3e82611d31565b6013805460ff60a01b1916600160a01b1790556000611c92826002611d25565b90506000611ca08383611c57565b905047611cac83611dca565b6000611cb84783611c57565b9050611cc48382611f47565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506013805460ff60a01b19169055505050565b6000611a838284612777565b6000611a838284612669565b6000611d3c60075490565b905060005b81811015610f31576000806000611d578461207e565b509250925092508160001415611d6f57505050611db8565b6001836001811115611d9157634e487b7160e01b600052602160045260246000fd5b1415611da857611da386838387612135565b611db4565b611db486838387612135565b5050505b80611dc2816127ad565b915050611d41565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e6157600080fd5b505afa158015611e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e999190612348565b81600181518110611eba57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601254611ee09130911684612190565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f199085906000908690309042906004016125e1565b600060405180830381600087803b158015611f3357600080fd5b505af1158015611a43573d6000803e3d6000fd5b601254611f5f9030906001600160a01b031684612190565b601254600090819081906001600160a01b031663f305d7198530888580611f8e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611ff157600080fd5b505af1158015612005573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061202a91906124eb565b47601055604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b600080600080600061208f8661219b565b60408051608081019091528154909190829060ff1660018111156120c357634e487b7160e01b600052602160045260246000fd5b60018111156120e257634e487b7160e01b600052602160045260246000fd5b8152600182015460208083019190915260028301546001600160a01b0316604080840191909152600390930154606092830152835190840151928401519390910151909991985091965090945092505050565b60006121476103e8611c398787611d19565b6001600160a01b0384166000908152600a602052604090205490915061216d9082611a77565b6001600160a01b0384166000908152600a6020526040902055611aa48282612240565b610f318383836114ee565b6000600754821061220a5760405162461bcd60e51b815260206004820152603360248201527f4665657353657474696e67732e5f6765744665655374727563743a2046656520604482015272696e646578206f7574206f6620626f756e647360681b6064820152608401610882565b6007828154811061222b57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402019050919050565b600061224b8361219b565b600381015490915061225d9083611a77565b6003909101555050565b8035612272816127f4565b919050565b600082601f830112612287578081fd5b8135602067ffffffffffffffff808311156122a4576122a46127de565b8260051b604051601f19603f830116810181811084821117156122c9576122c96127de565b604052848152838101925086840182880185018910156122e7578687fd5b8692505b85831015612310576122fc81612267565b8452928401926001929092019184016122eb565b50979650505050505050565b8035801515811461227257600080fd5b60006020828403121561233d578081fd5b8135611a83816127f4565b600060208284031215612359578081fd5b8151611a83816127f4565b60008060408385031215612376578081fd5b8235612381816127f4565b91506020830135612391816127f4565b809150509250929050565b6000806000606084860312156123b0578081fd5b83356123bb816127f4565b925060208401356123cb816127f4565b929592945050506040919091013590565b600080604083850312156123ee578182fd5b82356123f9816127f4565b91506124076020840161231c565b90509250929050565b60008060408385031215612422578182fd5b823561242d816127f4565b946020939093013593505050565b60006020828403121561244c578081fd5b813567ffffffffffffffff811115612462578182fd5b61246e84828501612277565b949350505050565b60008060408385031215612488578182fd5b823567ffffffffffffffff81111561249e578283fd5b6124aa85828601612277565b9250506124076020840161231c565b6000602082840312156124ca578081fd5b611a838261231c565b6000602082840312156124e4578081fd5b5035919050565b6000806000606084860312156124ff578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561254457858101830151858201604001528201612528565b818111156125555783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526021908201527f546f74616c20666565732063616e6e6f74206265206d6f7265207468616e20356040820152602560f81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156126305784516001600160a01b03168352938301939183019160010161260b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612664576126646127c8565b500190565b60008261268457634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156126c45781600019048211156126aa576126aa6127c8565b808516156126b757918102915b93841c939080029061268e565b509250929050565b6000611a8360ff8416836000826126e557506001610809565b816126f257506000610809565b816001811461270857600281146127125761272e565b6001915050610809565b60ff841115612723576127236127c8565b50506001821b610809565b5060208310610133831016604e8410600b8410161715612751575081810a610809565b61275b8383612689565b806000190482111561276f5761276f6127c8565b029392505050565b6000816000190483118215151615612791576127916127c8565b500290565b6000828210156127a8576127a86127c8565b500390565b60006000198214156127c1576127c16127c8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461280957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a9d1fcdece8a5c4eaaf192812c5ae4c27b0ce3a853a53537cdd6dd7028f54cea64736f6c63430008040033d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5
Deployed Bytecode
0x6080604052600436106102555760003560e01c806385fe5fbd11610139578063bbde77c1116100b6578063dd62ed3e1161007a578063dd62ed3e1461071c578063ed08ae2e14610762578063f2fde38b14610782578063f6372cab146107a2578063fac6529a146107b8578063fd547e11146107d857600080fd5b8063bbde77c114610692578063bd69fbe4146106a7578063c49b9a80146106c7578063c8c8ebe4146106e7578063dc1a3add146106fc57600080fd5b806395d89b41116100fd57806395d89b41146105f0578063a457c2d71461061c578063a9059cbb1461063c578063aa45026b1461065c578063b7671a0d1461067257600080fd5b806385fe5fbd1461055257806386d506db14610572578063876da9fa146105925780638c52c6c8146105b25780638da5cb5b146105d257600080fd5b806332049b2c116101d2578063602bc62b11610196578063602bc62b146104925780636612e66f146104a757806370a08231146104c7578063715018a6146104fd5780637ab52a761461051257806381c4322b1461053257600080fd5b806332049b2c146103d457806339509351146103f45780634c544c771461041457806351c0d937146104345780635342acb41461045957600080fd5b80631d97b7cd116102195780631d97b7cd1461034757806323b872dd1461035e5780632858fe8c1461037e57806329d42dbd1461039e578063313ce567146103b857600080fd5b806306fdde0314610261578063095ea7b3146102a75780630b76dbec146102d75780631694505e146102fa57806318160ddd1461033257600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201909152600b81526a23b930b7323a37a1b63ab160a91b60208201525b60405161029e9190612518565b60405180910390f35b3480156102b357600080fd5b506102c76102c2366004612410565b6107f8565b604051901515815260200161029e565b3480156102e357600080fd5b506102ec61080f565b60405190815260200161029e565b34801561030657600080fd5b5060035461031a906001600160a01b031681565b6040516001600160a01b03909116815260200161029e565b34801561033e57600080fd5b506102ec610838565b34801561035357600080fd5b5061035c610858565b005b34801561036a57600080fd5b506102c761037936600461239c565b61089a565b34801561038a57600080fd5b5061035c6103993660046124d3565b610903565b3480156103aa57600080fd5b50600f546102c79060ff1681565b3480156103c457600080fd5b506040516012815260200161029e565b3480156103e057600080fd5b506102c76103ef36600461232c565b610966565b34801561040057600080fd5b506102c761040f366004612410565b6109f0565b34801561042057600080fd5b5061035c61042f36600461232c565b610a26565b34801561044057600080fd5b5060115461031a9061010090046001600160a01b031681565b34801561046557600080fd5b506102c761047436600461232c565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561049e57600080fd5b506002546102ec565b3480156104b357600080fd5b5061035c6104c23660046123dc565b610aa2565b3480156104d357600080fd5b506102ec6104e236600461232c565b6001600160a01b03166000908152600a602052604090205490565b34801561050957600080fd5b5061035c610af7565b34801561051e57600080fd5b5061035c61052d3660046124d3565b610b6b565b34801561053e57600080fd5b506102c761054d36600461232c565b610bce565b34801561055e57600080fd5b5060045461031a906001600160a01b031681565b34801561057e57600080fd5b5061035c61058d36600461232c565b610c4f565b34801561059e57600080fd5b5061035c6105ad36600461243b565b610c9b565b3480156105be57600080fd5b5061035c6105cd3660046123dc565b610d42565b3480156105de57600080fd5b506000546001600160a01b031661031a565b3480156105fc57600080fd5b5060408051808201909152600381526247544360e81b6020820152610291565b34801561062857600080fd5b506102c7610637366004612410565b610d97565b34801561064857600080fd5b506102c7610657366004612410565b610de6565b34801561066857600080fd5b506102ec60055481565b34801561067e57600080fd5b5061035c61068d36600461232c565b610df3565b34801561069e57600080fd5b506102ec610f36565b3480156106b357600080fd5b5061035c6106c236600461232c565b610f4f565b3480156106d357600080fd5b5061035c6106e23660046124b9565b6110b9565b3480156106f357600080fd5b506102ec61113e565b34801561070857600080fd5b5061035c61071736600461232c565b611157565b34801561072857600080fd5b506102ec610737366004612364565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561076e57600080fd5b5061035c61077d366004612476565b61129b565b34801561078e57600080fd5b5061035c61079d36600461232c565b61133d565b3480156107ae57600080fd5b506102ec60065481565b3480156107c457600080fd5b5061035c6107d336600461232c565b611427565b3480156107e457600080fd5b5061035c6107f336600461232c565b611472565b60006108053384846114ee565b5060015b92915050565b6103e861081e6012600a6126cc565b61082b9062989680612777565b6108359190612669565b81565b60006108466012600a6126cc565b6108539062989680612777565b905090565b6000546001600160a01b0316331461088b5760405162461bcd60e51b81526004016108829061256b565b60405180910390fd5b600f805460ff19166001179055565b60006108a7848484611621565b6108f984336108f48560405180606001604052806028815260200161280d602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611a4b565b6114ee565b5060019392505050565b6000546001600160a01b0316331461092d5760405162461bcd60e51b81526004016108829061256b565b60008160055461093d9190612651565b905060328111156109605760405162461bcd60e51b8152600401610882906125a0565b50600655565b6000805b600e548110156109e757600e818154811061099557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03848116911614806109c757506000546001600160a01b038481169116145b156109d55750600192915050565b806109df816127ad565b91505061096a565b50600092915050565b336000818152600b602090815260408083206001600160a01b038716845290915281205490916108059185906108f49086611a77565b6000546001600160a01b03163314610a505760405162461bcd60e51b81526004016108829061256b565b600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610acc5760405162461bcd60e51b81526004016108829061256b565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b215760405162461bcd60e51b81526004016108829061256b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b955760405162461bcd60e51b81526004016108829061256b565b600081600654610ba59190612651565b90506032811115610bc85760405162461bcd60e51b8152600401610882906125a0565b50600555565b6000805b600d548110156109e757600d8181548110610bfd57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0384811691161480610c2f57506000546001600160a01b038481169116145b15610c3d5750600192915050565b80610c47816127ad565b915050610bd2565b6000546001600160a01b03163314610c795760405162461bcd60e51b81526004016108829061256b565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610cc55760405162461bcd60e51b81526004016108829061256b565b60005b8151811015610d3e57600060096000016000848481518110610cfa57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d36816127ad565b915050610cc8565b5050565b6000546001600160a01b03163314610d6c5760405162461bcd60e51b81526004016108829061256b565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600061080533846108f48560405180606001604052806025815260200161283560259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611a4b565b6000610805338484611621565b6000546001600160a01b03163314610e1d5760405162461bcd60e51b81526004016108829061256b565b6001600160a01b038116610e8f5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015272746f20746865207a65726f206164647265737360681b6064820152608401610882565b600060105411610ef05760405162461bcd60e51b815260206004820152602660248201527f546865204554482062616c616e6365206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608401610882565b6010805460009182905560405190916001600160a01b0384169183156108fc0291849190818181858888f19350505050158015610f31573d6000803e3d6000fd5b505050565b610f426012600a6126cc565b61083590620249f0612777565b6000546001600160a01b03163314610f795760405162461bcd60e51b81526004016108829061256b565b60005b600d54811015610d3e57816001600160a01b0316600d8281548110610fb157634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156110a757600d8054610fdc90600190612796565b81548110610ffa57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600d80546001600160a01b03909216918390811061103457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600d80548061108157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110b1816127ad565b915050610f7c565b6000546001600160a01b031633146110e35760405162461bcd60e51b81526004016108829061256b565b6013805460ff60a81b1916600160a81b8315158102919091179182905560405160ff9190920416151581527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b61114a6012600a6126cc565b61083590620124f8612777565b6000546001600160a01b031633146111815760405162461bcd60e51b81526004016108829061256b565b60005b600e54811015610d3e57816001600160a01b0316600e82815481106111b957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561128957600e80546111e490600190612796565b8154811061120257634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600e80546001600160a01b03909216918390811061123c57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600e80548061108157634e487b7160e01b600052603160045260246000fd5b80611293816127ad565b915050611184565b6000546001600160a01b031633146112c55760405162461bcd60e51b81526004016108829061256b565b60005b8251811015610f315781600960000160008584815181106112f957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611335816127ad565b9150506112c8565b6000546001600160a01b031633146113675760405162461bcd60e51b81526004016108829061256b565b6001600160a01b0381166113cc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610882565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114515760405162461bcd60e51b81526004016108829061256b565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b0316331461149c5760405162461bcd60e51b81526004016108829061256b565b600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166115585760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610882565b6001600160a01b0382166115c05760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610882565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600f548390839060ff166116875761163882610bce565b80611647575061164781610966565b6116875760405162461bcd60e51b81526020600482015260116024820152701d1c985919481b9bdd081cdd185c9d1959607a1b6044820152606401610882565b6001600160a01b0385166116f25760405162461bcd60e51b815260206004820152602c60248201527f42617365526669546f6b656e3a207472616e736665722066726f6d207468652060448201526b7a65726f206164647265737360a01b6064820152608401610882565b6001600160a01b03841661175b5760405162461bcd60e51b815260206004820152602a60248201527f42617365526669546f6b656e3a207472616e7366657220746f20746865207a65604482015269726f206164647265737360b01b6064820152608401610882565b600083116117bd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610882565b6001600160a01b03841660009081526009602052604090205460ff161580156117ff57506001600160a01b03851660009081526009602052604090205460ff16155b6118415760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c99481b9bdd08185b1b1bddd959606a1b6044820152606401610882565b600161184f6012600a6126cc565b61185c90620124f8612777565b84118015611870575061186e86610bce565b155b8015611882575061188085610966565b155b156118e05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610882565b60006118ee6012600a6126cc565b6118fb90620249f0612777565b11801561190e575061190c86610bce565b155b8015611920575061191e85610966565b155b801561193a57506013546001600160a01b03868116911614155b156119e3576001600160a01b0385166000908152600a602052604081205490506119666012600a6126cc565b61197390620249f0612777565b61197d8683612651565b11156119e15760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610882565b505b6001600160a01b0386166000908152600c602052604090205460ff1680611a2257506001600160a01b0385166000908152600c602052604090205460ff165b15611a2b575060005b611a3786868684611a8a565b611a4386868684611aab565b505050505050565b60008184841115611a6f5760405162461bcd60e51b81526004016108829190612518565b505050900390565b6000611a838284612651565b9392505050565b306000908152600a6020526040902054611aa48186611b9f565b5050505050565b6000611ab78584611c09565b905081611ac2575060005b600080611acf8584611c25565b6001600160a01b0389166000908152600a60205260409020549193509150611af79083611c57565b6001600160a01b038089166000908152600a60205260408082209390935590881681522054611b269082611a77565b6001600160a01b0387166000908152600a6020526040902055611b498584611c63565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b8e91815260200190565b60405180910390a350505050505050565b6014548210611bae5760145491505b60155482108015908190611bcb5750601354600160a81b900460ff165b8015611be15750601354600160a01b900460ff16155b8015611bfb57506013546001600160a01b03838116911614155b15610f3157610f3183611c72565b6001600160a01b0382166000908152600a602052600854611a83565b60008080611c3f6103e8611c398787611d19565b90611d25565b90506000611c4d8683611c57565b9596945050505050565b6000611a838284612796565b8015610d3e57610d3e82611d31565b6013805460ff60a01b1916600160a01b1790556000611c92826002611d25565b90506000611ca08383611c57565b905047611cac83611dca565b6000611cb84783611c57565b9050611cc48382611f47565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506013805460ff60a01b19169055505050565b6000611a838284612777565b6000611a838284612669565b6000611d3c60075490565b905060005b81811015610f31576000806000611d578461207e565b509250925092508160001415611d6f57505050611db8565b6001836001811115611d9157634e487b7160e01b600052602160045260246000fd5b1415611da857611da386838387612135565b611db4565b611db486838387612135565b5050505b80611dc2816127ad565b915050611d41565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e6157600080fd5b505afa158015611e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e999190612348565b81600181518110611eba57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601254611ee09130911684612190565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f199085906000908690309042906004016125e1565b600060405180830381600087803b158015611f3357600080fd5b505af1158015611a43573d6000803e3d6000fd5b601254611f5f9030906001600160a01b031684612190565b601254600090819081906001600160a01b031663f305d7198530888580611f8e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611ff157600080fd5b505af1158015612005573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061202a91906124eb565b47601055604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b600080600080600061208f8661219b565b60408051608081019091528154909190829060ff1660018111156120c357634e487b7160e01b600052602160045260246000fd5b60018111156120e257634e487b7160e01b600052602160045260246000fd5b8152600182015460208083019190915260028301546001600160a01b0316604080840191909152600390930154606092830152835190840151928401519390910151909991985091965090945092505050565b60006121476103e8611c398787611d19565b6001600160a01b0384166000908152600a602052604090205490915061216d9082611a77565b6001600160a01b0384166000908152600a6020526040902055611aa48282612240565b610f318383836114ee565b6000600754821061220a5760405162461bcd60e51b815260206004820152603360248201527f4665657353657474696e67732e5f6765744665655374727563743a2046656520604482015272696e646578206f7574206f6620626f756e647360681b6064820152608401610882565b6007828154811061222b57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402019050919050565b600061224b8361219b565b600381015490915061225d9083611a77565b6003909101555050565b8035612272816127f4565b919050565b600082601f830112612287578081fd5b8135602067ffffffffffffffff808311156122a4576122a46127de565b8260051b604051601f19603f830116810181811084821117156122c9576122c96127de565b604052848152838101925086840182880185018910156122e7578687fd5b8692505b85831015612310576122fc81612267565b8452928401926001929092019184016122eb565b50979650505050505050565b8035801515811461227257600080fd5b60006020828403121561233d578081fd5b8135611a83816127f4565b600060208284031215612359578081fd5b8151611a83816127f4565b60008060408385031215612376578081fd5b8235612381816127f4565b91506020830135612391816127f4565b809150509250929050565b6000806000606084860312156123b0578081fd5b83356123bb816127f4565b925060208401356123cb816127f4565b929592945050506040919091013590565b600080604083850312156123ee578182fd5b82356123f9816127f4565b91506124076020840161231c565b90509250929050565b60008060408385031215612422578182fd5b823561242d816127f4565b946020939093013593505050565b60006020828403121561244c578081fd5b813567ffffffffffffffff811115612462578182fd5b61246e84828501612277565b949350505050565b60008060408385031215612488578182fd5b823567ffffffffffffffff81111561249e578283fd5b6124aa85828601612277565b9250506124076020840161231c565b6000602082840312156124ca578081fd5b611a838261231c565b6000602082840312156124e4578081fd5b5035919050565b6000806000606084860312156124ff578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561254457858101830151858201604001528201612528565b818111156125555783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526021908201527f546f74616c20666565732063616e6e6f74206265206d6f7265207468616e20356040820152602560f81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156126305784516001600160a01b03168352938301939183019160010161260b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612664576126646127c8565b500190565b60008261268457634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156126c45781600019048211156126aa576126aa6127c8565b808516156126b757918102915b93841c939080029061268e565b509250929050565b6000611a8360ff8416836000826126e557506001610809565b816126f257506000610809565b816001811461270857600281146127125761272e565b6001915050610809565b60ff841115612723576127236127c8565b50506001821b610809565b5060208310610133831016604e8410600b8410161715612751575081810a610809565b61275b8383612689565b806000190482111561276f5761276f6127c8565b029392505050565b6000816000190483118215151615612791576127916127c8565b500290565b6000828210156127a8576127a86127c8565b500390565b60006000198214156127c1576127c16127c8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461280957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a9d1fcdece8a5c4eaaf192812c5ae4c27b0ce3a853a53537cdd6dd7028f54cea64736f6c63430008040033
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.