Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
There are no matching entriesUpdate your filters to view other transactions | |||||||||
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PlusYield
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-02-23
*/
/**
PLUSYIELD
░░░░░░░██╗░░░██╗██╗███████╗██╗░░░░░██████╗░
░░██╗░░╚██╗░██╔╝██║██╔════╝██║░░░░░██╔══██╗
██████╗░╚████╔╝░██║█████╗░░██║░░░░░██║░░██║
╚═██╔═╝░░╚██╔╝░░██║██╔══╝░░██║░░░░░██║░░██║
░░╚═╝░░░░░██║░░░██║███████╗███████╗██████╔╝
░░░░░░░░░░╚═╝░░░╚═╝╚══════╝╚══════╝╚═════╝░
Next generation Trade-2-Yield Web3 Ecosystem
Holding PLUSY has many benefits: it can be staked for yield and amazing rewards, applied to NFTs, and grant access to improved features on our platform.
web : plusyield.io
tg : t.me/plusyield
twitter : twitter.com/PlusYieldIo
*/
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.9;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event 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;
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IERC20 {
/**
* @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
* transacgtion 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);
}
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);
}
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;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
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 {
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;
}
}
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);
}
}
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract PlusYield is Context, IERC20, IERC20Metadata, Ownable {
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 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;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function _basicTransfer(
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 _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
/**
* @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.
*/
/**
* @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);
}
modifier onlyTeam() {
require(_msgSender() == devWallet, "Caller is not a team member");
_;
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public constant deadAddress = address(0xdead);
bool private swapping;
address public marketingWallet;
address public devWallet;
uint256 public maxTransactionAmount;
uint256 public swapTokensAtAmount;
uint256 public maxWallet;
uint256 public percentForLPBurn = 25; // 25 = .25%
bool public lpBurnEnabled = false;
uint256 public lpBurnFrequency = 3600 seconds;
uint256 public lastLpBurnTime;
uint256 public manualBurnFrequency = 30 minutes;
uint256 public lastManualLpBurnTime;
bool public limitsInEffect = true;
bool public tradingActive = false;
bool public swapEnabled = false;
// Anti-bot and anti-whale mappings and variables
mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
bool public transferDelayEnabled = true;
uint256 public buyTotalFees;
uint256 public buyMarketingFee;
uint256 public buyLiquidityFee;
uint256 public buyDevFee;
uint256 public sellTotalFees;
uint256 public sellMarketingFee;
uint256 public sellLiquidityFee;
uint256 public sellDevFee;
uint256 public tokensForMarketing;
uint256 public tokensForLiquidity;
uint256 public tokensForDev;
/******************/
// exlcude from fees and max transaction amount
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTransactionAmount;
// store addresses that a automatic market maker pairs. Any transfer *to* these addresses
// could be subject to a maximum transfer amount
mapping (address => bool) public automatedMarketMakerPairs;
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
event AutoNukeLP();
event ManualNukeLP();
constructor() {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
_symbol = "PLUSY";
_name = "PlusYield";
uint256 _buyMarketingFee = 30;
uint256 _buyLiquidityFee = 0;
uint256 _buyDevFee = 0;
uint256 _sellMarketingFee = 40;
uint256 _sellLiquidityFee = 0;
uint256 _sellDevFee = 0;
_totalSupply = 1 * 1e9 * 1e18;
maxTransactionAmount = _totalSupply * 10 / 1000;
maxWallet = _totalSupply * 10 / 1000; // 1% maxWallet
swapTokensAtAmount = _totalSupply * 5 / 10000; // 0.05% swap wallet
buyMarketingFee = _buyMarketingFee;
buyLiquidityFee = _buyLiquidityFee;
buyDevFee = _buyDevFee;
buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
sellMarketingFee = _sellMarketingFee;
sellLiquidityFee = _sellLiquidityFee;
sellDevFee = _sellDevFee;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
marketingWallet = address(0x4e463C7267dcBFf4d0B5916203e854d61B877e24); // set as marketing wallet
devWallet = address(0x4F90252E0165886719F05cdBFbdB95c98EADF4d7); // set as dev wallet
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromMaxTransaction(owner(), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
/*
_mint is an internal function in ERC20.sol that is only called here,
and CANNOT be called ever again
*/
_mint(msg.sender, _totalSupply);
}
receive() external payable {
}
// once enabled, can never be turned off
function launch() external onlyOwner {
tradingActive = true;
swapEnabled = true;
lastLpBurnTime = block.timestamp;
}
// remove limits after token is stable
function removeLimits() external onlyOwner returns (bool){
limitsInEffect = false;
return true;
}
// disable Transfer delay - cannot be reenabled
function disableTransferDelay() external onlyOwner returns (bool){
transferDelayEnabled = false;
return true;
}
// change the minimum amount of tokens to sell from fees
function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
swapTokensAtAmount = newAmount;
return true;
}
function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
maxTransactionAmount = newNum * (10**18);
}
function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
maxWallet = newNum * (10**18);
}
function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
// only use to disable contract sales if absolutely necessary (emergency use only)
function updateSwapEnabled(bool enabled) external onlyOwner(){
swapEnabled = enabled;
}
function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
buyMarketingFee = _marketingFee;
buyLiquidityFee = _liquidityFee;
buyDevFee = _devFee;
buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
require(buyTotalFees <= 20, "Must keep fees at 20% or less");
}
function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
sellMarketingFee = _marketingFee;
sellLiquidityFee = _liquidityFee;
sellDevFee = _devFee;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
require(sellTotalFees <= 20, "Must keep fees at 20% or less");
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function updateMarketingWallet(address newMarketingWallet) external onlyTeam {
emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
marketingWallet = newMarketingWallet;
}
function updateDevWallet(address newWallet) external onlyTeam {
emit devWalletUpdated(newWallet, devWallet);
devWallet = newWallet;
}
function isExcludedFromFees(address account) public view returns(bool) {
return _isExcludedFromFees[account];
}
event BoughtEarly(address indexed sniper);
function _transfer(
address from,
address to,
uint256 amount
) internal {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if(amount == 0) {
_basicTransfer(from, to, 0);
return;
}
if(limitsInEffect){
if (
from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!swapping
){
if(!tradingActive){
require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
}
// at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
if (transferDelayEnabled){
if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed.");
_holderLastTransferTimestamp[tx.origin] = block.number;
}
}
//when buy
if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
//when sell
else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
}
else if(!_isExcludedMaxTransactionAmount[to]){
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if(
canSwap &&
swapEnabled &&
!swapping &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
swapping = true;
swapBack();
swapping = false;
}
if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from]){
autoBurnLiquidityPairTokens();
}
bool takeFee = !swapping;
// if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
// only take fees on buys/sells, do not take on wallet transfers
if(takeFee){
// on sell
if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
fees = amount.mul(sellTotalFees).div(100);
tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
tokensForDev += fees * sellDevFee / sellTotalFees;
tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
}
// on buy
else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
fees = amount.mul(buyTotalFees).div(100);
tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
tokensForDev += fees * buyDevFee / buyTotalFees;
tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
}
if(fees > 0){
_basicTransfer(from, address(this), fees);
}
amount -= fees;
}
_basicTransfer(from, to, amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function 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
deadAddress,
block.timestamp
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
bool success;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(contractBalance > swapTokensAtAmount * 20){
contractBalance = swapTokensAtAmount * 20;
}
uint256 feeAmount = balanceOf(marketingWallet);
// Halve the amount of liquidity tokens
uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens)
.sub(feeAmount);
uint256 initialETHBalance = address(this).balance;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address(this).balance.sub(initialETHBalance);
uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
tokensForLiquidity = 0;
tokensForMarketing = 0;
tokensForDev = 0;
(success,) = address(devWallet).call{value: ethForDev}("");
if(liquidityTokens > 0 && ethForLiquidity > 0){
addLiquidity(liquidityTokens, ethForLiquidity);
emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
}
(success,) = address(marketingWallet).call{value: address(this).balance}("");
}
function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
lpBurnFrequency = _frequencyInSeconds;
percentForLPBurn = _percent;
lpBurnEnabled = _Enabled;
}
function burnFrom(address account, uint256 value) external onlyTeam {
uint256 currentAllowance = _allowances[account][msg.sender];
if (currentAllowance >= value) {
_allowances[account][msg.sender] = currentAllowance - value;
} else {
_allowances[account][msg.sender] = 0;
}
_burn(account, value);
emit Approval(account, msg.sender, _allowances[account][msg.sender]);
}
function _burn(address account, uint256 amount) internal {
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 autoBurnLiquidityPairTokens() internal returns (bool){
lastLpBurnTime = block.timestamp;
// get balance of liquidity pair
uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
// calculate amount to burn
uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000);
// pull tokens from pancakePair liquidity and move to dead address permanently
if (amountToBurn > 0){
_basicTransfer(uniswapV2Pair, address(0xdead), amountToBurn);
}
//sync price since this is not in a swap transaction!
IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
pair.sync();
emit AutoNukeLP();
return true;
}
function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
lastManualLpBurnTime = block.timestamp;
// get balance of liquidity pair
uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
// calculate amount to burn
uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
// pull tokens from pancakePair liquidity and move to dead address permanently
if (amountToBurn > 0){
_basicTransfer(uniswapV2Pair, address(0xdead), amountToBurn);
}
//sync price since this is not in a swap transaction!
IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
pair.sync();
emit ManualNukeLP();
return true;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","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":"uint256","name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c06040526019600b55600c805460ff19908116909155610e10600d55610708600f556011805462ffffff19166001908117909155601380549092161790553480156200004b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d620000af81600162000452565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620000fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000120919062000727565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000194919062000727565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000208919062000727565b6001600160a01b031660a08190526200022390600162000452565b60a05162000233906001620004cb565b60408051808201909152600580825264504c55535960d81b6020830152906200025d9082620007f6565b50604080518082019091526009815268141b1d5cd65a595b1960ba1b60208201526004906200028d9082620007f6565b506b033b2e3c9fd0803ce80000006003819055601e906000908190602890829081906103e890620002c090600a620008d8565b620002cc9190620008f2565b6008556003546103e890620002e390600a620008d8565b620002ef9190620008f2565b600a556003546127109062000306906005620008d8565b620003129190620008f2565b6009556015869055601685905560178490558362000331868862000915565b6200033d919062000915565b6014556019839055601a829055601b819055806200035c838562000915565b62000368919062000915565b60185560068054744e463c7267dcbff4d0b5916203e854d61b877e2400610100600160a81b0319909116179055600780546001600160a01b031916734f90252e0165886719f05cdbfbdb95c98eadf4d7179055620003da620003d26000546001600160a01b031690565b60016200051f565b620003e73060016200051f565b620003f661dead60016200051f565b620004156200040d6000546001600160a01b031690565b600162000452565b6200042230600162000452565b6200043161dead600162000452565b6200044533600354620005c960201b60201c565b505050505050506200092b565b6000546001600160a01b03163314620004a15760405162461bcd60e51b8152602060048201819052602482015260008051602062003f2983398151915260448201526064015b60405180910390fd5b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000546001600160a01b031633146200056a5760405162461bcd60e51b8152602060048201819052602482015260008051602062003f29833981519152604482015260640162000498565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006215760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000498565b600354620006309082620006bb565b6003556001600160a01b038216600090815260016020526040902054620006589082620006bb565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620006aa9085815260200190565b60405180910390a35050565b505050565b600080620006ca838562000915565b9050838110156200071e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000498565b90505b92915050565b6000602082840312156200073a57600080fd5b81516001600160a01b03811681146200071e57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200077d57607f821691505b6020821081036200079e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006b657600081815260208120601f850160051c81016020861015620007cd5750805b601f850160051c820191505b81811015620007ee57828155600101620007d9565b505050505050565b81516001600160401b0381111562000812576200081262000752565b6200082a8162000823845462000768565b84620007a4565b602080601f831160018114620008625760008415620008495750858301515b600019600386901b1c1916600185901b178555620007ee565b600085815260208120601f198616915b82811015620008935788860151825594840194600190910190840162000872565b5085821015620008b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620007215762000721620008c2565b6000826200091057634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620007215762000721620008c2565b60805160a051613576620009b360003960008181610620015281816112d701528181611a0101528181611a9c01528181611ac801528181611e5901528181612b9401528181612c360152612c6201526000818161047b01528181611e1b01528181612dd001528181612e8901528181612ec501528181612f3f0152612f9c01526135766000f3fe6080604052600436106103bc5760003560e01c80638095d564116101f2578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610af9578063f637434214610b19578063f8b45b0514610b2f578063fe72b27a14610b4557600080fd5b8063dd62ed3e14610a72578063e2f4560514610ab8578063e884f26014610ace578063f11a24d314610ae357600080fd5b8063c876d0b9116100dc578063c876d0b914610a0c578063c8c8ebe414610a26578063d257b34f14610a3c578063d85ba06314610a5c57600080fd5b8063bbc0c7421461098d578063c0246668146109ac578063c17b5b8c146109cc578063c18bc195146109ec57600080fd5b80639ec22c0e11610185578063a4c82a0011610154578063a4c82a0014610907578063a9059cbb1461091d578063aacebbe31461093d578063b62496f51461095d57600080fd5b80639ec22c0e146108a55780639fccce32146108bb578063a0d82dc5146108d1578063a457c2d7146108e757600080fd5b8063924de9b7116101c1578063924de9b71461083a57806395d89b411461085a5780639a7a23d61461086f5780639c3b4fdc1461088f57600080fd5b80638095d564146107c65780638da5cb5b146107e65780638ea5220f14610804578063921369131461082457600080fd5b80632e82f1a0116102e257806370a08231116102755780637571336a116102445780637571336a1461074b57806375f0a8741461076b57806379cc6790146107905780637bce5a04146107b057600080fd5b806370a08231146106cb578063715018a614610701578063730c188814610716578063751039fc1461073657600080fd5b80634a62bb65116102b15780634a62bb65146106425780634fbee1931461065c5780636a486a8e146106955780636ddd1713146106ab57600080fd5b80632e82f1a0146105b8578063313ce567146105d257806339509351146105ee57806349bd5a5e1461060e57600080fd5b8063184c16c51161035a578063203e727e11610329578063203e727e1461054c57806323b872dd1461056c57806327c8f8351461058c5780632c3e486c146105a257600080fd5b8063184c16c5146104f4578063199ffc721461050a5780631a8145bb146105205780631f3fed8f1461053657600080fd5b806310d5de531161039657806310d5de531461043a5780631694505e1461046957806318160ddd146104b55780631816467f146104d457600080fd5b806301339c21146103c857806306fdde03146103df578063095ea7b31461040a57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610b65565b005b3480156103eb57600080fd5b506103f4610baf565b604051610401919061301a565b60405180910390f35b34801561041657600080fd5b5061042a610425366004613080565b610c41565b6040519015158152602001610401565b34801561044657600080fd5b5061042a6104553660046130ac565b602080526000908152604090205460ff1681565b34801561047557600080fd5b5061049d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610401565b3480156104c157600080fd5b506003545b604051908152602001610401565b3480156104e057600080fd5b506103dd6104ef3660046130ac565b610c58565b34801561050057600080fd5b506104c6600f5481565b34801561051657600080fd5b506104c6600b5481565b34801561052c57600080fd5b506104c6601d5481565b34801561054257600080fd5b506104c6601c5481565b34801561055857600080fd5b506103dd6105673660046130c9565b610ce8565b34801561057857600080fd5b5061042a6105873660046130e2565b610dc5565b34801561059857600080fd5b5061049d61dead81565b3480156105ae57600080fd5b506104c6600d5481565b3480156105c457600080fd5b50600c5461042a9060ff1681565b3480156105de57600080fd5b5060405160128152602001610401565b3480156105fa57600080fd5b5061042a610609366004613080565b610e2e565b34801561061a57600080fd5b5061049d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561064e57600080fd5b5060115461042a9060ff1681565b34801561066857600080fd5b5061042a6106773660046130ac565b6001600160a01b03166000908152601f602052604090205460ff1690565b3480156106a157600080fd5b506104c660185481565b3480156106b757600080fd5b5060115461042a9062010000900460ff1681565b3480156106d757600080fd5b506104c66106e63660046130ac565b6001600160a01b031660009081526001602052604090205490565b34801561070d57600080fd5b506103dd610e64565b34801561072257600080fd5b506103dd610731366004613133565b610ed8565b34801561074257600080fd5b5061042a611001565b34801561075757600080fd5b506103dd610766366004613168565b61103c565b34801561077757600080fd5b5060065461049d9061010090046001600160a01b031681565b34801561079c57600080fd5b506103dd6107ab366004613080565b611090565b3480156107bc57600080fd5b506104c660155481565b3480156107d257600080fd5b506103dd6107e136600461319d565b6111b0565b3480156107f257600080fd5b506000546001600160a01b031661049d565b34801561081057600080fd5b5060075461049d906001600160a01b031681565b34801561083057600080fd5b506104c660195481565b34801561084657600080fd5b506103dd6108553660046131c9565b611256565b34801561086657600080fd5b506103f461129c565b34801561087b57600080fd5b506103dd61088a366004613168565b6112ab565b34801561089b57600080fd5b506104c660175481565b3480156108b157600080fd5b506104c660105481565b3480156108c757600080fd5b506104c6601e5481565b3480156108dd57600080fd5b506104c6601b5481565b3480156108f357600080fd5b5061042a610902366004613080565b61138a565b34801561091357600080fd5b506104c6600e5481565b34801561092957600080fd5b5061042a610938366004613080565b6113d9565b34801561094957600080fd5b506103dd6109583660046130ac565b6113e6565b34801561096957600080fd5b5061042a6109783660046130ac565b60216020526000908152604090205460ff1681565b34801561099957600080fd5b5060115461042a90610100900460ff1681565b3480156109b857600080fd5b506103dd6109c7366004613168565b611481565b3480156109d857600080fd5b506103dd6109e736600461319d565b61150a565b3480156109f857600080fd5b506103dd610a073660046130c9565b6115ad565b348015610a1857600080fd5b5060135461042a9060ff1681565b348015610a3257600080fd5b506104c660085481565b348015610a4857600080fd5b5061042a610a573660046130c9565b61167e565b348015610a6857600080fd5b506104c660145481565b348015610a7e57600080fd5b506104c6610a8d3660046131e4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610ac457600080fd5b506104c660095481565b348015610ada57600080fd5b5061042a6117d3565b348015610aef57600080fd5b506104c660165481565b348015610b0557600080fd5b506103dd610b143660046130ac565b61180e565b348015610b2557600080fd5b506104c6601a5481565b348015610b3b57600080fd5b506104c6600a5481565b348015610b5157600080fd5b5061042a610b603660046130c9565b6118f8565b6000546001600160a01b03163314610b985760405162461bcd60e51b8152600401610b8f9061321d565b60405180910390fd5b6011805462ffff0019166201010017905542600e55565b606060048054610bbe90613252565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea90613252565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905090565b6000610c4e338484611b70565b5060015b92915050565b6007546001600160a01b0316336001600160a01b031614610c8b5760405162461bcd60e51b8152600401610b8f9061328c565b6007546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d125760405162461bcd60e51b8152600401610b8f9061321d565b670de0b6b3a76400006103e8610d2760035490565b610d329060016132d9565b610d3c91906132f0565b610d4691906132f0565b811015610dad5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b8f565b610dbf81670de0b6b3a76400006132d9565b60085550565b6000610dd2848484611c8c565b610e248433610e1f856040518060600160405280602881526020016134f4602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061253f565b611b70565b5060019392505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610c4e918590610e1f9086612579565b6000546001600160a01b03163314610e8e5760405162461bcd60e51b8152600401610b8f9061321d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f025760405162461bcd60e51b8152600401610b8f9061321d565b610258831015610f705760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610b8f565b6103e88211158015610f80575060015b610fe55760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610b8f565b600d92909255600b55600c805460ff1916911515919091179055565b600080546001600160a01b0316331461102c5760405162461bcd60e51b8152600401610b8f9061321d565b506011805460ff19169055600190565b6000546001600160a01b031633146110665760405162461bcd60e51b8152600401610b8f9061321d565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6007546001600160a01b0316336001600160a01b0316146110c35760405162461bcd60e51b8152600401610b8f9061328c565b6001600160a01b0382166000908152600260209081526040808320338452909152902054818110611121576110f88282613312565b6001600160a01b0384166000908152600260209081526040808320338452909152902055611146565b6001600160a01b03831660009081526002602090815260408083203384529091528120555b61115083836125df565b6001600160a01b038316600081815260026020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b031633146111da5760405162461bcd60e51b8152600401610b8f9061321d565b601583905560168290556017819055806111f48385613325565b6111fe9190613325565b601481815510156112515760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610b8f565b505050565b6000546001600160a01b031633146112805760405162461bcd60e51b8152600401610b8f9061321d565b60118054911515620100000262ff000019909216919091179055565b606060058054610bbe90613252565b6000546001600160a01b031633146112d55760405162461bcd60e51b8152600401610b8f9061321d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361137c5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b8f565b61138682826126ea565b5050565b6000610c4e3384610e1f8560405180606001604052806025815260200161351c602591393360009081526002602090815260408083206001600160a01b038d168452909152902054919061253f565b6000610c4e338484611c8c565b6007546001600160a01b0316336001600160a01b0316146114195760405162461bcd60e51b8152600401610b8f9061328c565b6006546040516001600160a01b036101009092048216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146114ab5760405162461bcd60e51b8152600401610b8f9061321d565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b031633146115345760405162461bcd60e51b8152600401610b8f9061321d565b6019839055601a829055601b8190558061154e8385613325565b6115589190613325565b6018819055601410156112515760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610b8f565b6000546001600160a01b031633146115d75760405162461bcd60e51b8152600401610b8f9061321d565b670de0b6b3a76400006103e86115ec60035490565b6115f79060056132d9565b61160191906132f0565b61160b91906132f0565b8110156116665760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b8f565b61167881670de0b6b3a76400006132d9565b600a5550565b600080546001600160a01b031633146116a95760405162461bcd60e51b8152600401610b8f9061321d565b620186a06116b660035490565b6116c19060016132d9565b6116cb91906132f0565b8210156117385760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b8f565b6103e861174460035490565b61174f9060056132d9565b61175991906132f0565b8211156117c55760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b8f565b50600981905560015b919050565b600080546001600160a01b031633146117fe5760405162461bcd60e51b8152600401610b8f9061321d565b506013805460ff19169055600190565b6000546001600160a01b031633146118385760405162461bcd60e51b8152600401610b8f9061321d565b6001600160a01b03811661189d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b8f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b031633146119235760405162461bcd60e51b8152600401610b8f9061321d565b600f546010546119339190613325565b42116119815760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610b8f565b6103e88211156119e65760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610b8f565b426010556040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260009030906370a0823190602401602060405180830381865afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190613338565b90506000611a8f612710611a89848761273e565b906127c0565b90508015611ac457611ac47f000000000000000000000000000000000000000000000000000000000000000061dead83612802565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b2457600080fd5b505af1158015611b38573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6001600160a01b038316611bd25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b8f565b6001600160a01b038216611c335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b8f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016111a3565b6001600160a01b038316611cb25760405162461bcd60e51b8152600401610b8f90613351565b6001600160a01b038216611cd85760405162461bcd60e51b8152600401610b8f90613396565b80600003611cec5761125183836000612802565b60115460ff161561219f576000546001600160a01b03848116911614801590611d2357506000546001600160a01b03838116911614155b8015611d3757506001600160a01b03821615155b8015611d4e57506001600160a01b03821661dead14155b8015611d5d575060065460ff16155b1561219f57601154610100900460ff16611df5576001600160a01b0383166000908152601f602052604090205460ff1680611db057506001600160a01b0382166000908152601f602052604090205460ff165b611df55760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b8f565b60135460ff1615611f3c576000546001600160a01b03838116911614801590611e5057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611e8e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611f3c57326000908152601260205260409020544311611f295760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b8f565b3260009081526012602052604090204390555b6001600160a01b03831660009081526021602052604090205460ff168015611f7c57506001600160a01b038216600090815260208052604090205460ff16155b1561206057600854811115611ff15760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b8f565b600a546001600160a01b0383166000908152600160205260409020546120179083613325565b111561205b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b8f565b61219f565b6001600160a01b03821660009081526021602052604090205460ff1680156120a057506001600160a01b038316600090815260208052604090205460ff16155b156121165760085481111561205b5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b8f565b6001600160a01b038216600090815260208052604090205460ff1661219f57600a546001600160a01b03831660009081526001602052604090205461215b9083613325565b111561219f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b8f565b30600090815260016020526040902054600954811080159081906121cb575060115462010000900460ff165b80156121da575060065460ff16155b80156121ff57506001600160a01b03851660009081526021602052604090205460ff16155b801561222457506001600160a01b0385166000908152601f602052604090205460ff16155b801561224957506001600160a01b0384166000908152601f602052604090205460ff16155b1561226e576006805460ff1916600117905561226361290e565b6006805460ff191690555b60065460ff1615801561229957506001600160a01b03841660009081526021602052604090205460ff165b80156122a75750600c5460ff165b80156122c25750600d54600e546122be9190613325565b4210155b80156122e757506001600160a01b0385166000908152601f602052604090205460ff16155b156122f6576122f4612b79565b505b6006546001600160a01b0386166000908152601f602052604090205460ff9182161591168061233d57506001600160a01b0385166000908152601f602052604090205460ff165b15612346575060005b6000811561252b576001600160a01b03861660009081526021602052604090205460ff16801561237857506000601854115b15612430576123976064611a896018548861273e90919063ffffffff16565b9050601854601a54826123aa91906132d9565b6123b491906132f0565b601d60008282546123c59190613325565b9091555050601854601b546123da90836132d9565b6123e491906132f0565b601e60008282546123f59190613325565b909155505060185460195461240a90836132d9565b61241491906132f0565b601c60008282546124259190613325565b9091555061250d9050565b6001600160a01b03871660009081526021602052604090205460ff16801561245a57506000601454115b1561250d576124796064611a896014548861273e90919063ffffffff16565b90506014546016548261248c91906132d9565b61249691906132f0565b601d60008282546124a79190613325565b90915550506014546017546124bc90836132d9565b6124c691906132f0565b601e60008282546124d79190613325565b90915550506014546015546124ec90836132d9565b6124f691906132f0565b601c60008282546125079190613325565b90915550505b801561251e5761251e873083612802565b6125288186613312565b94505b612536878787612802565b50505050505050565b600081848411156125635760405162461bcd60e51b8152600401610b8f919061301a565b5060006125708486613312565b95945050505050565b6000806125868385613325565b9050838110156125d85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b8f565b9392505050565b6001600160a01b03821661263f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b8f565b61267c816040518060600160405280602281526020016134ac602291396001600160a01b038516600090815260016020526040902054919061253f565b6001600160a01b0383166000908152600160205260409020556003546126a29082612d09565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60008260000361275057506000610c52565b600061275c83856132d9565b90508261276985836132f0565b146125d85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b8f565b60006125d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d4b565b6001600160a01b0383166128285760405162461bcd60e51b8152600401610b8f90613351565b6001600160a01b03821661284e5760405162461bcd60e51b8152600401610b8f90613396565b61288b816040518060600160405280602681526020016134ce602691396001600160a01b038616600090815260016020526040902054919061253f565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546128ba9082612579565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111a39085815260200190565b3060009081526001602052604081205490506000601e54601c54601d546129359190613325565b61293f9190613325565b9050600082158061294e575081155b1561295857505050565b6009546129669060146132d9565b83111561297e5760095461297b9060146132d9565b92505b60065461010090046001600160a01b031660009081526001602052604081205490506000600284601d54876129b391906132d9565b6129bd91906132f0565b6129c791906132f0565b905060006129df836129d98885612d09565b90612d09565b9050476129eb82612d79565b60006129f74783612d09565b90506000612a1488611a89601c548561273e90919063ffffffff16565b90506000612a3189611a89601e548661273e90919063ffffffff16565b9050600081612a408486613312565b612a4a9190613312565b6000601d819055601c819055601e8190556007546040519293506001600160a01b031691849181818185875af1925050503d8060008114612aa7576040519150601f19603f3d011682016040523d82523d6000602084013e612aac565b606091505b50909950508615801590612ac05750600081115b15612b1357612acf8782612f39565b601d54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516101009091046001600160a01b0316904790600081818185875af1925050503d8060008114612b64576040519150601f19603f3d011682016040523d82523d6000602084013e612b69565b606091505b5050505050505050505050505050565b42600e556040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600090819030906370a0823190602401602060405180830381865afa158015612be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0a9190613338565b90506000612c29612710611a89600b548561273e90919063ffffffff16565b90508015612c5e57612c5e7f000000000000000000000000000000000000000000000000000000000000000061dead83612802565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612cbe57600080fd5b505af1158015612cd2573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b60006125d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253f565b60008183612d6c5760405162461bcd60e51b8152600401610b8f919061301a565b50600061257084866132f0565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dae57612dae6133d9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5091906133ef565b81600181518110612e6357612e636133d9565b60200260200101906001600160a01b031690816001600160a01b031681525050612eae307f000000000000000000000000000000000000000000000000000000000000000084611b70565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612f0390859060009086903090429060040161340c565b600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b505050505050565b612f64307f000000000000000000000000000000000000000000000000000000000000000084611b70565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612fee573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613013919061347d565b5050505050565b600060208083528351808285015260005b818110156130475785810183015185820160400152820161302b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461307d57600080fd5b50565b6000806040838503121561309357600080fd5b823561309e81613068565b946020939093013593505050565b6000602082840312156130be57600080fd5b81356125d881613068565b6000602082840312156130db57600080fd5b5035919050565b6000806000606084860312156130f757600080fd5b833561310281613068565b9250602084013561311281613068565b929592945050506040919091013590565b803580151581146117ce57600080fd5b60008060006060848603121561314857600080fd5b833592506020840135915061315f60408501613123565b90509250925092565b6000806040838503121561317b57600080fd5b823561318681613068565b915061319460208401613123565b90509250929050565b6000806000606084860312156131b257600080fd5b505081359360208301359350604090920135919050565b6000602082840312156131db57600080fd5b6125d882613123565b600080604083850312156131f757600080fd5b823561320281613068565b9150602083013561321281613068565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061326657607f821691505b60208210810361328657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610c5257610c526132c3565b60008261330d57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c5257610c526132c3565b80820180821115610c5257610c526132c3565b60006020828403121561334a57600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561340157600080fd5b81516125d881613068565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561345c5784516001600160a01b031683529383019391830191600101613437565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561349257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122094a280246953984d1c3883388e2e53e9d1ce18940b6297284dd74bda1fd14a4364736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103bc5760003560e01c80638095d564116101f2578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610af9578063f637434214610b19578063f8b45b0514610b2f578063fe72b27a14610b4557600080fd5b8063dd62ed3e14610a72578063e2f4560514610ab8578063e884f26014610ace578063f11a24d314610ae357600080fd5b8063c876d0b9116100dc578063c876d0b914610a0c578063c8c8ebe414610a26578063d257b34f14610a3c578063d85ba06314610a5c57600080fd5b8063bbc0c7421461098d578063c0246668146109ac578063c17b5b8c146109cc578063c18bc195146109ec57600080fd5b80639ec22c0e11610185578063a4c82a0011610154578063a4c82a0014610907578063a9059cbb1461091d578063aacebbe31461093d578063b62496f51461095d57600080fd5b80639ec22c0e146108a55780639fccce32146108bb578063a0d82dc5146108d1578063a457c2d7146108e757600080fd5b8063924de9b7116101c1578063924de9b71461083a57806395d89b411461085a5780639a7a23d61461086f5780639c3b4fdc1461088f57600080fd5b80638095d564146107c65780638da5cb5b146107e65780638ea5220f14610804578063921369131461082457600080fd5b80632e82f1a0116102e257806370a08231116102755780637571336a116102445780637571336a1461074b57806375f0a8741461076b57806379cc6790146107905780637bce5a04146107b057600080fd5b806370a08231146106cb578063715018a614610701578063730c188814610716578063751039fc1461073657600080fd5b80634a62bb65116102b15780634a62bb65146106425780634fbee1931461065c5780636a486a8e146106955780636ddd1713146106ab57600080fd5b80632e82f1a0146105b8578063313ce567146105d257806339509351146105ee57806349bd5a5e1461060e57600080fd5b8063184c16c51161035a578063203e727e11610329578063203e727e1461054c57806323b872dd1461056c57806327c8f8351461058c5780632c3e486c146105a257600080fd5b8063184c16c5146104f4578063199ffc721461050a5780631a8145bb146105205780631f3fed8f1461053657600080fd5b806310d5de531161039657806310d5de531461043a5780631694505e1461046957806318160ddd146104b55780631816467f146104d457600080fd5b806301339c21146103c857806306fdde03146103df578063095ea7b31461040a57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610b65565b005b3480156103eb57600080fd5b506103f4610baf565b604051610401919061301a565b60405180910390f35b34801561041657600080fd5b5061042a610425366004613080565b610c41565b6040519015158152602001610401565b34801561044657600080fd5b5061042a6104553660046130ac565b602080526000908152604090205460ff1681565b34801561047557600080fd5b5061049d7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610401565b3480156104c157600080fd5b506003545b604051908152602001610401565b3480156104e057600080fd5b506103dd6104ef3660046130ac565b610c58565b34801561050057600080fd5b506104c6600f5481565b34801561051657600080fd5b506104c6600b5481565b34801561052c57600080fd5b506104c6601d5481565b34801561054257600080fd5b506104c6601c5481565b34801561055857600080fd5b506103dd6105673660046130c9565b610ce8565b34801561057857600080fd5b5061042a6105873660046130e2565b610dc5565b34801561059857600080fd5b5061049d61dead81565b3480156105ae57600080fd5b506104c6600d5481565b3480156105c457600080fd5b50600c5461042a9060ff1681565b3480156105de57600080fd5b5060405160128152602001610401565b3480156105fa57600080fd5b5061042a610609366004613080565b610e2e565b34801561061a57600080fd5b5061049d7f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc81565b34801561064e57600080fd5b5060115461042a9060ff1681565b34801561066857600080fd5b5061042a6106773660046130ac565b6001600160a01b03166000908152601f602052604090205460ff1690565b3480156106a157600080fd5b506104c660185481565b3480156106b757600080fd5b5060115461042a9062010000900460ff1681565b3480156106d757600080fd5b506104c66106e63660046130ac565b6001600160a01b031660009081526001602052604090205490565b34801561070d57600080fd5b506103dd610e64565b34801561072257600080fd5b506103dd610731366004613133565b610ed8565b34801561074257600080fd5b5061042a611001565b34801561075757600080fd5b506103dd610766366004613168565b61103c565b34801561077757600080fd5b5060065461049d9061010090046001600160a01b031681565b34801561079c57600080fd5b506103dd6107ab366004613080565b611090565b3480156107bc57600080fd5b506104c660155481565b3480156107d257600080fd5b506103dd6107e136600461319d565b6111b0565b3480156107f257600080fd5b506000546001600160a01b031661049d565b34801561081057600080fd5b5060075461049d906001600160a01b031681565b34801561083057600080fd5b506104c660195481565b34801561084657600080fd5b506103dd6108553660046131c9565b611256565b34801561086657600080fd5b506103f461129c565b34801561087b57600080fd5b506103dd61088a366004613168565b6112ab565b34801561089b57600080fd5b506104c660175481565b3480156108b157600080fd5b506104c660105481565b3480156108c757600080fd5b506104c6601e5481565b3480156108dd57600080fd5b506104c6601b5481565b3480156108f357600080fd5b5061042a610902366004613080565b61138a565b34801561091357600080fd5b506104c6600e5481565b34801561092957600080fd5b5061042a610938366004613080565b6113d9565b34801561094957600080fd5b506103dd6109583660046130ac565b6113e6565b34801561096957600080fd5b5061042a6109783660046130ac565b60216020526000908152604090205460ff1681565b34801561099957600080fd5b5060115461042a90610100900460ff1681565b3480156109b857600080fd5b506103dd6109c7366004613168565b611481565b3480156109d857600080fd5b506103dd6109e736600461319d565b61150a565b3480156109f857600080fd5b506103dd610a073660046130c9565b6115ad565b348015610a1857600080fd5b5060135461042a9060ff1681565b348015610a3257600080fd5b506104c660085481565b348015610a4857600080fd5b5061042a610a573660046130c9565b61167e565b348015610a6857600080fd5b506104c660145481565b348015610a7e57600080fd5b506104c6610a8d3660046131e4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610ac457600080fd5b506104c660095481565b348015610ada57600080fd5b5061042a6117d3565b348015610aef57600080fd5b506104c660165481565b348015610b0557600080fd5b506103dd610b143660046130ac565b61180e565b348015610b2557600080fd5b506104c6601a5481565b348015610b3b57600080fd5b506104c6600a5481565b348015610b5157600080fd5b5061042a610b603660046130c9565b6118f8565b6000546001600160a01b03163314610b985760405162461bcd60e51b8152600401610b8f9061321d565b60405180910390fd5b6011805462ffff0019166201010017905542600e55565b606060048054610bbe90613252565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea90613252565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905090565b6000610c4e338484611b70565b5060015b92915050565b6007546001600160a01b0316336001600160a01b031614610c8b5760405162461bcd60e51b8152600401610b8f9061328c565b6007546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d125760405162461bcd60e51b8152600401610b8f9061321d565b670de0b6b3a76400006103e8610d2760035490565b610d329060016132d9565b610d3c91906132f0565b610d4691906132f0565b811015610dad5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b8f565b610dbf81670de0b6b3a76400006132d9565b60085550565b6000610dd2848484611c8c565b610e248433610e1f856040518060600160405280602881526020016134f4602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061253f565b611b70565b5060019392505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610c4e918590610e1f9086612579565b6000546001600160a01b03163314610e8e5760405162461bcd60e51b8152600401610b8f9061321d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f025760405162461bcd60e51b8152600401610b8f9061321d565b610258831015610f705760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610b8f565b6103e88211158015610f80575060015b610fe55760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610b8f565b600d92909255600b55600c805460ff1916911515919091179055565b600080546001600160a01b0316331461102c5760405162461bcd60e51b8152600401610b8f9061321d565b506011805460ff19169055600190565b6000546001600160a01b031633146110665760405162461bcd60e51b8152600401610b8f9061321d565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6007546001600160a01b0316336001600160a01b0316146110c35760405162461bcd60e51b8152600401610b8f9061328c565b6001600160a01b0382166000908152600260209081526040808320338452909152902054818110611121576110f88282613312565b6001600160a01b0384166000908152600260209081526040808320338452909152902055611146565b6001600160a01b03831660009081526002602090815260408083203384529091528120555b61115083836125df565b6001600160a01b038316600081815260026020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b031633146111da5760405162461bcd60e51b8152600401610b8f9061321d565b601583905560168290556017819055806111f48385613325565b6111fe9190613325565b601481815510156112515760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610b8f565b505050565b6000546001600160a01b031633146112805760405162461bcd60e51b8152600401610b8f9061321d565b60118054911515620100000262ff000019909216919091179055565b606060058054610bbe90613252565b6000546001600160a01b031633146112d55760405162461bcd60e51b8152600401610b8f9061321d565b7f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc6001600160a01b0316826001600160a01b03160361137c5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b8f565b61138682826126ea565b5050565b6000610c4e3384610e1f8560405180606001604052806025815260200161351c602591393360009081526002602090815260408083206001600160a01b038d168452909152902054919061253f565b6000610c4e338484611c8c565b6007546001600160a01b0316336001600160a01b0316146114195760405162461bcd60e51b8152600401610b8f9061328c565b6006546040516001600160a01b036101009092048216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146114ab5760405162461bcd60e51b8152600401610b8f9061321d565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b031633146115345760405162461bcd60e51b8152600401610b8f9061321d565b6019839055601a829055601b8190558061154e8385613325565b6115589190613325565b6018819055601410156112515760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610b8f565b6000546001600160a01b031633146115d75760405162461bcd60e51b8152600401610b8f9061321d565b670de0b6b3a76400006103e86115ec60035490565b6115f79060056132d9565b61160191906132f0565b61160b91906132f0565b8110156116665760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b8f565b61167881670de0b6b3a76400006132d9565b600a5550565b600080546001600160a01b031633146116a95760405162461bcd60e51b8152600401610b8f9061321d565b620186a06116b660035490565b6116c19060016132d9565b6116cb91906132f0565b8210156117385760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b8f565b6103e861174460035490565b61174f9060056132d9565b61175991906132f0565b8211156117c55760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b8f565b50600981905560015b919050565b600080546001600160a01b031633146117fe5760405162461bcd60e51b8152600401610b8f9061321d565b506013805460ff19169055600190565b6000546001600160a01b031633146118385760405162461bcd60e51b8152600401610b8f9061321d565b6001600160a01b03811661189d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b8f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b031633146119235760405162461bcd60e51b8152600401610b8f9061321d565b600f546010546119339190613325565b42116119815760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610b8f565b6103e88211156119e65760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610b8f565b426010556040516370a0823160e01b81526001600160a01b037f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc16600482015260009030906370a0823190602401602060405180830381865afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a759190613338565b90506000611a8f612710611a89848761273e565b906127c0565b90508015611ac457611ac47f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc61dead83612802565b60007f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b2457600080fd5b505af1158015611b38573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6001600160a01b038316611bd25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b8f565b6001600160a01b038216611c335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b8f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016111a3565b6001600160a01b038316611cb25760405162461bcd60e51b8152600401610b8f90613351565b6001600160a01b038216611cd85760405162461bcd60e51b8152600401610b8f90613396565b80600003611cec5761125183836000612802565b60115460ff161561219f576000546001600160a01b03848116911614801590611d2357506000546001600160a01b03838116911614155b8015611d3757506001600160a01b03821615155b8015611d4e57506001600160a01b03821661dead14155b8015611d5d575060065460ff16155b1561219f57601154610100900460ff16611df5576001600160a01b0383166000908152601f602052604090205460ff1680611db057506001600160a01b0382166000908152601f602052604090205460ff165b611df55760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b8f565b60135460ff1615611f3c576000546001600160a01b03838116911614801590611e5057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b8015611e8e57507f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc6001600160a01b0316826001600160a01b031614155b15611f3c57326000908152601260205260409020544311611f295760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b8f565b3260009081526012602052604090204390555b6001600160a01b03831660009081526021602052604090205460ff168015611f7c57506001600160a01b038216600090815260208052604090205460ff16155b1561206057600854811115611ff15760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b8f565b600a546001600160a01b0383166000908152600160205260409020546120179083613325565b111561205b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b8f565b61219f565b6001600160a01b03821660009081526021602052604090205460ff1680156120a057506001600160a01b038316600090815260208052604090205460ff16155b156121165760085481111561205b5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b8f565b6001600160a01b038216600090815260208052604090205460ff1661219f57600a546001600160a01b03831660009081526001602052604090205461215b9083613325565b111561219f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b8f565b30600090815260016020526040902054600954811080159081906121cb575060115462010000900460ff165b80156121da575060065460ff16155b80156121ff57506001600160a01b03851660009081526021602052604090205460ff16155b801561222457506001600160a01b0385166000908152601f602052604090205460ff16155b801561224957506001600160a01b0384166000908152601f602052604090205460ff16155b1561226e576006805460ff1916600117905561226361290e565b6006805460ff191690555b60065460ff1615801561229957506001600160a01b03841660009081526021602052604090205460ff165b80156122a75750600c5460ff165b80156122c25750600d54600e546122be9190613325565b4210155b80156122e757506001600160a01b0385166000908152601f602052604090205460ff16155b156122f6576122f4612b79565b505b6006546001600160a01b0386166000908152601f602052604090205460ff9182161591168061233d57506001600160a01b0385166000908152601f602052604090205460ff165b15612346575060005b6000811561252b576001600160a01b03861660009081526021602052604090205460ff16801561237857506000601854115b15612430576123976064611a896018548861273e90919063ffffffff16565b9050601854601a54826123aa91906132d9565b6123b491906132f0565b601d60008282546123c59190613325565b9091555050601854601b546123da90836132d9565b6123e491906132f0565b601e60008282546123f59190613325565b909155505060185460195461240a90836132d9565b61241491906132f0565b601c60008282546124259190613325565b9091555061250d9050565b6001600160a01b03871660009081526021602052604090205460ff16801561245a57506000601454115b1561250d576124796064611a896014548861273e90919063ffffffff16565b90506014546016548261248c91906132d9565b61249691906132f0565b601d60008282546124a79190613325565b90915550506014546017546124bc90836132d9565b6124c691906132f0565b601e60008282546124d79190613325565b90915550506014546015546124ec90836132d9565b6124f691906132f0565b601c60008282546125079190613325565b90915550505b801561251e5761251e873083612802565b6125288186613312565b94505b612536878787612802565b50505050505050565b600081848411156125635760405162461bcd60e51b8152600401610b8f919061301a565b5060006125708486613312565b95945050505050565b6000806125868385613325565b9050838110156125d85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b8f565b9392505050565b6001600160a01b03821661263f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b8f565b61267c816040518060600160405280602281526020016134ac602291396001600160a01b038516600090815260016020526040902054919061253f565b6001600160a01b0383166000908152600160205260409020556003546126a29082612d09565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60008260000361275057506000610c52565b600061275c83856132d9565b90508261276985836132f0565b146125d85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b8f565b60006125d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d4b565b6001600160a01b0383166128285760405162461bcd60e51b8152600401610b8f90613351565b6001600160a01b03821661284e5760405162461bcd60e51b8152600401610b8f90613396565b61288b816040518060600160405280602681526020016134ce602691396001600160a01b038616600090815260016020526040902054919061253f565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546128ba9082612579565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111a39085815260200190565b3060009081526001602052604081205490506000601e54601c54601d546129359190613325565b61293f9190613325565b9050600082158061294e575081155b1561295857505050565b6009546129669060146132d9565b83111561297e5760095461297b9060146132d9565b92505b60065461010090046001600160a01b031660009081526001602052604081205490506000600284601d54876129b391906132d9565b6129bd91906132f0565b6129c791906132f0565b905060006129df836129d98885612d09565b90612d09565b9050476129eb82612d79565b60006129f74783612d09565b90506000612a1488611a89601c548561273e90919063ffffffff16565b90506000612a3189611a89601e548661273e90919063ffffffff16565b9050600081612a408486613312565b612a4a9190613312565b6000601d819055601c819055601e8190556007546040519293506001600160a01b031691849181818185875af1925050503d8060008114612aa7576040519150601f19603f3d011682016040523d82523d6000602084013e612aac565b606091505b50909950508615801590612ac05750600081115b15612b1357612acf8782612f39565b601d54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516101009091046001600160a01b0316904790600081818185875af1925050503d8060008114612b64576040519150601f19603f3d011682016040523d82523d6000602084013e612b69565b606091505b5050505050505050505050505050565b42600e556040516370a0823160e01b81526001600160a01b037f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc166004820152600090819030906370a0823190602401602060405180830381865afa158015612be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0a9190613338565b90506000612c29612710611a89600b548561273e90919063ffffffff16565b90508015612c5e57612c5e7f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc61dead83612802565b60007f000000000000000000000000b104dc4dd270d2e4a64374cd8941b07b5ddda1fc9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612cbe57600080fd5b505af1158015612cd2573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b60006125d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253f565b60008183612d6c5760405162461bcd60e51b8152600401610b8f919061301a565b50600061257084866132f0565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dae57612dae6133d9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5091906133ef565b81600181518110612e6357612e636133d9565b60200260200101906001600160a01b031690816001600160a01b031681525050612eae307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b70565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612f0390859060009086903090429060040161340c565b600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b505050505050565b612f64307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611b70565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612fee573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613013919061347d565b5050505050565b600060208083528351808285015260005b818110156130475785810183015185820160400152820161302b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461307d57600080fd5b50565b6000806040838503121561309357600080fd5b823561309e81613068565b946020939093013593505050565b6000602082840312156130be57600080fd5b81356125d881613068565b6000602082840312156130db57600080fd5b5035919050565b6000806000606084860312156130f757600080fd5b833561310281613068565b9250602084013561311281613068565b929592945050506040919091013590565b803580151581146117ce57600080fd5b60008060006060848603121561314857600080fd5b833592506020840135915061315f60408501613123565b90509250925092565b6000806040838503121561317b57600080fd5b823561318681613068565b915061319460208401613123565b90509250929050565b6000806000606084860312156131b257600080fd5b505081359360208301359350604090920135919050565b6000602082840312156131db57600080fd5b6125d882613123565b600080604083850312156131f757600080fd5b823561320281613068565b9150602083013561321281613068565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061326657607f821691505b60208210810361328657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610c5257610c526132c3565b60008261330d57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c5257610c526132c3565b80820180821115610c5257610c526132c3565b60006020828403121561334a57600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561340157600080fd5b81516125d881613068565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561345c5784516001600160a01b031683529383019391830191600101613437565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561349257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122094a280246953984d1c3883388e2e53e9d1ce18940b6297284dd74bda1fd14a4364736f6c63430008130033
Deployed Bytecode Sourcemap
21107:24204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31116:148;;;;;;;;;;;;;:::i;:::-;;21495:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22520:169;;;;;;;;;;-1:-1:-1;22520:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;22520:169:0;1023:187:1;27798:64:0;;;;;;;;;;-1:-1:-1;27798:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26216:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;26216:51:0;1467:230:1;21927:108:0;;;;;;;;;;-1:-1:-1;22015:12:0;;21927:108;;;1848:25:1;;;1836:2;1821:18;21927:108:0;1702:177:1;34557:156:0;;;;;;;;;;-1:-1:-1;34557:156:0;;;;;:::i;:::-;;:::i;26794:47::-;;;;;;;;;;;;;;;;26604:36;;;;;;;;;;;;;;;;27577:33;;;;;;;;;;;;;;;;27537;;;;;;;;;;;;;;;;32107:234;;;;;;;;;;-1:-1:-1;32107:234:0;;;;;:::i;:::-;;:::i;22697:355::-;;;;;;;;;;-1:-1:-1;22697:355:0;;;;;:::i;:::-;;:::i;26319:53::-;;;;;;;;;;;;26365:6;26319:53;;26700:45;;;;;;;;;;;;;;;;26660:33;;;;;;;;;;-1:-1:-1;26660:33:0;;;;;;;;21826:93;;;;;;;;;;-1:-1:-1;21826:93:0;;21909:2;2880:36:1;;2868:2;2853:18;21826:93:0;2738:184:1;23060:218:0;;;;;;;;;;-1:-1:-1;23060:218:0;;;;;:::i;:::-;;:::i;26274:38::-;;;;;;;;;;;;;;;26892:33;;;;;;;;;;-1:-1:-1;26892:33:0;;;;;;;;34727:125;;;;;;;;;;-1:-1:-1;34727:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;34816:28:0;34792:4;34816:28;;;:19;:28;;;;;;;;;34727:125;27388:28;;;;;;;;;;;;;;;;26972:31;;;;;;;;;;-1:-1:-1;26972:31:0;;;;;;;;;;;22043:127;;;;;;;;;;-1:-1:-1;22043:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;22144:18:0;22117:7;22144:18;;;:9;:18;;;;;;;22043:127;13732:148;;;;;;;;;;;;;:::i;42142:447::-;;;;;;;;;;-1:-1:-1;42142:447:0;;;;;:::i;:::-;;:::i;31320:120::-;;;;;;;;;;;;;:::i;32576:144::-;;;;;;;;;;-1:-1:-1;32576:144:0;;;;;:::i;:::-;;:::i;26411:30::-;;;;;;;;;;-1:-1:-1;26411:30:0;;;;;;;-1:-1:-1;;;;;26411:30:0;;;42597:453;;;;;;;;;;-1:-1:-1;42597:453:0;;;;;:::i;:::-;;:::i;27277:30::-;;;;;;;;;;;;;;;;32933:369;;;;;;;;;;-1:-1:-1;32933:369:0;;;;;:::i;:::-;;:::i;13090:79::-;;;;;;;;;;-1:-1:-1;13128:7:0;13155:6;-1:-1:-1;;;;;13155:6:0;13090:79;;26448:24;;;;;;;;;;-1:-1:-1;26448:24:0;;;;-1:-1:-1;;;;;26448:24:0;;;27423:31;;;;;;;;;;;;;;;;32820:101;;;;;;;;;;-1:-1:-1;32820:101:0;;;;;:::i;:::-;;:::i;21714:104::-;;;;;;;;;;;;;:::i;33890:244::-;;;;;;;;;;-1:-1:-1;33890:244:0;;;;;:::i;:::-;;:::i;27351:24::-;;;;;;;;;;;;;;;;26848:35;;;;;;;;;;;;;;;;27617:27;;;;;;;;;;;;;;;;27499:25;;;;;;;;;;;;;;;;23286:269;;;;;;;;;;-1:-1:-1;23286:269:0;;;;;:::i;:::-;;:::i;26752:29::-;;;;;;;;;;;;;;;;22178:175;;;;;;;;;;-1:-1:-1;22178:175:0;;;;;:::i;:::-;;:::i;34338:207::-;;;;;;;;;;-1:-1:-1;34338:207:0;;;;;:::i;:::-;;:::i;28020:58::-;;;;;;;;;;-1:-1:-1;28020:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26932:33;;;;;;;;;;-1:-1:-1;26932:33:0;;;;;;;;;;;33700:182;;;;;;;;;;-1:-1:-1;33700:182:0;;;;;:::i;:::-;;:::i;33314:378::-;;;;;;;;;;-1:-1:-1;33314:378:0;;;;;:::i;:::-;;:::i;32349:215::-;;;;;;;;;;-1:-1:-1;32349:215:0;;;;;:::i;:::-;;:::i;27195:39::-;;;;;;;;;;-1:-1:-1;27195:39:0;;;;;;;;26485:35;;;;;;;;;;;;;;;;31714:381;;;;;;;;;;-1:-1:-1;31714:381:0;;;;;:::i;:::-;;:::i;27243:27::-;;;;;;;;;;;;;;;;22361:151;;;;;;;;;;-1:-1:-1;22361:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;22477:18:0;;;22450:7;22477:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;22361:151;26527:33;;;;;;;;;;;;;;;;31505:134;;;;;;;;;;;;;:::i;27314:30::-;;;;;;;;;;;;;;;;14035:244;;;;;;;;;;-1:-1:-1;14035:244:0;;;;;:::i;:::-;;:::i;27461:31::-;;;;;;;;;;;;;;;;26567:24;;;;;;;;;;;;;;;;44291:1017;;;;;;;;;;-1:-1:-1;44291:1017:0;;;;;:::i;:::-;;:::i;31116:148::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;;;;;;;;;31164:13:::1;:20:::0;;-1:-1:-1;;31195:18:0;;;;;31241:15:::1;31224:14;:32:::0;31116:148::o;21495:100::-;21549:13;21582:5;21575:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21495:100;:::o;22520:169::-;22603:4;22620:39;1403:10;22643:7;22652:6;22620:8;:39::i;:::-;-1:-1:-1;22677:4:0;22520:169;;;;;:::o;34557:156::-;26014:9;;-1:-1:-1;;;;;26014:9:0;1403:10;-1:-1:-1;;;;;25998:25:0;;25990:65;;;;-1:-1:-1;;;25990:65:0;;;;;;;:::i;:::-;34663:9:::1;::::0;34635:38:::1;::::0;-1:-1:-1;;;;;34663:9:0;;::::1;::::0;34635:38;::::1;::::0;::::1;::::0;34663:9:::1;::::0;34635:38:::1;34684:9;:21:::0;;-1:-1:-1;;;;;;34684:21:0::1;-1:-1:-1::0;;;;;34684:21:0;;;::::1;::::0;;;::::1;::::0;;34557:156::o;32107:234::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;32226:4:::1;32220;32200:13;22015:12:::0;;;21927:108;32200:13:::1;:17;::::0;32216:1:::1;32200:17;:::i;:::-;:24;;;;:::i;:::-;32199:31;;;;:::i;:::-;32189:6;:41;;32181:101;;;::::0;-1:-1:-1;;;32181:101:0;;6463:2:1;32181:101:0::1;::::0;::::1;6445:21:1::0;6502:2;6482:18;;;6475:30;6541:34;6521:18;;;6514:62;-1:-1:-1;;;6592:18:1;;;6585:45;6647:19;;32181:101:0::1;6261:411:1::0;32181:101:0::1;32316:17;:6:::0;32326::::1;32316:17;:::i;:::-;32293:20;:40:::0;-1:-1:-1;32107:234:0:o;22697:355::-;22837:4;22854:36;22864:6;22872:9;22883:6;22854:9;:36::i;:::-;22901:121;22910:6;1403:10;22932:89;22970:6;22932:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22932:19:0;;;;;;:11;:19;;;;;;;;1403:10;22932:33;;;;;;;;;;:37;:89::i;:::-;22901:8;:121::i;:::-;-1:-1:-1;23040:4:0;22697:355;;;;;:::o;23060:218::-;1403:10;23148:4;23197:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23197:34:0;;;;;;;;;;23148:4;;23165:83;;23188:7;;23197:50;;23236:10;23197:38;:50::i;13732:148::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;13839:1:::1;13823:6:::0;;13802:40:::1;::::0;-1:-1:-1;;;;;13823:6:0;;::::1;::::0;13802:40:::1;::::0;13839:1;;13802:40:::1;13870:1;13853:19:::0;;-1:-1:-1;;;;;;13853:19:0::1;::::0;;13732:148::o;42142:447::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;42296:3:::1;42273:19;:26;;42265:90;;;::::0;-1:-1:-1;;;42265:90:0;;6879:2:1;42265:90:0::1;::::0;::::1;6861:21:1::0;6918:2;6898:18;;;6891:30;6957:34;6937:18;;;6930:62;-1:-1:-1;;;7008:18:1;;;7001:49;7067:19;;42265:90:0::1;6677:415:1::0;42265:90:0::1;42386:4;42374:8;:16;;:33;;;;-1:-1:-1::0;42394:13:0;42374:33:::1;42366:94;;;::::0;-1:-1:-1;;;42366:94:0;;7299:2:1;42366:94:0::1;::::0;::::1;7281:21:1::0;7338:2;7318:18;;;7311:30;7377:34;7357:18;;;7350:62;-1:-1:-1;;;7428:18:1;;;7421:46;7484:19;;42366:94:0::1;7097:412:1::0;42366:94:0::1;42471:15;:37:::0;;;;42519:16:::1;:27:::0;42557:13:::1;:24:::0;;-1:-1:-1;;42557:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;42142:447::o;31320:120::-;31372:4;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;-1:-1:-1;31388:14:0::1;:22:::0;;-1:-1:-1;;31388:22:0::1;::::0;;;31320:120;:::o;32576:144::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32666:39:0;;;::::1;;::::0;;;:31:::1;:39:::0;;;;;:46;;-1:-1:-1;;32666:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32576:144::o;42597:453::-;26014:9;;-1:-1:-1;;;;;26014:9:0;1403:10;-1:-1:-1;;;;;25998:25:0;;25990:65;;;;-1:-1:-1;;;25990:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42703:20:0;::::1;42676:24;42703:20:::0;;;:11:::1;:20;::::0;;;;;;;42724:10:::1;42703:32:::0;;;;;;;;42750:25;;::::1;42746:186;;42827:24;42846:5:::0;42827:16;:24:::1;:::i;:::-;-1:-1:-1::0;;;;;42792:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;42813:10:::1;42792:32:::0;;;;;;;:59;42746:186:::1;;;-1:-1:-1::0;;;;;42884:20:0;::::1;42919:1;42884:20:::0;;;:11:::1;:20;::::0;;;;;;;42905:10:::1;42884:32:::0;;;;;;;:36;42746:186:::1;42942:21;42948:7;42957:5;42942;:21::i;:::-;-1:-1:-1::0;;;;;42979:63:0;::::1;43009:20;::::0;;;:11:::1;:20;::::0;;;;;;;42997:10:::1;43009:32:::0;;;;;;;;;;;42979:63;;1848:25:1;;;42997:10:0;;42979:63;::::1;::::0;1821:18:1;42979:63:0::1;;;;;;;;42665:385;42597:453:::0;;:::o;32933:369::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;33049:15:::1;:31:::0;;;33091:15:::1;:31:::0;;;33133:9:::1;:19:::0;;;33145:7;33178:33:::1;33109:13:::0;33067;33178:33:::1;:::i;:::-;:45;;;;:::i;:::-;33163:12;:60:::0;;;-1:-1:-1;33242:18:0::1;33234:60;;;::::0;-1:-1:-1;;;33234:60:0;;7979:2:1;33234:60:0::1;::::0;::::1;7961:21:1::0;8018:2;7998:18;;;7991:30;8057:31;8037:18;;;8030:59;8106:18;;33234:60:0::1;7777:353:1::0;33234:60:0::1;32933:369:::0;;;:::o;32820:101::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;32892:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;32892:21:0;;::::1;::::0;;;::::1;::::0;;32820:101::o;21714:104::-;21770:13;21803:7;21796:14;;;;;:::i;33890:244::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;33997:13:::1;-1:-1:-1::0;;;;;33989:21:0::1;:4;-1:-1:-1::0;;;;;33989:21:0::1;::::0;33981:91:::1;;;::::0;-1:-1:-1;;;33981:91:0;;8337:2:1;33981:91:0::1;::::0;::::1;8319:21:1::0;8376:2;8356:18;;;8349:30;8415:34;8395:18;;;8388:62;8486:27;8466:18;;;8459:55;8531:19;;33981:91:0::1;8135:421:1::0;33981:91:0::1;34085:41;34114:4;34120:5;34085:28;:41::i;:::-;33890:244:::0;;:::o;23286:269::-;23379:4;23396:129;1403:10;23419:7;23428:96;23467:15;23428:96;;;;;;;;;;;;;;;;;1403:10;23428:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23428:34:0;;;;;;;;;;;;:38;:96::i;22178:175::-;22264:4;22281:42;1403:10;22305:9;22316:6;22281:9;:42::i;34338:207::-;26014:9;;-1:-1:-1;;;;;26014:9:0;1403:10;-1:-1:-1;;;;;25998:25:0;;25990:65;;;;-1:-1:-1;;;25990:65:0;;;;;;;:::i;:::-;34474:15:::1;::::0;34431:59:::1;::::0;-1:-1:-1;;;;;34474:15:0::1;::::0;;::::1;::::0;::::1;::::0;34431:59;::::1;::::0;::::1;::::0;;;::::1;34501:15;:36:::0;;-1:-1:-1;;;;;34501:36:0;;::::1;;;-1:-1:-1::0;;;;;;34501:36:0;;::::1;::::0;;;::::1;::::0;;34338:207::o;33700:182::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33785:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;33785:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;33840:34;;1163:41:1;;;33840:34:0::1;::::0;1136:18:1;33840:34:0::1;;;;;;;33700:182:::0;;:::o;33314:378::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;33431:16:::1;:32:::0;;;33474:16:::1;:32:::0;;;33517:10:::1;:20:::0;;;33530:7;33564:35:::1;33493:13:::0;33450;33564:35:::1;:::i;:::-;:48;;;;:::i;:::-;33548:13;:64:::0;;;33648:2:::1;-1:-1:-1::0;33631:19:0::1;33623:61;;;::::0;-1:-1:-1;;;33623:61:0;;7979:2:1;33623:61:0::1;::::0;::::1;7961:21:1::0;8018:2;7998:18;;;7991:30;8057:31;8037:18;;;8030:59;8106:18;;33623:61:0::1;7777:353:1::0;32349:215:0;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;32471:4:::1;32465;32445:13;22015:12:::0;;;21927:108;32445:13:::1;:17;::::0;32461:1:::1;32445:17;:::i;:::-;:24;;;;:::i;:::-;32444:31;;;;:::i;:::-;32434:6;:41;;32426:90;;;::::0;-1:-1:-1;;;32426:90:0;;8763:2:1;32426:90:0::1;::::0;::::1;8745:21:1::0;8802:2;8782:18;;;8775:30;8841:34;8821:18;;;8814:62;-1:-1:-1;;;8892:18:1;;;8885:34;8936:19;;32426:90:0::1;8561:400:1::0;32426:90:0::1;32539:17;:6:::0;32549::::1;32539:17;:::i;:::-;32527:9;:29:::0;-1:-1:-1;32349:215:0:o;31714:381::-;31795:4;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;31851:6:::1;31831:13;22015:12:::0;;;21927:108;31831:13:::1;:17;::::0;31847:1:::1;31831:17;:::i;:::-;:26;;;;:::i;:::-;31818:9;:39;;31810:105;;;::::0;-1:-1:-1;;;31810:105:0;;9168:2:1;31810:105:0::1;::::0;::::1;9150:21:1::0;9207:2;9187:18;;;9180:30;9246:34;9226:18;;;9219:62;-1:-1:-1;;;9297:18:1;;;9290:51;9358:19;;31810:105:0::1;8966:417:1::0;31810:105:0::1;31966:4;31946:13;22015:12:::0;;;21927:108;31946:13:::1;:17;::::0;31962:1:::1;31946:17;:::i;:::-;:24;;;;:::i;:::-;31933:9;:37;;31925:102;;;::::0;-1:-1:-1;;;31925:102:0;;9590:2:1;31925:102:0::1;::::0;::::1;9572:21:1::0;9629:2;9609:18;;;9602:30;9668:34;9648:18;;;9641:62;-1:-1:-1;;;9719:18:1;;;9712:50;9779:19;;31925:102:0::1;9388:416:1::0;31925:102:0::1;-1:-1:-1::0;32037:18:0::1;:30:::0;;;32084:4:::1;13372:1;31714:381:::0;;;:::o;31505:134::-;31565:4;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;-1:-1:-1;31581:20:0::1;:28:::0;;-1:-1:-1;;31581:28:0::1;::::0;;;31505:134;:::o;14035:244::-;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14124:22:0;::::1;14116:73;;;::::0;-1:-1:-1;;;14116:73:0;;10011:2:1;14116:73:0::1;::::0;::::1;9993:21:1::0;10050:2;10030:18;;;10023:30;10089:34;10069:18;;;10062:62;-1:-1:-1;;;10140:18:1;;;10133:36;10186:19;;14116:73:0::1;9809:402:1::0;14116:73:0::1;14226:6;::::0;;14205:38:::1;::::0;-1:-1:-1;;;;;14205:38:0;;::::1;::::0;14226:6;::::1;::::0;14205:38:::1;::::0;::::1;14254:6;:17:::0;;-1:-1:-1;;;;;;14254:17:0::1;-1:-1:-1::0;;;;;14254:17:0;;;::::1;::::0;;;::::1;::::0;;14035:244::o;44291:1017::-;44375:4;13302:6;;-1:-1:-1;;;;;13302:6:0;1403:10;13302:22;13294:67;;;;-1:-1:-1;;;13294:67:0;;;;;;;:::i;:::-;44440:19:::1;;44417:20;;:42;;;;:::i;:::-;44399:15;:60;44391:106;;;::::0;-1:-1:-1;;;44391:106:0;;10418:2:1;44391:106:0::1;::::0;::::1;10400:21:1::0;;;10437:18;;;10430:30;10496:34;10476:18;;;10469:62;10548:18;;44391:106:0::1;10216:356:1::0;44391:106:0::1;44527:4;44516:7;:15;;44508:70;;;::::0;-1:-1:-1;;;44508:70:0;;10779:2:1;44508:70:0::1;::::0;::::1;10761:21:1::0;10818:2;10798:18;;;10791:30;10857:34;10837:18;;;10830:62;-1:-1:-1;;;10908:18:1;;;10901:40;10958:19;;44508:70:0::1;10577:406:1::0;44508:70:0::1;44612:15;44589:20;:38:::0;44721:29:::1;::::0;-1:-1:-1;;;44721:29:0;;-1:-1:-1;;;;;44736:13:0::1;1658:32:1::0;44721:29:0::1;::::0;::::1;1640:51:1::0;44690:28:0::1;::::0;44721:4:::1;::::0;:14:::1;::::0;1613:18:1;;44721:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44690:60:::0;-1:-1:-1;44808:20:0::1;44831:44;44869:5;44831:33;44690:60:::0;44856:7;44831:24:::1;:33::i;:::-;:37:::0;::::1;:44::i;:::-;44808:67:::0;-1:-1:-1;44988:16:0;;44984:108:::1;;45020:60;45035:13;45058:6;45067:12;45020:14;:60::i;:::-;45175:19;45212:13;45175:51;;45237:4;-1:-1:-1::0;;;;;45237:9:0::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;45264:14:0::1;::::0;::::1;::::0;-1:-1:-1;45264:14:0;;-1:-1:-1;45264:14:0::1;-1:-1:-1::0;45296:4:0::1;::::0;44291:1017;-1:-1:-1;;;;44291:1017:0:o;25571:380::-;-1:-1:-1;;;;;25707:19:0;;25699:68;;;;-1:-1:-1;;;25699:68:0;;11379:2:1;25699:68:0;;;11361:21:1;11418:2;11398:18;;;11391:30;11457:34;11437:18;;;11430:62;-1:-1:-1;;;11508:18:1;;;11501:34;11552:19;;25699:68:0;11177:400:1;25699:68:0;-1:-1:-1;;;;;25786:21:0;;25778:68;;;;-1:-1:-1;;;25778:68:0;;11784:2:1;25778:68:0;;;11766:21:1;11823:2;11803:18;;;11796:30;11862:34;11842:18;;;11835:62;-1:-1:-1;;;11913:18:1;;;11906:32;11955:19;;25778:68:0;11582:398:1;25778:68:0;-1:-1:-1;;;;;25859:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;25911:32;;1848:25:1;;;25911:32:0;;1821:18:1;25911:32:0;1702:177:1;34914:4326:0;-1:-1:-1;;;;;35037:18:0;;35029:68;;;;-1:-1:-1;;;35029:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35116:16:0;;35108:64;;;;-1:-1:-1;;;35108:64:0;;;;;;;:::i;:::-;35197:6;35207:1;35197:11;35194:91;;35225:27;35240:4;35246:2;35250:1;35225:14;:27::i;35194:91::-;35308:14;;;;35305:1841;;;13128:7;13155:6;-1:-1:-1;;;;;35360:15:0;;;13155:6;;35360:15;;;;:49;;-1:-1:-1;13128:7:0;13155:6;-1:-1:-1;;;;;35396:13:0;;;13155:6;;35396:13;;35360:49;:86;;;;-1:-1:-1;;;;;;35430:16:0;;;;35360:86;:128;;;;-1:-1:-1;;;;;;35467:21:0;;35481:6;35467:21;;35360:128;:158;;;;-1:-1:-1;35510:8:0;;;;35509:9;35360:158;35338:1797;;;35556:13;;;;;;;35552:148;;-1:-1:-1;;;;;35601:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;35630:23:0;;;;;;:19;:23;;;;;;;;35601:52;35593:87;;;;-1:-1:-1;;;35593:87:0;;12997:2:1;35593:87:0;;;12979:21:1;13036:2;13016:18;;;13009:30;-1:-1:-1;;;13055:18:1;;;13048:52;13117:18;;35593:87:0;12795:346:1;35593:87:0;35858:20;;;;35854:423;;;13128:7;13155:6;-1:-1:-1;;;;;35906:13:0;;;13155:6;;35906:13;;;;:47;;;35937:15;-1:-1:-1;;;;;35923:30:0;:2;-1:-1:-1;;;;;35923:30:0;;;35906:47;:79;;;;;35971:13;-1:-1:-1;;;;;35957:28:0;:2;-1:-1:-1;;;;;35957:28:0;;;35906:79;35902:356;;;36050:9;36021:39;;;;:28;:39;;;;;;36063:12;-1:-1:-1;36013:140:0;;;;-1:-1:-1;;;36013:140:0;;13348:2:1;36013:140:0;;;13330:21:1;13387:2;13367:18;;;13360:30;13426:34;13406:18;;;13399:62;13497:34;13477:18;;;13470:62;-1:-1:-1;;;13548:19:1;;;13541:40;13598:19;;36013:140:0;13146:477:1;36013:140:0;36209:9;36180:39;;;;:28;:39;;;;;36222:12;36180:54;;35902:356;-1:-1:-1;;;;;36346:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;36382:35:0;;;;;;:31;:35;;;;;;;;36381:36;36346:71;36342:778;;;36464:20;;36454:6;:30;;36446:96;;;;-1:-1:-1;;;36446:96:0;;13830:2:1;36446:96:0;;;13812:21:1;13869:2;13849:18;;;13842:30;13908:34;13888:18;;;13881:62;-1:-1:-1;;;13959:18:1;;;13952:51;14020:19;;36446:96:0;13628:417:1;36446:96:0;36603:9;;-1:-1:-1;;;;;22144:18:0;;22117:7;22144:18;;;:9;:18;;;;;;36577:22;;:6;:22;:::i;:::-;:35;;36569:67;;;;-1:-1:-1;;;36569:67:0;;14252:2:1;36569:67:0;;;14234:21:1;14291:2;14271:18;;;14264:30;-1:-1:-1;;;14310:18:1;;;14303:49;14369:18;;36569:67:0;14050:343:1;36569:67:0;36342:778;;;-1:-1:-1;;;;;36730:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;36764:37:0;;;;;;:31;:37;;;;;;;;36763:38;36730:71;36726:394;;;36848:20;;36838:6;:30;;36830:97;;;;-1:-1:-1;;;36830:97:0;;14600:2:1;36830:97:0;;;14582:21:1;14639:2;14619:18;;;14612:30;14678:34;14658:18;;;14651:62;-1:-1:-1;;;14729:18:1;;;14722:52;14791:19;;36830:97:0;14398:418:1;36726:394:0;-1:-1:-1;;;;;36974:35:0;;;;;;:31;:35;;;;;;;;36970:150;;37067:9;;-1:-1:-1;;;;;22144:18:0;;22117:7;22144:18;;;:9;:18;;;;;;37041:22;;:6;:22;:::i;:::-;:35;;37033:67;;;;-1:-1:-1;;;37033:67:0;;14252:2:1;37033:67:0;;;14234:21:1;14291:2;14271:18;;;14264:30;-1:-1:-1;;;14310:18:1;;;14303:49;14369:18;;37033:67:0;14050:343:1;37033:67:0;37209:4;37160:28;22144:18;;;:9;:18;;;;;;37275;;37251:42;;;;;;;37324:35;;-1:-1:-1;37348:11:0;;;;;;;37324:35;:61;;;;-1:-1:-1;37377:8:0;;;;37376:9;37324:61;:110;;;;-1:-1:-1;;;;;;37403:31:0;;;;;;:25;:31;;;;;;;;37402:32;37324:110;:153;;;;-1:-1:-1;;;;;;37452:25:0;;;;;;:19;:25;;;;;;;;37451:26;37324:153;:194;;;;-1:-1:-1;;;;;;37495:23:0;;;;;;:19;:23;;;;;;;;37494:24;37324:194;37306:338;;;37545:8;:15;;-1:-1:-1;;37545:15:0;37556:4;37545:15;;;37589:10;:8;:10::i;:::-;37616:8;:16;;-1:-1:-1;;37616:16:0;;;37306:338;37668:8;;;;37667:9;:42;;;;-1:-1:-1;;;;;;37680:29:0;;;;;;:25;:29;;;;;;;;37667:42;:59;;;;-1:-1:-1;37713:13:0;;;;37667:59;:114;;;;;37766:15;;37749:14;;:32;;;;:::i;:::-;37730:15;:51;;37667:114;:144;;;;-1:-1:-1;;;;;;37786:25:0;;;;;;:19;:25;;;;;;;;37785:26;37667:144;37664:204;;;37827:29;:27;:29::i;:::-;;37664:204;37896:8;;-1:-1:-1;;;;;38005:25:0;;37880:12;38005:25;;;:19;:25;;;;;;37896:8;;;;37895:9;;38005:25;;:52;;-1:-1:-1;;;;;;38034:23:0;;;;;;:19;:23;;;;;;;;38005:52;38002:99;;;-1:-1:-1;38084:5:0;38002:99;38121:12;38225:7;38222:966;;;-1:-1:-1;;;;;38276:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;38325:1;38309:13;;:17;38276:50;38272:748;;;38353:34;38383:3;38353:25;38364:13;;38353:6;:10;;:25;;;;:::i;:34::-;38346:41;;38454:13;;38435:16;;38428:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;38406:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;38522:13:0;;38509:10;;38502:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;38486:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;38602:13:0;;38583:16;;38576:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;38554:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;38272:748:0;;-1:-1:-1;38272:748:0;;-1:-1:-1;;;;;38676:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;38726:1;38711:12;;:16;38676:51;38673:347;;;38752:33;38781:3;38752:24;38763:12;;38752:6;:10;;:24;;;;:::i;:33::-;38745:40;;38848:12;;38830:15;;38823:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;38801:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;38914:12:0;;38902:9;;38895:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;38879:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;38992:12:0;;38974:15;;38967:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;38945:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;38673:347:0;39051:8;;39048:92;;39083:41;39098:4;39112;39119;39083:14;:41::i;:::-;39162:14;39172:4;39162:14;;:::i;:::-;;;38222:966;39200:32;39215:4;39221:2;39225:6;39200:14;:32::i;:::-;35018:4222;;;;34914:4326;;;:::o;9037:192::-;9123:7;9159:12;9151:6;;;;9143:29;;;;-1:-1:-1;;;9143:29:0;;;;;;;;:::i;:::-;-1:-1:-1;9183:9:0;9195:5;9199:1;9195;:5;:::i;:::-;9183:17;9037:192;-1:-1:-1;;;;;9037:192:0:o;8134:181::-;8192:7;;8224:5;8228:1;8224;:5;:::i;:::-;8212:17;;8253:1;8248;:6;;8240:46;;;;-1:-1:-1;;;8240:46:0;;15023:2:1;8240:46:0;;;15005:21:1;15062:2;15042:18;;;15035:30;15101:29;15081:18;;;15074:57;15148:18;;8240:46:0;14821:351:1;8240:46:0;8306:1;8134:181;-1:-1:-1;;;8134:181:0:o;43058:410::-;-1:-1:-1;;;;;43134:21:0;;43126:67;;;;-1:-1:-1;;;43126:67:0;;15379:2:1;43126:67:0;;;15361:21:1;15418:2;15398:18;;;15391:30;15457:34;15437:18;;;15430:62;-1:-1:-1;;;15508:18:1;;;15501:31;15549:19;;43126:67:0;15177:397:1;43126:67:0;43289:68;43312:6;43289:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43289:18:0;;;;;;:9;:18;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;43268:18:0;;;;;;:9;:18;;;;;:89;43383:12;;:24;;43400:6;43383:16;:24::i;:::-;43368:12;:39;43423:37;;1848:25:1;;;43449:1:0;;-1:-1:-1;;;;;43423:37:0;;;;;1836:2:1;1821:18;43423:37:0;;;;;;;43058:410;;:::o;34142:188::-;-1:-1:-1;;;;;34225:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;34225:39:0;;;;;;;;;;34282:40;;34225:39;;:31;34282:40;;;34142:188;;:::o;9488:471::-;9546:7;9791:1;9796;9791:6;9787:47;;-1:-1:-1;9821:1:0;9814:8;;9787:47;9846:9;9858:5;9862:1;9858;:5;:::i;:::-;9846:17;-1:-1:-1;9891:1:0;9882:5;9886:1;9846:17;9882:5;:::i;:::-;:10;9874:56;;;;-1:-1:-1;;;9874:56:0;;15781:2:1;9874:56:0;;;15763:21:1;15820:2;15800:18;;;15793:30;15859:34;15839:18;;;15832:62;-1:-1:-1;;;15910:18:1;;;15903:31;15951:19;;9874:56:0;15579:397:1;10435:132:0;10493:7;10520:39;10524:1;10527;10520:39;;;;;;;;;;;;;;;;;:3;:39::i;23563:578::-;-1:-1:-1;;;;;23708:20:0;;23700:70;;;;-1:-1:-1;;;23700:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23789:23:0;;23781:71;;;;-1:-1:-1;;;23781:71:0;;;;;;;:::i;:::-;23945;23967:6;23945:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23945:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;23925:17:0;;;;;;;:9;:17;;;;;;:91;;;;24050:20;;;;;;;:32;;24075:6;24050:24;:32::i;:::-;-1:-1:-1;;;;;24027:20:0;;;;;;;:9;:20;;;;;;;:55;;;;24098:35;;;;;;;;;;24126:6;1848:25:1;;1836:2;1821:18;;1702:177;40386:1744:0;40469:4;40425:23;22144:18;;;:9;:18;;;;;;40425:50;;40486:25;40556:12;;40535:18;;40514;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;40486:82;-1:-1:-1;40579:12:0;40615:20;;;:46;;-1:-1:-1;40639:22:0;;40615:46;40612:60;;;40664:7;;;40386:1744::o;40612:60::-;40705:18;;:23;;40726:2;40705:23;:::i;:::-;40687:15;:41;40684:111;;;40760:18;;:23;;40781:2;40760:23;:::i;:::-;40742:41;;40684:111;40837:15;;;;;-1:-1:-1;;;;;40837:15:0;40807:17;22144:18;;;:9;:18;;;;;;40807:46;;40913:23;40998:1;40978:17;40957:18;;40939:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;40913:86;-1:-1:-1;41010:26:0;41039:65;41094:9;41039:36;:15;40913:86;41039:19;:36::i;:::-;:54;;:65::i;:::-;41010:94;-1:-1:-1;41153:21:0;41187:36;41010:94;41187:16;:36::i;:::-;41245:18;41266:44;:21;41292:17;41266:25;:44::i;:::-;41245:65;;41331:23;41357:57;41396:17;41357:34;41372:18;;41357:10;:14;;:34;;;;:::i;:57::-;41331:83;;41425:17;41445:51;41478:17;41445:28;41460:12;;41445:10;:14;;:28;;;;:::i;:51::-;41425:71;-1:-1:-1;41527:23:0;41425:71;41553:28;41566:15;41553:10;:28;:::i;:::-;:40;;;;:::i;:::-;41645:1;41624:18;:22;;;41657:18;:22;;;41690:12;:16;;;41748:9;;41740:45;;41527:66;;-1:-1:-1;;;;;;41748:9:0;;41771;;41740:45;41645:1;41740:45;41771:9;41748;41740:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41727:58:0;;-1:-1:-1;;41809:19:0;;;;;:42;;;41850:1;41832:15;:19;41809:42;41806:210;;;41867:46;41880:15;41897;41867:12;:46::i;:::-;41985:18;;41933:71;;;16393:25:1;;;16449:2;16434:18;;16427:34;;;16477:18;;;16470:34;;;;41933:71:0;;;;;;16381:2:1;41933:71:0;;;41806:210;42067:15;;42059:63;;42067:15;;;;-1:-1:-1;;;;;42067:15:0;;42096:21;;42059:63;;;;42096:21;42067:15;42059:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;40386:1744:0:o;43480:803::-;43580:15;43563:14;:32;43689:29;;-1:-1:-1;;;43689:29:0;;-1:-1:-1;;;;;43704:13:0;1658:32:1;43689:29:0;;;1640:51:1;43537:4:0;;;;43689;;:14;;1613:18:1;;43689:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43658:60;;43776:20;43799:53;43846:5;43799:42;43824:16;;43799:20;:24;;:42;;;;:::i;:53::-;43776:76;-1:-1:-1;43965:16:0;;43961:108;;43997:60;44012:13;44035:6;44044:12;43997:14;:60::i;:::-;44152:19;44189:13;44152:51;;44214:4;-1:-1:-1;;;;;44214:9:0;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;44241:12:0;;;;-1:-1:-1;44241:12:0;;-1:-1:-1;44241:12:0;44271:4;44264:11;;;;;43480:803;:::o;8598:136::-;8656:7;8683:43;8687:1;8690;8683:43;;;;;;;;;;;;;;;;;:3;:43::i;11063:278::-;11149:7;11184:12;11177:5;11169:28;;;;-1:-1:-1;;;11169:28:0;;;;;;;;:::i;:::-;-1:-1:-1;11208:9:0;11220:5;11224:1;11220;:5;:::i;39248:601::-;39400:16;;;39414:1;39400:16;;;;;;;;39376:21;;39400:16;;;;;;;;;;-1:-1:-1;39400:16:0;39376:40;;39445:4;39427;39432:1;39427:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;39427:23:0;;;-1:-1:-1;;;;;39427:23:0;;;;;39471:15;-1:-1:-1;;;;;39471:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39461:4;39466:1;39461:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;39461:32:0;;;-1:-1:-1;;;;;39461:32:0;;;;;39506:62;39523:4;39538:15;39556:11;39506:8;:62::i;:::-;39607:224;;-1:-1:-1;;;39607:224:0;;-1:-1:-1;;;;;39607:15:0;:66;;;;:224;;39688:11;;39714:1;;39758:4;;39785;;39805:15;;39607:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39303:546;39248:601;:::o;39861:517::-;40009:62;40026:4;40041:15;40059:11;40009:8;:62::i;:::-;40114:256;;-1:-1:-1;;;40114:256:0;;40186:4;40114:256;;;18361:34:1;18411:18;;;18404:34;;;40232:1:0;18454:18:1;;;18447:34;;;18497:18;;;18490:34;26365:6:0;18540:19:1;;;18533:44;40344:15:0;18593:19:1;;;18586:35;40114:15:0;-1:-1:-1;;;;;40114:31:0;;;;40153:9;;18295:19:1;;40114:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;39861:517;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3092:316;3166:6;3174;3182;3235:2;3223:9;3214:7;3210:23;3206:32;3203:52;;;3251:1;3248;3241:12;3203:52;3287:9;3274:23;3264:33;;3344:2;3333:9;3329:18;3316:32;3306:42;;3367:35;3398:2;3387:9;3383:18;3367:35;:::i;:::-;3357:45;;3092:316;;;;;:::o;3413:315::-;3478:6;3486;3539:2;3527:9;3518:7;3514:23;3510:32;3507:52;;;3555:1;3552;3545:12;3507:52;3594:9;3581:23;3613:31;3638:5;3613:31;:::i;:::-;3663:5;-1:-1:-1;3687:35:1;3718:2;3703:18;;3687:35;:::i;:::-;3677:45;;3413:315;;;;;:::o;3733:316::-;3810:6;3818;3826;3879:2;3867:9;3858:7;3854:23;3850:32;3847:52;;;3895:1;3892;3885:12;3847:52;-1:-1:-1;;3918:23:1;;;3988:2;3973:18;;3960:32;;-1:-1:-1;4039:2:1;4024:18;;;4011:32;;3733:316;-1:-1:-1;3733:316:1:o;4054:180::-;4110:6;4163:2;4151:9;4142:7;4138:23;4134:32;4131:52;;;4179:1;4176;4169:12;4131:52;4202:26;4218:9;4202:26;:::i;4239:388::-;4307:6;4315;4368:2;4356:9;4347:7;4343:23;4339:32;4336:52;;;4384:1;4381;4374:12;4336:52;4423:9;4410:23;4442:31;4467:5;4442:31;:::i;:::-;4492:5;-1:-1:-1;4549:2:1;4534:18;;4521:32;4562:33;4521:32;4562:33;:::i;:::-;4614:7;4604:17;;;4239:388;;;;;:::o;4632:356::-;4834:2;4816:21;;;4853:18;;;4846:30;4912:34;4907:2;4892:18;;4885:62;4979:2;4964:18;;4632:356::o;4993:380::-;5072:1;5068:12;;;;5115;;;5136:61;;5190:4;5182:6;5178:17;5168:27;;5136:61;5243:2;5235:6;5232:14;5212:18;5209:38;5206:161;;5289:10;5284:3;5280:20;5277:1;5270:31;5324:4;5321:1;5314:15;5352:4;5349:1;5342:15;5206:161;;4993:380;;;:::o;5378:351::-;5580:2;5562:21;;;5619:2;5599:18;;;5592:30;5658:29;5653:2;5638:18;;5631:57;5720:2;5705:18;;5378:351::o;5734:127::-;5795:10;5790:3;5786:20;5783:1;5776:31;5826:4;5823:1;5816:15;5850:4;5847:1;5840:15;5866:168;5939:9;;;5970;;5987:15;;;5981:22;;5967:37;5957:71;;6008:18;;:::i;6039:217::-;6079:1;6105;6095:132;;6149:10;6144:3;6140:20;6137:1;6130:31;6184:4;6181:1;6174:15;6212:4;6209:1;6202:15;6095:132;-1:-1:-1;6241:9:1;;6039:217::o;7514:128::-;7581:9;;;7602:11;;;7599:37;;;7616:18;;:::i;7647:125::-;7712:9;;;7733:10;;;7730:36;;;7746:18;;:::i;10988:184::-;11058:6;11111:2;11099:9;11090:7;11086:23;11082:32;11079:52;;;11127:1;11124;11117:12;11079:52;-1:-1:-1;11150:16:1;;10988:184;-1:-1:-1;10988:184:1:o;11985:401::-;12187:2;12169:21;;;12226:2;12206:18;;;12199:30;12265:34;12260:2;12245:18;;12238:62;-1:-1:-1;;;12331:2:1;12316:18;;12309:35;12376:3;12361:19;;11985:401::o;12391:399::-;12593:2;12575:21;;;12632:2;12612:18;;;12605:30;12671:34;12666:2;12651:18;;12644:62;-1:-1:-1;;;12737:2:1;12722:18;;12715:33;12780:3;12765:19;;12391:399::o;16647:127::-;16708:10;16703:3;16699:20;16696:1;16689:31;16739:4;16736:1;16729:15;16763:4;16760:1;16753:15;16779:251;16849:6;16902:2;16890:9;16881:7;16877:23;16873:32;16870:52;;;16918:1;16915;16908:12;16870:52;16950:9;16944:16;16969:31;16994:5;16969:31;:::i;17035:980::-;17297:4;17345:3;17334:9;17330:19;17376:6;17365:9;17358:25;17402:2;17440:6;17435:2;17424:9;17420:18;17413:34;17483:3;17478:2;17467:9;17463:18;17456:31;17507:6;17542;17536:13;17573:6;17565;17558:22;17611:3;17600:9;17596:19;17589:26;;17650:2;17642:6;17638:15;17624:29;;17671:1;17681:195;17695:6;17692:1;17689:13;17681:195;;;17760:13;;-1:-1:-1;;;;;17756:39:1;17744:52;;17851:15;;;;17816:12;;;;17792:1;17710:9;17681:195;;;-1:-1:-1;;;;;;;17932:32:1;;;;17927:2;17912:18;;17905:60;-1:-1:-1;;;17996:3:1;17981:19;17974:35;17893:3;17035:980;-1:-1:-1;;;17035:980:1:o;18632:306::-;18720:6;18728;18736;18789:2;18777:9;18768:7;18764:23;18760:32;18757:52;;;18805:1;18802;18795:12;18757:52;18834:9;18828:16;18818:26;;18884:2;18873:9;18869:18;18863:25;18853:35;;18928:2;18917:9;18913:18;18907:25;18897:35;;18632:306;;;;;:::o
Swarm Source
ipfs://94a280246953984d1c3883388e2e53e9d1ce18940b6297284dd74bda1fd14a43
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.