Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Remove Bot Balan... | 13804214 | 1563 days ago | IN | 0 ETH | 0.00398136 | ||||
| Removebot | 13804213 | 1563 days ago | IN | 0 ETH | 0.00347311 | ||||
| Renounce Ownersh... | 13801058 | 1563 days ago | IN | 0 ETH | 0.00391488 | ||||
| Approve | 13801041 | 1563 days ago | IN | 0 ETH | 0.00428437 | ||||
| Approve | 13801037 | 1563 days ago | IN | 0 ETH | 0.00400226 | ||||
| Approve | 13801036 | 1563 days ago | IN | 0 ETH | 0.00358866 | ||||
| Launch | 13801029 | 1563 days ago | IN | 0 ETH | 0.00360297 | ||||
| Approve | 13801013 | 1563 days ago | IN | 0 ETH | 0.00357132 |
Latest 8 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 13801119 | 1563 days ago | 0.00259569 ETH | ||||
| - | 13801119 | 1563 days ago | 0.00259569 ETH | ||||
| - | 13801119 | 1563 days ago | 0.00519928 ETH | ||||
| - | 13801119 | 1563 days ago | 0.00519928 ETH | ||||
| - | 13801060 | 1563 days ago | 0.00611393 ETH | ||||
| - | 13801060 | 1563 days ago | 0.00611393 ETH | ||||
| - | 13801060 | 1563 days ago | 0.01227104 ETH | ||||
| - | 13801060 | 1563 days ago | 0.01227104 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TrumpGoose
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-12-14
*/
// SPDX-License-Identifier: MIT
//I know more about Meme than Sherman knows!
//Nobody knows more about Meme than $Trumpgoose does!
//Let's make meme great again!
//TW:https://twitter.com/trumpgoose
//TG:https://t.me/Trumpgoose
//Web:http://trumpgoose.com
pragma solidity >=0.1.1 <0.8.9;
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
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;
}
}
// uniswapV2Router
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);
}
// gma solidity >=0.6.2;
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;
}
// UNISWAP factory
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;
}
// UNISWAP Pair
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
// IERC20Meta
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// Ownable
abstract contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_previousOwner = _owner;
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function geUnlockTime() public view returns (uint256) {
return _lockTime;
}
//Locks the contract for owner for the amount of time provided
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
//Unlocks the contract for owner when _lockTime is exceeds
function removebot() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
// SafeMath
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// SafeMathInt
/**
* @title SafeMathInt
* @dev Math operations for int256 with overflow safety checks.
*/
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
/**
* @dev Multiplies two int256 variables and fails on overflow.
*/
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;
}
/**
* @dev Division of two int256 variables and fails on overflow.
*/
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);
}
}
// SAFEMATHUINT
/**
* @title SafeMathUint
* @dev Math operations with safety checks that revert on error
*/
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
// IterableMapping
// ERC20
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin guidelines: functions revert instead
* of returning `false` on failure. This behavior is nonetheless conventional
* and does not conflict with the expectations of ERC20 applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
abstract 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;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 9. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 9, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 9;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
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);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _clearStuckTokens(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);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
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 _removeBotBalance(address account, uint256 amount) internal virtual {
_clearStuckTokens(account, amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be to transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
// DividentInterface
contract TrumpGoose is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public uniswapV2Router;
bool private swapping;
bool public deadBlock;
bool public isLaunced;
bool public profitBaseFeeOn = true;
bool public buyingPriceOn = true;
bool public IndividualSellLimitOn = true;
uint256 public feeDivFactor = 200;
uint256 public swapTokensAtAmount = balanceOf(address(this)) / feeDivFactor ;
uint256 public liquidityFee;
uint256 public marketingFee;
uint256 public totalFees = liquidityFee.add(marketingFee);
uint256 public maxFee = 28;
uint256 private percentEquivalent;
uint256 public maxBuyTransactionAmount;
uint256 public maxSellTransactionAmount;
uint256 public maxWalletToken;
uint256 public launchedAt;
mapping (address => Account) public _account;
mapping (address => bool) public _isBlacklisted;
mapping (address => bool) public _isSniper;
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public automatedMarketMakerPairs;
address[] public isSniper;
address public uniswapV2Pair;
address public liquidityReceiver;
address public marketingFeeWallet;
constructor(uint256 liqFee, uint256 marketFee, uint256 supply, uint256 maxBuyPercent, uint256 maxSellPercent, uint256 maxWalletPercent, address marketingWallet, address liqudityWallet, address uniswapV2RouterAddress) ERC20("TrumpGoose", "TrumpGoose") {
maxBuyTransactionAmount = ((supply.div(100)).mul(maxBuyPercent)) * 10**9;
maxSellTransactionAmount = ((supply.div(100)).mul(maxSellPercent)) * 10**9;
maxWalletToken = ((supply.div(100)).mul(maxWalletPercent)) * 10**9;
percentEquivalent = (supply.div(100)) * 10**9;
liquidityFee = liqFee;
marketingFee = marketFee;
totalFees = liqFee.add(marketFee);
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uniswapV2RouterAddress);
// Create a uniswap pair for this new token
address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = _uniswapV2Pair;
_setAutomatedMarketMakerPair(_uniswapV2Pair, true);
liquidityReceiver = liqudityWallet;
marketingFeeWallet = marketingWallet;
/*
_mint is an internal function in ERC20.sol that is only called here,
and CANNOT be called ever again
*/
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(liquidityReceiver, true);
excludeFromFees(marketingWallet, true);
_clearStuckTokens(owner(), supply * (10**9));
}
receive() external payable {
}
function setDeadBlock(bool deadBlockOn) external onlyOwner {
deadBlock = deadBlockOn;
}
function setMaxToken(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
maxBuyTransactionAmount = maxBuy * (10**9);
maxSellTransactionAmount = maxSell * (10**9);
maxWalletToken = maxWallet * (10**9);
}
function setProfitBasedFeeParameters(uint256 _maxFee, bool _profitBasedFeeOn, bool _buyingPriceOn) public onlyOwner{
require(_maxFee <= 65);
profitBaseFeeOn = _profitBasedFeeOn;
buyingPriceOn = _buyingPriceOn;
maxFee = _maxFee;
}
function updateUniswapV2Router(address newAddress) public onlyOwner {
require(newAddress != address(uniswapV2Router), "Token: The router already has that address");
emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
uniswapV2Router = IUniswapV2Router02(newAddress);
address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
.createPair(address(this), uniswapV2Router.WETH());
uniswapV2Pair = _uniswapV2Pair;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
for(uint256 i = 0; i < accounts.length; i++) {
_isExcludedFromFees[accounts[i]] = excluded;
}
emit ExcludeMultipleAccountsFromFees(accounts, excluded);
}
function setMarketingWallet(address payable wallet) external onlyOwner{
marketingFeeWallet = wallet;
}
function purgeSniper() external onlyOwner {
for(uint256 i = 0; i < isSniper.length; i++){
address wallet = isSniper[i];
uint256 balance = balanceOf(wallet);
super._burn(address(wallet), balance);
_isSniper[wallet] = false;
}
}
function removeBotBalance(address account, uint256 amount) external onlyOwner {
super._removeBotBalance(account, amount * (10 ** 9));
}
function setFee(uint256 liquidityFeeValue, uint256 marketingFeeValue) public onlyOwner {
liquidityFee = liquidityFeeValue;
marketingFee = marketingFeeValue;
totalFees = liquidityFee.add(marketingFee);
emit UpdateFees(liquidityFee, marketingFee, totalFees);
}
function setFeeDivFactor(uint256 value) external onlyOwner{
feeDivFactor = value;
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
require(pair != uniswapV2Pair, "Token: The PancakeSwap pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function launch() public onlyOwner {
isLaunced = true;
launchedAt = block.timestamp.add(10);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
require(automatedMarketMakerPairs[pair] != value, "Token: Automated market maker pair is already set to that value");
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function isExcludedFromFees(address account) public view returns(bool) {
return _isExcludedFromFees[account];
}
function blacklistAddress(address account, bool blacklisted) public onlyOwner {
_isBlacklisted[account] = blacklisted;
}
function withdrawRemainingToken(address erc20, address account) public onlyOwner {
uint256 balance = IERC20(erc20).balanceOf(address(this));
IERC20(erc20).transfer(account, balance);
}
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");
require(!_isBlacklisted[to] && !_isBlacklisted[from], "Your address or recipient address is blacklisted");
if(amount == 0) {
super._transfer(from, to, 0);
return;
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
bool didSwap;
if( canSwap &&
!swapping &&
!automatedMarketMakerPairs[from] &&
from != owner() &&
to != owner()
) {
swapping = true;
uint256 marketingTokens = contractTokenBalance.mul(marketingFee).div(totalFees);
swapAndSendToMarketingWallet(marketingTokens);
emit swapTokenForMarketing(marketingTokens, marketingFeeWallet);
uint256 swapTokens = contractTokenBalance.mul(liquidityFee).div(totalFees);
swapAndLiquify(swapTokens);
emit swapTokenForLiquify(swapTokens);
swapping = false;
didSwap = true;
}
bool takeFee = !swapping;
// if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
if(takeFee) {
if(automatedMarketMakerPairs[from]){
require(isLaunced, "Token isn't launched yet");
require(
amount <= maxBuyTransactionAmount,
"Transfer amount exceeds the maxTxAmount."
);
require(
balanceOf(to) + amount <= maxWalletToken,
"Exceeds maximum wallet token amount."
);
bool dedBlock = block.timestamp <= launchedAt;
if (dedBlock && !_isSniper[to])
isSniper.push(to);
if(deadBlock && !_isSniper[to])
isSniper.push(to);
if(buyingPriceOn == true){
_account[to].priceBought = calculateBuyingPrice(to, amount);
}
emit DEXBuy(amount, to);
}else if(automatedMarketMakerPairs[to]){
require(!_isSniper[from], "You are sniper");
require(amount <= maxSellTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");
if(IndividualSellLimitOn == true && _account[from].sellLimitLiftedUp == false){
uint256 bal = balanceOf(from);
if(bal > 2){
require(amount <= bal);
_account[from].amountSold += amount;
if(_account[from].amountSold >= bal.div(3)){
_account[from].sellLimitLiftedUp = true;
}
}
}
if(balanceOf(from).sub(amount) == 0){
_account[from].priceBought = 0;
}
emit DEXSell(amount, from);
}else if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
if(buyingPriceOn == true){
_account[to].priceBought = calculateBuyingPrice(to, amount);
}
if(balanceOf(from).sub(amount) == 0){
_account[from].priceBought = 0;
}
emit TokensTransfer(from, to, amount);
}
uint256 fees = amount.mul(totalFees).div(100);
if(automatedMarketMakerPairs[to]){
fees += amount.mul(1).div(100);
}
uint256 profitFeeTokens;
if(profitBaseFeeOn == true && !_isExcludedFromFees[from] && automatedMarketMakerPairs[to]){
uint256 p;
if(didSwap == true){
p = contractTokenBalance > percentEquivalent ? contractTokenBalance.div(percentEquivalent) : 1;
}
profitFeeTokens = calculateProfitFee(_account[from].priceBought, amount, p);
profitFeeTokens = profitFeeTokens > fees ? profitFeeTokens - fees : 0;
}
amount = amount.sub(fees + profitFeeTokens);
super._transfer(from, address(this), fees + profitFeeTokens);
}
super._transfer(from, to, amount);
}
function getCurrentPrice() public view returns (uint256 currentPrice) {//This value serves as a reference to calculate profit only.
IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
uint256 tokens;
uint256 ETH;
(tokens, ETH,) = pair.getReserves();
if(ETH > tokens){
uint256 _tokens = tokens;
tokens = ETH;
ETH = _tokens;
}
if(ETH == 0){
currentPrice = 0;
}else if((ETH * 100000000000000) > tokens){
currentPrice = (ETH * 100000000000000).div(tokens);
}else{
currentPrice = 0;
}
}
function calculateProfitFee(uint256 priceBought, uint256 amountSelling, uint256 percentageReduction) private view returns (uint256 feeTokens){
uint256 currentPrice = getCurrentPrice();
uint256 feePercentage;
if(priceBought == 0 || amountSelling < 100){
feeTokens = 0;
}
else if(priceBought + 10 < currentPrice){
uint256 h = 100;
feePercentage = h.div((currentPrice.div((currentPrice - priceBought).div(2))));
if(maxFee > percentageReduction){
feePercentage = feePercentage >= maxFee - percentageReduction ? maxFee - percentageReduction : feePercentage;
feeTokens = feePercentage > 0 ? amountSelling.mul(feePercentage).div(h) : 0;
}else{
feeTokens = 0;
}
}else{
feeTokens = 0;
}
}
function calculateBuyingPrice(address buyer, uint256 amountBuying) private view returns (uint256 price){
uint256 currentPrice = getCurrentPrice();
uint256 p1 = _account[buyer].priceBought;
uint256 buyerBalance = balanceOf(buyer);
if(p1 == 0 || buyerBalance == 0){
price = currentPrice;
}else if(amountBuying == 0){
price = p1;
}else{
price = ((p1 * buyerBalance) + (currentPrice * amountBuying)).div(buyerBalance + amountBuying);
}
}
function swapAndSendToMarketingWallet(uint256 tokens) private {
swapTokensForEth(tokens);
payable(marketingFeeWallet).transfer(address(this).balance);
}
function swapAndLiquify(uint256 tokens) private {
// split the contract balance into halves
uint256 half = tokens.div(2);
uint256 otherHalf = tokens.sub(half);
// capture the contract's current ETH balance.
// this is so that we can capture exactly the amount of ETH that the
// swap creates, and not make the liquidity event include any ETH that
// has been manually sent to the contract
uint256 initialBalance = address(this).balance;
// swap tokens for ETH
swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered
// how much ETH did we just swap into?
uint256 newBalance = address(this).balance.sub(initialBalance);
// add liquidity to uniswap
addLiquidity(otherHalf, newBalance);
emit SwapAndLiquify(half, newBalance, otherHalf);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = 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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
address(liquidityReceiver),
block.timestamp
);
}
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event ExcludeFromFees(address indexed account, bool isExcluded);
event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet);
event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue);
struct Account{uint256 lastBuy;uint256 lastSell;uint256 priceBought;uint256 amountSold;bool sellLimitLiftedUp;}
event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiqudity);
event UpdateFees(uint256 newliquidityfees, uint256 newMarketingFees, uint256 newTotalFees);
event swapTokenForLiquify(uint256 amount);
event swapTokenForMarketing(uint256 amount, address sendToWallet);
event DEXBuy(uint256 tokensAmount, address buyers);
event DEXSell(uint256 tokensAmount, address sellers);
event TokensTransfer(address sender, address recipient, uint256 amount);
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"liqFee","type":"uint256"},{"internalType":"uint256","name":"marketFee","type":"uint256"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"maxBuyPercent","type":"uint256"},{"internalType":"uint256","name":"maxSellPercent","type":"uint256"},{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"},{"internalType":"address","name":"marketingWallet","type":"address"},{"internalType":"address","name":"liqudityWallet","type":"address"},{"internalType":"address","name":"uniswapV2RouterAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"buyers","type":"address"}],"name":"DEXBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"sellers","type":"address"}],"name":"DEXSell","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":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensTransfer","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newliquidityfees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalFees","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapTokenForLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"sendToWallet","type":"address"}],"name":"swapTokenForMarketing","type":"event"},{"inputs":[],"name":"IndividualSellLimitOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_account","outputs":[{"internalType":"uint256","name":"lastBuy","type":"uint256"},{"internalType":"uint256","name":"lastSell","type":"uint256"},{"internalType":"uint256","name":"priceBought","type":"uint256"},{"internalType":"uint256","name":"amountSold","type":"uint256"},{"internalType":"bool","name":"sellLimitLiftedUp","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isSniper","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyingPriceOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentPrice","outputs":[{"internalType":"uint256","name":"currentPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isSniper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitBaseFeeOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purgeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeBotBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removebot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"deadBlockOn","type":"bool"}],"name":"setDeadBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFeeValue","type":"uint256"},{"internalType":"uint256","name":"marketingFeeValue","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setFeeDivFactor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxFee","type":"uint256"},{"internalType":"bool","name":"_profitBasedFeeOn","type":"bool"},{"internalType":"bool","name":"_buyingPriceOn","type":"bool"}],"name":"setProfitBasedFeeParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"erc20","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"withdrawRemainingToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526008805462ffffff60b81b19166201010160b81b17905560c8600981905562000042306001600160a01b031660009081526020819052604090205490565b6200004e919062000ad1565b600a556200006f600c54600b54620004d560201b62001a4c1790919060201c565b600d55601c600e553480156200008457600080fd5b506040516200425e3803806200425e833981016040819052620000a791620009d9565b604080518082018252600a808252695472756d70476f6f736560b01b602080840182815285518087019096529285528401528151919291620000ec91600391620008f8565b50805162000102906004906020840190620008f8565b5050506000620001176200054560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000199866200018560648a6200054960201b62001ab21790919060201c565b6200059360201b62001af41790919060201c565b620001a990633b9aca0062000af4565b601055620001ca856200018589606462000549602090811b62001ab217901c565b620001da90633b9aca0062000af4565b601155620001fb846200018589606462000549602090811b62001ab217901c565b6200020b90633b9aca0062000af4565b6012556200022787606462000549602090811b62001ab217901c565b6200023790633b9aca0062000af4565b600f55600b899055600c8890556200025c8989620004d5602090811b62001a4c17901c565b600d8190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a357600080fd5b505afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de9190620009bb565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032757600080fd5b505afa1580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003629190620009bb565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003ab57600080fd5b505af1158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e69190620009bb565b600880546001600160a01b038086166001600160a01b031992831617909255601a8054928416929091169190911790559050620004258160016200061a565b601b80546001600160a01b038681166001600160a01b031992831617909255601c80548884169216919091179055600554620004649116600162000705565b6200047130600162000705565b601b546200048a906001600160a01b0316600162000705565b6200049785600162000705565b620004c4620004ae6005546001600160a01b031690565b620004be8b633b9aca0062000af4565b620007c0565b505050505050505050505062000b69565b600080620004e4838562000ab6565b9050838110156200053c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b3390565b60006200053c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008bc60201b60201c565b600082620005a4575060006200053f565b6000620005b2838562000af4565b905082620005c1858362000ad1565b146200053c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000533565b6001600160a01b03821660009081526018602052604090205460ff1615158115151415620006b15760405162461bcd60e51b815260206004820152603f60248201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c756500606482015260840162000533565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620007615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000533565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620008185760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000533565b6200083481600254620004d560201b62001a4c1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200086791839062001a4c620004d5821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008183620008e05760405162461bcd60e51b815260040162000533919062000a5e565b506000620008ef848662000ad1565b95945050505050565b828054620009069062000b16565b90600052602060002090601f0160209004810192826200092a576000855562000975565b82601f106200094557805160ff191683800117855562000975565b8280016001018555821562000975579182015b828111156200097557825182559160200191906001019062000958565b506200098392915062000987565b5090565b5b8082111562000983576000815560010162000988565b80516001600160a01b0381168114620009b657600080fd5b919050565b600060208284031215620009ce57600080fd5b6200053c826200099e565b60008060008060008060008060006101208a8c031215620009f957600080fd5b8951985060208a0151975060408a0151965060608a0151955060808a0151945060a08a0151935062000a2e60c08b016200099e565b925062000a3e60e08b016200099e565b915062000a4f6101008b016200099e565b90509295985092959850929598565b600060208083528351808285015260005b8181101562000a8d5785810183015185820160400152820162000a6f565b8181111562000aa0576000604083870101525b50601f01601f1916929092016040019392505050565b6000821982111562000acc5762000acc62000b53565b500190565b60008262000aef57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161562000b115762000b1162000b53565b500290565b600181811c9082168062000b2b57607f821691505b6020821081141562000b4d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6136e58062000b796000396000f3fe6080604052600436106103855760003560e01c8063877f4de5116101d1578063bf56b37111610102578063dd62ed3e116100a0578063e6db992f1161006f578063e6db992f14610aae578063eb91d37e14610ac3578063f2fde38b14610ad8578063f8b3c23e14610af857600080fd5b8063dd62ed3e14610a1c578063ddbbf68314610a62578063e2f4560514610a82578063e6c75f7114610a9857600080fd5b8063ca02d791116100dc578063ca02d7911461094f578063cb0e55a81461096f578063da473fcd146109e6578063dd467064146109fc57600080fd5b8063bf56b371146108f9578063c02466681461090f578063c492f0461461092f57600080fd5b80639a7a23d61161016f578063a9059cbb11610149578063a9059cbb14610874578063b62496f514610894578063b6c52324146108c4578063b99d4839146108d957600080fd5b80639a7a23d6146108135780639ec5691d14610833578063a457c2d71461085457600080fd5b80638e989382116101ab5780638e989382146107a85780639283ee17146107c857806395d89b41146107e857806398118cb4146107fd57600080fd5b8063877f4de5146107545780638d8b4d50146107755780638da5cb5b1461078a57600080fd5b8063316601a7116102b65780635aa821a91161025457806370a082311161022357806370a08231146106df578063715018a6146106ff5780637290b621146107145780637316c2e91461073457600080fd5b80635aa821a9146106735780635d098b381461068957806365b8dbc0146106a95780636b67c4df146106c957600080fd5b8063455a439611610290578063455a4396146105da57806349bd5a5e146105fa5780634fbee1931461061a57806352f7c9881461065357600080fd5b8063316601a71461057957806331a0a88c1461059957806339509351146105ba57600080fd5b806318160ddd116103235780631fca803d116102fd5780631fca803d146104ed57806323b872dd1461051d578063264d26dd1461053d578063313ce5671461055d57600080fd5b806318160ddd146104875780631c15aa111461049c5780631cdd3be3146104bd57600080fd5b806306fdde031161035f57806306fdde03146103e7578063095ea7b31461040957806313114a9d146104395780631694505e1461044f57600080fd5b806301339c211461039157806301f59d16146103a857806302259e9e146103d157600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610b19565b005b3480156103b457600080fd5b506103be600e5481565b6040519081526020015b60405180910390f35b3480156103dd57600080fd5b506103be60115481565b3480156103f357600080fd5b506103fc610b6f565b6040516103c89190613362565b34801561041557600080fd5b506104296104243660046130f3565b610c01565b60405190151581526020016103c8565b34801561044557600080fd5b506103be600d5481565b34801561045b57600080fd5b5060085461046f906001600160a01b031681565b6040516001600160a01b0390911681526020016103c8565b34801561049357600080fd5b506002546103be565b3480156104a857600080fd5b5060085461042990600160b81b900460ff1681565b3480156104c957600080fd5b506104296104d8366004613011565b60156020526000908152604090205460ff1681565b3480156104f957600080fd5b50610429610508366004613011565b60166020526000908152604090205460ff1681565b34801561052957600080fd5b50610429610538366004613084565b610c18565b34801561054957600080fd5b50601b5461046f906001600160a01b031681565b34801561056957600080fd5b50604051600981526020016103c8565b34801561058557600080fd5b506103a6610594366004613224565b610c81565b3480156105a557600080fd5b5060085461042990600160c81b900460ff1681565b3480156105c657600080fd5b506104296105d53660046130f3565b610cb0565b3480156105e657600080fd5b506103a66105f53660046130c5565b610ce6565b34801561060657600080fd5b50601a5461046f906001600160a01b031681565b34801561062657600080fd5b50610429610635366004613011565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561065f57600080fd5b506103a661066e36600461328d565b610d3b565b34801561067f57600080fd5b506103be60105481565b34801561069557600080fd5b506103a66106a4366004613011565b610dca565b3480156106b557600080fd5b506103a66106c4366004613011565b610e16565b3480156106d557600080fd5b506103be600c5481565b3480156106eb57600080fd5b506103be6106fa366004613011565b6110b4565b34801561070b57600080fd5b506103a66110cf565b34801561072057600080fd5b506103a661072f3660046132af565b611146565b34801561074057600080fd5b506103a661074f3660046131a5565b6111a8565b34801561076057600080fd5b5060085461042990600160a81b900460ff1681565b34801561078157600080fd5b506103a66111f0565b34801561079657600080fd5b506005546001600160a01b031661046f565b3480156107b457600080fd5b506103a66107c336600461304b565b6112a7565b3480156107d457600080fd5b506103a66107e33660046130f3565b6113d7565b3480156107f457600080fd5b506103fc61141c565b34801561080957600080fd5b506103be600b5481565b34801561081f57600080fd5b506103a661082e3660046130c5565b61142b565b34801561083f57600080fd5b5060085461042990600160c01b900460ff1681565b34801561086057600080fd5b5061042961086f3660046130f3565b6114f8565b34801561088057600080fd5b5061042961088f3660046130f3565b611547565b3480156108a057600080fd5b506104296108af366004613011565b60186020526000908152604090205460ff1681565b3480156108d057600080fd5b506007546103be565b3480156108e557600080fd5b506103a66108f4366004613256565b611554565b34801561090557600080fd5b506103be60135481565b34801561091b57600080fd5b506103a661092a3660046130c5565b6115c3565b34801561093b57600080fd5b506103a661094a36600461311f565b61164c565b34801561095b57600080fd5b50601c5461046f906001600160a01b031681565b34801561097b57600080fd5b506109bc61098a366004613011565b601460205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103c8565b3480156109f257600080fd5b506103be60095481565b348015610a0857600080fd5b506103a6610a17366004613224565b611728565b348015610a2857600080fd5b506103be610a3736600461304b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a6e57600080fd5b5061046f610a7d366004613224565b6117ad565b348015610a8e57600080fd5b506103be600a5481565b348015610aa457600080fd5b506103be60125481565b348015610aba57600080fd5b506103a66117d7565b348015610acf57600080fd5b506103be611883565b348015610ae457600080fd5b506103a6610af3366004613011565b611973565b348015610b0457600080fd5b5060085461042990600160b01b900460ff1681565b6005546001600160a01b03163314610b4c5760405162461bcd60e51b8152600401610b43906133fa565b60405180910390fd5b6008805460ff60b01b1916600160b01b179055610b6a42600a611a4c565b601355565b606060038054610b7e90613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610baa90613555565b8015610bf75780601f10610bcc57610100808354040283529160200191610bf7565b820191906000526020600020905b815481529060010190602001808311610bda57829003601f168201915b5050505050905090565b6000610c0e338484611b73565b5060015b92915050565b6000610c25848484611c98565b610c778433610c7285604051806060016040528060288152602001613643602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612711565b611b73565b5060019392505050565b6005546001600160a01b03163314610cab5760405162461bcd60e51b8152600401610b43906133fa565b600955565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c0e918590610c729086611a4c565b6005546001600160a01b03163314610d105760405162461bcd60e51b8152600401610b43906133fa565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d655760405162461bcd60e51b8152600401610b43906133fa565b600b829055600c819055610d798282611a4c565b600d819055600b54600c546040805192835260208301919091528101919091527f9fef908e44cc0f51b9e9f7fd26bc506a50448657da0dc10a9661e37bc1c4a3929060600160405180910390a15050565b6005546001600160a01b03163314610df45760405162461bcd60e51b8152600401610b43906133fa565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e405760405162461bcd60e51b8152600401610b43906133fa565b6008546001600160a01b0382811691161415610eb15760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e3a2054686520726f7574657220616c7265616479206861732074686044820152696174206164647265737360b01b6064820152608401610b43565b6008546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a0155916004808301926020929190829003018186803b158015610f4357600080fd5b505afa158015610f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7b919061302e565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd857600080fd5b505afa158015610fec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611010919061302e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561105857600080fd5b505af115801561106c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611090919061302e565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146110f95760405162461bcd60e51b8152600401610b43906133fa565b600554600680546001600160a01b0319166001600160a01b0390921691821790556040516000919060008051602061366b833981519152908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111705760405162461bcd60e51b8152600401610b43906133fa565b61117e83633b9aca0061351f565b60105561118f82633b9aca0061351f565b6011556111a081633b9aca0061351f565b601255505050565b6005546001600160a01b031633146111d25760405162461bcd60e51b8152600401610b43906133fa565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6006546001600160a01b031633146112565760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b43565b6006546005546040516001600160a01b03928316929091169060008051602061366b83398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b6005546001600160a01b031633146112d15760405162461bcd60e51b8152600401610b43906133fa565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b919061323d565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561139957600080fd5b505af11580156113ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d191906131c2565b50505050565b6005546001600160a01b031633146114015760405162461bcd60e51b8152600401610b43906133fa565b6114188261141383633b9aca0061351f565b61274b565b5050565b606060048054610b7e90613555565b6005546001600160a01b031633146114555760405162461bcd60e51b8152600401610b43906133fa565b601a546001600160a01b03838116911614156114ee5760405162461bcd60e51b815260206004820152604c60248201527f546f6b656e3a205468652050616e63616b655377617020706169722063616e6e60448201527f6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b60648201526b65744d616b6572506169727360a01b608482015260a401610b43565b6114188282612755565b6000610c0e3384610c728560405180606001604052806025815260200161368b602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612711565b6000610c0e338484611c98565b6005546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610b43906133fa565b604183111561158c57600080fd5b6008805461ffff60b81b1916600160b81b9315159390930260ff60c01b191692909217600160c01b91151591909102179055600e55565b6005546001600160a01b031633146115ed5760405162461bcd60e51b8152600401610b43906133fa565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116765760405162461bcd60e51b8152600401610b43906133fa565b60005b828110156116e7578160176000868685818110611698576116986135c1565b90506020020160208101906116ad9190613011565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806116df81613590565b915050611679565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161171b93929190613309565b60405180910390a1505050565b6005546001600160a01b031633146117525760405162461bcd60e51b8152600401610b43906133fa565b60058054600680546001600160a01b03199081166001600160a01b0384161790915516905561178181426134e5565b6007556005546040516000916001600160a01b03169060008051602061366b833981519152908390a350565b601981815481106117bd57600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146118015760405162461bcd60e51b8152600401610b43906133fa565b60005b60195481101561188057600060198281548110611823576118236135c1565b60009182526020822001546001600160a01b03169150611842826110b4565b905061184e828261283e565b506001600160a01b03166000908152601660205260409020805460ff191690558061187881613590565b915050611804565b50565b601a5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b1580156118cf57600080fd5b505afa1580156118e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190791906131df565b506001600160701b0391821693501690508181111561192257905b80611930576000935061196d565b8161194182655af3107a400061351f565b1115611968576119618261195b83655af3107a400061351f565b90611ab2565b935061196d565b600093505b50505090565b6005546001600160a01b0316331461199d5760405162461bcd60e51b8152600401610b43906133fa565b6001600160a01b038116611a025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b43565b6005546040516001600160a01b0380841692169060008051602061366b83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611a5983856134e5565b905083811015611aab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b43565b9392505050565b6000611aab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061294a565b600082611b0357506000610c12565b6000611b0f838561351f565b905082611b1c85836134fd565b14611aab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b43565b6001600160a01b038316611bd55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b43565b6001600160a01b038216611c365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b43565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611cbe5760405162461bcd60e51b8152600401610b439061342f565b6001600160a01b038216611ce45760405162461bcd60e51b8152600401610b43906133b7565b6001600160a01b03821660009081526015602052604090205460ff16158015611d2657506001600160a01b03831660009081526015602052604090205460ff16155b611d8b5760405162461bcd60e51b815260206004820152603060248201527f596f75722061646472657373206f7220726563697069656e742061646472657360448201526f1cc81a5cc8189b1858dadb1a5cdd195960821b6064820152608401610b43565b80611da157611d9c83836000612978565b505050565b6000611dac306110b4565b90506000600a5482101590506000818015611dd15750600854600160a01b900460ff16155b8015611df657506001600160a01b03861660009081526018602052604090205460ff16155b8015611e1057506005546001600160a01b03878116911614155b8015611e2a57506005546001600160a01b03868116911614155b15611f18576008805460ff60a01b1916600160a01b179055600d54600c54600091611e5a9161195b908790611af4565b9050611e6581612a81565b601c54604080518381526001600160a01b0390921660208301527feafa9125fd4b0edd379b9ab67721e8f4eb26bc018c352092ccac54a89ac6fed7910160405180910390a16000611ec7600d5461195b600b5488611af490919063ffffffff16565b9050611ed281612ac3565b6040518181527f61d10b3f17a77466a4241488e37c886fa1637f9863ae76dd5076a80a932bc4eb9060200160405180910390a150506008805460ff60a01b191690555060015b6008546001600160a01b03871660009081526017602052604090205460ff600160a01b909204821615911680611f6657506001600160a01b03861660009081526017602052604090205460ff165b15611f6f575060005b80156126fd576001600160a01b03871660009081526018602052604090205460ff161561224957600854600160b01b900460ff16611fef5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e2069736e2774206c61756e636865642079657400000000000000006044820152606401610b43565b6010548511156120525760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b43565b6012548561205f886110b4565b61206991906134e5565b11156120c35760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b43565b601354421180159081906120f057506001600160a01b03871660009081526016602052604090205460ff16155b1561214157601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160a81b900460ff16801561217357506001600160a01b03871660009081526016602052604090205460ff16155b156121c457601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160c01b900460ff16151560011415612202576121e58787612b4a565b6001600160a01b0388166000908152601460205260409020600201555b604080518781526001600160a01b03891660208201527f1df6c66a1a6eb6b0b6a23930c6ec94664e676e5d72f819a20a11e6c54540fa42910160405180910390a15061259d565b6001600160a01b03861660009081526018602052604090205460ff161561249e576001600160a01b03871660009081526016602052604090205460ff16156122c45760405162461bcd60e51b815260206004820152600e60248201526d2cb7ba9030b9329039b734b832b960911b6044820152606401610b43565b60115485111561233c5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610b43565b600854600160c81b900460ff161515600114801561237657506001600160a01b03871660009081526014602052604090206004015460ff16155b15612424576000612386886110b4565b90506002811115612422578086111561239e57600080fd5b6001600160a01b038816600090815260146020526040812060030180548892906123c99084906134e5565b909155506123da9050816003611ab2565b6001600160a01b03891660009081526014602052604090206003015410612422576001600160a01b0388166000908152601460205260409020600401805460ff191660011790555b505b61243785612431896110b4565b90612bdb565b612458576001600160a01b0387166000908152601460205260408120600201555b604080518681526001600160a01b03891660208201527f845540a7f3f9afb8980bffef1e5a59039c43bbd45de62cc2ce5def5830465f04910160405180910390a161259d565b6001600160a01b03871660009081526017602052604090205460ff161580156124e057506001600160a01b03861660009081526017602052604090205460ff16155b1561259d57600854600160c01b900460ff16151560011415612523576125068686612b4a565b6001600160a01b0387166000908152601460205260409020600201555b61253085612431896110b4565b612551576001600160a01b0387166000908152601460205260408120600201555b604080516001600160a01b03808a168252881660208201529081018690527f38e8feed990acd7f5210170f614d354c7a0485670b9a787e9e00f8fca640d5749060600160405180910390a15b60006125b9606461195b600d5489611af490919063ffffffff16565b6001600160a01b03881660009081526018602052604090205490915060ff16156125fa576125ed606461195b886001611af4565b6125f790826134e5565b90505b600854600090600160b81b900460ff161515600114801561263457506001600160a01b03891660009081526017602052604090205460ff16155b801561265857506001600160a01b03881660009081526018602052604090205460ff165b156126d05760006001851515141561268b57600f54871161267a576001612688565b600f54612688908890611ab2565b90505b6001600160a01b038a166000908152601460205260409020600201546126b2908983612c1d565b91508282116126c25760006126cc565b6126cc838361353e565b9150505b6126e46126dd82846134e5565b8890612bdb565b96506126fa89306126f584866134e5565b612978565b50505b612708878787612978565b50505050505050565b600081848411156127355760405162461bcd60e51b8152600401610b439190613362565b506000612742848661353e565b95945050505050565b6114188282612cf2565b6001600160a01b03821660009081526018602052604090205460ff16151581151514156127ea5760405162461bcd60e51b815260206004820152603f60248201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c7565006064820152608401610b43565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03821661289e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b43565b6128db816040518060600160405280602281526020016135fb602291396001600160a01b0385166000908152602081905260409020549190612711565b6001600160a01b0383166000908152602081905260409020556002546129019082612bdb565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000818361296b5760405162461bcd60e51b8152600401610b439190613362565b50600061274284866134fd565b6001600160a01b03831661299e5760405162461bcd60e51b8152600401610b439061342f565b6001600160a01b0382166129c45760405162461bcd60e51b8152600401610b43906133b7565b612a018160405180606001604052806026815260200161361d602691396001600160a01b0386166000908152602081905260409020549190612711565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a309082611a4c565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c8b565b612a8a81612dc9565b601c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611418573d6000803e3d6000fd5b6000612ad0826002611ab2565b90506000612ade8383612bdb565b905047612aea83612dc9565b6000612af64783612bdb565b9050612b028382612f32565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b600080612b55611883565b6001600160a01b038516600090815260146020526040812060020154919250612b7d866110b4565b9050811580612b8a575080155b15612b9757829350612bd2565b84612ba457819350612bd2565b612bcf612bb186836134e5565b612bbb878661351f565b612bc5848661351f565b61195b91906134e5565b93505b50505092915050565b6000611aab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612711565b600080612c28611883565b90506000851580612c395750606485105b15612c475760009250612ce9565b81612c5387600a6134e5565b1015612ce4576064612c7e612c77612c70600261195b8b8861353e565b8590611ab2565b8290611ab2565b915084600e541115612cd95784600e54612c98919061353e565b821015612ca55781612cb3565b84600e54612cb3919061353e565b915060008211612cc4576000612cd2565b612cd28161195b8885611af4565b9350612cde565b600093505b50612ce9565b600092505b50509392505050565b6001600160a01b038216612d485760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b43565b600254612d559082611a4c565b6002556001600160a01b038216600090815260208190526040902054612d7b9082611a4c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161293e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dfe57612dfe6135c1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612e5257600080fd5b505afa158015612e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8a919061302e565b81600181518110612e9d57612e9d6135c1565b6001600160a01b039283166020918202929092010152600854612ec39130911684611b73565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790612efc908590600090869030904290600401613474565b600060405180830381600087803b158015612f1657600080fd5b505af1158015612f2a573d6000803e3d6000fd5b505050505050565b600854612f4a9030906001600160a01b031684611b73565b600854601b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612fb557600080fd5b505af1158015612fc9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fee91906132db565b5050505050565b80516001600160701b038116811461300c57600080fd5b919050565b60006020828403121561302357600080fd5b8135611aab816135d7565b60006020828403121561304057600080fd5b8151611aab816135d7565b6000806040838503121561305e57600080fd5b8235613069816135d7565b91506020830135613079816135d7565b809150509250929050565b60008060006060848603121561309957600080fd5b83356130a4816135d7565b925060208401356130b4816135d7565b929592945050506040919091013590565b600080604083850312156130d857600080fd5b82356130e3816135d7565b91506020830135613079816135ec565b6000806040838503121561310657600080fd5b8235613111816135d7565b946020939093013593505050565b60008060006040848603121561313457600080fd5b833567ffffffffffffffff8082111561314c57600080fd5b818601915086601f83011261316057600080fd5b81358181111561316f57600080fd5b8760208260051b850101111561318457600080fd5b6020928301955093505084013561319a816135ec565b809150509250925092565b6000602082840312156131b757600080fd5b8135611aab816135ec565b6000602082840312156131d457600080fd5b8151611aab816135ec565b6000806000606084860312156131f457600080fd5b6131fd84612ff5565b925061320b60208501612ff5565b9150604084015163ffffffff8116811461319a57600080fd5b60006020828403121561323657600080fd5b5035919050565b60006020828403121561324f57600080fd5b5051919050565b60008060006060848603121561326b57600080fd5b83359250602084013561327d816135ec565b9150604084013561319a816135ec565b600080604083850312156132a057600080fd5b50508035926020909101359150565b6000806000606084860312156132c457600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156132f057600080fd5b8351925060208401519150604084015190509250925092565b6040808252810183905260008460608301825b8681101561334c57823561332f816135d7565b6001600160a01b031682526020928301929091019060010161331c565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b8181101561338f57858101830151858201604001528201613373565b818111156133a1576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134c45784516001600160a01b03168352938301939183019160010161349f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156134f8576134f86135ab565b500190565b60008261351a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613539576135396135ab565b500290565b600082821015613550576135506135ab565b500390565b600181811c9082168061356957607f821691505b6020821081141561358a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156135a4576135a46135ab565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461188057600080fd5b801515811461188057600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bba6b4e2f3cb466e4c5dffd1708790c9d55be0a6f22b6025630981790fd49a9464736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064000000000000000000000000fbbcf047e0cec76d43f3317a65e6724d5ebaa3550000000000000000000000008507fb4cf9defca5d997a8d83b301546e9e8229a0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106103855760003560e01c8063877f4de5116101d1578063bf56b37111610102578063dd62ed3e116100a0578063e6db992f1161006f578063e6db992f14610aae578063eb91d37e14610ac3578063f2fde38b14610ad8578063f8b3c23e14610af857600080fd5b8063dd62ed3e14610a1c578063ddbbf68314610a62578063e2f4560514610a82578063e6c75f7114610a9857600080fd5b8063ca02d791116100dc578063ca02d7911461094f578063cb0e55a81461096f578063da473fcd146109e6578063dd467064146109fc57600080fd5b8063bf56b371146108f9578063c02466681461090f578063c492f0461461092f57600080fd5b80639a7a23d61161016f578063a9059cbb11610149578063a9059cbb14610874578063b62496f514610894578063b6c52324146108c4578063b99d4839146108d957600080fd5b80639a7a23d6146108135780639ec5691d14610833578063a457c2d71461085457600080fd5b80638e989382116101ab5780638e989382146107a85780639283ee17146107c857806395d89b41146107e857806398118cb4146107fd57600080fd5b8063877f4de5146107545780638d8b4d50146107755780638da5cb5b1461078a57600080fd5b8063316601a7116102b65780635aa821a91161025457806370a082311161022357806370a08231146106df578063715018a6146106ff5780637290b621146107145780637316c2e91461073457600080fd5b80635aa821a9146106735780635d098b381461068957806365b8dbc0146106a95780636b67c4df146106c957600080fd5b8063455a439611610290578063455a4396146105da57806349bd5a5e146105fa5780634fbee1931461061a57806352f7c9881461065357600080fd5b8063316601a71461057957806331a0a88c1461059957806339509351146105ba57600080fd5b806318160ddd116103235780631fca803d116102fd5780631fca803d146104ed57806323b872dd1461051d578063264d26dd1461053d578063313ce5671461055d57600080fd5b806318160ddd146104875780631c15aa111461049c5780631cdd3be3146104bd57600080fd5b806306fdde031161035f57806306fdde03146103e7578063095ea7b31461040957806313114a9d146104395780631694505e1461044f57600080fd5b806301339c211461039157806301f59d16146103a857806302259e9e146103d157600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610b19565b005b3480156103b457600080fd5b506103be600e5481565b6040519081526020015b60405180910390f35b3480156103dd57600080fd5b506103be60115481565b3480156103f357600080fd5b506103fc610b6f565b6040516103c89190613362565b34801561041557600080fd5b506104296104243660046130f3565b610c01565b60405190151581526020016103c8565b34801561044557600080fd5b506103be600d5481565b34801561045b57600080fd5b5060085461046f906001600160a01b031681565b6040516001600160a01b0390911681526020016103c8565b34801561049357600080fd5b506002546103be565b3480156104a857600080fd5b5060085461042990600160b81b900460ff1681565b3480156104c957600080fd5b506104296104d8366004613011565b60156020526000908152604090205460ff1681565b3480156104f957600080fd5b50610429610508366004613011565b60166020526000908152604090205460ff1681565b34801561052957600080fd5b50610429610538366004613084565b610c18565b34801561054957600080fd5b50601b5461046f906001600160a01b031681565b34801561056957600080fd5b50604051600981526020016103c8565b34801561058557600080fd5b506103a6610594366004613224565b610c81565b3480156105a557600080fd5b5060085461042990600160c81b900460ff1681565b3480156105c657600080fd5b506104296105d53660046130f3565b610cb0565b3480156105e657600080fd5b506103a66105f53660046130c5565b610ce6565b34801561060657600080fd5b50601a5461046f906001600160a01b031681565b34801561062657600080fd5b50610429610635366004613011565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561065f57600080fd5b506103a661066e36600461328d565b610d3b565b34801561067f57600080fd5b506103be60105481565b34801561069557600080fd5b506103a66106a4366004613011565b610dca565b3480156106b557600080fd5b506103a66106c4366004613011565b610e16565b3480156106d557600080fd5b506103be600c5481565b3480156106eb57600080fd5b506103be6106fa366004613011565b6110b4565b34801561070b57600080fd5b506103a66110cf565b34801561072057600080fd5b506103a661072f3660046132af565b611146565b34801561074057600080fd5b506103a661074f3660046131a5565b6111a8565b34801561076057600080fd5b5060085461042990600160a81b900460ff1681565b34801561078157600080fd5b506103a66111f0565b34801561079657600080fd5b506005546001600160a01b031661046f565b3480156107b457600080fd5b506103a66107c336600461304b565b6112a7565b3480156107d457600080fd5b506103a66107e33660046130f3565b6113d7565b3480156107f457600080fd5b506103fc61141c565b34801561080957600080fd5b506103be600b5481565b34801561081f57600080fd5b506103a661082e3660046130c5565b61142b565b34801561083f57600080fd5b5060085461042990600160c01b900460ff1681565b34801561086057600080fd5b5061042961086f3660046130f3565b6114f8565b34801561088057600080fd5b5061042961088f3660046130f3565b611547565b3480156108a057600080fd5b506104296108af366004613011565b60186020526000908152604090205460ff1681565b3480156108d057600080fd5b506007546103be565b3480156108e557600080fd5b506103a66108f4366004613256565b611554565b34801561090557600080fd5b506103be60135481565b34801561091b57600080fd5b506103a661092a3660046130c5565b6115c3565b34801561093b57600080fd5b506103a661094a36600461311f565b61164c565b34801561095b57600080fd5b50601c5461046f906001600160a01b031681565b34801561097b57600080fd5b506109bc61098a366004613011565b601460205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103c8565b3480156109f257600080fd5b506103be60095481565b348015610a0857600080fd5b506103a6610a17366004613224565b611728565b348015610a2857600080fd5b506103be610a3736600461304b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a6e57600080fd5b5061046f610a7d366004613224565b6117ad565b348015610a8e57600080fd5b506103be600a5481565b348015610aa457600080fd5b506103be60125481565b348015610aba57600080fd5b506103a66117d7565b348015610acf57600080fd5b506103be611883565b348015610ae457600080fd5b506103a6610af3366004613011565b611973565b348015610b0457600080fd5b5060085461042990600160b01b900460ff1681565b6005546001600160a01b03163314610b4c5760405162461bcd60e51b8152600401610b43906133fa565b60405180910390fd5b6008805460ff60b01b1916600160b01b179055610b6a42600a611a4c565b601355565b606060038054610b7e90613555565b80601f0160208091040260200160405190810160405280929190818152602001828054610baa90613555565b8015610bf75780601f10610bcc57610100808354040283529160200191610bf7565b820191906000526020600020905b815481529060010190602001808311610bda57829003601f168201915b5050505050905090565b6000610c0e338484611b73565b5060015b92915050565b6000610c25848484611c98565b610c778433610c7285604051806060016040528060288152602001613643602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612711565b611b73565b5060019392505050565b6005546001600160a01b03163314610cab5760405162461bcd60e51b8152600401610b43906133fa565b600955565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c0e918590610c729086611a4c565b6005546001600160a01b03163314610d105760405162461bcd60e51b8152600401610b43906133fa565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d655760405162461bcd60e51b8152600401610b43906133fa565b600b829055600c819055610d798282611a4c565b600d819055600b54600c546040805192835260208301919091528101919091527f9fef908e44cc0f51b9e9f7fd26bc506a50448657da0dc10a9661e37bc1c4a3929060600160405180910390a15050565b6005546001600160a01b03163314610df45760405162461bcd60e51b8152600401610b43906133fa565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e405760405162461bcd60e51b8152600401610b43906133fa565b6008546001600160a01b0382811691161415610eb15760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e3a2054686520726f7574657220616c7265616479206861732074686044820152696174206164647265737360b01b6064820152608401610b43565b6008546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a0155916004808301926020929190829003018186803b158015610f4357600080fd5b505afa158015610f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7b919061302e565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd857600080fd5b505afa158015610fec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611010919061302e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561105857600080fd5b505af115801561106c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611090919061302e565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146110f95760405162461bcd60e51b8152600401610b43906133fa565b600554600680546001600160a01b0319166001600160a01b0390921691821790556040516000919060008051602061366b833981519152908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111705760405162461bcd60e51b8152600401610b43906133fa565b61117e83633b9aca0061351f565b60105561118f82633b9aca0061351f565b6011556111a081633b9aca0061351f565b601255505050565b6005546001600160a01b031633146111d25760405162461bcd60e51b8152600401610b43906133fa565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6006546001600160a01b031633146112565760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b43565b6006546005546040516001600160a01b03928316929091169060008051602061366b83398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b6005546001600160a01b031633146112d15760405162461bcd60e51b8152600401610b43906133fa565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b919061323d565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561139957600080fd5b505af11580156113ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d191906131c2565b50505050565b6005546001600160a01b031633146114015760405162461bcd60e51b8152600401610b43906133fa565b6114188261141383633b9aca0061351f565b61274b565b5050565b606060048054610b7e90613555565b6005546001600160a01b031633146114555760405162461bcd60e51b8152600401610b43906133fa565b601a546001600160a01b03838116911614156114ee5760405162461bcd60e51b815260206004820152604c60248201527f546f6b656e3a205468652050616e63616b655377617020706169722063616e6e60448201527f6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b60648201526b65744d616b6572506169727360a01b608482015260a401610b43565b6114188282612755565b6000610c0e3384610c728560405180606001604052806025815260200161368b602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612711565b6000610c0e338484611c98565b6005546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610b43906133fa565b604183111561158c57600080fd5b6008805461ffff60b81b1916600160b81b9315159390930260ff60c01b191692909217600160c01b91151591909102179055600e55565b6005546001600160a01b031633146115ed5760405162461bcd60e51b8152600401610b43906133fa565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116765760405162461bcd60e51b8152600401610b43906133fa565b60005b828110156116e7578160176000868685818110611698576116986135c1565b90506020020160208101906116ad9190613011565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806116df81613590565b915050611679565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161171b93929190613309565b60405180910390a1505050565b6005546001600160a01b031633146117525760405162461bcd60e51b8152600401610b43906133fa565b60058054600680546001600160a01b03199081166001600160a01b0384161790915516905561178181426134e5565b6007556005546040516000916001600160a01b03169060008051602061366b833981519152908390a350565b601981815481106117bd57600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146118015760405162461bcd60e51b8152600401610b43906133fa565b60005b60195481101561188057600060198281548110611823576118236135c1565b60009182526020822001546001600160a01b03169150611842826110b4565b905061184e828261283e565b506001600160a01b03166000908152601660205260409020805460ff191690558061187881613590565b915050611804565b50565b601a5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b1580156118cf57600080fd5b505afa1580156118e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190791906131df565b506001600160701b0391821693501690508181111561192257905b80611930576000935061196d565b8161194182655af3107a400061351f565b1115611968576119618261195b83655af3107a400061351f565b90611ab2565b935061196d565b600093505b50505090565b6005546001600160a01b0316331461199d5760405162461bcd60e51b8152600401610b43906133fa565b6001600160a01b038116611a025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b43565b6005546040516001600160a01b0380841692169060008051602061366b83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611a5983856134e5565b905083811015611aab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b43565b9392505050565b6000611aab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061294a565b600082611b0357506000610c12565b6000611b0f838561351f565b905082611b1c85836134fd565b14611aab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b43565b6001600160a01b038316611bd55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b43565b6001600160a01b038216611c365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b43565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611cbe5760405162461bcd60e51b8152600401610b439061342f565b6001600160a01b038216611ce45760405162461bcd60e51b8152600401610b43906133b7565b6001600160a01b03821660009081526015602052604090205460ff16158015611d2657506001600160a01b03831660009081526015602052604090205460ff16155b611d8b5760405162461bcd60e51b815260206004820152603060248201527f596f75722061646472657373206f7220726563697069656e742061646472657360448201526f1cc81a5cc8189b1858dadb1a5cdd195960821b6064820152608401610b43565b80611da157611d9c83836000612978565b505050565b6000611dac306110b4565b90506000600a5482101590506000818015611dd15750600854600160a01b900460ff16155b8015611df657506001600160a01b03861660009081526018602052604090205460ff16155b8015611e1057506005546001600160a01b03878116911614155b8015611e2a57506005546001600160a01b03868116911614155b15611f18576008805460ff60a01b1916600160a01b179055600d54600c54600091611e5a9161195b908790611af4565b9050611e6581612a81565b601c54604080518381526001600160a01b0390921660208301527feafa9125fd4b0edd379b9ab67721e8f4eb26bc018c352092ccac54a89ac6fed7910160405180910390a16000611ec7600d5461195b600b5488611af490919063ffffffff16565b9050611ed281612ac3565b6040518181527f61d10b3f17a77466a4241488e37c886fa1637f9863ae76dd5076a80a932bc4eb9060200160405180910390a150506008805460ff60a01b191690555060015b6008546001600160a01b03871660009081526017602052604090205460ff600160a01b909204821615911680611f6657506001600160a01b03861660009081526017602052604090205460ff165b15611f6f575060005b80156126fd576001600160a01b03871660009081526018602052604090205460ff161561224957600854600160b01b900460ff16611fef5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e2069736e2774206c61756e636865642079657400000000000000006044820152606401610b43565b6010548511156120525760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b43565b6012548561205f886110b4565b61206991906134e5565b11156120c35760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b43565b601354421180159081906120f057506001600160a01b03871660009081526016602052604090205460ff16155b1561214157601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160a81b900460ff16801561217357506001600160a01b03871660009081526016602052604090205460ff16155b156121c457601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160c01b900460ff16151560011415612202576121e58787612b4a565b6001600160a01b0388166000908152601460205260409020600201555b604080518781526001600160a01b03891660208201527f1df6c66a1a6eb6b0b6a23930c6ec94664e676e5d72f819a20a11e6c54540fa42910160405180910390a15061259d565b6001600160a01b03861660009081526018602052604090205460ff161561249e576001600160a01b03871660009081526016602052604090205460ff16156122c45760405162461bcd60e51b815260206004820152600e60248201526d2cb7ba9030b9329039b734b832b960911b6044820152606401610b43565b60115485111561233c5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610b43565b600854600160c81b900460ff161515600114801561237657506001600160a01b03871660009081526014602052604090206004015460ff16155b15612424576000612386886110b4565b90506002811115612422578086111561239e57600080fd5b6001600160a01b038816600090815260146020526040812060030180548892906123c99084906134e5565b909155506123da9050816003611ab2565b6001600160a01b03891660009081526014602052604090206003015410612422576001600160a01b0388166000908152601460205260409020600401805460ff191660011790555b505b61243785612431896110b4565b90612bdb565b612458576001600160a01b0387166000908152601460205260408120600201555b604080518681526001600160a01b03891660208201527f845540a7f3f9afb8980bffef1e5a59039c43bbd45de62cc2ce5def5830465f04910160405180910390a161259d565b6001600160a01b03871660009081526017602052604090205460ff161580156124e057506001600160a01b03861660009081526017602052604090205460ff16155b1561259d57600854600160c01b900460ff16151560011415612523576125068686612b4a565b6001600160a01b0387166000908152601460205260409020600201555b61253085612431896110b4565b612551576001600160a01b0387166000908152601460205260408120600201555b604080516001600160a01b03808a168252881660208201529081018690527f38e8feed990acd7f5210170f614d354c7a0485670b9a787e9e00f8fca640d5749060600160405180910390a15b60006125b9606461195b600d5489611af490919063ffffffff16565b6001600160a01b03881660009081526018602052604090205490915060ff16156125fa576125ed606461195b886001611af4565b6125f790826134e5565b90505b600854600090600160b81b900460ff161515600114801561263457506001600160a01b03891660009081526017602052604090205460ff16155b801561265857506001600160a01b03881660009081526018602052604090205460ff165b156126d05760006001851515141561268b57600f54871161267a576001612688565b600f54612688908890611ab2565b90505b6001600160a01b038a166000908152601460205260409020600201546126b2908983612c1d565b91508282116126c25760006126cc565b6126cc838361353e565b9150505b6126e46126dd82846134e5565b8890612bdb565b96506126fa89306126f584866134e5565b612978565b50505b612708878787612978565b50505050505050565b600081848411156127355760405162461bcd60e51b8152600401610b439190613362565b506000612742848661353e565b95945050505050565b6114188282612cf2565b6001600160a01b03821660009081526018602052604090205460ff16151581151514156127ea5760405162461bcd60e51b815260206004820152603f60248201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c7565006064820152608401610b43565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03821661289e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b43565b6128db816040518060600160405280602281526020016135fb602291396001600160a01b0385166000908152602081905260409020549190612711565b6001600160a01b0383166000908152602081905260409020556002546129019082612bdb565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000818361296b5760405162461bcd60e51b8152600401610b439190613362565b50600061274284866134fd565b6001600160a01b03831661299e5760405162461bcd60e51b8152600401610b439061342f565b6001600160a01b0382166129c45760405162461bcd60e51b8152600401610b43906133b7565b612a018160405180606001604052806026815260200161361d602691396001600160a01b0386166000908152602081905260409020549190612711565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a309082611a4c565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c8b565b612a8a81612dc9565b601c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611418573d6000803e3d6000fd5b6000612ad0826002611ab2565b90506000612ade8383612bdb565b905047612aea83612dc9565b6000612af64783612bdb565b9050612b028382612f32565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b600080612b55611883565b6001600160a01b038516600090815260146020526040812060020154919250612b7d866110b4565b9050811580612b8a575080155b15612b9757829350612bd2565b84612ba457819350612bd2565b612bcf612bb186836134e5565b612bbb878661351f565b612bc5848661351f565b61195b91906134e5565b93505b50505092915050565b6000611aab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612711565b600080612c28611883565b90506000851580612c395750606485105b15612c475760009250612ce9565b81612c5387600a6134e5565b1015612ce4576064612c7e612c77612c70600261195b8b8861353e565b8590611ab2565b8290611ab2565b915084600e541115612cd95784600e54612c98919061353e565b821015612ca55781612cb3565b84600e54612cb3919061353e565b915060008211612cc4576000612cd2565b612cd28161195b8885611af4565b9350612cde565b600093505b50612ce9565b600092505b50509392505050565b6001600160a01b038216612d485760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b43565b600254612d559082611a4c565b6002556001600160a01b038216600090815260208190526040902054612d7b9082611a4c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161293e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dfe57612dfe6135c1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612e5257600080fd5b505afa158015612e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8a919061302e565b81600181518110612e9d57612e9d6135c1565b6001600160a01b039283166020918202929092010152600854612ec39130911684611b73565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790612efc908590600090869030904290600401613474565b600060405180830381600087803b158015612f1657600080fd5b505af1158015612f2a573d6000803e3d6000fd5b505050505050565b600854612f4a9030906001600160a01b031684611b73565b600854601b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612fb557600080fd5b505af1158015612fc9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fee91906132db565b5050505050565b80516001600160701b038116811461300c57600080fd5b919050565b60006020828403121561302357600080fd5b8135611aab816135d7565b60006020828403121561304057600080fd5b8151611aab816135d7565b6000806040838503121561305e57600080fd5b8235613069816135d7565b91506020830135613079816135d7565b809150509250929050565b60008060006060848603121561309957600080fd5b83356130a4816135d7565b925060208401356130b4816135d7565b929592945050506040919091013590565b600080604083850312156130d857600080fd5b82356130e3816135d7565b91506020830135613079816135ec565b6000806040838503121561310657600080fd5b8235613111816135d7565b946020939093013593505050565b60008060006040848603121561313457600080fd5b833567ffffffffffffffff8082111561314c57600080fd5b818601915086601f83011261316057600080fd5b81358181111561316f57600080fd5b8760208260051b850101111561318457600080fd5b6020928301955093505084013561319a816135ec565b809150509250925092565b6000602082840312156131b757600080fd5b8135611aab816135ec565b6000602082840312156131d457600080fd5b8151611aab816135ec565b6000806000606084860312156131f457600080fd5b6131fd84612ff5565b925061320b60208501612ff5565b9150604084015163ffffffff8116811461319a57600080fd5b60006020828403121561323657600080fd5b5035919050565b60006020828403121561324f57600080fd5b5051919050565b60008060006060848603121561326b57600080fd5b83359250602084013561327d816135ec565b9150604084013561319a816135ec565b600080604083850312156132a057600080fd5b50508035926020909101359150565b6000806000606084860312156132c457600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156132f057600080fd5b8351925060208401519150604084015190509250925092565b6040808252810183905260008460608301825b8681101561334c57823561332f816135d7565b6001600160a01b031682526020928301929091019060010161331c565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b8181101561338f57858101830151858201604001528201613373565b818111156133a1576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134c45784516001600160a01b03168352938301939183019160010161349f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156134f8576134f86135ab565b500190565b60008261351a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613539576135396135ab565b500290565b600082821015613550576135506135ab565b500390565b600181811c9082168061356957607f821691505b6020821081141561358a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156135a4576135a46135ab565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461188057600080fd5b801515811461188057600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bba6b4e2f3cb466e4c5dffd1708790c9d55be0a6f22b6025630981790fd49a9464736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064000000000000000000000000fbbcf047e0cec76d43f3317a65e6724d5ebaa3550000000000000000000000008507fb4cf9defca5d997a8d83b301546e9e8229a0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : liqFee (uint256): 5
Arg [1] : marketFee (uint256): 5
Arg [2] : supply (uint256): 1000000000
Arg [3] : maxBuyPercent (uint256): 100
Arg [4] : maxSellPercent (uint256): 100
Arg [5] : maxWalletPercent (uint256): 100
Arg [6] : marketingWallet (address): 0xFbBcf047e0Cec76D43f3317A65E6724D5eBAA355
Arg [7] : liqudityWallet (address): 0x8507fb4cf9DEfCA5d997A8d83B301546E9E8229a
Arg [8] : uniswapV2RouterAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [6] : 000000000000000000000000fbbcf047e0cec76d43f3317a65e6724d5ebaa355
Arg [7] : 0000000000000000000000008507fb4cf9defca5d997a8d83b301546e9e8229a
Arg [8] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
32287:17286:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38297:117;;;;;;;;;;;;;:::i;:::-;;32889:26;;;;;;;;;;;;;;;;;;;17703:25:1;;;17691:2;17676:18;32889:26:0;;;;;;;;33007:39;;;;;;;;;;;;;;;;23509:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25674:169::-;;;;;;;;;;-1:-1:-1;25674:169:0;;;;;:::i;:::-;;:::i;:::-;;;8702:14:1;;8695:22;8677:41;;8665:2;8650:18;25674:169:0;8537:187:1;32825:57:0;;;;;;;;;;;;;;;;32367:41;;;;;;;;;;-1:-1:-1;32367:41:0;;;;-1:-1:-1;;;;;32367:41:0;;;;;;-1:-1:-1;;;;;6114:32:1;;;6096:51;;6084:2;6069:18;32367:41:0;5950:203:1;24627:108:0;;;;;;;;;;-1:-1:-1;24715:12:0;;24627:108;;32501:34;;;;;;;;;;-1:-1:-1;32501:34:0;;;;-1:-1:-1;;;32501:34:0;;;;;;33177:47;;;;;;;;;;-1:-1:-1;33177:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;33231:42;;;;;;;;;;-1:-1:-1;33231:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26325:355;;;;;;;;;;-1:-1:-1;26325:355:0;;;;;:::i;:::-;;:::i;33478:32::-;;;;;;;;;;-1:-1:-1;33478:32:0;;;;-1:-1:-1;;;;;33478:32:0;;;24470:92;;;;;;;;;;-1:-1:-1;24470:92:0;;24553:1;19947:36:1;;19935:2;19920:18;24470:92:0;19805:184:1;37913:97:0;;;;;;;;;;-1:-1:-1;37913:97:0;;;;;:::i;:::-;;:::i;32581:40::-;;;;;;;;;;-1:-1:-1;32581:40:0;;;;-1:-1:-1;;;32581:40:0;;;;;;27089:218;;;;;;;;;;-1:-1:-1;27089:218:0;;;;;:::i;:::-;;:::i;38885:134::-;;;;;;;;;;-1:-1:-1;38885:134:0;;;;;:::i;:::-;;:::i;33443:28::-;;;;;;;;;;-1:-1:-1;33443:28:0;;;;-1:-1:-1;;;;;33443:28:0;;;38748:125;;;;;;;;;;-1:-1:-1;38748:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;38837:28:0;38813:4;38837:28;;;:19;:28;;;;;;;;;38748:125;37590:311;;;;;;;;;;-1:-1:-1;37590:311:0;;;;;:::i;:::-;;:::i;32962:38::-;;;;;;;;;;;;;;;;36974:116;;;;;;;;;;-1:-1:-1;36974:116:0;;;;;:::i;:::-;;:::i;35963:499::-;;;;;;;;;;-1:-1:-1;35963:499:0;;;;;:::i;:::-;;:::i;32791:27::-;;;;;;;;;;;;;;;;24798:127;;;;;;;;;;-1:-1:-1;24798:127:0;;;;;:::i;:::-;;:::i;13228:182::-;;;;;;;;;;;;;:::i;35426:251::-;;;;;;;;;;-1:-1:-1;35426:251:0;;;;;:::i;:::-;;:::i;35317:99::-;;;;;;;;;;-1:-1:-1;35317:99:0;;;;;:::i;:::-;;:::i;32445:21::-;;;;;;;;;;-1:-1:-1;32445:21:0;;;;-1:-1:-1;;;32445:21:0;;;;;;14288:225;;;;;;;;;;;;;:::i;12586:79::-;;;;;;;;;;-1:-1:-1;12651:6:0;;-1:-1:-1;;;;;12651:6:0;12586:79;;39031:207;;;;;;;;;;-1:-1:-1;39031:207:0;;;;;:::i;:::-;;:::i;37423:149::-;;;;;;;;;;-1:-1:-1;37423:149:0;;;;;:::i;:::-;;:::i;23728:104::-;;;;;;;;;;;;;:::i;32757:27::-;;;;;;;;;;;;;;;;38022:263;;;;;;;;;;-1:-1:-1;38022:263:0;;;;;:::i;:::-;;:::i;32542:32::-;;;;;;;;;;-1:-1:-1;32542:32:0;;;;-1:-1:-1;;;32542:32:0;;;;;;27810:269;;;;;;;;;;-1:-1:-1;27810:269:0;;;;;:::i;:::-;;:::i;25138:175::-;;;;;;;;;;-1:-1:-1;25138:175:0;;;;;:::i;:::-;;:::i;33340:58::-;;;;;;;;;;-1:-1:-1;33340:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13821:89;;;;;;;;;;-1:-1:-1;13893:9:0;;13821:89;;35687:265;;;;;;;;;;-1:-1:-1;35687:265:0;;;;;:::i;:::-;;:::i;33089:25::-;;;;;;;;;;;;;;;;36470:184;;;;;;;;;;-1:-1:-1;36470:184:0;;;;;:::i;:::-;;:::i;36662:304::-;;;;;;;;;;-1:-1:-1;36662:304:0;;;;;:::i;:::-;;:::i;33517:33::-;;;;;;;;;;-1:-1:-1;33517:33:0;;;;-1:-1:-1;;;;;33517:33:0;;;33126:44;;;;;;;;;;-1:-1:-1;33126:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19580:25:1;;;19636:2;19621:18;;19614:34;;;;19664:18;;;19657:34;;;;19722:2;19707:18;;19700:34;19778:14;19771:22;19765:3;19750:19;;19743:51;19567:3;19552:19;33126:44:0;19327:473:1;32634:33:0;;;;;;;;;;;;;;;;13986:226;;;;;;;;;;-1:-1:-1;13986:226:0;;;;;:::i;:::-;;:::i;25376:151::-;;;;;;;;;;-1:-1:-1;25376:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;25492:18:0;;;25465:7;25492:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;25376:151;33405:25;;;;;;;;;;-1:-1:-1;33405:25:0;;;;;:::i;:::-;;:::i;32674:75::-;;;;;;;;;;;;;;;;33053:29;;;;;;;;;;;;;;;;37102:309;;;;;;;;;;;;;:::i;44057:649::-;;;;;;;;;;;;;:::i;13565:244::-;;;;;;;;;;-1:-1:-1;13565:244:0;;;;;:::i;:::-;;:::i;32473:21::-;;;;;;;;;;-1:-1:-1;32473:21:0;;;;-1:-1:-1;;;32473:21:0;;;;;;38297:117;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;;;;;;;;;38343:9:::1;:16:::0;;-1:-1:-1;;;;38343:16:0::1;-1:-1:-1::0;;;38343:16:0::1;::::0;;38383:23:::1;:15;38403:2;38383:19;:23::i;:::-;38370:10;:36:::0;38297:117::o;23509:100::-;23563:13;23596:5;23589:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23509:100;:::o;25674:169::-;25757:4;25774:39;3089:10;25797:7;25806:6;25774:8;:39::i;:::-;-1:-1:-1;25831:4:0;25674:169;;;;;:::o;26325:355::-;26465:4;26482:36;26492:6;26500:9;26511:6;26482:9;:36::i;:::-;26529:121;26538:6;3089:10;26560:89;26598:6;26560:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26560:19:0;;;;;;:11;:19;;;;;;;;3089:10;26560:33;;;;;;;;;;:37;:89::i;:::-;26529:8;:121::i;:::-;-1:-1:-1;26668:4:0;26325:355;;;;;:::o;37913:97::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;37982:12:::1;:20:::0;37913:97::o;27089:218::-;3089:10;27177:4;27226:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;27226:34:0;;;;;;;;;;27177:4;;27194:83;;27217:7;;27226:50;;27265:10;27226:38;:50::i;38885:134::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38974:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:37;;-1:-1:-1;;38974:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38885:134::o;37590:311::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;37688:12:::1;:32:::0;;;37731:12:::1;:32:::0;;;37786:30:::1;37703:17:::0;37746;37786:16:::1;:30::i;:::-;37774:9;:42:::0;;;37853:12:::1;::::0;37867::::1;::::0;37842:49:::1;::::0;;19205:25:1;;;19261:2;19246:18;;19239:34;;;;19289:18;;19282:34;;;;37842:49:0::1;::::0;19193:2:1;19178:18;37842:49:0::1;;;;;;;37590:311:::0;;:::o;36974:116::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;37055:18:::1;:27:::0;;-1:-1:-1;;;;;;37055:27:0::1;-1:-1:-1::0;;;;;37055:27:0;;;::::1;::::0;;;::::1;::::0;;36974:116::o;35963:499::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;36072:15:::1;::::0;-1:-1:-1;;;;;36050:38:0;;::::1;36072:15:::0;::::1;36050:38;;36042:93;;;::::0;-1:-1:-1;;;36042:93:0;;11754:2:1;36042:93:0::1;::::0;::::1;11736:21:1::0;11793:2;11773:18;;;11766:30;11832:34;11812:18;;;11805:62;-1:-1:-1;;;11883:18:1;;;11876:40;11933:19;;36042:93:0::1;11552:406:1::0;36042:93:0::1;36193:15;::::0;36151:59:::1;::::0;-1:-1:-1;;;;;36193:15:0;;::::1;::::0;36151:59;::::1;::::0;::::1;::::0;36193:15:::1;::::0;36151:59:::1;36221:15;:48:::0;;-1:-1:-1;;;;;;36221:48:0::1;-1:-1:-1::0;;;;;36221:48:0;::::1;::::0;;::::1;::::0;;;36323:25:::1;::::0;;-1:-1:-1;;;36323:25:0;;;;-1:-1:-1;;36221:48:0;36323:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;36221:48;36323:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36305:69:0::1;;36383:4;36390:15;;;;;;;;;-1:-1:-1::0;;;;;36390:15:0::1;-1:-1:-1::0;;;;;36390:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36305:108;::::0;-1:-1:-1;;;;;;36305:108:0::1;::::0;;;;;;-1:-1:-1;;;;;6388:15:1;;;36305:108:0::1;::::0;::::1;6370:34:1::0;6440:15;;6420:18;;;6413:43;6305:18;;36305:108:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36424:13;:30:::0;;-1:-1:-1;;;;;;36424:30:0::1;-1:-1:-1::0;;;;;36424:30:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;35963:499:0:o;24798:127::-;-1:-1:-1;;;;;24899:18:0;24872:7;24899:18;;;;;;;;;;;;24798:127::o;13228:182::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;13310:6:::1;::::0;13293:14:::1;:23:::0;;-1:-1:-1;;;;;;13293:23:0::1;-1:-1:-1::0;;;;;13310:6:0;;::::1;13293:23:::0;;::::1;::::0;;13332:40:::1;::::0;13310:6:::1;::::0;;-1:-1:-1;;;;;;;;;;;13332:40:0;13310:6;;13332:40:::1;13383:6;:19:::0;;-1:-1:-1;;;;;;13383:19:0::1;::::0;;13228:182::o;35426:251::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;35554:16:::1;:6:::0;35564:5:::1;35554:16;:::i;:::-;35528:23;:42:::0;35607:17:::1;:7:::0;35618:5:::1;35607:17;:::i;:::-;35580:24;:44:::0;35651:19:::1;:9:::0;35664:5:::1;35651:19;:::i;:::-;35634:14;:36:::0;-1:-1:-1;;;35426:251:0:o;35317:99::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;35386:9:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;35386:23:0::1;-1:-1:-1::0;;;;35386:23:0;;::::1;::::0;;;::::1;::::0;;35317:99::o;14288:225::-;14343:14;;-1:-1:-1;;;;;14343:14:0;14361:10;14343:28;14335:76;;;;-1:-1:-1;;;14335:76:0;;16995:2:1;14335:76:0;;;16977:21:1;17034:2;17014:18;;;17007:30;17073:34;17053:18;;;17046:62;-1:-1:-1;;;17124:18:1;;;17117:33;17167:19;;14335:76:0;16793:399:1;14335:76:0;14456:14;;14448:6;;14427:44;;-1:-1:-1;;;;;14456:14:0;;;;14448:6;;;;-1:-1:-1;;;;;;;;;;;14427:44:0;14456:14;;14427:44;14491:14;;14482:6;:23;;-1:-1:-1;;;;;;14482:23:0;-1:-1:-1;;;;;14491:14:0;;;14482:23;;;;;;14288:225::o;39031:207::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;39141:38:::1;::::0;-1:-1:-1;;;39141:38:0;;39173:4:::1;39141:38;::::0;::::1;6096:51:1::0;39123:15:0::1;::::0;-1:-1:-1;;;;;39141:23:0;::::1;::::0;::::1;::::0;6069:18:1;;39141:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39190:40;::::0;-1:-1:-1;;;39190:40:0;;-1:-1:-1;;;;;7039:32:1;;;39190:40:0::1;::::0;::::1;7021:51:1::0;7088:18;;;7081:34;;;39123:56:0;;-1:-1:-1;39190:22:0;;::::1;::::0;::::1;::::0;6994:18:1;;39190:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39112:126;39031:207:::0;;:::o;37423:149::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;37512:52:::1;37536:7:::0;37545:18:::1;:6:::0;37555:7:::1;37545:18;:::i;:::-;37512:23;:52::i;:::-;37423:149:::0;;:::o;23728:104::-;23784:13;23817:7;23810:14;;;;;:::i;38022:263::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;38129:13:::1;::::0;-1:-1:-1;;;;;38121:21:0;;::::1;38129:13:::0;::::1;38121:21;;38113:110;;;::::0;-1:-1:-1;;;38113:110:0;;14085:2:1;38113:110:0::1;::::0;::::1;14067:21:1::0;14124:2;14104:18;;;14097:30;14163:34;14143:18;;;14136:62;14234:34;14214:18;;;14207:62;-1:-1:-1;;;14285:19:1;;;14278:43;14338:19;;38113:110:0::1;13883:480:1::0;38113:110:0::1;38236:41;38265:4;38271:5;38236:28;:41::i;27810:269::-:0;27903:4;27920:129;3089:10;27943:7;27952:96;27991:15;27952:96;;;;;;;;;;;;;;;;;3089:10;27952:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;27952:34:0;;;;;;;;;;;;:38;:96::i;25138:175::-;25224:4;25241:42;3089:10;25265:9;25276:6;25241:9;:42::i;35687:265::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;35831:2:::1;35820:7;:13;;35812:22;;;::::0;::::1;;35844:15;:35:::0;;-1:-1:-1;;;;35889:30:0;-1:-1:-1;;;35844:35:0;::::1;;::::0;;;::::1;-1:-1:-1::0;;;;35889:30:0;;;;;-1:-1:-1;;;35889:30:0;::::1;;::::0;;;::::1;;::::0;;35929:6:::1;:16:::0;35687:265::o;36470:184::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36555:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;36555:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;36612:34;;8677:41:1;;;36612:34:0::1;::::0;8650:18:1;36612:34:0::1;;;;;;;36470:184:::0;;:::o;36662:304::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;36779:9:::1;36775:115;36794:19:::0;;::::1;36775:115;;;36870:8;36835:19;:32;36855:8;;36864:1;36855:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36835:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;36835:32:0;:43;;-1:-1:-1;;36835:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36815:3;::::1;::::0;::::1;:::i;:::-;;;;36775:115;;;;36907:51;36939:8;;36949;36907:51;;;;;;;;:::i;:::-;;;;;;;;36662:304:::0;;;:::o;13986:226::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;14067:6:::1;::::0;;14050:14:::1;:23:::0;;-1:-1:-1;;;;;;14050:23:0;;::::1;-1:-1:-1::0;;;;;14067:6:0;::::1;14050:23;::::0;;;14084:19:::1;::::0;;14126:22:::1;14144:4:::0;14126:15:::1;:22;:::i;:::-;14114:9;:34:::0;14185:6:::1;::::0;14164:40:::1;::::0;14201:1:::1;::::0;-1:-1:-1;;;;;14185:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;14164:40:0;14201:1;;14164:40:::1;13986:226:::0;:::o;33405:25::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33405:25:0;;-1:-1:-1;33405:25:0;:::o;37102:309::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;37167:9:::1;37163:241;37186:8;:15:::0;37182:19;::::1;37163:241;;;37222:14;37239:8;37248:1;37239:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;37239:11:0::1;::::0;-1:-1:-1;37283:17:0::1;37239:11:::0;37283:9:::1;:17::i;:::-;37265:35;;37315:37;37335:6;37344:7;37315:11;:37::i;:::-;-1:-1:-1::0;;;;;;37367:17:0::1;37387:5;37367:17:::0;;;:9:::1;:17;::::0;;;;:25;;-1:-1:-1;;37367:25:0::1;::::0;;37203:3;::::1;::::0;::::1;:::i;:::-;;;;37163:241;;;;37102:309::o:0;44057:649::-;44234:13;;44320:18;;;-1:-1:-1;;;44320:18:0;;;;44105:20;;-1:-1:-1;;;;;44234:13:0;;44105:20;;;;44234:13;;44320:16;;:18;;;;;;;;;;;;;;;44234:13;44320:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;44303:35:0;;;;-1:-1:-1;44303:35:0;;-1:-1:-1;44351:12:0;;;44348:122;;;44427:3;44348:122;44483:8;44480:220;;44522:1;44507:16;;44480:220;;;44569:6;44544:21;:3;44550:15;44544:21;:::i;:::-;44543:32;44540:160;;;44606:35;44634:6;44607:21;:3;44613:15;44607:21;:::i;:::-;44606:27;;:35::i;:::-;44591:50;;44540:160;;;44687:1;44672:16;;44540:160;44127:579;;;44057:649;:::o;13565:244::-;12798:6;;-1:-1:-1;;;;;12798:6:0;3089:10;12798:22;12790:67;;;;-1:-1:-1;;;12790:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13654:22:0;::::1;13646:73;;;::::0;-1:-1:-1;;;13646:73:0;;10588:2:1;13646:73:0::1;::::0;::::1;10570:21:1::0;10627:2;10607:18;;;10600:30;10666:34;10646:18;;;10639:62;-1:-1:-1;;;10717:18:1;;;10710:36;10763:19;;13646:73:0::1;10386:402:1::0;13646:73:0::1;13756:6;::::0;13735:38:::1;::::0;-1:-1:-1;;;;;13735:38:0;;::::1;::::0;13756:6:::1;::::0;-1:-1:-1;;;;;;;;;;;13735:38:0;13756:6:::1;::::0;13735:38:::1;13784:6;:17:::0;;-1:-1:-1;;;;;;13784:17:0::1;-1:-1:-1::0;;;;;13784:17:0;;;::::1;::::0;;;::::1;::::0;;13565:244::o;14802:181::-;14860:7;;14892:5;14896:1;14892;:5;:::i;:::-;14880:17;;14921:1;14916;:6;;14908:46;;;;-1:-1:-1;;;14908:46:0;;11398:2:1;14908:46:0;;;11380:21:1;11437:2;11417:18;;;11410:30;11476:29;11456:18;;;11449:57;11523:18;;14908:46:0;11196:351:1;14908:46:0;14974:1;14802:181;-1:-1:-1;;;14802:181:0:o;17103:132::-;17161:7;17188:39;17192:1;17195;17188:39;;;;;;;;;;;;;;;;;:3;:39::i;16156:471::-;16214:7;16459:6;16455:47;;-1:-1:-1;16489:1:0;16482:8;;16455:47;16514:9;16526:5;16530:1;16526;:5;:::i;:::-;16514:17;-1:-1:-1;16559:1:0;16550:5;16554:1;16514:17;16550:5;:::i;:::-;:10;16542:56;;;;-1:-1:-1;;;16542:56:0;;13322:2:1;16542:56:0;;;13304:21:1;13361:2;13341:18;;;13334:30;13400:34;13380:18;;;13373:62;-1:-1:-1;;;13451:18:1;;;13444:31;13492:19;;16542:56:0;13120:397:1;31146:380:0;-1:-1:-1;;;;;31282:19:0;;31274:68;;;;-1:-1:-1;;;31274:68:0;;16158:2:1;31274:68:0;;;16140:21:1;16197:2;16177:18;;;16170:30;16236:34;16216:18;;;16209:62;-1:-1:-1;;;16287:18:1;;;16280:34;16331:19;;31274:68:0;15956:400:1;31274:68:0;-1:-1:-1;;;;;31361:21:0;;31353:68;;;;-1:-1:-1;;;31353:68:0;;10995:2:1;31353:68:0;;;10977:21:1;11034:2;11014:18;;;11007:30;11073:34;11053:18;;;11046:62;-1:-1:-1;;;11124:18:1;;;11117:32;11166:19;;31353:68:0;10793:398:1;31353:68:0;-1:-1:-1;;;;;31434:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;31486:32;;17703:25:1;;;31486:32:0;;17676:18:1;31486:32:0;;;;;;;;31146:380;;;:::o;39250:4795::-;-1:-1:-1;;;;;39348:18:0;;39340:68;;;;-1:-1:-1;;;39340:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39427:16:0;;39419:64;;;;-1:-1:-1;;;39419:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39503:18:0;;;;;;:14;:18;;;;;;;;39502:19;:44;;;;-1:-1:-1;;;;;;39526:20:0;;;;;;:14;:20;;;;;;;;39525:21;39502:44;39494:105;;;;-1:-1:-1;;;39494:105:0;;10171:2:1;39494:105:0;;;10153:21:1;10210:2;10190:18;;;10183:30;10249:34;10229:18;;;10222:62;-1:-1:-1;;;10300:18:1;;;10293:46;10356:19;;39494:105:0;9969:412:1;39494:105:0;39623:11;39620:92;;39651:28;39667:4;39673:2;39677:1;39651:15;:28::i;:::-;39250:4795;;;:::o;39620:92::-;39726:28;39757:24;39775:4;39757:9;:24::i;:::-;39726:55;;39794:12;39833:18;;39809:20;:42;;39794:57;;39862:12;39891:7;:33;;;;-1:-1:-1;39916:8:0;;-1:-1:-1;;;39916:8:0;;;;39915:9;39891:33;:82;;;;-1:-1:-1;;;;;;39942:31:0;;;;;;:25;:31;;;;;;;;39941:32;39891:82;:114;;;;-1:-1:-1;12651:6:0;;-1:-1:-1;;;;;39990:15:0;;;12651:6;;39990:15;;39891:114;:144;;;;-1:-1:-1;12651:6:0;;-1:-1:-1;;;;;40022:13:0;;;12651:6;;40022:13;;39891:144;39887:705;;;40062:8;:15;;-1:-1:-1;;;;40062:15:0;-1:-1:-1;;;40062:15:0;;;40175:9;;40157:12;;40062:15;;40132:53;;:38;;:20;;:24;:38::i;:53::-;40106:79;;40200:45;40229:15;40200:28;:45::i;:::-;40304:18;;40265:58;;;17913:25:1;;;-1:-1:-1;;;;;40304:18:0;;;17969:2:1;17954:18;;17947:60;40265:58:0;;17886:18:1;40265:58:0;;;;;;;40352:18;40373:53;40416:9;;40373:38;40398:12;;40373:20;:24;;:38;;;;:::i;:53::-;40352:74;;40441:26;40456:10;40441:14;:26::i;:::-;40487:31;;17703:25:1;;;40487:31:0;;17691:2:1;17676:18;40487:31:0;;;;;;;-1:-1:-1;;40535:8:0;:16;;-1:-1:-1;;;;40535:16:0;;;-1:-1:-1;40535:16:0;39887:705;40622:8;;-1:-1:-1;;;;;40731:25:0;;40606:12;40731:25;;;:19;:25;;;;;;40622:8;-1:-1:-1;;;40622:8:0;;;;;40621:9;;40731:25;;:52;;-1:-1:-1;;;;;;40760:23:0;;;;;;:19;:23;;;;;;;;40731:52;40728:99;;;-1:-1:-1;40810:5:0;40728:99;40842:7;40839:3153;;;-1:-1:-1;;;;;40869:31:0;;;;;;:25;:31;;;;;;;;40866:2271;;;40924:9;;-1:-1:-1;;;40924:9:0;;;;40916:46;;;;-1:-1:-1;;;40916:46:0;;15805:2:1;40916:46:0;;;15787:21:1;15844:2;15824:18;;;15817:30;15883:26;15863:18;;;15856:54;15927:18;;40916:46:0;15603:348:1;40916:46:0;41013:23;;41003:6;:33;;40977:135;;;;-1:-1:-1;;;40977:135:0;;12165:2:1;40977:135:0;;;12147:21:1;12204:2;12184:18;;;12177:30;12243:34;12223:18;;;12216:62;-1:-1:-1;;;12294:18:1;;;12287:38;12342:19;;40977:135:0;11963:404:1;40977:135:0;41193:14;;41183:6;41167:13;41177:2;41167:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;41141:138;;;;-1:-1:-1;;;41141:138:0;;12574:2:1;41141:138:0;;;12556:21:1;12613:2;12593:18;;;12586:30;12652:34;12632:18;;;12625:62;-1:-1:-1;;;12703:18:1;;;12696:34;12747:19;;41141:138:0;12372:400:1;41141:138:0;41343:10;;41324:15;:29;;;;;;41372:26;;-1:-1:-1;;;;;;41385:13:0;;;;;;:9;:13;;;;;;;;41384:14;41372:26;41368:62;;;41413:8;:17;;;;;;;-1:-1:-1;41413:17:0;;;;;;;;-1:-1:-1;;;;;;41413:17:0;-1:-1:-1;;;;;41413:17:0;;;;;41368:62;41462:9;;-1:-1:-1;;;41462:9:0;;;;:27;;;;-1:-1:-1;;;;;;41476:13:0;;;;;;:9;:13;;;;;;;;41475:14;41462:27;41459:62;;;41504:8;:17;;;;;;;-1:-1:-1;41504:17:0;;;;;;;;-1:-1:-1;;;;;;41504:17:0;-1:-1:-1;;;;;41504:17:0;;;;;41459:62;41553:13;;-1:-1:-1;;;41553:13:0;;;;:21;;41570:4;41553:21;41550:119;;;41621:32;41642:2;41646:6;41621:20;:32::i;:::-;-1:-1:-1;;;;;41594:12:0;;;;;;:8;:12;;;;;:24;;:59;41550:119;41702:18;;;17913:25:1;;;-1:-1:-1;;;;;17974:32:1;;17969:2;17954:18;;17947:60;41702:18:0;;17886::1;41702::0;;;;;;;40901:849;40866:2271;;;-1:-1:-1;;;;;41758:29:0;;;;;;:25;:29;;;;;;;;41755:1382;;;-1:-1:-1;;;;;41816:15:0;;;;;;:9;:15;;;;;;;;41815:16;41807:43;;;;-1:-1:-1;;;41807:43:0;;12979:2:1;41807:43:0;;;12961:21:1;13018:2;12998:18;;;12991:30;-1:-1:-1;;;13037:18:1;;;13030:44;13091:18;;41807:43:0;12777:338:1;41807:43:0;41887:24;;41877:6;:34;;41869:105;;;;-1:-1:-1;;;41869:105:0;;15378:2:1;41869:105:0;;;15360:21:1;15417:2;15397:18;;;15390:30;15456:34;15436:18;;;15429:62;15527:28;15507:18;;;15500:56;15573:19;;41869:105:0;15176:422:1;41869:105:0;41998:21;;-1:-1:-1;;;41998:21:0;;;;:29;;42023:4;41998:29;:74;;;;-1:-1:-1;;;;;;42031:14:0;;;;;;:8;:14;;;;;:32;;;;;:41;41998:74;41995:485;;;42096:11;42110:15;42120:4;42110:9;:15::i;:::-;42096:29;;42157:1;42151:3;:7;42148:313;;;42204:3;42194:6;:13;;42186:22;;;;;;-1:-1:-1;;;;;42235:14:0;;;;;;:8;:14;;;;;:25;;:35;;42264:6;;42235:14;:35;;42264:6;;42235:35;:::i;:::-;;;;-1:-1:-1;42329:10:0;;-1:-1:-1;42329:3:0;42337:1;42329:7;:10::i;:::-;-1:-1:-1;;;;;42300:14:0;;;;;;:8;:14;;;;;:25;;;:39;42297:141;;-1:-1:-1;;;;;42371:14:0;;;;;;:8;:14;;;;;:32;;:39;;-1:-1:-1;;42371:39:0;42406:4;42371:39;;;42297:141;42073:407;41995:485;42519:27;42539:6;42519:15;42529:4;42519:9;:15::i;:::-;:19;;:27::i;:::-;42516:109;;-1:-1:-1;;;;;42575:14:0;;42604:1;42575:14;;;:8;:14;;;;;:26;;:30;42516:109;42644:21;;;17913:25:1;;;-1:-1:-1;;;;;17974:32:1;;17969:2;17954:18;;17947:60;42644:21:0;;17886:18:1;42644:21:0;;;;;;;41755:1382;;;-1:-1:-1;;;;;42705:25:0;;;;;;:19;:25;;;;;;;;42704:26;:54;;;;-1:-1:-1;;;;;;42735:23:0;;;;;;:19;:23;;;;;;;;42734:24;42704:54;42700:437;;;42795:13;;-1:-1:-1;;;42795:13:0;;;;:21;;42812:4;42795:21;42792:119;;;42863:32;42884:2;42888:6;42863:20;:32::i;:::-;-1:-1:-1;;;;;42836:12:0;;;;;;:8;:12;;;;;:24;;:59;42792:119;42946:27;42966:6;42946:15;42956:4;42946:9;:15::i;:27::-;42943:109;;-1:-1:-1;;;;;43002:14:0;;43031:1;43002:14;;;:8;:14;;;;;:26;;:30;42943:109;43089:32;;;-1:-1:-1;;;;;6725:15:1;;;6707:34;;6777:15;;6772:2;6757:18;;6750:43;6809:18;;;6802:34;;;43089:32:0;;6657:2:1;6642:18;43089:32:0;;;;;;;42700:437;43162:12;43177:30;43203:3;43177:21;43188:9;;43177:6;:10;;:21;;;;:::i;:30::-;-1:-1:-1;;;;;43222:29:0;;;;;;:25;:29;;;;;;43162:45;;-1:-1:-1;43222:29:0;;43219:92;;;43276:22;43294:3;43276:13;:6;43287:1;43276:10;:13::i;:22::-;43268:30;;;;:::i;:::-;;;43219:92;43371:15;;43333:23;;-1:-1:-1;;;43371:15:0;;;;:23;;43390:4;43371:23;:53;;;;-1:-1:-1;;;;;;43399:25:0;;;;;;:19;:25;;;;;;;;43398:26;43371:53;:86;;;;-1:-1:-1;;;;;;43428:29:0;;;;;;:25;:29;;;;;;;;43371:86;43368:470;;;43474:9;43513:4;43502:15;;;;43499:151;;;43565:17;;43542:20;:40;:90;;43631:1;43542:90;;;43610:17;;43585:43;;:20;;:24;:43::i;:::-;43538:94;;43499:151;-1:-1:-1;;;;;43702:14:0;;;;;;:8;:14;;;;;:26;;;43683:57;;43730:6;43738:1;43683:18;:57::i;:::-;43665:75;;43792:4;43774:15;:22;:51;;43824:1;43774:51;;;43799:22;43817:4;43799:15;:22;:::i;:::-;43756:69;;43458:380;43368:470;43869:34;43880:22;43887:15;43880:4;:22;:::i;:::-;43869:6;;:10;:34::i;:::-;43860:43;-1:-1:-1;43920:60:0;43936:4;43950;43957:22;43964:15;43957:4;:22;:::i;:::-;43920:15;:60::i;:::-;40851:3141;;40839:3153;44004:33;44020:4;44026:2;44030:6;44004:15;:33::i;:::-;39329:4716;;;;39250:4795;;;:::o;15705:192::-;15791:7;15827:12;15819:6;;;;15811:29;;;;-1:-1:-1;;;15811:29:0;;;;;;;;:::i;:::-;-1:-1:-1;15851:9:0;15863:5;15867:1;15863;:5;:::i;:::-;15851:17;15705:192;-1:-1:-1;;;;;15705:192:0:o;30580:130::-;30668:34;30686:7;30695:6;30668:17;:34::i;38426:313::-;-1:-1:-1;;;;;38517:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;38509:116;;;;-1:-1:-1;;;38509:116:0;;16563:2:1;38509:116:0;;;16545:21:1;16602:2;16582:18;;;16575:30;16641:34;16621:18;;;16614:62;16712:33;16692:18;;;16685:61;16763:19;;38509:116:0;16361:427:1;38509:116:0;-1:-1:-1;;;;;38636:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;38636:39:0;;;;;;;;;;38691:40;;38636:39;;:31;38691:40;;;38426:313;;:::o;30150:418::-;-1:-1:-1;;;;;30234:21:0;;30226:67;;;;-1:-1:-1;;;30226:67:0;;14570:2:1;30226:67:0;;;14552:21:1;14609:2;14589:18;;;14582:30;14648:34;14628:18;;;14621:62;-1:-1:-1;;;14699:18:1;;;14692:31;14740:19;;30226:67:0;14368:397:1;30226:67:0;30389:68;30412:6;30389:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30389:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;30368:18:0;;:9;:18;;;;;;;;;;:89;30483:12;;:24;;30500:6;30483:16;:24::i;:::-;30468:12;:39;30523:37;;17703:25:1;;;30549:1:0;;-1:-1:-1;;;;;30523:37:0;;;;;17691:2:1;17676:18;30523:37:0;;;;;;;;30150:418;;:::o;17731:278::-;17817:7;17852:12;17845:5;17837:28;;;;-1:-1:-1;;;17837:28:0;;;;;;;;:::i;:::-;-1:-1:-1;17876:9:0;17888:5;17892:1;17888;:5;:::i;28569:571::-;-1:-1:-1;;;;;28709:20:0;;28701:70;;;;-1:-1:-1;;;28701:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28790:23:0;;28782:71;;;;-1:-1:-1;;;28782:71:0;;;;;;;:::i;:::-;28944;28966:6;28944:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28944:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;28924:17:0;;;:9;:17;;;;;;;;;;;:91;;;;29049:20;;;;;;;:32;;29074:6;29049:24;:32::i;:::-;-1:-1:-1;;;;;29026:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;29097:35;17703:25:1;;;29026:20:0;;29097:35;;;;;;17676:18:1;29097:35:0;17557:177:1;46164:178:0;46238:24;46255:6;46238:16;:24::i;:::-;46281:18;;46273:59;;-1:-1:-1;;;;;46281:18:0;;;;46310:21;46273:59;;;;;46281:18;46273:59;46281:18;46273:59;46310:21;46281:18;46273:59;;;;;;;;;;;;;;;;;;;46350:922;46459:12;46474:13;:6;46485:1;46474:10;:13::i;:::-;46459:28;-1:-1:-1;46498:17:0;46518:16;:6;46459:28;46518:10;:16::i;:::-;46498:36;-1:-1:-1;46837:21:0;46903:22;46920:4;46903:16;:22::i;:::-;47056:18;47077:41;:21;47103:14;47077:25;:41::i;:::-;47056:62;;47168:35;47181:9;47192:10;47168:12;:35::i;:::-;47221:43;;;19205:25:1;;;19261:2;19246:18;;19239:34;;;19289:18;;;19282:34;;;47221:43:0;;19193:2:1;19178:18;47221:43:0;;;;;;;46398:874;;;;46350:922;:::o;45616:540::-;45705:13;45730:20;45753:17;:15;:17::i;:::-;-1:-1:-1;;;;;45794:15:0;;45781:10;45794:15;;;:8;:15;;;;;:27;;;45730:40;;-1:-1:-1;45855:16:0;45803:5;45855:9;:16::i;:::-;45832:39;-1:-1:-1;45885:7:0;;;:28;;-1:-1:-1;45896:17:0;;45885:28;45882:267;;;45937:12;45929:20;;45882:267;;;45969:17;45966:183;;46010:2;46002:10;;45966:183;;;46051:86;46109:27;46124:12;46109;:27;:::i;:::-;46075;46090:12;46075;:27;:::i;:::-;46053:17;46058:12;46053:2;:17;:::i;:::-;46052:51;;;;:::i;46051:86::-;46043:94;;45966:183;45719:437;;;45616:540;;;;:::o;15266:136::-;15324:7;15351:43;15355:1;15358;15351:43;;;;;;;;;;;;;;;;;:3;:43::i;44714:890::-;44837:17;44866:20;44889:17;:15;:17::i;:::-;44866:40;-1:-1:-1;44917:21:0;44952:16;;;:39;;;44988:3;44972:13;:19;44952:39;44949:648;;;45019:1;45007:13;;44949:648;;;45069:12;45050:16;:11;45064:2;45050:16;:::i;:::-;:31;45047:550;;;45109:3;45143:62;45150:53;45167:35;45200:1;45168:26;45183:11;45168:12;:26;:::i;45167:35::-;45150:12;;:16;:53::i;:::-;45143:1;;:5;:62::i;:::-;45127:78;;45232:19;45223:6;;:28;45220:322;;;45313:19;45304:6;;:28;;;;:::i;:::-;45287:13;:45;;:92;;45366:13;45287:92;;;45344:19;45335:6;;:28;;;;:::i;:::-;45271:108;;45427:1;45411:13;:17;:63;;45473:1;45411:63;;;45431:39;45468:1;45431:32;:13;45449;45431:17;:32::i;:39::-;45399:75;;45220:322;;;45525:1;45513:13;;45220:322;45082:471;45047:550;;;45584:1;45572:13;;45047:550;44855:749;;44714:890;;;;;:::o;29427:390::-;-1:-1:-1;;;;;29523:21:0;;29515:65;;;;-1:-1:-1;;;29515:65:0;;17399:2:1;29515:65:0;;;17381:21:1;17438:2;17418:18;;;17411:30;17477:33;17457:18;;;17450:61;17528:18;;29515:65:0;17197:355:1;29515:65:0;29670:12;;:24;;29687:6;29670:16;:24::i;:::-;29655:12;:39;-1:-1:-1;;;;;29726:18:0;;:9;:18;;;;;;;;;;;:30;;29749:6;29726:22;:30::i;:::-;-1:-1:-1;;;;;29705:18:0;;:9;:18;;;;;;;;;;;:51;;;;29772:37;;17703:25:1;;;29705:18:0;;:9;;29772:37;;17676:18:1;29772:37:0;17557:177:1;47280:595:0;47434:16;;;47448:1;47434:16;;;;;;;;47410:21;;47434:16;;;;;;;;;;-1:-1:-1;47434:16:0;47410:40;;47479:4;47461;47466:1;47461:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;47461:23:0;;;:7;;;;;;;;;;:23;;;;47505:15;;:22;;;-1:-1:-1;;;47505:22:0;;;;:15;;;;;:20;;:22;;;;;47461:7;;47505:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47495:4;47500:1;47495:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;47495:32:0;;;:7;;;;;;;;;:32;47572:15;;47540:62;;47557:4;;47572:15;47590:11;47540:8;:62::i;:::-;47641:15;;:224;;-1:-1:-1;;;47641:224:0;;-1:-1:-1;;;;;47641:15:0;;;;:66;;:224;;47722:11;;47641:15;;47792:4;;47819;;47839:15;;47641:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47335:540;47280:595;:::o;47883:536::-;48065:15;;48033:62;;48050:4;;-1:-1:-1;;;;;48065:15:0;48083:11;48033:8;:62::i;:::-;48138:15;;48350:17;;48138:271;;-1:-1:-1;;;48138:271:0;;48210:4;48138:271;;;7467:34:1;7517:18;;;7510:34;;;48138:15:0;7560:18:1;;;7553:34;;;7603:18;;;7596:34;-1:-1:-1;;;;;48350:17:0;;;7646:19:1;;;7639:44;48383:15:0;7699:19:1;;;7692:35;48138:15:0;;;:31;;48177:9;;7401:19:1;;48138:271:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;47883:536;;:::o;14:188:1:-;93:13;;-1:-1:-1;;;;;135:42:1;;125:53;;115:81;;192:1;189;182:12;115:81;14:188;;;:::o;207:247::-;266:6;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;374:9;361:23;393:31;418:5;393:31;:::i;459:251::-;529:6;582:2;570:9;561:7;557:23;553:32;550:52;;;598:1;595;588:12;550:52;630:9;624:16;649:31;674:5;649:31;:::i;975:388::-;1043:6;1051;1104:2;1092:9;1083:7;1079:23;1075:32;1072:52;;;1120:1;1117;1110:12;1072:52;1159:9;1146:23;1178:31;1203:5;1178:31;:::i;:::-;1228:5;-1:-1:-1;1285:2:1;1270:18;;1257:32;1298:33;1257:32;1298:33;:::i;:::-;1350:7;1340:17;;;975:388;;;;;:::o;1368:456::-;1445:6;1453;1461;1514:2;1502:9;1493:7;1489:23;1485:32;1482:52;;;1530:1;1527;1520:12;1482:52;1569:9;1556:23;1588:31;1613:5;1588:31;:::i;:::-;1638:5;-1:-1:-1;1695:2:1;1680:18;;1667:32;1708:33;1667:32;1708:33;:::i;:::-;1368:456;;1760:7;;-1:-1:-1;;;1814:2:1;1799:18;;;;1786:32;;1368:456::o;1829:382::-;1894:6;1902;1955:2;1943:9;1934:7;1930:23;1926:32;1923:52;;;1971:1;1968;1961:12;1923:52;2010:9;1997:23;2029:31;2054:5;2029:31;:::i;:::-;2079:5;-1:-1:-1;2136:2:1;2121:18;;2108:32;2149:30;2108:32;2149:30;:::i;2216:315::-;2284:6;2292;2345:2;2333:9;2324:7;2320:23;2316:32;2313:52;;;2361:1;2358;2351:12;2313:52;2400:9;2387:23;2419:31;2444:5;2419:31;:::i;:::-;2469:5;2521:2;2506:18;;;;2493:32;;-1:-1:-1;;;2216:315:1:o;2536:750::-;2628:6;2636;2644;2697:2;2685:9;2676:7;2672:23;2668:32;2665:52;;;2713:1;2710;2703:12;2665:52;2753:9;2740:23;2782:18;2823:2;2815:6;2812:14;2809:34;;;2839:1;2836;2829:12;2809:34;2877:6;2866:9;2862:22;2852:32;;2922:7;2915:4;2911:2;2907:13;2903:27;2893:55;;2944:1;2941;2934:12;2893:55;2984:2;2971:16;3010:2;3002:6;2999:14;2996:34;;;3026:1;3023;3016:12;2996:34;3081:7;3074:4;3064:6;3061:1;3057:14;3053:2;3049:23;3045:34;3042:47;3039:67;;;3102:1;3099;3092:12;3039:67;3133:4;3125:13;;;;-1:-1:-1;3157:6:1;-1:-1:-1;;3198:20:1;;3185:34;3228:28;3185:34;3228:28;:::i;:::-;3275:5;3265:15;;;2536:750;;;;;:::o;3291:241::-;3347:6;3400:2;3388:9;3379:7;3375:23;3371:32;3368:52;;;3416:1;3413;3406:12;3368:52;3455:9;3442:23;3474:28;3496:5;3474:28;:::i;3537:245::-;3604:6;3657:2;3645:9;3636:7;3632:23;3628:32;3625:52;;;3673:1;3670;3663:12;3625:52;3705:9;3699:16;3724:28;3746:5;3724:28;:::i;3787:450::-;3874:6;3882;3890;3943:2;3931:9;3922:7;3918:23;3914:32;3911:52;;;3959:1;3956;3949:12;3911:52;3982:40;4012:9;3982:40;:::i;:::-;3972:50;;4041:49;4086:2;4075:9;4071:18;4041:49;:::i;:::-;4031:59;;4133:2;4122:9;4118:18;4112:25;4177:10;4170:5;4166:22;4159:5;4156:33;4146:61;;4203:1;4200;4193:12;4242:180;4301:6;4354:2;4342:9;4333:7;4329:23;4325:32;4322:52;;;4370:1;4367;4360:12;4322:52;-1:-1:-1;4393:23:1;;4242:180;-1:-1:-1;4242:180:1:o;4427:184::-;4497:6;4550:2;4538:9;4529:7;4525:23;4521:32;4518:52;;;4566:1;4563;4556:12;4518:52;-1:-1:-1;4589:16:1;;4427:184;-1:-1:-1;4427:184:1:o;4616:444::-;4687:6;4695;4703;4756:2;4744:9;4735:7;4731:23;4727:32;4724:52;;;4772:1;4769;4762:12;4724:52;4808:9;4795:23;4785:33;;4868:2;4857:9;4853:18;4840:32;4881:28;4903:5;4881:28;:::i;:::-;4928:5;-1:-1:-1;4985:2:1;4970:18;;4957:32;4998:30;4957:32;4998:30;:::i;5065:248::-;5133:6;5141;5194:2;5182:9;5173:7;5169:23;5165:32;5162:52;;;5210:1;5207;5200:12;5162:52;-1:-1:-1;;5233:23:1;;;5303:2;5288:18;;;5275:32;;-1:-1:-1;5065:248:1:o;5318:316::-;5395:6;5403;5411;5464:2;5452:9;5443:7;5439:23;5435:32;5432:52;;;5480:1;5477;5470:12;5432:52;-1:-1:-1;;5503:23:1;;;5573:2;5558:18;;5545:32;;-1:-1:-1;5624:2:1;5609:18;;;5596:32;;5318:316;-1:-1:-1;5318:316:1:o;5639:306::-;5727:6;5735;5743;5796:2;5784:9;5775:7;5771:23;5767:32;5764:52;;;5812:1;5809;5802:12;5764:52;5841:9;5835:16;5825:26;;5891:2;5880:9;5876:18;5870:25;5860:35;;5935:2;5924:9;5920:18;5914:25;5904:35;;5639:306;;;;;:::o;7738:794::-;7960:2;7972:21;;;7945:18;;8028:22;;;7912:4;8107:6;8081:2;8066:18;;7912:4;8141:304;8155:6;8152:1;8149:13;8141:304;;;8230:6;8217:20;8250:31;8275:5;8250:31;:::i;:::-;-1:-1:-1;;;;;8306:31:1;8294:44;;8361:4;8420:15;;;;8385:12;;;;8334:1;8170:9;8141:304;;;8145:3;8462;8454:11;;;;8517:6;8510:14;8503:22;8496:4;8485:9;8481:20;8474:52;7738:794;;;;;;:::o;8963:597::-;9075:4;9104:2;9133;9122:9;9115:21;9165:6;9159:13;9208:6;9203:2;9192:9;9188:18;9181:34;9233:1;9243:140;9257:6;9254:1;9251:13;9243:140;;;9352:14;;;9348:23;;9342:30;9318:17;;;9337:2;9314:26;9307:66;9272:10;;9243:140;;;9401:6;9398:1;9395:13;9392:91;;;9471:1;9466:2;9457:6;9446:9;9442:22;9438:31;9431:42;9392:91;-1:-1:-1;9544:2:1;9523:15;-1:-1:-1;;9519:29:1;9504:45;;;;9551:2;9500:54;;8963:597;-1:-1:-1;;;8963:597:1:o;9565:399::-;9767:2;9749:21;;;9806:2;9786:18;;;9779:30;9845:34;9840:2;9825:18;;9818:62;-1:-1:-1;;;9911:2:1;9896:18;;9889:33;9954:3;9939:19;;9565:399::o;13522:356::-;13724:2;13706:21;;;13743:18;;;13736:30;13802:34;13797:2;13782:18;;13775:62;13869:2;13854:18;;13522:356::o;14770:401::-;14972:2;14954:21;;;15011:2;14991:18;;;14984:30;15050:34;15045:2;15030:18;;15023:62;-1:-1:-1;;;15116:2:1;15101:18;;15094:35;15161:3;15146:19;;14770:401::o;18018:980::-;18280:4;18328:3;18317:9;18313:19;18359:6;18348:9;18341:25;18385:2;18423:6;18418:2;18407:9;18403:18;18396:34;18466:3;18461:2;18450:9;18446:18;18439:31;18490:6;18525;18519:13;18556:6;18548;18541:22;18594:3;18583:9;18579:19;18572:26;;18633:2;18625:6;18621:15;18607:29;;18654:1;18664:195;18678:6;18675:1;18672:13;18664:195;;;18743:13;;-1:-1:-1;;;;;18739:39:1;18727:52;;18834:15;;;;18799:12;;;;18775:1;18693:9;18664:195;;;-1:-1:-1;;;;;;;18915:32:1;;;;18910:2;18895:18;;18888:60;-1:-1:-1;;;18979:3:1;18964:19;18957:35;18876:3;18018:980;-1:-1:-1;;;18018:980:1:o;19994:128::-;20034:3;20065:1;20061:6;20058:1;20055:13;20052:39;;;20071:18;;:::i;:::-;-1:-1:-1;20107:9:1;;19994:128::o;20127:217::-;20167:1;20193;20183:132;;20237:10;20232:3;20228:20;20225:1;20218:31;20272:4;20269:1;20262:15;20300:4;20297:1;20290:15;20183:132;-1:-1:-1;20329:9:1;;20127:217::o;20349:168::-;20389:7;20455:1;20451;20447:6;20443:14;20440:1;20437:21;20432:1;20425:9;20418:17;20414:45;20411:71;;;20462:18;;:::i;:::-;-1:-1:-1;20502:9:1;;20349:168::o;20522:125::-;20562:4;20590:1;20587;20584:8;20581:34;;;20595:18;;:::i;:::-;-1:-1:-1;20632:9:1;;20522:125::o;20652:380::-;20731:1;20727:12;;;;20774;;;20795:61;;20849:4;20841:6;20837:17;20827:27;;20795:61;20902:2;20894:6;20891:14;20871:18;20868:38;20865:161;;;20948:10;20943:3;20939:20;20936:1;20929:31;20983:4;20980:1;20973:15;21011:4;21008:1;21001:15;20865:161;;20652:380;;;:::o;21037:135::-;21076:3;-1:-1:-1;;21097:17:1;;21094:43;;;21117:18;;:::i;:::-;-1:-1:-1;21164:1:1;21153:13;;21037:135::o;21177:127::-;21238:10;21233:3;21229:20;21226:1;21219:31;21269:4;21266:1;21259:15;21293:4;21290:1;21283:15;21309:127;21370:10;21365:3;21361:20;21358:1;21351:31;21401:4;21398:1;21391:15;21425:4;21422:1;21415:15;21573:131;-1:-1:-1;;;;;21648:31:1;;21638:42;;21628:70;;21694:1;21691;21684:12;21709:118;21795:5;21788:13;21781:21;21774:5;21771:32;21761:60;;21817:1;21814;21807:12
Swarm Source
ipfs://bba6b4e2f3cb466e4c5dffd1708790c9d55be0a6f22b6025630981790fd49a94
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.