Overview
Max Total Supply
50,000,000 LQDog
Holders
117 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
7,689,542.23428746458612832 LQDogValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LIQUIDog
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity Standard Json-Input format)
// Website: https://www.liqui.dog
// Telegram: https://t.me/LQDog
// X: https://x.com/LIQUIDogBASE/
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)
pragma solidity ^0.8.0;
import "contracts/IUniswapV2Router02.sol";
import "contracts/IERC20.sol";
import "contracts/IERC20Metadata.sol";
import "contracts/Context.sol";
import "contracts/IUniswapV2Factory.sol";
import "contracts/IUniswapV2Pair.sol";
import "contracts/IUniswapV3Factory.sol";
import "contracts/IUniswapV3Pool.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
// LIQUIDog Token Contract
contract LIQUIDog is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isExcludedFromFee;
uint256 public _totalSupply;
string private _name;
string private _symbol;
uint256 public taxFeeTransfer;
uint256 public taxFeeMarketing;
IERC20 public USDC;
IUniswapV2Router02 public uniswapRouter;
mapping(address => bool) private isLiquidityPool;
event LQDogBought(uint256 amountLQDog, uint256 amountUSDC);
event LQDogSold(uint256 amountLQDog, uint256 amountUSDC);
address public botAddress;
address public multisigMarketingAddress;
bool sellEnabled = false;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(uint256 _tSupply, address _USDCAddress, address _botAddress, address _multisigMarketingAddress, address _uniswapRouterAddress) {
// Setting up the variables
_name = "LIQUIDog";
_symbol = "LQDog";
_totalSupply = _tSupply;
botAddress = _botAddress;
multisigMarketingAddress = _multisigMarketingAddress;
// Initial Transfers
uint256 initialReserve = 2 * 10**18;
// cmo
_balances[address(0x5c7F27589e45287189B957f364CC6d7A046eA863)] = 1720000 * 10**18;
emit Transfer(address(0), address(0x5c7F27589e45287189B957f364CC6d7A046eA863), 1720000 * 10**18);
// coo + initial LP providing
_balances[address(0xcD5626Fa4Aac0B182e151152fbfB8B1614aD205e)] = (34549998) * 10**18;
emit Transfer(address(0), address(0xcD5626Fa4Aac0B182e151152fbfB8B1614aD205e), (34549998) * 10**18);
// cto
_balances[address(0xa91F16bba3F83E4F93BB3CFF4Dc26c1a7082891b)] = 1720000 * 10**18;
emit Transfer(address(0), address(0xa91F16bba3F83E4F93BB3CFF4Dc26c1a7082891b), 1720000 * 10**18);
// marketing
_balances[address(multisigMarketingAddress)] = 7360000 * 10**18;
emit Transfer(address(0), address(multisigMarketingAddress), 7360000 * 10**18);
//I1
_balances[address(0x94187dB52050b7C6E0dF9389fC8f0F5CeB963B8B)] = 1550000 * 10**18;
emit Transfer(address(0), address(0x94187dB52050b7C6E0dF9389fC8f0F5CeB963B8B), 1550000 * 10**18);
//I2
_balances[address(0xafB492b7993d509eC0904D1981d525c94E674a83)] = 1550000 * 10**18;
emit Transfer(address(0), address(0xafB492b7993d509eC0904D1981d525c94E674a83), 1550000 * 10**18);
// I3
_balances[address(0xf05B7022ae2DA67054cF7b088a6C89E8f4cf72EB)] = 1550000 * 10**18;
emit Transfer(address(0), address(0xf05B7022ae2DA67054cF7b088a6C89E8f4cf72EB), 1550000 * 10**18);
// initial reserve
_balances[address(this)]= initialReserve;
emit Transfer(address(0), address(this), initialReserve);
taxFeeTransfer = 10; // 1% tax default
taxFeeMarketing = 10; // 1% tax default
USDC = IERC20(_USDCAddress);
uniswapRouter = IUniswapV2Router02(_uniswapRouterAddress);
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account)
public
view
virtual
override
returns (uint256)
{
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount)
public
virtual
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender)
public
view
virtual
override
returns (uint256)
{
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount)
public
virtual
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(
currentAllowance >= amount,
"ERC20: transfer amount exceeds allowance"
);
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender] + addedValue
);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue)
public
virtual
returns (bool)
{
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(
currentAllowance >= subtractedValue,
"ERC20: decreased allowance below zero"
);
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `sender` to `recipient`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
uint256 senderBalance = _balances[sender];
require(
senderBalance >= amount,
"ERC20: transfer amount exceeds balance"
);
unchecked {
_balances[sender] = senderBalance - amount;
}
if( sender == address(this) || recipient == address(this) || sender == botAddress || recipient == botAddress){
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
return;
}
else if(isLiquidityPool[sender] && isLiquidityPool[recipient]){
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
return;
}
else if(isLiquidityPool[recipient]){
uint256 amountRecieved = _takeTaxMarketing(amount);
_balances[recipient] += amountRecieved;
emit Transfer(sender, recipient, amountRecieved);
}
else if(isLiquidityPool[sender]){
uint256 amountRecieved = _takeBuyTax(amount);
_balances[recipient] += amountRecieved;
emit Transfer(sender, recipient, amountRecieved);
return;
}
else{
uint256 amountRecieved = _takeTax(amount);
_balances[recipient] += amountRecieved;
emit Transfer(sender, recipient, amountRecieved);
return;
}
}
/** @dev Creates `amount` tokens and takes all the necessary taxes for the account.
*/
function _takeTax(uint256 amount)
internal
returns (uint256 amountRecieved)
{
// Calculating the tax
uint256 reserve = ((amount) / 1000) * taxFeeTransfer;
// Sending the tokens to the reserve
_sendToReserve(reserve);
return (amount - reserve);
}
function _takeTaxMarketing(uint256 amount)
internal
returns (uint256 amountRecieved)
{
// Calculating the tax
uint256 marketing = ((amount) / 1000) * taxFeeMarketing;
uint reserve = ((amount) / 100);
// Sending the tokens to the reserve
_sendToMarketing(marketing);
_sendToReserve(reserve);
return (amount - marketing - reserve);
}
function _takeBuyTax(uint256 amount)
internal
returns (uint256 amountRecieved)
{
// Calculating the tax
uint256 reserve = ((amount) / 100);
// Sending the tokens to the reserve
_sendToReserve(reserve);
return (amount - reserve);
}
function setTaxFeeTransfer(uint256 _taxFee) public {
require(msg.sender == multisigMarketingAddress, "Only the team can set the tax fee");
require(_taxFee <= 10, "Tax fee must be less than 1 percent");
require(_taxFee >= 0, "Tax fee must be positive or zero");
taxFeeTransfer = _taxFee;
}
function setTaxFeeMarketing(uint256 _taxFee) public {
require(msg.sender == multisigMarketingAddress, "Only the team can set the tax fee");
require(_taxFee <= 10, "Tax fee must be less than 1 percent");
require(_taxFee >= 0, "Tax fee must be positive or zero");
taxFeeMarketing = _taxFee;
}
function _sendToReserve(uint256 amount) private {
_balances[address(this)] += amount;
emit Transfer(msg.sender, address(this), amount);
}
function _sendToMarketing(uint256 amount) private {
_balances[multisigMarketingAddress] += amount;
emit Transfer(msg.sender, multisigMarketingAddress, amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
// RESERVE PART
function sellPrice() public view returns (uint256) {
uint256 usdcInReserve = USDC.balanceOf(address(this)) * 10 ** 6;
uint256 lqdogOutsideReserve = (totalSupply() - balanceOf(address(this))) / 10**12;
return ((usdcInReserve * 95) / lqdogOutsideReserve) / 100; // Price in USDC (6 decimals)
}
function sell(address _beneficiary, uint256 _lqdogAmount) public {
require(_lqdogAmount > 0, "Amount of tokens sold must be positive");
require(sellEnabled, "Selling is disabled");
_processSell(_beneficiary, _lqdogAmount);
}
function toggleSell() public {
require(msg.sender == multisigMarketingAddress, "Only the team can toggle selling");
sellEnabled = !sellEnabled;
}
function _processSell(address _beneficiary, uint256 _lqdogAmount) private {
uint256 usdcAmount = (_lqdogAmount * sellPrice()) / 10**18;
// Making the user pay
_transfer(msg.sender, address(this), _lqdogAmount);
// Delivering the tokens
_deliverUsdc(_beneficiary, usdcAmount);
emit LQDogSold(_lqdogAmount, usdcAmount);
}
function _deliverUsdc(address _beneficiary, uint256 _usdcAmount) private {
USDC.transfer(_beneficiary, _usdcAmount);
}
function botPrice() private view returns (uint256) {
uint256 usdcInReserve = USDC.balanceOf(address(this)) * 10 ** 6; // 12 dec
uint256 lqdogOutsideReserve = (totalSupply() - balanceOf(address(this))) / 10**12; // 6 dec
return (usdcInReserve / lqdogOutsideReserve); // Price in USDC (6 decimals)
}
function lickwidBotBuy(uint256 _usdcAmount) public {
require(msg.sender == botAddress, "Only the bot can buy tokens");
require(_usdcAmount > 0, "Amount of tokens bought must be positive");
USDC.transferFrom(msg.sender, address(this), _usdcAmount);
uint256 lqdogAmount = ((_usdcAmount * 10**18) / botPrice());
_transfer(address(this), msg.sender, lqdogAmount);
}
function lickwidBotSell(uint256 _lqdogAmount) public {
require(msg.sender == botAddress, "Only the bot can sell tokens");
require(_lqdogAmount > 0, "Amount of tokens sold must be positive");
uint256 usdcAmount = (_lqdogAmount * botPrice()) / 10**18;
// Making the user pay
_transfer(msg.sender, address(this), _lqdogAmount);
// Delivering the tokens
_deliverUsdc(botAddress, usdcAmount);
}
function changeBotAddress(address _newBotAddress) public {
require(msg.sender == multisigMarketingAddress, "Only the team can change the bot address");
botAddress = _newBotAddress;
}
function changeMultisigMarketingAddress(address _newMultisigMarketingAddress) public {
require(msg.sender == multisigMarketingAddress, "Only the team can change the multisig marketing address");
multisigMarketingAddress = _newMultisigMarketingAddress;
}
function addToLiquidityPoolList(address _poolAddress) public {
require(msg.sender == multisigMarketingAddress, "Only the team can add to the liquidity pool list");
isLiquidityPool[_poolAddress] = true;
}
// Function to swap ETH to USDC
function swapETHForUSDC() public {
require(msg.sender == multisigMarketingAddress, "Only the team can swap ETH for USDC");
uint amountOutMin = 0;
// Path array (ETH to USDC)
address[] memory path = new address[](2);
path[0] = uniswapRouter.WETH();
path[1] = address(USDC);
// Making the swap
uniswapRouter.swapExactETHForTokens{value: address(this).balance}(amountOutMin, path, address(this), block.timestamp + 300);
}
receive() external payable {
}
fallback() external payable {
}
}pragma solidity >=0.6.2;
import "contracts/IUniswapV2Router01.sol";
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}pragma solidity >=0.6.2;
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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 `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "contracts/IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (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;
}
}pragma solidity >=0.5.0;
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}pragma solidity >=0.5.0;
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;
/// @title The interface for the Uniswap V3 Factory
/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees
interface IUniswapV3Factory {
/// @notice Emitted when the owner of the factory is changed
/// @param oldOwner The owner before the owner was changed
/// @param newOwner The owner after the owner was changed
event OwnerChanged(address indexed oldOwner, address indexed newOwner);
/// @notice Emitted when a pool is created
/// @param token0 The first token of the pool by address sort order
/// @param token1 The second token of the pool by address sort order
/// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip
/// @param tickSpacing The minimum number of ticks between initialized ticks
/// @param pool The address of the created pool
event PoolCreated(
address indexed token0,
address indexed token1,
uint24 indexed fee,
int24 tickSpacing,
address pool
);
/// @notice Emitted when a new fee amount is enabled for pool creation via the factory
/// @param fee The enabled fee, denominated in hundredths of a bip
/// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee
event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);
/// @notice Returns the current owner of the factory
/// @dev Can be changed by the current owner via setOwner
/// @return The address of the factory owner
function owner() external view returns (address);
/// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled
/// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context
/// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee
/// @return The tick spacing
function feeAmountTickSpacing(uint24 fee) external view returns (int24);
/// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist
/// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order
/// @param tokenA The contract address of either token0 or token1
/// @param tokenB The contract address of the other token
/// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip
/// @return pool The pool address
function getPool(
address tokenA,
address tokenB,
uint24 fee
) external view returns (address pool);
/// @notice Creates a pool for the given two tokens and fee
/// @param tokenA One of the two tokens in the desired pool
/// @param tokenB The other of the two tokens in the desired pool
/// @param fee The desired fee for the pool
/// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved
/// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments
/// are invalid.
/// @return pool The address of the newly created pool
function createPool(
address tokenA,
address tokenB,
uint24 fee
) external returns (address pool);
/// @notice Updates the owner of the factory
/// @dev Must be called by the current owner
/// @param _owner The new owner of the factory
function setOwner(address _owner) external;
/// @notice Enables a fee amount with the given tickSpacing
/// @dev Fee amounts may never be removed once enabled
/// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)
/// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount
function enableFeeAmount(uint24 fee, int24 tickSpacing) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IUniswapV3Pool {
// Returns the address of the first token
function token0() external view returns (address);
// Returns the address of the second token
function token1() external view returns (address);
// Returns the fee rate of the pool
function fee() external view returns (uint24);
}{
"evmVersion": "istanbul",
"optimizer": {
"enabled": true,
"runs": 200
},
"libraries": {
"Token.sol": {}
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"_tSupply","type":"uint256"},{"internalType":"address","name":"_USDCAddress","type":"address"},{"internalType":"address","name":"_botAddress","type":"address"},{"internalType":"address","name":"_multisigMarketingAddress","type":"address"},{"internalType":"address","name":"_uniswapRouterAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountLQDog","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountUSDC","type":"uint256"}],"name":"LQDogBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountLQDog","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountUSDC","type":"uint256"}],"name":"LQDogSold","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_poolAddress","type":"address"}],"name":"addToLiquidityPoolList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newBotAddress","type":"address"}],"name":"changeBotAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMultisigMarketingAddress","type":"address"}],"name":"changeMultisigMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"uint256","name":"_usdcAmount","type":"uint256"}],"name":"lickwidBotBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lqdogAmount","type":"uint256"}],"name":"lickwidBotSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"multisigMarketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_lqdogAmount","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"}],"name":"setTaxFeeMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxFee","type":"uint256"}],"name":"setTaxFeeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapETHForUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFeeMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFeeTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSell","outputs":[],"stateMutability":"nonpayable","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":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600c805460ff60a01b1916905534801561001d57600080fd5b506040516122a83803806122a883398101604081905261003c91610450565b6040805180820190915260088152674c49515549446f6760c01b6020820152600490610068908261054f565b50604080518082019091526005808252644c51446f6760d81b602083015290610091908261054f565b506003859055600b80546001600160a01b038086166001600160a01b031992831617909255600c805492851692909116919091179055735c7f27589e45287189b957f364cc6d7a046ea863600081815260208190526a016c396307896fc30000007f7b72ed12b8775b798130f8ddb9d2bfdc7e9dfcb0e6eb42615aa8f1812f63c135819055604051671bc16d674ec800009392916000805160206122888339815191529161014191815260200190565b60405180910390a373cd5626fa4aac0b182e151152fbfb8b1614ad205e600081815260208181526a1c943f250121445ef800007f7dd79c50a068ce9eb270996d64194c01dc3034c6887663fa04300e700634222c819055604051908152600080516020612288833981519152910160405180910390a373a91f16bba3f83e4f93bb3cff4dc26c1a7082891b600081815260208181526a016c396307896fc30000007f7cc3b872abef282e571ba0d390539ac33aeb40eb7b37f6235b2ac940ea87578f819055604051908152600080516020612288833981519152910160405180910390a3600c80546001600160a01b039081166000908152602081815260408083206a06168a6643f8c0780000009081905594549051948552909216929091600080516020612288833981519152910160405180910390a37394187db52050b7c6e0df9389fc8f0f5ceb963b8b600081815260208181526a014839ab1a2409ecc000007f594f3d16644089d287035d38f150bc9a25d489dbacd43d3935a5dea96e5ec17a819055604051908152600080516020612288833981519152910160405180910390a373afb492b7993d509ec0904d1981d525c94e674a83600081815260208181526a014839ab1a2409ecc000007f8d8629b2d889f45395303c2ff54cfbac0c6eb00d0178838ec1f95ce5db5237f3819055604051908152600080516020612288833981519152910160405180910390a373f05b7022ae2da67054cf7b088a6c89e8f4cf72eb600081815260208181526a014839ab1a2409ecc000007f3823df2342879f607e534c9c1f74d5f89a22a785b494300a59b89da713f4cf76819055604051908152600080516020612288833981519152910160405180910390a33060008181526020818152604080832085905551848152600080516020612288833981519152910160405180910390a350600a6006819055600755600880546001600160a01b039586166001600160a01b03199182161790915560098054929095169116179092555061060e915050565b80516001600160a01b038116811461044b57600080fd5b919050565b600080600080600060a0868803121561046857600080fd5b8551945061047860208701610434565b935061048660408701610434565b925061049460608701610434565b91506104a260808701610434565b90509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806104d857607f821691505b6020821081036104f857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561054a576000816000526020600020601f850160051c810160208610156105275750805b601f850160051c820191505b8181101561054657828155600101610533565b5050505b505050565b81516001600160401b03811115610568576105686104ae565b61057c8161057684546104c4565b846104fe565b602080601f8311600181146105b157600084156105995750858301515b600019600386901b1c1916600185901b178555610546565b600085815260208120601f198616915b828110156105e0578886015182559484019460019091019084016105c1565b50858210156105fe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611c6b8061061d6000396000f3fe6080604052600436106101ae5760003560e01c8063735de9f7116100eb57806395d89b411161008f578063dd62ed3e11610061578063dd62ed3e146104d1578063e0f17ffe14610517578063edd8c9eb14610537578063fccc76181461055757005b806395d89b411461045c578063a457c2d714610471578063a9059cbb14610491578063b429af5e146104b157005b806381a81896116100c857806381a81896146103e757806388214690146103fc57806388759b951461041c57806389a302711461043c57005b8063735de9f7146103915780637d81936c146103b15780637e6d812f146103c757005b80633eaaf86b1161015257806359d38bf21161012f57806359d38bf2146103105780636996d739146103265780636c197ff51461033b57806370a082311461035b57005b80633eaaf86b146102ad5780634b750334146102c35780634bf4f423146102d857005b806322ff4c551161018b57806322ff4c551461023157806323b872dd14610251578063313ce56714610271578063395093511461028d57005b806306fdde03146101b7578063095ea7b3146101e257806318160ddd1461021257005b366101b557005b005b3480156101c357600080fd5b506101cc610577565b6040516101d991906117ab565b60405180910390f35b3480156101ee57600080fd5b506102026101fd366004611812565b610609565b60405190151581526020016101d9565b34801561021e57600080fd5b506003545b6040519081526020016101d9565b34801561023d57600080fd5b506101b561024c36600461183e565b610620565b34801561025d57600080fd5b5061020261026c366004611857565b610679565b34801561027d57600080fd5b50604051601281526020016101d9565b34801561029957600080fd5b506102026102a8366004611812565b610723565b3480156102b957600080fd5b5061022360035481565b3480156102cf57600080fd5b5061022361075f565b3480156102e457600080fd5b50600b546102f8906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b34801561031c57600080fd5b5061022360065481565b34801561033257600080fd5b506101b561083a565b34801561034757600080fd5b506101b5610356366004611812565b610a10565b34801561036757600080fd5b50610223610376366004611898565b6001600160a01b031660009081526020819052604090205490565b34801561039d57600080fd5b506009546102f8906001600160a01b031681565b3480156103bd57600080fd5b5061022360075481565b3480156103d357600080fd5b506101b56103e236600461183e565b610a8d565b3480156103f357600080fd5b506101b5610add565b34801561040857600080fd5b506101b561041736600461183e565b610b58565b34801561042857600080fd5b506101b561043736600461183e565b610c1c565b34801561044857600080fd5b506008546102f8906001600160a01b031681565b34801561046857600080fd5b506101cc610d86565b34801561047d57600080fd5b5061020261048c366004611812565b610d95565b34801561049d57600080fd5b506102026104ac366004611812565b610e2e565b3480156104bd57600080fd5b506101b56104cc366004611898565b610e3b565b3480156104dd57600080fd5b506102236104ec3660046118b5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561052357600080fd5b50600c546102f8906001600160a01b031681565b34801561054357600080fd5b506101b5610552366004611898565b610ec8565b34801561056357600080fd5b506101b5610572366004611898565b610f5f565b606060048054610586906118ee565b80601f01602080910402602001604051908101604052809291908181526020018280546105b2906118ee565b80156105ff5780601f106105d4576101008083540402835291602001916105ff565b820191906000526020600020905b8154815290600101906020018083116105e257829003601f168201915b5050505050905090565b6000610616338484611001565b5060015b92915050565b600c546001600160a01b031633146106535760405162461bcd60e51b815260040161064a90611928565b60405180910390fd5b600a8111156106745760405162461bcd60e51b815260040161064a90611969565b600655565b6000610686848484611125565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561070b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161064a565b6107188533858403611001565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161061691859061075a9086906119c2565b611001565b6008546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156107ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d091906119d5565b6107dd90620f42406119ee565b306000908152602081905260408120549192509064e8d4a51000906003546108059190611a05565b61080f9190611a18565b905060648161081f84605f6119ee565b6108299190611a18565b6108339190611a18565b9250505090565b600c546001600160a01b031633146108a05760405162461bcd60e51b815260206004820152602360248201527f4f6e6c7920746865207465616d2063616e20737761702045544820666f72205560448201526253444360e81b606482015260840161064a565b604080516002808252606082018352600092839291906020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561090e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109329190611a50565b8160008151811061094557610945611a6d565b6001600160a01b03928316602091820292909201015260085482519116908290600190811061097657610976611a6d565b6001600160a01b03928316602091820292909201015260095416637ff36ab5478484306109a54261012c6119c2565b6040518663ffffffff1660e01b81526004016109c49493929190611a83565b60006040518083038185885af11580156109e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610a0b9190810190611aef565b505050565b60008111610a305760405162461bcd60e51b815260040161064a90611bad565b600c54600160a01b900460ff16610a7f5760405162461bcd60e51b815260206004820152601360248201527214d95b1b1a5b99c81a5cc8191a5cd8589b1959606a1b604482015260640161064a565b610a8982826114ab565b5050565b600c546001600160a01b03163314610ab75760405162461bcd60e51b815260040161064a90611928565b600a811115610ad85760405162461bcd60e51b815260040161064a90611969565b600755565b600c546001600160a01b03163314610b375760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920746865207465616d2063616e20746f67676c652073656c6c696e67604482015260640161064a565b600c805460ff60a01b198116600160a01b9182900460ff1615909102179055565b600b546001600160a01b03163314610bb25760405162461bcd60e51b815260206004820152601c60248201527f4f6e6c792074686520626f742063616e2073656c6c20746f6b656e7300000000604482015260640161064a565b60008111610bd25760405162461bcd60e51b815260040161064a90611bad565b6000670de0b6b3a7640000610be5611527565b610bef90846119ee565b610bf99190611a18565b9050610c06333084611125565b600b54610a89906001600160a01b0316826115e3565b600b546001600160a01b03163314610c765760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c792074686520626f742063616e2062757920746f6b656e730000000000604482015260640161064a565b60008111610cd75760405162461bcd60e51b815260206004820152602860248201527f416d6f756e74206f6620746f6b656e7320626f75676874206d75737420626520604482015267706f73697469766560c01b606482015260840161064a565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190611bf3565b506000610d5d611527565b610d6f83670de0b6b3a76400006119ee565b610d799190611a18565b9050610a89303383611125565b606060058054610586906118ee565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161064a565b610e243385858403611001565b5060019392505050565b6000610616338484611125565b600c546001600160a01b03163314610ea65760405162461bcd60e51b815260206004820152602860248201527f4f6e6c7920746865207465616d2063616e206368616e67652074686520626f74604482015267206164647265737360c01b606482015260840161064a565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b03163314610f3b5760405162461bcd60e51b815260206004820152603060248201527f4f6e6c7920746865207465616d2063616e2061646420746f20746865206c697160448201526f1d5a591a5d1e481c1bdbdb081b1a5cdd60821b606482015260840161064a565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b600c546001600160a01b03163314610fdf5760405162461bcd60e51b815260206004820152603760248201527f4f6e6c7920746865207465616d2063616e206368616e676520746865206d756c60448201527f7469736967206d61726b6574696e672061646472657373000000000000000000606482015260840161064a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110635760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064a565b6001600160a01b0382166110c45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161064a565b6001600160a01b038316600090815260208190526040902054818110156112015760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161064a565b6001600160a01b0384166000818152602081905260409020838303905530148061123357506001600160a01b03831630145b8061124b5750600b546001600160a01b038581169116145b806112635750600b546001600160a01b038481169116145b156112d8576001600160a01b038316600090815260208190526040812080548492906112909084906119c2565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611c16833981519152846040516112ca91815260200190565b60405180910390a350505050565b6001600160a01b0384166000908152600a602052604090205460ff16801561131857506001600160a01b0383166000908152600a602052604090205460ff165b15611345576001600160a01b038316600090815260208190526040812080548492906112909084906119c2565b6001600160a01b0383166000908152600a602052604090205460ff16156113ef5760006113718361165a565b905080600080866001600160a01b03166001600160a01b0316815260200190815260200160002060008282546113a791906119c2565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611c16833981519152836040516113e191815260200190565b60405180910390a3506114a5565b6001600160a01b0384166000908152600a602052604090205460ff161561149a57600061141b836116b8565b905080600080866001600160a01b03166001600160a01b03168152602001908152602001600020600082825461145191906119c2565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611c168339815191528360405161148b91815260200190565b60405180910390a35050505050565b600061141b836116e2565b50505050565b6000670de0b6b3a76400006114be61075f565b6114c890846119ee565b6114d29190611a18565b90506114df333084611125565b6114e983826115e3565b60408051838152602081018390527ffa790d1a50e7e5400184ee5f8b34edeb34d6d6d4e4142bb9e49861c6e4ee9a1c910160405180910390a1505050565b6008546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159891906119d5565b6115a590620f42406119ee565b306000908152602081905260408120549192509064e8d4a51000906003546115cd9190611a05565b6115d79190611a18565b90506108338183611a18565b60085460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611636573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b9190611bf3565b6000806007546103e88461166e9190611a18565b61167891906119ee565b90506000611687606485611a18565b905061169282611700565b61169b81611765565b806116a68386611a05565b6116b09190611a05565b949350505050565b6000806116c6606484611a18565b90506116d181611765565b6116db8184611a05565b9392505050565b6000806006546103e8846116f69190611a18565b6116c691906119ee565b600c546001600160a01b03166000908152602081905260408120805483929061172a9084906119c2565b9091555050600c546040518281526001600160a01b03909116903390600080516020611c16833981519152906020015b60405180910390a350565b30600090815260208190526040812080548392906117849084906119c2565b909155505060405181815230903390600080516020611c168339815191529060200161175a565b60006020808352835180602085015260005b818110156117d9578581018301518582016040015282016117bd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461180f57600080fd5b50565b6000806040838503121561182557600080fd5b8235611830816117fa565b946020939093013593505050565b60006020828403121561185057600080fd5b5035919050565b60008060006060848603121561186c57600080fd5b8335611877816117fa565b92506020840135611887816117fa565b929592945050506040919091013590565b6000602082840312156118aa57600080fd5b81356116db816117fa565b600080604083850312156118c857600080fd5b82356118d3816117fa565b915060208301356118e3816117fa565b809150509250929050565b600181811c9082168061190257607f821691505b60208210810361192257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f4f6e6c7920746865207465616d2063616e2073657420746865207461782066656040820152606560f81b606082015260800190565b60208082526023908201527f54617820666565206d757374206265206c657373207468616e20312070657263604082015262195b9d60ea1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561061a5761061a6119ac565b6000602082840312156119e757600080fd5b5051919050565b808202811582820484141761061a5761061a6119ac565b8181038181111561061a5761061a6119ac565b600082611a3557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611a6257600080fd5b81516116db816117fa565b634e487b7160e01b600052603260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015611acf5784516001600160a01b031683529383019391830191600101611aaa565b50506001600160a01b039690961660408501525050506060015292915050565b60006020808385031215611b0257600080fd5b825167ffffffffffffffff80821115611b1a57600080fd5b818501915085601f830112611b2e57600080fd5b815181811115611b4057611b40611a3a565b8060051b604051601f19603f83011681018181108582111715611b6557611b65611a3a565b604052918252848201925083810185019188831115611b8357600080fd5b938501935b82851015611ba157845184529385019392850192611b88565b98975050505050505050565b60208082526026908201527f416d6f756e74206f6620746f6b656e7320736f6c64206d75737420626520706f60408201526573697469766560d01b606082015260800190565b600060208284031215611c0557600080fd5b815180151581146116db57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220331fc9a1aa717e7cff157d579d7e6e73b944ec0838a8966848caa319d2069fd164736f6c63430008190033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000295be96e64066972000000000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda0291300000000000000000000000033ceb2fca352118faa6a85286b0adc84715bd6790000000000000000000000004b66ab17d8650fa08cda6ce88b497964173c17d00000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad24
Deployed Bytecode
0x6080604052600436106101ae5760003560e01c8063735de9f7116100eb57806395d89b411161008f578063dd62ed3e11610061578063dd62ed3e146104d1578063e0f17ffe14610517578063edd8c9eb14610537578063fccc76181461055757005b806395d89b411461045c578063a457c2d714610471578063a9059cbb14610491578063b429af5e146104b157005b806381a81896116100c857806381a81896146103e757806388214690146103fc57806388759b951461041c57806389a302711461043c57005b8063735de9f7146103915780637d81936c146103b15780637e6d812f146103c757005b80633eaaf86b1161015257806359d38bf21161012f57806359d38bf2146103105780636996d739146103265780636c197ff51461033b57806370a082311461035b57005b80633eaaf86b146102ad5780634b750334146102c35780634bf4f423146102d857005b806322ff4c551161018b57806322ff4c551461023157806323b872dd14610251578063313ce56714610271578063395093511461028d57005b806306fdde03146101b7578063095ea7b3146101e257806318160ddd1461021257005b366101b557005b005b3480156101c357600080fd5b506101cc610577565b6040516101d991906117ab565b60405180910390f35b3480156101ee57600080fd5b506102026101fd366004611812565b610609565b60405190151581526020016101d9565b34801561021e57600080fd5b506003545b6040519081526020016101d9565b34801561023d57600080fd5b506101b561024c36600461183e565b610620565b34801561025d57600080fd5b5061020261026c366004611857565b610679565b34801561027d57600080fd5b50604051601281526020016101d9565b34801561029957600080fd5b506102026102a8366004611812565b610723565b3480156102b957600080fd5b5061022360035481565b3480156102cf57600080fd5b5061022361075f565b3480156102e457600080fd5b50600b546102f8906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b34801561031c57600080fd5b5061022360065481565b34801561033257600080fd5b506101b561083a565b34801561034757600080fd5b506101b5610356366004611812565b610a10565b34801561036757600080fd5b50610223610376366004611898565b6001600160a01b031660009081526020819052604090205490565b34801561039d57600080fd5b506009546102f8906001600160a01b031681565b3480156103bd57600080fd5b5061022360075481565b3480156103d357600080fd5b506101b56103e236600461183e565b610a8d565b3480156103f357600080fd5b506101b5610add565b34801561040857600080fd5b506101b561041736600461183e565b610b58565b34801561042857600080fd5b506101b561043736600461183e565b610c1c565b34801561044857600080fd5b506008546102f8906001600160a01b031681565b34801561046857600080fd5b506101cc610d86565b34801561047d57600080fd5b5061020261048c366004611812565b610d95565b34801561049d57600080fd5b506102026104ac366004611812565b610e2e565b3480156104bd57600080fd5b506101b56104cc366004611898565b610e3b565b3480156104dd57600080fd5b506102236104ec3660046118b5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561052357600080fd5b50600c546102f8906001600160a01b031681565b34801561054357600080fd5b506101b5610552366004611898565b610ec8565b34801561056357600080fd5b506101b5610572366004611898565b610f5f565b606060048054610586906118ee565b80601f01602080910402602001604051908101604052809291908181526020018280546105b2906118ee565b80156105ff5780601f106105d4576101008083540402835291602001916105ff565b820191906000526020600020905b8154815290600101906020018083116105e257829003601f168201915b5050505050905090565b6000610616338484611001565b5060015b92915050565b600c546001600160a01b031633146106535760405162461bcd60e51b815260040161064a90611928565b60405180910390fd5b600a8111156106745760405162461bcd60e51b815260040161064a90611969565b600655565b6000610686848484611125565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561070b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161064a565b6107188533858403611001565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161061691859061075a9086906119c2565b611001565b6008546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156107ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d091906119d5565b6107dd90620f42406119ee565b306000908152602081905260408120549192509064e8d4a51000906003546108059190611a05565b61080f9190611a18565b905060648161081f84605f6119ee565b6108299190611a18565b6108339190611a18565b9250505090565b600c546001600160a01b031633146108a05760405162461bcd60e51b815260206004820152602360248201527f4f6e6c7920746865207465616d2063616e20737761702045544820666f72205560448201526253444360e81b606482015260840161064a565b604080516002808252606082018352600092839291906020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561090e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109329190611a50565b8160008151811061094557610945611a6d565b6001600160a01b03928316602091820292909201015260085482519116908290600190811061097657610976611a6d565b6001600160a01b03928316602091820292909201015260095416637ff36ab5478484306109a54261012c6119c2565b6040518663ffffffff1660e01b81526004016109c49493929190611a83565b60006040518083038185885af11580156109e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610a0b9190810190611aef565b505050565b60008111610a305760405162461bcd60e51b815260040161064a90611bad565b600c54600160a01b900460ff16610a7f5760405162461bcd60e51b815260206004820152601360248201527214d95b1b1a5b99c81a5cc8191a5cd8589b1959606a1b604482015260640161064a565b610a8982826114ab565b5050565b600c546001600160a01b03163314610ab75760405162461bcd60e51b815260040161064a90611928565b600a811115610ad85760405162461bcd60e51b815260040161064a90611969565b600755565b600c546001600160a01b03163314610b375760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920746865207465616d2063616e20746f67676c652073656c6c696e67604482015260640161064a565b600c805460ff60a01b198116600160a01b9182900460ff1615909102179055565b600b546001600160a01b03163314610bb25760405162461bcd60e51b815260206004820152601c60248201527f4f6e6c792074686520626f742063616e2073656c6c20746f6b656e7300000000604482015260640161064a565b60008111610bd25760405162461bcd60e51b815260040161064a90611bad565b6000670de0b6b3a7640000610be5611527565b610bef90846119ee565b610bf99190611a18565b9050610c06333084611125565b600b54610a89906001600160a01b0316826115e3565b600b546001600160a01b03163314610c765760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c792074686520626f742063616e2062757920746f6b656e730000000000604482015260640161064a565b60008111610cd75760405162461bcd60e51b815260206004820152602860248201527f416d6f756e74206f6620746f6b656e7320626f75676874206d75737420626520604482015267706f73697469766560c01b606482015260840161064a565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190611bf3565b506000610d5d611527565b610d6f83670de0b6b3a76400006119ee565b610d799190611a18565b9050610a89303383611125565b606060058054610586906118ee565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161064a565b610e243385858403611001565b5060019392505050565b6000610616338484611125565b600c546001600160a01b03163314610ea65760405162461bcd60e51b815260206004820152602860248201527f4f6e6c7920746865207465616d2063616e206368616e67652074686520626f74604482015267206164647265737360c01b606482015260840161064a565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b03163314610f3b5760405162461bcd60e51b815260206004820152603060248201527f4f6e6c7920746865207465616d2063616e2061646420746f20746865206c697160448201526f1d5a591a5d1e481c1bdbdb081b1a5cdd60821b606482015260840161064a565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b600c546001600160a01b03163314610fdf5760405162461bcd60e51b815260206004820152603760248201527f4f6e6c7920746865207465616d2063616e206368616e676520746865206d756c60448201527f7469736967206d61726b6574696e672061646472657373000000000000000000606482015260840161064a565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110635760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064a565b6001600160a01b0382166110c45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161064a565b6001600160a01b038316600090815260208190526040902054818110156112015760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161064a565b6001600160a01b0384166000818152602081905260409020838303905530148061123357506001600160a01b03831630145b8061124b5750600b546001600160a01b038581169116145b806112635750600b546001600160a01b038481169116145b156112d8576001600160a01b038316600090815260208190526040812080548492906112909084906119c2565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611c16833981519152846040516112ca91815260200190565b60405180910390a350505050565b6001600160a01b0384166000908152600a602052604090205460ff16801561131857506001600160a01b0383166000908152600a602052604090205460ff165b15611345576001600160a01b038316600090815260208190526040812080548492906112909084906119c2565b6001600160a01b0383166000908152600a602052604090205460ff16156113ef5760006113718361165a565b905080600080866001600160a01b03166001600160a01b0316815260200190815260200160002060008282546113a791906119c2565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611c16833981519152836040516113e191815260200190565b60405180910390a3506114a5565b6001600160a01b0384166000908152600a602052604090205460ff161561149a57600061141b836116b8565b905080600080866001600160a01b03166001600160a01b03168152602001908152602001600020600082825461145191906119c2565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611c168339815191528360405161148b91815260200190565b60405180910390a35050505050565b600061141b836116e2565b50505050565b6000670de0b6b3a76400006114be61075f565b6114c890846119ee565b6114d29190611a18565b90506114df333084611125565b6114e983826115e3565b60408051838152602081018390527ffa790d1a50e7e5400184ee5f8b34edeb34d6d6d4e4142bb9e49861c6e4ee9a1c910160405180910390a1505050565b6008546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159891906119d5565b6115a590620f42406119ee565b306000908152602081905260408120549192509064e8d4a51000906003546115cd9190611a05565b6115d79190611a18565b90506108338183611a18565b60085460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611636573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b9190611bf3565b6000806007546103e88461166e9190611a18565b61167891906119ee565b90506000611687606485611a18565b905061169282611700565b61169b81611765565b806116a68386611a05565b6116b09190611a05565b949350505050565b6000806116c6606484611a18565b90506116d181611765565b6116db8184611a05565b9392505050565b6000806006546103e8846116f69190611a18565b6116c691906119ee565b600c546001600160a01b03166000908152602081905260408120805483929061172a9084906119c2565b9091555050600c546040518281526001600160a01b03909116903390600080516020611c16833981519152906020015b60405180910390a350565b30600090815260208190526040812080548392906117849084906119c2565b909155505060405181815230903390600080516020611c168339815191529060200161175a565b60006020808352835180602085015260005b818110156117d9578581018301518582016040015282016117bd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461180f57600080fd5b50565b6000806040838503121561182557600080fd5b8235611830816117fa565b946020939093013593505050565b60006020828403121561185057600080fd5b5035919050565b60008060006060848603121561186c57600080fd5b8335611877816117fa565b92506020840135611887816117fa565b929592945050506040919091013590565b6000602082840312156118aa57600080fd5b81356116db816117fa565b600080604083850312156118c857600080fd5b82356118d3816117fa565b915060208301356118e3816117fa565b809150509250929050565b600181811c9082168061190257607f821691505b60208210810361192257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f4f6e6c7920746865207465616d2063616e2073657420746865207461782066656040820152606560f81b606082015260800190565b60208082526023908201527f54617820666565206d757374206265206c657373207468616e20312070657263604082015262195b9d60ea1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561061a5761061a6119ac565b6000602082840312156119e757600080fd5b5051919050565b808202811582820484141761061a5761061a6119ac565b8181038181111561061a5761061a6119ac565b600082611a3557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611a6257600080fd5b81516116db816117fa565b634e487b7160e01b600052603260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015611acf5784516001600160a01b031683529383019391830191600101611aaa565b50506001600160a01b039690961660408501525050506060015292915050565b60006020808385031215611b0257600080fd5b825167ffffffffffffffff80821115611b1a57600080fd5b818501915085601f830112611b2e57600080fd5b815181811115611b4057611b40611a3a565b8060051b604051601f19603f83011681018181108582111715611b6557611b65611a3a565b604052918252848201925083810185019188831115611b8357600080fd5b938501935b82851015611ba157845184529385019392850192611b88565b98975050505050505050565b60208082526026908201527f416d6f756e74206f6620746f6b656e7320736f6c64206d75737420626520706f60408201526573697469766560d01b606082015260800190565b600060208284031215611c0557600080fd5b815180151581146116db57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220331fc9a1aa717e7cff157d579d7e6e73b944ec0838a8966848caa319d2069fd164736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000295be96e64066972000000000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda0291300000000000000000000000033ceb2fca352118faa6a85286b0adc84715bd6790000000000000000000000004b66ab17d8650fa08cda6ce88b497964173c17d00000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad24
-----Decoded View---------------
Arg [0] : _tSupply (uint256): 50000000000000000000000000
Arg [1] : _USDCAddress (address): 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Arg [2] : _botAddress (address): 0x33ceB2fCA352118FAA6a85286b0aDc84715bD679
Arg [3] : _multisigMarketingAddress (address): 0x4B66AB17d8650FA08CDA6Ce88b497964173C17D0
Arg [4] : _uniswapRouterAddress (address): 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000295be96e64066972000000
Arg [1] : 000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913
Arg [2] : 00000000000000000000000033ceb2fca352118faa6a85286b0adc84715bd679
Arg [3] : 0000000000000000000000004b66ab17d8650fa08cda6ce88b497964173c17d0
Arg [4] : 0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad24
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)