Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 47 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 20128660 | 626 days ago | IN | 0 ETH | 0.00065008 | ||||
| Renounce Ownersh... | 20128659 | 626 days ago | IN | 0 ETH | 0.00024196 | ||||
| Approve | 20128657 | 626 days ago | IN | 0 ETH | 0.00040185 | ||||
| Update Sell GN F... | 20128657 | 626 days ago | IN | 0 ETH | 0.00029666 | ||||
| Update Buy GN Fe... | 20128656 | 626 days ago | IN | 0 ETH | 0.00031464 | ||||
| Approve | 20128618 | 626 days ago | IN | 0 ETH | 0.00059382 | ||||
| Approve | 20128616 | 626 days ago | IN | 0 ETH | 0.00059008 | ||||
| Approve | 20128612 | 626 days ago | IN | 0 ETH | 0.00061736 | ||||
| Approve | 20128611 | 626 days ago | IN | 0 ETH | 0.00056013 | ||||
| Approve | 20128611 | 626 days ago | IN | 0 ETH | 0.00060676 | ||||
| Remove Launch Li... | 20128609 | 626 days ago | IN | 0 ETH | 0.00033065 | ||||
| Approve | 20128608 | 626 days ago | IN | 0 ETH | 0.00062528 | ||||
| Approve | 20128608 | 626 days ago | IN | 0 ETH | 0.00062528 | ||||
| Approve | 20128608 | 626 days ago | IN | 0 ETH | 0.00062528 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00072274 | ||||
| Approve | 20128607 | 626 days ago | IN | 0 ETH | 0.00118897 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 20128663 | 626 days ago | 0.01532929 ETH | ||||
| Transfer | 20128663 | 626 days ago | 0.01532929 ETH | ||||
| Transfer | 20128663 | 626 days ago | 0.03065858 ETH | ||||
| Transfer | 20128655 | 626 days ago | 0.03569518 ETH | ||||
| Transfer | 20128655 | 626 days ago | 0.03569518 ETH | ||||
| Transfer | 20128655 | 626 days ago | 0.07139037 ETH | ||||
| Transfer | 20128624 | 626 days ago | 0.00661266 ETH | ||||
| Transfer | 20128624 | 626 days ago | 0.00661266 ETH | ||||
| Transfer | 20128624 | 626 days ago | 0.01322533 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00203929 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00203929 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00407858 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00210513 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00210513 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00421026 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00199215 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00199215 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.00398431 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.002214 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.002214 ETH | ||||
| Transfer | 20128613 | 626 days ago | 0.004428 ETH | ||||
| Transfer | 20128612 | 626 days ago | 0.00198137 ETH | ||||
| Transfer | 20128612 | 626 days ago | 0.00198137 ETH | ||||
| Transfer | 20128612 | 626 days ago | 0.00396275 ETH | ||||
| Transfer | 20128612 | 626 days ago | 0.00217077 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GN
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-06-19
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
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 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;
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 9;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
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);
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
function mul(int256 a, int256 b) internal pure returns (int256) {
int256 c = a * b;
// Detect overflow when multiplying MIN_INT256 with -1
require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
require((b == 0) || (c / b == a));
return c;
}
function div(int256 a, int256 b) internal pure returns (int256) {
// Prevent overflow when dividing MIN_INT256 by -1
require(b != -1 || a != MIN_INT256);
// Solidity already throws when dividing by 0.
return a / b;
}
/**
* @dev Subtracts two int256 variables and fails on overflow.
*/
function sub(int256 a, int256 b) internal pure returns (int256) {
int256 c = a - b;
require((b >= 0 && c <= a) || (b < 0 && c > a));
return c;
}
/**
* @dev Adds two int256 variables and fails on overflow.
*/
function add(int256 a, int256 b) internal pure returns (int256) {
int256 c = a + b;
require((b >= 0 && c >= a) || (b < 0 && c < a));
return c;
}
/**
* @dev Converts to absolute value, and fails on overflow.
*/
function abs(int256 a) internal pure returns (int256) {
require(a != MIN_INT256);
return a < 0 ? -a : a;
}
function toUint256Safe(int256 a) internal pure returns (uint256) {
require(a >= 0);
return uint256(a);
}
}
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract GN is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
bool private swapping;
address private GoodNightWallet;
address private GNWallet;
uint256 public maxTransactionAmount;
uint256 public swapFeeTokensAtAmount;
uint256 public maxWallet;
bool public tradingLimits = true;
bool public tradingActive = false;
bool public swapEnabled = false;
bool public letswap = false;
// Anti-bot and anti-whale mappings and variables
mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
bool public _transferDelay = false;
uint256 public buyTotalFees;
uint256 public buyGoodNightFee;
uint256 public buyGNFee;
uint256 public sellTotalFees;
uint256 public sellGoodNightFee;
uint256 public sellGNFee;
uint256 public tokensForGoodNight;
uint256 public tokensForGN;
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTransactionAmount;
mapping (address => bool) public lpPoolPairs;
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
constructor() ERC20("GN", "GN") {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
excludeFromGNMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
excludeFromGNMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
uint256 _buyGoodNightFee = 10;
uint256 _buyGNFee = 10;
uint256 _sellGoodNightFee = 10;
uint256 _sellGNFee = 10;
uint256 totalSupply = 1_000_000_000 * 1e9;
maxTransactionAmount = totalSupply * 10 / 1000; // 0.5%
maxWallet = totalSupply * 10 / 1000; // 0.5%
swapFeeTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet
buyGoodNightFee = _buyGoodNightFee;
buyGNFee = _buyGNFee;
buyTotalFees = buyGoodNightFee + buyGNFee;
sellGoodNightFee = _sellGoodNightFee;
sellGNFee = _sellGNFee;
sellTotalFees = sellGoodNightFee + sellGNFee;
GoodNightWallet = msg.sender;
GNWallet = msg.sender;
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(GoodNightWallet, true);
excludeFromFees(GNWallet, true);
excludeFromFees(address(0xdead), true);
excludeFromGNMaxTransaction(owner(), true);
excludeFromGNMaxTransaction(address(this), true);
excludeFromGNMaxTransaction(GNWallet, true);
excludeFromGNMaxTransaction(GoodNightWallet, true);
excludeFromGNMaxTransaction(address(0xdead), true);
_mint(address(this), totalSupply);
}
receive() external payable {
}
// change the minimum amount of tokens to sell from fees
function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
swapFeeTokensAtAmount = newAmount;
return true;
}
function excludeFromGNMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
// only use to disable contract sales if absolutely necessary (emergency use only)
function updateSwapGNEnabled(bool enabled) external onlyOwner(){
swapEnabled = enabled;
}
function updateBuyGNFees(uint256 _GoodNightFee, uint256 _GNFee) external onlyOwner {
buyGoodNightFee = _GoodNightFee;
buyGNFee = _GNFee;
buyTotalFees = buyGoodNightFee + buyGNFee;
}
function updateSellGNFees(uint256 _GoodNightFee, uint256 _GNFee) external onlyOwner {
sellGoodNightFee = _GoodNightFee;
sellGNFee = _GNFee;
sellTotalFees = sellGoodNightFee + sellGNFee;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
lpPoolPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function isExcludedFromFees(address account) public view returns(bool) {
return _isExcludedFromFees[account];
}
function removeLaunchLimits() external onlyOwner returns (bool){
tradingLimits = false;
return true;
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if(amount == 0) {
super._transfer(from, to, 0);
return;
}
if(tradingLimits){
if (
from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!swapping
){
if(!tradingActive){
require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
}
if (_transferDelay){
if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed.");
_holderLastTransferTimestamp[tx.origin] = block.number;
}
}
//when buy
if (lpPoolPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
//when sell
else if (lpPoolPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
}
else if(!_isExcludedMaxTransactionAmount[to]){
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapFeeTokensAtAmount;
if(
canSwap &&
swapEnabled &&
!swapping &&
!lpPoolPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = !swapping;
// if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
// only take fees on buys/sells, do not take on wallet transfers
if(takeFee){
// on sell
if (lpPoolPairs[to] && sellTotalFees > 0){
fees = amount.mul(sellTotalFees).div(100);
tokensForGN += fees * sellGNFee / sellTotalFees;
tokensForGoodNight += fees * sellGoodNightFee / sellTotalFees;
}
// on buy
else if(lpPoolPairs[from] && buyTotalFees > 0) {
fees = amount.mul(buyTotalFees).div(100);
tokensForGN += fees * buyGNFee / buyTotalFees;
tokensForGoodNight += fees * buyGoodNightFee / buyTotalFees;
}
if(fees > 0){
super._transfer(from, address(this), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function openTrading() external onlyOwner payable {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), balanceOf(address(this)));
// add the liquidity
uniswapV2Router.addLiquidityETH{value: address(this).balance}(
address(this),
balanceOf(address(this)),
0, // slippage is unavoidable
0, // slippage is unavoidable
msg.sender,
block.timestamp
);
tradingActive = true;
swapEnabled = true;
letswap = true;
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForGoodNight + tokensForGN;
bool success;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(contractBalance > swapFeeTokensAtAmount * 20){
contractBalance = swapFeeTokensAtAmount * 20;
}
swapTokensForEth(contractBalance);
uint256 ethBalance = address(this).balance;
uint256 ethForGN = ethBalance.mul(tokensForGN).div(totalTokensToSwap);
tokensForGoodNight = 0;
tokensForGN = 0;
(success,) = address(GNWallet).call{value: ethForGN}("");
(success,) = address(GoodNightWallet).call{value: address(this).balance}("");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyGNFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyGoodNightFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromGNMaxTransaction","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"letswap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpPoolPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLaunchLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellGNFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellGoodNightFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFeeTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForGN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForGoodNight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_GoodNightFee","type":"uint256"},{"internalType":"uint256","name":"_GNFee","type":"uint256"}],"name":"updateBuyGNFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_GoodNightFee","type":"uint256"},{"internalType":"uint256","name":"_GNFee","type":"uint256"}],"name":"updateSellGNFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapGNEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c0604052600b805463ffffffff19166001179055600d805460ff19169055348015610029575f80fd5b5060408051808201825260028082526123a760f11b60208084018290528451808601909552918452908301529060036100628382610739565b50600461006f8282610739565b5050505f6100816103e860201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6100ee8160016103ec565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610136573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061015a91906107f3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c991906107f3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023791906107f3565b6001600160a01b031660a08190526102509060016103ec565b60a05161025e906001610462565b600a808080670de0b6b3a76400006103e8610279828461082d565b6102839190610844565b6008556103e861029482600a61082d565b61029e9190610844565b600a908155612710906102b290839061082d565b6102bc9190610844565b600955600f85905560108490556102d38486610863565b600e55601283905560138290556102ea8284610863565b60115560068054336001600160a01b0319918216811790925560078054909116909117905561032b6103246005546001600160a01b031690565b60016104b5565b6103363060016104b5565b60065461034d906001600160a01b031660016104b5565b600754610364906001600160a01b031660016104b5565b61037161dead60016104b5565b61038d6103866005546001600160a01b031690565b60016103ec565b6103983060016103ec565b6007546103af906001600160a01b031660016103ec565b6006546103c6906001600160a01b031660016103ec565b6103d361dead60016103ec565b6103dd308261055a565b505050505050610876565b3390565b6005546001600160a01b031633146104385760405162461bcd60e51b815260206004820181905260248201525f80516020612ac083398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146104fc5760405162461bcd60e51b815260206004820181905260248201525f80516020612ac0833981519152604482015260640161042f565b6001600160a01b0382165f81815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166105b05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161042f565b6002546105bd908261063b565b6002556001600160a01b0382165f908152602081905260409020546105e2908261063b565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b5f806106478385610863565b9050838110156106995760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161042f565b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806106ca57607f821691505b6020821081036106e857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561063657805f5260205f20601f840160051c810160208510156107135750805b601f840160051c820191505b81811015610732575f815560010161071f565b5050505050565b81516001600160401b03811115610752576107526106a2565b6107668161076084546106b6565b846106ee565b6020601f821160018114610798575f83156107815750848201515b5f19600385901b1c1916600184901b178455610732565b5f84815260208120601f198516915b828110156107c757878501518255602094850194600190920191016107a7565b50848210156107e457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610803575f80fd5b81516001600160a01b0381168114610699575f80fd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761069c5761069c610819565b5f8261085e57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561069c5761069c610819565b60805160a0516121f86108c85f395f81816103e6015261122701525f818161031901528181610b5401528181610b7e015281816111e901528181611bfb01528181611cb20152611cee01526121f85ff3fe608060405260043610610257575f3560e01c80638da5cb5b1161013f578063c0246668116100b3578063d4134c5f11610078578063d4134c5f146106d5578063d85ba063146106f4578063dd62ed3e14610709578063ddb73a3d1461074d578063f2fde38b14610762578063f8b45b0514610781575f80fd5b8063c02466681461065b578063c8c8ebe41461067a578063c9567bf91461068f578063d257b34f14610697578063d38cb0a0146106b6575f80fd5b8063a9059cbb11610104578063a9059cbb146105a8578063b682e46a146105c7578063bb1721e4146105dc578063bbbee3cd146105fb578063bbc0c74214610629578063c01dfd6614610647575f80fd5b80638da5cb5b146105205780638f44dbcd1461053d57806393436bf21461055657806395d89b4114610575578063a457c2d714610589575f80fd5b806349bd5a5e116101d65780636a486a8e1161019b5780636a486a8e146104825780636b37f0c5146104975780636ddd1713146104b75780636ee2a9b2146104d657806370a08231146104eb578063715018a61461050a575f80fd5b806349bd5a5e146103d55780634fbee19314610408578063514acef01461043f5780635e35a0191461045457806363361f9f14610469575f80fd5b806316df3b9a1161021c57806316df3b9a1461035357806318160ddd1461036857806323b872dd1461037c578063313ce5671461039b57806339509351146103b6575f80fd5b8063038b76a21461026257806306fdde031461028a578063095ea7b3146102ab57806310d5de53146102da5780631694505e14610308575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b5061027760125481565b6040519081526020015b60405180910390f35b348015610295575f80fd5b5061029e610796565b6040516102819190611d88565b3480156102b6575f80fd5b506102ca6102c5366004611dd4565b610826565b6040519015158152602001610281565b3480156102e5575f80fd5b506102ca6102f4366004611dfe565b60176020525f908152604090205460ff1681565b348015610313575f80fd5b5061033b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610281565b34801561035e575f80fd5b5061027760155481565b348015610373575f80fd5b50600254610277565b348015610387575f80fd5b506102ca610396366004611e19565b61083c565b3480156103a6575f80fd5b5060405160098152602001610281565b3480156103c1575f80fd5b506102ca6103d0366004611dd4565b6108a3565b3480156103e0575f80fd5b5061033b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610413575f80fd5b506102ca610422366004611dfe565b6001600160a01b03165f9081526016602052604090205460ff1690565b34801561044a575f80fd5b50610277600f5481565b34801561045f575f80fd5b5061027760105481565b348015610474575f80fd5b50600d546102ca9060ff1681565b34801561048d575f80fd5b5061027760115481565b3480156104a2575f80fd5b50600b546102ca906301000000900460ff1681565b3480156104c2575f80fd5b50600b546102ca9062010000900460ff1681565b3480156104e1575f80fd5b5061027760095481565b3480156104f6575f80fd5b50610277610505366004611dfe565b6108d8565b348015610515575f80fd5b5061051e6108f2565b005b34801561052b575f80fd5b506005546001600160a01b031661033b565b348015610548575f80fd5b50600b546102ca9060ff1681565b348015610561575f80fd5b5061051e610570366004611e57565b61096e565b348015610580575f80fd5b5061029e6109b3565b348015610594575f80fd5b506102ca6105a3366004611dd4565b6109c2565b3480156105b3575f80fd5b506102ca6105c2366004611dd4565b610a0f565b3480156105d2575f80fd5b5061027760145481565b3480156105e7575f80fd5b5061051e6105f6366004611e57565b610a1b565b348015610606575f80fd5b506102ca610615366004611dfe565b60186020525f908152604090205460ff1681565b348015610634575f80fd5b50600b546102ca90610100900460ff1681565b348015610652575f80fd5b506102ca610a60565b348015610666575f80fd5b5061051e610675366004611e86565b610a9c565b348015610685575f80fd5b5061027760085481565b61051e610b24565b3480156106a2575f80fd5b506102ca6106b1366004611eb9565b610c54565b3480156106c1575f80fd5b5061051e6106d0366004611e86565b610daa565b3480156106e0575f80fd5b5061051e6106ef366004611ed0565b610dfe565b3480156106ff575f80fd5b50610277600e5481565b348015610714575f80fd5b50610277610723366004611ee9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610758575f80fd5b5061027760135481565b34801561076d575f80fd5b5061051e61077c366004611dfe565b610e44565b34801561078c575f80fd5b50610277600a5481565b6060600380546107a590611f20565b80601f01602080910402602001604051908101604052809291908181526020018280546107d190611f20565b801561081c5780601f106107f35761010080835404028352916020019161081c565b820191905f5260205f20905b8154815290600101906020018083116107ff57829003601f168201915b5050505050905090565b5f610832338484610f2e565b5060015b92915050565b5f610848848484611052565b610899843361089485604051806060016040528060288152602001612176602891396001600160a01b038a165f908152600160209081526040808320338452909152902054919061180c565b610f2e565b5060019392505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108329185906108949086611844565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146109255760405162461bcd60e51b815260040161091c90611f58565b60405180910390fd5b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146109985760405162461bcd60e51b815260040161091c90611f58565b601282905560138190556109ac8183611fa1565b6011555050565b6060600480546107a590611f20565b5f61083233846108948560405180606001604052806025815260200161219e60259139335f9081526001602090815260408083206001600160a01b038d168452909152902054919061180c565b5f610832338484611052565b6005546001600160a01b03163314610a455760405162461bcd60e51b815260040161091c90611f58565b600f8290556010819055610a598183611fa1565b600e555050565b6005545f906001600160a01b03163314610a8c5760405162461bcd60e51b815260040161091c90611f58565b50600b805460ff19169055600190565b6005546001600160a01b03163314610ac65760405162461bcd60e51b815260040161091c90611f58565b6001600160a01b0382165f81815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610b4e5760405162461bcd60e51b815260040161091c90611f58565b610b7c307f0000000000000000000000000000000000000000000000000000000000000000610894306108d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7194730610bb6306108d8565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610c17573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3c9190611fb4565b5050600b805463ffffff001916630101010017905550565b6005545f906001600160a01b03163314610c805760405162461bcd60e51b815260040161091c90611f58565b620186a0610c8d60025490565b610c98906001611fdf565b610ca29190611ff6565b821015610d0f5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161091c565b6103e8610d1b60025490565b610d26906005611fdf565b610d309190611ff6565b821115610d9c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161091c565b50600981905560015b919050565b6005546001600160a01b03163314610dd45760405162461bcd60e51b815260040161091c90611f58565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e285760405162461bcd60e51b815260040161091c90611f58565b600b8054911515620100000262ff000019909216919091179055565b6005546001600160a01b03163314610e6e5760405162461bcd60e51b815260040161091c90611f58565b6001600160a01b038116610ed35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161091c565b6001600160a01b038216610ff15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161091c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166110785760405162461bcd60e51b815260040161091c90612015565b6001600160a01b03821661109e5760405162461bcd60e51b815260040161091c9061205a565b805f036110b5576110b083835f6118a9565b505050565b600b5460ff1615611549576005546001600160a01b038481169116148015906110ec57506005546001600160a01b03838116911614155b801561110057506001600160a01b03821615155b801561111757506001600160a01b03821661dead14155b801561112d5750600554600160a01b900460ff16155b1561154957600b54610100900460ff166111c3576001600160a01b0383165f9081526016602052604090205460ff168061117e57506001600160a01b0382165f9081526016602052604090205460ff165b6111c35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161091c565b600d5460ff1615611308576005546001600160a01b0383811691161480159061121e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561125c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561130857325f908152600c602052604090205443116112f65760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a40161091c565b325f908152600c602052604090204390555b6001600160a01b0383165f9081526018602052604090205460ff16801561134757506001600160a01b0382165f9081526017602052604090205460ff16155b1561141b576008548111156113bc5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161091c565b600a546113c8836108d8565b6113d29083611fa1565b11156114165760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161091c565b611549565b6001600160a01b0382165f9081526018602052604090205460ff16801561145a57506001600160a01b0383165f9081526017602052604090205460ff16155b156114d0576008548111156114165760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161091c565b6001600160a01b0382165f9081526017602052604090205460ff1661154957600a546114fb836108d8565b6115059083611fa1565b11156115495760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161091c565b5f611553306108d8565b600954909150811080159081906115725750600b5462010000900460ff165b80156115885750600554600160a01b900460ff16155b80156115ac57506001600160a01b0385165f9081526018602052604090205460ff16155b80156115d057506001600160a01b0385165f9081526016602052604090205460ff16155b80156115f457506001600160a01b0384165f9081526016602052604090205460ff16155b15611622576005805460ff60a01b1916600160a01b1790556116146119af565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526016602052604090205460ff600160a01b90920482161591168061166e57506001600160a01b0385165f9081526016602052604090205460ff165b1561167657505f5b5f81156117f8576001600160a01b0386165f9081526018602052604090205460ff1680156116a557505f601154115b15611731576116ca60646116c460115488611ae790919063ffffffff16565b90611b65565b9050601154601354826116dd9190611fdf565b6116e79190611ff6565b60155f8282546116f79190611fa1565b909155505060115460125461170c9083611fdf565b6117169190611ff6565b60145f8282546117269190611fa1565b909155506117da9050565b6001600160a01b0387165f9081526018602052604090205460ff16801561175957505f600e54115b156117da5761177860646116c4600e5488611ae790919063ffffffff16565b9050600e546010548261178b9190611fdf565b6117959190611ff6565b60155f8282546117a59190611fa1565b9091555050600e54600f546117ba9083611fdf565b6117c49190611ff6565b60145f8282546117d49190611fa1565b90915550505b80156117eb576117eb8730836118a9565b6117f5818661209d565b94505b6118038787876118a9565b50505050505050565b5f818484111561182f5760405162461bcd60e51b815260040161091c9190611d88565b505f61183b848661209d565b95945050505050565b5f806118508385611fa1565b9050838110156118a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091c565b9392505050565b6001600160a01b0383166118cf5760405162461bcd60e51b815260040161091c90612015565b6001600160a01b0382166118f55760405162461bcd60e51b815260040161091c9061205a565b61193181604051806060016040528060268152602001612150602691396001600160a01b0386165f90815260208190526040902054919061180c565b6001600160a01b038085165f90815260208190526040808220939093559084168152205461195f9082611844565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611045565b5f6119b9306108d8565b90505f6015546014546119cc9190611fa1565b90505f8215806119da575081155b156119e457505050565b6009546119f2906014611fdf565b831115611a0a57600954611a07906014611fdf565b92505b611a1383611ba6565b5f4790505f611a31846116c460155485611ae790919063ffffffff16565b5f601481905560158190556007546040519293506001600160a01b031691839181818185875af1925050503d805f8114611a86576040519150601f19603f3d011682016040523d82523d5f602084013e611a8b565b606091505b50506006546040519194506001600160a01b03169047905f81818185875af1925050503d805f8114611ad8576040519150601f19603f3d011682016040523d82523d5f602084013e611add565b606091505b5050505050505050565b5f825f03611af657505f610836565b5f611b018385611fdf565b905082611b0e8583611ff6565b146118a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091c565b5f6118a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d5c565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611bd957611bd96120b0565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c7991906120c4565b81600181518110611c8c57611c8c6120b0565b60200260200101906001600160a01b031690816001600160a01b031681525050611cd7307f000000000000000000000000000000000000000000000000000000000000000084610f2e565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611d2b9085905f908690309042906004016120df565b5f604051808303815f87803b158015611d42575f80fd5b505af1158015611d54573d5f803e3d5ffd5b505050505050565b5f8183611d7c5760405162461bcd60e51b815260040161091c9190611d88565b505f61183b8486611ff6565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611dd1575f80fd5b50565b5f8060408385031215611de5575f80fd5b8235611df081611dbd565b946020939093013593505050565b5f60208284031215611e0e575f80fd5b81356118a281611dbd565b5f805f60608486031215611e2b575f80fd5b8335611e3681611dbd565b92506020840135611e4681611dbd565b929592945050506040919091013590565b5f8060408385031215611e68575f80fd5b50508035926020909101359150565b80358015158114610da5575f80fd5b5f8060408385031215611e97575f80fd5b8235611ea281611dbd565b9150611eb060208401611e77565b90509250929050565b5f60208284031215611ec9575f80fd5b5035919050565b5f60208284031215611ee0575f80fd5b6118a282611e77565b5f8060408385031215611efa575f80fd5b8235611f0581611dbd565b91506020830135611f1581611dbd565b809150509250929050565b600181811c90821680611f3457607f821691505b602082108103611f5257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561083657610836611f8d565b5f805f60608486031215611fc6575f80fd5b5050815160208301516040909301519094929350919050565b808202811582820484141761083657610836611f8d565b5f8261201057634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561083657610836611f8d565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156120d4575f80fd5b81516118a281611dbd565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561212f5783516001600160a01b0316835260209384019390920191600101612108565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200f2c1e78ce05125d4464740e210b5724777d8158b70c85e3a0fa9f35917b738a64736f6c634300081a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x608060405260043610610257575f3560e01c80638da5cb5b1161013f578063c0246668116100b3578063d4134c5f11610078578063d4134c5f146106d5578063d85ba063146106f4578063dd62ed3e14610709578063ddb73a3d1461074d578063f2fde38b14610762578063f8b45b0514610781575f80fd5b8063c02466681461065b578063c8c8ebe41461067a578063c9567bf91461068f578063d257b34f14610697578063d38cb0a0146106b6575f80fd5b8063a9059cbb11610104578063a9059cbb146105a8578063b682e46a146105c7578063bb1721e4146105dc578063bbbee3cd146105fb578063bbc0c74214610629578063c01dfd6614610647575f80fd5b80638da5cb5b146105205780638f44dbcd1461053d57806393436bf21461055657806395d89b4114610575578063a457c2d714610589575f80fd5b806349bd5a5e116101d65780636a486a8e1161019b5780636a486a8e146104825780636b37f0c5146104975780636ddd1713146104b75780636ee2a9b2146104d657806370a08231146104eb578063715018a61461050a575f80fd5b806349bd5a5e146103d55780634fbee19314610408578063514acef01461043f5780635e35a0191461045457806363361f9f14610469575f80fd5b806316df3b9a1161021c57806316df3b9a1461035357806318160ddd1461036857806323b872dd1461037c578063313ce5671461039b57806339509351146103b6575f80fd5b8063038b76a21461026257806306fdde031461028a578063095ea7b3146102ab57806310d5de53146102da5780631694505e14610308575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b5061027760125481565b6040519081526020015b60405180910390f35b348015610295575f80fd5b5061029e610796565b6040516102819190611d88565b3480156102b6575f80fd5b506102ca6102c5366004611dd4565b610826565b6040519015158152602001610281565b3480156102e5575f80fd5b506102ca6102f4366004611dfe565b60176020525f908152604090205460ff1681565b348015610313575f80fd5b5061033b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610281565b34801561035e575f80fd5b5061027760155481565b348015610373575f80fd5b50600254610277565b348015610387575f80fd5b506102ca610396366004611e19565b61083c565b3480156103a6575f80fd5b5060405160098152602001610281565b3480156103c1575f80fd5b506102ca6103d0366004611dd4565b6108a3565b3480156103e0575f80fd5b5061033b7f000000000000000000000000fe70a5c86b80b7743b04c95f59cbbc56f143c0bb81565b348015610413575f80fd5b506102ca610422366004611dfe565b6001600160a01b03165f9081526016602052604090205460ff1690565b34801561044a575f80fd5b50610277600f5481565b34801561045f575f80fd5b5061027760105481565b348015610474575f80fd5b50600d546102ca9060ff1681565b34801561048d575f80fd5b5061027760115481565b3480156104a2575f80fd5b50600b546102ca906301000000900460ff1681565b3480156104c2575f80fd5b50600b546102ca9062010000900460ff1681565b3480156104e1575f80fd5b5061027760095481565b3480156104f6575f80fd5b50610277610505366004611dfe565b6108d8565b348015610515575f80fd5b5061051e6108f2565b005b34801561052b575f80fd5b506005546001600160a01b031661033b565b348015610548575f80fd5b50600b546102ca9060ff1681565b348015610561575f80fd5b5061051e610570366004611e57565b61096e565b348015610580575f80fd5b5061029e6109b3565b348015610594575f80fd5b506102ca6105a3366004611dd4565b6109c2565b3480156105b3575f80fd5b506102ca6105c2366004611dd4565b610a0f565b3480156105d2575f80fd5b5061027760145481565b3480156105e7575f80fd5b5061051e6105f6366004611e57565b610a1b565b348015610606575f80fd5b506102ca610615366004611dfe565b60186020525f908152604090205460ff1681565b348015610634575f80fd5b50600b546102ca90610100900460ff1681565b348015610652575f80fd5b506102ca610a60565b348015610666575f80fd5b5061051e610675366004611e86565b610a9c565b348015610685575f80fd5b5061027760085481565b61051e610b24565b3480156106a2575f80fd5b506102ca6106b1366004611eb9565b610c54565b3480156106c1575f80fd5b5061051e6106d0366004611e86565b610daa565b3480156106e0575f80fd5b5061051e6106ef366004611ed0565b610dfe565b3480156106ff575f80fd5b50610277600e5481565b348015610714575f80fd5b50610277610723366004611ee9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610758575f80fd5b5061027760135481565b34801561076d575f80fd5b5061051e61077c366004611dfe565b610e44565b34801561078c575f80fd5b50610277600a5481565b6060600380546107a590611f20565b80601f01602080910402602001604051908101604052809291908181526020018280546107d190611f20565b801561081c5780601f106107f35761010080835404028352916020019161081c565b820191905f5260205f20905b8154815290600101906020018083116107ff57829003601f168201915b5050505050905090565b5f610832338484610f2e565b5060015b92915050565b5f610848848484611052565b610899843361089485604051806060016040528060288152602001612176602891396001600160a01b038a165f908152600160209081526040808320338452909152902054919061180c565b610f2e565b5060019392505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108329185906108949086611844565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146109255760405162461bcd60e51b815260040161091c90611f58565b60405180910390fd5b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146109985760405162461bcd60e51b815260040161091c90611f58565b601282905560138190556109ac8183611fa1565b6011555050565b6060600480546107a590611f20565b5f61083233846108948560405180606001604052806025815260200161219e60259139335f9081526001602090815260408083206001600160a01b038d168452909152902054919061180c565b5f610832338484611052565b6005546001600160a01b03163314610a455760405162461bcd60e51b815260040161091c90611f58565b600f8290556010819055610a598183611fa1565b600e555050565b6005545f906001600160a01b03163314610a8c5760405162461bcd60e51b815260040161091c90611f58565b50600b805460ff19169055600190565b6005546001600160a01b03163314610ac65760405162461bcd60e51b815260040161091c90611f58565b6001600160a01b0382165f81815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610b4e5760405162461bcd60e51b815260040161091c90611f58565b610b7c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d610894306108d8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7194730610bb6306108d8565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610c17573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3c9190611fb4565b5050600b805463ffffff001916630101010017905550565b6005545f906001600160a01b03163314610c805760405162461bcd60e51b815260040161091c90611f58565b620186a0610c8d60025490565b610c98906001611fdf565b610ca29190611ff6565b821015610d0f5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161091c565b6103e8610d1b60025490565b610d26906005611fdf565b610d309190611ff6565b821115610d9c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161091c565b50600981905560015b919050565b6005546001600160a01b03163314610dd45760405162461bcd60e51b815260040161091c90611f58565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e285760405162461bcd60e51b815260040161091c90611f58565b600b8054911515620100000262ff000019909216919091179055565b6005546001600160a01b03163314610e6e5760405162461bcd60e51b815260040161091c90611f58565b6001600160a01b038116610ed35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161091c565b6001600160a01b038216610ff15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161091c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166110785760405162461bcd60e51b815260040161091c90612015565b6001600160a01b03821661109e5760405162461bcd60e51b815260040161091c9061205a565b805f036110b5576110b083835f6118a9565b505050565b600b5460ff1615611549576005546001600160a01b038481169116148015906110ec57506005546001600160a01b03838116911614155b801561110057506001600160a01b03821615155b801561111757506001600160a01b03821661dead14155b801561112d5750600554600160a01b900460ff16155b1561154957600b54610100900460ff166111c3576001600160a01b0383165f9081526016602052604090205460ff168061117e57506001600160a01b0382165f9081526016602052604090205460ff165b6111c35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161091c565b600d5460ff1615611308576005546001600160a01b0383811691161480159061121e57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561125c57507f000000000000000000000000fe70a5c86b80b7743b04c95f59cbbc56f143c0bb6001600160a01b0316826001600160a01b031614155b1561130857325f908152600c602052604090205443116112f65760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a40161091c565b325f908152600c602052604090204390555b6001600160a01b0383165f9081526018602052604090205460ff16801561134757506001600160a01b0382165f9081526017602052604090205460ff16155b1561141b576008548111156113bc5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161091c565b600a546113c8836108d8565b6113d29083611fa1565b11156114165760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161091c565b611549565b6001600160a01b0382165f9081526018602052604090205460ff16801561145a57506001600160a01b0383165f9081526017602052604090205460ff16155b156114d0576008548111156114165760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161091c565b6001600160a01b0382165f9081526017602052604090205460ff1661154957600a546114fb836108d8565b6115059083611fa1565b11156115495760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161091c565b5f611553306108d8565b600954909150811080159081906115725750600b5462010000900460ff165b80156115885750600554600160a01b900460ff16155b80156115ac57506001600160a01b0385165f9081526018602052604090205460ff16155b80156115d057506001600160a01b0385165f9081526016602052604090205460ff16155b80156115f457506001600160a01b0384165f9081526016602052604090205460ff16155b15611622576005805460ff60a01b1916600160a01b1790556116146119af565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526016602052604090205460ff600160a01b90920482161591168061166e57506001600160a01b0385165f9081526016602052604090205460ff165b1561167657505f5b5f81156117f8576001600160a01b0386165f9081526018602052604090205460ff1680156116a557505f601154115b15611731576116ca60646116c460115488611ae790919063ffffffff16565b90611b65565b9050601154601354826116dd9190611fdf565b6116e79190611ff6565b60155f8282546116f79190611fa1565b909155505060115460125461170c9083611fdf565b6117169190611ff6565b60145f8282546117269190611fa1565b909155506117da9050565b6001600160a01b0387165f9081526018602052604090205460ff16801561175957505f600e54115b156117da5761177860646116c4600e5488611ae790919063ffffffff16565b9050600e546010548261178b9190611fdf565b6117959190611ff6565b60155f8282546117a59190611fa1565b9091555050600e54600f546117ba9083611fdf565b6117c49190611ff6565b60145f8282546117d49190611fa1565b90915550505b80156117eb576117eb8730836118a9565b6117f5818661209d565b94505b6118038787876118a9565b50505050505050565b5f818484111561182f5760405162461bcd60e51b815260040161091c9190611d88565b505f61183b848661209d565b95945050505050565b5f806118508385611fa1565b9050838110156118a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091c565b9392505050565b6001600160a01b0383166118cf5760405162461bcd60e51b815260040161091c90612015565b6001600160a01b0382166118f55760405162461bcd60e51b815260040161091c9061205a565b61193181604051806060016040528060268152602001612150602691396001600160a01b0386165f90815260208190526040902054919061180c565b6001600160a01b038085165f90815260208190526040808220939093559084168152205461195f9082611844565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611045565b5f6119b9306108d8565b90505f6015546014546119cc9190611fa1565b90505f8215806119da575081155b156119e457505050565b6009546119f2906014611fdf565b831115611a0a57600954611a07906014611fdf565b92505b611a1383611ba6565b5f4790505f611a31846116c460155485611ae790919063ffffffff16565b5f601481905560158190556007546040519293506001600160a01b031691839181818185875af1925050503d805f8114611a86576040519150601f19603f3d011682016040523d82523d5f602084013e611a8b565b606091505b50506006546040519194506001600160a01b03169047905f81818185875af1925050503d805f8114611ad8576040519150601f19603f3d011682016040523d82523d5f602084013e611add565b606091505b5050505050505050565b5f825f03611af657505f610836565b5f611b018385611fdf565b905082611b0e8583611ff6565b146118a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091c565b5f6118a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d5c565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611bd957611bd96120b0565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c7991906120c4565b81600181518110611c8c57611c8c6120b0565b60200260200101906001600160a01b031690816001600160a01b031681525050611cd7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610f2e565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611d2b9085905f908690309042906004016120df565b5f604051808303815f87803b158015611d42575f80fd5b505af1158015611d54573d5f803e3d5ffd5b505050505050565b5f8183611d7c5760405162461bcd60e51b815260040161091c9190611d88565b505f61183b8486611ff6565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611dd1575f80fd5b50565b5f8060408385031215611de5575f80fd5b8235611df081611dbd565b946020939093013593505050565b5f60208284031215611e0e575f80fd5b81356118a281611dbd565b5f805f60608486031215611e2b575f80fd5b8335611e3681611dbd565b92506020840135611e4681611dbd565b929592945050506040919091013590565b5f8060408385031215611e68575f80fd5b50508035926020909101359150565b80358015158114610da5575f80fd5b5f8060408385031215611e97575f80fd5b8235611ea281611dbd565b9150611eb060208401611e77565b90509250929050565b5f60208284031215611ec9575f80fd5b5035919050565b5f60208284031215611ee0575f80fd5b6118a282611e77565b5f8060408385031215611efa575f80fd5b8235611f0581611dbd565b91506020830135611f1581611dbd565b809150509250929050565b600181811c90821680611f3457607f821691505b602082108103611f5257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561083657610836611f8d565b5f805f60608486031215611fc6575f80fd5b5050815160208301516040909301519094929350919050565b808202811582820484141761083657610836611f8d565b5f8261201057634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561083657610836611f8d565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156120d4575f80fd5b81516118a281611dbd565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561212f5783516001600160a01b0316835260209384019390920191600101612108565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200f2c1e78ce05125d4464740e210b5724777d8158b70c85e3a0fa9f35917b738a64736f6c634300081a0033
Deployed Bytecode Sourcemap
17735:11100:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18658:31;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;18658:31:0;;;;;;;;4837:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5736:169::-;;;;;;;;;;-1:-1:-1;5736:169:0;;;;;:::i;:::-;;:::i;:::-;;;1292:14:1;;1285:22;1267:41;;1255:2;1240:18;5736:169:0;1127:187:1;18869:64:0;;;;;;;;;;-1:-1:-1;18869:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17808:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1762:32:1;;;1744:51;;1732:2;1717:18;17808:51:0;1571:230:1;18773:26:0;;;;;;;;;;;;;;;;5151:108;;;;;;;;;;-1:-1:-1;5239:12:0;;5151:108;;5911:355;;;;;;;;;;-1:-1:-1;5911:355:0;;;;;:::i;:::-;;:::i;5053:92::-;;;;;;;;;;-1:-1:-1;5053:92:0;;5136:1;2461:36:1;;2449:2;2434:18;5053:92:0;2319:184:1;6272:218:0;;;;;;;;;;-1:-1:-1;6272:218:0;;;;;:::i;:::-;;:::i;17866:38::-;;;;;;;;;;;;;;;22853:125;;;;;;;;;;-1:-1:-1;22853:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;22942:28:0;22918:4;22942:28;;;:19;:28;;;;;;;;;22853:125;18553:30;;;;;;;;;;;;;;;;18590:23;;;;;;;;;;;;;;;;18475:34;;;;;;;;;;-1:-1:-1;18475:34:0;;;;;;;;18623:28;;;;;;;;;;;;;;;;18253:27;;;;;;;;;;-1:-1:-1;18253:27:0;;;;;;;;;;;18215:31;;;;;;;;;;-1:-1:-1;18215:31:0;;;;;;;;;;;18059:36;;;;;;;;;;;;;;;;5265:127;;;;;;;;;;-1:-1:-1;5265:127:0;;;;;:::i;:::-;;:::i;10665:148::-;;;;;;;;;;;;;:::i;:::-;;10455:79;;;;;;;;;;-1:-1:-1;10520:6:0;;-1:-1:-1;;;;;10520:6:0;10455:79;;18136:32;;;;;;;;;;-1:-1:-1;18136:32:0;;;;;;;;22253:219;;;;;;;;;;-1:-1:-1;22253:219:0;;;;;:::i;:::-;;:::i;4943:104::-;;;;;;;;;;;;;:::i;6496:269::-;;;;;;;;;;-1:-1:-1;6496:269:0;;;;;:::i;:::-;;:::i;5398:175::-;;;;;;;;;;-1:-1:-1;5398:175:0;;;;;:::i;:::-;;:::i;18733:33::-;;;;;;;;;;;;;;;;22031:213;;;;;;;;;;-1:-1:-1;22031:213:0;;;;;:::i;:::-;;:::i;18943:44::-;;;;;;;;;;-1:-1:-1;18943:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18175:33;;;;;;;;;;-1:-1:-1;18175:33:0;;;;;;;;;;;22986:125;;;;;;;;;;;;;:::i;22481:182::-;;;;;;;;;;-1:-1:-1;22481:182:0;;;;;:::i;:::-;;:::i;18017:35::-;;;;;;;;;;;;;;;;27403:620;;;:::i;21275:389::-;;;;;;;;;;-1:-1:-1;21275:389:0;;;;;:::i;:::-;;:::i;21676:146::-;;;;;;;;;;-1:-1:-1;21676:146:0;;;;;:::i;:::-;;:::i;21919:103::-;;;;;;;;;;-1:-1:-1;21919:103:0;;;;;:::i;:::-;;:::i;18519:27::-;;;;;;;;;;;;;;;;5579:151;;;;;;;;;;-1:-1:-1;5579:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5695:18:0;;;5668:7;5695:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5579:151;18696:24;;;;;;;;;;;;;;;;10819:244;;;;;;;;;;-1:-1:-1;10819:244:0;;;;;:::i;:::-;;:::i;18102:24::-;;;;;;;;;;;;;;;;4837:100;4891:13;4924:5;4917:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4837:100;:::o;5736:169::-;5819:4;5836:39;174:10;5859:7;5868:6;5836:8;:39::i;:::-;-1:-1:-1;5893:4:0;5736:169;;;;;:::o;5911:355::-;6051:4;6068:36;6078:6;6086:9;6097:6;6068:9;:36::i;:::-;6115:121;6124:6;174:10;6146:89;6184:6;6146:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6146:19:0;;;;;;:11;:19;;;;;;;;174:10;6146:33;;;;;;;;;;:37;:89::i;:::-;6115:8;:121::i;:::-;-1:-1:-1;6254:4:0;5911:355;;;;;:::o;6272:218::-;174:10;6360:4;6409:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6409:34:0;;;;;;;;;;6360:4;;6377:83;;6400:7;;6409:50;;6448:10;6409:38;:50::i;5265:127::-;-1:-1:-1;;;;;5366:18:0;5339:7;5366:18;;;;;;;;;;;;5265:127::o;10665:148::-;10580:6;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;;;;;;;;;10756:6:::1;::::0;10735:40:::1;::::0;10772:1:::1;::::0;-1:-1:-1;;;;;10756:6:0::1;::::0;10735:40:::1;::::0;10772:1;;10735:40:::1;10786:6;:19:::0;;-1:-1:-1;;;;;;10786:19:0::1;::::0;;10665:148::o;22253:219::-;10580:6;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;22348:16:::1;:32:::0;;;22391:9:::1;:18:::0;;;22436:28:::1;22403:6:::0;22367:13;22436:28:::1;:::i;:::-;22420:13;:44:::0;-1:-1:-1;;22253:219:0:o;4943:104::-;4999:13;5032:7;5025:14;;;;;:::i;6496:269::-;6589:4;6606:129;174:10;6629:7;6638:96;6677:15;6638:96;;;;;;;;;;;;;;;;;174:10;6638:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6638:34:0;;;;;;;;;;;;:38;:96::i;5398:175::-;5484:4;5501:42;174:10;5525:9;5536:6;5501:9;:42::i;22031:213::-;10580:6;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;22125:15:::1;:31:::0;;;22167:8:::1;:17:::0;;;22210:26:::1;22178:6:::0;22143:13;22210:26:::1;:::i;:::-;22195:12;:41:::0;-1:-1:-1;;22031:213:0:o;22986:125::-;10580:6;;23044:4;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;-1:-1:-1;23060:13:0::1;:21:::0;;-1:-1:-1;;23060:21:0::1;::::0;;;22986:125;:::o;22481:182::-;10580:6;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22566:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22566:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22621:34;;1267:41:1;;;22621:34:0::1;::::0;1240:18:1;22621:34:0::1;;;;;;;22481:182:::0;;:::o;27403:620::-;10580:6;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;27531:75:::1;27548:4;27563:15;27581:24;27599:4;27581:9;:24::i;27531:75::-;27650:15;-1:-1:-1::0;;;;;27650:31:0::1;;27689:21;27734:4;27754:24;27772:4;27754:9;:24::i;:::-;27650:280;::::0;-1:-1:-1;;;;;;27650:280:0::1;::::0;;;;;;-1:-1:-1;;;;;5690:32:1;;;27650:280:0::1;::::0;::::1;5672:51:1::0;5739:18;;;5732:34;27793:1:0::1;5782:18:1::0;;;5775:34;;;5825:18;;;5818:34;27879:10:0::1;5868:19:1::0;;;5861:61;27904:15:0::1;5938:19:1::0;;;5931:35;5644:19;;27650:280:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;27941:13:0::1;:20:::0;;-1:-1:-1;;28001:14:0;;;;;-1:-1:-1;27403:620:0:o;21275:389::-;10580:6;;21356:4;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;21413:6:::1;21393:13;5239:12:::0;;;5151:108;21393:13:::1;:17;::::0;21409:1:::1;21393:17;:::i;:::-;:26;;;;:::i;:::-;21380:9;:39;;21372:105;;;::::0;-1:-1:-1;;;21372:105:0;;7035:2:1;21372:105:0::1;::::0;::::1;7017:21:1::0;7074:2;7054:18;;;7047:30;7113:34;7093:18;;;7086:62;-1:-1:-1;;;7164:18:1;;;7157:51;7225:19;;21372:105:0::1;6833:417:1::0;21372:105:0::1;21529:4;21509:13;5239:12:::0;;;5151:108;21509:13:::1;:17;::::0;21525:1:::1;21509:17;:::i;:::-;:24;;;;:::i;:::-;21496:9;:37;;21488:102;;;::::0;-1:-1:-1;;;21488:102:0;;7457:2:1;21488:102:0::1;::::0;::::1;7439:21:1::0;7496:2;7476:18;;;7469:30;7535:34;7515:18;;;7508:62;-1:-1:-1;;;7586:18:1;;;7579:50;7646:19;;21488:102:0::1;7255:416:1::0;21488:102:0::1;-1:-1:-1::0;21601:21:0::1;:33:::0;;;21652:4:::1;10650:1;21275:389:::0;;;:::o;21676:146::-;10580:6;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21768:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;21768:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21676:146::o;21919:103::-;10580:6;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;21993:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;21993:21:0;;::::1;::::0;;;::::1;::::0;;21919:103::o;10819:244::-;10580:6;;-1:-1:-1;;;;;10580:6:0;174:10;10580:22;10572:67;;;;-1:-1:-1;;;10572:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10908:22:0;::::1;10900:73;;;::::0;-1:-1:-1;;;10900:73:0;;7878:2:1;10900:73:0::1;::::0;::::1;7860:21:1::0;7917:2;7897:18;;;7890:30;7956:34;7936:18;;;7929:62;-1:-1:-1;;;8007:18:1;;;8000:36;8053:19;;10900:73:0::1;7676:402:1::0;10900:73:0::1;11010:6;::::0;10989:38:::1;::::0;-1:-1:-1;;;;;10989:38:0;;::::1;::::0;11010:6:::1;::::0;10989:38:::1;::::0;11010:6:::1;::::0;10989:38:::1;11038:6;:17:::0;;-1:-1:-1;;;;;;11038:17:0::1;-1:-1:-1::0;;;;;11038:17:0;;;::::1;::::0;;;::::1;::::0;;10819:244::o;8164:381::-;-1:-1:-1;;;;;8300:19:0;;8292:68;;;;-1:-1:-1;;;8292:68:0;;8285:2:1;8292:68:0;;;8267:21:1;8324:2;8304:18;;;8297:30;8363:34;8343:18;;;8336:62;-1:-1:-1;;;8414:18:1;;;8407:34;8458:19;;8292:68:0;8083:400:1;8292:68:0;-1:-1:-1;;;;;8379:21:0;;8371:68;;;;-1:-1:-1;;;8371:68:0;;8690:2:1;8371:68:0;;;8672:21:1;8729:2;8709:18;;;8702:30;8768:34;8748:18;;;8741:62;-1:-1:-1;;;8819:18:1;;;8812:32;8861:19;;8371:68:0;8488:398:1;8371:68:0;-1:-1:-1;;;;;8453:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8505:32;;160:25:1;;;8505:32:0;;133:18:1;8505:32:0;;;;;;;;8164:381;;;:::o;23120:3668::-;-1:-1:-1;;;;;23252:18:0;;23244:68;;;;-1:-1:-1;;;23244:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23331:16:0;;23323:64;;;;-1:-1:-1;;;23323:64:0;;;;;;;:::i;:::-;23402:6;23412:1;23402:11;23399:92;;23430:28;23446:4;23452:2;23456:1;23430:15;:28::i;:::-;23120:3668;;;:::o;23399:92::-;23507:13;;;;23504:1642;;;10520:6;;-1:-1:-1;;;;;23558:15:0;;;10520:6;;23558:15;;;;:49;;-1:-1:-1;10520:6:0;;-1:-1:-1;;;;;23594:13:0;;;10520:6;;23594:13;;23558:49;:86;;;;-1:-1:-1;;;;;;23628:16:0;;;;23558:86;:128;;;;-1:-1:-1;;;;;;23665:21:0;;23679:6;23665:21;;23558:128;:158;;;;-1:-1:-1;23708:8:0;;-1:-1:-1;;;23708:8:0;;;;23707:9;23558:158;23536:1599;;;23754:13;;;;;;;23750:148;;-1:-1:-1;;;;;23799:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;23828:23:0;;;;;;:19;:23;;;;;;;;23799:52;23791:87;;;;-1:-1:-1;;;23791:87:0;;9903:2:1;23791:87:0;;;9885:21:1;9942:2;9922:18;;;9915:30;-1:-1:-1;;;9961:18:1;;;9954:52;10023:18;;23791:87:0;9701:346:1;23791:87:0;23923:14;;;;23919:417;;;10520:6;;-1:-1:-1;;;;;23965:13:0;;;10520:6;;23965:13;;;;:47;;;23996:15;-1:-1:-1;;;;;23982:30:0;:2;-1:-1:-1;;;;;23982:30:0;;;23965:47;:79;;;;;24030:13;-1:-1:-1;;;;;24016:28:0;:2;-1:-1:-1;;;;;24016:28:0;;;23965:79;23961:356;;;24109:9;24080:39;;;;:28;:39;;;;;;24122:12;-1:-1:-1;24072:140:0;;;;-1:-1:-1;;;24072:140:0;;10254:2:1;24072:140:0;;;10236:21:1;10293:2;10273:18;;;10266:30;10332:34;10312:18;;;10305:62;10403:34;10383:18;;;10376:62;-1:-1:-1;;;10454:19:1;;;10447:40;10504:19;;24072:140:0;10052:477:1;24072:140:0;24268:9;24239:39;;;;:28;:39;;;;;24281:12;24239:54;;23961:356;-1:-1:-1;;;;;24389:17:0;;;;;;:11;:17;;;;;;;;:57;;;;-1:-1:-1;;;;;;24411:35:0;;;;;;:31;:35;;;;;;;;24410:36;24389:57;24385:735;;;24493:20;;24483:6;:30;;24475:96;;;;-1:-1:-1;;;24475:96:0;;10736:2:1;24475:96:0;;;10718:21:1;10775:2;10755:18;;;10748:30;10814:34;10794:18;;;10787:62;-1:-1:-1;;;10865:18:1;;;10858:51;10926:19;;24475:96:0;10534:417:1;24475:96:0;24632:9;;24615:13;24625:2;24615:9;:13::i;:::-;24606:22;;:6;:22;:::i;:::-;:35;;24598:67;;;;-1:-1:-1;;;24598:67:0;;11158:2:1;24598:67:0;;;11140:21:1;11197:2;11177:18;;;11170:30;-1:-1:-1;;;11216:18:1;;;11209:49;11275:18;;24598:67:0;10956:343:1;24598:67:0;24385:735;;;-1:-1:-1;;;;;24744:15:0;;;;;;:11;:15;;;;;;;;:57;;;;-1:-1:-1;;;;;;24764:37:0;;;;;;:31;:37;;;;;;;;24763:38;24744:57;24740:380;;;24848:20;;24838:6;:30;;24830:97;;;;-1:-1:-1;;;24830:97:0;;11506:2:1;24830:97:0;;;11488:21:1;11545:2;11525:18;;;11518:30;11584:34;11564:18;;;11557:62;-1:-1:-1;;;11635:18:1;;;11628:52;11697:19;;24830:97:0;11304:418:1;24740:380:0;-1:-1:-1;;;;;24974:35:0;;;;;;:31;:35;;;;;;;;24970:150;;25067:9;;25050:13;25060:2;25050:9;:13::i;:::-;25041:22;;:6;:22;:::i;:::-;:35;;25033:67;;;;-1:-1:-1;;;25033:67:0;;11158:2:1;25033:67:0;;;11140:21:1;11197:2;11177:18;;;11170:30;-1:-1:-1;;;11216:18:1;;;11209:49;11275:18;;25033:67:0;10956:343:1;25033:67:0;25164:28;25195:24;25213:4;25195:9;:24::i;:::-;25269:21;;25164:55;;-1:-1:-1;25245:45:0;;;;;;;25322:35;;-1:-1:-1;25346:11:0;;;;;;;25322:35;:61;;;;-1:-1:-1;25375:8:0;;-1:-1:-1;;;25375:8:0;;;;25374:9;25322:61;:96;;;;-1:-1:-1;;;;;;25401:17:0;;;;;;:11;:17;;;;;;;;25400:18;25322:96;:139;;;;-1:-1:-1;;;;;;25436:25:0;;;;;;:19;:25;;;;;;;;25435:26;25322:139;:180;;;;-1:-1:-1;;;;;;25479:23:0;;;;;;:19;:23;;;;;;;;25478:24;25322:180;25304:314;;;25529:8;:15;;-1:-1:-1;;;;25529:15:0;-1:-1:-1;;;25529:15:0;;;25562:10;:8;:10::i;:::-;25590:8;:16;;-1:-1:-1;;;;25590:16:0;;;25304:314;25647:8;;-1:-1:-1;;;;;25757:25:0;;25631:12;25757:25;;;:19;:25;;;;;;25647:8;-1:-1:-1;;;25647:8:0;;;;;25646:9;;25757:25;;:52;;-1:-1:-1;;;;;;25786:23:0;;;;;;:19;:23;;;;;;;;25757:52;25754:99;;;-1:-1:-1;25836:5:0;25754:99;25866:12;25970:7;25967:767;;;-1:-1:-1;;;;;26021:15:0;;;;;;:11;:15;;;;;;;;:36;;;;;26056:1;26040:13;;:17;26021:36;26017:564;;;26084:34;26114:3;26084:25;26095:13;;26084:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;26077:41;;26171:13;;26159:9;;26152:4;:16;;;;:::i;:::-;:32;;;;:::i;:::-;26137:11;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;26251:13:0;;26232:16;;26225:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;26203:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;26017:564:0;;-1:-1:-1;26017:564:0;;-1:-1:-1;;;;;26325:17:0;;;;;;:11;:17;;;;;;;;:37;;;;;26361:1;26346:12;;:16;26325:37;26322:259;;;26390:33;26419:3;26390:24;26401:12;;26390:6;:10;;:24;;;;:::i;:33::-;26383:40;;26475:12;;26464:8;;26457:4;:15;;;;:::i;:::-;:30;;;;:::i;:::-;26442:11;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;26553:12:0;;26535:15;;26528:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;26506:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;26322:259:0;26601:8;;26598:93;;26633:42;26649:4;26663;26670;26633:15;:42::i;:::-;26708:14;26718:4;26708:14;;:::i;:::-;;;25967:767;26747:33;26763:4;26769:2;26773:6;26747:15;:33::i;:::-;23233:3555;;;;23120:3668;;;:::o;9038:193::-;9124:7;9160:12;9152:6;;;;9144:29;;;;-1:-1:-1;;;9144:29:0;;;;;;;;:::i;:::-;-1:-1:-1;9184:9:0;9196:5;9200:1;9196;:5;:::i;:::-;9184:17;9038:193;-1:-1:-1;;;;;9038:193:0:o;8708:182::-;8766:7;;8798:5;8802:1;8798;:5;:::i;:::-;8786:17;;8827:1;8822;:6;;8814:46;;;;-1:-1:-1;;;8814:46:0;;12062:2:1;8814:46:0;;;12044:21:1;12101:2;12081:18;;;12074:30;12140:29;12120:18;;;12113:57;12187:18;;8814:46:0;11860:351:1;8814:46:0;8881:1;8708:182;-1:-1:-1;;;8708:182:0:o;6771:575::-;-1:-1:-1;;;;;6911:20:0;;6903:70;;;;-1:-1:-1;;;6903:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6992:23:0;;6984:71;;;;-1:-1:-1;;;6984:71:0;;;;;;;:::i;:::-;7150;7172:6;7150:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7150:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7130:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7255:20;;;;;;;:32;;7280:6;7255:24;:32::i;:::-;-1:-1:-1;;;;;7232:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7303:35;160:25:1;;;7232:20:0;;7303:35;;;;;;133:18:1;7303:35:0;14:177:1;28032:798:0;28071:23;28097:24;28115:4;28097:9;:24::i;:::-;28071:50;;28132:25;28181:11;;28160:18;;:32;;;;:::i;:::-;28132:60;-1:-1:-1;28203:12:0;28232:20;;;:46;;-1:-1:-1;28256:22:0;;28232:46;28229:60;;;28281:7;;;28032:798::o;28229:60::-;28323:21;;:26;;28347:2;28323:26;:::i;:::-;28305:15;:44;28302:117;;;28381:21;;:26;;28405:2;28381:26;:::i;:::-;28363:44;;28302:117;28432:33;28449:15;28432:16;:33::i;:::-;28480:18;28501:21;28480:42;;28534:16;28553:50;28585:17;28553:27;28568:11;;28553:10;:14;;:27;;;;:::i;:50::-;28638:1;28617:18;:22;;;28650:11;:15;;;28700:8;;28692:43;;28534:69;;-1:-1:-1;;;;;;28700:8:0;;28534:69;;28692:43;28638:1;28692:43;28534:69;28700:8;28692:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28767:15:0;;28759:63;;28679:56;;-1:-1:-1;;;;;;28767:15:0;;28796:21;;28759:63;;;;28796:21;28767:15;28759:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;28032:798:0:o;9237:252::-;9295:7;9319:1;9324;9319:6;9315:47;;-1:-1:-1;9349:1:0;9342:8;;9315:47;9375:9;9387:5;9391:1;9387;:5;:::i;:::-;9375:17;-1:-1:-1;9420:1:0;9411:5;9415:1;9375:17;9411:5;:::i;:::-;:10;9403:56;;;;-1:-1:-1;;;9403:56:0;;12628:2:1;9403:56:0;;;12610:21:1;12667:2;12647:18;;;12640:30;12706:34;12686:18;;;12679:62;-1:-1:-1;;;12757:18:1;;;12750:31;12798:19;;9403:56:0;12426:397:1;9495:132:0;9553:7;9580:39;9584:1;9587;9580:39;;;;;;;;;;;;;;;;;:3;:39::i;26797:597::-;26950:16;;;26964:1;26950:16;;;;;;;;26926:21;;26950:16;;;;;;;;;;-1:-1:-1;26950:16:0;26926:40;;26995:4;26977;26982:1;26977:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26977:23:0;;;-1:-1:-1;;;;;26977:23:0;;;;;27021:15;-1:-1:-1;;;;;27021:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27011:4;27016:1;27011:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27011:32:0;;;-1:-1:-1;;;;;27011:32:0;;;;;27057:62;27074:4;27089:15;27107:11;27057:8;:62::i;:::-;27159:224;;-1:-1:-1;;;27159:224:0;;-1:-1:-1;;;;;27159:15:0;:66;;;;:224;;27240:11;;27266:1;;27310:4;;27337;;27357:15;;27159:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26852:542;26797:597;:::o;9633:189::-;9719:7;9754:12;9747:5;9739:28;;;;-1:-1:-1;;;9739:28:0;;;;;;;;:::i;:::-;-1:-1:-1;9778:9:0;9790:5;9794:1;9790;:5;:::i;196:418:1:-;345:2;334:9;327:21;308:4;377:6;371:13;420:6;415:2;404:9;400:18;393:34;479:6;474:2;466:6;462:15;457:2;446:9;442:18;436:50;535:1;530:2;521:6;510:9;506:22;502:31;495:42;605:2;598;594:7;589:2;581:6;577:15;573:29;562:9;558:45;554:54;546:62;;;196:418;;;;:::o;619:131::-;-1:-1:-1;;;;;694:31:1;;684:42;;674:70;;740:1;737;730:12;674:70;619:131;:::o;755:367::-;823:6;831;884:2;872:9;863:7;859:23;855:32;852:52;;;900:1;897;890:12;852:52;939:9;926:23;958:31;983:5;958:31;:::i;:::-;1008:5;1086:2;1071:18;;;;1058:32;;-1:-1:-1;;;755:367:1:o;1319:247::-;1378:6;1431:2;1419:9;1410:7;1406:23;1402:32;1399:52;;;1447:1;1444;1437:12;1399:52;1486:9;1473:23;1505:31;1530:5;1505:31;:::i;1806:508::-;1883:6;1891;1899;1952:2;1940:9;1931:7;1927:23;1923:32;1920:52;;;1968:1;1965;1958:12;1920:52;2007:9;1994:23;2026:31;2051:5;2026:31;:::i;:::-;2076:5;-1:-1:-1;2133:2:1;2118:18;;2105:32;2146:33;2105:32;2146:33;:::i;:::-;1806:508;;2198:7;;-1:-1:-1;;;2278:2:1;2263:18;;;;2250:32;;1806:508::o;2716:346::-;2784:6;2792;2845:2;2833:9;2824:7;2820:23;2816:32;2813:52;;;2861:1;2858;2851:12;2813:52;-1:-1:-1;;2906:23:1;;;3026:2;3011:18;;;2998:32;;-1:-1:-1;2716:346:1:o;3067:160::-;3132:20;;3188:13;;3181:21;3171:32;;3161:60;;3217:1;3214;3207:12;3232:315;3297:6;3305;3358:2;3346:9;3337:7;3333:23;3329:32;3326:52;;;3374:1;3371;3364:12;3326:52;3413:9;3400:23;3432:31;3457:5;3432:31;:::i;:::-;3482:5;-1:-1:-1;3506:35:1;3537:2;3522:18;;3506:35;:::i;:::-;3496:45;;3232:315;;;;;:::o;3552:226::-;3611:6;3664:2;3652:9;3643:7;3639:23;3635:32;3632:52;;;3680:1;3677;3670:12;3632:52;-1:-1:-1;3725:23:1;;3552:226;-1:-1:-1;3552:226:1:o;3783:180::-;3839:6;3892:2;3880:9;3871:7;3867:23;3863:32;3860:52;;;3908:1;3905;3898:12;3860:52;3931:26;3947:9;3931:26;:::i;3968:388::-;4036:6;4044;4097:2;4085:9;4076:7;4072:23;4068:32;4065:52;;;4113:1;4110;4103:12;4065:52;4152:9;4139:23;4171:31;4196:5;4171:31;:::i;:::-;4221:5;-1:-1:-1;4278:2:1;4263:18;;4250:32;4291:33;4250:32;4291:33;:::i;:::-;4343:7;4333:17;;;3968:388;;;;;:::o;4361:380::-;4440:1;4436:12;;;;4483;;;4504:61;;4558:4;4550:6;4546:17;4536:27;;4504:61;4611:2;4603:6;4600:14;4580:18;4577:38;4574:161;;4657:10;4652:3;4648:20;4645:1;4638:31;4692:4;4689:1;4682:15;4720:4;4717:1;4710:15;4574:161;;4361:380;;;:::o;4746:356::-;4948:2;4930:21;;;4967:18;;;4960:30;5026:34;5021:2;5006:18;;4999:62;5093:2;5078:18;;4746:356::o;5107:127::-;5168:10;5163:3;5159:20;5156:1;5149:31;5199:4;5196:1;5189:15;5223:4;5220:1;5213:15;5239:125;5304:9;;;5325:10;;;5322:36;;;5338:18;;:::i;5977:456::-;6065:6;6073;6081;6134:2;6122:9;6113:7;6109:23;6105:32;6102:52;;;6150:1;6147;6140:12;6102:52;-1:-1:-1;;6195:16:1;;6301:2;6286:18;;6280:25;6397:2;6382:18;;;6376:25;6195:16;;6280:25;;-1:-1:-1;6376:25:1;5977:456;-1:-1:-1;5977:456:1:o;6438:168::-;6511:9;;;6542;;6559:15;;;6553:22;;6539:37;6529:71;;6580:18;;:::i;6611:217::-;6651:1;6677;6667:132;;6721:10;6716:3;6712:20;6709:1;6702:31;6756:4;6753:1;6746:15;6784:4;6781:1;6774:15;6667:132;-1:-1:-1;6813:9:1;;6611:217::o;8891:401::-;9093:2;9075:21;;;9132:2;9112:18;;;9105:30;9171:34;9166:2;9151:18;;9144:62;-1:-1:-1;;;9237:2:1;9222:18;;9215:35;9282:3;9267:19;;8891:401::o;9297:399::-;9499:2;9481:21;;;9538:2;9518:18;;;9511:30;9577:34;9572:2;9557:18;;9550:62;-1:-1:-1;;;9643:2:1;9628:18;;9621:33;9686:3;9671:19;;9297:399::o;11727:128::-;11794:9;;;11815:11;;;11812:37;;;11829:18;;:::i;12960:127::-;13021:10;13016:3;13012:20;13009:1;13002:31;13052:4;13049:1;13042:15;13076:4;13073:1;13066:15;13092:251;13162:6;13215:2;13203:9;13194:7;13190:23;13186:32;13183:52;;;13231:1;13228;13221:12;13183:52;13263:9;13257:16;13282:31;13307:5;13282:31;:::i;13348:959::-;13610:4;13658:3;13647:9;13643:19;13689:6;13678:9;13671:25;13732:6;13727:2;13716:9;13712:18;13705:34;13775:3;13770:2;13759:9;13755:18;13748:31;13799:6;13834;13828:13;13865:6;13857;13850:22;13903:3;13892:9;13888:19;13881:26;;13942:2;13934:6;13930:15;13916:29;;13963:1;13973:195;13987:6;13984:1;13981:13;13973:195;;;14052:13;;-1:-1:-1;;;;;14048:39:1;14036:52;;14117:2;14143:15;;;;14108:12;;;;14084:1;14002:9;13973:195;;;-1:-1:-1;;;;;;;14224:32:1;;;;14219:2;14204:18;;14197:60;-1:-1:-1;;14288:3:1;14273:19;14266:35;14185:3;13348:959;-1:-1:-1;;;13348:959:1:o
Swarm Source
ipfs://0f2c1e78ce05125d4464740e210b5724777d8158b70c85e3a0fa9f35917b738a
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.