ERC-20
MEME
Overview
Max Total Supply
500,000,000 CHUNKS
Holders
3,659 (0.00%)
Market
Price
$0.0001 @ 0.000000 ETH
Onchain Market Cap
$52,380.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,579.915783310290154158 CHUNKSValue
$0.27 ( ~8.18305370007498E-05 ETH) [0.0005%]Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
CHUNKS
Compiler Version
v0.8.9+commit.e5eed63a
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.0; import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; import '@openzeppelin/contracts/access/Ownable.sol'; import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import '@openzeppelin/contracts/utils/Address.sol'; import "./ISwapContract.sol"; contract CHUNKS is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public whiteList; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 500_000_000 * 1 ether; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; bool public commissionActive = false; bool public whitListEnabled = false; string private _name = 'CHUNKS'; string private _symbol = 'CHUNKS'; uint8 private _decimals = 18; // Buy Fees uint256 public _liquidityFee = 50; uint256 public _reflectionFee = 100; uint256 public _nftHolderFee = 100; uint256 public _treasuryFee = 500; uint256 public _burnFee = 50; // Sell Fees uint256 public _sellLiquidityFee = 100; uint256 public _sellReflectionFee = 100; uint256 public _sellNftHoldersFee = 100; uint256 public _sellTreasuryFee = 400; uint256 public _sellBurnFee = 100; // FeeWallets address public liqGOBWallet; address public treasuryWallet; address public ambassadorPoolWallet; address public rewardsWallet; address public marketingWallet; address public nftHoldersPoolWallet; // current fee uint256 public _mainReflectionFee = 0; uint256 public _mainBurnFee = 0; uint256 public _mainLiquidityFee = 0; SwapContractInterface public swapper; // Anti whale uint256 public constant MAX_HOLDING_PERCENTS_DIVISOR = 10000; uint256 public constant PERCENTS_DIVISOR = 10000; uint256 public _maxHoldingPercents = 50; bool public antiWhaleEnabled; bool public sellIsActive; // Anti bot mapping(uint256 => bool) allowedBuyAmount; bool public antiBotEnabled; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private numTokensSellToAddToLiquidity = 100000 * 10**18; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); error SellIsNotActive(); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( ) { sellIsActive = false; _rOwned[_msgSender()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function setSwapContract(address _address) public onlyOwner { swapper = SwapContractInterface(_address); } function setCommissionActive(bool _state) public onlyOwner { commissionActive = _state; } function activateSell() public onlyOwner { sellIsActive = true; } function setMarketingWallet(address newWallet) external onlyOwner { marketingWallet = newWallet; } function setNftHoldersPoolWallet(address newWallet) external onlyOwner { nftHoldersPoolWallet = newWallet; } function setRewardWallet(address newWallet) external onlyOwner { rewardsWallet = newWallet; } function setTreasuryWallet(address newWallet) external onlyOwner { treasuryWallet = newWallet; } function setAmbassadorPoolWallet(address newWallet) external onlyOwner { ambassadorPoolWallet = newWallet; } function setLiqGOBWallet(address newWallet) external onlyOwner { liqGOBWallet = newWallet; } function setLiqBuyFee(uint256 fee) public onlyOwner { _liquidityFee = fee; } function setLiqSellFee(uint256 fee) public onlyOwner { _sellLiquidityFee = fee; } function setReflectionBuyFee(uint256 fee) public onlyOwner { _reflectionFee = fee; } function setReflectionSellFee(uint256 fee) public onlyOwner { _sellReflectionFee = fee; } function setNftBuyFee(uint256 fee) public onlyOwner { _nftHolderFee = fee; } function setNftSellFee(uint256 fee) public onlyOwner { _sellNftHoldersFee = fee; } function setTreasuryBuyFee(uint256 fee) public onlyOwner { _treasuryFee = fee; } function setTreasurySellFee(uint256 fee) public onlyOwner { _sellTreasuryFee = fee; } function setBurnBuyFee(uint256 fee) public onlyOwner { _burnFee = fee; } function setBurnSellFee(uint256 fee) public onlyOwner { _sellBurnFee = fee; } 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) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[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, 'BEP20: 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, 'BEP20: decreased allowance below zero' ) ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], 'Excluded addresses cannot call this function'); (uint256 rAmount, , , , , ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, 'Amount must be less than supply'); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, 'Amount must be less than total reflections'); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], 'Account is already excluded'); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], 'Account is already excluded'); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues( tAmount ); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, _getRate() ); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(swapper)] = _rOwned[address(swapper)].add(rLiquidity); if (_isExcluded[address(swapper)]) _tOwned[address(swapper)] = _tOwned[address(swapper)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_mainReflectionFee).div(PERCENTS_DIVISOR); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_mainLiquidityFee).div(PERCENTS_DIVISOR); } function activateSellFee() private { _mainReflectionFee = _sellReflectionFee; _mainLiquidityFee = _sellLiquidityFee; _mainBurnFee = _sellBurnFee; } function activateBuyFee() private { _mainReflectionFee = _reflectionFee; _mainLiquidityFee = _liquidityFee; _mainBurnFee = _burnFee; } function removeAllFee() private { _mainReflectionFee = 0; _mainLiquidityFee = 0; _mainBurnFee = 0; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), 'BEP20: approve from the zero address'); require(spender != address(0), 'BEP20: approve to the zero address'); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function swapAndLiquify(uint256 _amount) private lockTheSwap { swapper.swap(_amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), 'ERC20: transfer from the zero address'); require(amount > 0, 'Transfer amount must be greater than zero'); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is pancake pair. if (address(swapper) != address(0)) { uint256 contractTokenBalance = balanceOf(address(swapper)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && to == swapper.getPair() && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount); if (antiWhaleEnabled) { uint256 maxAllowed = (_tTotal * _maxHoldingPercents) / MAX_HOLDING_PERCENTS_DIVISOR; if (address(swapper) != address(0)) { if (to == swapper.getPair()) { require( amount <= maxAllowed, 'Transacted amount exceed the max allowed value' ); } else { require( balanceOf(to) <= maxAllowed, 'Wallet balance exceeds the max limit' ); } } else { require( balanceOf(to) <= maxAllowed, 'Wallet balance exceeds the max limit' ); } } } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount ) private { if (!sellIsActive && sender == swapper.getPair()) revert SellIsNotActive(); bool isSell = false; bool isBuy = false; if (recipient == swapper.getPair() && !_isExcludedFromFee[sender]) { activateSellFee(); isSell = true; } else if (sender == swapper.getPair() && !_isExcludedFromFee[recipient]) { activateBuyFee(); isBuy = true; } if (isSell || isBuy) { if (whitListEnabled) { require(whiteList[sender] || whiteList[recipient], 'Only white list user'); } uint256 _burnAmount = amount.mul(_mainBurnFee).div(PERCENTS_DIVISOR); removeAllFee(); _transferStandard(sender, address(0), _burnAmount); if (isBuy) { uint256 _treasuryAmount = amount.mul(_treasuryFee).div(PERCENTS_DIVISOR); uint256 _nftHolderAmount = amount.mul(_nftHolderFee).div(PERCENTS_DIVISOR); amount = amount.sub(_treasuryAmount).sub(_nftHolderAmount); _transferStandard(sender, treasuryWallet, _treasuryAmount); _transferStandard(sender, nftHoldersPoolWallet, _nftHolderAmount); activateBuyFee(); } else { uint256 _sellTreasuryAmount = amount.mul(_sellTreasuryFee).div(PERCENTS_DIVISOR); uint256 _sellNftHoldersAmount = amount.mul(_sellNftHoldersFee).div(PERCENTS_DIVISOR); amount = amount.sub(_sellTreasuryAmount).sub(_sellNftHoldersAmount); _transferStandard(sender, treasuryWallet, _sellTreasuryAmount); _transferStandard(sender, nftHoldersPoolWallet, _sellNftHoldersAmount); activateSellFee(); } amount = amount.sub(_burnAmount); } if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded( sender, recipient, amount ); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded( sender, recipient, amount ); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded( sender, recipient, amount ); } else { _transferStandard(sender, recipient, amount); } removeAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setMaxHoldingPercents(uint256 maxHoldingPercents) external onlyOwner { _maxHoldingPercents = maxHoldingPercents; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setWhiteListEnabled(bool _enabled) public onlyOwner { whitListEnabled = _enabled; } function addToWhiteList(address _user) public onlyOwner { whiteList[_user] = true; } function removeFromWhiteList(address _user) public onlyOwner { whiteList[_user] = false; } function addToWhiteListBatch(address[] memory _users) public onlyOwner { for (uint256 i = 0; i < _users.length; i++) { whiteList[_users[i]] = true; } } function removeFromWhiteListBatch(address[] memory _users) public onlyOwner { for (uint256 i = 0; i < _users.length; i++) { whiteList[_users[i]] = false; } } function setAntiWhale(bool enabled) external onlyOwner { antiWhaleEnabled = enabled; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface SwapContractInterface { function getPair() external view returns(address); function getRouter() external view returns(address); function swap(uint256 _amount) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ 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"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ 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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "viaIR": true, "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SellIsNotActive","type":"error"},{"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":"MAX_HOLDING_PERCENTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHoldingPercents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nftHolderFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellNftHoldersFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"addToWhiteListBatch","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":[],"name":"ambassadorPoolWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiWhaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"commissionActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqGOBWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftHoldersPoolWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"removeFromWhiteListBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setAmbassadorPoolWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBurnBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBurnSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setCommissionActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setLiqBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setLiqGOBWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setLiqSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHoldingPercents","type":"uint256"}],"name":"setMaxHoldingPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setNftBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setNftHoldersPoolWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setNftSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setReflectionBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setReflectionSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setSwapContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTreasuryBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTreasurySellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setWhiteListEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapper","outputs":[{"internalType":"contract SwapContractInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitListEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234156200001057600080fd5b6200001a6200036e565b620000306b019d971e4fe8401e74000000600855565b6200004762000041600854620001fe565b19600955565b6200005760ff19600b5416600b55565b6200006861ff0019600b5416600b55565b6200007262000224565b6200007c620002c9565b6200008f601260ff19600e541617600e55565b6200009a6032600f55565b620000a56064601055565b620000b06064601155565b620000bc6101f4601255565b620000c76032601355565b620000d26064601455565b620000dd6064601555565b620000e86064601655565b620000f4610190601755565b620000ff6064601855565b6200010a6000601f55565b620001156000602055565b620001206000602155565b6200012b6032602355565b6200013d62ff00001960265416602655565b6200015169152d02c7e14af6800000602755565b6200016261ff001960245416602455565b60095433600090815260016020526040902055600080546001600160a01b03168152600560205260409020620001a0905b805460ff19166001179055565b306000908152600560205260409020620001ba9062000193565b6008546040518181523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a3505060405161301780620003bb83398082f35b6000816200021c57634e487b7160e01b600052601260045260246000fd5b506000190690565b600c54600180821691811c90826200023d57607f821691505b602082108314156200025f57634e487b7160e01b600052602260045260246000fd5b601f821115620002b457600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c79250601f820160051c83015b80841015620002b25760008455928101926200029b565b505b5050600c654348554e4b5360d01b01600c5550565b600d54600180821691811c9082620002e257607f821691505b602082108314156200030457634e487b7160e01b600052602260045260246000fd5b601f8211156200035957600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb59250601f820160051c83015b808410156200035757600084559281019262000340565b505b5050600c654348554e4b5360d01b01600d5550565b60008054336001600160a01b0319821681178355604051919290916001600160a01b038416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35056fe60406080815260043610610e75576000803560e01c6301bf66488114610394576306fdde0381146103b45763095ea7b381146103e0576309700019811461041357630a7d2d87811461043f576313114a9d811461045f576314f4987c811461047f576318160ddd81146104ae576319a391ea81146104ce576323b872dd81146104ee576324fcf8cf8114610523576326180e9481146105435763271c029b811461056f576328f0b257811461058a57632b3297f981146105aa57632d83811981146105d657632ebdc70881146105fb5763313ce567811461061657633206b4aa811461063c5763343a45b2811461065c57633685d4198114610677576336efbcb581146106925763372c12b181146106be57633950935181146106fe57633bd5d173811461071b57633e2e4e3481146107365763437823ec811461075157634549b039811461076c57634626402b811461079d576347ac59ae81146107c9576347ee039481146107f057634a5566bf811461080b57634a74bb02811461082657634f29d7658114610855576352390c02811461087057635342acb4811461088b576357d87f0d81146108bf57635958621e81146108eb57635af89f90811461090657635b35f9c9811461092157635d098b38811461094d576364a06e8081146109685763684d3e95811461098757636bc87c3a81146109a257636e0983ca81146109c257636e45d0398114610968576370a0823181146109dd5763715018a681146109f857637280b6ba8114610a1357637598f8bc8114610a2e576375f0a8748114610a4e57637977a5378114610a7a57637abdc1ca8114610a955763839e6b178114610ab5576383d5b2298114610ad0576384d007398114610aeb576388790a688114610b06576388f820208114610b2657638da5cb5b8114610b5a576395d89b418114610b8557639655cab58114610ba057639702fd528114610bbb5763a457c2d78114610bea5763a8602fea8114610c075763a9059cbb8114610c225763b84f66048114610c3f5763b8788e5a8114610c6b5763b8a34f9d8114610c865763c08d46768114610ca65763c0b0fda28114610cc15763c49b9a808114610ce15763d07b94528114610cfc5763d138e9388114610d1c5763d259ab428114610d375763d8c6404b8114610d525763dbc80d218114610d7e5763dd62ed3e8114610d995763e9a584ad8114610e015763e9aa7d878114610e1c5763ea2f0b378114610e3c5763f2fde38b8114610e5757610e72565b341561039e578182fd5b6103af6103aa36610e93565b612ec9565b818351f35b34156103be578182fd5b6103c736610eb9565b6103cf6114dd565b8351806103dc8383610ecb565b0381f35b34156103ea578182fd5b6103f336610f20565b6103fd8183611690565b9150508351806103dc8383901515815260200190565b341561041d578182fd5b61042636610eb9565b601b5483516001600160a01b0390911680825290602081f35b3415610449578182fd5b61045236610eb9565b6023548351818152602081f35b3415610469578182fd5b61047236610eb9565b600a548351818152602081f35b3415610489578182fd5b61049236610eb9565b60ff60245460081c168351806103dc8383901515815260200190565b34156104b8578182fd5b6104c136610eb9565b6008548351818152602081f35b34156104d8578182fd5b6104e136610eb9565b6011548351818152602081f35b34156104f8578182fd5b61050136610f4c565b61050c81838561169b565b925050508351806103dc8383901515815260200190565b341561052d578182fd5b61053636610eb9565b6017548351818152602081f35b341561054d578182fd5b61055636610eb9565b60195483516001600160a01b0390911680825290602081f35b3415610579578182fd5b6103af61058536610e93565b611407565b3415610594578182fd5b61059d36610eb9565b6012548351818152602081f35b34156105b4578182fd5b6105bd36610eb9565b60225483516001600160a01b0390911680825290602081f35b34156105e0578182fd5b6105f16105ec36610f8a565b6119e2565b8351818152602081f35b3415610605578182fd5b6103af61061136610e93565b611389565b3415610620578182fd5b61062936610eb9565b600e54835160ff90911680825290602081f35b3415610646578182fd5b61064f36610eb9565b6010548351818152602081f35b3415610666578182fd5b6103af61067236610fa6565b612e7a565b3415610681578182fd5b6103af61068d36610e93565b611c16565b341561069c578182fd5b6106a536610eb9565b601e5483516001600160a01b0390911680825290602081f35b34156106c8578182fd5b6106f26106d436610e93565b6001600160a01b031660009081526004602052604090205460ff1690565b83518115158152602081f35b3415610708578182fd5b61071136610f20565b6103fd8183611761565b3415610725578182fd5b6103af61073136610f8a565b611863565b3415610740578182fd5b61074936610eb9565b6103af611346565b341561075b578182fd5b6103af61076736610e93565b612dc5565b3415610776578182fd5b61077f36611019565b610789818361195a565b9150508351806103dc838390815260200190565b34156107a7578182fd5b6107b036610eb9565b601a5483516001600160a01b0390911680825290602081f35b34156107d3578182fd5b6107dc36610eb9565b6020548351806103dc838390815260200190565b34156107fa578182fd5b6103af61080636610e93565b612e9d565b3415610815578182fd5b6103af61082136610fa6565b612fb5565b3415610830578182fd5b61083936610eb9565b60ff60265460101c168351806103dc8383901515815260200190565b341561085f578182fd5b6103af61086b36610e93565b611431565b341561087a578182fd5b6103af61088636610e93565b611a7f565b3415610895578182fd5b6106f26108a136610e93565b6001600160a01b031660009081526005602052604090205460ff1690565b34156108c9578182fd5b6108d236610eb9565b60ff602454168351806103dc8383901515815260200190565b34156108f5578182fd5b6103af61090136610e93565b6113b3565b3415610910578182fd5b6103af61091c36610f8a565b61145b565b341561092b578182fd5b61093436610eb9565b601c5483516001600160a01b0390911680825290602081f35b3415610957578182fd5b6103af61096336610e93565b61135f565b3415610972578182fd5b61097b36610eb9565b82516127108152602081f35b3415610991578182fd5b6103af61099d366110b5565b612f65565b34156109ac578182fd5b6109b536610eb9565b600f548351818152602081f35b34156109cc578182fd5b6103af6109d836610f8a565b61149c565b34156109e7578182fd5b6105f16109f336610e93565b61162b565b3415610a02578182fd5b610a0b36610eb9565b6103af61119a565b3415610a1d578182fd5b6103af610a2936610f8a565b611482565b3415610a38578182fd5b610a4136610eb9565b6015548351818152602081f35b3415610a58578182fd5b610a6136610eb9565b601d5483516001600160a01b0390911680825290602081f35b3415610a84578182fd5b6103af610a9036610f8a565b6114b6565b3415610a9f578182fd5b610aa836610eb9565b6018548351818152602081f35b3415610abf578182fd5b6103af610acb36610f8a565b6114d0565b3415610ada578182fd5b6103af610ae636610fa6565b611328565b3415610af5578182fd5b6103af610b0136610f8a565b6114c3565b3415610b10578182fd5b610b1936610eb9565b6014548351818152602081f35b3415610b30578182fd5b6106f2610b3c36610e93565b6001600160a01b031660009081526006602052604090205460ff1690565b3415610b64578182fd5b610b6d36610eb9565b815483516001600160a01b0390911680825290602081f35b3415610b8f578182fd5b610b9836610eb9565b6103cf6115a7565b3415610baa578182fd5b6103af610bb636610f8a565b612e1a565b3415610bc5578182fd5b610bce36610eb9565b60ff600b5460081c168351806103dc8383901515815260200190565b3415610bf4578182fd5b610bfd36610f20565b6103fd81836117db565b3415610c11578182fd5b6103af610c1d36610e93565b6113dd565b3415610c2c578182fd5b610c3536610f20565b6103fd818361167d565b3415610c49578182fd5b610c5236610eb9565b60ff600b54168351806103dc8383901515815260200190565b3415610c75578182fd5b6103af610c8136610f8a565b611475565b3415610c90578182fd5b610c9936610eb9565b601f548351818152602081f35b3415610cb0578182fd5b6103af610cbc36610f8a565b611468565b3415610ccb578182fd5b610cd436610eb9565b6013548351818152602081f35b3415610ceb578182fd5b6103af610cf736610fa6565b612e27565b3415610d06578182fd5b610d0f36610eb9565b6016548351818152602081f35b3415610d26578182fd5b6103af610d32366110b5565b612ef2565b3415610d41578182fd5b6103af610d4d36610e93565b6112fe565b3415610d5c578182fd5b610d6536610eb9565b60ff602654168351806103dc8383901515815260200190565b3415610d88578182fd5b6103af610d9436610f8a565b61148f565b3415610da3578182fd5b610dac3661116b565b610dec81610dce846001600160a01b0316600090815260036020526040902090565b6001600160a01b039190911660009081526020919091526040902090565b549150508351806103dc838390815260200190565b3415610e0b578182fd5b6103af610e1736610f8a565b6114a9565b3415610e26578182fd5b610e2f36610eb9565b6021548351818152602081f35b3415610e46578182fd5b6103af610e5236610e93565b612df1565b3415610e61578182fd5b6103af610e6d36610e93565b611247565b50505b50600080fd5b6001600160a01b0381168114610e9057600080fd5b50565b6000602060031983011215610ea757600080fd5b600435610eb381610e7b565b92915050565b600060031982011215610e9057600080fd5b600060208083528351808285015260005b81811015610ef857858101830151858201604001528201610edc565b81811115610f0a576000604083870101525b50601f01601f1916929092016040019392505050565b600080604060031984011215610f3557600080fd5b600435610f4181610e7b565b936024359350915050565b60008080606060031985011215610f6257600080fd5b600435610f6e81610e7b565b9250602435610f7c81610e7b565b929492935050604435919050565b6000602060031983011215610f9e57600080fd5b505060043590565b6000602060031983011215610fba57600080fd5b6004358015158114610eb357600080fd5b6001600160a01b0316600090815260016020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b0316600090815260066020526040902090565b60008060406003198401121561102e57600080fd5b6004359150602435801515811461104457600080fd5b919391925050565b634e487b7160e01b600052604160045260246000fd5b6060810181811067ffffffffffffffff821117156110825761108261104c565b60405250565b601f8201601f1916810167ffffffffffffffff811182821017156110ae576110ae61104c565b6040525050565b6000602080600319840112156110ca57600080fd5b60043567ffffffffffffffff808211156110e357600080fd5b8460238301126110f257600080fd5b8160040135818111156111075761110761104c565b8060051b915060405161111c85840182611088565b818152918301602401918481018784111561113657600080fd5b6024850194505b83851015611160578435925061115283610e7b565b82815293850193850161113d565b509695505050505050565b60008060406003198401121561118057600080fd5b60043561118c81610e7b565b915060243561104481610e7b565b6111a26111ef565b6000546bffffffffffffffffffffffff60a01b8116600055600060018060a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06000604051a350565b6000546001600160a01b0316338114610e905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606481fd5b61124f6111ef565b6001600160a01b03818116806112b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608481fd5b600054816bffffffffffffffffffffffff60a01b821617600055838382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06000604051a350505050565b6113066111ef565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6113306111ef565b60ff19600b541660ff821515168117600b555050565b61134e6111ef565b61010061ff00196024541617602455565b6113676111ef565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6113916111ef565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6113bb6111ef565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6113e56111ef565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b61140f6111ef565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6114396111ef565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6114636111ef565b600f55565b6114706111ef565b601455565b61147d6111ef565b601055565b61148a6111ef565b601555565b6114976111ef565b601155565b6114a46111ef565b601655565b6114b16111ef565b601255565b6114be6111ef565b601755565b6114cb6111ef565b601355565b6114d86111ef565b601855565b604051600c54600090600181811c90808316806114fb57607f831692505b602080841082141561151b57634e487b7160e01b86526022600452602486fd5b83875260208701828015611536576001811461154757611590565b60ff19871682528282019750611590565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b60005b8781101561158a57815484820152908601908401611571565b83019850505b505050505050506115a382820383611088565b5090565b604051600d54600090600181811c90808316806115c557607f831692505b60208084108214156115e557634e487b7160e01b86526022600452602486fd5b83875260208701828015611536576001811461160057611590565b600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb561156e565b600060018060a01b0382166000818152600660205260ff60408220541615611660579081526002602052604090205492915050565b818152600160205261167560408220546119e2565b949350505050565b611688828233612273565b506001919050565b611688828233611fc9565b6116a6838383612273565b6001600160a01b03811660009081526003602090815260408083203384529091528120546040516116d681611062565b602881527f42455032303a207472616e7366657220616d6f756e74206578636565647320616020820152676c6c6f77616e636560c01b604082015261172661171f828885611732565b3386611fc9565b50600195945050505050565b60008183111561175a5760405162461bcd60e51b8152806117568660048301610ecb565b0381fd5b5003919050565b3360009081526003602090815260408083206001600160a01b03851684529091528120548319811115611796576117966117ad565b6117a38482018433611fc9565b5060019392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117d6576117d66117ad565b500190565b3360009081526003602090815260408083206001600160a01b038516845290915281205460405161180b81611062565b602581527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77602082015264207a65726f60d81b6040820152611858611851828785611732565b8533611fc9565b506001949350505050565b33600052600660205260ff60406000205416156118d45760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608481fd5b6118dd81611db3565b50505050506118f5816118ef33610fcb565b54611943565b6118fe33610fcb565b5561191361190e82600954611943565b600955565b50610e9061192382600a546117c3565b600a55565b6000600182101561193b5761193b6117ad565b506000190190565b600082821015611955576119556117ad565b500390565b60006008548211156119ab5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606481fd5b821580156119cb576119bc83611db3565b50505050508092505050610eb3565b6119d483611db3565b509298975050505050505050565b6000600954821115611a465760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608481fd5b611a4e611e92565b611675611a5b8284611a5d565b855b600082611a7a57634e487b7160e01b600052601260045260246000fd5b500490565b611a876111ef565b6001600160a01b038116600081815260066020526040812054611aad9060ff1615611b72565b8181526001602052604081205415611adf578181526001602052611ad460408220546119e2565b611add84610fe5565b555b611ae883610fff565b805460ff191660011790556007549150680100000000000000008210611b1057611b1061104c565b6001820180600755808310611b2757611b27611bbc565b50600790527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180546001600160a01b0384166001600160a01b03199091161790555050565b5050565b80610e905760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606481fd5b634e487b7160e01b600052603260045260246000fd5b6000806007548310611be657611be6611bbc565b5050600760009081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910191565b611c1e6111ef565b6001600160a01b03818116600081815260066020526040812054611c449060ff16611b72565b805b600754808210611c565750611d21565b611c5f82611bd2565b8587611c7a83855460039190911b1c6001600160a01b031690565b161415611d0e57611c92611c8d84611928565b611bd2565b611cab81835460039190911b1c6001600160a01b031690565b915050611cb785611bd2565b81546001600160a01b03808516600384901b90811b91901b908116901990911617825550505084611ce789610fe5565b55611cfe611cf489610fff565b805460ff19169055565b611d06611d43565b505050611d21565b505050611d1a81611d28565b9050611c46565b5050505050565b6000600019821415611d3c57611d3c6117ad565b5060010190565b60075480611d6157634e487b7160e01b600052603160045260246000fd5b6000198101818110611d7557611d75611bbc565b600760008190527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6879290920180546001600160a01b03191690559055565b60008060008060008061271080611dcc601f548a611e73565b0481611dda6021548b611e73565b04915080891015611ded57611ded6117ad565b80890382811015611e0057611e006117ad565b611e08611e92565b611e128183611a5d565b915050611e1f818c611e73565b611e298285611e73565b611e338387611e73565b925080821015611e4557611e456117ad565b80820383811015611e5857611e586117ad565b919d929091039b509950908390039750909550909350915050565b6000816000190483118215151615611e8d57611e8d6117ad565b500290565b600080600954806008548060006007545b80821015611f9e57611eb482611bd2565b87611ed6611ed183855460039190911b1c6001600160a01b031690565b610fcb565b541191505080611f1257611ee983611bd2565b86611f0b611f0683855460039190911b1c6001600160a01b031690565b610fe5565b5411925050505b8015611f275750939791965090945050505050565b50611f3182611bd2565b611f57611f50611ed183855460039190911b1c6001600160a01b031690565b5489611943565b97505050611f6482611bd2565b611f8a611f83611f0683855460039190911b1c6001600160a01b031690565b5487611943565b95505050611f9782611d28565b9150611ea3565b5050611faa8184611a5d565b841015611fbd5791959194509092505050565b50919491935090915050565b6001600160a01b038181166120295760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608481fd5b8083166120805760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608481fd5b50826120a483610dce846001600160a01b0316600090815260036020526040902090565b5560405183815282827f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602084a350505050565b80610e905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608481fd5b80610e905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608481fd5b60006020828403121561219e57600080fd5b81516121a981610e7b565b9392505050565b6040513d6000823e3d81fd5b80610e905760405162461bcd60e51b8152602060048201526024808201527f57616c6c65742062616c616e6365206578636565647320746865206d6178206c6044820152631a5b5a5d60e21b6064820152608481fd5b80610e905760405162461bcd60e51b815260206004820152602e60248201527f5472616e73616374656420616d6f756e742065786365656420746865206d617860448201526d20616c6c6f7765642076616c756560901b6064820152608481fd5b6001600160a01b0361228882821615156120d8565b612293841515612130565b6122b46122a86022546001600160a01b031690565b6001600160a01b031690565b8181161561237c576122c58161162b565b60275480821015915081156122ed576122ea6122e660265460081c60ff1690565b1590565b91505b81821561234e57833b6122ff57600080fd5b60405163c1f1b1b560e01b8152602081600481885afa80612322576123226121b0565b60008115612343576123343d84611088565b6123403d84018461218c565b90505b8716878a1614925050505b80925080156123695761236660265460101c60ff1690565b92505b5081156123795761237981612470565b50505b50612388848484612537565b60245460ff161561246a576008546123ad6123a560235483611e73565b612710900490565b90506123c46122a86022546001600160a01b031690565b8083161580159061245957813b6123da57600080fd5b60405163c1f1b1b560e01b8152602081600481865afa806123fd576123fd6121b0565b6000811561241e5761240f3d84611088565b61241b3d84018461218c565b90505b88871681881614801561243c57612437878c1115612212565b612450565b612450876124498c61162b565b11156121bc565b50505050612466565b612466836124498861162b565b5050505b50505050565b6026805461ff0019908116610100179091556022546001600160a01b0316803b61249957600080fd5b604051634a5c8c6f60e11b81526004810184905260008160248183865af19150816124c6576124c66121b0565b81156124e8576124d63d82611088565b6000813d83010312156124e857600080fd5b505080602654166026555050565b80610e905760405162461bcd60e51b815260206004820152601460248201527327b7363c903bb434ba32903634b9ba103ab9b2b960611b6044820152606481fd5b6125496122e660245460081c60ff1690565b80156125c8576125646122a86022546001600160a01b031690565b803b61256f57600080fd5b60405163c1f1b1b560e01b8152602081600481855afa915081612594576125946121b0565b600082156125b5576125a63d83611088565b6125b23d83018361218c565b90505b6001600160a01b03858116911614925050505b80156125e05760405163b468e98960e01b8152600481fd5b506000806125f96122a86022546001600160a01b031690565b803b612603578283fd5b60405163c1f1b1b560e01b808252602082600481865afa80612627576126276121b0565b858115612647576126383d85611088565b6126443d85018561218c565b90505b6001600160a01b0393508316888416149050801561268d5761268a6122e6612683896001600160a01b0316600090815260056020526040902090565b5460ff1690565b90505b8080156126b4576126ab601554601f55601454602155601854602055565b60019650612754565b843b6126be578687fd5b604051838152602081600483895afa806126da576126da6121b0565b8881156126fa576126eb3d84611088565b6126f73d84018461218c565b90505b8616868b161491505080156127305761272d6122e66126838c6001600160a01b0316600090815260056020526040902090565b90505b80156127525761274d601054601f55600f54602155601354602055565b600196505b505b505050505081826127625750805b801561290b57612777600b5460081c60ff1690565b156127d15761279d612683856001600160a01b0316600090815260046020526040902090565b9250826127c8576127c5612683866001600160a01b0316600090815260046020526040902090565b92505b6127d1836124f6565b6127e06123a560205488611e73565b92506127f66000601f5560006021556000602055565b6128008385612bce565b81801561288a576128166123a560125489611e73565b6128256123a56011548a611e73565b61283881612833848c611943565b611943565b985061285682612850601a546001600160a01b031690565b89612c85565b61286c81612850601e546001600160a01b031690565b5050612885601054601f55600f54602155601354602055565b6128fd565b6128996123a560175489611e73565b6128a86123a56016548a611e73565b6128b681612833848c611943565b98506128ce82612850601a546001600160a01b031690565b6128e481612850601e546001600160a01b031690565b50506128fd601554601f55601454602155601854602055565b506129088387611943565b95505b50505061291a61268382610fff565b80156129325761292f6122e661268385610fff565b90505b80801561294957612944858585612d4a565b612a0e565b6129586122e661268385610fff565b801561296d5761296a61268386610fff565b90505b8080156129845761297f878787612cf7565b612a0b565b6129936122e661268387610fff565b80156129ab576129a86122e661268389610fff565b90505b8080156129c2576129bd898989612c85565b612a08565b6129ce61268388610fff565b80156129e3576129e06126838a610fff565b90505b8080156129fa576129f58b8b8b612a29565b612a05565b612a058b8b8b612c85565b50505b50505b50505b5050612a246000601f5560006021556000602055565b505050565b612a3283611db3565b6001600160a01b0387166000818152600260205260409020548a811015612a5b57612a5b6117ad565b8160005260026020528a81036040600020555050612a7887610fcb565b5486811015612a8957612a896117ad565b868103612a9589610fcb565b5550612aaa83612aa48a610fe5565b546117c3565b612ab389610fe5565b55612ac185612aa48a610fcb565b612aca89610fcb565b55612ad481612b4e565b50612adf8184612b18565b50604051935080845250505082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a350505050565b60095481811015612b2b57612b2b6117ad565b819003600955600a548219811115612b4557612b456117ad565b909101600a5550565b612b56611e92565b612b69612b638284611a5d565b84611e73565b91505060018060a01b038060225416806000526001602052612b90836040600020546117c3565b612b9982610fcb565b555060225416905060ff612bac82610fff565b541615611b6e57612bc082612aa483610fe5565b612bc982610fe5565b555050565b612bd782611db3565b6001600160a01b03871660008181526001602052604081205488811015612c0057612c006117ad565b82825260016020528881036040832055508081526001602052612c278760408320546117c3565b97508081526001602052876040822055612c4083612b4e565b612c4a8487612b18565b604051975084885280897fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208ba350505050505050505050565b612c8e83611db3565b6001600160a01b0387811660008181526001602052604081205489811015612cb857612cb86117ad565b8282526001602052898103604083205550828b1681526001602052612ce18860408320546117c3565b612cea8c610fcb565b55505050612ad481612b4e565b612d0083611db3565b6001600160a01b03871660008181526001602052604090205487811015612d2957612d296117ad565b8160005260016020528781036040600020555050612aaa83612aa48a610fe5565b612d5383611db3565b6001600160a01b0387166000818152600260205260409020548a811015612d7c57612d7c6117ad565b8160005260026020528a81036040600020555050612d9987610fcb565b5486811015612daa57612daa6117ad565b868103612db689610fcb565b5550612ac185612aa48a610fcb565b612dcd6111ef565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b612df96111ef565b6001600160a01b03166000908152600560205260409020805460ff19169055565b612e226111ef565b602355565b612e2f6111ef565b80151560265462ff00008260101b1662ff000019821617602655506040518181527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159602082a1505050565b612e826111ef565b600b5461ff0082151560081b1661ff0019821617600b555050565b612ea56111ef565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b612ed16111ef565b6001600160a01b03166000908152600460205260409020805460ff19169055565b612efa6111ef565b6000805b82518110612f0b57505050565b6001600160a01b03612f1d8285612f45565b51168252600460205260408220805460ff19166001179055612f3e81611d28565b9050612efe565b600081518310612f5757612f57611bbc565b5060059190911b0160200190565b612f6d6111ef565b6000805b82518110612f7e57505050565b6001600160a01b03612f908285612f45565b51168252600460205260408220805460ff19169055612fae81611d28565b9050612f71565b612fbd6111ef565b60ff196024541660ff821515168117602455505056fea36469706673582212207e29959e4a1e55f4b2d5a45f8314cbba878be63fca7febed43aa7611893cf37c6c6578706572696d656e74616cf564736f6c63430008090041
Deployed Bytecode
0x60406080815260043610610e75576000803560e01c6301bf66488114610394576306fdde0381146103b45763095ea7b381146103e0576309700019811461041357630a7d2d87811461043f576313114a9d811461045f576314f4987c811461047f576318160ddd81146104ae576319a391ea81146104ce576323b872dd81146104ee576324fcf8cf8114610523576326180e9481146105435763271c029b811461056f576328f0b257811461058a57632b3297f981146105aa57632d83811981146105d657632ebdc70881146105fb5763313ce567811461061657633206b4aa811461063c5763343a45b2811461065c57633685d4198114610677576336efbcb581146106925763372c12b181146106be57633950935181146106fe57633bd5d173811461071b57633e2e4e3481146107365763437823ec811461075157634549b039811461076c57634626402b811461079d576347ac59ae81146107c9576347ee039481146107f057634a5566bf811461080b57634a74bb02811461082657634f29d7658114610855576352390c02811461087057635342acb4811461088b576357d87f0d81146108bf57635958621e81146108eb57635af89f90811461090657635b35f9c9811461092157635d098b38811461094d576364a06e8081146109685763684d3e95811461098757636bc87c3a81146109a257636e0983ca81146109c257636e45d0398114610968576370a0823181146109dd5763715018a681146109f857637280b6ba8114610a1357637598f8bc8114610a2e576375f0a8748114610a4e57637977a5378114610a7a57637abdc1ca8114610a955763839e6b178114610ab5576383d5b2298114610ad0576384d007398114610aeb576388790a688114610b06576388f820208114610b2657638da5cb5b8114610b5a576395d89b418114610b8557639655cab58114610ba057639702fd528114610bbb5763a457c2d78114610bea5763a8602fea8114610c075763a9059cbb8114610c225763b84f66048114610c3f5763b8788e5a8114610c6b5763b8a34f9d8114610c865763c08d46768114610ca65763c0b0fda28114610cc15763c49b9a808114610ce15763d07b94528114610cfc5763d138e9388114610d1c5763d259ab428114610d375763d8c6404b8114610d525763dbc80d218114610d7e5763dd62ed3e8114610d995763e9a584ad8114610e015763e9aa7d878114610e1c5763ea2f0b378114610e3c5763f2fde38b8114610e5757610e72565b341561039e578182fd5b6103af6103aa36610e93565b612ec9565b818351f35b34156103be578182fd5b6103c736610eb9565b6103cf6114dd565b8351806103dc8383610ecb565b0381f35b34156103ea578182fd5b6103f336610f20565b6103fd8183611690565b9150508351806103dc8383901515815260200190565b341561041d578182fd5b61042636610eb9565b601b5483516001600160a01b0390911680825290602081f35b3415610449578182fd5b61045236610eb9565b6023548351818152602081f35b3415610469578182fd5b61047236610eb9565b600a548351818152602081f35b3415610489578182fd5b61049236610eb9565b60ff60245460081c168351806103dc8383901515815260200190565b34156104b8578182fd5b6104c136610eb9565b6008548351818152602081f35b34156104d8578182fd5b6104e136610eb9565b6011548351818152602081f35b34156104f8578182fd5b61050136610f4c565b61050c81838561169b565b925050508351806103dc8383901515815260200190565b341561052d578182fd5b61053636610eb9565b6017548351818152602081f35b341561054d578182fd5b61055636610eb9565b60195483516001600160a01b0390911680825290602081f35b3415610579578182fd5b6103af61058536610e93565b611407565b3415610594578182fd5b61059d36610eb9565b6012548351818152602081f35b34156105b4578182fd5b6105bd36610eb9565b60225483516001600160a01b0390911680825290602081f35b34156105e0578182fd5b6105f16105ec36610f8a565b6119e2565b8351818152602081f35b3415610605578182fd5b6103af61061136610e93565b611389565b3415610620578182fd5b61062936610eb9565b600e54835160ff90911680825290602081f35b3415610646578182fd5b61064f36610eb9565b6010548351818152602081f35b3415610666578182fd5b6103af61067236610fa6565b612e7a565b3415610681578182fd5b6103af61068d36610e93565b611c16565b341561069c578182fd5b6106a536610eb9565b601e5483516001600160a01b0390911680825290602081f35b34156106c8578182fd5b6106f26106d436610e93565b6001600160a01b031660009081526004602052604090205460ff1690565b83518115158152602081f35b3415610708578182fd5b61071136610f20565b6103fd8183611761565b3415610725578182fd5b6103af61073136610f8a565b611863565b3415610740578182fd5b61074936610eb9565b6103af611346565b341561075b578182fd5b6103af61076736610e93565b612dc5565b3415610776578182fd5b61077f36611019565b610789818361195a565b9150508351806103dc838390815260200190565b34156107a7578182fd5b6107b036610eb9565b601a5483516001600160a01b0390911680825290602081f35b34156107d3578182fd5b6107dc36610eb9565b6020548351806103dc838390815260200190565b34156107fa578182fd5b6103af61080636610e93565b612e9d565b3415610815578182fd5b6103af61082136610fa6565b612fb5565b3415610830578182fd5b61083936610eb9565b60ff60265460101c168351806103dc8383901515815260200190565b341561085f578182fd5b6103af61086b36610e93565b611431565b341561087a578182fd5b6103af61088636610e93565b611a7f565b3415610895578182fd5b6106f26108a136610e93565b6001600160a01b031660009081526005602052604090205460ff1690565b34156108c9578182fd5b6108d236610eb9565b60ff602454168351806103dc8383901515815260200190565b34156108f5578182fd5b6103af61090136610e93565b6113b3565b3415610910578182fd5b6103af61091c36610f8a565b61145b565b341561092b578182fd5b61093436610eb9565b601c5483516001600160a01b0390911680825290602081f35b3415610957578182fd5b6103af61096336610e93565b61135f565b3415610972578182fd5b61097b36610eb9565b82516127108152602081f35b3415610991578182fd5b6103af61099d366110b5565b612f65565b34156109ac578182fd5b6109b536610eb9565b600f548351818152602081f35b34156109cc578182fd5b6103af6109d836610f8a565b61149c565b34156109e7578182fd5b6105f16109f336610e93565b61162b565b3415610a02578182fd5b610a0b36610eb9565b6103af61119a565b3415610a1d578182fd5b6103af610a2936610f8a565b611482565b3415610a38578182fd5b610a4136610eb9565b6015548351818152602081f35b3415610a58578182fd5b610a6136610eb9565b601d5483516001600160a01b0390911680825290602081f35b3415610a84578182fd5b6103af610a9036610f8a565b6114b6565b3415610a9f578182fd5b610aa836610eb9565b6018548351818152602081f35b3415610abf578182fd5b6103af610acb36610f8a565b6114d0565b3415610ada578182fd5b6103af610ae636610fa6565b611328565b3415610af5578182fd5b6103af610b0136610f8a565b6114c3565b3415610b10578182fd5b610b1936610eb9565b6014548351818152602081f35b3415610b30578182fd5b6106f2610b3c36610e93565b6001600160a01b031660009081526006602052604090205460ff1690565b3415610b64578182fd5b610b6d36610eb9565b815483516001600160a01b0390911680825290602081f35b3415610b8f578182fd5b610b9836610eb9565b6103cf6115a7565b3415610baa578182fd5b6103af610bb636610f8a565b612e1a565b3415610bc5578182fd5b610bce36610eb9565b60ff600b5460081c168351806103dc8383901515815260200190565b3415610bf4578182fd5b610bfd36610f20565b6103fd81836117db565b3415610c11578182fd5b6103af610c1d36610e93565b6113dd565b3415610c2c578182fd5b610c3536610f20565b6103fd818361167d565b3415610c49578182fd5b610c5236610eb9565b60ff600b54168351806103dc8383901515815260200190565b3415610c75578182fd5b6103af610c8136610f8a565b611475565b3415610c90578182fd5b610c9936610eb9565b601f548351818152602081f35b3415610cb0578182fd5b6103af610cbc36610f8a565b611468565b3415610ccb578182fd5b610cd436610eb9565b6013548351818152602081f35b3415610ceb578182fd5b6103af610cf736610fa6565b612e27565b3415610d06578182fd5b610d0f36610eb9565b6016548351818152602081f35b3415610d26578182fd5b6103af610d32366110b5565b612ef2565b3415610d41578182fd5b6103af610d4d36610e93565b6112fe565b3415610d5c578182fd5b610d6536610eb9565b60ff602654168351806103dc8383901515815260200190565b3415610d88578182fd5b6103af610d9436610f8a565b61148f565b3415610da3578182fd5b610dac3661116b565b610dec81610dce846001600160a01b0316600090815260036020526040902090565b6001600160a01b039190911660009081526020919091526040902090565b549150508351806103dc838390815260200190565b3415610e0b578182fd5b6103af610e1736610f8a565b6114a9565b3415610e26578182fd5b610e2f36610eb9565b6021548351818152602081f35b3415610e46578182fd5b6103af610e5236610e93565b612df1565b3415610e61578182fd5b6103af610e6d36610e93565b611247565b50505b50600080fd5b6001600160a01b0381168114610e9057600080fd5b50565b6000602060031983011215610ea757600080fd5b600435610eb381610e7b565b92915050565b600060031982011215610e9057600080fd5b600060208083528351808285015260005b81811015610ef857858101830151858201604001528201610edc565b81811115610f0a576000604083870101525b50601f01601f1916929092016040019392505050565b600080604060031984011215610f3557600080fd5b600435610f4181610e7b565b936024359350915050565b60008080606060031985011215610f6257600080fd5b600435610f6e81610e7b565b9250602435610f7c81610e7b565b929492935050604435919050565b6000602060031983011215610f9e57600080fd5b505060043590565b6000602060031983011215610fba57600080fd5b6004358015158114610eb357600080fd5b6001600160a01b0316600090815260016020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b0316600090815260066020526040902090565b60008060406003198401121561102e57600080fd5b6004359150602435801515811461104457600080fd5b919391925050565b634e487b7160e01b600052604160045260246000fd5b6060810181811067ffffffffffffffff821117156110825761108261104c565b60405250565b601f8201601f1916810167ffffffffffffffff811182821017156110ae576110ae61104c565b6040525050565b6000602080600319840112156110ca57600080fd5b60043567ffffffffffffffff808211156110e357600080fd5b8460238301126110f257600080fd5b8160040135818111156111075761110761104c565b8060051b915060405161111c85840182611088565b818152918301602401918481018784111561113657600080fd5b6024850194505b83851015611160578435925061115283610e7b565b82815293850193850161113d565b509695505050505050565b60008060406003198401121561118057600080fd5b60043561118c81610e7b565b915060243561104481610e7b565b6111a26111ef565b6000546bffffffffffffffffffffffff60a01b8116600055600060018060a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06000604051a350565b6000546001600160a01b0316338114610e905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606481fd5b61124f6111ef565b6001600160a01b03818116806112b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608481fd5b600054816bffffffffffffffffffffffff60a01b821617600055838382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06000604051a350505050565b6113066111ef565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6113306111ef565b60ff19600b541660ff821515168117600b555050565b61134e6111ef565b61010061ff00196024541617602455565b6113676111ef565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6113916111ef565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6113bb6111ef565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6113e56111ef565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b61140f6111ef565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6114396111ef565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6114636111ef565b600f55565b6114706111ef565b601455565b61147d6111ef565b601055565b61148a6111ef565b601555565b6114976111ef565b601155565b6114a46111ef565b601655565b6114b16111ef565b601255565b6114be6111ef565b601755565b6114cb6111ef565b601355565b6114d86111ef565b601855565b604051600c54600090600181811c90808316806114fb57607f831692505b602080841082141561151b57634e487b7160e01b86526022600452602486fd5b83875260208701828015611536576001811461154757611590565b60ff19871682528282019750611590565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b60005b8781101561158a57815484820152908601908401611571565b83019850505b505050505050506115a382820383611088565b5090565b604051600d54600090600181811c90808316806115c557607f831692505b60208084108214156115e557634e487b7160e01b86526022600452602486fd5b83875260208701828015611536576001811461160057611590565b600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb561156e565b600060018060a01b0382166000818152600660205260ff60408220541615611660579081526002602052604090205492915050565b818152600160205261167560408220546119e2565b949350505050565b611688828233612273565b506001919050565b611688828233611fc9565b6116a6838383612273565b6001600160a01b03811660009081526003602090815260408083203384529091528120546040516116d681611062565b602881527f42455032303a207472616e7366657220616d6f756e74206578636565647320616020820152676c6c6f77616e636560c01b604082015261172661171f828885611732565b3386611fc9565b50600195945050505050565b60008183111561175a5760405162461bcd60e51b8152806117568660048301610ecb565b0381fd5b5003919050565b3360009081526003602090815260408083206001600160a01b03851684529091528120548319811115611796576117966117ad565b6117a38482018433611fc9565b5060019392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117d6576117d66117ad565b500190565b3360009081526003602090815260408083206001600160a01b038516845290915281205460405161180b81611062565b602581527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77602082015264207a65726f60d81b6040820152611858611851828785611732565b8533611fc9565b506001949350505050565b33600052600660205260ff60406000205416156118d45760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608481fd5b6118dd81611db3565b50505050506118f5816118ef33610fcb565b54611943565b6118fe33610fcb565b5561191361190e82600954611943565b600955565b50610e9061192382600a546117c3565b600a55565b6000600182101561193b5761193b6117ad565b506000190190565b600082821015611955576119556117ad565b500390565b60006008548211156119ab5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606481fd5b821580156119cb576119bc83611db3565b50505050508092505050610eb3565b6119d483611db3565b509298975050505050505050565b6000600954821115611a465760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608481fd5b611a4e611e92565b611675611a5b8284611a5d565b855b600082611a7a57634e487b7160e01b600052601260045260246000fd5b500490565b611a876111ef565b6001600160a01b038116600081815260066020526040812054611aad9060ff1615611b72565b8181526001602052604081205415611adf578181526001602052611ad460408220546119e2565b611add84610fe5565b555b611ae883610fff565b805460ff191660011790556007549150680100000000000000008210611b1057611b1061104c565b6001820180600755808310611b2757611b27611bbc565b50600790527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180546001600160a01b0384166001600160a01b03199091161790555050565b5050565b80610e905760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606481fd5b634e487b7160e01b600052603260045260246000fd5b6000806007548310611be657611be6611bbc565b5050600760009081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910191565b611c1e6111ef565b6001600160a01b03818116600081815260066020526040812054611c449060ff16611b72565b805b600754808210611c565750611d21565b611c5f82611bd2565b8587611c7a83855460039190911b1c6001600160a01b031690565b161415611d0e57611c92611c8d84611928565b611bd2565b611cab81835460039190911b1c6001600160a01b031690565b915050611cb785611bd2565b81546001600160a01b03808516600384901b90811b91901b908116901990911617825550505084611ce789610fe5565b55611cfe611cf489610fff565b805460ff19169055565b611d06611d43565b505050611d21565b505050611d1a81611d28565b9050611c46565b5050505050565b6000600019821415611d3c57611d3c6117ad565b5060010190565b60075480611d6157634e487b7160e01b600052603160045260246000fd5b6000198101818110611d7557611d75611bbc565b600760008190527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6879290920180546001600160a01b03191690559055565b60008060008060008061271080611dcc601f548a611e73565b0481611dda6021548b611e73565b04915080891015611ded57611ded6117ad565b80890382811015611e0057611e006117ad565b611e08611e92565b611e128183611a5d565b915050611e1f818c611e73565b611e298285611e73565b611e338387611e73565b925080821015611e4557611e456117ad565b80820383811015611e5857611e586117ad565b919d929091039b509950908390039750909550909350915050565b6000816000190483118215151615611e8d57611e8d6117ad565b500290565b600080600954806008548060006007545b80821015611f9e57611eb482611bd2565b87611ed6611ed183855460039190911b1c6001600160a01b031690565b610fcb565b541191505080611f1257611ee983611bd2565b86611f0b611f0683855460039190911b1c6001600160a01b031690565b610fe5565b5411925050505b8015611f275750939791965090945050505050565b50611f3182611bd2565b611f57611f50611ed183855460039190911b1c6001600160a01b031690565b5489611943565b97505050611f6482611bd2565b611f8a611f83611f0683855460039190911b1c6001600160a01b031690565b5487611943565b95505050611f9782611d28565b9150611ea3565b5050611faa8184611a5d565b841015611fbd5791959194509092505050565b50919491935090915050565b6001600160a01b038181166120295760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608481fd5b8083166120805760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608481fd5b50826120a483610dce846001600160a01b0316600090815260036020526040902090565b5560405183815282827f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602084a350505050565b80610e905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608481fd5b80610e905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608481fd5b60006020828403121561219e57600080fd5b81516121a981610e7b565b9392505050565b6040513d6000823e3d81fd5b80610e905760405162461bcd60e51b8152602060048201526024808201527f57616c6c65742062616c616e6365206578636565647320746865206d6178206c6044820152631a5b5a5d60e21b6064820152608481fd5b80610e905760405162461bcd60e51b815260206004820152602e60248201527f5472616e73616374656420616d6f756e742065786365656420746865206d617860448201526d20616c6c6f7765642076616c756560901b6064820152608481fd5b6001600160a01b0361228882821615156120d8565b612293841515612130565b6122b46122a86022546001600160a01b031690565b6001600160a01b031690565b8181161561237c576122c58161162b565b60275480821015915081156122ed576122ea6122e660265460081c60ff1690565b1590565b91505b81821561234e57833b6122ff57600080fd5b60405163c1f1b1b560e01b8152602081600481885afa80612322576123226121b0565b60008115612343576123343d84611088565b6123403d84018461218c565b90505b8716878a1614925050505b80925080156123695761236660265460101c60ff1690565b92505b5081156123795761237981612470565b50505b50612388848484612537565b60245460ff161561246a576008546123ad6123a560235483611e73565b612710900490565b90506123c46122a86022546001600160a01b031690565b8083161580159061245957813b6123da57600080fd5b60405163c1f1b1b560e01b8152602081600481865afa806123fd576123fd6121b0565b6000811561241e5761240f3d84611088565b61241b3d84018461218c565b90505b88871681881614801561243c57612437878c1115612212565b612450565b612450876124498c61162b565b11156121bc565b50505050612466565b612466836124498861162b565b5050505b50505050565b6026805461ff0019908116610100179091556022546001600160a01b0316803b61249957600080fd5b604051634a5c8c6f60e11b81526004810184905260008160248183865af19150816124c6576124c66121b0565b81156124e8576124d63d82611088565b6000813d83010312156124e857600080fd5b505080602654166026555050565b80610e905760405162461bcd60e51b815260206004820152601460248201527327b7363c903bb434ba32903634b9ba103ab9b2b960611b6044820152606481fd5b6125496122e660245460081c60ff1690565b80156125c8576125646122a86022546001600160a01b031690565b803b61256f57600080fd5b60405163c1f1b1b560e01b8152602081600481855afa915081612594576125946121b0565b600082156125b5576125a63d83611088565b6125b23d83018361218c565b90505b6001600160a01b03858116911614925050505b80156125e05760405163b468e98960e01b8152600481fd5b506000806125f96122a86022546001600160a01b031690565b803b612603578283fd5b60405163c1f1b1b560e01b808252602082600481865afa80612627576126276121b0565b858115612647576126383d85611088565b6126443d85018561218c565b90505b6001600160a01b0393508316888416149050801561268d5761268a6122e6612683896001600160a01b0316600090815260056020526040902090565b5460ff1690565b90505b8080156126b4576126ab601554601f55601454602155601854602055565b60019650612754565b843b6126be578687fd5b604051838152602081600483895afa806126da576126da6121b0565b8881156126fa576126eb3d84611088565b6126f73d84018461218c565b90505b8616868b161491505080156127305761272d6122e66126838c6001600160a01b0316600090815260056020526040902090565b90505b80156127525761274d601054601f55600f54602155601354602055565b600196505b505b505050505081826127625750805b801561290b57612777600b5460081c60ff1690565b156127d15761279d612683856001600160a01b0316600090815260046020526040902090565b9250826127c8576127c5612683866001600160a01b0316600090815260046020526040902090565b92505b6127d1836124f6565b6127e06123a560205488611e73565b92506127f66000601f5560006021556000602055565b6128008385612bce565b81801561288a576128166123a560125489611e73565b6128256123a56011548a611e73565b61283881612833848c611943565b611943565b985061285682612850601a546001600160a01b031690565b89612c85565b61286c81612850601e546001600160a01b031690565b5050612885601054601f55600f54602155601354602055565b6128fd565b6128996123a560175489611e73565b6128a86123a56016548a611e73565b6128b681612833848c611943565b98506128ce82612850601a546001600160a01b031690565b6128e481612850601e546001600160a01b031690565b50506128fd601554601f55601454602155601854602055565b506129088387611943565b95505b50505061291a61268382610fff565b80156129325761292f6122e661268385610fff565b90505b80801561294957612944858585612d4a565b612a0e565b6129586122e661268385610fff565b801561296d5761296a61268386610fff565b90505b8080156129845761297f878787612cf7565b612a0b565b6129936122e661268387610fff565b80156129ab576129a86122e661268389610fff565b90505b8080156129c2576129bd898989612c85565b612a08565b6129ce61268388610fff565b80156129e3576129e06126838a610fff565b90505b8080156129fa576129f58b8b8b612a29565b612a05565b612a058b8b8b612c85565b50505b50505b50505b5050612a246000601f5560006021556000602055565b505050565b612a3283611db3565b6001600160a01b0387166000818152600260205260409020548a811015612a5b57612a5b6117ad565b8160005260026020528a81036040600020555050612a7887610fcb565b5486811015612a8957612a896117ad565b868103612a9589610fcb565b5550612aaa83612aa48a610fe5565b546117c3565b612ab389610fe5565b55612ac185612aa48a610fcb565b612aca89610fcb565b55612ad481612b4e565b50612adf8184612b18565b50604051935080845250505082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a350505050565b60095481811015612b2b57612b2b6117ad565b819003600955600a548219811115612b4557612b456117ad565b909101600a5550565b612b56611e92565b612b69612b638284611a5d565b84611e73565b91505060018060a01b038060225416806000526001602052612b90836040600020546117c3565b612b9982610fcb565b555060225416905060ff612bac82610fff565b541615611b6e57612bc082612aa483610fe5565b612bc982610fe5565b555050565b612bd782611db3565b6001600160a01b03871660008181526001602052604081205488811015612c0057612c006117ad565b82825260016020528881036040832055508081526001602052612c278760408320546117c3565b97508081526001602052876040822055612c4083612b4e565b612c4a8487612b18565b604051975084885280897fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208ba350505050505050505050565b612c8e83611db3565b6001600160a01b0387811660008181526001602052604081205489811015612cb857612cb86117ad565b8282526001602052898103604083205550828b1681526001602052612ce18860408320546117c3565b612cea8c610fcb565b55505050612ad481612b4e565b612d0083611db3565b6001600160a01b03871660008181526001602052604090205487811015612d2957612d296117ad565b8160005260016020528781036040600020555050612aaa83612aa48a610fe5565b612d5383611db3565b6001600160a01b0387166000818152600260205260409020548a811015612d7c57612d7c6117ad565b8160005260026020528a81036040600020555050612d9987610fcb565b5486811015612daa57612daa6117ad565b868103612db689610fcb565b5550612ac185612aa48a610fcb565b612dcd6111ef565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b612df96111ef565b6001600160a01b03166000908152600560205260409020805460ff19169055565b612e226111ef565b602355565b612e2f6111ef565b80151560265462ff00008260101b1662ff000019821617602655506040518181527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159602082a1505050565b612e826111ef565b600b5461ff0082151560081b1661ff0019821617600b555050565b612ea56111ef565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b612ed16111ef565b6001600160a01b03166000908152600460205260409020805460ff19169055565b612efa6111ef565b6000805b82518110612f0b57505050565b6001600160a01b03612f1d8285612f45565b51168252600460205260408220805460ff19166001179055612f3e81611d28565b9050612efe565b600081518310612f5757612f57611bbc565b5060059190911b0160200190565b612f6d6111ef565b6000805b82518110612f7e57505050565b6001600160a01b03612f908285612f45565b51168252600460205260408220805460ff19169055612fae81611d28565b9050612f71565b612fbd6111ef565b60ff196024541660ff821515168117602455505056fea36469706673582212207e29959e4a1e55f4b2d5a45f8314cbba878be63fca7febed43aa7611893cf37c6c6578706572696d656e74616cf564736f6c63430008090041
[ 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.