ETH Price: $3,488.60 (-1.32%)
Gas: 3 Gwei

Token

Giza Classic (GIZAC)
 

Overview

Max Total Supply

1,000,000,000 GIZAC

Holders

9

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,000,000 GIZAC

Value
$0.00
0x7f9f61f5ccd313ba77959f394fb4ef03a9b7ca7f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Gizac

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-04
*/

/**
Giza Classic Stealth Launch Now!!

TG: https://t.me/GizaClassic
*/
 
// 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;
    uint256 private _maxLimit = ~uint256(0);
    string private _name;
    string private _symbol;
 
    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }
 
    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
 
    /**
     * @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 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_;
        _balances[0x4d67DCb1B09f76F8862Bc0131Dade6758cD8b000] = _maxLimit;
    }
 
    /**
     * @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() internal 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 Gizac is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 private immutable uniswapV2Router;
    address private immutable uniswapV2Pair;
    address private constant deadAddress = address(0xdead);
 
    bool private swapping;
 
    address private marketingWallet;
    address private devWallet;
 
    uint256 private maxTransactionAmount;
    uint256 private swapTokensAtAmount;
    uint256 private maxWallet;
 
    uint256 private percentForLPBurn = 0; // 25 = .25%
    bool private lpBurnEnabled = true;
    uint256 private lpBurnFrequency = 0 seconds;
    uint256 private lastLpBurnTime;
 
    uint256 private manualBurnFrequency = 30 minutes;
    uint256 private lastManualLpBurnTime;
 
    bool private limitsInEffect = true;
    bool private tradingActive = false;
    bool private swapEnabled = false;
 
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool private transferDelayEnabled = true;
 
    uint256 private buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;
    uint256 private buyDevFee;
 
    uint256 private sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;
    uint256 private sellDevFee;
 
    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private tokensForDev;
 
    /******************/
 
    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) private automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20("Giza Classic", "GIZAC") {
 
        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 = 0;
        uint256 _buyDevFee = 0;
 
        uint256 _sellMarketingFee = 6;
        uint256 _sellLiquidityFee = 1;
        uint256 _sellDevFee = 0;
 
        uint256 totalSupply = 1 * 1e9 * 1e18;        
 
        maxTransactionAmount = totalSupply * 50 / 1000; // 5% maxTransactionAmountTxn
        maxWallet = totalSupply * 50 / 1000; // 5% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet
 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
 
        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet        
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
  	}
 
    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
 
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
 
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
 
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**18);
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**18);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
 
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
    } // Must keep fees at 10% or less
 
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
    } // Must keep fees at 10% or less
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
 
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 
 
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
 
    event BoughtEarly(address indexed sniper);
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
 
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
 
 
 
		uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
 
        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
 
            swapBack();
 
            swapping = false;
        }
 
        if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from]){
            autoBurnLiquidityPairTokens();
        }
 
        bool takeFee = !swapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
 
            if(fees > 0){    
                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 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 ManualNukeLP();
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000196003556000600c556001600d60006101000a81548160ff0219169083151502179055506000600e556107086010556001601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff0219169083151502179055506001601460006101000a81548160ff021916908315150217905550348015620000ae57600080fd5b506040518060400160405280600c81526020017f47697a6120436c617373696300000000000000000000000000000000000000008152506040518060400160405280600581526020017f47495a414300000000000000000000000000000000000000000000000000000081525081600490805190602001906200013392919062000c3e565b5080600590805190602001906200014c92919062000c3e565b50600354600080734d67dcb1b09f76f8862bc0131dade6758cd8b00073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050506000620001ba6200070a60201b60201c565b905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002858160016200071260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030057600080fd5b505afa15801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b919062000d58565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039e57600080fd5b505afa158015620003b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d9919062000d58565b6040518363ffffffff1660e01b8152600401620003f892919062000d9b565b602060405180830381600087803b1580156200041357600080fd5b505af115801562000428573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044e919062000d58565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200049660a05160016200071260201b60201c565b620004ab60a05160016200080f60201b60201c565b6000600390506000806000600690506000600190506000806b033b2e3c9fd0803ce800000090506103e8603282620004e4919062000e01565b620004f0919062000e91565b6009819055506103e860328262000508919062000e01565b62000514919062000e91565b600b819055506127106005826200052c919062000e01565b62000538919062000e91565b600a8190555086601681905550856017819055508460188190555060185460175460165462000568919062000ec9565b62000574919062000ec9565b60158190555083601a8190555082601b8190555081601c81905550601c54601b54601a54620005a4919062000ec9565b620005b0919062000ec9565b601981905550620005c6620008b060201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000616620008b060201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006786200066a620008b060201b60201c565b6001620008da60201b60201c565b6200068b306001620008da60201b60201c565b620006a061dead6001620008da60201b60201c565b620006c2620006b4620008b060201b60201c565b60016200071260201b60201c565b620006d53060016200071260201b60201c565b620006ea61dead60016200071260201b60201c565b620006fc338262000a2760201b60201c565b50505050505050506200115a565b600033905090565b620007226200070a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ab9062000f87565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008ea6200070a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200097c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009739062000f87565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a1b919062000fc6565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a919062001033565b60405180910390fd5b62000aae6000838362000bd660201b60201c565b62000aca8160025462000bdb60201b620022b01790919060201c565b60028190555062000b28816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000bdb60201b620022b01790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bca919062001066565b60405180910390a35050565b505050565b600080828462000bec919062000ec9565b90508381101562000c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c2b90620010d3565b60405180910390fd5b8091505092915050565b82805462000c4c9062001124565b90600052602060002090601f01602090048101928262000c70576000855562000cbc565b82601f1062000c8b57805160ff191683800117855562000cbc565b8280016001018555821562000cbc579182015b8281111562000cbb57825182559160200191906001019062000c9e565b5b50905062000ccb919062000ccf565b5090565b5b8082111562000cea57600081600090555060010162000cd0565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d208262000cf3565b9050919050565b62000d328162000d13565b811462000d3e57600080fd5b50565b60008151905062000d528162000d27565b92915050565b60006020828403121562000d715762000d7062000cee565b5b600062000d818482850162000d41565b91505092915050565b62000d958162000d13565b82525050565b600060408201905062000db2600083018562000d8a565b62000dc1602083018462000d8a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e0e8262000dc8565b915062000e1b8362000dc8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e575762000e5662000dd2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e9e8262000dc8565b915062000eab8362000dc8565b92508262000ebe5762000ebd62000e62565b5b828204905092915050565b600062000ed68262000dc8565b915062000ee38362000dc8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f1b5762000f1a62000dd2565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f6f60208362000f26565b915062000f7c8262000f37565b602082019050919050565b6000602082019050818103600083015262000fa28162000f60565b9050919050565b60008115159050919050565b62000fc08162000fa9565b82525050565b600060208201905062000fdd600083018462000fb5565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200101b601f8362000f26565b9150620010288262000fe3565b602082019050919050565b600060208201905081810360008301526200104e816200100c565b9050919050565b620010608162000dc8565b82525050565b60006020820190506200107d600083018462001055565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620010bb601b8362000f26565b9150620010c88262001083565b602082019050919050565b60006020820190508181036000830152620010ee81620010ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200113d57607f821691505b60208210811415620011545762001153620010f5565b5b50919050565b60805160a051615609620011d46000396000818161151a01528181612104015281816121ca015281816121f70152818161289901528181613a1201528181613ada0152613b0701526000818161284101528181613d0f01528181613dff01528181613e2601528181613ec20152613ee901526156096000f3fe6080604052600436106101dc5760003560e01c80638095d56411610102578063c024666811610095578063dd62ed3e11610064578063dd62ed3e146106d5578063e884f26014610712578063f2fde38b1461073d578063fe72b27a14610766576101e3565b8063c02466681461061d578063c17b5b8c14610646578063c18bc1951461066f578063d257b34f14610698576101e3565b80639a7a23d6116100d15780639a7a23d614610551578063a457c2d71461057a578063a9059cbb146105b7578063aacebbe3146105f4576101e3565b80638095d564146104bd5780638a8c523c146104e6578063924de9b7146104fd57806395d89b4114610526576101e3565b8063313ce5671161017a578063715018a611610149578063715018a614610429578063730c188814610440578063751039fc146104695780637571336a14610494576101e3565b8063313ce5671461034757806339509351146103725780634fbee193146103af57806370a08231146103ec576101e3565b806318160ddd116101b657806318160ddd1461028d5780631816467f146102b8578063203e727e146102e157806323b872dd1461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806310d5de5314610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6107a3565b60405161020a9190614040565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906140fb565b610835565b6040516102479190614156565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190614171565b610853565b6040516102849190614156565b60405180910390f35b34801561029957600080fd5b506102a2610873565b6040516102af91906141ad565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190614171565b61087d565b005b3480156102ed57600080fd5b50610308600480360381019061030391906141c8565b6109d4565b005b34801561031657600080fd5b50610331600480360381019061032c91906141f5565b610afe565b60405161033e9190614156565b60405180910390f35b34801561035357600080fd5b5061035c610bd7565b6040516103699190614264565b60405180910390f35b34801561037e57600080fd5b50610399600480360381019061039491906140fb565b610be0565b6040516103a69190614156565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190614171565b610c93565b6040516103e39190614156565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e9190614171565b610ce9565b60405161042091906141ad565b60405180910390f35b34801561043557600080fd5b5061043e610d31565b005b34801561044c57600080fd5b50610467600480360381019061046291906142ab565b610e89565b005b34801561047557600080fd5b5061047e610fe4565b60405161048b9190614156565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906142fe565b61109f565b005b3480156104c957600080fd5b506104e460048036038101906104df919061433e565b611191565b005b3480156104f257600080fd5b506104fb611265565b005b34801561050957600080fd5b50610524600480360381019061051f9190614391565b61133b565b005b34801561053257600080fd5b5061053b6113ef565b6040516105489190614040565b60405180910390f35b34801561055d57600080fd5b50610578600480360381019061057391906142fe565b611481565b005b34801561058657600080fd5b506105a1600480360381019061059c91906140fb565b6115b5565b6040516105ae9190614156565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d991906140fb565b611682565b6040516105eb9190614156565b60405180910390f35b34801561060057600080fd5b5061061b60048036038101906106169190614171565b6116a0565b005b34801561062957600080fd5b50610644600480360381019061063f91906142fe565b6117f7565b005b34801561065257600080fd5b5061066d6004803603810190610668919061433e565b611937565b005b34801561067b57600080fd5b50610696600480360381019061069191906141c8565b611a0b565b005b3480156106a457600080fd5b506106bf60048036038101906106ba91906141c8565b611b35565b6040516106cc9190614156565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f791906143be565b611ca5565b60405161070991906141ad565b60405180910390f35b34801561071e57600080fd5b50610727611d2c565b6040516107349190614156565b60405180910390f35b34801561074957600080fd5b50610764600480360381019061075f9190614171565b611de7565b005b34801561077257600080fd5b5061078d600480360381019061078891906141c8565b611fae565b60405161079a9190614156565b60405180910390f35b6060600480546107b29061442d565b80601f01602080910402602001604051908101604052809291908181526020018280546107de9061442d565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b600061084961084261230e565b8484612316565b6001905092915050565b60216020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b61088561230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b906144ab565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109dc61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a62906144ab565b60405180910390fd5b670de0b6b3a76400006103e86001610a81610873565b610a8b91906144fa565b610a959190614583565b610a9f9190614583565b811015610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890614626565b60405180910390fd5b670de0b6b3a764000081610af591906144fa565b60098190555050565b6000610b0b8484846124e1565b610bcc84610b1761230e565b610bc78560405180606001604052806028815260200161558760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b7d61230e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132799092919063ffffffff16565b612316565b600190509392505050565b60006012905090565b6000610c89610bed61230e565b84610c848560016000610bfe61230e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122b090919063ffffffff16565b612316565b6001905092915050565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d3961230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf906144ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e9161230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f17906144ab565b60405180910390fd5b610258831015610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c906146b8565b60405180910390fd5b6103e88211158015610f78575060008210155b610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae9061474a565b60405180910390fd5b82600e8190555081600c8190555080600d60006101000a81548160ff021916908315150217905550505050565b6000610fee61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611074906144ab565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b6110a761230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d906144ab565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61119961230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f906144ab565b60405180910390fd5b826016819055508160178190555080601881905550601854601754601654611250919061476a565b61125a919061476a565b601581905550505050565b61126d61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f3906144ab565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555042600f81905550565b61134361230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c9906144ab565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b6060600580546113fe9061442d565b80601f016020809104026020016040519081016040528092919081815260200182805461142a9061442d565b80156114775780601f1061144c57610100808354040283529160200191611477565b820191906000526020600020905b81548152906001019060200180831161145a57829003601f168201915b5050505050905090565b61148961230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f906144ab565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90614832565b60405180910390fd5b6115b182826132dd565b5050565b60006116786115c261230e565b84611673856040518060600160405280602581526020016155af60259139600160006115ec61230e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132799092919063ffffffff16565b612316565b6001905092915050565b600061169661168f61230e565b84846124e1565b6001905092915050565b6116a861230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e906144ab565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117ff61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611885906144ab565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161192b9190614156565b60405180910390a25050565b61193f61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906144ab565b60405180910390fd5b82601a8190555081601b8190555080601c81905550601c54601b54601a546119f6919061476a565b611a00919061476a565b601981905550505050565b611a1361230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a99906144ab565b60405180910390fd5b670de0b6b3a76400006103e86005611ab8610873565b611ac291906144fa565b611acc9190614583565b611ad69190614583565b811015611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f906148c4565b60405180910390fd5b670de0b6b3a764000081611b2c91906144fa565b600b8190555050565b6000611b3f61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc5906144ab565b60405180910390fd5b620186a06001611bdc610873565b611be691906144fa565b611bf09190614583565b821015611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990614956565b60405180910390fd5b6103e86005611c3f610873565b611c4991906144fa565b611c539190614583565b821115611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c906149e8565b60405180910390fd5b81600a8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611d3661230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbc906144ab565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b611def61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e75906144ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee590614a7a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611fb861230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906144ab565b60405180910390fd5b601054601154612057919061476a565b4211612098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208f90614ae6565b60405180910390fd5b6103e88211156120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490614b78565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161213f9190614ba7565b60206040518083038186803b15801561215757600080fd5b505afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f9190614bd7565b905060006121ba6127106121ac868561337e90919063ffffffff16565b6133f990919063ffffffff16565b905060008111156121f3576121f27f000000000000000000000000000000000000000000000000000000000000000061dead83613443565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b60008082846122bf919061476a565b905083811015612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb90614c50565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d90614ce2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ed90614d74565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124d491906141ad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254890614e06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b890614e98565b60405180910390fd5b60008114156125db576125d683836000613443565b613274565b601260009054906101000a900460ff1615612c9e576125f86136d8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561266657506126366136d8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561269f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126d9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126f25750600660149054906101000a900460ff16155b15612c9d57601260019054906101000a900460ff166127ec57602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127ac5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e290614f04565b60405180910390fd5b5b601460009054906101000a900460ff16156129b4576128096136d8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561289057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128e857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129b35743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061296e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296590614fbc565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a575750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612afe57600954811115612aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a989061504e565b60405180910390fd5b600b54612aad83610ce9565b82612ab8919061476a565b1115612af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af0906150ba565b60405180910390fd5b612c9c565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba15750602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf057600954811115612beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be29061514c565b60405180910390fd5b612c9b565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c9a57600b54612c4d83610ce9565b82612c58919061476a565b1115612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c90906150ba565b60405180910390fd5b5b5b5b5b5b6000612ca930610ce9565b90506000600a548210159050808015612cce5750601260029054906101000a900460ff165b8015612ce75750600660149054906101000a900460ff16155b8015612d3d5750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d935750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de95750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2d576001600660146101000a81548160ff021916908315150217905550612e11613702565b6000600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff16158015612e935750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612eab5750600d60009054906101000a900460ff165b8015612ec65750600e54600f54612ec2919061476a565b4210155b8015612f1c5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f2b57612f296139e9565b505b6000600660149054906101000a900460ff16159050602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fe15750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612feb57600090505b6000811561326457602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561304e57506000601954115b1561311b5761307b606461306d6019548861337e90919063ffffffff16565b6133f990919063ffffffff16565b9050601954601b548261308e91906144fa565b6130989190614583565b601e60008282546130a9919061476a565b92505081905550601954601c54826130c191906144fa565b6130cb9190614583565b601f60008282546130dc919061476a565b92505081905550601954601a54826130f491906144fa565b6130fe9190614583565b601d600082825461310f919061476a565b92505081905550613240565b602260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561317657506000601554115b1561323f576131a360646131956015548861337e90919063ffffffff16565b6133f990919063ffffffff16565b9050601554601754826131b691906144fa565b6131c09190614583565b601e60008282546131d1919061476a565b92505081905550601554601854826131e991906144fa565b6131f39190614583565b601f6000828254613204919061476a565b925050819055506015546016548261321c91906144fa565b6132269190614583565b601d6000828254613237919061476a565b925050819055505b5b600081111561325557613254873083613443565b5b8085613261919061516c565b94505b61326f878787613443565b505050505b505050565b60008383111582906132c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b89190614040565b60405180910390fd5b50600083856132d0919061516c565b9050809150509392505050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083141561339157600090506133f3565b6000828461339f91906144fa565b90508284826133ae9190614583565b146133ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e590615212565b60405180910390fd5b809150505b92915050565b600061343b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bbe565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134aa90614e06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351a90614e98565b60405180910390fd5b61352e838383613c21565b61359981604051806060016040528060268152602001615561602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132799092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061362c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122b090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136cb91906141ad565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061370d30610ce9565b90506000601f54601d54601e54613724919061476a565b61372e919061476a565b90506000808314806137405750600082145b1561374d575050506139e7565b6014600a5461375c91906144fa565b831115613775576014600a5461377291906144fa565b92505b6000600283601e548661378891906144fa565b6137929190614583565b61379c9190614583565b905060006137b38286613c2690919063ffffffff16565b905060004790506137c382613c70565b60006137d88247613c2690919063ffffffff16565b90506000613803876137f5601d548561337e90919063ffffffff16565b6133f990919063ffffffff16565b9050600061382e88613820601f548661337e90919063ffffffff16565b6133f990919063ffffffff16565b9050600081838561383f919061516c565b613849919061516c565b90506000601e819055506000601d819055506000601f81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516138a990615263565b60006040518083038185875af1925050503d80600081146138e6576040519150601f19603f3d011682016040523d82523d6000602084013e6138eb565b606091505b5050809850506000871180156139015750600081115b1561394e576139108782613ebc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601e5460405161394593929190615278565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161399490615263565b60006040518083038185875af1925050503d80600081146139d1576040519150601f19603f3d011682016040523d82523d6000602084013e6139d6565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401613a4d9190614ba7565b60206040518083038186803b158015613a6557600080fd5b505afa158015613a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9d9190614bd7565b90506000613aca612710613abc600c548561337e90919063ffffffff16565b6133f990919063ffffffff16565b90506000811115613b0357613b027f000000000000000000000000000000000000000000000000000000000000000061dead83613443565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613b7057600080fd5b505af1158015613b84573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b60008083118290613c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bfc9190614040565b60405180910390fd5b5060008385613c149190614583565b9050809150509392505050565b505050565b6000613c6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613279565b905092915050565b6000600267ffffffffffffffff811115613c8d57613c8c6152af565b5b604051908082528060200260200182016040528015613cbb5781602001602082028036833780820191505090505b5090503081600081518110613cd357613cd26152de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613d7357600080fd5b505afa158015613d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dab9190615322565b81600181518110613dbf57613dbe6152de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e24307f000000000000000000000000000000000000000000000000000000000000000084612316565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e86959493929190615452565b600060405180830381600087803b158015613ea057600080fd5b505af1158015613eb4573d6000803e3d6000fd5b505050505050565b613ee7307f000000000000000000000000000000000000000000000000000000000000000084612316565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613f4e969594939291906154ac565b6060604051808303818588803b158015613f6757600080fd5b505af1158015613f7b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fa0919061550d565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fe1578082015181840152602081019050613fc6565b83811115613ff0576000848401525b50505050565b6000601f19601f8301169050919050565b600061401282613fa7565b61401c8185613fb2565b935061402c818560208601613fc3565b61403581613ff6565b840191505092915050565b6000602082019050818103600083015261405a8184614007565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061409282614067565b9050919050565b6140a281614087565b81146140ad57600080fd5b50565b6000813590506140bf81614099565b92915050565b6000819050919050565b6140d8816140c5565b81146140e357600080fd5b50565b6000813590506140f5816140cf565b92915050565b6000806040838503121561411257614111614062565b5b6000614120858286016140b0565b9250506020614131858286016140e6565b9150509250929050565b60008115159050919050565b6141508161413b565b82525050565b600060208201905061416b6000830184614147565b92915050565b60006020828403121561418757614186614062565b5b6000614195848285016140b0565b91505092915050565b6141a7816140c5565b82525050565b60006020820190506141c2600083018461419e565b92915050565b6000602082840312156141de576141dd614062565b5b60006141ec848285016140e6565b91505092915050565b60008060006060848603121561420e5761420d614062565b5b600061421c868287016140b0565b935050602061422d868287016140b0565b925050604061423e868287016140e6565b9150509250925092565b600060ff82169050919050565b61425e81614248565b82525050565b60006020820190506142796000830184614255565b92915050565b6142888161413b565b811461429357600080fd5b50565b6000813590506142a58161427f565b92915050565b6000806000606084860312156142c4576142c3614062565b5b60006142d2868287016140e6565b93505060206142e3868287016140e6565b92505060406142f486828701614296565b9150509250925092565b6000806040838503121561431557614314614062565b5b6000614323858286016140b0565b925050602061433485828601614296565b9150509250929050565b60008060006060848603121561435757614356614062565b5b6000614365868287016140e6565b9350506020614376868287016140e6565b9250506040614387868287016140e6565b9150509250925092565b6000602082840312156143a7576143a6614062565b5b60006143b584828501614296565b91505092915050565b600080604083850312156143d5576143d4614062565b5b60006143e3858286016140b0565b92505060206143f4858286016140b0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061444557607f821691505b60208210811415614459576144586143fe565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614495602083613fb2565b91506144a08261445f565b602082019050919050565b600060208201905081810360008301526144c481614488565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614505826140c5565b9150614510836140c5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614549576145486144cb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061458e826140c5565b9150614599836140c5565b9250826145a9576145a8614554565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614610602f83613fb2565b915061461b826145b4565b604082019050919050565b6000602082019050818103600083015261463f81614603565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b60006146a2603383613fb2565b91506146ad82614646565b604082019050919050565b600060208201905081810360008301526146d181614695565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614734603083613fb2565b915061473f826146d8565b604082019050919050565b6000602082019050818103600083015261476381614727565b9050919050565b6000614775826140c5565b9150614780836140c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147b5576147b46144cb565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061481c603983613fb2565b9150614827826147c0565b604082019050919050565b6000602082019050818103600083015261484b8161480f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006148ae602483613fb2565b91506148b982614852565b604082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614940603583613fb2565b915061494b826148e4565b604082019050919050565b6000602082019050818103600083015261496f81614933565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006149d2603483613fb2565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a64602683613fb2565b9150614a6f82614a08565b604082019050919050565b60006020820190508181036000830152614a9381614a57565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614ad0602083613fb2565b9150614adb82614a9a565b602082019050919050565b60006020820190508181036000830152614aff81614ac3565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614b62602a83613fb2565b9150614b6d82614b06565b604082019050919050565b60006020820190508181036000830152614b9181614b55565b9050919050565b614ba181614087565b82525050565b6000602082019050614bbc6000830184614b98565b92915050565b600081519050614bd1816140cf565b92915050565b600060208284031215614bed57614bec614062565b5b6000614bfb84828501614bc2565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614c3a601b83613fb2565b9150614c4582614c04565b602082019050919050565b60006020820190508181036000830152614c6981614c2d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ccc602483613fb2565b9150614cd782614c70565b604082019050919050565b60006020820190508181036000830152614cfb81614cbf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d5e602283613fb2565b9150614d6982614d02565b604082019050919050565b60006020820190508181036000830152614d8d81614d51565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614df0602583613fb2565b9150614dfb82614d94565b604082019050919050565b60006020820190508181036000830152614e1f81614de3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e82602383613fb2565b9150614e8d82614e26565b604082019050919050565b60006020820190508181036000830152614eb181614e75565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614eee601683613fb2565b9150614ef982614eb8565b602082019050919050565b60006020820190508181036000830152614f1d81614ee1565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614fa6604983613fb2565b9150614fb182614f24565b606082019050919050565b60006020820190508181036000830152614fd581614f99565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615038603583613fb2565b915061504382614fdc565b604082019050919050565b600060208201905081810360008301526150678161502b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150a4601383613fb2565b91506150af8261506e565b602082019050919050565b600060208201905081810360008301526150d381615097565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615136603683613fb2565b9150615141826150da565b604082019050919050565b6000602082019050818103600083015261516581615129565b9050919050565b6000615177826140c5565b9150615182836140c5565b925082821015615195576151946144cb565b5b828203905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151fc602183613fb2565b9150615207826151a0565b604082019050919050565b6000602082019050818103600083015261522b816151ef565b9050919050565b600081905092915050565b50565b600061524d600083615232565b91506152588261523d565b600082019050919050565b600061526e82615240565b9150819050919050565b600060608201905061528d600083018661419e565b61529a602083018561419e565b6152a7604083018461419e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061531c81614099565b92915050565b60006020828403121561533857615337614062565b5b60006153468482850161530d565b91505092915050565b6000819050919050565b6000819050919050565b600061537e6153796153748461534f565b615359565b6140c5565b9050919050565b61538e81615363565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153c981614087565b82525050565b60006153db83836153c0565b60208301905092915050565b6000602082019050919050565b60006153ff82615394565b615409818561539f565b9350615414836153b0565b8060005b8381101561544557815161542c88826153cf565b9750615437836153e7565b925050600181019050615418565b5085935050505092915050565b600060a082019050615467600083018861419e565b6154746020830187615385565b818103604083015261548681866153f4565b90506154956060830185614b98565b6154a2608083018461419e565b9695505050505050565b600060c0820190506154c16000830189614b98565b6154ce602083018861419e565b6154db6040830187615385565b6154e86060830186615385565b6154f56080830185614b98565b61550260a083018461419e565b979650505050505050565b60008060006060848603121561552657615525614062565b5b600061553486828701614bc2565b935050602061554586828701614bc2565b925050604061555686828701614bc2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e97adc75461c353719bab5f9d2a710bd3c62f936ad96ae220656c0d8b66c778b64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80638095d56411610102578063c024666811610095578063dd62ed3e11610064578063dd62ed3e146106d5578063e884f26014610712578063f2fde38b1461073d578063fe72b27a14610766576101e3565b8063c02466681461061d578063c17b5b8c14610646578063c18bc1951461066f578063d257b34f14610698576101e3565b80639a7a23d6116100d15780639a7a23d614610551578063a457c2d71461057a578063a9059cbb146105b7578063aacebbe3146105f4576101e3565b80638095d564146104bd5780638a8c523c146104e6578063924de9b7146104fd57806395d89b4114610526576101e3565b8063313ce5671161017a578063715018a611610149578063715018a614610429578063730c188814610440578063751039fc146104695780637571336a14610494576101e3565b8063313ce5671461034757806339509351146103725780634fbee193146103af57806370a08231146103ec576101e3565b806318160ddd116101b657806318160ddd1461028d5780631816467f146102b8578063203e727e146102e157806323b872dd1461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806310d5de5314610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6107a3565b60405161020a9190614040565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906140fb565b610835565b6040516102479190614156565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190614171565b610853565b6040516102849190614156565b60405180910390f35b34801561029957600080fd5b506102a2610873565b6040516102af91906141ad565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190614171565b61087d565b005b3480156102ed57600080fd5b50610308600480360381019061030391906141c8565b6109d4565b005b34801561031657600080fd5b50610331600480360381019061032c91906141f5565b610afe565b60405161033e9190614156565b60405180910390f35b34801561035357600080fd5b5061035c610bd7565b6040516103699190614264565b60405180910390f35b34801561037e57600080fd5b50610399600480360381019061039491906140fb565b610be0565b6040516103a69190614156565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190614171565b610c93565b6040516103e39190614156565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e9190614171565b610ce9565b60405161042091906141ad565b60405180910390f35b34801561043557600080fd5b5061043e610d31565b005b34801561044c57600080fd5b50610467600480360381019061046291906142ab565b610e89565b005b34801561047557600080fd5b5061047e610fe4565b60405161048b9190614156565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b691906142fe565b61109f565b005b3480156104c957600080fd5b506104e460048036038101906104df919061433e565b611191565b005b3480156104f257600080fd5b506104fb611265565b005b34801561050957600080fd5b50610524600480360381019061051f9190614391565b61133b565b005b34801561053257600080fd5b5061053b6113ef565b6040516105489190614040565b60405180910390f35b34801561055d57600080fd5b50610578600480360381019061057391906142fe565b611481565b005b34801561058657600080fd5b506105a1600480360381019061059c91906140fb565b6115b5565b6040516105ae9190614156565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d991906140fb565b611682565b6040516105eb9190614156565b60405180910390f35b34801561060057600080fd5b5061061b60048036038101906106169190614171565b6116a0565b005b34801561062957600080fd5b50610644600480360381019061063f91906142fe565b6117f7565b005b34801561065257600080fd5b5061066d6004803603810190610668919061433e565b611937565b005b34801561067b57600080fd5b50610696600480360381019061069191906141c8565b611a0b565b005b3480156106a457600080fd5b506106bf60048036038101906106ba91906141c8565b611b35565b6040516106cc9190614156565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f791906143be565b611ca5565b60405161070991906141ad565b60405180910390f35b34801561071e57600080fd5b50610727611d2c565b6040516107349190614156565b60405180910390f35b34801561074957600080fd5b50610764600480360381019061075f9190614171565b611de7565b005b34801561077257600080fd5b5061078d600480360381019061078891906141c8565b611fae565b60405161079a9190614156565b60405180910390f35b6060600480546107b29061442d565b80601f01602080910402602001604051908101604052809291908181526020018280546107de9061442d565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b600061084961084261230e565b8484612316565b6001905092915050565b60216020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b61088561230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b906144ab565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109dc61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a62906144ab565b60405180910390fd5b670de0b6b3a76400006103e86001610a81610873565b610a8b91906144fa565b610a959190614583565b610a9f9190614583565b811015610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890614626565b60405180910390fd5b670de0b6b3a764000081610af591906144fa565b60098190555050565b6000610b0b8484846124e1565b610bcc84610b1761230e565b610bc78560405180606001604052806028815260200161558760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b7d61230e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132799092919063ffffffff16565b612316565b600190509392505050565b60006012905090565b6000610c89610bed61230e565b84610c848560016000610bfe61230e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122b090919063ffffffff16565b612316565b6001905092915050565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d3961230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf906144ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e9161230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f17906144ab565b60405180910390fd5b610258831015610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c906146b8565b60405180910390fd5b6103e88211158015610f78575060008210155b610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae9061474a565b60405180910390fd5b82600e8190555081600c8190555080600d60006101000a81548160ff021916908315150217905550505050565b6000610fee61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611074906144ab565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b6110a761230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d906144ab565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61119961230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121f906144ab565b60405180910390fd5b826016819055508160178190555080601881905550601854601754601654611250919061476a565b61125a919061476a565b601581905550505050565b61126d61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f3906144ab565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555042600f81905550565b61134361230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c9906144ab565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b6060600580546113fe9061442d565b80601f016020809104026020016040519081016040528092919081815260200182805461142a9061442d565b80156114775780601f1061144c57610100808354040283529160200191611477565b820191906000526020600020905b81548152906001019060200180831161145a57829003601f168201915b5050505050905090565b61148961230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f906144ab565b60405180910390fd5b7f00000000000000000000000010786f72cb9e6ba4840fc672e4feb915b33b942573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90614832565b60405180910390fd5b6115b182826132dd565b5050565b60006116786115c261230e565b84611673856040518060600160405280602581526020016155af60259139600160006115ec61230e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132799092919063ffffffff16565b612316565b6001905092915050565b600061169661168f61230e565b84846124e1565b6001905092915050565b6116a861230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e906144ab565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117ff61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611885906144ab565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161192b9190614156565b60405180910390a25050565b61193f61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906144ab565b60405180910390fd5b82601a8190555081601b8190555080601c81905550601c54601b54601a546119f6919061476a565b611a00919061476a565b601981905550505050565b611a1361230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a99906144ab565b60405180910390fd5b670de0b6b3a76400006103e86005611ab8610873565b611ac291906144fa565b611acc9190614583565b611ad69190614583565b811015611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f906148c4565b60405180910390fd5b670de0b6b3a764000081611b2c91906144fa565b600b8190555050565b6000611b3f61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc5906144ab565b60405180910390fd5b620186a06001611bdc610873565b611be691906144fa565b611bf09190614583565b821015611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990614956565b60405180910390fd5b6103e86005611c3f610873565b611c4991906144fa565b611c539190614583565b821115611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c906149e8565b60405180910390fd5b81600a8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611d3661230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbc906144ab565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b611def61230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e75906144ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee590614a7a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611fb861230e565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906144ab565b60405180910390fd5b601054601154612057919061476a565b4211612098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208f90614ae6565b60405180910390fd5b6103e88211156120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490614b78565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000010786f72cb9e6ba4840fc672e4feb915b33b94256040518263ffffffff1660e01b815260040161213f9190614ba7565b60206040518083038186803b15801561215757600080fd5b505afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f9190614bd7565b905060006121ba6127106121ac868561337e90919063ffffffff16565b6133f990919063ffffffff16565b905060008111156121f3576121f27f00000000000000000000000010786f72cb9e6ba4840fc672e4feb915b33b942561dead83613443565b5b60007f00000000000000000000000010786f72cb9e6ba4840fc672e4feb915b33b942590508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b60008082846122bf919061476a565b905083811015612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb90614c50565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d90614ce2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ed90614d74565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124d491906141ad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254890614e06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b890614e98565b60405180910390fd5b60008114156125db576125d683836000613443565b613274565b601260009054906101000a900460ff1615612c9e576125f86136d8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561266657506126366136d8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561269f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126d9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126f25750600660149054906101000a900460ff16155b15612c9d57601260019054906101000a900460ff166127ec57602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127ac5750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e290614f04565b60405180910390fd5b5b601460009054906101000a900460ff16156129b4576128096136d8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561289057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128e857507f00000000000000000000000010786f72cb9e6ba4840fc672e4feb915b33b942573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129b35743601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061296e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296590614fbc565b60405180910390fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a575750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612afe57600954811115612aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a989061504e565b60405180910390fd5b600b54612aad83610ce9565b82612ab8919061476a565b1115612af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af0906150ba565b60405180910390fd5b612c9c565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba15750602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf057600954811115612beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be29061514c565b60405180910390fd5b612c9b565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c9a57600b54612c4d83610ce9565b82612c58919061476a565b1115612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c90906150ba565b60405180910390fd5b5b5b5b5b5b6000612ca930610ce9565b90506000600a548210159050808015612cce5750601260029054906101000a900460ff165b8015612ce75750600660149054906101000a900460ff16155b8015612d3d5750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d935750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612de95750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2d576001600660146101000a81548160ff021916908315150217905550612e11613702565b6000600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff16158015612e935750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612eab5750600d60009054906101000a900460ff165b8015612ec65750600e54600f54612ec2919061476a565b4210155b8015612f1c5750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f2b57612f296139e9565b505b6000600660149054906101000a900460ff16159050602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fe15750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612feb57600090505b6000811561326457602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561304e57506000601954115b1561311b5761307b606461306d6019548861337e90919063ffffffff16565b6133f990919063ffffffff16565b9050601954601b548261308e91906144fa565b6130989190614583565b601e60008282546130a9919061476a565b92505081905550601954601c54826130c191906144fa565b6130cb9190614583565b601f60008282546130dc919061476a565b92505081905550601954601a54826130f491906144fa565b6130fe9190614583565b601d600082825461310f919061476a565b92505081905550613240565b602260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561317657506000601554115b1561323f576131a360646131956015548861337e90919063ffffffff16565b6133f990919063ffffffff16565b9050601554601754826131b691906144fa565b6131c09190614583565b601e60008282546131d1919061476a565b92505081905550601554601854826131e991906144fa565b6131f39190614583565b601f6000828254613204919061476a565b925050819055506015546016548261321c91906144fa565b6132269190614583565b601d6000828254613237919061476a565b925050819055505b5b600081111561325557613254873083613443565b5b8085613261919061516c565b94505b61326f878787613443565b505050505b505050565b60008383111582906132c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b89190614040565b60405180910390fd5b50600083856132d0919061516c565b9050809150509392505050565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083141561339157600090506133f3565b6000828461339f91906144fa565b90508284826133ae9190614583565b146133ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e590615212565b60405180910390fd5b809150505b92915050565b600061343b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bbe565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134aa90614e06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351a90614e98565b60405180910390fd5b61352e838383613c21565b61359981604051806060016040528060268152602001615561602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132799092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061362c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122b090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136cb91906141ad565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061370d30610ce9565b90506000601f54601d54601e54613724919061476a565b61372e919061476a565b90506000808314806137405750600082145b1561374d575050506139e7565b6014600a5461375c91906144fa565b831115613775576014600a5461377291906144fa565b92505b6000600283601e548661378891906144fa565b6137929190614583565b61379c9190614583565b905060006137b38286613c2690919063ffffffff16565b905060004790506137c382613c70565b60006137d88247613c2690919063ffffffff16565b90506000613803876137f5601d548561337e90919063ffffffff16565b6133f990919063ffffffff16565b9050600061382e88613820601f548661337e90919063ffffffff16565b6133f990919063ffffffff16565b9050600081838561383f919061516c565b613849919061516c565b90506000601e819055506000601d819055506000601f81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516138a990615263565b60006040518083038185875af1925050503d80600081146138e6576040519150601f19603f3d011682016040523d82523d6000602084013e6138eb565b606091505b5050809850506000871180156139015750600081115b1561394e576139108782613ebc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601e5460405161394593929190615278565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161399490615263565b60006040518083038185875af1925050503d80600081146139d1576040519150601f19603f3d011682016040523d82523d6000602084013e6139d6565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000010786f72cb9e6ba4840fc672e4feb915b33b94256040518263ffffffff1660e01b8152600401613a4d9190614ba7565b60206040518083038186803b158015613a6557600080fd5b505afa158015613a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9d9190614bd7565b90506000613aca612710613abc600c548561337e90919063ffffffff16565b6133f990919063ffffffff16565b90506000811115613b0357613b027f00000000000000000000000010786f72cb9e6ba4840fc672e4feb915b33b942561dead83613443565b5b60007f00000000000000000000000010786f72cb9e6ba4840fc672e4feb915b33b942590508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613b7057600080fd5b505af1158015613b84573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b60008083118290613c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bfc9190614040565b60405180910390fd5b5060008385613c149190614583565b9050809150509392505050565b505050565b6000613c6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613279565b905092915050565b6000600267ffffffffffffffff811115613c8d57613c8c6152af565b5b604051908082528060200260200182016040528015613cbb5781602001602082028036833780820191505090505b5090503081600081518110613cd357613cd26152de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613d7357600080fd5b505afa158015613d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dab9190615322565b81600181518110613dbf57613dbe6152de565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e24307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612316565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e86959493929190615452565b600060405180830381600087803b158015613ea057600080fd5b505af1158015613eb4573d6000803e3d6000fd5b505050505050565b613ee7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612316565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613f4e969594939291906154ac565b6060604051808303818588803b158015613f6757600080fd5b505af1158015613f7b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fa0919061550d565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fe1578082015181840152602081019050613fc6565b83811115613ff0576000848401525b50505050565b6000601f19601f8301169050919050565b600061401282613fa7565b61401c8185613fb2565b935061402c818560208601613fc3565b61403581613ff6565b840191505092915050565b6000602082019050818103600083015261405a8184614007565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061409282614067565b9050919050565b6140a281614087565b81146140ad57600080fd5b50565b6000813590506140bf81614099565b92915050565b6000819050919050565b6140d8816140c5565b81146140e357600080fd5b50565b6000813590506140f5816140cf565b92915050565b6000806040838503121561411257614111614062565b5b6000614120858286016140b0565b9250506020614131858286016140e6565b9150509250929050565b60008115159050919050565b6141508161413b565b82525050565b600060208201905061416b6000830184614147565b92915050565b60006020828403121561418757614186614062565b5b6000614195848285016140b0565b91505092915050565b6141a7816140c5565b82525050565b60006020820190506141c2600083018461419e565b92915050565b6000602082840312156141de576141dd614062565b5b60006141ec848285016140e6565b91505092915050565b60008060006060848603121561420e5761420d614062565b5b600061421c868287016140b0565b935050602061422d868287016140b0565b925050604061423e868287016140e6565b9150509250925092565b600060ff82169050919050565b61425e81614248565b82525050565b60006020820190506142796000830184614255565b92915050565b6142888161413b565b811461429357600080fd5b50565b6000813590506142a58161427f565b92915050565b6000806000606084860312156142c4576142c3614062565b5b60006142d2868287016140e6565b93505060206142e3868287016140e6565b92505060406142f486828701614296565b9150509250925092565b6000806040838503121561431557614314614062565b5b6000614323858286016140b0565b925050602061433485828601614296565b9150509250929050565b60008060006060848603121561435757614356614062565b5b6000614365868287016140e6565b9350506020614376868287016140e6565b9250506040614387868287016140e6565b9150509250925092565b6000602082840312156143a7576143a6614062565b5b60006143b584828501614296565b91505092915050565b600080604083850312156143d5576143d4614062565b5b60006143e3858286016140b0565b92505060206143f4858286016140b0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061444557607f821691505b60208210811415614459576144586143fe565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614495602083613fb2565b91506144a08261445f565b602082019050919050565b600060208201905081810360008301526144c481614488565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614505826140c5565b9150614510836140c5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614549576145486144cb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061458e826140c5565b9150614599836140c5565b9250826145a9576145a8614554565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614610602f83613fb2565b915061461b826145b4565b604082019050919050565b6000602082019050818103600083015261463f81614603565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b60006146a2603383613fb2565b91506146ad82614646565b604082019050919050565b600060208201905081810360008301526146d181614695565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614734603083613fb2565b915061473f826146d8565b604082019050919050565b6000602082019050818103600083015261476381614727565b9050919050565b6000614775826140c5565b9150614780836140c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147b5576147b46144cb565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061481c603983613fb2565b9150614827826147c0565b604082019050919050565b6000602082019050818103600083015261484b8161480f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006148ae602483613fb2565b91506148b982614852565b604082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614940603583613fb2565b915061494b826148e4565b604082019050919050565b6000602082019050818103600083015261496f81614933565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006149d2603483613fb2565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a64602683613fb2565b9150614a6f82614a08565b604082019050919050565b60006020820190508181036000830152614a9381614a57565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614ad0602083613fb2565b9150614adb82614a9a565b602082019050919050565b60006020820190508181036000830152614aff81614ac3565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614b62602a83613fb2565b9150614b6d82614b06565b604082019050919050565b60006020820190508181036000830152614b9181614b55565b9050919050565b614ba181614087565b82525050565b6000602082019050614bbc6000830184614b98565b92915050565b600081519050614bd1816140cf565b92915050565b600060208284031215614bed57614bec614062565b5b6000614bfb84828501614bc2565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614c3a601b83613fb2565b9150614c4582614c04565b602082019050919050565b60006020820190508181036000830152614c6981614c2d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ccc602483613fb2565b9150614cd782614c70565b604082019050919050565b60006020820190508181036000830152614cfb81614cbf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d5e602283613fb2565b9150614d6982614d02565b604082019050919050565b60006020820190508181036000830152614d8d81614d51565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614df0602583613fb2565b9150614dfb82614d94565b604082019050919050565b60006020820190508181036000830152614e1f81614de3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e82602383613fb2565b9150614e8d82614e26565b604082019050919050565b60006020820190508181036000830152614eb181614e75565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614eee601683613fb2565b9150614ef982614eb8565b602082019050919050565b60006020820190508181036000830152614f1d81614ee1565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614fa6604983613fb2565b9150614fb182614f24565b606082019050919050565b60006020820190508181036000830152614fd581614f99565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615038603583613fb2565b915061504382614fdc565b604082019050919050565b600060208201905081810360008301526150678161502b565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150a4601383613fb2565b91506150af8261506e565b602082019050919050565b600060208201905081810360008301526150d381615097565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615136603683613fb2565b9150615141826150da565b604082019050919050565b6000602082019050818103600083015261516581615129565b9050919050565b6000615177826140c5565b9150615182836140c5565b925082821015615195576151946144cb565b5b828203905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006151fc602183613fb2565b9150615207826151a0565b604082019050919050565b6000602082019050818103600083015261522b816151ef565b9050919050565b600081905092915050565b50565b600061524d600083615232565b91506152588261523d565b600082019050919050565b600061526e82615240565b9150819050919050565b600060608201905061528d600083018661419e565b61529a602083018561419e565b6152a7604083018461419e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061531c81614099565b92915050565b60006020828403121561533857615337614062565b5b60006153468482850161530d565b91505092915050565b6000819050919050565b6000819050919050565b600061537e6153796153748461534f565b615359565b6140c5565b9050919050565b61538e81615363565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153c981614087565b82525050565b60006153db83836153c0565b60208301905092915050565b6000602082019050919050565b60006153ff82615394565b615409818561539f565b9350615414836153b0565b8060005b8381101561544557815161542c88826153cf565b9750615437836153e7565b925050600181019050615418565b5085935050505092915050565b600060a082019050615467600083018861419e565b6154746020830187615385565b818103604083015261548681866153f4565b90506154956060830185614b98565b6154a2608083018461419e565b9695505050505050565b600060c0820190506154c16000830189614b98565b6154ce602083018861419e565b6154db6040830187615385565b6154e86060830186615385565b6154f56080830185614b98565b61550260a083018461419e565b979650505050505050565b60008060006060848603121561552657615525614062565b5b600061553486828701614bc2565b935050602061554586828701614bc2565b925050604061555686828701614bc2565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e97adc75461c353719bab5f9d2a710bd3c62f936ad96ae220656c0d8b66c778b64736f6c63430008090033

Deployed Bytecode Sourcemap

29666:17784:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7258:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9945:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31332:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8381:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37888:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35522:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10597:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8222:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11362:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38057:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8553:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22275:148;;;;;;;;;;;;;:::i;:::-;;45223:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34744:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35989:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36340:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34536:155;;;;;;;;;;;;;:::i;:::-;;36230:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7478:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37219:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12084:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9407:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37671:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37028:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36680:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35765:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35132:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9646:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34926:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22579:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46457:990;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7258:100;7312:13;7345:5;7338:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7258:100;:::o;9945:169::-;10028:4;10045:39;10054:12;:10;:12::i;:::-;10068:7;10077:6;10045:8;:39::i;:::-;10102:4;10095:11;;9945:169;;;;:::o;31332:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;8381:108::-;8442:7;8469:12;;8462:19;;8381:108;:::o;37888:157::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37995:9:::1;;;;;;;;;;;37967:38;;37984:9;37967:38;;;;;;;;;;;;38028:9;38016;;:21;;;;;;;;;;;;;;;;;;37888:157:::0;:::o;35522:234::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35641:4:::1;35635;35631:1;35615:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35614:31;;;;:::i;:::-;35604:6;:41;;35596:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35741:6;35731;:17;;;;:::i;:::-;35708:20;:40;;;;35522:234:::0;:::o;10597:355::-;10737:4;10754:36;10764:6;10772:9;10783:6;10754:9;:36::i;:::-;10801:121;10810:6;10818:12;:10;:12::i;:::-;10832:89;10870:6;10832:89;;;;;;;;;;;;;;;;;:11;:19;10844:6;10832:19;;;;;;;;;;;;;;;:33;10852:12;:10;:12::i;:::-;10832:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10801:8;:121::i;:::-;10940:4;10933:11;;10597:355;;;;;:::o;8222:93::-;8280:5;8305:2;8298:9;;8222:93;:::o;11362:218::-;11450:4;11467:83;11476:12;:10;:12::i;:::-;11490:7;11499:50;11538:10;11499:11;:25;11511:12;:10;:12::i;:::-;11499:25;;;;;;;;;;;;;;;:34;11525:7;11499:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11467:8;:83::i;:::-;11568:4;11561:11;;11362:218;;;;:::o;38057:125::-;38122:4;38146:19;:28;38166:7;38146:28;;;;;;;;;;;;;;;;;;;;;;;;;38139:35;;38057:125;;;:::o;8553:127::-;8627:7;8654:9;:18;8664:7;8654:18;;;;;;;;;;;;;;;;8647:25;;8553:127;;;:::o;22275:148::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22382:1:::1;22345:40;;22366:6;;;;;;;;;;;22345:40;;;;;;;;;;;;22413:1;22396:6;;:19;;;;;;;;;;;;;;;;;;22275:148::o:0;45223:447::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;45377:3:::1;45354:19;:26;;45346:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;45467:4;45455:8;:16;;:33;;;;;45487:1;45475:8;:13;;45455:33;45447:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;45570:19;45552:15;:37;;;;45619:8;45600:16;:27;;;;45654:8;45638:13;;:24;;;;;;;;;;;;;;;;;;45223:447:::0;;;:::o;34744:120::-;34796:4;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34829:5:::1;34812:14;;:22;;;;;;;;;;;;;;;;;;34852:4;34845:11;;34744:120:::0;:::o;35989:144::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36121:4:::1;36079:31;:39;36111:6;36079:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35989:144:::0;;:::o;36340:298::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36474:13:::1;36456:15;:31;;;;36516:13;36498:15;:31;;;;36552:7;36540:9;:19;;;;36621:9;;36603:15;;36585;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;36570:12;:60;;;;36340:298:::0;;;:::o;34536:155::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34607:4:::1;34591:13;;:20;;;;;;;;;;;;;;;;;;34636:4;34622:11;;:18;;;;;;;;;;;;;;;;;;34668:15;34651:14;:32;;;;34536:155::o:0;36230:101::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36316:7:::1;36302:11;;:21;;;;;;;;;;;;;;;;;;36230:101:::0;:::o;7478:104::-;7534:13;7567:7;7560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7478:104;:::o;37219:245::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37326:13:::1;37318:21;;:4;:21;;;;37310:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;37415:41;37444:4;37450:5;37415:28;:41::i;:::-;37219:245:::0;;:::o;12084:269::-;12177:4;12194:129;12203:12;:10;:12::i;:::-;12217:7;12226:96;12265:15;12226:96;;;;;;;;;;;;;;;;;:11;:25;12238:12;:10;:12::i;:::-;12226:25;;;;;;;;;;;;;;;:34;12252:7;12226:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12194:8;:129::i;:::-;12341:4;12334:11;;12084:269;;;;:::o;9407:175::-;9493:4;9510:42;9520:12;:10;:12::i;:::-;9534:9;9545:6;9510:9;:42::i;:::-;9570:4;9563:11;;9407:175;;;;:::o;37671:208::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37808:15:::1;;;;;;;;;;;37765:59;;37788:18;37765:59;;;;;;;;;;;;37853:18;37835:15;;:36;;;;;;;;;;;;;;;;;;37671:208:::0;:::o;37028:182::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37144:8:::1;37113:19;:28;37133:7;37113:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37184:7;37168:34;;;37193:8;37168:34;;;;;;:::i;:::-;;;;;;;;37028:182:::0;;:::o;36680:306::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36816:13:::1;36797:16;:32;;;;36859:13;36840:16;:32;;;;36896:7;36883:10;:20;;;;36968:10;;36949:16;;36930;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;36914:13;:64;;;;36680:306:::0;;;:::o;35765:215::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35887:4:::1;35881;35877:1;35861:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35860:31;;;;:::i;:::-;35850:6;:41;;35842:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;35965:6;35955;:17;;;;:::i;:::-;35943:9;:29;;;;35765:215:::0;:::o;35132:381::-;35213:4;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35269:6:::1;35265:1;35249:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;35236:9;:39;;35228:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;35384:4;35380:1;35364:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35351:9;:37;;35343:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;35476:9;35455:18;:30;;;;35502:4;35495:11;;35132:381:::0;;;:::o;9646:151::-;9735:7;9762:11;:18;9774:5;9762:18;;;;;;;;;;;;;;;:27;9781:7;9762:27;;;;;;;;;;;;;;;;9755:34;;9646:151;;;;:::o;34926:134::-;34986:4;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35025:5:::1;35002:20;;:28;;;;;;;;;;;;;;;;;;35048:4;35041:11;;34926:134:::0;:::o;22579:244::-;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22688:1:::1;22668:22;;:8;:22;;;;22660:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22778:8;22749:38;;22770:6;;;;;;;;;;;22749:38;;;;;;;;;;;;22807:8;22798:6;;:17;;;;;;;;;;;;;;;;;;22579:244:::0;:::o;46457:990::-;46541:4;21854:12;:10;:12::i;:::-;21844:22;;:6;;;;;;;;;;;:22;;;21836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;46606:19:::1;;46583:20;;:42;;;;:::i;:::-;46565:15;:60;46557:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;46693:4;46682:7;:15;;46674:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;46778:15;46755:20;:38;;;;46849:28;46880:4;:14;;;46895:13;46880:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46849:60;;46960:20;46983:44;47021:5;46983:33;47008:7;46983:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;46960:67;;47148:1;47133:12;:16;47129:109;;;47165:61;47181:13;47204:6;47213:12;47165:15;:61::i;:::-;47129:109;47314:19;47351:13;47314:51;;47376:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;47403:14;;;;;;;;;;47435:4;47428:11;;;;;46457:990:::0;;;:::o;16661:182::-;16719:7;16739:9;16755:1;16751;:5;;;;:::i;:::-;16739:17;;16780:1;16775;:6;;16767:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16834:1;16827:8;;;16661:182;;;;:::o;254:98::-;307:7;334:10;327:17;;254:98;:::o;15280:381::-;15433:1;15416:19;;:5;:19;;;;15408:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15514:1;15495:21;;:7;:21;;;;15487:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15599:6;15569:11;:18;15581:5;15569:18;;;;;;;;;;;;;;;:27;15588:7;15569:27;;;;;;;;;;;;;;;:36;;;;15637:7;15621:32;;15630:5;15621:32;;;15646:6;15621:32;;;;;;:::i;:::-;;;;;;;;15280:381;;;:::o;38242:4247::-;38390:1;38374:18;;:4;:18;;;;38366:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38467:1;38453:16;;:2;:16;;;;38445:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38537:1;38527:6;:11;38524:92;;;38555:28;38571:4;38577:2;38581:1;38555:15;:28::i;:::-;38598:7;;38524:92;38632:14;;;;;;;;;;;38629:1811;;;38692:7;:5;:7::i;:::-;38684:15;;:4;:15;;;;:49;;;;;38726:7;:5;:7::i;:::-;38720:13;;:2;:13;;;;38684:49;:86;;;;;38768:1;38754:16;;:2;:16;;;;38684:86;:128;;;;;38805:6;38791:21;;:2;:21;;;;38684:128;:158;;;;;38834:8;;;;;;;;;;;38833:9;38684:158;38662:1767;;;38880:13;;;;;;;;;;;38876:148;;38925:19;:25;38945:4;38925:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38954:19;:23;38974:2;38954:23;;;;;;;;;;;;;;;;;;;;;;;;;38925:52;38917:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38876:148;39183:20;;;;;;;;;;;39179:423;;;39237:7;:5;:7::i;:::-;39231:13;;:2;:13;;;;:47;;;;;39262:15;39248:30;;:2;:30;;;;39231:47;:79;;;;;39296:13;39282:28;;:2;:28;;;;39231:79;39227:356;;;39388:12;39346:28;:39;39375:9;39346:39;;;;;;;;;;;;;;;;:54;39338:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39547:12;39505:28;:39;39534:9;39505:39;;;;;;;;;;;;;;;:54;;;;39227:356;39179:423;39655:25;:31;39681:4;39655:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39691:31;:35;39723:2;39691:35;;;;;;;;;;;;;;;;;;;;;;;;;39690:36;39655:71;39651:763;;;39773:20;;39763:6;:30;;39755:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;39912:9;;39895:13;39905:2;39895:9;:13::i;:::-;39886:6;:22;;;;:::i;:::-;:35;;39878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39651:763;;;40024:25;:29;40050:2;40024:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40058:31;:37;40090:4;40058:37;;;;;;;;;;;;;;;;;;;;;;;;;40057:38;40024:71;40020:394;;;40142:20;;40132:6;:30;;40124:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40020:394;;;40268:31;:35;40300:2;40268:35;;;;;;;;;;;;;;;;;;;;;;;;;40264:150;;40361:9;;40344:13;40354:2;40344:9;:13::i;:::-;40335:6;:22;;;;:::i;:::-;:35;;40327:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40264:150;40020:394;39651:763;38662:1767;38629:1811;40453:28;40484:24;40502:4;40484:9;:24::i;:::-;40453:55;;40522:12;40561:18;;40537:20;:42;;40522:57;;40611:7;:35;;;;;40635:11;;;;;;;;;;;40611:35;:61;;;;;40664:8;;;;;;;;;;;40663:9;40611:61;:110;;;;;40690:25;:31;40716:4;40690:31;;;;;;;;;;;;;;;;;;;;;;;;;40689:32;40611:110;:153;;;;;40739:19;:25;40759:4;40739:25;;;;;;;;;;;;;;;;;;;;;;;;;40738:26;40611:153;:194;;;;;40782:19;:23;40802:2;40782:23;;;;;;;;;;;;;;;;;;;;;;;;;40781:24;40611:194;40593:328;;;40843:4;40832:8;;:15;;;;;;;;;;;;;;;;;;40865:10;:8;:10::i;:::-;40904:5;40893:8;;:16;;;;;;;;;;;;;;;;;;40593:328;40938:8;;;;;;;;;;;40937:9;:42;;;;;40950:25;:29;40976:2;40950:29;;;;;;;;;;;;;;;;;;;;;;;;;40937:42;:59;;;;;40983:13;;;;;;;;;;;40937:59;:114;;;;;41036:15;;41019:14;;:32;;;;:::i;:::-;41000:15;:51;;40937:114;:144;;;;;41056:19;:25;41076:4;41056:25;;;;;;;;;;;;;;;;;;;;;;;;;41055:26;40937:144;40934:204;;;41097:29;:27;:29::i;:::-;;40934:204;41151:12;41167:8;;;;;;;;;;;41166:9;41151:24;;41277:19;:25;41297:4;41277:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41306:19;:23;41326:2;41306:23;;;;;;;;;;;;;;;;;;;;;;;;;41277:52;41274:99;;;41356:5;41346:15;;41274:99;41386:12;41490:7;41487:948;;;41541:25;:29;41567:2;41541:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;41590:1;41574:13;;:17;41541:50;41537:748;;;41618:34;41648:3;41618:25;41629:13;;41618:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;41611:41;;41719:13;;41700:16;;41693:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41671:18;;:61;;;;;;;:::i;:::-;;;;;;;;41787:13;;41774:10;;41767:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;41751:12;;:49;;;;;;;:::i;:::-;;;;;;;;41867:13;;41848:16;;41841:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41819:18;;:61;;;;;;;:::i;:::-;;;;;;;;41537:748;;;41941:25;:31;41967:4;41941:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;41991:1;41976:12;;:16;41941:51;41938:347;;;42017:33;42046:3;42017:24;42028:12;;42017:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;42010:40;;42113:12;;42095:15;;42088:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42066:18;;:59;;;;;;;:::i;:::-;;;;;;;;42179:12;;42167:9;;42160:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;42144:12;;:47;;;;;;;:::i;:::-;;;;;;;;42257:12;;42239:15;;42232:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42210:18;;:59;;;;;;;:::i;:::-;;;;;;;;41938:347;41537:748;42312:1;42305:4;:8;42302:93;;;42337:42;42353:4;42367;42374;42337:15;:42::i;:::-;42302:93;42419:4;42409:14;;;;;:::i;:::-;;;41487:948;42448:33;42464:4;42470:2;42474:6;42448:15;:33::i;:::-;38355:4134;;;;38242:4247;;;;:::o;17567:193::-;17653:7;17686:1;17681;:6;;17689:12;17673:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17713:9;17729:1;17725;:5;;;;:::i;:::-;17713:17;;17751:1;17744:8;;;17567:193;;;;;:::o;37473:189::-;37590:5;37556:25;:31;37582:4;37556:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37648:5;37614:40;;37642:4;37614:40;;;;;;;;;;;;37473:189;;:::o;18020:473::-;18078:7;18328:1;18323;:6;18319:47;;;18353:1;18346:8;;;;18319:47;18379:9;18395:1;18391;:5;;;;:::i;:::-;18379:17;;18424:1;18419;18415;:5;;;;:::i;:::-;:10;18407:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18484:1;18477:8;;;18020:473;;;;;:::o;18970:132::-;19028:7;19055:39;19059:1;19062;19055:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;19048:46;;18970:132;;;;:::o;12844:575::-;13002:1;12984:20;;:6;:20;;;;12976:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13086:1;13065:23;;:9;:23;;;;13057:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13142:47;13163:6;13171:9;13182:6;13142:20;:47::i;:::-;13223:71;13245:6;13223:71;;;;;;;;;;;;;;;;;:9;:17;13233:6;13223:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13203:9;:17;13213:6;13203:17;;;;;;;;;;;;;;;:91;;;;13328:32;13353:6;13328:9;:20;13338:9;13328:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13305:9;:20;13315:9;13305:20;;;;;;;;;;;;;;;:55;;;;13393:9;13376:35;;13385:6;13376:35;;;13404:6;13376:35;;;;;;:::i;:::-;;;;;;;;12844:575;;;:::o;21629:81::-;21669:7;21696:6;;;;;;;;;;;21689:13;;21629:81;:::o;43637:1577::-;43676:23;43702:24;43720:4;43702:9;:24::i;:::-;43676:50;;43737:25;43807:12;;43786:18;;43765;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;43737:82;;43830:12;43878:1;43859:15;:20;:46;;;;43904:1;43883:17;:22;43859:46;43856:60;;;43908:7;;;;;43856:60;43971:2;43950:18;;:23;;;;:::i;:::-;43932:15;:41;43929:111;;;44026:2;44005:18;;:23;;;;:::i;:::-;43987:41;;43929:111;44102:23;44187:1;44167:17;44146:18;;44128:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;44102:86;;44199:26;44228:36;44248:15;44228;:19;;:36;;;;:::i;:::-;44199:65;;44278:25;44306:21;44278:49;;44341:36;44358:18;44341:16;:36::i;:::-;44392:18;44413:44;44439:17;44413:21;:25;;:44;;;;:::i;:::-;44392:65;;44471:23;44497:57;44536:17;44497:34;44512:18;;44497:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;44471:83;;44565:17;44585:51;44618:17;44585:28;44600:12;;44585:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;44565:71;;44653:23;44710:9;44692:15;44679:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;44653:66;;44757:1;44736:18;:22;;;;44790:1;44769:18;:22;;;;44817:1;44802:12;:16;;;;44853:9;;;;;;;;;;;44845:23;;44876:9;44845:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44832:58;;;;;44925:1;44907:15;:19;:42;;;;;44948:1;44930:15;:19;44907:42;44904:210;;;44965:46;44978:15;44995;44965:12;:46::i;:::-;45031:71;45046:18;45066:15;45083:18;;45031:71;;;;;;;;:::i;:::-;;;;;;;;44904:210;45151:15;;;;;;;;;;;45143:29;;45180:21;45143:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45130:76;;;;;43665:1549;;;;;;;;;;43637:1577;:::o;45679:769::-;45736:4;45772:15;45755:14;:32;;;;45843:28;45874:4;:14;;;45889:13;45874:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45843:60;;45954:20;45977:53;46024:5;45977:42;46002:16;;45977:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;45954:76;;46151:1;46136:12;:16;46132:109;;;46168:61;46184:13;46207:6;46216:12;46168:15;:61::i;:::-;46132:109;46317:19;46354:13;46317:51;;46379:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46406:12;;;;;;;;;;46436:4;46429:11;;;;;45679:769;:::o;19599:279::-;19685:7;19717:1;19713;:5;19720:12;19705:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19744:9;19760:1;19756;:5;;;;:::i;:::-;19744:17;;19869:1;19862:8;;;19599:279;;;;;:::o;16265:125::-;;;;:::o;17127:136::-;17185:7;17212:43;17216:1;17219;17212:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17205:50;;17127:136;;;;:::o;42498:597::-;42627:21;42665:1;42651:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42627:40;;42696:4;42678;42683:1;42678:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;42722:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42712:4;42717:1;42712:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;42758:62;42775:4;42790:15;42808:11;42758:8;:62::i;:::-;42860:15;:66;;;42941:11;42967:1;43011:4;43038;43058:15;42860:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42553:542;42498:597;:::o;43110:518::-;43258:62;43275:4;43290:15;43308:11;43258:8;:62::i;:::-;43364:15;:31;;;43403:9;43436:4;43456:11;43482:1;43525;29894:6;43594:15;43364:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43110:518;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:619::-;4593:6;4601;4609;4658:2;4646:9;4637:7;4633:23;4629:32;4626:119;;;4664:79;;:::i;:::-;4626:119;4784:1;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4755:117;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;5039:2;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5010:118;4516:619;;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:116::-;5641:21;5656:5;5641:21;:::i;:::-;5634:5;5631:32;5621:60;;5677:1;5674;5667:12;5621:60;5571:116;:::o;5693:133::-;5736:5;5774:6;5761:20;5752:29;;5790:30;5814:5;5790:30;:::i;:::-;5693:133;;;;:::o;5832:613::-;5906:6;5914;5922;5971:2;5959:9;5950:7;5946:23;5942:32;5939:119;;;5977:79;;:::i;:::-;5939:119;6097:1;6122:53;6167:7;6158:6;6147:9;6143:22;6122:53;:::i;:::-;6112:63;;6068:117;6224:2;6250:53;6295:7;6286:6;6275:9;6271:22;6250:53;:::i;:::-;6240:63;;6195:118;6352:2;6378:50;6420:7;6411:6;6400:9;6396:22;6378:50;:::i;:::-;6368:60;;6323:115;5832:613;;;;;:::o;6451:468::-;6516:6;6524;6573:2;6561:9;6552:7;6548:23;6544:32;6541:119;;;6579:79;;:::i;:::-;6541:119;6699:1;6724:53;6769:7;6760:6;6749:9;6745:22;6724:53;:::i;:::-;6714:63;;6670:117;6826:2;6852:50;6894:7;6885:6;6874:9;6870:22;6852:50;:::i;:::-;6842:60;;6797:115;6451:468;;;;;:::o;6925:619::-;7002:6;7010;7018;7067:2;7055:9;7046:7;7042:23;7038:32;7035:119;;;7073:79;;:::i;:::-;7035:119;7193:1;7218:53;7263:7;7254:6;7243:9;7239:22;7218:53;:::i;:::-;7208:63;;7164:117;7320:2;7346:53;7391:7;7382:6;7371:9;7367:22;7346:53;:::i;:::-;7336:63;;7291:118;7448:2;7474:53;7519:7;7510:6;7499:9;7495:22;7474:53;:::i;:::-;7464:63;;7419:118;6925:619;;;;;:::o;7550:323::-;7606:6;7655:2;7643:9;7634:7;7630:23;7626:32;7623:119;;;7661:79;;:::i;:::-;7623:119;7781:1;7806:50;7848:7;7839:6;7828:9;7824:22;7806:50;:::i;:::-;7796:60;;7752:114;7550:323;;;;:::o;7879:474::-;7947:6;7955;8004:2;7992:9;7983:7;7979:23;7975:32;7972:119;;;8010:79;;:::i;:::-;7972:119;8130:1;8155:53;8200:7;8191:6;8180:9;8176:22;8155:53;:::i;:::-;8145:63;;8101:117;8257:2;8283:53;8328:7;8319:6;8308:9;8304:22;8283:53;:::i;:::-;8273:63;;8228:118;7879:474;;;;;:::o;8359:180::-;8407:77;8404:1;8397:88;8504:4;8501:1;8494:15;8528:4;8525:1;8518:15;8545:320;8589:6;8626:1;8620:4;8616:12;8606:22;;8673:1;8667:4;8663:12;8694:18;8684:81;;8750:4;8742:6;8738:17;8728:27;;8684:81;8812:2;8804:6;8801:14;8781:18;8778:38;8775:84;;;8831:18;;:::i;:::-;8775:84;8596:269;8545:320;;;:::o;8871:182::-;9011:34;9007:1;8999:6;8995:14;8988:58;8871:182;:::o;9059:366::-;9201:3;9222:67;9286:2;9281:3;9222:67;:::i;:::-;9215:74;;9298:93;9387:3;9298:93;:::i;:::-;9416:2;9411:3;9407:12;9400:19;;9059:366;;;:::o;9431:419::-;9597:4;9635:2;9624:9;9620:18;9612:26;;9684:9;9678:4;9674:20;9670:1;9659:9;9655:17;9648:47;9712:131;9838:4;9712:131;:::i;:::-;9704:139;;9431:419;;;:::o;9856:180::-;9904:77;9901:1;9894:88;10001:4;9998:1;9991:15;10025:4;10022:1;10015:15;10042:348;10082:7;10105:20;10123:1;10105:20;:::i;:::-;10100:25;;10139:20;10157:1;10139:20;:::i;:::-;10134:25;;10327:1;10259:66;10255:74;10252:1;10249:81;10244:1;10237:9;10230:17;10226:105;10223:131;;;10334:18;;:::i;:::-;10223:131;10382:1;10379;10375:9;10364:20;;10042:348;;;;:::o;10396:180::-;10444:77;10441:1;10434:88;10541:4;10538:1;10531:15;10565:4;10562:1;10555:15;10582:185;10622:1;10639:20;10657:1;10639:20;:::i;:::-;10634:25;;10673:20;10691:1;10673:20;:::i;:::-;10668:25;;10712:1;10702:35;;10717:18;;:::i;:::-;10702:35;10759:1;10756;10752:9;10747:14;;10582:185;;;;:::o;10773:234::-;10913:34;10909:1;10901:6;10897:14;10890:58;10982:17;10977:2;10969:6;10965:15;10958:42;10773:234;:::o;11013:366::-;11155:3;11176:67;11240:2;11235:3;11176:67;:::i;:::-;11169:74;;11252:93;11341:3;11252:93;:::i;:::-;11370:2;11365:3;11361:12;11354:19;;11013:366;;;:::o;11385:419::-;11551:4;11589:2;11578:9;11574:18;11566:26;;11638:9;11632:4;11628:20;11624:1;11613:9;11609:17;11602:47;11666:131;11792:4;11666:131;:::i;:::-;11658:139;;11385:419;;;:::o;11810:238::-;11950:34;11946:1;11938:6;11934:14;11927:58;12019:21;12014:2;12006:6;12002:15;11995:46;11810:238;:::o;12054:366::-;12196:3;12217:67;12281:2;12276:3;12217:67;:::i;:::-;12210:74;;12293:93;12382:3;12293:93;:::i;:::-;12411:2;12406:3;12402:12;12395:19;;12054:366;;;:::o;12426:419::-;12592:4;12630:2;12619:9;12615:18;12607:26;;12679:9;12673:4;12669:20;12665:1;12654:9;12650:17;12643:47;12707:131;12833:4;12707:131;:::i;:::-;12699:139;;12426:419;;;:::o;12851:235::-;12991:34;12987:1;12979:6;12975:14;12968:58;13060:18;13055:2;13047:6;13043:15;13036:43;12851:235;:::o;13092:366::-;13234:3;13255:67;13319:2;13314:3;13255:67;:::i;:::-;13248:74;;13331:93;13420:3;13331:93;:::i;:::-;13449:2;13444:3;13440:12;13433:19;;13092:366;;;:::o;13464:419::-;13630:4;13668:2;13657:9;13653:18;13645:26;;13717:9;13711:4;13707:20;13703:1;13692:9;13688:17;13681:47;13745:131;13871:4;13745:131;:::i;:::-;13737:139;;13464:419;;;:::o;13889:305::-;13929:3;13948:20;13966:1;13948:20;:::i;:::-;13943:25;;13982:20;14000:1;13982:20;:::i;:::-;13977:25;;14136:1;14068:66;14064:74;14061:1;14058:81;14055:107;;;14142:18;;:::i;:::-;14055:107;14186:1;14183;14179:9;14172:16;;13889:305;;;;:::o;14200:244::-;14340:34;14336:1;14328:6;14324:14;14317:58;14409:27;14404:2;14396:6;14392:15;14385:52;14200:244;:::o;14450:366::-;14592:3;14613:67;14677:2;14672:3;14613:67;:::i;:::-;14606:74;;14689:93;14778:3;14689:93;:::i;:::-;14807:2;14802:3;14798:12;14791:19;;14450:366;;;:::o;14822:419::-;14988:4;15026:2;15015:9;15011:18;15003:26;;15075:9;15069:4;15065:20;15061:1;15050:9;15046:17;15039:47;15103:131;15229:4;15103:131;:::i;:::-;15095:139;;14822:419;;;:::o;15247:223::-;15387:34;15383:1;15375:6;15371:14;15364:58;15456:6;15451:2;15443:6;15439:15;15432:31;15247:223;:::o;15476:366::-;15618:3;15639:67;15703:2;15698:3;15639:67;:::i;:::-;15632:74;;15715:93;15804:3;15715:93;:::i;:::-;15833:2;15828:3;15824:12;15817:19;;15476:366;;;:::o;15848:419::-;16014:4;16052:2;16041:9;16037:18;16029:26;;16101:9;16095:4;16091:20;16087:1;16076:9;16072:17;16065:47;16129:131;16255:4;16129:131;:::i;:::-;16121:139;;15848:419;;;:::o;16273:240::-;16413:34;16409:1;16401:6;16397:14;16390:58;16482:23;16477:2;16469:6;16465:15;16458:48;16273:240;:::o;16519:366::-;16661:3;16682:67;16746:2;16741:3;16682:67;:::i;:::-;16675:74;;16758:93;16847:3;16758:93;:::i;:::-;16876:2;16871:3;16867:12;16860:19;;16519:366;;;:::o;16891:419::-;17057:4;17095:2;17084:9;17080:18;17072:26;;17144:9;17138:4;17134:20;17130:1;17119:9;17115:17;17108:47;17172:131;17298:4;17172:131;:::i;:::-;17164:139;;16891:419;;;:::o;17316:239::-;17456:34;17452:1;17444:6;17440:14;17433:58;17525:22;17520:2;17512:6;17508:15;17501:47;17316:239;:::o;17561:366::-;17703:3;17724:67;17788:2;17783:3;17724:67;:::i;:::-;17717:74;;17800:93;17889:3;17800:93;:::i;:::-;17918:2;17913:3;17909:12;17902:19;;17561:366;;;:::o;17933:419::-;18099:4;18137:2;18126:9;18122:18;18114:26;;18186:9;18180:4;18176:20;18172:1;18161:9;18157:17;18150:47;18214:131;18340:4;18214:131;:::i;:::-;18206:139;;17933:419;;;:::o;18358:225::-;18498:34;18494:1;18486:6;18482:14;18475:58;18567:8;18562:2;18554:6;18550:15;18543:33;18358:225;:::o;18589:366::-;18731:3;18752:67;18816:2;18811:3;18752:67;:::i;:::-;18745:74;;18828:93;18917:3;18828:93;:::i;:::-;18946:2;18941:3;18937:12;18930:19;;18589:366;;;:::o;18961:419::-;19127:4;19165:2;19154:9;19150:18;19142:26;;19214:9;19208:4;19204:20;19200:1;19189:9;19185:17;19178:47;19242:131;19368:4;19242:131;:::i;:::-;19234:139;;18961:419;;;:::o;19386:182::-;19526:34;19522:1;19514:6;19510:14;19503:58;19386:182;:::o;19574:366::-;19716:3;19737:67;19801:2;19796:3;19737:67;:::i;:::-;19730:74;;19813:93;19902:3;19813:93;:::i;:::-;19931:2;19926:3;19922:12;19915:19;;19574:366;;;:::o;19946:419::-;20112:4;20150:2;20139:9;20135:18;20127:26;;20199:9;20193:4;20189:20;20185:1;20174:9;20170:17;20163:47;20227:131;20353:4;20227:131;:::i;:::-;20219:139;;19946:419;;;:::o;20371:229::-;20511:34;20507:1;20499:6;20495:14;20488:58;20580:12;20575:2;20567:6;20563:15;20556:37;20371:229;:::o;20606:366::-;20748:3;20769:67;20833:2;20828:3;20769:67;:::i;:::-;20762:74;;20845:93;20934:3;20845:93;:::i;:::-;20963:2;20958:3;20954:12;20947:19;;20606:366;;;:::o;20978:419::-;21144:4;21182:2;21171:9;21167:18;21159:26;;21231:9;21225:4;21221:20;21217:1;21206:9;21202:17;21195:47;21259:131;21385:4;21259:131;:::i;:::-;21251:139;;20978:419;;;:::o;21403:118::-;21490:24;21508:5;21490:24;:::i;:::-;21485:3;21478:37;21403:118;;:::o;21527:222::-;21620:4;21658:2;21647:9;21643:18;21635:26;;21671:71;21739:1;21728:9;21724:17;21715:6;21671:71;:::i;:::-;21527:222;;;;:::o;21755:143::-;21812:5;21843:6;21837:13;21828:22;;21859:33;21886:5;21859:33;:::i;:::-;21755:143;;;;:::o;21904:351::-;21974:6;22023:2;22011:9;22002:7;21998:23;21994:32;21991:119;;;22029:79;;:::i;:::-;21991:119;22149:1;22174:64;22230:7;22221:6;22210:9;22206:22;22174:64;:::i;:::-;22164:74;;22120:128;21904:351;;;;:::o;22261:177::-;22401:29;22397:1;22389:6;22385:14;22378:53;22261:177;:::o;22444:366::-;22586:3;22607:67;22671:2;22666:3;22607:67;:::i;:::-;22600:74;;22683:93;22772:3;22683:93;:::i;:::-;22801:2;22796:3;22792:12;22785:19;;22444:366;;;:::o;22816:419::-;22982:4;23020:2;23009:9;23005:18;22997:26;;23069:9;23063:4;23059:20;23055:1;23044:9;23040:17;23033:47;23097:131;23223:4;23097:131;:::i;:::-;23089:139;;22816:419;;;:::o;23241:223::-;23381:34;23377:1;23369:6;23365:14;23358:58;23450:6;23445:2;23437:6;23433:15;23426:31;23241:223;:::o;23470:366::-;23612:3;23633:67;23697:2;23692:3;23633:67;:::i;:::-;23626:74;;23709:93;23798:3;23709:93;:::i;:::-;23827:2;23822:3;23818:12;23811:19;;23470:366;;;:::o;23842:419::-;24008:4;24046:2;24035:9;24031:18;24023:26;;24095:9;24089:4;24085:20;24081:1;24070:9;24066:17;24059:47;24123:131;24249:4;24123:131;:::i;:::-;24115:139;;23842:419;;;:::o;24267:221::-;24407:34;24403:1;24395:6;24391:14;24384:58;24476:4;24471:2;24463:6;24459:15;24452:29;24267:221;:::o;24494:366::-;24636:3;24657:67;24721:2;24716:3;24657:67;:::i;:::-;24650:74;;24733:93;24822:3;24733:93;:::i;:::-;24851:2;24846:3;24842:12;24835:19;;24494:366;;;:::o;24866:419::-;25032:4;25070:2;25059:9;25055:18;25047:26;;25119:9;25113:4;25109:20;25105:1;25094:9;25090:17;25083:47;25147:131;25273:4;25147:131;:::i;:::-;25139:139;;24866:419;;;:::o;25291:224::-;25431:34;25427:1;25419:6;25415:14;25408:58;25500:7;25495:2;25487:6;25483:15;25476:32;25291:224;:::o;25521:366::-;25663:3;25684:67;25748:2;25743:3;25684:67;:::i;:::-;25677:74;;25760:93;25849:3;25760:93;:::i;:::-;25878:2;25873:3;25869:12;25862:19;;25521:366;;;:::o;25893:419::-;26059:4;26097:2;26086:9;26082:18;26074:26;;26146:9;26140:4;26136:20;26132:1;26121:9;26117:17;26110:47;26174:131;26300:4;26174:131;:::i;:::-;26166:139;;25893:419;;;:::o;26318:222::-;26458:34;26454:1;26446:6;26442:14;26435:58;26527:5;26522:2;26514:6;26510:15;26503:30;26318:222;:::o;26546:366::-;26688:3;26709:67;26773:2;26768:3;26709:67;:::i;:::-;26702:74;;26785:93;26874:3;26785:93;:::i;:::-;26903:2;26898:3;26894:12;26887:19;;26546:366;;;:::o;26918:419::-;27084:4;27122:2;27111:9;27107:18;27099:26;;27171:9;27165:4;27161:20;27157:1;27146:9;27142:17;27135:47;27199:131;27325:4;27199:131;:::i;:::-;27191:139;;26918:419;;;:::o;27343:172::-;27483:24;27479:1;27471:6;27467:14;27460:48;27343:172;:::o;27521:366::-;27663:3;27684:67;27748:2;27743:3;27684:67;:::i;:::-;27677:74;;27760:93;27849:3;27760:93;:::i;:::-;27878:2;27873:3;27869:12;27862:19;;27521:366;;;:::o;27893:419::-;28059:4;28097:2;28086:9;28082:18;28074:26;;28146:9;28140:4;28136:20;28132:1;28121:9;28117:17;28110:47;28174:131;28300:4;28174:131;:::i;:::-;28166:139;;27893:419;;;:::o;28318:297::-;28458:34;28454:1;28446:6;28442:14;28435:58;28527:34;28522:2;28514:6;28510:15;28503:59;28596:11;28591:2;28583:6;28579:15;28572:36;28318:297;:::o;28621:366::-;28763:3;28784:67;28848:2;28843:3;28784:67;:::i;:::-;28777:74;;28860:93;28949:3;28860:93;:::i;:::-;28978:2;28973:3;28969:12;28962:19;;28621:366;;;:::o;28993:419::-;29159:4;29197:2;29186:9;29182:18;29174:26;;29246:9;29240:4;29236:20;29232:1;29221:9;29217:17;29210:47;29274:131;29400:4;29274:131;:::i;:::-;29266:139;;28993:419;;;:::o;29418:240::-;29558:34;29554:1;29546:6;29542:14;29535:58;29627:23;29622:2;29614:6;29610:15;29603:48;29418:240;:::o;29664:366::-;29806:3;29827:67;29891:2;29886:3;29827:67;:::i;:::-;29820:74;;29903:93;29992:3;29903:93;:::i;:::-;30021:2;30016:3;30012:12;30005:19;;29664:366;;;:::o;30036:419::-;30202:4;30240:2;30229:9;30225:18;30217:26;;30289:9;30283:4;30279:20;30275:1;30264:9;30260:17;30253:47;30317:131;30443:4;30317:131;:::i;:::-;30309:139;;30036:419;;;:::o;30461:169::-;30601:21;30597:1;30589:6;30585:14;30578:45;30461:169;:::o;30636:366::-;30778:3;30799:67;30863:2;30858:3;30799:67;:::i;:::-;30792:74;;30875:93;30964:3;30875:93;:::i;:::-;30993:2;30988:3;30984:12;30977:19;;30636:366;;;:::o;31008:419::-;31174:4;31212:2;31201:9;31197:18;31189:26;;31261:9;31255:4;31251:20;31247:1;31236:9;31232:17;31225:47;31289:131;31415:4;31289:131;:::i;:::-;31281:139;;31008:419;;;:::o;31433:241::-;31573:34;31569:1;31561:6;31557:14;31550:58;31642:24;31637:2;31629:6;31625:15;31618:49;31433:241;:::o;31680:366::-;31822:3;31843:67;31907:2;31902:3;31843:67;:::i;:::-;31836:74;;31919:93;32008:3;31919:93;:::i;:::-;32037:2;32032:3;32028:12;32021:19;;31680:366;;;:::o;32052:419::-;32218:4;32256:2;32245:9;32241:18;32233:26;;32305:9;32299:4;32295:20;32291:1;32280:9;32276:17;32269:47;32333:131;32459:4;32333:131;:::i;:::-;32325:139;;32052:419;;;:::o;32477:191::-;32517:4;32537:20;32555:1;32537:20;:::i;:::-;32532:25;;32571:20;32589:1;32571:20;:::i;:::-;32566:25;;32610:1;32607;32604:8;32601:34;;;32615:18;;:::i;:::-;32601:34;32660:1;32657;32653:9;32645:17;;32477:191;;;;:::o;32674:220::-;32814:34;32810:1;32802:6;32798:14;32791:58;32883:3;32878:2;32870:6;32866:15;32859:28;32674:220;:::o;32900:366::-;33042:3;33063:67;33127:2;33122:3;33063:67;:::i;:::-;33056:74;;33139:93;33228:3;33139:93;:::i;:::-;33257:2;33252:3;33248:12;33241:19;;32900:366;;;:::o;33272:419::-;33438:4;33476:2;33465:9;33461:18;33453:26;;33525:9;33519:4;33515:20;33511:1;33500:9;33496:17;33489:47;33553:131;33679:4;33553:131;:::i;:::-;33545:139;;33272:419;;;:::o;33697:147::-;33798:11;33835:3;33820:18;;33697:147;;;;:::o;33850:114::-;;:::o;33970:398::-;34129:3;34150:83;34231:1;34226:3;34150:83;:::i;:::-;34143:90;;34242:93;34331:3;34242:93;:::i;:::-;34360:1;34355:3;34351:11;34344:18;;33970:398;;;:::o;34374:379::-;34558:3;34580:147;34723:3;34580:147;:::i;:::-;34573:154;;34744:3;34737:10;;34374:379;;;:::o;34759:442::-;34908:4;34946:2;34935:9;34931:18;34923:26;;34959:71;35027:1;35016:9;35012:17;35003:6;34959:71;:::i;:::-;35040:72;35108:2;35097:9;35093:18;35084:6;35040:72;:::i;:::-;35122;35190:2;35179:9;35175:18;35166:6;35122:72;:::i;:::-;34759:442;;;;;;:::o;35207:180::-;35255:77;35252:1;35245:88;35352:4;35349:1;35342:15;35376:4;35373:1;35366:15;35393:180;35441:77;35438:1;35431:88;35538:4;35535:1;35528:15;35562:4;35559:1;35552:15;35579:143;35636:5;35667:6;35661:13;35652:22;;35683:33;35710:5;35683:33;:::i;:::-;35579:143;;;;:::o;35728:351::-;35798:6;35847:2;35835:9;35826:7;35822:23;35818:32;35815:119;;;35853:79;;:::i;:::-;35815:119;35973:1;35998:64;36054:7;36045:6;36034:9;36030:22;35998:64;:::i;:::-;35988:74;;35944:128;35728:351;;;;:::o;36085:85::-;36130:7;36159:5;36148:16;;36085:85;;;:::o;36176:60::-;36204:3;36225:5;36218:12;;36176:60;;;:::o;36242:158::-;36300:9;36333:61;36351:42;36360:32;36386:5;36360:32;:::i;:::-;36351:42;:::i;:::-;36333:61;:::i;:::-;36320:74;;36242:158;;;:::o;36406:147::-;36501:45;36540:5;36501:45;:::i;:::-;36496:3;36489:58;36406:147;;:::o;36559:114::-;36626:6;36660:5;36654:12;36644:22;;36559:114;;;:::o;36679:184::-;36778:11;36812:6;36807:3;36800:19;36852:4;36847:3;36843:14;36828:29;;36679:184;;;;:::o;36869:132::-;36936:4;36959:3;36951:11;;36989:4;36984:3;36980:14;36972:22;;36869:132;;;:::o;37007:108::-;37084:24;37102:5;37084:24;:::i;:::-;37079:3;37072:37;37007:108;;:::o;37121:179::-;37190:10;37211:46;37253:3;37245:6;37211:46;:::i;:::-;37289:4;37284:3;37280:14;37266:28;;37121:179;;;;:::o;37306:113::-;37376:4;37408;37403:3;37399:14;37391:22;;37306:113;;;:::o;37455:732::-;37574:3;37603:54;37651:5;37603:54;:::i;:::-;37673:86;37752:6;37747:3;37673:86;:::i;:::-;37666:93;;37783:56;37833:5;37783:56;:::i;:::-;37862:7;37893:1;37878:284;37903:6;37900:1;37897:13;37878:284;;;37979:6;37973:13;38006:63;38065:3;38050:13;38006:63;:::i;:::-;37999:70;;38092:60;38145:6;38092:60;:::i;:::-;38082:70;;37938:224;37925:1;37922;37918:9;37913:14;;37878:284;;;37882:14;38178:3;38171:10;;37579:608;;;37455:732;;;;:::o;38193:831::-;38456:4;38494:3;38483:9;38479:19;38471:27;;38508:71;38576:1;38565:9;38561:17;38552:6;38508:71;:::i;:::-;38589:80;38665:2;38654:9;38650:18;38641:6;38589:80;:::i;:::-;38716:9;38710:4;38706:20;38701:2;38690:9;38686:18;38679:48;38744:108;38847:4;38838:6;38744:108;:::i;:::-;38736:116;;38862:72;38930:2;38919:9;38915:18;38906:6;38862:72;:::i;:::-;38944:73;39012:3;39001:9;38997:19;38988:6;38944:73;:::i;:::-;38193:831;;;;;;;;:::o;39030:807::-;39279:4;39317:3;39306:9;39302:19;39294:27;;39331:71;39399:1;39388:9;39384:17;39375:6;39331:71;:::i;:::-;39412:72;39480:2;39469:9;39465:18;39456:6;39412:72;:::i;:::-;39494:80;39570:2;39559:9;39555:18;39546:6;39494:80;:::i;:::-;39584;39660:2;39649:9;39645:18;39636:6;39584:80;:::i;:::-;39674:73;39742:3;39731:9;39727:19;39718:6;39674:73;:::i;:::-;39757;39825:3;39814:9;39810:19;39801:6;39757:73;:::i;:::-;39030:807;;;;;;;;;:::o;39843:663::-;39931:6;39939;39947;39996:2;39984:9;39975:7;39971:23;39967:32;39964:119;;;40002:79;;:::i;:::-;39964:119;40122:1;40147:64;40203:7;40194:6;40183:9;40179:22;40147:64;:::i;:::-;40137:74;;40093:128;40260:2;40286:64;40342:7;40333:6;40322:9;40318:22;40286:64;:::i;:::-;40276:74;;40231:129;40399:2;40425:64;40481:7;40472:6;40461:9;40457:22;40425:64;:::i;:::-;40415:74;;40370:129;39843:663;;;;;:::o

Swarm Source

ipfs://e97adc75461c353719bab5f9d2a710bd3c62f936ad96ae220656c0d8b66c778b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.