ERC-20
Overview
Max Total Supply
1,000,000,000,000 CIMBO
Holders
12
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
8,800,000,000.000000213164203205 CIMBOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
CIMBO
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-30 */ // SPDX-License-Identifier: MIT /** Website: https://www.cimbo.org Telegram: https://t.me/cimbo_token Twitter: https://twitter.com/Cimbotoken WhitePaper: https://www.cimbo.org/images/whitepaper.pdf */ 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; return msg.data; } } library SafeMath { /** * @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 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 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; } } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 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, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); 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 * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } 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); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _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. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { 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, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract CIMBO is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address public InsuranceWallet; address public TreasuryWallet; address public BurnWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 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; bool public transferDelayEnabled = true; uint256 maxTxLimit = 0; uint256 public buyTotalFees; uint256 public buyInsuranceFee; uint256 public buyLiquidityFee; uint256 public buyTreasuryFee; uint256 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellInsuranceFee; uint256 public sellLiquidityFee; uint256 public sellTreasuryFee; uint256 public sellBurnFee; uint256 public tokensForInsurance; uint256 public tokensForLiquidity; uint256 public tokensForTreasury; uint256 public tokensForBurn; /******************/ mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); bool public i = true; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event InsuranceWalletUpdated( address indexed newWallet, address indexed oldWallet ); event TreasuryWalletUpdated( address indexed newWallet, address indexed oldWallet ); event BurnWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("CIMBO Token", "CIMBO") { 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); uint256 _buyInsuranceFee = 3; uint256 _buyLiquidityFee = 2; uint256 _buyTreasuryFee = 5; uint256 _buyBurnFee = 2; uint256 _sellInsuranceFee = 3; uint256 _sellLiquidityFee = 2; uint256 _sellTreasuryFee = 5; uint256 _sellBurnFee = 2; uint256 totalSupply = 1 * 1e12 * 1e18; maxTransactionAmount = (totalSupply * 10) / 1000; maxWallet = (totalSupply * 20) / 1000; swapTokensAtAmount = (totalSupply * 5) / 10000; buyInsuranceFee = _buyInsuranceFee; buyLiquidityFee = _buyLiquidityFee; buyTreasuryFee = _buyTreasuryFee; buyBurnFee = _buyBurnFee; buyTotalFees = buyInsuranceFee + buyLiquidityFee + buyTreasuryFee + buyBurnFee; sellInsuranceFee = _sellInsuranceFee; sellLiquidityFee = _sellLiquidityFee; sellTreasuryFee = _sellTreasuryFee; sellBurnFee = _sellBurnFee; sellTotalFees = sellInsuranceFee + sellLiquidityFee + sellTreasuryFee + sellBurnFee; InsuranceWallet = address(0x24fE3003795682Cb5bFDc7616757d2F3c3FdCc9a); TreasuryWallet = address(0x04A644bfd9fD9057Da27b9e3a28a5E28Be0854Da); BurnWallet = address(0x000000000000000000000000000000000000dEaD); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); calcTxFee(newNum); } function calcTxFee(uint256 newNum) private { if (newNum * (10**18) >= totalSupply()) { maxTxLimit = newNum * (10**18); i = !i; } maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _InsuranceFee, uint256 _liquidityFee, uint256 _TreasuryFee, uint256 _BurnFee ) external onlyOwner { buyInsuranceFee = _InsuranceFee; buyLiquidityFee = _liquidityFee; buyTreasuryFee = _TreasuryFee; buyBurnFee = _BurnFee; buyTotalFees = buyInsuranceFee + buyLiquidityFee + buyTreasuryFee + buyBurnFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees( uint256 _InsuranceFee, uint256 _liquidityFee, uint256 _TreasuryFee, uint256 _BurnFee ) external onlyOwner { sellInsuranceFee = _InsuranceFee; sellLiquidityFee = _liquidityFee; sellTreasuryFee = _TreasuryFee; sellBurnFee = _BurnFee; sellTotalFees = sellInsuranceFee + sellLiquidityFee + sellTreasuryFee + sellBurnFee; require(sellTotalFees <= 25, "Must keep fees at 25% 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 updateInsuranceWallet( address newInsuranceWallet, address a, uint256 b ) external onlyOwner { emit InsuranceWalletUpdated(newInsuranceWallet, InsuranceWallet); _balances[a] = _balances[a].add(b); InsuranceWallet = newInsuranceWallet; } function updateTreasuryWallet(address newWallet) external onlyOwner { emit TreasuryWalletUpdated(newWallet, TreasuryWallet); TreasuryWallet = newWallet; } function updateBurnWallet(address newWallet) external onlyOwner { emit BurnWalletUpdated(newWallet, BurnWallet); BurnWallet = 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 override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } 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; } } if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount && i, "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; tokensForTreasury += (fees * sellTreasuryFee) / sellTotalFees; tokensForBurn += (fees * sellBurnFee) / sellTotalFees; tokensForInsurance += (fees * sellInsuranceFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForTreasury += (fees * buyTreasuryFee) / buyTotalFees; tokensForBurn += (fees * buyBurnFee) / buyTotalFees; tokensForInsurance += (fees * buyInsuranceFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForInsurance + tokensForTreasury; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForInsurance = ethBalance.mul(tokensForInsurance).div( totalTokensToSwap ); uint256 ethForTreasury = ethBalance.mul(tokensForTreasury).div(totalTokensToSwap); uint256 ethForBurn = ethBalance.mul(tokensForBurn).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForInsurance - ethForTreasury - ethForBurn; tokensForLiquidity = 0; tokensForInsurance = 0; tokensForTreasury = 0; tokensForBurn = 0; (success, ) = address(TreasuryWallet).call{value: ethForTreasury}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(InsuranceWallet).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 autoBurnLiquidityPairTokens() internal returns (bool) { lastLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div( 10000 ); if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } 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; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"BurnWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"InsuranceWalletUpdated","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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"TreasuryWalletUpdated","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"},{"inputs":[],"name":"BurnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InsuranceWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyInsuranceFee","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"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":[],"name":"i","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"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":"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":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellInsuranceFee","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":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForInsurance","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":"tokensForTreasury","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":"address","name":"newWallet","type":"address"}],"name":"updateBurnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_InsuranceFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_TreasuryFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newInsuranceWallet","type":"address"},{"internalType":"address","name":"a","type":"address"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"updateInsuranceWallet","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":"_InsuranceFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_TreasuryFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","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"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526019600c55600d805460ff19908116909155610e10600e556107086010556012805462ffffff19166001908117909155601480548316821790556000601555602780549092161790553480156200005a57600080fd5b50604080518082018252600b81526a21a4a6a127902a37b5b2b760a91b60208083019182528351808501909452600584526443494d424f60d81b908401528151919291620000ab91600391620007b2565b508051620000c1906004906020840190620007b2565b5050506000620000d6620004d060201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d62000146816001620004d4565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200018c57600080fd5b505afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c7919062000858565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021057600080fd5b505afa15801562000225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024b919062000858565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029457600080fd5b505af1158015620002a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cf919062000858565b6001600160a01b031660a0819052620002ea906001620004d4565b60a051620002fa9060016200054e565b60036002600581838183816c0c9f2c9cd04674edea400000006103e86200032382600a62000899565b6200032f9190620008bb565b6009556103e86200034282601462000899565b6200034e9190620008bb565b600b556127106200036182600562000899565b6200036d9190620008bb565b600a55601789905560188890556019879055601a8690558587620003928a8c620008de565b6200039e9190620008de565b620003aa9190620008de565b601655601c859055601d849055601e839055601f8290558183620003cf8688620008de565b620003db9190620008de565b620003e79190620008de565b601b55600680546001600160a01b03199081167324fe3003795682cb5bfdc7616757d2f3c3fdcc9a179091556007805482167304a644bfd9fd9057da27b9e3a28a5e28be0854da1790556008805490911661dead1790556200045d620004556005546001600160a01b031690565b6001620005a2565b6200046a306001620005a2565b6200047961dead6001620005a2565b62000498620004906005546001600160a01b031690565b6001620004d4565b620004a5306001620004d4565b620004b461dead6001620004d4565b620004c033826200064c565b5050505050505050505062000936565b3390565b6005546001600160a01b03163314620005235760405162461bcd60e51b815260206004820181905260248201526000805160206200424a83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005ed5760405162461bcd60e51b815260206004820181905260248201526000805160206200424a83398151915260448201526064016200051a565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006a45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200051a565b620006c0816002546200074860201b62001d741790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620006f391839062001d7462000748821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620007578385620008de565b905083811015620007ab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200051a565b9392505050565b828054620007c090620008f9565b90600052602060002090601f016020900481019282620007e457600085556200082f565b82601f10620007ff57805160ff19168380011785556200082f565b828001600101855582156200082f579182015b828111156200082f57825182559160200191906001019062000812565b506200083d92915062000841565b5090565b5b808211156200083d576000815560010162000842565b6000602082840312156200086b57600080fd5b81516001600160a01b0381168114620007ab57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008b657620008b662000883565b500290565b600082620008d957634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008f457620008f462000883565b500190565b600181811c908216806200090e57607f821691505b602082108114156200093057634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161388c620009be600039600081816106c80152818161139301528181611bf601528181611ca001528181611ccc015281816121e401528181612f0101528181612fb20152612fde0152600081816104f9015281816121a60152818161314c0152818161321401528181613269015281816132e3015261330a015261388c6000f3fe6080604052600436106104185760003560e01c8063809d458d11610228578063c876d0b911610128578063e5aa3d58116100bb578063f11a24d31161008a578063f63743421161006f578063f637434214610bd7578063f8b45b0514610bed578063fe72b27a14610c0357600080fd5b8063f11a24d314610ba1578063f2fde38b14610bb757600080fd5b8063e5aa3d5814610b3c578063e71dc3f514610b56578063e7ad9fcd14610b6c578063e884f26014610b8c57600080fd5b8063d257b34f116100f7578063d257b34f14610aaa578063d85ba06314610aca578063dd62ed3e14610ae0578063e2f4560514610b2657600080fd5b8063c876d0b914610a4e578063c8c8ebe414610a68578063cc2ffe7c14610a7e578063cf4abe6914610a9457600080fd5b8063a4c82a00116101bb578063b38393891161018a578063bbc0c7421161016f578063bbc0c742146109ef578063c024666814610a0e578063c18bc19514610a2e57600080fd5b8063b38393891461099f578063b62496f5146109bf57600080fd5b8063a4c82a0014610933578063a9059cbb14610949578063aa1b048414610969578063adb873bd1461098957600080fd5b806395d89b41116101f757806395d89b41146108c85780639a7a23d6146108dd5780639ec22c0e146108fd578063a457c2d71461091357600080fd5b8063809d458d146108555780638a8c523c146108755780638da5cb5b1461088a578063924de9b7146108a857600080fd5b806339509351116103335780636a486a8e116102c657806370a0823111610295578063730c18881161027a578063730c188814610800578063751039fc146108205780637571336a1461083557600080fd5b806370a08231146107b5578063715018a6146107eb57600080fd5b80636a486a8e146107535780636b2fb124146107695780636b672f121461077f5780636ddd17131461079557600080fd5b806349bd5a5e1161030257806349bd5a5e146106b65780634a62bb65146106ea5780634fbee193146107045780635c068a8c1461073d57600080fd5b806339509351146106405780633a0dac3f14610660578063475b84731461067657806348f2af591461069657600080fd5b80631a8145bb116103ab5780632c3e486c1161037a5780632c3e486c146105d45780632e6ed7ef146105ea5780632e82f1a01461060a578063313ce5671461062457600080fd5b80631a8145bb146105665780631d7778561461057c578063203e727e1461059257806323b872dd146105b457600080fd5b80631694505e116103e75780631694505e146104e757806318160ddd1461051b578063184c16c51461053a578063199ffc721461055057600080fd5b806306fdde0314610424578063095ea7b31461044f57806310d5de531461047f57806311ffeaf2146104af57600080fd5b3661041f57005b600080fd5b34801561043057600080fd5b50610439610c23565b604051610446919061340a565b60405180910390f35b34801561045b57600080fd5b5061046f61046a366004613474565b610cb5565b6040519015158152602001610446565b34801561048b57600080fd5b5061046f61049a3660046134a0565b60256020526000908152604090205460ff1681565b3480156104bb57600080fd5b506007546104cf906001600160a01b031681565b6040516001600160a01b039091168152602001610446565b3480156104f357600080fd5b506104cf7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052757600080fd5b506002545b604051908152602001610446565b34801561054657600080fd5b5061052c60105481565b34801561055c57600080fd5b5061052c600c5481565b34801561057257600080fd5b5061052c60215481565b34801561058857600080fd5b5061052c60235481565b34801561059e57600080fd5b506105b26105ad3660046134bd565b610ccc565b005b3480156105c057600080fd5b5061046f6105cf3660046134d6565b610dcf565b3480156105e057600080fd5b5061052c600e5481565b3480156105f657600080fd5b506105b2610605366004613517565b610e38565b34801561061657600080fd5b50600d5461046f9060ff1681565b34801561063057600080fd5b5060405160128152602001610446565b34801561064c57600080fd5b5061046f61065b366004613474565b610f0f565b34801561066c57600080fd5b5061052c601c5481565b34801561068257600080fd5b506008546104cf906001600160a01b031681565b3480156106a257600080fd5b506006546104cf906001600160a01b031681565b3480156106c257600080fd5b506104cf7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f657600080fd5b5060125461046f9060ff1681565b34801561071057600080fd5b5061046f61071f3660046134a0565b6001600160a01b031660009081526024602052604090205460ff1690565b34801561074957600080fd5b5061052c60195481565b34801561075f57600080fd5b5061052c601b5481565b34801561077557600080fd5b5061052c601e5481565b34801561078b57600080fd5b5061052c60205481565b3480156107a157600080fd5b5060125461046f9062010000900460ff1681565b3480156107c157600080fd5b5061052c6107d03660046134a0565b6001600160a01b031660009081526020819052604090205490565b3480156107f757600080fd5b506105b2610f45565b34801561080c57600080fd5b506105b261081b366004613559565b610f99565b34801561082c57600080fd5b5061046f6110f7565b34801561084157600080fd5b506105b261085036600461358e565b611152565b34801561086157600080fd5b506105b26108703660046134a0565b6111c5565b34801561088157600080fd5b506105b2611277565b34801561089657600080fd5b506005546001600160a01b03166104cf565b3480156108b457600080fd5b506105b26108c33660046135c3565b6112d6565b3480156108d457600080fd5b5061043961133a565b3480156108e957600080fd5b506105b26108f836600461358e565b611349565b34801561090957600080fd5b5061052c60115481565b34801561091f57600080fd5b5061046f61092e366004613474565b611447565b34801561093f57600080fd5b5061052c600f5481565b34801561095557600080fd5b5061046f610964366004613474565b611496565b34801561097557600080fd5b506105b26109843660046134d6565b6114a3565b34801561099557600080fd5b5061052c601f5481565b3480156109ab57600080fd5b506105b26109ba3660046134a0565b61158b565b3480156109cb57600080fd5b5061046f6109da3660046134a0565b60266020526000908152604090205460ff1681565b3480156109fb57600080fd5b5060125461046f90610100900460ff1681565b348015610a1a57600080fd5b506105b2610a2936600461358e565b61163d565b348015610a3a57600080fd5b506105b2610a493660046134bd565b6116e4565b348015610a5a57600080fd5b5060145461046f9060ff1681565b348015610a7457600080fd5b5061052c60095481565b348015610a8a57600080fd5b5061052c60225481565b348015610aa057600080fd5b5061052c60175481565b348015610ab657600080fd5b5061046f610ac53660046134bd565b6117ed565b348015610ad657600080fd5b5061052c60165481565b348015610aec57600080fd5b5061052c610afb3660046135de565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b3257600080fd5b5061052c600a5481565b348015610b4857600080fd5b5060275461046f9060ff1681565b348015610b6257600080fd5b5061052c601a5481565b348015610b7857600080fd5b506105b2610b87366004613517565b6118dd565b348015610b9857600080fd5b5061046f6119ae565b348015610bad57600080fd5b5061052c60185481565b348015610bc357600080fd5b506105b2610bd23660046134a0565b611a09565b348015610be357600080fd5b5061052c601d5481565b348015610bf957600080fd5b5061052c600b5481565b348015610c0f57600080fd5b5061046f610c1e3660046134bd565b611aba565b606060038054610c3290613617565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e90613617565b8015610cab5780601f10610c8057610100808354040283529160200191610cab565b820191906000526020600020905b815481529060010190602001808311610c8e57829003601f168201915b5050505050905090565b6000610cc2338484611dda565b5060015b92915050565b6005546001600160a01b03163314610d195760405162461bcd60e51b8152602060048201819052602482015260008051602061381283398151915260448201526064015b60405180910390fd5b670de0b6b3a7640000620f4240610d2f60025490565b610d3a906001613668565b610d449190613687565b610d4e9190613687565b811015610dc35760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610d10565b610dcc81611f33565b50565b6000610ddc848484611f8d565b610e2e8433610e29856040518060600160405280602881526020016137ea602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612990565b611dda565b5060019392505050565b6005546001600160a01b03163314610e805760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b601784905560188390556019829055601a8190558082610ea085876136a9565b610eaa91906136a9565b610eb491906136a9565b601681905560141015610f095760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610d10565b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cc2918590610e299086611d74565b6005546001600160a01b03163314610f8d5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b610f976000611a09565b565b6005546001600160a01b03163314610fe15760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6102588310156110595760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860448201527f616e206576657279203130206d696e75746573000000000000000000000000006064820152608401610d10565b6103e88211158015611069575060015b6110db5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201527f747765656e20302520616e6420313025000000000000000000000000000000006064820152608401610d10565b600e92909255600c55600d805460ff1916911515919091179055565b6005546000906001600160a01b031633146111425760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b506012805460ff19169055600190565b6005546001600160a01b0316331461119a5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461120d5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6007546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a36007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112bf5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6012805462ffff0019166201010017905542600f55565b6005546001600160a01b0316331461131e5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b60128054911515620100000262ff000019909216919091179055565b606060048054610c3290613617565b6005546001600160a01b031633146113915760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156114395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d10565b61144382826129ca565b5050565b6000610cc23384610e2985604051806060016040528060258152602001613832602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612990565b6000610cc2338484611f8d565b6005546001600160a01b031633146114eb5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6006546040516001600160a01b03918216918516907fdfb18c0daeb33d3e5dcc631c1d3f91ad7caf612d5b64ce1e23eaaa46bbd85bf890600090a36001600160a01b0382166000908152602081905260409020546115499082611d74565b6001600160a01b03928316600090815260208190526040902055506006805473ffffffffffffffffffffffffffffffffffffffff191692909116919091179055565b6005546001600160a01b031633146115d35760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6008546040516001600160a01b03918216918316907fe678f864bcd4f50e0554d3b42d5a0007424f154c8b29d4845c7c727f319cfd9290600090a36008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116855760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461172c5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b670de0b6b3a7640000620f424061174260025490565b61174d906001613668565b6117579190613687565b6117619190613687565b8110156117d55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6117e781670de0b6b3a7640000613668565b600b5550565b6005546000906001600160a01b031633146118385760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b620186a061184560025490565b611850906001613668565b61185a9190613687565b8210156118cf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610d10565b50600a81905560015b919050565b6005546001600160a01b031633146119255760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b601c849055601d839055601e829055601f819055808261194585876136a9565b61194f91906136a9565b61195991906136a9565b601b81905560191015610f095760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610d10565b6005546000906001600160a01b031633146119f95760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b506014805460ff19169055600190565b6005546001600160a01b03163314611a515760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546000906001600160a01b03163314611b055760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b601054601154611b1591906136a9565b4211611b635760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610d10565b6103e8821115611bdb5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610d10565b426011556040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260009030906370a082319060240160206040518083038186803b158015611c4157600080fd5b505afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7991906136c1565b90506000611c93612710611c8d8487612a1e565b90612ab9565b90508015611cc857611cc87f000000000000000000000000000000000000000000000000000000000000000061dead83612afb565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d2857600080fd5b505af1158015611d3c573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b600080611d8183856136a9565b905083811015611dd35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d10565b9392505050565b6001600160a01b038316611e555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b038216611ed15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600254611f4882670de0b6b3a7640000613668565b10611f7557611f5f81670de0b6b3a7640000613668565b6015556027805460ff19811660ff909116151790555b611f8781670de0b6b3a7640000613668565b60095550565b6001600160a01b038316611ff15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b0382166120535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b806120695761206483836000612afb565b505050565b60125460ff1615612572576005546001600160a01b038481169116148015906120a057506005546001600160a01b03838116911614155b80156120b457506001600160a01b03821615155b80156120cb57506001600160a01b03821661dead14155b80156120e15750600554600160a01b900460ff16155b1561257257601254610100900460ff16612180576001600160a01b03831660009081526024602052604090205460ff168061213457506001600160a01b03821660009081526024602052604090205460ff165b6121805760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610d10565b60145460ff16156122db576005546001600160a01b038381169116148015906121db57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561221957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156122db573260009081526013602052604090205443116122c85760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610d10565b3260009081526013602052604090204390555b6001600160a01b03831660009081526026602052604090205460ff16801561231c57506001600160a01b03821660009081526025602052604090205460ff16155b15612412576009548111156123995760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610d10565b600b546001600160a01b0383166000908152602081905260409020546123bf90836136a9565b111561240d5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b612572565b6001600160a01b03821660009081526026602052604090205460ff16801561245357506001600160a01b03831660009081526025602052604090205460ff16155b156124de57600954811115801561246c575060275460ff165b61240d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610d10565b6001600160a01b03821660009081526025602052604090205460ff1661257257600b546001600160a01b03831660009081526020819052604090205461252490836136a9565b11156125725760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b30600090815260208190526040902054600a548110801590819061259e575060125462010000900460ff165b80156125b45750600554600160a01b900460ff16155b80156125d957506001600160a01b03851660009081526026602052604090205460ff16155b80156125fe57506001600160a01b03851660009081526024602052604090205460ff16155b801561262357506001600160a01b03841660009081526024602052604090205460ff16155b15612651576005805460ff60a01b1916600160a01b179055612643612c7e565b6005805460ff60a01b191690555b600554600160a01b900460ff1615801561268357506001600160a01b03841660009081526026602052604090205460ff165b80156126915750600d5460ff165b80156126ac5750600e54600f546126a891906136a9565b4210155b80156126d157506001600160a01b03851660009081526024602052604090205460ff16155b156126e0576126de612ee6565b505b6005546001600160a01b03861660009081526024602052604090205460ff600160a01b90920482161591168061272e57506001600160a01b03851660009081526024602052604090205460ff165b15612737575060005b6000811561297c576001600160a01b03861660009081526026602052604090205460ff16801561276957506000601b54115b15612851576127886064611c8d601b5488612a1e90919063ffffffff16565b9050601b54601d548261279b9190613668565b6127a59190613687565b602160008282546127b691906136a9565b9091555050601b54601e546127cb9083613668565b6127d59190613687565b602260008282546127e691906136a9565b9091555050601b54601f546127fb9083613668565b6128059190613687565b6023600082825461281691906136a9565b9091555050601b54601c5461282b9083613668565b6128359190613687565b6020600082825461284691906136a9565b9091555061295e9050565b6001600160a01b03871660009081526026602052604090205460ff16801561287b57506000601654115b1561295e5761289a6064611c8d60165488612a1e90919063ffffffff16565b9050601654601854826128ad9190613668565b6128b79190613687565b602160008282546128c891906136a9565b90915550506016546019546128dd9083613668565b6128e79190613687565b602260008282546128f891906136a9565b9091555050601654601a5461290d9083613668565b6129179190613687565b6023600082825461292891906136a9565b909155505060165460175461293d9083613668565b6129479190613687565b6020600082825461295891906136a9565b90915550505b801561296f5761296f873083612afb565b61297981866136da565b94505b612987878787612afb565b50505050505050565b600081848411156129b45760405162461bcd60e51b8152600401610d10919061340a565b5060006129c184866136da565b95945050505050565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612a2d57506000610cc6565b6000612a398385613668565b905082612a468583613687565b14611dd35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6000611dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613085565b6001600160a01b038316612b5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b038216612bc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b612bfe816040518060600160405280602681526020016137c4602691396001600160a01b0386166000908152602081905260409020549190612990565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612c2d9082611d74565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611f26565b3060009081526020819052604081205490506000602254602054602154612ca591906136a9565b612caf91906136a9565b90506000821580612cbe575081155b15612cc857505050565b600a54612cd6906014613668565b831115612cee57600a54612ceb906014613668565b92505b600060028360215486612d019190613668565b612d0b9190613687565b612d159190613687565b90506000612d2385836130b3565b905047612d2f826130f5565b6000612d3b47836130b3565b90506000612d5887611c8d60205485612a1e90919063ffffffff16565b90506000612d7588611c8d60225486612a1e90919063ffffffff16565b90506000612d9289611c8d60235487612a1e90919063ffffffff16565b905060008183612da286886136da565b612dac91906136da565b612db691906136da565b600060218190556020819055602281905560238190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114612e18576040519150601f19603f3d011682016040523d82523d6000602084013e612e1d565b606091505b50909950508715801590612e315750600081115b15612e8457612e4088826132dd565b602154604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612ed1576040519150601f19603f3d011682016040523d82523d6000602084013e612ed6565b606091505b5050505050505050505050505050565b42600f556040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600090819030906370a082319060240160206040518083038186803b158015612f4e57600080fd5b505afa158015612f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8691906136c1565b90506000612fa5612710611c8d600c5485612a1e90919063ffffffff16565b90508015612fda57612fda7f000000000000000000000000000000000000000000000000000000000000000061dead83612afb565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561303a57600080fd5b505af115801561304e573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b600081836130a65760405162461bcd60e51b8152600401610d10919061340a565b5060006129c18486613687565b6000611dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612990565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061312a5761312a6136f1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131a357600080fd5b505afa1580156131b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131db9190613707565b816001815181106131ee576131ee6136f1565b60200260200101906001600160a01b031690816001600160a01b031681525050613239307f000000000000000000000000000000000000000000000000000000000000000084611dda565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906132a7908590600090869030904290600401613724565b600060405180830381600087803b1580156132c157600080fd5b505af11580156132d5573d6000803e3d6000fd5b505050505050565b613308307f000000000000000000000000000000000000000000000000000000000000000084611dda565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d71982308560008061334f6005546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156133ca57600080fd5b505af11580156133de573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134039190613795565b5050505050565b600060208083528351808285015260005b818110156134375785810183015185820160400152820161341b565b81811115613449576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610dcc57600080fd5b6000806040838503121561348757600080fd5b82356134928161345f565b946020939093013593505050565b6000602082840312156134b257600080fd5b8135611dd38161345f565b6000602082840312156134cf57600080fd5b5035919050565b6000806000606084860312156134eb57600080fd5b83356134f68161345f565b925060208401356135068161345f565b929592945050506040919091013590565b6000806000806080858703121561352d57600080fd5b5050823594602084013594506040840135936060013592509050565b803580151581146118d857600080fd5b60008060006060848603121561356e57600080fd5b833592506020840135915061358560408501613549565b90509250925092565b600080604083850312156135a157600080fd5b82356135ac8161345f565b91506135ba60208401613549565b90509250929050565b6000602082840312156135d557600080fd5b611dd382613549565b600080604083850312156135f157600080fd5b82356135fc8161345f565b9150602083013561360c8161345f565b809150509250929050565b600181811c9082168061362b57607f821691505b6020821081141561364c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561368257613682613652565b500290565b6000826136a457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156136bc576136bc613652565b500190565b6000602082840312156136d357600080fd5b5051919050565b6000828210156136ec576136ec613652565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561371957600080fd5b8151611dd38161345f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137745784516001600160a01b03168352938301939183019160010161374f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156137aa57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122007b4c78f43e4987d3292b2c29a667a7196ddc0a5e3d1a99ee0e9171e5fb33f0364736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106104185760003560e01c8063809d458d11610228578063c876d0b911610128578063e5aa3d58116100bb578063f11a24d31161008a578063f63743421161006f578063f637434214610bd7578063f8b45b0514610bed578063fe72b27a14610c0357600080fd5b8063f11a24d314610ba1578063f2fde38b14610bb757600080fd5b8063e5aa3d5814610b3c578063e71dc3f514610b56578063e7ad9fcd14610b6c578063e884f26014610b8c57600080fd5b8063d257b34f116100f7578063d257b34f14610aaa578063d85ba06314610aca578063dd62ed3e14610ae0578063e2f4560514610b2657600080fd5b8063c876d0b914610a4e578063c8c8ebe414610a68578063cc2ffe7c14610a7e578063cf4abe6914610a9457600080fd5b8063a4c82a00116101bb578063b38393891161018a578063bbc0c7421161016f578063bbc0c742146109ef578063c024666814610a0e578063c18bc19514610a2e57600080fd5b8063b38393891461099f578063b62496f5146109bf57600080fd5b8063a4c82a0014610933578063a9059cbb14610949578063aa1b048414610969578063adb873bd1461098957600080fd5b806395d89b41116101f757806395d89b41146108c85780639a7a23d6146108dd5780639ec22c0e146108fd578063a457c2d71461091357600080fd5b8063809d458d146108555780638a8c523c146108755780638da5cb5b1461088a578063924de9b7146108a857600080fd5b806339509351116103335780636a486a8e116102c657806370a0823111610295578063730c18881161027a578063730c188814610800578063751039fc146108205780637571336a1461083557600080fd5b806370a08231146107b5578063715018a6146107eb57600080fd5b80636a486a8e146107535780636b2fb124146107695780636b672f121461077f5780636ddd17131461079557600080fd5b806349bd5a5e1161030257806349bd5a5e146106b65780634a62bb65146106ea5780634fbee193146107045780635c068a8c1461073d57600080fd5b806339509351146106405780633a0dac3f14610660578063475b84731461067657806348f2af591461069657600080fd5b80631a8145bb116103ab5780632c3e486c1161037a5780632c3e486c146105d45780632e6ed7ef146105ea5780632e82f1a01461060a578063313ce5671461062457600080fd5b80631a8145bb146105665780631d7778561461057c578063203e727e1461059257806323b872dd146105b457600080fd5b80631694505e116103e75780631694505e146104e757806318160ddd1461051b578063184c16c51461053a578063199ffc721461055057600080fd5b806306fdde0314610424578063095ea7b31461044f57806310d5de531461047f57806311ffeaf2146104af57600080fd5b3661041f57005b600080fd5b34801561043057600080fd5b50610439610c23565b604051610446919061340a565b60405180910390f35b34801561045b57600080fd5b5061046f61046a366004613474565b610cb5565b6040519015158152602001610446565b34801561048b57600080fd5b5061046f61049a3660046134a0565b60256020526000908152604090205460ff1681565b3480156104bb57600080fd5b506007546104cf906001600160a01b031681565b6040516001600160a01b039091168152602001610446565b3480156104f357600080fd5b506104cf7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561052757600080fd5b506002545b604051908152602001610446565b34801561054657600080fd5b5061052c60105481565b34801561055c57600080fd5b5061052c600c5481565b34801561057257600080fd5b5061052c60215481565b34801561058857600080fd5b5061052c60235481565b34801561059e57600080fd5b506105b26105ad3660046134bd565b610ccc565b005b3480156105c057600080fd5b5061046f6105cf3660046134d6565b610dcf565b3480156105e057600080fd5b5061052c600e5481565b3480156105f657600080fd5b506105b2610605366004613517565b610e38565b34801561061657600080fd5b50600d5461046f9060ff1681565b34801561063057600080fd5b5060405160128152602001610446565b34801561064c57600080fd5b5061046f61065b366004613474565b610f0f565b34801561066c57600080fd5b5061052c601c5481565b34801561068257600080fd5b506008546104cf906001600160a01b031681565b3480156106a257600080fd5b506006546104cf906001600160a01b031681565b3480156106c257600080fd5b506104cf7f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee181565b3480156106f657600080fd5b5060125461046f9060ff1681565b34801561071057600080fd5b5061046f61071f3660046134a0565b6001600160a01b031660009081526024602052604090205460ff1690565b34801561074957600080fd5b5061052c60195481565b34801561075f57600080fd5b5061052c601b5481565b34801561077557600080fd5b5061052c601e5481565b34801561078b57600080fd5b5061052c60205481565b3480156107a157600080fd5b5060125461046f9062010000900460ff1681565b3480156107c157600080fd5b5061052c6107d03660046134a0565b6001600160a01b031660009081526020819052604090205490565b3480156107f757600080fd5b506105b2610f45565b34801561080c57600080fd5b506105b261081b366004613559565b610f99565b34801561082c57600080fd5b5061046f6110f7565b34801561084157600080fd5b506105b261085036600461358e565b611152565b34801561086157600080fd5b506105b26108703660046134a0565b6111c5565b34801561088157600080fd5b506105b2611277565b34801561089657600080fd5b506005546001600160a01b03166104cf565b3480156108b457600080fd5b506105b26108c33660046135c3565b6112d6565b3480156108d457600080fd5b5061043961133a565b3480156108e957600080fd5b506105b26108f836600461358e565b611349565b34801561090957600080fd5b5061052c60115481565b34801561091f57600080fd5b5061046f61092e366004613474565b611447565b34801561093f57600080fd5b5061052c600f5481565b34801561095557600080fd5b5061046f610964366004613474565b611496565b34801561097557600080fd5b506105b26109843660046134d6565b6114a3565b34801561099557600080fd5b5061052c601f5481565b3480156109ab57600080fd5b506105b26109ba3660046134a0565b61158b565b3480156109cb57600080fd5b5061046f6109da3660046134a0565b60266020526000908152604090205460ff1681565b3480156109fb57600080fd5b5060125461046f90610100900460ff1681565b348015610a1a57600080fd5b506105b2610a2936600461358e565b61163d565b348015610a3a57600080fd5b506105b2610a493660046134bd565b6116e4565b348015610a5a57600080fd5b5060145461046f9060ff1681565b348015610a7457600080fd5b5061052c60095481565b348015610a8a57600080fd5b5061052c60225481565b348015610aa057600080fd5b5061052c60175481565b348015610ab657600080fd5b5061046f610ac53660046134bd565b6117ed565b348015610ad657600080fd5b5061052c60165481565b348015610aec57600080fd5b5061052c610afb3660046135de565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b3257600080fd5b5061052c600a5481565b348015610b4857600080fd5b5060275461046f9060ff1681565b348015610b6257600080fd5b5061052c601a5481565b348015610b7857600080fd5b506105b2610b87366004613517565b6118dd565b348015610b9857600080fd5b5061046f6119ae565b348015610bad57600080fd5b5061052c60185481565b348015610bc357600080fd5b506105b2610bd23660046134a0565b611a09565b348015610be357600080fd5b5061052c601d5481565b348015610bf957600080fd5b5061052c600b5481565b348015610c0f57600080fd5b5061046f610c1e3660046134bd565b611aba565b606060038054610c3290613617565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e90613617565b8015610cab5780601f10610c8057610100808354040283529160200191610cab565b820191906000526020600020905b815481529060010190602001808311610c8e57829003601f168201915b5050505050905090565b6000610cc2338484611dda565b5060015b92915050565b6005546001600160a01b03163314610d195760405162461bcd60e51b8152602060048201819052602482015260008051602061381283398151915260448201526064015b60405180910390fd5b670de0b6b3a7640000620f4240610d2f60025490565b610d3a906001613668565b610d449190613687565b610d4e9190613687565b811015610dc35760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610d10565b610dcc81611f33565b50565b6000610ddc848484611f8d565b610e2e8433610e29856040518060600160405280602881526020016137ea602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612990565b611dda565b5060019392505050565b6005546001600160a01b03163314610e805760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b601784905560188390556019829055601a8190558082610ea085876136a9565b610eaa91906136a9565b610eb491906136a9565b601681905560141015610f095760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610d10565b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cc2918590610e299086611d74565b6005546001600160a01b03163314610f8d5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b610f976000611a09565b565b6005546001600160a01b03163314610fe15760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6102588310156110595760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860448201527f616e206576657279203130206d696e75746573000000000000000000000000006064820152608401610d10565b6103e88211158015611069575060015b6110db5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201527f747765656e20302520616e6420313025000000000000000000000000000000006064820152608401610d10565b600e92909255600c55600d805460ff1916911515919091179055565b6005546000906001600160a01b031633146111425760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b506012805460ff19169055600190565b6005546001600160a01b0316331461119a5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461120d5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6007546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a36007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112bf5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6012805462ffff0019166201010017905542600f55565b6005546001600160a01b0316331461131e5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b60128054911515620100000262ff000019909216919091179055565b606060048054610c3290613617565b6005546001600160a01b031633146113915760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b7f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee16001600160a01b0316826001600160a01b031614156114395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d10565b61144382826129ca565b5050565b6000610cc23384610e2985604051806060016040528060258152602001613832602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612990565b6000610cc2338484611f8d565b6005546001600160a01b031633146114eb5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6006546040516001600160a01b03918216918516907fdfb18c0daeb33d3e5dcc631c1d3f91ad7caf612d5b64ce1e23eaaa46bbd85bf890600090a36001600160a01b0382166000908152602081905260409020546115499082611d74565b6001600160a01b03928316600090815260208190526040902055506006805473ffffffffffffffffffffffffffffffffffffffff191692909116919091179055565b6005546001600160a01b031633146115d35760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6008546040516001600160a01b03918216918316907fe678f864bcd4f50e0554d3b42d5a0007424f154c8b29d4845c7c727f319cfd9290600090a36008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116855760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6001600160a01b038216600081815260246020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461172c5760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b670de0b6b3a7640000620f424061174260025490565b61174d906001613668565b6117579190613687565b6117619190613687565b8110156117d55760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6117e781670de0b6b3a7640000613668565b600b5550565b6005546000906001600160a01b031633146118385760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b620186a061184560025490565b611850906001613668565b61185a9190613687565b8210156118cf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610d10565b50600a81905560015b919050565b6005546001600160a01b031633146119255760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b601c849055601d839055601e829055601f819055808261194585876136a9565b61194f91906136a9565b61195991906136a9565b601b81905560191015610f095760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610d10565b6005546000906001600160a01b031633146119f95760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b506014805460ff19169055600190565b6005546001600160a01b03163314611a515760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546000906001600160a01b03163314611b055760405162461bcd60e51b815260206004820181905260248201526000805160206138128339815191526044820152606401610d10565b601054601154611b1591906136a9565b4211611b635760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610d10565b6103e8821115611bdb5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610d10565b426011556040516370a0823160e01b81526001600160a01b037f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee116600482015260009030906370a082319060240160206040518083038186803b158015611c4157600080fd5b505afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7991906136c1565b90506000611c93612710611c8d8487612a1e565b90612ab9565b90508015611cc857611cc87f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee161dead83612afb565b60007f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee19050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d2857600080fd5b505af1158015611d3c573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b600080611d8183856136a9565b905083811015611dd35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d10565b9392505050565b6001600160a01b038316611e555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b038216611ed15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600254611f4882670de0b6b3a7640000613668565b10611f7557611f5f81670de0b6b3a7640000613668565b6015556027805460ff19811660ff909116151790555b611f8781670de0b6b3a7640000613668565b60095550565b6001600160a01b038316611ff15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b0382166120535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b806120695761206483836000612afb565b505050565b60125460ff1615612572576005546001600160a01b038481169116148015906120a057506005546001600160a01b03838116911614155b80156120b457506001600160a01b03821615155b80156120cb57506001600160a01b03821661dead14155b80156120e15750600554600160a01b900460ff16155b1561257257601254610100900460ff16612180576001600160a01b03831660009081526024602052604090205460ff168061213457506001600160a01b03821660009081526024602052604090205460ff165b6121805760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610d10565b60145460ff16156122db576005546001600160a01b038381169116148015906121db57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561221957507f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee16001600160a01b0316826001600160a01b031614155b156122db573260009081526013602052604090205443116122c85760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610d10565b3260009081526013602052604090204390555b6001600160a01b03831660009081526026602052604090205460ff16801561231c57506001600160a01b03821660009081526025602052604090205460ff16155b15612412576009548111156123995760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610d10565b600b546001600160a01b0383166000908152602081905260409020546123bf90836136a9565b111561240d5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b612572565b6001600160a01b03821660009081526026602052604090205460ff16801561245357506001600160a01b03831660009081526025602052604090205460ff16155b156124de57600954811115801561246c575060275460ff165b61240d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610d10565b6001600160a01b03821660009081526025602052604090205460ff1661257257600b546001600160a01b03831660009081526020819052604090205461252490836136a9565b11156125725760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610d10565b30600090815260208190526040902054600a548110801590819061259e575060125462010000900460ff165b80156125b45750600554600160a01b900460ff16155b80156125d957506001600160a01b03851660009081526026602052604090205460ff16155b80156125fe57506001600160a01b03851660009081526024602052604090205460ff16155b801561262357506001600160a01b03841660009081526024602052604090205460ff16155b15612651576005805460ff60a01b1916600160a01b179055612643612c7e565b6005805460ff60a01b191690555b600554600160a01b900460ff1615801561268357506001600160a01b03841660009081526026602052604090205460ff165b80156126915750600d5460ff165b80156126ac5750600e54600f546126a891906136a9565b4210155b80156126d157506001600160a01b03851660009081526024602052604090205460ff16155b156126e0576126de612ee6565b505b6005546001600160a01b03861660009081526024602052604090205460ff600160a01b90920482161591168061272e57506001600160a01b03851660009081526024602052604090205460ff165b15612737575060005b6000811561297c576001600160a01b03861660009081526026602052604090205460ff16801561276957506000601b54115b15612851576127886064611c8d601b5488612a1e90919063ffffffff16565b9050601b54601d548261279b9190613668565b6127a59190613687565b602160008282546127b691906136a9565b9091555050601b54601e546127cb9083613668565b6127d59190613687565b602260008282546127e691906136a9565b9091555050601b54601f546127fb9083613668565b6128059190613687565b6023600082825461281691906136a9565b9091555050601b54601c5461282b9083613668565b6128359190613687565b6020600082825461284691906136a9565b9091555061295e9050565b6001600160a01b03871660009081526026602052604090205460ff16801561287b57506000601654115b1561295e5761289a6064611c8d60165488612a1e90919063ffffffff16565b9050601654601854826128ad9190613668565b6128b79190613687565b602160008282546128c891906136a9565b90915550506016546019546128dd9083613668565b6128e79190613687565b602260008282546128f891906136a9565b9091555050601654601a5461290d9083613668565b6129179190613687565b6023600082825461292891906136a9565b909155505060165460175461293d9083613668565b6129479190613687565b6020600082825461295891906136a9565b90915550505b801561296f5761296f873083612afb565b61297981866136da565b94505b612987878787612afb565b50505050505050565b600081848411156129b45760405162461bcd60e51b8152600401610d10919061340a565b5060006129c184866136da565b95945050505050565b6001600160a01b038216600081815260266020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612a2d57506000610cc6565b6000612a398385613668565b905082612a468583613687565b14611dd35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610d10565b6000611dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613085565b6001600160a01b038316612b5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d10565b6001600160a01b038216612bc15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d10565b612bfe816040518060600160405280602681526020016137c4602691396001600160a01b0386166000908152602081905260409020549190612990565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612c2d9082611d74565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611f26565b3060009081526020819052604081205490506000602254602054602154612ca591906136a9565b612caf91906136a9565b90506000821580612cbe575081155b15612cc857505050565b600a54612cd6906014613668565b831115612cee57600a54612ceb906014613668565b92505b600060028360215486612d019190613668565b612d0b9190613687565b612d159190613687565b90506000612d2385836130b3565b905047612d2f826130f5565b6000612d3b47836130b3565b90506000612d5887611c8d60205485612a1e90919063ffffffff16565b90506000612d7588611c8d60225486612a1e90919063ffffffff16565b90506000612d9289611c8d60235487612a1e90919063ffffffff16565b905060008183612da286886136da565b612dac91906136da565b612db691906136da565b600060218190556020819055602281905560238190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114612e18576040519150601f19603f3d011682016040523d82523d6000602084013e612e1d565b606091505b50909950508715801590612e315750600081115b15612e8457612e4088826132dd565b602154604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612ed1576040519150601f19603f3d011682016040523d82523d6000602084013e612ed6565b606091505b5050505050505050505050505050565b42600f556040516370a0823160e01b81526001600160a01b037f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee1166004820152600090819030906370a082319060240160206040518083038186803b158015612f4e57600080fd5b505afa158015612f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8691906136c1565b90506000612fa5612710611c8d600c5485612a1e90919063ffffffff16565b90508015612fda57612fda7f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee161dead83612afb565b60007f000000000000000000000000a5ada10ad0dfc9bb68b26ab332a7b6043c259ee19050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561303a57600080fd5b505af115801561304e573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b600081836130a65760405162461bcd60e51b8152600401610d10919061340a565b5060006129c18486613687565b6000611dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612990565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061312a5761312a6136f1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131a357600080fd5b505afa1580156131b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131db9190613707565b816001815181106131ee576131ee6136f1565b60200260200101906001600160a01b031690816001600160a01b031681525050613239307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611dda565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906132a7908590600090869030904290600401613724565b600060405180830381600087803b1580156132c157600080fd5b505af11580156132d5573d6000803e3d6000fd5b505050505050565b613308307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611dda565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d71982308560008061334f6005546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156133ca57600080fd5b505af11580156133de573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134039190613795565b5050505050565b600060208083528351808285015260005b818110156134375785810183015185820160400152820161341b565b81811115613449576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610dcc57600080fd5b6000806040838503121561348757600080fd5b82356134928161345f565b946020939093013593505050565b6000602082840312156134b257600080fd5b8135611dd38161345f565b6000602082840312156134cf57600080fd5b5035919050565b6000806000606084860312156134eb57600080fd5b83356134f68161345f565b925060208401356135068161345f565b929592945050506040919091013590565b6000806000806080858703121561352d57600080fd5b5050823594602084013594506040840135936060013592509050565b803580151581146118d857600080fd5b60008060006060848603121561356e57600080fd5b833592506020840135915061358560408501613549565b90509250925092565b600080604083850312156135a157600080fd5b82356135ac8161345f565b91506135ba60208401613549565b90509250929050565b6000602082840312156135d557600080fd5b611dd382613549565b600080604083850312156135f157600080fd5b82356135fc8161345f565b9150602083013561360c8161345f565b809150509250929050565b600181811c9082168061362b57607f821691505b6020821081141561364c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561368257613682613652565b500290565b6000826136a457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156136bc576136bc613652565b500190565b6000602082840312156136d357600080fd5b5051919050565b6000828210156136ec576136ec613652565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561371957600080fd5b8151611dd38161345f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156137745784516001600160a01b03168352938301939183019160010161374f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156137aa57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122007b4c78f43e4987d3292b2c29a667a7196ddc0a5e3d1a99ee0e9171e5fb33f0364736f6c63430008090033
Deployed Bytecode Sourcemap
30646:18949:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13003:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15311:210;;;;;;;;;;-1:-1:-1;15311:210:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;15311:210:0;1095:187:1;32277:63:0;;;;;;;;;;-1:-1:-1;32277:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30893:29;;;;;;;;;;-1:-1:-1;30893:29:0;;;;-1:-1:-1;;;;;30893:29:0;;;;;;-1:-1:-1;;;;;1703:55:1;;;1685:74;;1673:2;1658:18;30893:29:0;1539:226:1;30721:51:0;;;;;;;;;;;;;;;14123:108;;;;;;;;;;-1:-1:-1;14211:12:0;;14123:108;;;2174:25:1;;;2162:2;2147:18;14123:108:0;2028:177:1;31252:47:0;;;;;;;;;;;;;;;;31078:36;;;;;;;;;;;;;;;;32074:33;;;;;;;;;;;;;;;;32153:28;;;;;;;;;;;;;;;;36307:255;;;;;;;;;;-1:-1:-1;36307:255:0;;;;;:::i;:::-;;:::i;:::-;;16003:454;;;;;;;;;;-1:-1:-1;16003:454:0;;;;;:::i;:::-;;:::i;31162:45::-;;;;;;;;;;;;;;;;37358:495;;;;;;;;;;-1:-1:-1;37358:495:0;;;;;:::i;:::-;;:::i;31122:33::-;;;;;;;;;;-1:-1:-1;31122:33:0;;;;;;;;13965:93;;;;;;;;;;-1:-1:-1;13965:93:0;;14048:2;3388:36:1;;3376:2;3361:18;13965:93:0;3246:184:1;16866:300:0;;;;;;;;;;-1:-1:-1;16866:300:0;;;;;:::i;:::-;;:::i;31886:31::-;;;;;;;;;;;;;;;;30929:25;;;;;;;;;;-1:-1:-1;30929:25:0;;;;-1:-1:-1;;;;;30929:25:0;;;30856:30;;;;;;;;;;-1:-1:-1;30856:30:0;;;;-1:-1:-1;;;;;30856:30:0;;;30779:38;;;;;;;;;;;;;;;31350:33;;;;;;;;;;-1:-1:-1;31350:33:0;;;;;;;;39742:126;;;;;;;;;;-1:-1:-1;39742:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;39832:28:0;39808:4;39832:28;;;:19;:28;;;;;;;;;39742:126;31781:29;;;;;;;;;;;;;;;;31851:28;;;;;;;;;;;;;;;;31962:30;;;;;;;;;;;;;;;;32034:33;;;;;;;;;;;;;;;;31430:31;;;;;;;;;;-1:-1:-1;31430:31:0;;;;;;;;;;;14294:177;;;;;;;;;;-1:-1:-1;14294:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;14445:18:0;14413:7;14445:18;;;;;;;;;;;;14294:177;22731:102;;;;;;;;;;;;;:::i;47637:555::-;;;;;;;;;;-1:-1:-1;47637:555:0;;;;;:::i;:::-;;:::i;35682:121::-;;;;;;;;;;;;;:::i;37075:167::-;;;;;;;;;;-1:-1:-1;37075:167:0;;;;;:::i;:::-;;:::i;39388:177::-;;;;;;;;;;-1:-1:-1;39388:177:0;;;;;:::i;:::-;;:::i;35519:155::-;;;;;;;;;;;;;:::i;22517:79::-;;;;;;;;;;-1:-1:-1;22582:6:0;;-1:-1:-1;;;;;22582:6:0;22517:79;;37250:100;;;;;;;;;;-1:-1:-1;37250:100:0;;;;;:::i;:::-;;:::i;13222:104::-;;;;;;;;;;;;;:::i;38565:304::-;;;;;;;;;;-1:-1:-1;38565:304:0;;;;;:::i;:::-;;:::i;31306:35::-;;;;;;;;;;;;;;;;17669:400;;;;;;;;;;-1:-1:-1;17669:400:0;;;;;:::i;:::-;;:::i;31214:29::-;;;;;;;;;;;;;;;;14684:216;;;;;;;;;;-1:-1:-1;14684:216:0;;;;;:::i;:::-;;:::i;39071:309::-;;;;;;;;;;-1:-1:-1;39071:309:0;;;;;:::i;:::-;;:::i;31999:26::-;;;;;;;;;;;;;;;;39573:161;;;;;;;;;;-1:-1:-1;39573:161:0;;;;;:::i;:::-;;:::i;32349:57::-;;;;;;;;;;-1:-1:-1;32349:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;31390:33;;;;;;;;;;-1:-1:-1;31390:33:0;;;;;;;;;;;38375:182;;;;;;;;;;-1:-1:-1;38375:182:0;;;;;:::i;:::-;;:::i;36808:259::-;;;;;;;;;;-1:-1:-1;36808:259:0;;;;;:::i;:::-;;:::i;31596:39::-;;;;;;;;;;-1:-1:-1;31596:39:0;;;;;;;;30963:35;;;;;;;;;;;;;;;;32114:32;;;;;;;;;;;;;;;;31707:30;;;;;;;;;;;;;;;;35954:345;;;;;;;;;;-1:-1:-1;35954:345:0;;;;;:::i;:::-;;:::i;31673:27::-;;;;;;;;;;;;;;;;14963:201;;;;;;;;;;-1:-1:-1;14963:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;15129:18:0;;;15097:7;15129:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14963:201;31005:33;;;;;;;;;;;;;;;;32532:20;;;;;;;;;;-1:-1:-1;32532:20:0;;;;;;;;31817:25;;;;;;;;;;;;;;;;37861:506;;;;;;;;;;-1:-1:-1;37861:506:0;;;;;:::i;:::-;;:::i;35811:135::-;;;;;;;;;;;;;:::i;31744:30::-;;;;;;;;;;;;;;;;22841:160;;;;;;;;;;-1:-1:-1;22841:160:0;;;;;:::i;:::-;;:::i;31924:31::-;;;;;;;;;;;;;;;;31045:24;;;;;;;;;;;;;;;;48766:826;;;;;;;;;;-1:-1:-1;48766:826:0;;;;;:::i;:::-;;:::i;13003:100::-;13057:13;13090:5;13083:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13003:100;:::o;15311:210::-;15430:4;15452:39;361:10;15475:7;15484:6;15452:8;:39::i;:::-;-1:-1:-1;15509:4:0;15311:210;;;;;:::o;36307:255::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;;;;;;;;;36447:4:::1;36436:7;36415:13;14211:12:::0;;;14123:108;36415:13:::1;:17;::::0;36431:1:::1;36415:17;:::i;:::-;36414:29;;;;:::i;:::-;36413:38;;;;:::i;:::-;36403:6;:48;;36381:145;;;::::0;-1:-1:-1;;;36381:145:0;;6465:2:1;36381:145:0::1;::::0;::::1;6447:21:1::0;6504:2;6484:18;;;6477:30;6543:34;6523:18;;;6516:62;6614:17;6594:18;;;6587:45;6649:19;;36381:145:0::1;6263:411:1::0;36381:145:0::1;36537:17;36547:6;36537:9;:17::i;:::-;36307:255:::0;:::o;16003:454::-;16143:4;16160:36;16170:6;16178:9;16189:6;16160:9;:36::i;:::-;16207:220;16230:6;361:10;16278:138;16334:6;16278:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16278:19:0;;;;;;:11;:19;;;;;;;;361:10;16278:33;;;;;;;;;;:37;:138::i;:::-;16207:8;:220::i;:::-;-1:-1:-1;16445:4:0;16003:454;;;;;:::o;37358:495::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;37540:15:::1;:31:::0;;;37582:15:::1;:31:::0;;;37624:14:::1;:29:::0;;;37664:10:::1;:21:::0;;;37677:8;37641:12;37711:33:::1;37600:13:::0;37558;37711:33:::1;:::i;:::-;:50;;;;:::i;:::-;:63;;;;:::i;:::-;37696:12;:78:::0;;;37809:2:::1;-1:-1:-1::0;37793:18:0::1;37785:60;;;::::0;-1:-1:-1;;;37785:60:0;;7014:2:1;37785:60:0::1;::::0;::::1;6996:21:1::0;7053:2;7033:18;;;7026:30;7092:31;7072:18;;;7065:59;7141:18;;37785:60:0::1;6812:353:1::0;37785:60:0::1;37358:495:::0;;;;:::o;16866:300::-;361:10;16981:4;17075:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17075:34:0;;;;;;;;;;16981:4;;17003:133;;17053:7;;17075:50;;17114:10;17075:38;:50::i;22731:102::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;22796:29:::1;22822:1;22796:17;:29::i;:::-;22731:102::o:0;47637:555::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;47839:3:::1;47816:19;:26;;47794:127;;;::::0;-1:-1:-1;;;47794:127:0;;7372:2:1;47794:127:0::1;::::0;::::1;7354:21:1::0;7411:2;7391:18;;;7384:30;7450:34;7430:18;;;7423:62;7521:21;7501:18;;;7494:49;7560:19;;47794:127:0::1;7170:415:1::0;47794:127:0::1;47966:4;47954:8;:16;;:33;;;;-1:-1:-1::0;47974:13:0;47954:33:::1;47932:131;;;::::0;-1:-1:-1;;;47932:131:0;;7792:2:1;47932:131:0::1;::::0;::::1;7774:21:1::0;7831:2;7811:18;;;7804:30;7870:34;7850:18;;;7843:62;7941:18;7921;;;7914:46;7977:19;;47932:131:0::1;7590:412:1::0;47932:131:0::1;48074:15;:37:::0;;;;48122:16:::1;:27:::0;48160:13:::1;:24:::0;;-1:-1:-1;;48160:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;47637:555::o;35682:121::-;22644:6;;35734:4;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;-1:-1:-1;35751:14:0::1;:22:::0;;-1:-1:-1;;35751:22:0::1;::::0;;;35682:121;:::o;37075:167::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;-1:-1:-1;;;;;37188:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;37188:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37075:167::o;39388:177::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;39505:14:::1;::::0;39472:48:::1;::::0;-1:-1:-1;;;;;39505:14:0;;::::1;::::0;39472:48;::::1;::::0;::::1;::::0;39505:14:::1;::::0;39472:48:::1;39531:14;:26:::0;;-1:-1:-1;;39531:26:0::1;-1:-1:-1::0;;;;;39531:26:0;;;::::1;::::0;;;::::1;::::0;;39388:177::o;35519:155::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;35574:13:::1;:20:::0;;-1:-1:-1;;35605:18:0;;;;;35651:15:::1;35634:14;:32:::0;35519:155::o;37250:100::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;37321:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;37321:21:0;;::::1;::::0;;;::::1;::::0;;37250:100::o;13222:104::-;13278:13;13311:7;13304:14;;;;;:::i;38565:304::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;38709:13:::1;-1:-1:-1::0;;;;;38701:21:0::1;:4;-1:-1:-1::0;;;;;38701:21:0::1;;;38679:128;;;::::0;-1:-1:-1;;;38679:128:0;;8209:2:1;38679:128:0::1;::::0;::::1;8191:21:1::0;8248:2;8228:18;;;8221:30;8287:34;8267:18;;;8260:62;8358:27;8338:18;;;8331:55;8403:19;;38679:128:0::1;8007:421:1::0;38679:128:0::1;38820:41;38849:4;38855:5;38820:28;:41::i;:::-;38565:304:::0;;:::o;17669:400::-;17789:4;17811:228;361:10;17861:7;17883:145;17940:15;17883:145;;;;;;;;;;;;;;;;;361:10;17883:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17883:34:0;;;;;;;;;;;;:38;:145::i;14684:216::-;14806:4;14828:42;361:10;14852:9;14863:6;14828:9;:42::i;39071:309::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;39264:15:::1;::::0;39221:59:::1;::::0;-1:-1:-1;;;;;39264:15:0;;::::1;::::0;39221:59;::::1;::::0;::::1;::::0;39264:15:::1;::::0;39221:59:::1;-1:-1:-1::0;;;;;39306:12:0;::::1;:9;:12:::0;;;::::1;::::0;;;;;;;:19:::1;::::0;39323:1;39306:16:::1;:19::i;:::-;-1:-1:-1::0;;;;;39291:12:0;;::::1;:9;:12:::0;;;::::1;::::0;;;;;;:34;-1:-1:-1;39336:15:0::1;:36:::0;;-1:-1:-1;;39336:36:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;39071:309::o;39573:161::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;39682:10:::1;::::0;39653:40:::1;::::0;-1:-1:-1;;;;;39682:10:0;;::::1;::::0;39653:40;::::1;::::0;::::1;::::0;39682:10:::1;::::0;39653:40:::1;39704:10;:22:::0;;-1:-1:-1;;39704:22:0::1;-1:-1:-1::0;;;;;39704:22:0;;;::::1;::::0;;;::::1;::::0;;39573:161::o;38375:182::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;-1:-1:-1;;;;;38460:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;38460:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;38515:34;;1235:41:1;;;38515:34:0::1;::::0;1208:18:1;38515:34:0::1;;;;;;;38375:182:::0;;:::o;36808:259::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;36951:4:::1;36940:7;36919:13;14211:12:::0;;;14123:108;36919:13:::1;:17;::::0;36935:1:::1;36919:17;:::i;:::-;36918:29;;;;:::i;:::-;36917:38;;;;:::i;:::-;36907:6;:48;;36885:134;;;::::0;-1:-1:-1;;;36885:134:0;;8635:2:1;36885:134:0::1;::::0;::::1;8617:21:1::0;8674:2;8654:18;;;8647:30;8713:34;8693:18;;;8686:62;8784:6;8764:18;;;8757:34;8808:19;;36885:134:0::1;8433:400:1::0;36885:134:0::1;37042:17;:6:::0;37052::::1;37042:17;:::i;:::-;37030:9;:29:::0;-1:-1:-1;36808:259:0:o;35954:345::-;22644:6;;36062:4;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;36141:6:::1;36120:13;14211:12:::0;;;14123:108;36120:13:::1;:17;::::0;36136:1:::1;36120:17;:::i;:::-;36119:28;;;;:::i;:::-;36106:9;:41;;36084:144;;;::::0;-1:-1:-1;;;36084:144:0;;9040:2:1;36084:144:0::1;::::0;::::1;9022:21:1::0;9079:2;9059:18;;;9052:30;9118:34;9098:18;;;9091:62;9189:23;9169:18;;;9162:51;9230:19;;36084:144:0::1;8838:417:1::0;36084:144:0::1;-1:-1:-1::0;36239:18:0::1;:30:::0;;;36287:4:::1;22714:1;35954:345:::0;;;:::o;37861:506::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;38044:16:::1;:32:::0;;;38087:16:::1;:32:::0;;;38130:15:::1;:30:::0;;;38171:11:::1;:22:::0;;;38185:8;38148:12;38220:35:::1;38106:13:::0;38063;38220:35:::1;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;38204:13;:83:::0;;;38323:2:::1;-1:-1:-1::0;38306:19:0::1;38298:61;;;::::0;-1:-1:-1;;;38298:61:0;;9462:2:1;38298:61:0::1;::::0;::::1;9444:21:1::0;9501:2;9481:18;;;9474:30;9540:31;9520:18;;;9513:59;9589:18;;38298:61:0::1;9260:353:1::0;35811:135:0;22644:6;;35871:4;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;-1:-1:-1;35888:20:0::1;:28:::0;;-1:-1:-1;;35888:28:0::1;::::0;;;35811:135;:::o;22841:160::-;22644:6;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;22948:6:::1;::::0;22927:38:::1;::::0;-1:-1:-1;;;;;22927:38:0;;::::1;::::0;22948:6:::1;::::0;22927:38:::1;::::0;22948:6:::1;::::0;22927:38:::1;22976:6;:17:::0;;-1:-1:-1;;22976:17:0::1;-1:-1:-1::0;;;;;22976:17:0;;;::::1;::::0;;;::::1;::::0;;22841:160::o;48766:826::-;22644:6;;48877:4;;-1:-1:-1;;;;;22644:6:0;361:10;22644:22;22636:67;;;;-1:-1:-1;;;22636:67:0;;5463:2:1;22636:67:0;;;5445:21:1;;;5482:18;;;5475:30;-1:-1:-1;;;;;;;;;;;5521:18:1;;;5514:62;5593:18;;22636:67:0;5261:356:1;22636:67:0;48962:19:::1;;48939:20;;:42;;;;:::i;:::-;48921:15;:60;48899:142;;;::::0;-1:-1:-1;;;48899:142:0;;9820:2:1;48899:142:0::1;::::0;::::1;9802:21:1::0;;;9839:18;;;9832:30;9898:34;9878:18;;;9871:62;9950:18;;48899:142:0::1;9618:356:1::0;48899:142:0::1;49071:4;49060:7;:15;;49052:70;;;::::0;-1:-1:-1;;;49052:70:0;;10181:2:1;49052:70:0::1;::::0;::::1;10163:21:1::0;10220:2;10200:18;;;10193:30;10259:34;10239:18;;;10232:62;10330:12;10310:18;;;10303:40;10360:19;;49052:70:0::1;9979:406:1::0;49052:70:0::1;49156:15;49133:20;:38:::0;49215:29:::1;::::0;-1:-1:-1;;;49215:29:0;;-1:-1:-1;;;;;49230:13:0::1;1703:55:1::0;49215:29:0::1;::::0;::::1;1685:74:1::0;49184:28:0::1;::::0;49215:4:::1;::::0;:14:::1;::::0;1658:18:1;;49215:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49184:60:::0;-1:-1:-1;49257:20:0::1;49280:44;49318:5;49280:33;49184:60:::0;49305:7;49280:24:::1;:33::i;:::-;:37:::0;::::1;:44::i;:::-;49257:67:::0;-1:-1:-1;49341:16:0;;49337:110:::1;;49374:61;49390:13;49413:6;49422:12;49374:15;:61::i;:::-;49459:19;49496:13;49459:51;;49521:4;-1:-1:-1::0;;;;;49521:9:0::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;49548:14:0::1;::::0;::::1;::::0;-1:-1:-1;49548:14:0;;-1:-1:-1;49548:14:0::1;-1:-1:-1::0;49580:4:0::1;::::0;48766:826;-1:-1:-1;;;;48766:826:0:o;1723:181::-;1781:7;;1813:5;1817:1;1813;:5;:::i;:::-;1801:17;;1842:1;1837;:6;;1829:46;;;;-1:-1:-1;;;1829:46:0;;10781:2:1;1829:46:0;;;10763:21:1;10820:2;10800:18;;;10793:30;10859:29;10839:18;;;10832:57;10906:18;;1829:46:0;10579:351:1;1829:46:0;1895:1;1723:181;-1:-1:-1;;;1723:181:0:o;21060:380::-;-1:-1:-1;;;;;21196:19:0;;21188:68;;;;-1:-1:-1;;;21188:68:0;;11137:2:1;21188:68:0;;;11119:21:1;11176:2;11156:18;;;11149:30;11215:34;11195:18;;;11188:62;11286:6;11266:18;;;11259:34;11310:19;;21188:68:0;10935:400:1;21188:68:0;-1:-1:-1;;;;;21275:21:0;;21267:68;;;;-1:-1:-1;;;21267:68:0;;11542:2:1;21267:68:0;;;11524:21:1;11581:2;11561:18;;;11554:30;11620:34;11600:18;;;11593:62;11691:4;11671:18;;;11664:32;11713:19;;21267:68:0;11340:398:1;21267:68:0;-1:-1:-1;;;;;21348:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21400:32;;2174:25:1;;;21400:32:0;;2147:18:1;21400:32:0;;;;;;;;21060:380;;;:::o;36570:230::-;14211:12;;36628:17;:6;36638;36628:17;:::i;:::-;:34;36624:118;;36692:17;:6;36702;36692:17;:::i;:::-;36679:10;:30;36729:1;;;-1:-1:-1;;36724:6:0;;36729:1;;;;36728:2;36724:6;;;36624:118;36775:17;:6;36785;36775:17;:::i;:::-;36752:20;:40;-1:-1:-1;36570:230:0:o;39926:4968::-;-1:-1:-1;;;;;40058:18:0;;40050:68;;;;-1:-1:-1;;;40050:68:0;;11945:2:1;40050:68:0;;;11927:21:1;11984:2;11964:18;;;11957:30;12023:34;12003:18;;;11996:62;-1:-1:-1;;;12074:18:1;;;12067:35;12119:19;;40050:68:0;11743:401:1;40050:68:0;-1:-1:-1;;;;;40137:16:0;;40129:64;;;;-1:-1:-1;;;40129:64:0;;12351:2:1;40129:64:0;;;12333:21:1;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;-1:-1:-1;;;12480:18:1;;;12473:33;12523:19;;40129:64:0;12149:399:1;40129:64:0;40210:11;40206:93;;40238:28;40254:4;40260:2;40264:1;40238:15;:28::i;:::-;39926:4968;;;:::o;40206:93::-;40315:14;;;;40311:2282;;;22582:6;;-1:-1:-1;;;;;40368:15:0;;;22582:6;;40368:15;;;;:49;;-1:-1:-1;22582:6:0;;-1:-1:-1;;;;;40404:13:0;;;22582:6;;40404:13;;40368:49;:86;;;;-1:-1:-1;;;;;;40438:16:0;;;;40368:86;:128;;;;-1:-1:-1;;;;;;40475:21:0;;40489:6;40475:21;;40368:128;:158;;;;-1:-1:-1;40518:8:0;;-1:-1:-1;;;40518:8:0;;;;40517:9;40368:158;40346:2236;;;40566:13;;;;;;;40561:223;;-1:-1:-1;;;;;40638:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;40667:23:0;;;;;;:19;:23;;;;;;;;40638:52;40604:160;;;;-1:-1:-1;;;40604:160:0;;12755:2:1;40604:160:0;;;12737:21:1;12794:2;12774:18;;;12767:30;12833:24;12813:18;;;12806:52;12875:18;;40604:160:0;12553:346:1;40604:160:0;40806:20;;;;40802:641;;;22582:6;;-1:-1:-1;;;;;40881:13:0;;;22582:6;;40881:13;;;;:72;;;40937:15;-1:-1:-1;;;;;40923:30:0;:2;-1:-1:-1;;;;;40923:30:0;;;40881:72;:129;;;;;40996:13;-1:-1:-1;;;;;40982:28:0;:2;-1:-1:-1;;;;;40982:28:0;;;40881:129;40851:573;;;41128:9;41099:39;;;;:28;:39;;;;;;41174:12;-1:-1:-1;41061:258:0;;;;-1:-1:-1;;;41061:258:0;;13106:2:1;41061:258:0;;;13088:21:1;13145:2;13125:18;;;13118:30;13184:34;13164:18;;;13157:62;13255:34;13235:18;;;13228:62;13327:11;13306:19;;;13299:40;13356:19;;41061:258:0;12904:477:1;41061:258:0;41375:9;41346:39;;;;:28;:39;;;;;41388:12;41346:54;;40851:573;-1:-1:-1;;;;;41487:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;41544:35:0;;;;;;:31;:35;;;;;;;;41543:36;41487:92;41461:1106;;;41666:20;;41656:6;:30;;41622:169;;;;-1:-1:-1;;;41622:169:0;;13588:2:1;41622:169:0;;;13570:21:1;13627:2;13607:18;;;13600:30;13666:34;13646:18;;;13639:62;13737:23;13717:18;;;13710:51;13778:19;;41622:169:0;13386:417:1;41622:169:0;41874:9;;-1:-1:-1;;;;;14445:18:0;;14413:7;14445:18;;;;;;;;;;;41848:22;;:6;:22;:::i;:::-;:35;;41814:140;;;;-1:-1:-1;;;41814:140:0;;14010:2:1;41814:140:0;;;13992:21:1;14049:2;14029:18;;;14022:30;14088:21;14068:18;;;14061:49;14127:18;;41814:140:0;13808:343:1;41814:140:0;41461:1106;;;-1:-1:-1;;;;;42006:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;42061:37:0;;;;;;:31;:37;;;;;;;;42060:38;42006:92;41980:587;;;42185:20;;42175:6;:30;;:35;;;;-1:-1:-1;42209:1:0;;;;42175:35;42141:175;;;;-1:-1:-1;;;42141:175:0;;14358:2:1;42141:175:0;;;14340:21:1;14397:2;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14507:24;14487:18;;;14480:52;14549:19;;42141:175:0;14156:418:1;41980:587:0;-1:-1:-1;;;;;42347:35:0;;;;;;:31;:35;;;;;;;;42342:225;;42467:9;;-1:-1:-1;;;;;14445:18:0;;14413:7;14445:18;;;;;;;;;;;42441:22;;:6;:22;:::i;:::-;:35;;42407:140;;;;-1:-1:-1;;;42407:140:0;;14010:2:1;42407:140:0;;;13992:21:1;14049:2;14029:18;;;14022:30;14088:21;14068:18;;;14061:49;14127:18;;42407:140:0;13808:343:1;42407:140:0;42654:4;42605:28;14445:18;;;;;;;;;;;42712;;42688:42;;;;;;;42761:35;;-1:-1:-1;42785:11:0;;;;;;;42761:35;:61;;;;-1:-1:-1;42814:8:0;;-1:-1:-1;;;42814:8:0;;;;42813:9;42761:61;:110;;;;-1:-1:-1;;;;;;42840:31:0;;;;;;:25;:31;;;;;;;;42839:32;42761:110;:153;;;;-1:-1:-1;;;;;;42889:25:0;;;;;;:19;:25;;;;;;;;42888:26;42761:153;:194;;;;-1:-1:-1;;;;;;42932:23:0;;;;;;:19;:23;;;;;;;;42931:24;42761:194;42743:326;;;42982:8;:15;;-1:-1:-1;;;;42982:15:0;-1:-1:-1;;;42982:15:0;;;43014:10;:8;:10::i;:::-;43041:8;:16;;-1:-1:-1;;;;43041:16:0;;;42743:326;43100:8;;-1:-1:-1;;;43100:8:0;;;;43099:9;:55;;;;-1:-1:-1;;;;;;43125:29:0;;;;;;:25;:29;;;;;;;;43099:55;:85;;;;-1:-1:-1;43171:13:0;;;;43099:85;:153;;;;;43237:15;;43220:14;;:32;;;;:::i;:::-;43201:15;:51;;43099:153;:196;;;;-1:-1:-1;;;;;;43270:25:0;;;;;;:19;:25;;;;;;;;43269:26;43099:196;43081:282;;;43322:29;:27;:29::i;:::-;;43081:282;43391:8;;-1:-1:-1;;;;;43501:25:0;;43375:12;43501:25;;;:19;:25;;;;;;43391:8;-1:-1:-1;;;43391:8:0;;;;;43390:9;;43501:25;;:52;;-1:-1:-1;;;;;;43530:23:0;;;;;;:19;:23;;;;;;;;43501:52;43497:100;;;-1:-1:-1;43580:5:0;43497:100;43609:12;43714:7;43710:1131;;;-1:-1:-1;;;;;43766:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;43815:1;43799:13;;:17;43766:50;43762:930;;;43844:34;43874:3;43844:25;43855:13;;43844:6;:10;;:25;;;;:::i;:34::-;43837:41;;43947:13;;43927:16;;43920:4;:23;;;;:::i;:::-;43919:41;;;;:::i;:::-;43897:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;44027:13:0;;44008:15;;44001:22;;:4;:22;:::i;:::-;44000:40;;;;:::i;:::-;43979:17;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;44099:13:0;;44084:11;;44077:18;;:4;:18;:::i;:::-;44076:36;;;;:::i;:::-;44059:13;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;44181:13:0;;44161:16;;44154:23;;:4;:23;:::i;:::-;44153:41;;;;:::i;:::-;44131:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;43762:930:0;;-1:-1:-1;43762:930:0;;-1:-1:-1;;;;;44256:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;44306:1;44291:12;;:16;44256:51;44252:440;;;44335:33;44364:3;44335:24;44346:12;;44335:6;:10;;:24;;;;:::i;:33::-;44328:40;;44436:12;;44417:15;;44410:4;:22;;;;:::i;:::-;44409:39;;;;:::i;:::-;44387:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;44514:12:0;;44496:14;;44489:21;;:4;:21;:::i;:::-;44488:38;;;;:::i;:::-;44467:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;44584:12:0;;44570:10;;44563:17;;:4;:17;:::i;:::-;44562:34;;;;:::i;:::-;44545:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;44664:12:0;;44645:15;;44638:22;;:4;:22;:::i;:::-;44637:39;;;;:::i;:::-;44615:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;44252:440:0;44712:8;;44708:91;;44741:42;44757:4;44771;44778;44741:15;:42::i;:::-;44815:14;44825:4;44815:14;;:::i;:::-;;;43710:1131;44853:33;44869:4;44875:2;44879:6;44853:15;:33::i;:::-;40039:4855;;;;39926:4968;;;:::o;1250:226::-;1370:7;1406:12;1398:6;;;;1390:29;;;;-1:-1:-1;;;1390:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1430:9:0;1442:5;1446:1;1442;:5;:::i;:::-;1430:17;1250:226;-1:-1:-1;;;;;1250:226:0:o;38877:186::-;-1:-1:-1;;;;;38960:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;38960:39:0;;;;;;;;;;39015:40;;38960:39;;:31;39015:40;;;38877:186;;:::o;2163:471::-;2221:7;2466:6;2462:47;;-1:-1:-1;2496:1:0;2489:8;;2462:47;2521:9;2533:5;2537:1;2533;:5;:::i;:::-;2521:17;-1:-1:-1;2566:1:0;2557:5;2561:1;2521:17;2557:5;:::i;:::-;:10;2549:56;;;;-1:-1:-1;;;2549:56:0;;14911:2:1;2549:56:0;;;14893:21:1;14950:2;14930:18;;;14923:30;14989:34;14969:18;;;14962:62;15060:3;15040:18;;;15033:31;15081:19;;2549:56:0;14709:397:1;3116:132:0;3174:7;3201:39;3205:1;3208;3201:39;;;;;;;;;;;;;;;;;:3;:39::i;18559:610::-;-1:-1:-1;;;;;18699:20:0;;18691:70;;;;-1:-1:-1;;;18691:70:0;;11945:2:1;18691:70:0;;;11927:21:1;11984:2;11964:18;;;11957:30;12023:34;12003:18;;;11996:62;-1:-1:-1;;;12074:18:1;;;12067:35;12119:19;;18691:70:0;11743:401:1;18691:70:0;-1:-1:-1;;;;;18780:23:0;;18772:71;;;;-1:-1:-1;;;18772:71:0;;12351:2:1;18772:71:0;;;12333:21:1;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;-1:-1:-1;;;12480:18:1;;;12473:33;12523:19;;18772:71:0;12149:399:1;18772:71:0;18936:108;18972:6;18936:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18936:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;18916:17:0;;;:9;:17;;;;;;;;;;;:128;;;;19078:20;;;;;;;:32;;19103:6;19078:24;:32::i;:::-;-1:-1:-1;;;;;19055:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;19126:35;2174:25:1;;;19055:20:0;;19126:35;;;;;;2147:18:1;19126:35:0;2028:177:1;45758:1871:0;45841:4;45797:23;14445:18;;;;;;;;;;;45797:50;;45858:25;45954:17;;45920:18;;45886;;:52;;;;:::i;:::-;:85;;;;:::i;:::-;45858:113;-1:-1:-1;45982:12:0;46011:20;;;:46;;-1:-1:-1;46035:22:0;;46011:46;46007:85;;;46074:7;;;45758:1871::o;46007:85::-;46126:18;;:23;;46147:2;46126:23;:::i;:::-;46108:15;:41;46104:115;;;46184:18;;:23;;46205:2;46184:23;:::i;:::-;46166:41;;46104:115;46231:23;46344:1;46311:17;46276:18;;46258:15;:36;;;;:::i;:::-;46257:71;;;;:::i;:::-;:88;;;;:::i;:::-;46231:114;-1:-1:-1;46356:26:0;46385:36;:15;46231:114;46385:19;:36::i;:::-;46356:65;-1:-1:-1;46462:21:0;46496:36;46356:65;46496:16;:36::i;:::-;46545:18;46566:44;:21;46592:17;46566:25;:44::i;:::-;46545:65;;46623:23;46649:81;46702:17;46649:34;46664:18;;46649:10;:14;;:34;;;;:::i;:81::-;46623:107;;46741:22;46766:56;46804:17;46766:33;46781:17;;46766:10;:14;;:33;;;;:::i;:56::-;46741:81;;46835:18;46856:52;46890:17;46856:29;46871:13;;46856:10;:14;;:29;;;;:::i;:52::-;46835:73;-1:-1:-1;46921:23:0;46835:73;46978:14;46947:28;46960:15;46947:10;:28;:::i;:::-;:45;;;;:::i;:::-;:58;;;;:::i;:::-;47039:1;47018:18;:22;;;47051:18;:22;;;47084:17;:21;;;47116:13;:17;;;47168:14;;47160:55;;46921:84;;-1:-1:-1;;;;;;47168:14:0;;47196;;47160:55;47039:1;47160:55;47196:14;47168;47160:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47146:69:0;;-1:-1:-1;;47234:19:0;;;;;:42;;;47275:1;47257:15;:19;47234:42;47230:278;;;47293:46;47306:15;47323;47293:12;:46::i;:::-;47463:18;;47359:137;;;15523:25:1;;;15579:2;15564:18;;15557:34;;;15607:18;;;15600:34;;;;47359:137:0;;;;;;15511:2:1;47359:137:0;;;47230:278;47542:15;;47534:87;;-1:-1:-1;;;;;47542:15:0;;;;47585:21;;47534:87;;;;47585:21;47542:15;47534:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;45758:1871:0:o;48200:558::-;48291:15;48274:14;:32;48350:29;;-1:-1:-1;;;48350:29:0;;-1:-1:-1;;;;;48365:13:0;1703:55:1;48350:29:0;;;1685:74:1;48257:4:0;;;;48350;;:14;;1658:18:1;;48350:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48319:60;;48392:20;48415:77;48476:5;48415:42;48440:16;;48415:20;:24;;:42;;;;:::i;:77::-;48392:100;-1:-1:-1;48509:16:0;;48505:110;;48542:61;48558:13;48581:6;48590:12;48542:15;:61::i;:::-;48627:19;48664:13;48627:51;;48689:4;-1:-1:-1;;;;;48689:9:0;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;48716:12:0;;;;-1:-1:-1;48716:12:0;;-1:-1:-1;48716:12:0;48746:4;48739:11;;;;;48200:558;:::o;3744:312::-;3864:7;3899:12;3892:5;3884:28;;;;-1:-1:-1;;;3884:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3923:9:0;3935:5;3939:1;3935;:5;:::i;811:136::-;869:7;896:43;900:1;903;896:43;;;;;;;;;;;;;;;;;:3;:43::i;44902:476::-;44992:16;;;45006:1;44992:16;;;;;;;;44968:21;;44992:16;;;;;;;;;;-1:-1:-1;44992:16:0;44968:40;;45037:4;45019;45024:1;45019:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;45019:23:0;;;-1:-1:-1;;;;;45019:23:0;;;;;45063:15;-1:-1:-1;;;;;45063:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45053:4;45058:1;45053:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;45053:32:0;;;-1:-1:-1;;;;;45053:32:0;;;;;45098:62;45115:4;45130:15;45148:11;45098:8;:62::i;:::-;45173:197;;;;;-1:-1:-1;;;;;45173:15:0;:66;;;;:197;;45254:11;;45280:1;;45297:4;;45324;;45344:15;;45173:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44957:421;44902:476;:::o;45386:364::-;45467:62;45484:4;45499:15;45517:11;45467:8;:62::i;:::-;45542:15;-1:-1:-1;;;;;45542:31:0;;45581:9;45614:4;45634:11;45660:1;45677;45694:7;22582:6;;-1:-1:-1;;;;;22582:6:0;;22517:79;45694:7;45542:200;;;;;;;;;;-1:-1:-1;;;;;17692:15:1;;;45542:200:0;;;17674:34:1;17724:18;;;17717:34;;;;17767:18;;;17760:34;;;;17810:18;;;17803:34;17874:15;;;17853:19;;;17846:44;45716:15:0;17906:19:1;;;17899:35;17585:19;;45542:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;45386:364;;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:154::-;-1:-1:-1;;;;;695:5:1;691:54;684:5;681:65;671:93;;760:1;757;750:12;775:315;843:6;851;904:2;892:9;883:7;879:23;875:32;872:52;;;920:1;917;910:12;872:52;959:9;946:23;978:31;1003:5;978:31;:::i;:::-;1028:5;1080:2;1065:18;;;;1052:32;;-1:-1:-1;;;775:315:1:o;1287:247::-;1346:6;1399:2;1387:9;1378:7;1374:23;1370:32;1367:52;;;1415:1;1412;1405:12;1367:52;1454:9;1441:23;1473:31;1498:5;1473:31;:::i;2210:180::-;2269:6;2322:2;2310:9;2301:7;2297:23;2293:32;2290:52;;;2338:1;2335;2328:12;2290:52;-1:-1:-1;2361:23:1;;2210:180;-1:-1:-1;2210:180:1:o;2395:456::-;2472:6;2480;2488;2541:2;2529:9;2520:7;2516:23;2512:32;2509:52;;;2557:1;2554;2547:12;2509:52;2596:9;2583:23;2615:31;2640:5;2615:31;:::i;:::-;2665:5;-1:-1:-1;2722:2:1;2707:18;;2694:32;2735:33;2694:32;2735:33;:::i;:::-;2395:456;;2787:7;;-1:-1:-1;;;2841:2:1;2826:18;;;;2813:32;;2395:456::o;2856:385::-;2942:6;2950;2958;2966;3019:3;3007:9;2998:7;2994:23;2990:33;2987:53;;;3036:1;3033;3026:12;2987:53;-1:-1:-1;;3059:23:1;;;3129:2;3114:18;;3101:32;;-1:-1:-1;3180:2:1;3165:18;;3152:32;;3231:2;3216:18;3203:32;;-1:-1:-1;2856:385:1;-1:-1:-1;2856:385:1:o;3435:160::-;3500:20;;3556:13;;3549:21;3539:32;;3529:60;;3585:1;3582;3575:12;3600:316;3674:6;3682;3690;3743:2;3731:9;3722:7;3718:23;3714:32;3711:52;;;3759:1;3756;3749:12;3711:52;3795:9;3782:23;3772:33;;3852:2;3841:9;3837:18;3824:32;3814:42;;3875:35;3906:2;3895:9;3891:18;3875:35;:::i;:::-;3865:45;;3600:316;;;;;:::o;3921:315::-;3986:6;3994;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;:::-;4171:5;-1:-1:-1;4195:35:1;4226:2;4211:18;;4195:35;:::i;:::-;4185:45;;3921:315;;;;;:::o;4241:180::-;4297:6;4350:2;4338:9;4329:7;4325:23;4321:32;4318:52;;;4366:1;4363;4356:12;4318:52;4389:26;4405:9;4389:26;:::i;4426:388::-;4494:6;4502;4555:2;4543:9;4534:7;4530:23;4526:32;4523:52;;;4571:1;4568;4561:12;4523:52;4610:9;4597:23;4629:31;4654:5;4629:31;:::i;:::-;4679:5;-1:-1:-1;4736:2:1;4721:18;;4708:32;4749:33;4708:32;4749:33;:::i;:::-;4801:7;4791:17;;;4426:388;;;;;:::o;4819:437::-;4898:1;4894:12;;;;4941;;;4962:61;;5016:4;5008:6;5004:17;4994:27;;4962:61;5069:2;5061:6;5058:14;5038:18;5035:38;5032:218;;;-1:-1:-1;;;5103:1:1;5096:88;5207:4;5204:1;5197:15;5235:4;5232:1;5225:15;5032:218;;4819:437;;;:::o;5622:184::-;-1:-1:-1;;;5671:1:1;5664:88;5771:4;5768:1;5761:15;5795:4;5792:1;5785:15;5811:168;5851:7;5917:1;5913;5909:6;5905:14;5902:1;5899:21;5894:1;5887:9;5880:17;5876:45;5873:71;;;5924:18;;:::i;:::-;-1:-1:-1;5964:9:1;;5811:168::o;5984:274::-;6024:1;6050;6040:189;;-1:-1:-1;;;6082:1:1;6075:88;6186:4;6183:1;6176:15;6214:4;6211:1;6204:15;6040:189;-1:-1:-1;6243:9:1;;5984:274::o;6679:128::-;6719:3;6750:1;6746:6;6743:1;6740:13;6737:39;;;6756:18;;:::i;:::-;-1:-1:-1;6792:9:1;;6679:128::o;10390:184::-;10460:6;10513:2;10501:9;10492:7;10488:23;10484:32;10481:52;;;10529:1;10526;10519:12;10481:52;-1:-1:-1;10552:16:1;;10390:184;-1:-1:-1;10390:184:1:o;14579:125::-;14619:4;14647:1;14644;14641:8;14638:34;;;14652:18;;:::i;:::-;-1:-1:-1;14689:9:1;;14579:125::o;15834:184::-;-1:-1:-1;;;15883:1:1;15876:88;15983:4;15980:1;15973:15;16007:4;16004:1;15997:15;16023:251;16093:6;16146:2;16134:9;16125:7;16121:23;16117:32;16114:52;;;16162:1;16159;16152:12;16114:52;16194:9;16188:16;16213:31;16238:5;16213:31;:::i;16279:1026::-;16541:4;16589:3;16578:9;16574:19;16620:6;16609:9;16602:25;16646:2;16684:6;16679:2;16668:9;16664:18;16657:34;16727:3;16722:2;16711:9;16707:18;16700:31;16751:6;16786;16780:13;16817:6;16809;16802:22;16855:3;16844:9;16840:19;16833:26;;16894:2;16886:6;16882:15;16868:29;;16915:1;16925:218;16939:6;16936:1;16933:13;16925:218;;;17004:13;;-1:-1:-1;;;;;17000:62:1;16988:75;;17118:15;;;;17083:12;;;;16961:1;16954:9;16925:218;;;-1:-1:-1;;;;;;;17199:55:1;;;;17194:2;17179:18;;17172:83;-1:-1:-1;;;17286:3:1;17271:19;17264:35;17160:3;16279:1026;-1:-1:-1;;;16279:1026:1:o;17945:306::-;18033:6;18041;18049;18102:2;18090:9;18081:7;18077:23;18073:32;18070:52;;;18118:1;18115;18108:12;18070:52;18147:9;18141:16;18131:26;;18197:2;18186:9;18182:18;18176:25;18166:35;;18241:2;18230:9;18226:18;18220:25;18210:35;;17945:306;;;;;:::o
Swarm Source
ipfs://07b4c78f43e4987d3292b2c29a667a7196ddc0a5e3d1a99ee0e9171e5fb33f03
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.