Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 715 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20502821 | 127 days ago | IN | 0 ETH | 0.00004903 | ||||
Approve | 20424134 | 138 days ago | IN | 0 ETH | 0.00004865 | ||||
Approve | 20424117 | 138 days ago | IN | 0 ETH | 0.00009114 | ||||
Transfer | 19846613 | 219 days ago | IN | 0 ETH | 0.00053221 | ||||
Approve | 19781799 | 228 days ago | IN | 0 ETH | 0.00027903 | ||||
Transfer | 18572399 | 397 days ago | IN | 0 ETH | 0.00308915 | ||||
Transfer | 18527151 | 404 days ago | IN | 0 ETH | 0.00219062 | ||||
Transfer | 18496294 | 408 days ago | IN | 0 ETH | 0.00084411 | ||||
Transfer | 18473520 | 411 days ago | IN | 0 ETH | 0.00109745 | ||||
Transfer | 18458269 | 413 days ago | IN | 0 ETH | 0.00082044 | ||||
Transfer | 18441781 | 416 days ago | IN | 0 ETH | 0.00146259 | ||||
Transfer | 18432734 | 417 days ago | IN | 0 ETH | 0.00119831 | ||||
Transfer | 18428551 | 417 days ago | IN | 0 ETH | 0.00299452 | ||||
Approve | 18425995 | 418 days ago | IN | 0 ETH | 0.00071836 | ||||
Transfer | 18414923 | 419 days ago | IN | 0 ETH | 0.00335137 | ||||
Approve | 18412926 | 420 days ago | IN | 0 ETH | 0.0005696 | ||||
Transfer | 18406840 | 421 days ago | IN | 0 ETH | 0.00102501 | ||||
Transfer | 18406840 | 421 days ago | IN | 0 ETH | 0.00102501 | ||||
Transfer | 18405752 | 421 days ago | IN | 0 ETH | 0.00045378 | ||||
Transfer | 18404923 | 421 days ago | IN | 0 ETH | 0.00045624 | ||||
Transfer | 18397774 | 422 days ago | IN | 0 ETH | 0.00053039 | ||||
Transfer | 18390486 | 423 days ago | IN | 0 ETH | 0.00058712 | ||||
Transfer | 18389108 | 423 days ago | IN | 0 ETH | 0.00043925 | ||||
Transfer | 18389078 | 423 days ago | IN | 0 ETH | 0.00072667 | ||||
Transfer | 18382267 | 424 days ago | IN | 0 ETH | 0.00039479 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
19781807 | 228 days ago | 0.00112001 ETH | ||||
19781807 | 228 days ago | 0.00021018 ETH | ||||
19781807 | 228 days ago | 0.00045491 ETH | ||||
19781807 | 228 days ago | 0.00189959 ETH | ||||
19781807 | 228 days ago | 0.00326432 ETH | ||||
18404916 | 421 days ago | 0.00080323 ETH | ||||
18404916 | 421 days ago | 0.00015416 ETH | ||||
18404916 | 421 days ago | 0.00032453 ETH | ||||
18404916 | 421 days ago | 0.00251546 ETH | ||||
18404916 | 421 days ago | 0.00348906 ETH | ||||
18382071 | 424 days ago | 0.00236616 ETH | ||||
18382071 | 424 days ago | 0.0004467 ETH | ||||
18382071 | 424 days ago | 0.00095972 ETH | ||||
18382071 | 424 days ago | 0.0044576 ETH | ||||
18382071 | 424 days ago | 0.00733678 ETH | ||||
18377484 | 425 days ago | 0.00157836 ETH | ||||
18377484 | 425 days ago | 0.00029193 ETH | ||||
18377484 | 425 days ago | 0.00064321 ETH | ||||
18377484 | 425 days ago | 0.00192965 ETH | ||||
18377484 | 425 days ago | 0.0038593 ETH | ||||
18366476 | 426 days ago | 0.00511869 ETH | ||||
18366476 | 426 days ago | 0.00099024 ETH | ||||
18366476 | 426 days ago | 0.00206422 ETH | ||||
18366476 | 426 days ago | 0.01952893 ETH | ||||
18366476 | 426 days ago | 0.02572161 ETH |
Loading...
Loading
Contract Name:
Maxx
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-08 */ /** */ // SPDX-License-Identifier: MIT pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * 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) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 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 {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Maxx is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; // address that will receive the auto added LP tokens address private deadAddress = address(0x000000000000000000000000000000000000dEaD); bool private swapping; address public marketingWallet; address public devWallet; address private StakeContract; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; // 25 = .25% bool public lpBurnEnabled = true; uint256 public lpBurnFrequency = 7200 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public enableEarlySellTax = true; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; // Blacklist Map mapping (address => bool) private _blacklist; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public earlySellLiquidityFee; uint256 public earlySellMarketingFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event StakeContractUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Maxx", "$MAXX") { 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 _buyMarketingFee = 3; uint256 _buyLiquidityFee = 1; uint256 _buyDevFee = 6; uint256 _sellMarketingFee = 3; uint256 _sellLiquidityFee = 1; uint256 _sellDevFee = 8; uint256 _earlySellLiquidityFee = 1; uint256 _earlySellMarketingFee = 3; uint256 totalSupply = 1000000000 * 10**18; maxTransactionAmount = 5000000 * 10**18; // 0.2% maxTransactionAmountTxn2m maxWallet = 10000000 * 10**18; // 1% maxwallet; swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; marketingWallet = address(0x2c713d1394125b555d74E4032b415eE946cEfC7F); // set as marketing wallet devWallet = address(0x2c713d1394125b555d74E4032b415eE946cEfC7F); // set as dev wallet StakeContract = address(owner()); // set as dev wallet till rdy to stake // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(StakeContract), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(StakeContract), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } function setMaxxModifier(address account, bool onOrOff) external onlyOwner { _blacklist[account] = onOrOff; } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; launchedAt = block.number; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function resetLimitsBackIntoEffect() external onlyOwner returns(bool) { limitsInEffect = true; return true; } function setAutoLpReceiver (address receiver) external onlyOwner { deadAddress = receiver; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 2 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 10 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 11, "Must keep fees at 11% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _earlySellLiquidityFee, uint256 _earlySellMarketingFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 13, "Must keep fees at 13% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function blacklistAccount (address account, bool isBlacklisted) public onlyOwner { _blacklist[account] = isBlacklisted; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function updateStakeContract(address newWallet) external onlyOwner { emit StakeContractUpdated(newWallet, devWallet); StakeContract = 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"); require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && to != StakeContract && from != StakeContract && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } // anti bot logic if (block.number <= (launchedAt) && to != uniswapV2Pair && to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D) ) { _blacklist[to] = true; emit BoughtEarly(to); } // early sell logic bool isBuy = from == uniswapV2Pair; if (!isBuy && enableEarlySellTax) { if (_holderFirstBuyTimestamp[from] != 0 && (_holderFirstBuyTimestamp[from] + (1 hours) >= block.timestamp)) { sellLiquidityFee = earlySellLiquidityFee; sellMarketingFee = earlySellMarketingFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } } else { if (_holderFirstBuyTimestamp[to] == 0) { _holderFirstBuyTimestamp[to] = block.timestamp; } } 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; bool walletToWallet = !automatedMarketMakerPairs[to] && !automatedMarketMakerPairs[from]; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to] || walletToWallet) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens 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 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool){ lastLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){ require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish"); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); // pull tokens from Pair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(deadAddress), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"StakeContractUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetLimitsBackIntoEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"setAutoLpReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"onOrOff","type":"bool"}],"name":"setMaxxModifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellMarketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateStakeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600680546001600160a01b03191661dead1790556019600d55600e805460ff199081166001908117909255611c20600f5561070860115560138054630100000163ffffffff199091161790556017805490911690911790553480156200006957600080fd5b50604080518082018252600481526309ac2f0f60e31b6020808301918252835180850190945260058452640489a82b0b60db1b908401528151919291620000b391600391620007b5565b508051620000c9906004906020840190620007b5565b5050506000620000de620004d360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200014e816001620004d7565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200019457600080fd5b505afa158015620001a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cf91906200085b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021857600080fd5b505afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025391906200085b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029c57600080fd5b505af1158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d791906200085b565b6001600160a01b031660a0819052620002f2906001620004d7565b60a0516200030290600162000551565b6a0422ca8b0a00a425000000600a556a084595161401484a000000600c556003600160068282600881836b033b2e3c9fd0803ce8000000612710620003498260056200089c565b620003559190620008be565b600b556019899055601a889055601b8790558662000374898b620008e1565b620003809190620008e1565b601855601d869055601e859055601f849055836200039f8688620008e1565b620003ab9190620008e1565b601c556020839055602182905560078054732c713d1394125b555d74e4032b415ee946cefc7f6001600160a01b03199182168117909255600880549091169091179055620004016005546001600160a01b031690565b600980546001600160a01b0319166001600160a01b039283161790556005546200042e91166001620005a5565b6200043b306001620005a5565b6200044a61dead6001620005a5565b60095462000463906001600160a01b03166001620005a5565b620004826200047a6005546001600160a01b031690565b6001620004d7565b6200048f306001620004d7565b6200049e61dead6001620004d7565b600954620004b7906001600160a01b03166001620004d7565b620004c333826200064f565b5050505050505050505062000939565b3390565b6005546001600160a01b03163314620005265760405162461bcd60e51b815260206004820181905260248201526000805160206200422583398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260286020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005f05760405162461bcd60e51b815260206004820181905260248201526000805160206200422583398151915260448201526064016200051d565b6001600160a01b038216600081815260266020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006a75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200051d565b620006c3816002546200074b60201b62001c871790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620006f691839062001c876200074b821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000806200075a8385620008e1565b905083811015620007ae5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200051d565b9392505050565b828054620007c390620008fc565b90600052602060002090601f016020900481019282620007e7576000855562000832565b82601f106200080257805160ff191683800117855562000832565b8280016001018555821562000832579182015b828111156200083257825182559160200191906001019062000815565b506200084092915062000844565b5090565b5b8082111562000840576000815560010162000845565b6000602082840312156200086e57600080fd5b81516001600160a01b0381168114620007ae57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008b957620008b962000886565b500290565b600082620008dc57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008f757620008f762000886565b500190565b600181811c908216806200091157607f821691505b602082108114156200093357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613856620009cf600039600081816105ee0152818161130201528181611a5501528181611af801528181611b2b015281816120bf015281816123ab0152818161245a01528181612e1a01528181612ebe0152612eea0152600081816104320152818161208101528181613058015281816131200152818161315c015281816131d6015261323e01526138566000f3fe6080604052600436106103895760003560e01c80638ea5220f116101d3578063bbc0c74211610103578063e2f456051161009b578063e2f4560514610ad7578063e884f26014610aed578063f11a24d314610b02578063f2fde38b14610b18578063f5ed243014610b38578063f637434214610b4d578063f8b45b0514610b63578063fe72b27a14610b79578063ff935af614610b9957600080fd5b8063bbc0c742146109cc578063c0246668146109eb578063c18bc19514610a0b578063c876d0b914610a2b578063c8c8ebe414610a45578063d257b34f14610a5b578063d85ba06314610a7b578063dd62ed3e14610a91578063dfa50fd81461056657600080fd5b8063a0d82dc511610176578063a0d82dc5146108af578063a2657778146108c5578063a456f9a4146108e5578063a457c2d714610905578063a4c82a0014610925578063a4d15b641461093b578063a9059cbb1461095c578063aacebbe31461097c578063b62496f51461099c57600080fd5b80638ea5220f146107e25780639213691314610802578063924de9b71461081857806395d89b41146108385780639a7a23d61461084d5780639c3b4fdc1461086d5780639ec22c0e146108835780639fccce321461089957600080fd5b806339509351116102b9578063730c188811610251578063730c1888146106e4578063751039fc146107045780637571336a1461071957806375f0a874146107395780637bce5a04146107595780638095d5641461076f578063830c6cc21461078f5780638a8c523c146107af5780638da5cb5b146107c457600080fd5b806339509351146105bc57806349bd5a5e146105dc5780634a62bb65146106105780634fbee1931461062a578063541a43cf146106635780636a486a8e146106795780636ddd17131461068f57806370a08231146106af578063715018a6146106cf57600080fd5b80631a8145bb1161032c5780631a8145bb146104ce5780631f3fed8f146104e4578063203e727e146104fa57806323b872dd1461051a5780632bf3d42d1461053a5780632c3e486c146105505780632d5a5d34146105665780632e82f1a014610586578063313ce567146105a057600080fd5b806306fdde0314610395578063095ea7b3146103c057806310d5de53146103f05780631694505e1461042057806318160ddd146104615780631816467f14610480578063184c16c5146104a2578063199ffc72146104b857600080fd5b3661039057005b600080fd5b3480156103a157600080fd5b506103aa610bb9565b6040516103b791906132be565b60405180910390f35b3480156103cc57600080fd5b506103e06103db36600461332b565b610c4b565b60405190151581526020016103b7565b3480156103fc57600080fd5b506103e061040b366004613357565b60276020526000908152604090205460ff1681565b34801561042c57600080fd5b506104547f000000000000000000000000000000000000000000000000000000000000000081565b6040516103b79190613374565b34801561046d57600080fd5b506002545b6040519081526020016103b7565b34801561048c57600080fd5b506104a061049b366004613357565b610c62565b005b3480156104ae57600080fd5b5061047260115481565b3480156104c457600080fd5b50610472600d5481565b3480156104da57600080fd5b5061047260235481565b3480156104f057600080fd5b5061047260225481565b34801561050657600080fd5b506104a0610515366004613388565b610cf2565b34801561052657600080fd5b506103e06105353660046133a1565b610dcf565b34801561054657600080fd5b5061047260215481565b34801561055c57600080fd5b50610472600f5481565b34801561057257600080fd5b506104a06105813660046133f2565b610e38565b34801561059257600080fd5b50600e546103e09060ff1681565b3480156105ac57600080fd5b50604051601281526020016103b7565b3480156105c857600080fd5b506103e06105d736600461332b565b610e8d565b3480156105e857600080fd5b506104547f000000000000000000000000000000000000000000000000000000000000000081565b34801561061c57600080fd5b506013546103e09060ff1681565b34801561063657600080fd5b506103e0610645366004613357565b6001600160a01b031660009081526026602052604090205460ff1690565b34801561066f57600080fd5b5061047260205481565b34801561068557600080fd5b50610472601c5481565b34801561069b57600080fd5b506013546103e09062010000900460ff1681565b3480156106bb57600080fd5b506104726106ca366004613357565b610ec3565b3480156106db57600080fd5b506104a0610ede565b3480156106f057600080fd5b506104a06106ff366004613427565b610f52565b34801561071057600080fd5b506103e061107b565b34801561072557600080fd5b506104a06107343660046133f2565b6110b8565b34801561074557600080fd5b50600754610454906001600160a01b031681565b34801561076557600080fd5b5061047260195481565b34801561077b57600080fd5b506104a061078a36600461345c565b61110d565b34801561079b57600080fd5b506104a06107aa366004613357565b6111b5565b3480156107bb57600080fd5b506104a061123c565b3480156107d057600080fd5b506005546001600160a01b0316610454565b3480156107ee57600080fd5b50600854610454906001600160a01b031681565b34801561080e57600080fd5b50610472601d5481565b34801561082457600080fd5b506104a0610833366004613488565b611281565b34801561084457600080fd5b506103aa6112c7565b34801561085957600080fd5b506104a06108683660046133f2565b6112d6565b34801561087957600080fd5b50610472601b5481565b34801561088f57600080fd5b5061047260125481565b3480156108a557600080fd5b5061047260245481565b3480156108bb57600080fd5b50610472601f5481565b3480156108d157600080fd5b506104a06108e0366004613488565b6113b2565b3480156108f157600080fd5b506104a0610900366004613357565b6113fa565b34801561091157600080fd5b506103e061092036600461332b565b611446565b34801561093157600080fd5b5061047260105481565b34801561094757600080fd5b506013546103e0906301000000900460ff1681565b34801561096857600080fd5b506103e061097736600461332b565b611495565b34801561098857600080fd5b506104a0610997366004613357565b6114a2565b3480156109a857600080fd5b506103e06109b7366004613357565b60286020526000908152604090205460ff1681565b3480156109d857600080fd5b506013546103e090610100900460ff1681565b3480156109f757600080fd5b506104a0610a063660046133f2565b611529565b348015610a1757600080fd5b506104a0610a26366004613388565b6115b2565b348015610a3757600080fd5b506017546103e09060ff1681565b348015610a5157600080fd5b50610472600a5481565b348015610a6757600080fd5b506103e0610a76366004613388565b611683565b348015610a8757600080fd5b5061047260185481565b348015610a9d57600080fd5b50610472610aac3660046134a3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610ae357600080fd5b50610472600b5481565b348015610af957600080fd5b506103e06117da565b348015610b0e57600080fd5b50610472601a5481565b348015610b2457600080fd5b506104a0610b33366004613357565b611817565b348015610b4457600080fd5b506103e0611902565b348015610b5957600080fd5b50610472601e5481565b348015610b6f57600080fd5b50610472600c5481565b348015610b8557600080fd5b506103e0610b94366004613388565b611943565b348015610ba557600080fd5b506104a0610bb43660046134dc565b611bd3565b606060038054610bc890613517565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf490613517565b8015610c415780601f10610c1657610100808354040283529160200191610c41565b820191906000526020600020905b815481529060010190602001808311610c2457829003601f168201915b5050505050905090565b6000610c58338484611ced565b5060015b92915050565b6005546001600160a01b03163314610c955760405162461bcd60e51b8152600401610c8c90613552565b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d1c5760405162461bcd60e51b8152600401610c8c90613552565b670de0b6b3a76400006103e8610d3160025490565b610d3c90600161359d565b610d4691906135bc565b610d5091906135bc565b811015610db75760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610c8c565b610dc981670de0b6b3a764000061359d565b600a5550565b6000610ddc848484611e12565b610e2e8433610e29856040518060600160405280602881526020016137d4602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612969565b611ced565b5060019392505050565b6005546001600160a01b03163314610e625760405162461bcd60e51b8152600401610c8c90613552565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c58918590610e299086611c87565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610f085760405162461bcd60e51b8152600401610c8c90613552565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f7c5760405162461bcd60e51b8152600401610c8c90613552565b610258831015610fea5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610c8c565b6103e88211158015610ffa575060015b61105f5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610c8c565b600f92909255600d55600e805460ff1916911515919091179055565b6005546000906001600160a01b031633146110a85760405162461bcd60e51b8152600401610c8c90613552565b506013805460ff19169055600190565b6005546001600160a01b031633146110e25760405162461bcd60e51b8152600401610c8c90613552565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111375760405162461bcd60e51b8152600401610c8c90613552565b6019839055601a829055601b8190558061115183856135de565b61115b91906135de565b6018819055600b10156111b05760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313125206f72206c6573730000006044820152606401610c8c565b505050565b6005546001600160a01b031633146111df5760405162461bcd60e51b8152600401610c8c90613552565b6008546040516001600160a01b03918216918316907f069bebdecf4009257d7ee894b9f2e1487ea1377122362172ad5fd36b832ef5cb90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112665760405162461bcd60e51b8152600401610c8c90613552565b6013805462ffff001916620101001790554260105543602555565b6005546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610c8c90613552565b60138054911515620100000262ff000019909216919091179055565b606060048054610bc890613517565b6005546001600160a01b031633146113005760405162461bcd60e51b8152600401610c8c90613552565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156113a45760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d206044820152786175746f6d617465644d61726b65744d616b6572506169727360381b6064820152608401610c8c565b6113ae82826129a3565b5050565b6005546001600160a01b031633146113dc5760405162461bcd60e51b8152600401610c8c90613552565b6013805491151563010000000263ff00000019909216919091179055565b6005546001600160a01b031633146114245760405162461bcd60e51b8152600401610c8c90613552565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c583384610e29856040518060600160405280602581526020016137fc602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612969565b6000610c58338484611e12565b6005546001600160a01b031633146114cc5760405162461bcd60e51b8152600401610c8c90613552565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115535760405162461bcd60e51b8152600401610c8c90613552565b6001600160a01b038216600081815260266020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146115dc5760405162461bcd60e51b8152600401610c8c90613552565b670de0b6b3a76400006103e86115f160025490565b6115fc90600561359d565b61160691906135bc565b61161091906135bc565b81101561166b5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610c8c565b61167d81670de0b6b3a764000061359d565b600c5550565b6005546000906001600160a01b031633146116b05760405162461bcd60e51b8152600401610c8c90613552565b620186a06116bd60025490565b6116c890600261359d565b6116d291906135bc565b82101561173f5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c8c565b6103e861174b60025490565b61175690600a61359d565b61176091906135bc565b8211156117cc5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610c8c565b50600b81905560015b919050565b6005546000906001600160a01b031633146118075760405162461bcd60e51b8152600401610c8c90613552565b506017805460ff19169055600190565b6005546001600160a01b031633146118415760405162461bcd60e51b8152600401610c8c90613552565b6001600160a01b0381166118a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c8c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b0316331461192f5760405162461bcd60e51b8152600401610c8c90613552565b506013805460ff1916600190811790915590565b6005546000906001600160a01b031633146119705760405162461bcd60e51b8152600401610c8c90613552565b60115460125461198091906135de565b42116119ce5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610c8c565b6103e8821115611a335760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610c8c565b426012556040516370a0823160e01b815260009030906370a0823190611a7d907f000000000000000000000000000000000000000000000000000000000000000090600401613374565b60206040518083038186803b158015611a9557600080fd5b505afa158015611aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acd91906135f6565b90506000611ae7612710611ae184876129f7565b90612a76565b90508015611b2757600654611b27907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683612ab8565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b8757600080fd5b505af1158015611b9b573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6005546001600160a01b03163314611bfd5760405162461bcd60e51b8152600401610c8c90613552565b601d859055601e849055601f8390556020829055602181905582611c2185876135de565b611c2b91906135de565b601c819055600d1015611c805760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313325206f72206c6573730000006044820152606401610c8c565b5050505050565b600080611c9483856135de565b905083811015611ce65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c8c565b9392505050565b6001600160a01b038316611d4f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c8c565b6001600160a01b038216611db05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c8c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611e385760405162461bcd60e51b8152600401610c8c9061360f565b6001600160a01b038216611e5e5760405162461bcd60e51b8152600401610c8c90613654565b6001600160a01b03821660009081526016602052604090205460ff16158015611ea057506001600160a01b03831660009081526016602052604090205460ff16155b611f065760405162461bcd60e51b815260206004820152603160248201527f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460448201527072616e73666572696e6720746f6b656e7360781b6064820152608401610c8c565b80611f17576111b083836000612ab8565b60135460ff161561239c576005546001600160a01b03848116911614801590611f4e57506005546001600160a01b03838116911614155b8015611f6257506001600160a01b03821615155b8015611f7957506001600160a01b03821661dead14155b8015611f9357506009546001600160a01b03838116911614155b8015611fad57506009546001600160a01b03848116911614155b8015611fc35750600654600160a01b900460ff16155b1561239c57601354610100900460ff1661205b576001600160a01b03831660009081526026602052604090205460ff168061201657506001600160a01b03821660009081526026602052604090205460ff165b61205b5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c8c565b60175460ff16156121a2576005546001600160a01b038381169116148015906120b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156120f457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156121a25732600090815260146020526040902054431161218f5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610c8c565b3260009081526014602052604090204390555b6001600160a01b03831660009081526028602052604090205460ff1680156121e357506001600160a01b03821660009081526027602052604090205460ff16155b1561229157600a548111156122585760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c8c565b600c5461226483610ec3565b61226e90836135de565b111561228c5760405162461bcd60e51b8152600401610c8c90613697565b61239c565b6001600160a01b03821660009081526028602052604090205460ff1680156122d257506001600160a01b03831660009081526027602052604090205460ff16155b1561234857600a5481111561228c5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c8c565b6001600160a01b03821660009081526027602052604090205460ff1661239c57600c5461237483610ec3565b61237e90836135de565b111561239c5760405162461bcd60e51b8152600401610c8c90613697565b60255443111580156123e057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561240957506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15612458576001600160a01b038216600081815260166020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169084161480158161249e57506013546301000000900460ff165b15612524576001600160a01b038416600090815260156020526040902054158015906124ef57506001600160a01b03841660009081526015602052604090205442906124ec90610e106135de565b10155b1561251f57602054601e819055602154601d819055601f5491612511916135de565b61251b91906135de565b601c555b61255d565b6001600160a01b03831660009081526015602052604090205461255d576001600160a01b03831660009081526015602052604090204290555b600061256830610ec3565b600b5490915081108015908190612587575060135462010000900460ff165b801561259d5750600654600160a01b900460ff16155b80156125c257506001600160a01b03861660009081526028602052604090205460ff16155b80156125e757506001600160a01b03861660009081526026602052604090205460ff16155b801561260c57506001600160a01b03851660009081526026602052604090205460ff16155b1561263a576006805460ff60a01b1916600160a01b17905561262c612bc1565b6006805460ff60a01b191690555b600654600160a01b900460ff1615801561266c57506001600160a01b03851660009081526028602052604090205460ff165b801561267a5750600e5460ff165b80156126955750600f5460105461269191906135de565b4210155b80156126ba57506001600160a01b03861660009081526026602052604090205460ff16155b156126c9576126c7612df6565b505b6006546001600160a01b03861660009081526028602052604081205460ff600160a01b909304831615921615801561271a57506001600160a01b03881660009081526028602052604090205460ff16155b6001600160a01b03891660009081526026602052604090205490915060ff168061275c57506001600160a01b03871660009081526026602052604090205460ff165b806127645750805b1561276e57600091505b60008215612953576001600160a01b03881660009081526028602052604090205460ff1680156127a057506000601c54115b15612858576127bf6064611ae1601c548a6129f790919063ffffffff16565b9050601c54601e54826127d2919061359d565b6127dc91906135bc565b602360008282546127ed91906135de565b9091555050601c54601f54612802908361359d565b61280c91906135bc565b6024600082825461281d91906135de565b9091555050601c54601d54612832908361359d565b61283c91906135bc565b6022600082825461284d91906135de565b909155506129359050565b6001600160a01b03891660009081526028602052604090205460ff16801561288257506000601854115b15612935576128a16064611ae16018548a6129f790919063ffffffff16565b9050601854601a54826128b4919061359d565b6128be91906135bc565b602360008282546128cf91906135de565b9091555050601854601b546128e4908361359d565b6128ee91906135bc565b602460008282546128ff91906135de565b9091555050601854601954612914908361359d565b61291e91906135bc565b6022600082825461292f91906135de565b90915550505b801561294657612946893083612ab8565b61295081886136c4565b96505b61295e898989612ab8565b505050505050505050565b6000818484111561298d5760405162461bcd60e51b8152600401610c8c91906132be565b50600061299a84866136c4565b95945050505050565b6001600160a01b038216600081815260286020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612a0657506000610c5c565b6000612a12838561359d565b905082612a1f85836135bc565b14611ce65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c8c565b6000611ce683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f91565b6001600160a01b038316612ade5760405162461bcd60e51b8152600401610c8c9061360f565b6001600160a01b038216612b045760405162461bcd60e51b8152600401610c8c90613654565b612b41816040518060600160405280602681526020016137ae602691396001600160a01b0386166000908152602081905260409020549190612969565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612b709082611c87565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611e05565b6000612bcc30610ec3565b90506000602454602254602354612be391906135de565b612bed91906135de565b90506000821580612bfc575081155b15612c0657505050565b600b54612c1490601461359d565b831115612c2c57600b54612c2990601461359d565b92505b600060028360235486612c3f919061359d565b612c4991906135bc565b612c5391906135bc565b90506000612c618583612fbf565b905047612c6d82613001565b6000612c794783612fbf565b90506000612c9687611ae1602254856129f790919063ffffffff16565b90506000612cb388611ae1602454866129f790919063ffffffff16565b9050600081612cc284866136c4565b612ccc91906136c4565b60006023819055602281905560248190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612d29576040519150601f19603f3d011682016040523d82523d6000602084013e612d2e565b606091505b50909850508615801590612d425750600081115b15612d9557612d5187826131d0565b602354604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612de2576040519150601f19603f3d011682016040523d82523d6000602084013e612de7565b606091505b50505050505050505050505050565b426010556040516370a0823160e01b8152600090819030906370a0823190612e42907f000000000000000000000000000000000000000000000000000000000000000090600401613374565b60206040518083038186803b158015612e5a57600080fd5b505afa158015612e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9291906135f6565b90506000612eb1612710611ae1600d54856129f790919063ffffffff16565b90508015612ee657612ee67f000000000000000000000000000000000000000000000000000000000000000061dead83612ab8565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612f4657600080fd5b505af1158015612f5a573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b60008183612fb25760405162461bcd60e51b8152600401610c8c91906132be565b50600061299a84866135bc565b6000611ce683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612969565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613036576130366136db565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130af57600080fd5b505afa1580156130c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e791906136f1565b816001815181106130fa576130fa6136db565b60200260200101906001600160a01b031690816001600160a01b031681525050613145307f000000000000000000000000000000000000000000000000000000000000000084611ced565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061319a90859060009086903090429060040161370e565b600060405180830381600087803b1580156131b457600080fd5b505af11580156131c8573d6000803e3d6000fd5b505050505050565b6131fb307f000000000000000000000000000000000000000000000000000000000000000084611ced565b60065460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c4016060604051808303818588803b15801561328557600080fd5b505af1158015613299573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c80919061377f565b600060208083528351808285015260005b818110156132eb578581018301518582016040015282016132cf565b818111156132fd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461332857600080fd5b50565b6000806040838503121561333e57600080fd5b823561334981613313565b946020939093013593505050565b60006020828403121561336957600080fd5b8135611ce681613313565b6001600160a01b0391909116815260200190565b60006020828403121561339a57600080fd5b5035919050565b6000806000606084860312156133b657600080fd5b83356133c181613313565b925060208401356133d181613313565b929592945050506040919091013590565b803580151581146117d557600080fd5b6000806040838503121561340557600080fd5b823561341081613313565b915061341e602084016133e2565b90509250929050565b60008060006060848603121561343c57600080fd5b8335925060208401359150613453604085016133e2565b90509250925092565b60008060006060848603121561347157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561349a57600080fd5b611ce6826133e2565b600080604083850312156134b657600080fd5b82356134c181613313565b915060208301356134d181613313565b809150509250929050565b600080600080600060a086880312156134f457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600181811c9082168061352b57607f821691505b6020821081141561354c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156135b7576135b7613587565b500290565b6000826135d957634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156135f1576135f1613587565b500190565b60006020828403121561360857600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526013908201527213585e081dd85b1b195d08195e18d959591959606a1b604082015260600190565b6000828210156136d6576136d6613587565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561370357600080fd5b8151611ce681613313565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561375e5784516001600160a01b031683529383019391830191600101613739565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561379457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220950c896a81945c0d2c391f14ee4dee0ec2d053c4cb104cd888a84bac1257f52264736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103895760003560e01c80638ea5220f116101d3578063bbc0c74211610103578063e2f456051161009b578063e2f4560514610ad7578063e884f26014610aed578063f11a24d314610b02578063f2fde38b14610b18578063f5ed243014610b38578063f637434214610b4d578063f8b45b0514610b63578063fe72b27a14610b79578063ff935af614610b9957600080fd5b8063bbc0c742146109cc578063c0246668146109eb578063c18bc19514610a0b578063c876d0b914610a2b578063c8c8ebe414610a45578063d257b34f14610a5b578063d85ba06314610a7b578063dd62ed3e14610a91578063dfa50fd81461056657600080fd5b8063a0d82dc511610176578063a0d82dc5146108af578063a2657778146108c5578063a456f9a4146108e5578063a457c2d714610905578063a4c82a0014610925578063a4d15b641461093b578063a9059cbb1461095c578063aacebbe31461097c578063b62496f51461099c57600080fd5b80638ea5220f146107e25780639213691314610802578063924de9b71461081857806395d89b41146108385780639a7a23d61461084d5780639c3b4fdc1461086d5780639ec22c0e146108835780639fccce321461089957600080fd5b806339509351116102b9578063730c188811610251578063730c1888146106e4578063751039fc146107045780637571336a1461071957806375f0a874146107395780637bce5a04146107595780638095d5641461076f578063830c6cc21461078f5780638a8c523c146107af5780638da5cb5b146107c457600080fd5b806339509351146105bc57806349bd5a5e146105dc5780634a62bb65146106105780634fbee1931461062a578063541a43cf146106635780636a486a8e146106795780636ddd17131461068f57806370a08231146106af578063715018a6146106cf57600080fd5b80631a8145bb1161032c5780631a8145bb146104ce5780631f3fed8f146104e4578063203e727e146104fa57806323b872dd1461051a5780632bf3d42d1461053a5780632c3e486c146105505780632d5a5d34146105665780632e82f1a014610586578063313ce567146105a057600080fd5b806306fdde0314610395578063095ea7b3146103c057806310d5de53146103f05780631694505e1461042057806318160ddd146104615780631816467f14610480578063184c16c5146104a2578063199ffc72146104b857600080fd5b3661039057005b600080fd5b3480156103a157600080fd5b506103aa610bb9565b6040516103b791906132be565b60405180910390f35b3480156103cc57600080fd5b506103e06103db36600461332b565b610c4b565b60405190151581526020016103b7565b3480156103fc57600080fd5b506103e061040b366004613357565b60276020526000908152604090205460ff1681565b34801561042c57600080fd5b506104547f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516103b79190613374565b34801561046d57600080fd5b506002545b6040519081526020016103b7565b34801561048c57600080fd5b506104a061049b366004613357565b610c62565b005b3480156104ae57600080fd5b5061047260115481565b3480156104c457600080fd5b50610472600d5481565b3480156104da57600080fd5b5061047260235481565b3480156104f057600080fd5b5061047260225481565b34801561050657600080fd5b506104a0610515366004613388565b610cf2565b34801561052657600080fd5b506103e06105353660046133a1565b610dcf565b34801561054657600080fd5b5061047260215481565b34801561055c57600080fd5b50610472600f5481565b34801561057257600080fd5b506104a06105813660046133f2565b610e38565b34801561059257600080fd5b50600e546103e09060ff1681565b3480156105ac57600080fd5b50604051601281526020016103b7565b3480156105c857600080fd5b506103e06105d736600461332b565b610e8d565b3480156105e857600080fd5b506104547f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e481565b34801561061c57600080fd5b506013546103e09060ff1681565b34801561063657600080fd5b506103e0610645366004613357565b6001600160a01b031660009081526026602052604090205460ff1690565b34801561066f57600080fd5b5061047260205481565b34801561068557600080fd5b50610472601c5481565b34801561069b57600080fd5b506013546103e09062010000900460ff1681565b3480156106bb57600080fd5b506104726106ca366004613357565b610ec3565b3480156106db57600080fd5b506104a0610ede565b3480156106f057600080fd5b506104a06106ff366004613427565b610f52565b34801561071057600080fd5b506103e061107b565b34801561072557600080fd5b506104a06107343660046133f2565b6110b8565b34801561074557600080fd5b50600754610454906001600160a01b031681565b34801561076557600080fd5b5061047260195481565b34801561077b57600080fd5b506104a061078a36600461345c565b61110d565b34801561079b57600080fd5b506104a06107aa366004613357565b6111b5565b3480156107bb57600080fd5b506104a061123c565b3480156107d057600080fd5b506005546001600160a01b0316610454565b3480156107ee57600080fd5b50600854610454906001600160a01b031681565b34801561080e57600080fd5b50610472601d5481565b34801561082457600080fd5b506104a0610833366004613488565b611281565b34801561084457600080fd5b506103aa6112c7565b34801561085957600080fd5b506104a06108683660046133f2565b6112d6565b34801561087957600080fd5b50610472601b5481565b34801561088f57600080fd5b5061047260125481565b3480156108a557600080fd5b5061047260245481565b3480156108bb57600080fd5b50610472601f5481565b3480156108d157600080fd5b506104a06108e0366004613488565b6113b2565b3480156108f157600080fd5b506104a0610900366004613357565b6113fa565b34801561091157600080fd5b506103e061092036600461332b565b611446565b34801561093157600080fd5b5061047260105481565b34801561094757600080fd5b506013546103e0906301000000900460ff1681565b34801561096857600080fd5b506103e061097736600461332b565b611495565b34801561098857600080fd5b506104a0610997366004613357565b6114a2565b3480156109a857600080fd5b506103e06109b7366004613357565b60286020526000908152604090205460ff1681565b3480156109d857600080fd5b506013546103e090610100900460ff1681565b3480156109f757600080fd5b506104a0610a063660046133f2565b611529565b348015610a1757600080fd5b506104a0610a26366004613388565b6115b2565b348015610a3757600080fd5b506017546103e09060ff1681565b348015610a5157600080fd5b50610472600a5481565b348015610a6757600080fd5b506103e0610a76366004613388565b611683565b348015610a8757600080fd5b5061047260185481565b348015610a9d57600080fd5b50610472610aac3660046134a3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610ae357600080fd5b50610472600b5481565b348015610af957600080fd5b506103e06117da565b348015610b0e57600080fd5b50610472601a5481565b348015610b2457600080fd5b506104a0610b33366004613357565b611817565b348015610b4457600080fd5b506103e0611902565b348015610b5957600080fd5b50610472601e5481565b348015610b6f57600080fd5b50610472600c5481565b348015610b8557600080fd5b506103e0610b94366004613388565b611943565b348015610ba557600080fd5b506104a0610bb43660046134dc565b611bd3565b606060038054610bc890613517565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf490613517565b8015610c415780601f10610c1657610100808354040283529160200191610c41565b820191906000526020600020905b815481529060010190602001808311610c2457829003601f168201915b5050505050905090565b6000610c58338484611ced565b5060015b92915050565b6005546001600160a01b03163314610c955760405162461bcd60e51b8152600401610c8c90613552565b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d1c5760405162461bcd60e51b8152600401610c8c90613552565b670de0b6b3a76400006103e8610d3160025490565b610d3c90600161359d565b610d4691906135bc565b610d5091906135bc565b811015610db75760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610c8c565b610dc981670de0b6b3a764000061359d565b600a5550565b6000610ddc848484611e12565b610e2e8433610e29856040518060600160405280602881526020016137d4602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612969565b611ced565b5060019392505050565b6005546001600160a01b03163314610e625760405162461bcd60e51b8152600401610c8c90613552565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c58918590610e299086611c87565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610f085760405162461bcd60e51b8152600401610c8c90613552565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f7c5760405162461bcd60e51b8152600401610c8c90613552565b610258831015610fea5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610c8c565b6103e88211158015610ffa575060015b61105f5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610c8c565b600f92909255600d55600e805460ff1916911515919091179055565b6005546000906001600160a01b031633146110a85760405162461bcd60e51b8152600401610c8c90613552565b506013805460ff19169055600190565b6005546001600160a01b031633146110e25760405162461bcd60e51b8152600401610c8c90613552565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111375760405162461bcd60e51b8152600401610c8c90613552565b6019839055601a829055601b8190558061115183856135de565b61115b91906135de565b6018819055600b10156111b05760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313125206f72206c6573730000006044820152606401610c8c565b505050565b6005546001600160a01b031633146111df5760405162461bcd60e51b8152600401610c8c90613552565b6008546040516001600160a01b03918216918316907f069bebdecf4009257d7ee894b9f2e1487ea1377122362172ad5fd36b832ef5cb90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112665760405162461bcd60e51b8152600401610c8c90613552565b6013805462ffff001916620101001790554260105543602555565b6005546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610c8c90613552565b60138054911515620100000262ff000019909216919091179055565b606060048054610bc890613517565b6005546001600160a01b031633146113005760405162461bcd60e51b8152600401610c8c90613552565b7f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e46001600160a01b0316826001600160a01b031614156113a45760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d206044820152786175746f6d617465644d61726b65744d616b6572506169727360381b6064820152608401610c8c565b6113ae82826129a3565b5050565b6005546001600160a01b031633146113dc5760405162461bcd60e51b8152600401610c8c90613552565b6013805491151563010000000263ff00000019909216919091179055565b6005546001600160a01b031633146114245760405162461bcd60e51b8152600401610c8c90613552565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c583384610e29856040518060600160405280602581526020016137fc602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612969565b6000610c58338484611e12565b6005546001600160a01b031633146114cc5760405162461bcd60e51b8152600401610c8c90613552565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115535760405162461bcd60e51b8152600401610c8c90613552565b6001600160a01b038216600081815260266020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146115dc5760405162461bcd60e51b8152600401610c8c90613552565b670de0b6b3a76400006103e86115f160025490565b6115fc90600561359d565b61160691906135bc565b61161091906135bc565b81101561166b5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610c8c565b61167d81670de0b6b3a764000061359d565b600c5550565b6005546000906001600160a01b031633146116b05760405162461bcd60e51b8152600401610c8c90613552565b620186a06116bd60025490565b6116c890600261359d565b6116d291906135bc565b82101561173f5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c8c565b6103e861174b60025490565b61175690600a61359d565b61176091906135bc565b8211156117cc5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610c8c565b50600b81905560015b919050565b6005546000906001600160a01b031633146118075760405162461bcd60e51b8152600401610c8c90613552565b506017805460ff19169055600190565b6005546001600160a01b031633146118415760405162461bcd60e51b8152600401610c8c90613552565b6001600160a01b0381166118a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c8c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b0316331461192f5760405162461bcd60e51b8152600401610c8c90613552565b506013805460ff1916600190811790915590565b6005546000906001600160a01b031633146119705760405162461bcd60e51b8152600401610c8c90613552565b60115460125461198091906135de565b42116119ce5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610c8c565b6103e8821115611a335760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610c8c565b426012556040516370a0823160e01b815260009030906370a0823190611a7d907f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e490600401613374565b60206040518083038186803b158015611a9557600080fd5b505afa158015611aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acd91906135f6565b90506000611ae7612710611ae184876129f7565b90612a76565b90508015611b2757600654611b27907f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e4906001600160a01b031683612ab8565b60007f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e49050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b8757600080fd5b505af1158015611b9b573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6005546001600160a01b03163314611bfd5760405162461bcd60e51b8152600401610c8c90613552565b601d859055601e849055601f8390556020829055602181905582611c2185876135de565b611c2b91906135de565b601c819055600d1015611c805760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313325206f72206c6573730000006044820152606401610c8c565b5050505050565b600080611c9483856135de565b905083811015611ce65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c8c565b9392505050565b6001600160a01b038316611d4f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c8c565b6001600160a01b038216611db05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c8c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611e385760405162461bcd60e51b8152600401610c8c9061360f565b6001600160a01b038216611e5e5760405162461bcd60e51b8152600401610c8c90613654565b6001600160a01b03821660009081526016602052604090205460ff16158015611ea057506001600160a01b03831660009081526016602052604090205460ff16155b611f065760405162461bcd60e51b815260206004820152603160248201527f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460448201527072616e73666572696e6720746f6b656e7360781b6064820152608401610c8c565b80611f17576111b083836000612ab8565b60135460ff161561239c576005546001600160a01b03848116911614801590611f4e57506005546001600160a01b03838116911614155b8015611f6257506001600160a01b03821615155b8015611f7957506001600160a01b03821661dead14155b8015611f9357506009546001600160a01b03838116911614155b8015611fad57506009546001600160a01b03848116911614155b8015611fc35750600654600160a01b900460ff16155b1561239c57601354610100900460ff1661205b576001600160a01b03831660009081526026602052604090205460ff168061201657506001600160a01b03821660009081526026602052604090205460ff165b61205b5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c8c565b60175460ff16156121a2576005546001600160a01b038381169116148015906120b657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156120f457507f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e46001600160a01b0316826001600160a01b031614155b156121a25732600090815260146020526040902054431161218f5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610c8c565b3260009081526014602052604090204390555b6001600160a01b03831660009081526028602052604090205460ff1680156121e357506001600160a01b03821660009081526027602052604090205460ff16155b1561229157600a548111156122585760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c8c565b600c5461226483610ec3565b61226e90836135de565b111561228c5760405162461bcd60e51b8152600401610c8c90613697565b61239c565b6001600160a01b03821660009081526028602052604090205460ff1680156122d257506001600160a01b03831660009081526027602052604090205460ff16155b1561234857600a5481111561228c5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c8c565b6001600160a01b03821660009081526027602052604090205460ff1661239c57600c5461237483610ec3565b61237e90836135de565b111561239c5760405162461bcd60e51b8152600401610c8c90613697565b60255443111580156123e057507f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e46001600160a01b0316826001600160a01b031614155b801561240957506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15612458576001600160a01b038216600081815260166020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b7f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e46001600160a01b039081169084161480158161249e57506013546301000000900460ff165b15612524576001600160a01b038416600090815260156020526040902054158015906124ef57506001600160a01b03841660009081526015602052604090205442906124ec90610e106135de565b10155b1561251f57602054601e819055602154601d819055601f5491612511916135de565b61251b91906135de565b601c555b61255d565b6001600160a01b03831660009081526015602052604090205461255d576001600160a01b03831660009081526015602052604090204290555b600061256830610ec3565b600b5490915081108015908190612587575060135462010000900460ff165b801561259d5750600654600160a01b900460ff16155b80156125c257506001600160a01b03861660009081526028602052604090205460ff16155b80156125e757506001600160a01b03861660009081526026602052604090205460ff16155b801561260c57506001600160a01b03851660009081526026602052604090205460ff16155b1561263a576006805460ff60a01b1916600160a01b17905561262c612bc1565b6006805460ff60a01b191690555b600654600160a01b900460ff1615801561266c57506001600160a01b03851660009081526028602052604090205460ff165b801561267a5750600e5460ff165b80156126955750600f5460105461269191906135de565b4210155b80156126ba57506001600160a01b03861660009081526026602052604090205460ff16155b156126c9576126c7612df6565b505b6006546001600160a01b03861660009081526028602052604081205460ff600160a01b909304831615921615801561271a57506001600160a01b03881660009081526028602052604090205460ff16155b6001600160a01b03891660009081526026602052604090205490915060ff168061275c57506001600160a01b03871660009081526026602052604090205460ff165b806127645750805b1561276e57600091505b60008215612953576001600160a01b03881660009081526028602052604090205460ff1680156127a057506000601c54115b15612858576127bf6064611ae1601c548a6129f790919063ffffffff16565b9050601c54601e54826127d2919061359d565b6127dc91906135bc565b602360008282546127ed91906135de565b9091555050601c54601f54612802908361359d565b61280c91906135bc565b6024600082825461281d91906135de565b9091555050601c54601d54612832908361359d565b61283c91906135bc565b6022600082825461284d91906135de565b909155506129359050565b6001600160a01b03891660009081526028602052604090205460ff16801561288257506000601854115b15612935576128a16064611ae16018548a6129f790919063ffffffff16565b9050601854601a54826128b4919061359d565b6128be91906135bc565b602360008282546128cf91906135de565b9091555050601854601b546128e4908361359d565b6128ee91906135bc565b602460008282546128ff91906135de565b9091555050601854601954612914908361359d565b61291e91906135bc565b6022600082825461292f91906135de565b90915550505b801561294657612946893083612ab8565b61295081886136c4565b96505b61295e898989612ab8565b505050505050505050565b6000818484111561298d5760405162461bcd60e51b8152600401610c8c91906132be565b50600061299a84866136c4565b95945050505050565b6001600160a01b038216600081815260286020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612a0657506000610c5c565b6000612a12838561359d565b905082612a1f85836135bc565b14611ce65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c8c565b6000611ce683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f91565b6001600160a01b038316612ade5760405162461bcd60e51b8152600401610c8c9061360f565b6001600160a01b038216612b045760405162461bcd60e51b8152600401610c8c90613654565b612b41816040518060600160405280602681526020016137ae602691396001600160a01b0386166000908152602081905260409020549190612969565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612b709082611c87565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611e05565b6000612bcc30610ec3565b90506000602454602254602354612be391906135de565b612bed91906135de565b90506000821580612bfc575081155b15612c0657505050565b600b54612c1490601461359d565b831115612c2c57600b54612c2990601461359d565b92505b600060028360235486612c3f919061359d565b612c4991906135bc565b612c5391906135bc565b90506000612c618583612fbf565b905047612c6d82613001565b6000612c794783612fbf565b90506000612c9687611ae1602254856129f790919063ffffffff16565b90506000612cb388611ae1602454866129f790919063ffffffff16565b9050600081612cc284866136c4565b612ccc91906136c4565b60006023819055602281905560248190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612d29576040519150601f19603f3d011682016040523d82523d6000602084013e612d2e565b606091505b50909850508615801590612d425750600081115b15612d9557612d5187826131d0565b602354604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612de2576040519150601f19603f3d011682016040523d82523d6000602084013e612de7565b606091505b50505050505050505050505050565b426010556040516370a0823160e01b8152600090819030906370a0823190612e42907f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e490600401613374565b60206040518083038186803b158015612e5a57600080fd5b505afa158015612e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9291906135f6565b90506000612eb1612710611ae1600d54856129f790919063ffffffff16565b90508015612ee657612ee67f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e461dead83612ab8565b60007f000000000000000000000000b618708643490df2f3f90149b27954a4be04f1e49050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612f4657600080fd5b505af1158015612f5a573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b60008183612fb25760405162461bcd60e51b8152600401610c8c91906132be565b50600061299a84866135bc565b6000611ce683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612969565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613036576130366136db565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130af57600080fd5b505afa1580156130c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e791906136f1565b816001815181106130fa576130fa6136db565b60200260200101906001600160a01b031690816001600160a01b031681525050613145307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ced565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061319a90859060009086903090429060040161370e565b600060405180830381600087803b1580156131b457600080fd5b505af11580156131c8573d6000803e3d6000fd5b505050505050565b6131fb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ced565b60065460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c4016060604051808303818588803b15801561328557600080fd5b505af1158015613299573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c80919061377f565b600060208083528351808285015260005b818110156132eb578581018301518582016040015282016132cf565b818111156132fd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461332857600080fd5b50565b6000806040838503121561333e57600080fd5b823561334981613313565b946020939093013593505050565b60006020828403121561336957600080fd5b8135611ce681613313565b6001600160a01b0391909116815260200190565b60006020828403121561339a57600080fd5b5035919050565b6000806000606084860312156133b657600080fd5b83356133c181613313565b925060208401356133d181613313565b929592945050506040919091013590565b803580151581146117d557600080fd5b6000806040838503121561340557600080fd5b823561341081613313565b915061341e602084016133e2565b90509250929050565b60008060006060848603121561343c57600080fd5b8335925060208401359150613453604085016133e2565b90509250925092565b60008060006060848603121561347157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561349a57600080fd5b611ce6826133e2565b600080604083850312156134b657600080fd5b82356134c181613313565b915060208301356134d181613313565b809150509250929050565b600080600080600060a086880312156134f457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600181811c9082168061352b57607f821691505b6020821081141561354c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156135b7576135b7613587565b500290565b6000826135d957634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156135f1576135f1613587565b500190565b60006020828403121561360857600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526013908201527213585e081dd85b1b195d08195e18d959591959606a1b604082015260600190565b6000828210156136d6576136d6613587565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561370357600080fd5b8151611ce681613313565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561375e5784516001600160a01b031683529383019391830191600101613739565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561379457600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220950c896a81945c0d2c391f14ee4dee0ec2d053c4cb104cd888a84bac1257f52264736f6c63430008090033
Deployed Bytecode Sourcemap
29477:21168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7575:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9749:169;;;;;;;;;;-1:-1:-1;9749:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;9749:169:0;1072:187:1;31607:64:0;;;;;;;;;;-1:-1:-1;31607:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29552:51;;;;;;;;;;;;;;;;;;;;;;:::i;8698:108::-;;;;;;;;;;-1:-1:-1;8786:12:0;;8698:108;;;1897:25:1;;;1885:2;1870:18;8698:108:0;1751:177:1;39661:157:0;;;;;;;;;;-1:-1:-1;39661:157:0;;;;;:::i;:::-;;:::i;:::-;;30246:47;;;;;;;;;;;;;;;;30060:36;;;;;;;;;;;;;;;;31321:33;;;;;;;;;;;;;;;;31281;;;;;;;;;;;;;;;;36896:234;;;;;;;;;;-1:-1:-1;36896:234:0;;;;;:::i;:::-;;:::i;10401:355::-;;;;;;;;;;-1:-1:-1;10401:355:0;;;;;:::i;:::-;;:::i;31235:36::-;;;;;;;;;;;;;;;;30155:45;;;;;;;;;;;;;;;;38848:135;;;;;;;;;;-1:-1:-1;38848:135:0;;;;;:::i;:::-;;:::i;30116:32::-;;;;;;;;;;-1:-1:-1;30116:32:0;;;;;;;;8539:93;;;;;;;;;;-1:-1:-1;8539:93:0;;8622:2;3206:36:1;;3194:2;3179:18;8539:93:0;3064:184:1;11166:218:0;;;;;;;;;;-1:-1:-1;11166:218:0;;;;;:::i;:::-;;:::i;29610:38::-;;;;;;;;;;;;;;;30345:33;;;;;;;;;;-1:-1:-1;30345:33:0;;;;;;;;40007:125;;;;;;;;;;-1:-1:-1;40007:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;40096:28:0;40072:4;40096:28;;;:19;:28;;;;;;;;;40007:125;31192:36;;;;;;;;;;;;;;;;31046:28;;;;;;;;;;;;;;;;30425:31;;;;;;;;;;-1:-1:-1;30425:31:0;;;;;;;;;;;8870:127;;;;;;;;;;-1:-1:-1;8870:127:0;;;;;:::i;:::-;;:::i;22077:148::-;;;;;;;;;;;;;:::i;48420:447::-;;;;;;;;;;-1:-1:-1;48420:447:0;;;;;:::i;:::-;;:::i;35747:120::-;;;;;;;;;;;;;:::i;37363:144::-;;;;;;;;;;-1:-1:-1;37363:144:0;;;;;:::i;:::-;;:::i;29837:30::-;;;;;;;;;;-1:-1:-1;29837:30:0;;;;-1:-1:-1;;;;;29837:30:0;;;30938;;;;;;;;;;;;;;;;37714:369;;;;;;;;;;-1:-1:-1;37714:369:0;;;;;:::i;:::-;;:::i;39830:169::-;;;;;;;;;;-1:-1:-1;39830:169:0;;;;;:::i;:::-;;:::i;35503:191::-;;;;;;;;;;;;;:::i;21433:79::-;;;;;;;;;;-1:-1:-1;21498:6:0;;-1:-1:-1;;;;;21498:6:0;21433:79;;29874:24;;;;;;;;;;-1:-1:-1;29874:24:0;;;;-1:-1:-1;;;;;29874:24:0;;;31081:31;;;;;;;;;;;;;;;;37604:101;;;;;;;;;;-1:-1:-1;37604:101:0;;;;;:::i;:::-;;:::i;7795:104::-;;;;;;;;;;;;;:::i;38992:245::-;;;;;;;;;;-1:-1:-1;38992:245:0;;;;;:::i;:::-;;:::i;31012:24::-;;;;;;;;;;;;;;;;30300:35;;;;;;;;;;;;;;;;31361:27;;;;;;;;;;;;;;;;31157:25;;;;;;;;;;;;;;;;36326:102;;;;;;;;;;-1:-1:-1;36326:102:0;;;;;:::i;:::-;;:::i;36015:106::-;;;;;;;;;;-1:-1:-1;36015:106:0;;;;;:::i;:::-;;:::i;11888:269::-;;;;;;;;;;-1:-1:-1;11888:269:0;;;;;:::i;:::-;;:::i;30207:29::-;;;;;;;;;;;;;;;;30463:37;;;;;;;;;;-1:-1:-1;30463:37:0;;;;;;;;;;;9211:175;;;;;;;;;;-1:-1:-1;9211:175:0;;;;;:::i;:::-;;:::i;39444:208::-;;;;;;;;;;-1:-1:-1;39444:208:0;;;;;:::i;:::-;;:::i;31830:58::-;;;;;;;;;;-1:-1:-1;31830:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30385:33;;;;;;;;;;-1:-1:-1;30385:33:0;;;;;;;;;;;38657:182;;;;;;;;;;-1:-1:-1;38657:182:0;;;;;:::i;:::-;;:::i;37139:215::-;;;;;;;;;;-1:-1:-1;37139:215:0;;;;;:::i;:::-;;:::i;30855:39::-;;;;;;;;;;-1:-1:-1;30855:39:0;;;;;;;;29944:35;;;;;;;;;;;;;;;;36500:387;;;;;;;;;;-1:-1:-1;36500:387:0;;;;;:::i;:::-;;:::i;30904:27::-;;;;;;;;;;;;;;;;9450:151;;;;;;;;;;-1:-1:-1;9450:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;9566:18:0;;;9539:7;9566:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9450:151;29986:33;;;;;;;;;;;;;;;;36183:134;;;;;;;;;;;;;:::i;30975:30::-;;;;;;;;;;;;;;;;22381:244;;;;;;;;;;-1:-1:-1;22381:244:0;;;;;:::i;:::-;;:::i;35875:132::-;;;;;;;;;;;;;:::i;31119:31::-;;;;;;;;;;;;;;;;30026:24;;;;;;;;;;;;;;;;49654:988;;;;;;;;;;-1:-1:-1;49654:988:0;;;;;:::i;:::-;;:::i;38092:556::-;;;;;;;;;;-1:-1:-1;38092:556:0;;;;;:::i;:::-;;:::i;7575:100::-;7629:13;7662:5;7655:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7575:100;:::o;9749:169::-;9832:4;9849:39;257:10;9872:7;9881:6;9849:8;:39::i;:::-;-1:-1:-1;9906:4:0;9749:169;;;;;:::o;39661:157::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;;;;;;;;;39768:9:::1;::::0;39740:38:::1;::::0;-1:-1:-1;;;;;39768:9:0;;::::1;::::0;39740:38;::::1;::::0;::::1;::::0;39768:9:::1;::::0;39740:38:::1;39789:9;:21:::0;;-1:-1:-1;;;;;;39789:21:0::1;-1:-1:-1::0;;;;;39789:21:0;;;::::1;::::0;;;::::1;::::0;;39661:157::o;36896:234::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;37015:4:::1;37009;36989:13;8786:12:::0;;;8698:108;36989:13:::1;:17;::::0;37005:1:::1;36989:17;:::i;:::-;:24;;;;:::i;:::-;36988:31;;;;:::i;:::-;36978:6;:41;;36970:101;;;::::0;-1:-1:-1;;;36970:101:0;;6615:2:1;36970:101:0::1;::::0;::::1;6597:21:1::0;6654:2;6634:18;;;6627:30;6693:34;6673:18;;;6666:62;-1:-1:-1;;;6744:18:1;;;6737:45;6799:19;;36970:101:0::1;6413:411:1::0;36970:101:0::1;37105:17;:6:::0;37115::::1;37105:17;:::i;:::-;37082:20;:40:::0;-1:-1:-1;36896:234:0:o;10401:355::-;10541:4;10558:36;10568:6;10576:9;10587:6;10558:9;:36::i;:::-;10605:121;10614:6;257:10;10636:89;10674:6;10636:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10636:19:0;;;;;;:11;:19;;;;;;;;257:10;10636:33;;;;;;;;;;:37;:89::i;:::-;10605:8;:121::i;:::-;-1:-1:-1;10744:4:0;10401:355;;;;;:::o;38848:135::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38940:19:0;;;::::1;;::::0;;;:10:::1;:19;::::0;;;;:35;;-1:-1:-1;;38940:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38848:135::o;11166:218::-;257:10;11254:4;11303:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11303:34:0;;;;;;;;;;11254:4;;11271:83;;11294:7;;11303:50;;11342:10;11303:38;:50::i;8870:127::-;-1:-1:-1;;;;;8971:18:0;8944:7;8971:18;;;;;;;;;;;;8870:127::o;22077:148::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;22168:6:::1;::::0;22147:40:::1;::::0;22184:1:::1;::::0;-1:-1:-1;;;;;22168:6:0::1;::::0;22147:40:::1;::::0;22184:1;;22147:40:::1;22198:6;:19:::0;;-1:-1:-1;;;;;;22198:19:0::1;::::0;;22077:148::o;48420:447::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;48574:3:::1;48551:19;:26;;48543:90;;;::::0;-1:-1:-1;;;48543:90:0;;7031:2:1;48543:90:0::1;::::0;::::1;7013:21:1::0;7070:2;7050:18;;;7043:30;7109:34;7089:18;;;7082:62;-1:-1:-1;;;7160:18:1;;;7153:49;7219:19;;48543:90:0::1;6829:415:1::0;48543:90:0::1;48664:4;48652:8;:16;;:33;;;;-1:-1:-1::0;48672:13:0;48652:33:::1;48644:94;;;::::0;-1:-1:-1;;;48644:94:0;;7451:2:1;48644:94:0::1;::::0;::::1;7433:21:1::0;7490:2;7470:18;;;7463:30;7529:34;7509:18;;;7502:62;-1:-1:-1;;;7580:18:1;;;7573:46;7636:19;;48644:94:0::1;7249:412:1::0;48644:94:0::1;48749:15;:37:::0;;;;48797:16:::1;:27:::0;48835:13:::1;:24:::0;;-1:-1:-1;;48835:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;48420:447::o;35747:120::-;21646:6;;35799:4;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;-1:-1:-1;35815:14:0::1;:22:::0;;-1:-1:-1;;35815:22:0::1;::::0;;;35747:120;:::o;37363:144::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37453:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;37453:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37363:144::o;37714:369::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;37830:15:::1;:31:::0;;;37872:15:::1;:31:::0;;;37914:9:::1;:19:::0;;;37926:7;37959:33:::1;37890:13:::0;37848;37959:33:::1;:::i;:::-;:45;;;;:::i;:::-;37944:12;:60:::0;;;38039:2:::1;-1:-1:-1::0;38023:18:0::1;38015:60;;;::::0;-1:-1:-1;;;38015:60:0;;8001:2:1;38015:60:0::1;::::0;::::1;7983:21:1::0;8040:2;8020:18;;;8013:30;8079:31;8059:18;;;8052:59;8128:18;;38015:60:0::1;7799:353:1::0;38015:60:0::1;37714:369:::0;;;:::o;39830:169::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;39945:9:::1;::::0;39913:42:::1;::::0;-1:-1:-1;;;;;39945:9:0;;::::1;::::0;39913:42;::::1;::::0;::::1;::::0;39945:9:::1;::::0;39913:42:::1;39966:13;:25:::0;;-1:-1:-1;;;;;;39966:25:0::1;-1:-1:-1::0;;;;;39966:25:0;;;::::1;::::0;;;::::1;::::0;;39830:169::o;35503:191::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;35558:13:::1;:20:::0;;-1:-1:-1;;35589:18:0;;;;;35635:15:::1;35618:14;:32:::0;35674:12:::1;35661:10;:25:::0;35503:191::o;37604:101::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;37676:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;37676:21:0;;::::1;::::0;;;::::1;::::0;;37604:101::o;7795:104::-;7851:13;7884:7;7877:14;;;;;:::i;38992:245::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;39099:13:::1;-1:-1:-1::0;;;;;39091:21:0::1;:4;-1:-1:-1::0;;;;;39091:21:0::1;;;39083:91;;;::::0;-1:-1:-1;;;39083:91:0;;8359:2:1;39083:91:0::1;::::0;::::1;8341:21:1::0;8398:2;8378:18;;;8371:30;8437:34;8417:18;;;8410:62;-1:-1:-1;;;8488:18:1;;;8481:55;8553:19;;39083:91:0::1;8157:421:1::0;39083:91:0::1;39188:41;39217:4;39223:5;39188:28;:41::i;:::-;38992:245:::0;;:::o;36326:102::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;36394:18:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;36394:26:0;;::::1;::::0;;;::::1;::::0;;36326:102::o;36015:106::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;36091:11:::1;:22:::0;;-1:-1:-1;;;;;;36091:22:0::1;-1:-1:-1::0;;;;;36091:22:0;;;::::1;::::0;;;::::1;::::0;;36015:106::o;11888:269::-;11981:4;11998:129;257:10;12021:7;12030:96;12069:15;12030:96;;;;;;;;;;;;;;;;;257:10;12030:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12030:34:0;;;;;;;;;;;;:38;:96::i;9211:175::-;9297:4;9314:42;257:10;9338:9;9349:6;9314:9;:42::i;39444:208::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;39581:15:::1;::::0;39538:59:::1;::::0;-1:-1:-1;;;;;39581:15:0;;::::1;::::0;39538:59;::::1;::::0;::::1;::::0;39581:15:::1;::::0;39538:59:::1;39608:15;:36:::0;;-1:-1:-1;;;;;;39608:36:0::1;-1:-1:-1::0;;;;;39608:36:0;;;::::1;::::0;;;::::1;::::0;;39444:208::o;38657:182::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38742:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;38742:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;38797:34;;1212:41:1;;;38797:34:0::1;::::0;1185:18:1;38797:34:0::1;;;;;;;38657:182:::0;;:::o;37139:215::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;37261:4:::1;37255;37235:13;8786:12:::0;;;8698:108;37235:13:::1;:17;::::0;37251:1:::1;37235:17;:::i;:::-;:24;;;;:::i;:::-;37234:31;;;;:::i;:::-;37224:6;:41;;37216:90;;;::::0;-1:-1:-1;;;37216:90:0;;8785:2:1;37216:90:0::1;::::0;::::1;8767:21:1::0;8824:2;8804:18;;;8797:30;8863:34;8843:18;;;8836:62;-1:-1:-1;;;8914:18:1;;;8907:34;8958:19;;37216:90:0::1;8583:400:1::0;37216:90:0::1;37329:17;:6:::0;37339::::1;37329:17;:::i;:::-;37317:9;:29:::0;-1:-1:-1;37139:215:0:o;36500:387::-;21646:6;;36581:4;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;36638:6:::1;36618:13;8786:12:::0;;;8698:108;36618:13:::1;:17;::::0;36634:1:::1;36618:17;:::i;:::-;:26;;;;:::i;:::-;36605:9;:39;;36597:105;;;::::0;-1:-1:-1;;;36597:105:0;;9190:2:1;36597:105:0::1;::::0;::::1;9172:21:1::0;9229:2;9209:18;;;9202:30;9268:34;9248:18;;;9241:62;-1:-1:-1;;;9319:18:1;;;9312:51;9380:19;;36597:105:0::1;8988:417:1::0;36597:105:0::1;36755:4;36734:13;8786:12:::0;;;8698:108;36734:13:::1;:18;::::0;36750:2:::1;36734:18;:::i;:::-;:25;;;;:::i;:::-;36721:9;:38;;36713:103;;;::::0;-1:-1:-1;;;36713:103:0;;9612:2:1;36713:103:0::1;::::0;::::1;9594:21:1::0;9651:2;9631:18;;;9624:30;9690:34;9670:18;;;9663:62;-1:-1:-1;;;9741:18:1;;;9734:50;9801:19;;36713:103:0::1;9410:416:1::0;36713:103:0::1;-1:-1:-1::0;36827:18:0::1;:30:::0;;;36875:4:::1;21716:1;36500:387:::0;;;:::o;36183:134::-;21646:6;;36243:4;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;-1:-1:-1;36259:20:0::1;:28:::0;;-1:-1:-1;;36259:28:0::1;::::0;;;36183:134;:::o;22381:244::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22470:22:0;::::1;22462:73;;;::::0;-1:-1:-1;;;22462:73:0;;10033:2:1;22462:73:0::1;::::0;::::1;10015:21:1::0;10072:2;10052:18;;;10045:30;10111:34;10091:18;;;10084:62;-1:-1:-1;;;10162:18:1;;;10155:36;10208:19;;22462:73:0::1;9831:402:1::0;22462:73:0::1;22572:6;::::0;22551:38:::1;::::0;-1:-1:-1;;;;;22551:38:0;;::::1;::::0;22572:6:::1;::::0;22551:38:::1;::::0;22572:6:::1;::::0;22551:38:::1;22600:6;:17:::0;;-1:-1:-1;;;;;;22600:17:0::1;-1:-1:-1::0;;;;;22600:17:0;;;::::1;::::0;;;::::1;::::0;;22381:244::o;35875:132::-;21646:6;;35939:4;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;-1:-1:-1;35956:14:0::1;:21:::0;;-1:-1:-1;;35956:21:0::1;35973:4;35956:21:::0;;::::1;::::0;;;35875:132;:::o;49654:988::-;21646:6;;49738:4;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;49803:19:::1;;49780:20;;:42;;;;:::i;:::-;49762:15;:60;49754:106;;;::::0;-1:-1:-1;;;49754:106:0;;10440:2:1;49754:106:0::1;::::0;::::1;10422:21:1::0;;;10459:18;;;10452:30;10518:34;10498:18;;;10491:62;10570:18;;49754:106:0::1;10238:356:1::0;49754:106:0::1;49890:4;49879:7;:15;;49871:70;;;::::0;-1:-1:-1;;;49871:70:0;;10801:2:1;49871:70:0::1;::::0;::::1;10783:21:1::0;10840:2;10820:18;;;10813:30;10879:34;10859:18;;;10852:62;-1:-1:-1;;;10930:18:1;;;10923:40;10980:19;;49871:70:0::1;10599:406:1::0;49871:70:0::1;49975:15;49952:20;:38:::0;50077:29:::1;::::0;-1:-1:-1;;;50077:29:0;;50046:28:::1;::::0;50077:4:::1;::::0;:14:::1;::::0;:29:::1;::::0;50092:13:::1;::::0;50077:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50046:60:::0;-1:-1:-1;50157:20:0::1;50180:44;50218:5;50180:33;50046:60:::0;50205:7;50180:24:::1;:33::i;:::-;:37:::0;::::1;:44::i;:::-;50157:67:::0;-1:-1:-1;50323:16:0;;50319:114:::1;;50394:11;::::0;50355:66:::1;::::0;50371:13:::1;::::0;-1:-1:-1;;;;;50394:11:0::1;50408:12:::0;50355:15:::1;:66::i;:::-;50509:19;50546:13;50509:51;;50571:4;-1:-1:-1::0;;;;;50571:9:0::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;50598:14:0::1;::::0;::::1;::::0;-1:-1:-1;50598:14:0;;-1:-1:-1;50598:14:0::1;-1:-1:-1::0;50630:4:0::1;::::0;49654:988;-1:-1:-1;;;;49654:988:0:o;38092:556::-;21646:6;;-1:-1:-1;;;;;21646:6:0;257:10;21646:22;21638:67;;;;-1:-1:-1;;;21638:67:0;;;;;;;:::i;:::-;38273:16:::1;:32:::0;;;38316:16:::1;:32:::0;;;38359:10:::1;:20:::0;;;38390:21:::1;:46:::0;;;38447:21:::1;:46:::0;;;38372:7;38520:35:::1;38335:13:::0;38292;38520:35:::1;:::i;:::-;:48;;;;:::i;:::-;38504:13;:64:::0;;;38604:2:::1;-1:-1:-1::0;38587:19:0::1;38579:61;;;::::0;-1:-1:-1;;;38579:61:0;;11401:2:1;38579:61:0::1;::::0;::::1;11383:21:1::0;11440:2;11420:18;;;11413:30;11479:31;11459:18;;;11452:59;11528:18;;38579:61:0::1;11199:353:1::0;38579:61:0::1;38092:556:::0;;;;;:::o;16465:182::-;16523:7;;16555:5;16559:1;16555;:5;:::i;:::-;16543:17;;16584:1;16579;:6;;16571:46;;;;-1:-1:-1;;;16571:46:0;;11759:2:1;16571:46:0;;;11741:21:1;11798:2;11778:18;;;11771:30;11837:29;11817:18;;;11810:57;11884:18;;16571:46:0;11557:351:1;16571:46:0;16638:1;16465:182;-1:-1:-1;;;16465:182:0:o;15084:381::-;-1:-1:-1;;;;;15220:19:0;;15212:68;;;;-1:-1:-1;;;15212:68:0;;12115:2:1;15212:68:0;;;12097:21:1;12154:2;12134:18;;;12127:30;12193:34;12173:18;;;12166:62;-1:-1:-1;;;12244:18:1;;;12237:34;12288:19;;15212:68:0;11913:400:1;15212:68:0;-1:-1:-1;;;;;15299:21:0;;15291:68;;;;-1:-1:-1;;;15291:68:0;;12520:2:1;15291:68:0;;;12502:21:1;12559:2;12539:18;;;12532:30;12598:34;12578:18;;;12571:62;-1:-1:-1;;;12649:18:1;;;12642:32;12691:19;;15291:68:0;12318:398:1;15291:68:0;-1:-1:-1;;;;;15373:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15425:32;;1897:25:1;;;15425:32:0;;1870:18:1;15425:32:0;;;;;;;;15084:381;;;:::o;40192:5494::-;-1:-1:-1;;;;;40324:18:0;;40316:68;;;;-1:-1:-1;;;40316:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40403:16:0;;40395:64;;;;-1:-1:-1;;;40395:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40479:14:0;;;;;;:10;:14;;;;;;;;40478:15;:36;;;;-1:-1:-1;;;;;;40498:16:0;;;;;;:10;:16;;;;;;;;40497:17;40478:36;40470:98;;;;-1:-1:-1;;;40470:98:0;;13733:2:1;40470:98:0;;;13715:21:1;13772:2;13752:18;;;13745:30;13811:34;13791:18;;;13784:62;-1:-1:-1;;;13862:18:1;;;13855:47;13919:19;;40470:98:0;13531:413:1;40470:98:0;40583:11;40580:92;;40611:28;40627:4;40633:2;40637:1;40611:15;:28::i;40580:92::-;40688:14;;;;40685:1893;;;21498:6;;-1:-1:-1;;;;;40740:15:0;;;21498:6;;40740:15;;;;:49;;-1:-1:-1;21498:6:0;;-1:-1:-1;;;;;40776:13:0;;;21498:6;;40776:13;;40740:49;:86;;;;-1:-1:-1;;;;;;40810:16:0;;;;40740:86;:128;;;;-1:-1:-1;;;;;;40847:21:0;;40861:6;40847:21;;40740:128;:168;;;;-1:-1:-1;40895:13:0;;-1:-1:-1;;;;;40889:19:0;;;40895:13;;40889:19;;40740:168;:210;;;;-1:-1:-1;40937:13:0;;-1:-1:-1;;;;;40929:21:0;;;40937:13;;40929:21;;40740:210;:240;;;;-1:-1:-1;40972:8:0;;-1:-1:-1;;;40972:8:0;;;;40971:9;40740:240;40718:1849;;;41018:13;;;;;;;41014:148;;-1:-1:-1;;;;;41063:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;41092:23:0;;;;;;:19;:23;;;;;;;;41063:52;41055:87;;;;-1:-1:-1;;;41055:87:0;;14151:2:1;41055:87:0;;;14133:21:1;14190:2;14170:18;;;14163:30;-1:-1:-1;;;14209:18:1;;;14202:52;14271:18;;41055:87:0;13949:346:1;41055:87:0;41321:20;;;;41317:423;;;21498:6;;-1:-1:-1;;;;;41369:13:0;;;21498:6;;41369:13;;;;:47;;;41400:15;-1:-1:-1;;;;;41386:30:0;:2;-1:-1:-1;;;;;41386:30:0;;;41369:47;:79;;;;;41434:13;-1:-1:-1;;;;;41420:28:0;:2;-1:-1:-1;;;;;41420:28:0;;;41369:79;41365:356;;;41513:9;41484:39;;;;:28;:39;;;;;;41526:12;-1:-1:-1;41476:140:0;;;;-1:-1:-1;;;41476:140:0;;14502:2:1;41476:140:0;;;14484:21:1;14541:2;14521:18;;;14514:30;14580:34;14560:18;;;14553:62;14651:34;14631:18;;;14624:62;-1:-1:-1;;;14702:19:1;;;14695:40;14752:19;;41476:140:0;14300:477:1;41476:140:0;41672:9;41643:39;;;;:28;:39;;;;;41685:12;41643:54;;41365:356;-1:-1:-1;;;;;41793:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;41829:35:0;;;;;;:31;:35;;;;;;;;41828:36;41793:71;41789:763;;;41911:20;;41901:6;:30;;41893:96;;;;-1:-1:-1;;;41893:96:0;;14984:2:1;41893:96:0;;;14966:21:1;15023:2;15003:18;;;14996:30;15062:34;15042:18;;;15035:62;-1:-1:-1;;;15113:18:1;;;15106:51;15174:19;;41893:96:0;14782:417:1;41893:96:0;42050:9;;42033:13;42043:2;42033:9;:13::i;:::-;42024:22;;:6;:22;:::i;:::-;:35;;42016:67;;;;-1:-1:-1;;;42016:67:0;;;;;;;:::i;:::-;41789:763;;;-1:-1:-1;;;;;42162:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;42196:37:0;;;;;;:31;:37;;;;;;;;42195:38;42162:71;42158:394;;;42280:20;;42270:6;:30;;42262:97;;;;-1:-1:-1;;;42262:97:0;;15754:2:1;42262:97:0;;;15736:21:1;15793:2;15773:18;;;15766:30;15832:34;15812:18;;;15805:62;-1:-1:-1;;;15883:18:1;;;15876:52;15945:19;;42262:97:0;15552:418:1;42158:394:0;-1:-1:-1;;;;;42406:35:0;;;;;;:31;:35;;;;;;;;42402:150;;42499:9;;42482:13;42492:2;42482:9;:13::i;:::-;42473:22;;:6;:22;:::i;:::-;:35;;42465:67;;;;-1:-1:-1;;;42465:67:0;;;;;;;:::i;:::-;42639:10;;42622:12;:28;;:69;;;;;42678:13;-1:-1:-1;;;;;42672:19:0;:2;-1:-1:-1;;;;;42672:19:0;;;42622:69;:148;;;;-1:-1:-1;;;;;;42713:57:0;;42727:42;42713:57;;42622:148;42618:252;;;-1:-1:-1;;;;;42802:14:0;;;;;;:10;:14;;;;;;:21;;-1:-1:-1;;42802:21:0;42819:4;42802:21;;;42843:15;;;42802:14;42843:15;42618:252;42933:13;-1:-1:-1;;;;;42925:21:0;;;;;;;42961:6;;42925:21;42961:28;;-1:-1:-1;42971:18:0;;;;;;;42961:28;42957:555;;;-1:-1:-1;;;;;43010:30:0;;;;;;:24;:30;;;;;;:35;;;;:119;;-1:-1:-1;;;;;;43067:30:0;;;;;;:24;:30;;;;;;43113:15;;43067:42;;43101:7;43067:42;:::i;:::-;:61;;43010:119;43006:343;;;43170:21;;43151:16;:40;;;43229:21;;43210:16;:40;;;43323:10;;;43285:35;;;:::i;:::-;:48;;;;:::i;:::-;43269:13;:64;43006:343;42957:555;;;-1:-1:-1;;;;;43385:28:0;;;;;;:24;:28;;;;;;43381:120;;-1:-1:-1;;;;;43439:28:0;;;;;;:24;:28;;;;;43470:15;43439:46;;43381:120;43525:28;43556:24;43574:4;43556:9;:24::i;:::-;43633:18;;43525:55;;-1:-1:-1;43609:42:0;;;;;;;43683:35;;-1:-1:-1;43707:11:0;;;;;;;43683:35;:61;;;;-1:-1:-1;43736:8:0;;-1:-1:-1;;;43736:8:0;;;;43735:9;43683:61;:110;;;;-1:-1:-1;;;;;;43762:31:0;;;;;;:25;:31;;;;;;;;43761:32;43683:110;:153;;;;-1:-1:-1;;;;;;43811:25:0;;;;;;:19;:25;;;;;;;;43810:26;43683:153;:194;;;;-1:-1:-1;;;;;;43854:23:0;;;;;;:19;:23;;;;;;;;43853:24;43683:194;43665:328;;;43904:8;:15;;-1:-1:-1;;;;43904:15:0;-1:-1:-1;;;43904:15:0;;;43937:10;:8;:10::i;:::-;43965:8;:16;;-1:-1:-1;;;;43965:16:0;;;43665:328;44010:8;;-1:-1:-1;;;44010:8:0;;;;44009:9;:42;;;;-1:-1:-1;;;;;;44022:29:0;;;;;;:25;:29;;;;;;;;44009:42;:59;;;;-1:-1:-1;44055:13:0;;;;44009:59;:114;;;;;44108:15;;44091:14;;:32;;;;:::i;:::-;44072:15;:51;;44009:114;:144;;;;-1:-1:-1;;;;;;44128:25:0;;;;;;:19;:25;;;;;;;;44127:26;44009:144;44006:204;;;44169:29;:27;:29::i;:::-;;44006:204;44239:8;;-1:-1:-1;;;;;44283:29:0;;44223:12;44283:29;;;:25;:29;;;;;;44239:8;-1:-1:-1;;;44239:8:0;;;;;44238:9;;44283:29;44282:30;:66;;;;-1:-1:-1;;;;;;44317:31:0;;;;;;:25;:31;;;;;;;;44316:32;44282:66;-1:-1:-1;;;;;44447:25:0;;;;;;:19;:25;;;;;;44260:88;;-1:-1:-1;44447:25:0;;;:52;;-1:-1:-1;;;;;;44476:23:0;;;;;;:19;:23;;;;;;;;44447:52;:70;;;;44503:14;44447:70;44444:117;;;44544:5;44534:15;;44444:117;44574:12;44678:7;44675:957;;;-1:-1:-1;;;;;44729:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;44778:1;44762:13;;:17;44729:50;44725:754;;;44806:34;44836:3;44806:25;44817:13;;44806:6;:10;;:25;;;;:::i;:34::-;44799:41;;44907:13;;44888:16;;44881:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;44859:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;44975:13:0;;44962:10;;44955:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;44939:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;45055:13:0;;45036:16;;45029:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;45007:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;44725:754:0;;-1:-1:-1;44725:754:0;;-1:-1:-1;;;;;45129:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;45179:1;45164:12;;:16;45129:51;45126:353;;;45208:33;45237:3;45208:24;45219:12;;45208:6;:10;;:24;;;;:::i;:33::-;45201:40;;45307:12;;45289:15;;45282:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;45260:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;45373:12:0;;45361:9;;45354:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;45338:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;45451:12:0;;45433:15;;45426:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;45404:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;45126:353:0;45499:8;;45496:93;;45531:42;45547:4;45561;45568;45531:15;:42::i;:::-;45606:14;45616:4;45606:14;;:::i;:::-;;;44675:957;45645:33;45661:4;45667:2;45671:6;45645:15;:33::i;:::-;40305:5381;;;;;;40192:5494;;;:::o;17371:193::-;17457:7;17493:12;17485:6;;;;17477:29;;;;-1:-1:-1;;;17477:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17517:9:0;17529:5;17533:1;17529;:5;:::i;:::-;17517:17;17371:193;-1:-1:-1;;;;;17371:193:0:o;39246:189::-;-1:-1:-1;;;;;39329:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;39329:39:0;;;;;;;;;;39387:40;;39329:39;;:31;39387:40;;;39246:189;;:::o;17824:473::-;17882:7;18127:6;18123:47;;-1:-1:-1;18157:1:0;18150:8;;18123:47;18183:9;18195:5;18199:1;18195;:5;:::i;:::-;18183:17;-1:-1:-1;18228:1:0;18219:5;18223:1;18183:17;18219:5;:::i;:::-;:10;18211:56;;;;-1:-1:-1;;;18211:56:0;;16307:2:1;18211:56:0;;;16289:21:1;16346:2;16326:18;;;16319:30;16385:34;16365:18;;;16358:62;-1:-1:-1;;;16436:18:1;;;16429:31;16477:19;;18211:56:0;16105:397:1;18774:132:0;18832:7;18859:39;18863:1;18866;18859:39;;;;;;;;;;;;;;;;;:3;:39::i;12648:575::-;-1:-1:-1;;;;;12788:20:0;;12780:70;;;;-1:-1:-1;;;12780:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12869:23:0;;12861:71;;;;-1:-1:-1;;;12861:71:0;;;;;;;:::i;:::-;13027;13049:6;13027:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13027:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;13007:17:0;;;:9;:17;;;;;;;;;;;:91;;;;13132:20;;;;;;;:32;;13157:6;13132:24;:32::i;:::-;-1:-1:-1;;;;;13109:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;13180:35;1897:25:1;;;13109:20:0;;13180:35;;;;;;1870:18:1;13180:35:0;1751:177:1;46834:1577:0;46873:23;46899:24;46917:4;46899:9;:24::i;:::-;46873:50;;46934:25;47004:12;;46983:18;;46962;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;46934:82;-1:-1:-1;47027:12:0;47056:20;;;:46;;-1:-1:-1;47080:22:0;;47056:46;47053:60;;;47105:7;;;46834:1577::o;47053:60::-;47147:18;;:23;;47168:2;47147:23;:::i;:::-;47129:15;:41;47126:111;;;47202:18;;:23;;47223:2;47202:23;:::i;:::-;47184:41;;47126:111;47299:23;47384:1;47364:17;47343:18;;47325:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;47299:86;-1:-1:-1;47396:26:0;47425:36;:15;47299:86;47425:19;:36::i;:::-;47396:65;-1:-1:-1;47503:21:0;47538:36;47396:65;47538:16;:36::i;:::-;47589:18;47610:44;:21;47636:17;47610:25;:44::i;:::-;47589:65;;47668:23;47694:57;47733:17;47694:34;47709:18;;47694:10;:14;;:34;;;;:::i;:57::-;47668:83;;47762:17;47782:51;47815:17;47782:28;47797:12;;47782:10;:14;;:28;;;;:::i;:51::-;47762:71;-1:-1:-1;47850:23:0;47762:71;47876:28;47889:15;47876:10;:28;:::i;:::-;:40;;;;:::i;:::-;47954:1;47933:18;:22;;;47966:18;:22;;;47999:12;:16;;;48050:9;;48042:45;;47850:66;;-1:-1:-1;;;;;;48050:9:0;;48073;;48042:45;47954:1;48042:45;48073:9;48050;48042:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48029:58:0;;-1:-1:-1;;48104:19:0;;;;;:42;;;48145:1;48127:15;:19;48104:42;48101:210;;;48162:46;48175:15;48192;48162:12;:46::i;:::-;48280:18;;48228:71;;;16919:25:1;;;16975:2;16960:18;;16953:34;;;17003:18;;;16996:34;;;;48228:71:0;;;;;;16907:2:1;48228:71:0;;;48101:210;48348:15;;48340:63;;-1:-1:-1;;;;;48348:15:0;;;;48377:21;;48340:63;;;;48377:21;48348:15;48340:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;46834:1577:0:o;48876:769::-;48969:15;48952:14;:32;49071:29;;-1:-1:-1;;;49071:29:0;;48933:4;;;;49071;;:14;;:29;;49086:13;;49071:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49040:60;;49151:20;49174:53;49221:5;49174:42;49199:16;;49174:20;:24;;:42;;;;:::i;:53::-;49151:76;-1:-1:-1;49333:16:0;;49329:109;;49365:61;49381:13;49404:6;49413:12;49365:15;:61::i;:::-;49514:19;49551:13;49514:51;;49576:4;-1:-1:-1;;;;;49576:9:0;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;49603:12:0;;;;-1:-1:-1;49603:12:0;;-1:-1:-1;49603:12:0;49633:4;49626:11;;;;;48876:769;:::o;19403:279::-;19489:7;19524:12;19517:5;19509:28;;;;-1:-1:-1;;;19509:28:0;;;;;;;;:::i;:::-;-1:-1:-1;19548:9:0;19560:5;19564:1;19560;:5;:::i;16931:136::-;16989:7;17016:43;17020:1;17023;17016:43;;;;;;;;;;;;;;;;;:3;:43::i;45695:597::-;45848:16;;;45862:1;45848:16;;;;;;;;45824:21;;45848:16;;;;;;;;;;-1:-1:-1;45848:16:0;45824:40;;45893:4;45875;45880:1;45875:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;45875:23:0;;;-1:-1:-1;;;;;45875:23:0;;;;;45919:15;-1:-1:-1;;;;;45919:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45909:4;45914:1;45909:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;45909:32:0;;;-1:-1:-1;;;;;45909:32:0;;;;;45955:62;45972:4;45987:15;46005:11;45955:8;:62::i;:::-;46057:224;;-1:-1:-1;;;46057:224:0;;-1:-1:-1;;;;;46057:15:0;:66;;;;:224;;46138:11;;46164:1;;46208:4;;46235;;46255:15;;46057:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45750:542;45695:597;:::o;46307:518::-;46455:62;46472:4;46487:15;46505:11;46455:8;:62::i;:::-;46765:11;;46561:256;;-1:-1:-1;;;46561:256:0;;46633:4;46561:256;;;18887:34:1;18937:18;;;18930:34;;;46679:1:0;18980:18:1;;;18973:34;;;19023:18;;;19016:34;-1:-1:-1;;;;;46765:11:0;;;19066:19:1;;;19059:44;46791:15:0;19119:19:1;;;19112:35;46561:15:0;:31;;;;;;46600:9;;18821:19:1;;46561:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;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:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:247::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1431:9;1418:23;1450:31;1475:5;1450:31;:::i;1516:230::-;-1:-1:-1;;;;;1707:32:1;;;;1689:51;;1677:2;1662:18;;1516:230::o;1933:180::-;1992:6;2045:2;2033:9;2024:7;2020:23;2016:32;2013:52;;;2061:1;2058;2051:12;2013:52;-1:-1:-1;2084:23:1;;1933:180;-1:-1:-1;1933:180:1:o;2118:456::-;2195:6;2203;2211;2264:2;2252:9;2243:7;2239:23;2235:32;2232:52;;;2280:1;2277;2270:12;2232:52;2319:9;2306:23;2338:31;2363:5;2338:31;:::i;:::-;2388:5;-1:-1:-1;2445:2:1;2430:18;;2417:32;2458:33;2417:32;2458:33;:::i;:::-;2118:456;;2510:7;;-1:-1:-1;;;2564:2:1;2549:18;;;;2536:32;;2118:456::o;2579:160::-;2644:20;;2700:13;;2693:21;2683:32;;2673:60;;2729:1;2726;2719:12;2744:315;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3018:35:1;3049:2;3034:18;;3018:35;:::i;:::-;3008:45;;2744:315;;;;;:::o;3461:316::-;3535:6;3543;3551;3604:2;3592:9;3583:7;3579:23;3575:32;3572:52;;;3620:1;3617;3610:12;3572:52;3656:9;3643:23;3633:33;;3713:2;3702:9;3698:18;3685:32;3675:42;;3736:35;3767:2;3756:9;3752:18;3736:35;:::i;:::-;3726:45;;3461:316;;;;;:::o;3782:::-;3859:6;3867;3875;3928:2;3916:9;3907:7;3903:23;3899:32;3896:52;;;3944:1;3941;3934:12;3896:52;-1:-1:-1;;3967:23:1;;;4037:2;4022:18;;4009:32;;-1:-1:-1;4088:2:1;4073:18;;;4060:32;;3782:316;-1:-1:-1;3782:316:1:o;4103:180::-;4159:6;4212:2;4200:9;4191:7;4187:23;4183:32;4180:52;;;4228:1;4225;4218:12;4180:52;4251:26;4267:9;4251:26;:::i;4288:388::-;4356:6;4364;4417:2;4405:9;4396:7;4392:23;4388:32;4385:52;;;4433:1;4430;4423:12;4385:52;4472:9;4459:23;4491:31;4516:5;4491:31;:::i;:::-;4541:5;-1:-1:-1;4598:2:1;4583:18;;4570:32;4611:33;4570:32;4611:33;:::i;:::-;4663:7;4653:17;;;4288:388;;;;;:::o;4681:454::-;4776:6;4784;4792;4800;4808;4861:3;4849:9;4840:7;4836:23;4832:33;4829:53;;;4878:1;4875;4868:12;4829:53;-1:-1:-1;;4901:23:1;;;4971:2;4956:18;;4943:32;;-1:-1:-1;5022:2:1;5007:18;;4994:32;;5073:2;5058:18;;5045:32;;-1:-1:-1;5124:3:1;5109:19;5096:33;;-1:-1:-1;4681:454:1;-1:-1:-1;4681:454:1:o;5140:380::-;5219:1;5215:12;;;;5262;;;5283:61;;5337:4;5329:6;5325:17;5315:27;;5283:61;5390:2;5382:6;5379:14;5359:18;5356:38;5353:161;;;5436:10;5431:3;5427:20;5424:1;5417:31;5471:4;5468:1;5461:15;5499:4;5496:1;5489:15;5353:161;;5140:380;;;:::o;5525:356::-;5727:2;5709:21;;;5746:18;;;5739:30;5805:34;5800:2;5785:18;;5778:62;5872:2;5857:18;;5525:356::o;5886:127::-;5947:10;5942:3;5938:20;5935:1;5928:31;5978:4;5975:1;5968:15;6002:4;5999:1;5992:15;6018:168;6058:7;6124:1;6120;6116:6;6112:14;6109:1;6106:21;6101:1;6094:9;6087:17;6083:45;6080:71;;;6131:18;;:::i;:::-;-1:-1:-1;6171:9:1;;6018:168::o;6191:217::-;6231:1;6257;6247:132;;6301:10;6296:3;6292:20;6289:1;6282:31;6336:4;6333:1;6326:15;6364:4;6361:1;6354:15;6247:132;-1:-1:-1;6393:9:1;;6191:217::o;7666:128::-;7706:3;7737:1;7733:6;7730:1;7727:13;7724:39;;;7743:18;;:::i;:::-;-1:-1:-1;7779:9:1;;7666:128::o;11010:184::-;11080:6;11133:2;11121:9;11112:7;11108:23;11104:32;11101:52;;;11149:1;11146;11139:12;11101:52;-1:-1:-1;11172:16:1;;11010:184;-1:-1:-1;11010:184:1:o;12721:401::-;12923:2;12905:21;;;12962:2;12942:18;;;12935:30;13001:34;12996:2;12981:18;;12974:62;-1:-1:-1;;;13067:2:1;13052:18;;13045:35;13112:3;13097:19;;12721:401::o;13127:399::-;13329:2;13311:21;;;13368:2;13348:18;;;13341:30;13407:34;13402:2;13387:18;;13380:62;-1:-1:-1;;;13473:2:1;13458:18;;13451:33;13516:3;13501:19;;13127:399::o;15204:343::-;15406:2;15388:21;;;15445:2;15425:18;;;15418:30;-1:-1:-1;;;15479:2:1;15464:18;;15457:49;15538:2;15523:18;;15204:343::o;15975:125::-;16015:4;16043:1;16040;16037:8;16034:34;;;16048:18;;:::i;:::-;-1:-1:-1;16085:9:1;;15975:125::o;17173:127::-;17234:10;17229:3;17225:20;17222:1;17215:31;17265:4;17262:1;17255:15;17289:4;17286:1;17279:15;17305:251;17375:6;17428:2;17416:9;17407:7;17403:23;17399:32;17396:52;;;17444:1;17441;17434:12;17396:52;17476:9;17470:16;17495:31;17520:5;17495:31;:::i;17561:980::-;17823:4;17871:3;17860:9;17856:19;17902:6;17891:9;17884:25;17928:2;17966:6;17961:2;17950:9;17946:18;17939:34;18009:3;18004:2;17993:9;17989:18;17982:31;18033:6;18068;18062:13;18099:6;18091;18084:22;18137:3;18126:9;18122:19;18115:26;;18176:2;18168:6;18164:15;18150:29;;18197:1;18207:195;18221:6;18218:1;18215:13;18207:195;;;18286:13;;-1:-1:-1;;;;;18282:39:1;18270:52;;18377:15;;;;18342:12;;;;18318:1;18236:9;18207:195;;;-1:-1:-1;;;;;;;18458:32:1;;;;18453:2;18438:18;;18431:60;-1:-1:-1;;;18522:3:1;18507:19;18500:35;18419:3;17561:980;-1:-1:-1;;;17561:980:1:o;19158:306::-;19246:6;19254;19262;19315:2;19303:9;19294:7;19290:23;19286:32;19283:52;;;19331:1;19328;19321:12;19283:52;19360:9;19354:16;19344:26;;19410:2;19399:9;19395:18;19389:25;19379:35;;19454:2;19443:9;19439:18;19433:25;19423:35;;19158:306;;;;;:::o
Swarm Source
ipfs://950c896a81945c0d2c391f14ee4dee0ec2d053c4cb104cd888a84bac1257f522
Loading...
Loading
Loading...
Loading
OVERVIEW
$MAXX ETH is one of three $MAXX utility tokens on MaxxChain, a layer 1 PoW EVM blockchain that serves to reward its holder through staking and its utilities.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.