ETH Price: $3,481.65 (+0.76%)

Token

Left Facing Pebbles (LEFT)
 

Overview

Max Total Supply

1,000,000,000,000 LEFT

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,163,018,369.891854877 LEFT

Value
$0.00
0xf4368D827b131Df7A771f1Cd66d8B66eDcDa838a
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:
LEFT

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-25
*/

pragma solidity ^0.8.3;
// SPDX-License-Identifier: Unlicensed

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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);
}

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
    * @dev Returns the addition of two unsigned integers, with an overflow flag.
    *
    * _Available since v3.4._
    */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
    * @dev Returns the substraction of two unsigned integers, with an overflow flag.
    *
    * _Available since v3.4._
    */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
    * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
    *
    * _Available since v3.4._
    */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
    * @dev Returns the division of two unsigned integers, with a division by zero flag.
    *
    * _Available since v3.4._
    */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
    * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
    *
    * _Available since v3.4._
    */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
    * @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) {
        return a + b;
    }

    /**
    * @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 a - b;
    }

    /**
    * @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) {
        return a * b;
    }

    /**
    * @dev Returns the integer division of two unsigned integers, reverting on
    * division by zero. The result is rounded towards zero.
    *
    * Counterpart to Solidity's `/` operator.
    *
    * Requirements:
    *
    * - The divisor cannot be zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
    * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
    * reverting 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 a % b;
    }

    /**
    * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
    * overflow (when the result is negative).
    *
    * CAUTION: This function is deprecated because it requires allocating memory for the error
    * message unnecessarily. For custom revert reasons use {trySub}.
    *
    * Counterpart to Solidity's `-` operator.
    *
    * Requirements:
    *
    * - Subtraction cannot overflow.
    */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
    * @dev Returns the integer division of two unsigned integers, reverting with custom message on
    * division by zero. The result is rounded towards 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).
    *
    * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
    * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
    * reverting with custom message when dividing by zero.
    *
    * CAUTION: This function is deprecated because it requires allocating memory for the error
    * message unnecessarily. For custom revert reasons use {tryMod}.
    *
    * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
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;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
    * @dev Returns true if `account` is a contract.
    *
    * [IMPORTANT]
    * ====
    * It is unsafe to assume that an address for which this function returns
    * false is an externally-owned account (EOA) and not a contract.
    *
    * Among others, `isContract` will return false for the following
    * types of addresses:
    *
    *  - an externally-owned account
    *  - a contract in construction
    *  - an address where a contract will be created
    *  - an address where a contract lived, but was destroyed
    * ====
    */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
    * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
    * `recipient`, forwarding all available gas and reverting on errors.
    *
    * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
    * of certain opcodes, possibly making contracts go over the 2300 gas limit
    * imposed by `transfer`, making them unable to receive funds via
    * `transfer`. {sendValue} removes this limitation.
    *
    * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
    *
    * IMPORTANT: because control is transferred to `recipient`, care must be
    * taken to not create reentrancy vulnerabilities. Consider using
    * {ReentrancyGuard} or the
    * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
    */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
    * @dev Performs a Solidity function call using a low level `call`. A
    * plain`call` is an unsafe replacement for a function call: use this
    * function instead.
    *
    * If `target` reverts with a revert reason, it is bubbled up by this
    * function (like regular Solidity function calls).
    *
    * Returns the raw returned data. To convert to the expected return value,
    * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
    *
    * Requirements:
    *
    * - `target` must be a contract.
    * - calling `target` with `data` must not revert.
    *
    * _Available since v3.1._
    */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
    * `errorMessage` as a fallback revert reason when `target` reverts.
    *
    * _Available since v3.1._
    */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
    * but also transferring `value` wei to `target`.
    *
    * Requirements:
    *
    * - the calling contract must have an ETH balance of at least `value`.
    * - the called Solidity function must be `payable`.
    *
    * _Available since v3.1._
    */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
    * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
    * with `errorMessage` as a fallback revert reason when `target` reverts.
    *
    * _Available since v3.1._
    */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
    * but performing a static call.
    *
    * _Available since v3.3._
    */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
    * but performing a static call.
    *
    * _Available since v3.3._
    */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
    * but performing a delegate call.
    *
    * _Available since v3.4._
    */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
    * but performing a delegate call.
    *
    * _Available since v3.4._
    */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract 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 () {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
    * @dev Returns the address of the current owner.
    */
    function owner() public view virtual 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;
    }
}

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 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 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 implementation
contract LEFT is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    uint8 private _decimals = 9;

    // 
    string private _name = "Left Facing Pebbles";                               // Name
    string private _symbol = "LEFT";                                            // Symbol
    uint256 private _tTotal = 1000 * 10**9 * 10**uint256(_decimals);            // Total Limited Supply

    // % to holders
    uint256 public defaultTaxFee = 2;
    uint256 public _taxFee = defaultTaxFee;
    uint256 private _previousTaxFee = _taxFee;

    // % to swap & send to marketing wallet
    uint256 public defaultMarketingFee = 6;
    uint256 public _marketingFee = defaultMarketingFee;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 public _marketingFee4Sellers = 10;
    bool public feesOnSellersAndBuyers = true;

    uint256 public _maxTxAmount = 1000 * 10**9 * 10**uint256(_decimals);
    uint256 public numTokensToExchangeForMarketing = _tTotal.div(100).div(100);
    address payable public marketingWallet = payable(0xE8e757A87A8aF6D8575991629E32983c2d14FD37);   // Marketing

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;

    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tFeeTotal;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndSend;
    bool public SwapAndSendEnabled = true;

    event SwapAndSendEnabledUpdated(bool enabled);

    modifier lockTheSwap {
        inSwapAndSend = true;
        _;
        inSwapAndSend = false;
    }

    constructor () {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner() {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner() {
        _isExcludedFromFee[account] = false;
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _marketingFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousMarketingFee = _marketingFee;

        _taxFee = 0;
        _marketingFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _marketingFee = _previousMarketingFee;
    }

    //to recieve ETH
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tMarketing, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketing);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tMarketing = calculateMarketingFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tMarketing);
        return (tTransferAmount, tFee, tMarketing);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tMarketing, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rMarketing = tMarketing.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rMarketing);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeMarketing(uint256 tMarketing) private {
        uint256 currentRate =  _getRate();
        uint256 rMarketing = tMarketing.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rMarketing);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tMarketing);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }

    function calculateMarketingFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_marketingFee).div(
            10**2
        );
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + send lock?
        // also, don't get caught in a circular sending event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >= numTokensToExchangeForMarketing;

        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }

        if (
            overMinTokenBalance &&
            !inSwapAndSend &&
            from != uniswapV2Pair &&
            SwapAndSendEnabled
        ) {
            SwapAndSend(contractTokenBalance);
        }

        if(feesOnSellersAndBuyers) {
            setFees(to);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        _tokenTransfer(from,to,amount,takeFee);
    }

    function setFees(address recipient) private {
        _taxFee = defaultTaxFee;
        _marketingFee = defaultMarketingFee;
        if (recipient == uniswapV2Pair) { // sell
            _marketingFee = _marketingFee4Sellers;
        }
    }

    function SwapAndSend(uint256 contractTokenBalance) private lockTheSwap {
        // 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), contractTokenBalance);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            marketingWallet.transfer(contractETHBalance);
        }
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeMarketing(tMarketing);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function setDefaultMarketingFee(uint256 marketingFee) external onlyOwner() {
        defaultMarketingFee = marketingFee;
    }

    function setMarketingFee4Sellers(uint256 marketingFee4Sellers) external onlyOwner() {
        _marketingFee4Sellers = marketingFee4Sellers;
    }

    function setFeesOnSellersAndBuyers(bool _enabled) public onlyOwner() {
        feesOnSellersAndBuyers = _enabled;
    }

    function setSwapAndSendEnabled(bool _enabled) public onlyOwner() {
        SwapAndSendEnabled = _enabled;
        emit SwapAndSendEnabledUpdated(_enabled);
    }

    function setnumTokensToExchangeForMarketing(uint256 _numTokensToExchangeForMarketing) public onlyOwner() {
        numTokensToExchangeForMarketing = _numTokensToExchangeForMarketing;
    }

    function _setMarketingWallet(address payable wallet) external onlyOwner() {
        marketingWallet = wallet;
    }

    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }
}

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":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndSendEnabledUpdated","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"},{"inputs":[],"name":"SwapAndSendEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee4Sellers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"defaultMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesOnSellersAndBuyers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensToExchangeForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setDefaultMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeesOnSellersAndBuyers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee4Sellers","type":"uint256"}],"name":"setMarketingFee4Sellers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndSendEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokensToExchangeForMarketing","type":"uint256"}],"name":"setnumTokensToExchangeForMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526009600060146101000a81548160ff021916908360ff1602179055506040518060400160405280601381526020017f4c65667420466163696e6720506562626c657300000000000000000000000000815250600190805190602001906200006d92919062000707565b506040518060400160405280600481526020017f4c4546540000000000000000000000000000000000000000000000000000000081525060029080519060200190620000bb92919062000707565b50600060149054906101000a900460ff1660ff16600a620000dd9190620008f9565b64e8d4a51000620000ef919062000a36565b60035560026004556004546005556005546006556006600755600754600855600854600955600a80556001600b60006101000a81548160ff021916908315150217905550600060149054906101000a900460ff1660ff16600a620001549190620008f9565b64e8d4a5100062000166919062000a36565b600c55620001a060646200018c6064600354620006be60201b6200211e1790919060201c565b620006be60201b6200211e1790919060201c565b600d5573e8e757a87a8af6d8575991629e32983c2d14fd37600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003546000196200020a919062000b46565b60001962000219919062000a97565b6016556001601760016101000a81548160ff0219169083151502179055503480156200024457600080fd5b5062000255620006d660201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3601654600f600062000326620006d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c457600080fd5b505afa158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff9190620007ce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046257600080fd5b505afa15801562000477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049d9190620007ce565b6040518363ffffffff1660e01b8152600401620004bc9291906200081c565b602060405180830381600087803b158015620004d757600080fd5b505af1158015620004ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005129190620007ce565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060016012600062000595620006de60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200064e620006d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620006af919062000849565b60405180910390a35062000c32565b60008183620006ce919062000866565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620007159062000b10565b90600052602060002090601f01602090048101928262000739576000855562000785565b82601f106200075457805160ff191683800117855562000785565b8280016001018555821562000785579182015b828111156200078457825182559160200191906001019062000767565b5b50905062000794919062000798565b5090565b5b80821115620007b357600081600090555060010162000799565b5090565b600081519050620007c88162000c18565b92915050565b600060208284031215620007e157600080fd5b6000620007f184828501620007b7565b91505092915050565b620008058162000ad2565b82525050565b620008168162000b06565b82525050565b6000604082019050620008336000830185620007fa565b620008426020830184620007fa565b9392505050565b60006020820190506200086060008301846200080b565b92915050565b6000620008738262000b06565b9150620008808362000b06565b92508262000893576200089262000bad565b5b828204905092915050565b6000808291508390505b6001851115620008f057808604811115620008c857620008c762000b7e565b5b6001851615620008d85780820291505b8081029050620008e88562000c0b565b9450620008a8565b94509492505050565b6000620009068262000b06565b9150620009138362000b06565b9250620009427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200094a565b905092915050565b6000826200095c576001905062000a2f565b816200096c576000905062000a2f565b81600181146200098557600281146200099057620009c6565b600191505062000a2f565b60ff841115620009a557620009a462000b7e565b5b8360020a915084821115620009bf57620009be62000b7e565b5b5062000a2f565b5060208310610133831016604e8410600b841016171562000a005782820a905083811115620009fa57620009f962000b7e565b5b62000a2f565b62000a0f84848460016200089e565b9250905081840481111562000a295762000a2862000b7e565b5b81810290505b9392505050565b600062000a438262000b06565b915062000a508362000b06565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a8c5762000a8b62000b7e565b5b828202905092915050565b600062000aa48262000b06565b915062000ab18362000b06565b92508282101562000ac75762000ac662000b7e565b5b828203905092915050565b600062000adf8262000ae6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000b2957607f821691505b6020821081141562000b405762000b3f62000bdc565b5b50919050565b600062000b538262000b06565b915062000b608362000b06565b92508262000b735762000b7262000bad565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b62000c238162000ad2565b811462000c2f57600080fd5b50565b60805160601c60a05160601c614d6762000c816000396000818161144e015281816125340152612b01015260008181610ac5015281816128860152818161299c01526129c30152614d676000f3fe6080604052600436106102555760003560e01c806370a0823111610139578063a3864430116100b6578063cba851b31161007a578063cba851b3146108fd578063d54994db14610928578063dab522a814610951578063dd62ed3e1461097a578063ea2f0b37146109b7578063f2fde38b146109e05761025c565b8063a386443014610802578063a457c2d71461082d578063a9059cbb1461086a578063bc951f98146108a7578063c537bd8f146108d25761025c565b80638da5cb5b116100fd5780638da5cb5b1461072d57806395d89b41146107585780639f64621414610783578063a062e3ba146107ae578063a08f6760146107d95761025c565b806370a0823114610646578063715018a61461068357806375f0a8741461069a5780637d1db4a5146106c557806388f82020146106f05761025c565b80632d838119116101d2578063437823ec11610196578063437823ec146105265780634549b0391461054f57806349bd5a5e1461058c57806352390c02146105b75780635342acb4146105e057806357e0a1d01461061d5761025c565b80632d8381191461042d578063313ce5671461046a5780633685d4191461049557806339509351146104be5780633b124fe7146104fb5761025c565b80631bbae6e0116102195780631bbae6e01461034a5780631ff53b601461037357806322976e0d1461039c57806323b872dd146103c75780632663236f146104045761025c565b806306fdde0314610261578063095ea7b31461028c57806313114a9d146102c95780631694505e146102f457806318160ddd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a09565b6040516102839190614430565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190614052565b610a9b565b6040516102c091906143fa565b60405180910390f35b3480156102d557600080fd5b506102de610ab9565b6040516102eb91906145b2565b60405180910390f35b34801561030057600080fd5b50610309610ac3565b6040516103169190614415565b60405180910390f35b34801561032b57600080fd5b50610334610ae7565b60405161034191906145b2565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c91906140b7565b610af1565b005b34801561037f57600080fd5b5061039a60048036038101906103959190613f9e565b610b77565b005b3480156103a857600080fd5b506103b1610c37565b6040516103be91906145b2565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190614003565b610c3d565b6040516103fb91906143fa565b60405180910390f35b34801561041057600080fd5b5061042b6004803603810190610426919061408e565b610d16565b005b34801561043957600080fd5b50610454600480360381019061044f91906140b7565b610de6565b60405161046191906145b2565b60405180910390f35b34801561047657600080fd5b5061047f610e54565b60405161048c9190614627565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190613f4c565b610e6a565b005b3480156104ca57600080fd5b506104e560048036038101906104e09190614052565b611238565b6040516104f291906143fa565b60405180910390f35b34801561050757600080fd5b506105106112eb565b60405161051d91906145b2565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190613f4c565b6112f1565b005b34801561055b57600080fd5b50610576600480360381019061057191906140e0565b6113c8565b60405161058391906145b2565b60405180910390f35b34801561059857600080fd5b506105a161144c565b6040516105ae91906143c4565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190613f4c565b611470565b005b3480156105ec57600080fd5b5061060760048036038101906106029190613f4c565b61170b565b60405161061491906143fa565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f919061408e565b611761565b005b34801561065257600080fd5b5061066d60048036038101906106689190613f4c565b6117fa565b60405161067a91906145b2565b60405180910390f35b34801561068f57600080fd5b506106986118e5565b005b3480156106a657600080fd5b506106af611a1f565b6040516106bc91906143df565b60405180910390f35b3480156106d157600080fd5b506106da611a45565b6040516106e791906145b2565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190613f4c565b611a4b565b60405161072491906143fa565b60405180910390f35b34801561073957600080fd5b50610742611aa1565b60405161074f91906143c4565b60405180910390f35b34801561076457600080fd5b5061076d611aca565b60405161077a9190614430565b60405180910390f35b34801561078f57600080fd5b50610798611b5c565b6040516107a591906145b2565b60405180910390f35b3480156107ba57600080fd5b506107c3611b62565b6040516107d091906143fa565b60405180910390f35b3480156107e557600080fd5b5061080060048036038101906107fb91906140b7565b611b75565b005b34801561080e57600080fd5b50610817611bfb565b60405161082491906145b2565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f9190614052565b611c01565b60405161086191906143fa565b60405180910390f35b34801561087657600080fd5b50610891600480360381019061088c9190614052565b611cce565b60405161089e91906143fa565b60405180910390f35b3480156108b357600080fd5b506108bc611cec565b6040516108c991906145b2565b60405180910390f35b3480156108de57600080fd5b506108e7611cf2565b6040516108f491906143fa565b60405180910390f35b34801561090957600080fd5b50610912611d05565b60405161091f91906145b2565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a91906140b7565b611d0b565b005b34801561095d57600080fd5b50610978600480360381019061097391906140b7565b611d91565b005b34801561098657600080fd5b506109a1600480360381019061099c9190613fc7565b611e17565b6040516109ae91906145b2565b60405180910390f35b3480156109c357600080fd5b506109de60048036038101906109d99190613f4c565b611e9e565b005b3480156109ec57600080fd5b50610a076004803603810190610a029190613f4c565b611f75565b005b606060018054610a189061487c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a449061487c565b8015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b5050505050905090565b6000610aaf610aa8612134565b848461213c565b6001905092915050565b6000601554905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600354905090565b610af9612134565b73ffffffffffffffffffffffffffffffffffffffff16610b17611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490614532565b60405180910390fd5b80600c8190555050565b610b7f612134565b73ffffffffffffffffffffffffffffffffffffffff16610b9d611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea90614532565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b6000610c4a848484612307565b610d0b84610c56612134565b610d0685604051806060016040528060288152602001614ce560289139601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cbc612134565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e9092919063ffffffff16565b61213c565b600190509392505050565b610d1e612134565b73ffffffffffffffffffffffffffffffffffffffff16610d3c611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990614532565b60405180910390fd5b80601760016101000a81548160ff0219169083151502179055507f3efb3f9ce66ef48ce5be6bff57df61c60b91f67f10f414ed7cd767b1c9cdad7d81604051610ddb91906143fa565b60405180910390a150565b6000601654821115610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490614472565b60405180910390fd5b6000610e376126e3565b9050610e4c818461211e90919063ffffffff16565b915050919050565b60008060149054906101000a900460ff16905090565b610e72612134565b73ffffffffffffffffffffffffffffffffffffffff16610e90611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90614532565b60405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f69906144d2565b60405180910390fd5b60005b601480549050811015611234578173ffffffffffffffffffffffffffffffffffffffff1660148281548110610fd3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611221576014600160148054905061102e9190614778565b81548110611065577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601482815481106110ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060148054806111e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611234565b808061122c906148ae565b915050610f75565b5050565b60006112e1611245612134565b846112dc8560116000611256612134565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b61213c565b6001905092915050565b60055481565b6112f9612134565b73ffffffffffffffffffffffffffffffffffffffff16611317611aa1565b73ffffffffffffffffffffffffffffffffffffffff161461136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136490614532565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060035483111561140f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611406906144f2565b60405180910390fd5b8161142f57600061141f84612724565b5050505050905080915050611446565b600061143a84612724565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611478612134565b73ffffffffffffffffffffffffffffffffffffffff16611496611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390614532565b60405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611570906144d2565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561164d57611609600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de6565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611769612134565b73ffffffffffffffffffffffffffffffffffffffff16611787611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490614532565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561189557601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506118e0565b6118dd600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de6565b90505b919050565b6118ed612134565b73ffffffffffffffffffffffffffffffffffffffff1661190b611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890614532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611ad99061487c565b80601f0160208091040260200160405190810160405280929190818152602001828054611b059061487c565b8015611b525780601f10611b2757610100808354040283529160200191611b52565b820191906000526020600020905b815481529060010190602001808311611b3557829003601f168201915b5050505050905090565b60075481565b601760019054906101000a900460ff1681565b611b7d612134565b73ffffffffffffffffffffffffffffffffffffffff16611b9b611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890614532565b60405180910390fd5b80600a8190555050565b600d5481565b6000611cc4611c0e612134565b84611cbf85604051806060016040528060258152602001614d0d6025913960116000611c38612134565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e9092919063ffffffff16565b61213c565b6001905092915050565b6000611ce2611cdb612134565b8484612307565b6001905092915050565b600a5481565b600b60009054906101000a900460ff1681565b60045481565b611d13612134565b73ffffffffffffffffffffffffffffffffffffffff16611d31611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90614532565b60405180910390fd5b8060078190555050565b611d99612134565b73ffffffffffffffffffffffffffffffffffffffff16611db7611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0490614532565b60405180910390fd5b80600d8190555050565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ea6612134565b73ffffffffffffffffffffffffffffffffffffffff16611ec4611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190614532565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f7d612134565b73ffffffffffffffffffffffffffffffffffffffff16611f9b611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe890614532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205890614492565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000818361212c91906146ed565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a390614592565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561221c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612213906144b2565b60405180910390fd5b80601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122fa91906145b2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236e90614572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90614452565b60405180910390fd5b6000811161242a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242190614552565b60405180910390fd5b612432611aa1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124a05750612470611aa1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124eb57600c548111156124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e190614512565b60405180910390fd5b5b60006124f6306117fa565b90506000600d548210159050600c54821061251157600c5491505b80801561252b5750601760009054906101000a900460ff16155b801561258357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561259b5750601760019054906101000a900460ff165b156125aa576125a982612780565b5b600b60009054906101000a900460ff16156125c9576125c884612aed565b5b600060019050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126705750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561267a57600090505b61268686868684612b60565b505050505050565b60008383111582906126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd9190614430565b60405180910390fd5b5082840390509392505050565b60008060006126f0612e71565b91509150612707818361211e90919063ffffffff16565b9250505090565b6000818361271c9190614697565b905092915050565b600080600080600080600080600061273b8a6131bc565b92509250925060008060006127598d86866127546126e3565b613216565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156127de577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561280c5781602001602082028036833780820191505090505b509050308160008151811061284a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128ea57600080fd5b505afa1580156128fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129229190613f75565b8160018151811061295c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129c1307f00000000000000000000000000000000000000000000000000000000000000008461213c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a239594939291906145cd565b600060405180830381600087803b158015612a3d57600080fd5b505af1158015612a51573d6000803e3d6000fd5b5050505060004790506000811115612acd57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612acb573d6000803e3d6000fd5b505b50506000601760006101000a81548160ff02191690831515021790555050565b6004546005819055506007546008819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b5d57600a546008819055505b50565b80612b6e57612b6d61329f565b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c115750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c2657612c218484846132e2565b612e5d565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc95750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cde57612cd9848484613542565b612e5c565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d825750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d9757612d928484846137a2565b612e5b565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e395750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4e57612e4984848461396d565b612e5a565b612e598484846137a2565b5b5b5b5b80612e6b57612e6a613c62565b5b50505050565b600080600060165490506000600354905060005b60148054905081101561317f5782600f600060148481548110612ed1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fe55750816010600060148481548110612f7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ffc57601654600354945094505050506131b8565b6130b2600f60006014848154811061303d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613c7690919063ffffffff16565b925061316a60106000601484815481106130f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c7690919063ffffffff16565b91508080613177906148ae565b915050612e85565b5061319760035460165461211e90919063ffffffff16565b8210156131af576016546003549350935050506131b8565b81819350935050505b9091565b6000806000806131cb85613c8c565b905060006131d886613cbd565b90506000613201826131f3858a613c7690919063ffffffff16565b613c7690919063ffffffff16565b90508083839550955095505050509193909250565b60008060008061322f8589613cee90919063ffffffff16565b905060006132468689613cee90919063ffffffff16565b9050600061325d8789613cee90919063ffffffff16565b90506000613286826132788587613c7690919063ffffffff16565b613c7690919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006005541480156132b357506000600854145b156132bd576132e0565b600554600681905550600854600981905550600060058190555060006008819055505b565b6000806000806000806132f487612724565b95509550955095509550955061335287601060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133e786600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061347c85600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134c881613d04565b6134d28483613ea9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161352f91906145b2565b60405180910390a3505050505050505050565b60008060008060008061355487612724565b9550955095509550955095506135b286600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364783601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136dc85600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372881613d04565b6137328483613ea9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161378f91906145b2565b60405180910390a3505050505050505050565b6000806000806000806137b487612724565b95509550955095509550955061381286600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138a785600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138f381613d04565b6138fd8483613ea9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161395a91906145b2565b60405180910390a3505050505050505050565b60008060008060008061397f87612724565b9550955095509550955095506139dd87601060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7286600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0783601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b9c85600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613be881613d04565b613bf28483613ea9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c4f91906145b2565b60405180910390a3505050505050505050565b600654600581905550600954600881905550565b60008183613c849190614778565b905092915050565b6000613cb66064613ca860055485613cee90919063ffffffff16565b61211e90919063ffffffff16565b9050919050565b6000613ce76064613cd960085485613cee90919063ffffffff16565b61211e90919063ffffffff16565b9050919050565b60008183613cfc919061471e565b905092915050565b6000613d0e6126e3565b90506000613d258284613cee90919063ffffffff16565b9050613d7981600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ea457613e6083601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613ebe82601654613c7690919063ffffffff16565b601681905550613ed98160155461270e90919063ffffffff16565b6015819055505050565b600081359050613ef281614c88565b92915050565b600081519050613f0781614c88565b92915050565b600081359050613f1c81614c9f565b92915050565b600081359050613f3181614cb6565b92915050565b600081359050613f4681614ccd565b92915050565b600060208284031215613f5e57600080fd5b6000613f6c84828501613ee3565b91505092915050565b600060208284031215613f8757600080fd5b6000613f9584828501613ef8565b91505092915050565b600060208284031215613fb057600080fd5b6000613fbe84828501613f0d565b91505092915050565b60008060408385031215613fda57600080fd5b6000613fe885828601613ee3565b9250506020613ff985828601613ee3565b9150509250929050565b60008060006060848603121561401857600080fd5b600061402686828701613ee3565b935050602061403786828701613ee3565b925050604061404886828701613f37565b9150509250925092565b6000806040838503121561406557600080fd5b600061407385828601613ee3565b925050602061408485828601613f37565b9150509250929050565b6000602082840312156140a057600080fd5b60006140ae84828501613f22565b91505092915050565b6000602082840312156140c957600080fd5b60006140d784828501613f37565b91505092915050565b600080604083850312156140f357600080fd5b600061410185828601613f37565b925050602061411285828601613f22565b9150509250929050565b60006141288383614143565b60208301905092915050565b61413d816147be565b82525050565b61414c816147ac565b82525050565b61415b816147ac565b82525050565b600061416c82614652565b6141768185614675565b935061418183614642565b8060005b838110156141b2578151614199888261411c565b97506141a483614668565b925050600181019050614185565b5085935050505092915050565b6141c8816147d0565b82525050565b6141d781614813565b82525050565b6141e681614837565b82525050565b60006141f78261465d565b6142018185614686565b9350614211818560208601614849565b61421a81614984565b840191505092915050565b6000614232602383614686565b915061423d82614995565b604082019050919050565b6000614255602a83614686565b9150614260826149e4565b604082019050919050565b6000614278602683614686565b915061428382614a33565b604082019050919050565b600061429b602283614686565b91506142a682614a82565b604082019050919050565b60006142be601b83614686565b91506142c982614ad1565b602082019050919050565b60006142e1601f83614686565b91506142ec82614afa565b602082019050919050565b6000614304602883614686565b915061430f82614b23565b604082019050919050565b6000614327602083614686565b915061433282614b72565b602082019050919050565b600061434a602983614686565b915061435582614b9b565b604082019050919050565b600061436d602583614686565b915061437882614bea565b604082019050919050565b6000614390602483614686565b915061439b82614c39565b604082019050919050565b6143af816147fc565b82525050565b6143be81614806565b82525050565b60006020820190506143d96000830184614152565b92915050565b60006020820190506143f46000830184614134565b92915050565b600060208201905061440f60008301846141bf565b92915050565b600060208201905061442a60008301846141ce565b92915050565b6000602082019050818103600083015261444a81846141ec565b905092915050565b6000602082019050818103600083015261446b81614225565b9050919050565b6000602082019050818103600083015261448b81614248565b9050919050565b600060208201905081810360008301526144ab8161426b565b9050919050565b600060208201905081810360008301526144cb8161428e565b9050919050565b600060208201905081810360008301526144eb816142b1565b9050919050565b6000602082019050818103600083015261450b816142d4565b9050919050565b6000602082019050818103600083015261452b816142f7565b9050919050565b6000602082019050818103600083015261454b8161431a565b9050919050565b6000602082019050818103600083015261456b8161433d565b9050919050565b6000602082019050818103600083015261458b81614360565b9050919050565b600060208201905081810360008301526145ab81614383565b9050919050565b60006020820190506145c760008301846143a6565b92915050565b600060a0820190506145e260008301886143a6565b6145ef60208301876141dd565b81810360408301526146018186614161565b90506146106060830185614152565b61461d60808301846143a6565b9695505050505050565b600060208201905061463c60008301846143b5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006146a2826147fc565b91506146ad836147fc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146e2576146e16148f7565b5b828201905092915050565b60006146f8826147fc565b9150614703836147fc565b92508261471357614712614926565b5b828204905092915050565b6000614729826147fc565b9150614734836147fc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561476d5761476c6148f7565b5b828202905092915050565b6000614783826147fc565b915061478e836147fc565b9250828210156147a1576147a06148f7565b5b828203905092915050565b60006147b7826147dc565b9050919050565b60006147c9826147dc565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061481e82614825565b9050919050565b6000614830826147dc565b9050919050565b6000614842826147fc565b9050919050565b60005b8381101561486757808201518184015260208101905061484c565b83811115614876576000848401525b50505050565b6000600282049050600182168061489457607f821691505b602082108114156148a8576148a7614955565b5b50919050565b60006148b9826147fc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148ec576148eb6148f7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614c91816147ac565b8114614c9c57600080fd5b50565b614ca8816147be565b8114614cb357600080fd5b50565b614cbf816147d0565b8114614cca57600080fd5b50565b614cd6816147fc565b8114614ce157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200aa1ae268c5ba8adc34c906e0ccda687a1cf68e9f31ff932037fa968618c5fc864736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806370a0823111610139578063a3864430116100b6578063cba851b31161007a578063cba851b3146108fd578063d54994db14610928578063dab522a814610951578063dd62ed3e1461097a578063ea2f0b37146109b7578063f2fde38b146109e05761025c565b8063a386443014610802578063a457c2d71461082d578063a9059cbb1461086a578063bc951f98146108a7578063c537bd8f146108d25761025c565b80638da5cb5b116100fd5780638da5cb5b1461072d57806395d89b41146107585780639f64621414610783578063a062e3ba146107ae578063a08f6760146107d95761025c565b806370a0823114610646578063715018a61461068357806375f0a8741461069a5780637d1db4a5146106c557806388f82020146106f05761025c565b80632d838119116101d2578063437823ec11610196578063437823ec146105265780634549b0391461054f57806349bd5a5e1461058c57806352390c02146105b75780635342acb4146105e057806357e0a1d01461061d5761025c565b80632d8381191461042d578063313ce5671461046a5780633685d4191461049557806339509351146104be5780633b124fe7146104fb5761025c565b80631bbae6e0116102195780631bbae6e01461034a5780631ff53b601461037357806322976e0d1461039c57806323b872dd146103c75780632663236f146104045761025c565b806306fdde0314610261578063095ea7b31461028c57806313114a9d146102c95780631694505e146102f457806318160ddd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a09565b6040516102839190614430565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190614052565b610a9b565b6040516102c091906143fa565b60405180910390f35b3480156102d557600080fd5b506102de610ab9565b6040516102eb91906145b2565b60405180910390f35b34801561030057600080fd5b50610309610ac3565b6040516103169190614415565b60405180910390f35b34801561032b57600080fd5b50610334610ae7565b60405161034191906145b2565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c91906140b7565b610af1565b005b34801561037f57600080fd5b5061039a60048036038101906103959190613f9e565b610b77565b005b3480156103a857600080fd5b506103b1610c37565b6040516103be91906145b2565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190614003565b610c3d565b6040516103fb91906143fa565b60405180910390f35b34801561041057600080fd5b5061042b6004803603810190610426919061408e565b610d16565b005b34801561043957600080fd5b50610454600480360381019061044f91906140b7565b610de6565b60405161046191906145b2565b60405180910390f35b34801561047657600080fd5b5061047f610e54565b60405161048c9190614627565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190613f4c565b610e6a565b005b3480156104ca57600080fd5b506104e560048036038101906104e09190614052565b611238565b6040516104f291906143fa565b60405180910390f35b34801561050757600080fd5b506105106112eb565b60405161051d91906145b2565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190613f4c565b6112f1565b005b34801561055b57600080fd5b50610576600480360381019061057191906140e0565b6113c8565b60405161058391906145b2565b60405180910390f35b34801561059857600080fd5b506105a161144c565b6040516105ae91906143c4565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190613f4c565b611470565b005b3480156105ec57600080fd5b5061060760048036038101906106029190613f4c565b61170b565b60405161061491906143fa565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f919061408e565b611761565b005b34801561065257600080fd5b5061066d60048036038101906106689190613f4c565b6117fa565b60405161067a91906145b2565b60405180910390f35b34801561068f57600080fd5b506106986118e5565b005b3480156106a657600080fd5b506106af611a1f565b6040516106bc91906143df565b60405180910390f35b3480156106d157600080fd5b506106da611a45565b6040516106e791906145b2565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190613f4c565b611a4b565b60405161072491906143fa565b60405180910390f35b34801561073957600080fd5b50610742611aa1565b60405161074f91906143c4565b60405180910390f35b34801561076457600080fd5b5061076d611aca565b60405161077a9190614430565b60405180910390f35b34801561078f57600080fd5b50610798611b5c565b6040516107a591906145b2565b60405180910390f35b3480156107ba57600080fd5b506107c3611b62565b6040516107d091906143fa565b60405180910390f35b3480156107e557600080fd5b5061080060048036038101906107fb91906140b7565b611b75565b005b34801561080e57600080fd5b50610817611bfb565b60405161082491906145b2565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f9190614052565b611c01565b60405161086191906143fa565b60405180910390f35b34801561087657600080fd5b50610891600480360381019061088c9190614052565b611cce565b60405161089e91906143fa565b60405180910390f35b3480156108b357600080fd5b506108bc611cec565b6040516108c991906145b2565b60405180910390f35b3480156108de57600080fd5b506108e7611cf2565b6040516108f491906143fa565b60405180910390f35b34801561090957600080fd5b50610912611d05565b60405161091f91906145b2565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a91906140b7565b611d0b565b005b34801561095d57600080fd5b50610978600480360381019061097391906140b7565b611d91565b005b34801561098657600080fd5b506109a1600480360381019061099c9190613fc7565b611e17565b6040516109ae91906145b2565b60405180910390f35b3480156109c357600080fd5b506109de60048036038101906109d99190613f4c565b611e9e565b005b3480156109ec57600080fd5b50610a076004803603810190610a029190613f4c565b611f75565b005b606060018054610a189061487c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a449061487c565b8015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b5050505050905090565b6000610aaf610aa8612134565b848461213c565b6001905092915050565b6000601554905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600354905090565b610af9612134565b73ffffffffffffffffffffffffffffffffffffffff16610b17611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490614532565b60405180910390fd5b80600c8190555050565b610b7f612134565b73ffffffffffffffffffffffffffffffffffffffff16610b9d611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea90614532565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b6000610c4a848484612307565b610d0b84610c56612134565b610d0685604051806060016040528060288152602001614ce560289139601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cbc612134565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e9092919063ffffffff16565b61213c565b600190509392505050565b610d1e612134565b73ffffffffffffffffffffffffffffffffffffffff16610d3c611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990614532565b60405180910390fd5b80601760016101000a81548160ff0219169083151502179055507f3efb3f9ce66ef48ce5be6bff57df61c60b91f67f10f414ed7cd767b1c9cdad7d81604051610ddb91906143fa565b60405180910390a150565b6000601654821115610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490614472565b60405180910390fd5b6000610e376126e3565b9050610e4c818461211e90919063ffffffff16565b915050919050565b60008060149054906101000a900460ff16905090565b610e72612134565b73ffffffffffffffffffffffffffffffffffffffff16610e90611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90614532565b60405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f69906144d2565b60405180910390fd5b60005b601480549050811015611234578173ffffffffffffffffffffffffffffffffffffffff1660148281548110610fd3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611221576014600160148054905061102e9190614778565b81548110611065577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601482815481106110ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060148054806111e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611234565b808061122c906148ae565b915050610f75565b5050565b60006112e1611245612134565b846112dc8560116000611256612134565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b61213c565b6001905092915050565b60055481565b6112f9612134565b73ffffffffffffffffffffffffffffffffffffffff16611317611aa1565b73ffffffffffffffffffffffffffffffffffffffff161461136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136490614532565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060035483111561140f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611406906144f2565b60405180910390fd5b8161142f57600061141f84612724565b5050505050905080915050611446565b600061143a84612724565b50505050915050809150505b92915050565b7f0000000000000000000000001772c4493c09f8b4c1a4684726e10ded537c615a81565b611478612134565b73ffffffffffffffffffffffffffffffffffffffff16611496611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390614532565b60405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611570906144d2565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561164d57611609600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de6565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611769612134565b73ffffffffffffffffffffffffffffffffffffffff16611787611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490614532565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561189557601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506118e0565b6118dd600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de6565b90505b919050565b6118ed612134565b73ffffffffffffffffffffffffffffffffffffffff1661190b611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890614532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611ad99061487c565b80601f0160208091040260200160405190810160405280929190818152602001828054611b059061487c565b8015611b525780601f10611b2757610100808354040283529160200191611b52565b820191906000526020600020905b815481529060010190602001808311611b3557829003601f168201915b5050505050905090565b60075481565b601760019054906101000a900460ff1681565b611b7d612134565b73ffffffffffffffffffffffffffffffffffffffff16611b9b611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890614532565b60405180910390fd5b80600a8190555050565b600d5481565b6000611cc4611c0e612134565b84611cbf85604051806060016040528060258152602001614d0d6025913960116000611c38612134565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e9092919063ffffffff16565b61213c565b6001905092915050565b6000611ce2611cdb612134565b8484612307565b6001905092915050565b600a5481565b600b60009054906101000a900460ff1681565b60045481565b611d13612134565b73ffffffffffffffffffffffffffffffffffffffff16611d31611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90614532565b60405180910390fd5b8060078190555050565b611d99612134565b73ffffffffffffffffffffffffffffffffffffffff16611db7611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0490614532565b60405180910390fd5b80600d8190555050565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ea6612134565b73ffffffffffffffffffffffffffffffffffffffff16611ec4611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190614532565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f7d612134565b73ffffffffffffffffffffffffffffffffffffffff16611f9b611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe890614532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205890614492565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000818361212c91906146ed565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a390614592565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561221c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612213906144b2565b60405180910390fd5b80601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122fa91906145b2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236e90614572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90614452565b60405180910390fd5b6000811161242a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242190614552565b60405180910390fd5b612432611aa1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124a05750612470611aa1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124eb57600c548111156124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e190614512565b60405180910390fd5b5b60006124f6306117fa565b90506000600d548210159050600c54821061251157600c5491505b80801561252b5750601760009054906101000a900460ff16155b801561258357507f0000000000000000000000001772c4493c09f8b4c1a4684726e10ded537c615a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561259b5750601760019054906101000a900460ff165b156125aa576125a982612780565b5b600b60009054906101000a900460ff16156125c9576125c884612aed565b5b600060019050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126705750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561267a57600090505b61268686868684612b60565b505050505050565b60008383111582906126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd9190614430565b60405180910390fd5b5082840390509392505050565b60008060006126f0612e71565b91509150612707818361211e90919063ffffffff16565b9250505090565b6000818361271c9190614697565b905092915050565b600080600080600080600080600061273b8a6131bc565b92509250925060008060006127598d86866127546126e3565b613216565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156127de577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561280c5781602001602082028036833780820191505090505b509050308160008151811061284a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128ea57600080fd5b505afa1580156128fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129229190613f75565b8160018151811061295c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129c1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461213c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a239594939291906145cd565b600060405180830381600087803b158015612a3d57600080fd5b505af1158015612a51573d6000803e3d6000fd5b5050505060004790506000811115612acd57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612acb573d6000803e3d6000fd5b505b50506000601760006101000a81548160ff02191690831515021790555050565b6004546005819055506007546008819055507f0000000000000000000000001772c4493c09f8b4c1a4684726e10ded537c615a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b5d57600a546008819055505b50565b80612b6e57612b6d61329f565b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c115750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c2657612c218484846132e2565b612e5d565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc95750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cde57612cd9848484613542565b612e5c565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d825750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d9757612d928484846137a2565b612e5b565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e395750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4e57612e4984848461396d565b612e5a565b612e598484846137a2565b5b5b5b5b80612e6b57612e6a613c62565b5b50505050565b600080600060165490506000600354905060005b60148054905081101561317f5782600f600060148481548110612ed1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fe55750816010600060148481548110612f7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ffc57601654600354945094505050506131b8565b6130b2600f60006014848154811061303d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613c7690919063ffffffff16565b925061316a60106000601484815481106130f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613c7690919063ffffffff16565b91508080613177906148ae565b915050612e85565b5061319760035460165461211e90919063ffffffff16565b8210156131af576016546003549350935050506131b8565b81819350935050505b9091565b6000806000806131cb85613c8c565b905060006131d886613cbd565b90506000613201826131f3858a613c7690919063ffffffff16565b613c7690919063ffffffff16565b90508083839550955095505050509193909250565b60008060008061322f8589613cee90919063ffffffff16565b905060006132468689613cee90919063ffffffff16565b9050600061325d8789613cee90919063ffffffff16565b90506000613286826132788587613c7690919063ffffffff16565b613c7690919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006005541480156132b357506000600854145b156132bd576132e0565b600554600681905550600854600981905550600060058190555060006008819055505b565b6000806000806000806132f487612724565b95509550955095509550955061335287601060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133e786600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061347c85600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134c881613d04565b6134d28483613ea9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161352f91906145b2565b60405180910390a3505050505050505050565b60008060008060008061355487612724565b9550955095509550955095506135b286600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364783601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136dc85600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372881613d04565b6137328483613ea9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161378f91906145b2565b60405180910390a3505050505050505050565b6000806000806000806137b487612724565b95509550955095509550955061381286600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138a785600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138f381613d04565b6138fd8483613ea9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161395a91906145b2565b60405180910390a3505050505050505050565b60008060008060008061397f87612724565b9550955095509550955095506139dd87601060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7286600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c7690919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0783601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b9c85600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613be881613d04565b613bf28483613ea9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c4f91906145b2565b60405180910390a3505050505050505050565b600654600581905550600954600881905550565b60008183613c849190614778565b905092915050565b6000613cb66064613ca860055485613cee90919063ffffffff16565b61211e90919063ffffffff16565b9050919050565b6000613ce76064613cd960085485613cee90919063ffffffff16565b61211e90919063ffffffff16565b9050919050565b60008183613cfc919061471e565b905092915050565b6000613d0e6126e3565b90506000613d258284613cee90919063ffffffff16565b9050613d7981600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ea457613e6083601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270e90919063ffffffff16565b601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613ebe82601654613c7690919063ffffffff16565b601681905550613ed98160155461270e90919063ffffffff16565b6015819055505050565b600081359050613ef281614c88565b92915050565b600081519050613f0781614c88565b92915050565b600081359050613f1c81614c9f565b92915050565b600081359050613f3181614cb6565b92915050565b600081359050613f4681614ccd565b92915050565b600060208284031215613f5e57600080fd5b6000613f6c84828501613ee3565b91505092915050565b600060208284031215613f8757600080fd5b6000613f9584828501613ef8565b91505092915050565b600060208284031215613fb057600080fd5b6000613fbe84828501613f0d565b91505092915050565b60008060408385031215613fda57600080fd5b6000613fe885828601613ee3565b9250506020613ff985828601613ee3565b9150509250929050565b60008060006060848603121561401857600080fd5b600061402686828701613ee3565b935050602061403786828701613ee3565b925050604061404886828701613f37565b9150509250925092565b6000806040838503121561406557600080fd5b600061407385828601613ee3565b925050602061408485828601613f37565b9150509250929050565b6000602082840312156140a057600080fd5b60006140ae84828501613f22565b91505092915050565b6000602082840312156140c957600080fd5b60006140d784828501613f37565b91505092915050565b600080604083850312156140f357600080fd5b600061410185828601613f37565b925050602061411285828601613f22565b9150509250929050565b60006141288383614143565b60208301905092915050565b61413d816147be565b82525050565b61414c816147ac565b82525050565b61415b816147ac565b82525050565b600061416c82614652565b6141768185614675565b935061418183614642565b8060005b838110156141b2578151614199888261411c565b97506141a483614668565b925050600181019050614185565b5085935050505092915050565b6141c8816147d0565b82525050565b6141d781614813565b82525050565b6141e681614837565b82525050565b60006141f78261465d565b6142018185614686565b9350614211818560208601614849565b61421a81614984565b840191505092915050565b6000614232602383614686565b915061423d82614995565b604082019050919050565b6000614255602a83614686565b9150614260826149e4565b604082019050919050565b6000614278602683614686565b915061428382614a33565b604082019050919050565b600061429b602283614686565b91506142a682614a82565b604082019050919050565b60006142be601b83614686565b91506142c982614ad1565b602082019050919050565b60006142e1601f83614686565b91506142ec82614afa565b602082019050919050565b6000614304602883614686565b915061430f82614b23565b604082019050919050565b6000614327602083614686565b915061433282614b72565b602082019050919050565b600061434a602983614686565b915061435582614b9b565b604082019050919050565b600061436d602583614686565b915061437882614bea565b604082019050919050565b6000614390602483614686565b915061439b82614c39565b604082019050919050565b6143af816147fc565b82525050565b6143be81614806565b82525050565b60006020820190506143d96000830184614152565b92915050565b60006020820190506143f46000830184614134565b92915050565b600060208201905061440f60008301846141bf565b92915050565b600060208201905061442a60008301846141ce565b92915050565b6000602082019050818103600083015261444a81846141ec565b905092915050565b6000602082019050818103600083015261446b81614225565b9050919050565b6000602082019050818103600083015261448b81614248565b9050919050565b600060208201905081810360008301526144ab8161426b565b9050919050565b600060208201905081810360008301526144cb8161428e565b9050919050565b600060208201905081810360008301526144eb816142b1565b9050919050565b6000602082019050818103600083015261450b816142d4565b9050919050565b6000602082019050818103600083015261452b816142f7565b9050919050565b6000602082019050818103600083015261454b8161431a565b9050919050565b6000602082019050818103600083015261456b8161433d565b9050919050565b6000602082019050818103600083015261458b81614360565b9050919050565b600060208201905081810360008301526145ab81614383565b9050919050565b60006020820190506145c760008301846143a6565b92915050565b600060a0820190506145e260008301886143a6565b6145ef60208301876141dd565b81810360408301526146018186614161565b90506146106060830185614152565b61461d60808301846143a6565b9695505050505050565b600060208201905061463c60008301846143b5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006146a2826147fc565b91506146ad836147fc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146e2576146e16148f7565b5b828201905092915050565b60006146f8826147fc565b9150614703836147fc565b92508261471357614712614926565b5b828204905092915050565b6000614729826147fc565b9150614734836147fc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561476d5761476c6148f7565b5b828202905092915050565b6000614783826147fc565b915061478e836147fc565b9250828210156147a1576147a06148f7565b5b828203905092915050565b60006147b7826147dc565b9050919050565b60006147c9826147dc565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061481e82614825565b9050919050565b6000614830826147dc565b9050919050565b6000614842826147fc565b9050919050565b60005b8381101561486757808201518184015260208101905061484c565b83811115614876576000848401525b50505050565b6000600282049050600182168061489457607f821691505b602082108114156148a8576148a7614955565b5b50919050565b60006148b9826147fc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148ec576148eb6148f7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614c91816147ac565b8114614c9c57600080fd5b50565b614ca8816147be565b8114614cb357600080fd5b50565b614cbf816147d0565b8114614cca57600080fd5b50565b614cd6816147fc565b8114614ce157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200aa1ae268c5ba8adc34c906e0ccda687a1cf68e9f31ff932037fa968618c5fc864736f6c63430008040033

Deployed Bytecode Sourcemap

28503:17370:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31181:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32093:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33214:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30153:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31458:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45758:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45633:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29196:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32262:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45263:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33753:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31367:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34469:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32583:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29011:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34956:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33309:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30211:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34014:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38421:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45134:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31561:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19961:148;;;;;;;;;;;;;:::i;:::-;;29566:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29411:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33086:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19318:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31272;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29151:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30283:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44979:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29485:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32809:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31767:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29313:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29361;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28972:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44843:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45435:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31942:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35077:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20261:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31181:83;31218:13;31251:5;31244:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31181:83;:::o;32093:161::-;32168:4;32185:39;32194:12;:10;:12::i;:::-;32208:7;32217:6;32185:8;:39::i;:::-;32242:4;32235:11;;32093:161;;;;:::o;33214:87::-;33256:7;33283:10;;33276:17;;33214:87;:::o;30153:51::-;;;:::o;31458:95::-;31511:7;31538;;31531:14;;31458:95;:::o;45758:112::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45851:11:::1;45836:12;:26;;;;45758:112:::0;:::o;45633:117::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45736:6:::1;45718:15;;:24;;;;;;;;;;;;;;;;;;45633:117:::0;:::o;29196:50::-;;;;:::o;32262:313::-;32360:4;32377:36;32387:6;32395:9;32406:6;32377:9;:36::i;:::-;32424:121;32433:6;32441:12;:10;:12::i;:::-;32455:89;32493:6;32455:89;;;;;;;;;;;;;;;;;:11;:19;32467:6;32455:19;;;;;;;;;;;;;;;:33;32475:12;:10;:12::i;:::-;32455:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;32424:8;:121::i;:::-;32563:4;32556:11;;32262:313;;;;;:::o;45263:164::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45360:8:::1;45339:18;;:29;;;;;;;;;;;;;;;;;;45384:35;45410:8;45384:35;;;;;;:::i;:::-;;;;;;;;45263:164:::0;:::o;33753:253::-;33819:7;33858;;33847;:18;;33839:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;33923:19;33946:10;:8;:10::i;:::-;33923:33;;33974:24;33986:11;33974:7;:11;;:24;;;;:::i;:::-;33967:31;;;33753:253;;;:::o;31367:83::-;31408:5;31433:9;;;;;;;;;;;31426:16;;31367:83;:::o;34469:479::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34551:11:::1;:20;34563:7;34551:20;;;;;;;;;;;;;;;;;;;;;;;;;34543:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;34619:9;34614:327;34638:9;:16;;;;34634:1;:20;34614:327;;;34696:7;34680:23;;:9;34690:1;34680:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;34676:254;;;34739:9;34768:1;34749:9;:16;;;;:20;;;;:::i;:::-;34739:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34724:9;34734:1;34724:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;34808:1;34789:7;:16;34797:7;34789:16;;;;;;;;;;;;;;;:20;;;;34851:5;34828:11;:20;34840:7;34828:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;34875:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34909:5;;34676:254;34656:3;;;;;:::i;:::-;;;;34614:327;;;;34469:479:::0;:::o;32583:218::-;32671:4;32688:83;32697:12;:10;:12::i;:::-;32711:7;32720:50;32759:10;32720:11;:25;32732:12;:10;:12::i;:::-;32720:25;;;;;;;;;;;;;;;:34;32746:7;32720:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;32688:8;:83::i;:::-;32789:4;32782:11;;32583:218;;;;:::o;29011:38::-;;;;:::o;34956:113::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35057:4:::1;35027:18;:27;35046:7;35027:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;34956:113:::0;:::o;33309:436::-;33399:7;33438;;33427;:18;;33419:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;33497:17;33492:246;;33532:15;33556:19;33567:7;33556:10;:19::i;:::-;33531:44;;;;;;;33597:7;33590:14;;;;;33492:246;33639:23;33670:19;33681:7;33670:10;:19::i;:::-;33637:52;;;;;;;33711:15;33704:22;;;33309:436;;;;;:::o;30211:38::-;;;:::o;34014:447::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34211:11:::1;:20;34223:7;34211:20;;;;;;;;;;;;;;;;;;;;;;;;;34210:21;34202:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34296:1;34277:7;:16;34285:7;34277:16;;;;;;;;;;;;;;;;:20;34274:108;;;34333:37;34353:7;:16;34361:7;34353:16;;;;;;;;;;;;;;;;34333:19;:37::i;:::-;34314:7;:16;34322:7;34314:16;;;;;;;;;;;;;;;:56;;;;34274:108;34415:4;34392:11;:20;34404:7;34392:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;34430:9;34445:7;34430:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34014:447:::0;:::o;38421:123::-;38485:4;38509:18;:27;38528:7;38509:27;;;;;;;;;;;;;;;;;;;;;;;;;38502:34;;38421:123;;;:::o;45134:121::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45239:8:::1;45214:22;;:33;;;;;;;;;;;;;;;;;;45134:121:::0;:::o;31561:198::-;31627:7;31651:11;:20;31663:7;31651:20;;;;;;;;;;;;;;;;;;;;;;;;;31647:49;;;31680:7;:16;31688:7;31680:16;;;;;;;;;;;;;;;;31673:23;;;;31647:49;31714:37;31734:7;:16;31742:7;31734:16;;;;;;;;;;;;;;;;31714:19;:37::i;:::-;31707:44;;31561:198;;;;:::o;19961:148::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20068:1:::1;20031:40;;20052:6;::::0;::::1;;;;;;;;20031:40;;;;;;;;;;;;20099:1;20082:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;19961:148::o:0;29566:92::-;;;;;;;;;;;;;:::o;29411:67::-;;;;:::o;33086:120::-;33154:4;33178:11;:20;33190:7;33178:20;;;;;;;;;;;;;;;;;;;;;;;;;33171:27;;33086:120;;;:::o;19318:87::-;19364:7;19391:6;;;;;;;;;;;19384:13;;19318:87;:::o;31272:::-;31311:13;31344:7;31337:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31272:87;:::o;29151:38::-;;;;:::o;30283:37::-;;;;;;;;;;;;;:::o;44979:147::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45098:20:::1;45074:21;:44;;;;44979:147:::0;:::o;29485:74::-;;;;:::o;32809:269::-;32902:4;32919:129;32928:12;:10;:12::i;:::-;32942:7;32951:96;32990:15;32951:96;;;;;;;;;;;;;;;;;:11;:25;32963:12;:10;:12::i;:::-;32951:25;;;;;;;;;;;;;;;:34;32977:7;32951:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;32919:8;:129::i;:::-;33066:4;33059:11;;32809:269;;;;:::o;31767:167::-;31845:4;31862:42;31872:12;:10;:12::i;:::-;31886:9;31897:6;31862:9;:42::i;:::-;31922:4;31915:11;;31767:167;;;;:::o;29313:41::-;;;;:::o;29361:::-;;;;;;;;;;;;;:::o;28972:32::-;;;;:::o;44843:128::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44951:12:::1;44929:19;:34;;;;44843:128:::0;:::o;45435:190::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45585:32:::1;45551:31;:66;;;;45435:190:::0;:::o;31942:143::-;32023:7;32050:11;:18;32062:5;32050:18;;;;;;;;;;;;;;;:27;32069:7;32050:27;;;;;;;;;;;;;;;;32043:34;;31942:143;;;;:::o;35077:112::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35176:5:::1;35146:18;:27;35165:7;35146:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;35077:112:::0;:::o;20261:244::-;19547:12;:10;:12::i;:::-;19536:23;;:7;:5;:7::i;:::-;:23;;;19528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20370:1:::1;20350:22;;:8;:22;;;;20342:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20460:8;20431:38;;20452:6;::::0;::::1;;;;;;;;20431:38;;;;;;;;;;;;20489:8;20480:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;20261:244:::0;:::o;6517:98::-;6575:7;6606:1;6602;:5;;;;:::i;:::-;6595:12;;6517:98;;;;:::o;10157:::-;10210:7;10237:10;10230:17;;10157:98;:::o;38552:337::-;38662:1;38645:19;;:5;:19;;;;38637:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38743:1;38724:21;;:7;:21;;;;38716:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38827:6;38797:11;:18;38809:5;38797:18;;;;;;;;;;;;;;;:27;38816:7;38797:27;;;;;;;;;;;;;;;:36;;;;38865:7;38849:32;;38858:5;38849:32;;;38874:6;38849:32;;;;;;:::i;:::-;;;;;;;;38552:337;;;:::o;38897:1677::-;39035:1;39019:18;;:4;:18;;;;39011:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39112:1;39098:16;;:2;:16;;;;39090:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;39182:1;39173:6;:10;39165:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;39253:7;:5;:7::i;:::-;39245:15;;:4;:15;;;;:32;;;;;39270:7;:5;:7::i;:::-;39264:13;;:2;:13;;;;39245:32;39242:125;;;39310:12;;39300:6;:22;;39292:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;39242:125;39655:28;39686:24;39704:4;39686:9;:24::i;:::-;39655:55;;39721:24;39772:31;;39748:20;:55;;39721:82;;39843:12;;39819:20;:36;39816:112;;39904:12;;39881:35;;39816:112;39958:19;:50;;;;;39995:13;;;;;;;;;;;39994:14;39958:50;:88;;;;;40033:13;40025:21;;:4;:21;;;;39958:88;:123;;;;;40063:18;;;;;;;;;;;39958:123;39940:213;;;40108:33;40120:20;40108:11;:33::i;:::-;39940:213;40168:22;;;;;;;;;;;40165:65;;;40207:11;40215:2;40207:7;:11::i;:::-;40165:65;40303:12;40318:4;40303:19;;40422:18;:24;40441:4;40422:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;40450:18;:22;40469:2;40450:22;;;;;;;;;;;;;;;;;;;;;;;;;40422:50;40419:97;;;40499:5;40489:15;;40419:97;40528:38;40543:4;40548:2;40551:6;40558:7;40528:14;:38::i;:::-;38897:1677;;;;;;:::o;7636:206::-;7722:7;7780:1;7775;:6;;7783:12;7767:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7822:1;7818;:5;7811:12;;7636:206;;;;;:::o;36988:163::-;37029:7;37050:15;37067;37086:19;:17;:19::i;:::-;37049:56;;;;37123:20;37135:7;37123;:11;;:20;;;;:::i;:::-;37116:27;;;;36988:163;:::o;5407:98::-;5465:7;5496:1;5492;:5;;;;:::i;:::-;5485:12;;5407:98;;;;:::o;35786:419::-;35845:7;35854;35863;35872;35881;35890;35911:23;35936:12;35950:18;35972:20;35984:7;35972:11;:20::i;:::-;35910:82;;;;;;36004:15;36021:23;36046:12;36062:50;36074:7;36083:4;36089:10;36101;:8;:10::i;:::-;36062:11;:50::i;:::-;36003:109;;;;;;36131:7;36140:15;36157:4;36163:15;36180:4;36186:10;36123:74;;;;;;;;;;;;;;;;;;35786:419;;;;;;;:::o;40836:794::-;30431:4;30415:13;;:20;;;;;;;;;;;;;;;;;;40978:21:::1;41016:1;41002:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40978:40;;41047:4;41029;41034:1;41029:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;41073:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41063:4;41068:1;41063:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;41108:71;41125:4;41140:15;41158:20;41108:8;:71::i;:::-;41218:15;:66;;;41299:20;41334:1;41378:4;41405;41425:15;41218:233;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41464:26;41493:21;41464:50;;41549:1;41528:18;:22;41525:98;;;41567:15;;;;;;;;;;;:24;;:44;41592:18;41567:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;41525:98;30446:1;;30474:5:::0;30458:13;;:21;;;;;;;;;;;;;;;;;;40836:794;:::o;40582:246::-;40647:13;;40637:7;:23;;;;40687:19;;40671:13;:35;;;;40734:13;40721:26;;:9;:26;;;40717:104;;;40788:21;;40772:13;:37;;;;40717:104;40582:246;:::o;41711:818::-;41822:7;41818:40;;41844:14;:12;:14::i;:::-;41818:40;41875:11;:19;41887:6;41875:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;41899:11;:22;41911:9;41899:22;;;;;;;;;;;;;;;;;;;;;;;;;41898:23;41875:46;41871:597;;;41938:48;41960:6;41968:9;41979:6;41938:21;:48::i;:::-;41871:597;;;42009:11;:19;42021:6;42009:19;;;;;;;;;;;;;;;;;;;;;;;;;42008:20;:46;;;;;42032:11;:22;42044:9;42032:22;;;;;;;;;;;;;;;;;;;;;;;;;42008:46;42004:464;;;42071:46;42091:6;42099:9;42110:6;42071:19;:46::i;:::-;42004:464;;;42140:11;:19;42152:6;42140:19;;;;;;;;;;;;;;;;;;;;;;;;;42139:20;:47;;;;;42164:11;:22;42176:9;42164:22;;;;;;;;;;;;;;;;;;;;;;;;;42163:23;42139:47;42135:333;;;42203:44;42221:6;42229:9;42240:6;42203:17;:44::i;:::-;42135:333;;;42269:11;:19;42281:6;42269:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;42292:11;:22;42304:9;42292:22;;;;;;;;;;;;;;;;;;;;;;;;;42269:45;42265:203;;;42331:48;42353:6;42361:9;42372:6;42331:21;:48::i;:::-;42265:203;;;42412:44;42430:6;42438:9;42449:6;42412:17;:44::i;:::-;42265:203;42135:333;42004:464;41871:597;42484:7;42480:41;;42506:15;:13;:15::i;:::-;42480:41;41711:818;;;;:::o;37159:555::-;37209:7;37218;37238:15;37256:7;;37238:25;;37274:15;37292:7;;37274:25;;37315:9;37310:289;37334:9;:16;;;;37330:1;:20;37310:289;;;37400:7;37376;:21;37384:9;37394:1;37384:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37376:21;;;;;;;;;;;;;;;;:31;:66;;;;37435:7;37411;:21;37419:9;37429:1;37419:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37411:21;;;;;;;;;;;;;;;;:31;37376:66;37372:97;;;37452:7;;37461;;37444:25;;;;;;;;;37372:97;37494:34;37506:7;:21;37514:9;37524:1;37514:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37506:21;;;;;;;;;;;;;;;;37494:7;:11;;:34;;;;:::i;:::-;37484:44;;37553:34;37565:7;:21;37573:9;37583:1;37573:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37565:21;;;;;;;;;;;;;;;;37553:7;:11;;:34;;;;:::i;:::-;37543:44;;37352:3;;;;;:::i;:::-;;;;37310:289;;;;37623:20;37635:7;;37623;;:11;;:20;;;;:::i;:::-;37613:7;:30;37609:61;;;37653:7;;37662;;37645:25;;;;;;;;37609:61;37689:7;37698;37681:25;;;;;;37159:555;;;:::o;36213:330::-;36273:7;36282;36291;36311:12;36326:24;36342:7;36326:15;:24::i;:::-;36311:39;;36361:18;36382:30;36404:7;36382:21;:30::i;:::-;36361:51;;36423:23;36449:33;36471:10;36449:17;36461:4;36449:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;36423:59;;36501:15;36518:4;36524:10;36493:42;;;;;;;;;36213:330;;;;;:::o;36551:429::-;36666:7;36675;36684;36704:15;36722:24;36734:11;36722:7;:11;;:24;;;;:::i;:::-;36704:42;;36757:12;36772:21;36781:11;36772:4;:8;;:21;;;;:::i;:::-;36757:36;;36804:18;36825:27;36840:11;36825:10;:14;;:27;;;;:::i;:::-;36804:48;;36863:23;36889:33;36911:10;36889:17;36901:4;36889:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;36863:59;;36941:7;36950:15;36967:4;36933:39;;;;;;;;;;36551:429;;;;;;;;:::o;35197:234::-;35254:1;35243:7;;:12;:34;;;;;35276:1;35259:13;;:18;35243:34;35240:46;;;35279:7;;35240:46;35316:7;;35298:15;:25;;;;35358:13;;35334:21;:37;;;;35394:1;35384:7;:11;;;;35422:1;35406:13;:17;;;;35197:234;:::o;43630:563::-;43733:15;43750:23;43775:12;43789:23;43814:12;43828:18;43850:19;43861:7;43850:10;:19::i;:::-;43732:137;;;;;;;;;;;;43898:28;43918:7;43898;:15;43906:6;43898:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43880:7;:15;43888:6;43880:15;;;;;;;;;;;;;;;:46;;;;43955:28;43975:7;43955;:15;43963:6;43955:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43937:7;:15;43945:6;43937:15;;;;;;;;;;;;;;;:46;;;;44015:39;44038:15;44015:7;:18;44023:9;44015:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43994:7;:18;44002:9;43994:18;;;;;;;;;;;;;;;:60;;;;44065:26;44080:10;44065:14;:26::i;:::-;44102:23;44114:4;44120;44102:11;:23::i;:::-;44158:9;44141:44;;44150:6;44141:44;;;44169:15;44141:44;;;;;;:::i;:::-;;;;;;;;43630:563;;;;;;;;;:::o;43047:575::-;43148:15;43165:23;43190:12;43204:23;43229:12;43243:18;43265:19;43276:7;43265:10;:19::i;:::-;43147:137;;;;;;;;;;;;43313:28;43333:7;43313;:15;43321:6;43313:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43295:7;:15;43303:6;43295:15;;;;;;;;;;;;;;;:46;;;;43373:39;43396:15;43373:7;:18;43381:9;43373:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43352:7;:18;43360:9;43352:18;;;;;;;;;;;;;;;:60;;;;43444:39;43467:15;43444:7;:18;43452:9;43444:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43423:7;:18;43431:9;43423:18;;;;;;;;;;;;;;;:60;;;;43494:26;43509:10;43494:14;:26::i;:::-;43531:23;43543:4;43549;43531:11;:23::i;:::-;43587:9;43570:44;;43579:6;43570:44;;;43598:15;43570:44;;;;;;:::i;:::-;;;;;;;;43047:575;;;;;;;;;:::o;42537:502::-;42636:15;42653:23;42678:12;42692:23;42717:12;42731:18;42753:19;42764:7;42753:10;:19::i;:::-;42635:137;;;;;;;;;;;;42801:28;42821:7;42801;:15;42809:6;42801:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42783:7;:15;42791:6;42783:15;;;;;;;;;;;;;;;:46;;;;42861:39;42884:15;42861:7;:18;42869:9;42861:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42840:7;:18;42848:9;42840:18;;;;;;;;;;;;;;;:60;;;;42911:26;42926:10;42911:14;:26::i;:::-;42948:23;42960:4;42966;42948:11;:23::i;:::-;43004:9;42987:44;;42996:6;42987:44;;;43015:15;42987:44;;;;;;:::i;:::-;;;;;;;;42537:502;;;;;;;;;:::o;44201:634::-;44304:15;44321:23;44346:12;44360:23;44385:12;44399:18;44421:19;44432:7;44421:10;:19::i;:::-;44303:137;;;;;;;;;;;;44469:28;44489:7;44469;:15;44477:6;44469:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44451:7;:15;44459:6;44451:15;;;;;;;;;;;;;;;:46;;;;44526:28;44546:7;44526;:15;44534:6;44526:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44508:7;:15;44516:6;44508:15;;;;;;;;;;;;;;;:46;;;;44586:39;44609:15;44586:7;:18;44594:9;44586:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44565:7;:18;44573:9;44565:18;;;;;;;;;;;;;;;:60;;;;44657:39;44680:15;44657:7;:18;44665:9;44657:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44636:7;:18;44644:9;44636:18;;;;;;;;;;;;;;;:60;;;;44707:26;44722:10;44707:14;:26::i;:::-;44744:23;44756:4;44762;44744:11;:23::i;:::-;44800:9;44783:44;;44792:6;44783:44;;;44811:15;44783:44;;;;;;:::i;:::-;;;;;;;;44201:634;;;;;;;;;:::o;35439:125::-;35493:15;;35483:7;:25;;;;35535:21;;35519:13;:37;;;;35439:125::o;5779:98::-;5837:7;5868:1;5864;:5;;;;:::i;:::-;5857:12;;5779:98;;;;:::o;38085:154::-;38149:7;38176:55;38215:5;38176:20;38188:7;;38176;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;38169:62;;38085:154;;;:::o;38247:166::-;38317:7;38344:61;38389:5;38344:26;38356:13;;38344:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;38337:68;;38247:166;;;:::o;6127:98::-;6185:7;6216:1;6212;:5;;;;:::i;:::-;6205:12;;6127:98;;;;:::o;37722:355::-;37785:19;37808:10;:8;:10::i;:::-;37785:33;;37829:18;37850:27;37865:11;37850:10;:14;;:27;;;;:::i;:::-;37829:48;;37913:38;37940:10;37913:7;:22;37929:4;37913:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;37888:7;:22;37904:4;37888:22;;;;;;;;;;;;;;;:63;;;;37965:11;:26;37985:4;37965:26;;;;;;;;;;;;;;;;;;;;;;;;;37962:107;;;38031:38;38058:10;38031:7;:22;38047:4;38031:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;38006:7;:22;38022:4;38006:22;;;;;;;;;;;;;;;:63;;;;37962:107;37722:355;;;:::o;35631:147::-;35709:17;35721:4;35709:7;;:11;;:17;;;;:::i;:::-;35699:7;:27;;;;35750:20;35765:4;35750:10;;:14;;:20;;;;:::i;:::-;35737:10;:33;;;;35631:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;653:87;;;;:::o;746:262::-;805:6;854:2;842:9;833:7;829:23;825:32;822:2;;;870:1;867;860:12;822:2;913:1;938:53;983:7;974:6;963:9;959:22;938:53;:::i;:::-;928:63;;884:117;812:196;;;;:::o;1014:284::-;1084:6;1133:2;1121:9;1112:7;1108:23;1104:32;1101:2;;;1149:1;1146;1139:12;1101:2;1192:1;1217:64;1273:7;1264:6;1253:9;1249:22;1217:64;:::i;:::-;1207:74;;1163:128;1091:207;;;;:::o;1304:278::-;1371:6;1420:2;1408:9;1399:7;1395:23;1391:32;1388:2;;;1436:1;1433;1426:12;1388:2;1479:1;1504:61;1557:7;1548:6;1537:9;1533:22;1504:61;:::i;:::-;1494:71;;1450:125;1378:204;;;;:::o;1588:407::-;1656:6;1664;1713:2;1701:9;1692:7;1688:23;1684:32;1681:2;;;1729:1;1726;1719:12;1681:2;1772:1;1797:53;1842:7;1833:6;1822:9;1818:22;1797:53;:::i;:::-;1787:63;;1743:117;1899:2;1925:53;1970:7;1961:6;1950:9;1946:22;1925:53;:::i;:::-;1915:63;;1870:118;1671:324;;;;;:::o;2001:552::-;2078:6;2086;2094;2143:2;2131:9;2122:7;2118:23;2114:32;2111:2;;;2159:1;2156;2149:12;2111:2;2202:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2173:117;2329:2;2355:53;2400:7;2391:6;2380:9;2376:22;2355:53;:::i;:::-;2345:63;;2300:118;2457:2;2483:53;2528:7;2519:6;2508:9;2504:22;2483:53;:::i;:::-;2473:63;;2428:118;2101:452;;;;;:::o;2559:407::-;2627:6;2635;2684:2;2672:9;2663:7;2659:23;2655:32;2652:2;;;2700:1;2697;2690:12;2652:2;2743:1;2768:53;2813:7;2804:6;2793:9;2789:22;2768:53;:::i;:::-;2758:63;;2714:117;2870:2;2896:53;2941:7;2932:6;2921:9;2917:22;2896:53;:::i;:::-;2886:63;;2841:118;2642:324;;;;;:::o;2972:256::-;3028:6;3077:2;3065:9;3056:7;3052:23;3048:32;3045:2;;;3093:1;3090;3083:12;3045:2;3136:1;3161:50;3203:7;3194:6;3183:9;3179:22;3161:50;:::i;:::-;3151:60;;3107:114;3035:193;;;;:::o;3234:262::-;3293:6;3342:2;3330:9;3321:7;3317:23;3313:32;3310:2;;;3358:1;3355;3348:12;3310:2;3401:1;3426:53;3471:7;3462:6;3451:9;3447:22;3426:53;:::i;:::-;3416:63;;3372:117;3300:196;;;;:::o;3502:401::-;3567:6;3575;3624:2;3612:9;3603:7;3599:23;3595:32;3592:2;;;3640:1;3637;3630:12;3592:2;3683:1;3708:53;3753:7;3744:6;3733:9;3729:22;3708:53;:::i;:::-;3698:63;;3654:117;3810:2;3836:50;3878:7;3869:6;3858:9;3854:22;3836:50;:::i;:::-;3826:60;;3781:115;3582:321;;;;;:::o;3909:179::-;3978:10;3999:46;4041:3;4033:6;3999:46;:::i;:::-;4077:4;4072:3;4068:14;4054:28;;3989:99;;;;:::o;4094:142::-;4197:32;4223:5;4197:32;:::i;:::-;4192:3;4185:45;4175:61;;:::o;4242:108::-;4319:24;4337:5;4319:24;:::i;:::-;4314:3;4307:37;4297:53;;:::o;4356:118::-;4443:24;4461:5;4443:24;:::i;:::-;4438:3;4431:37;4421:53;;:::o;4510:732::-;4629:3;4658:54;4706:5;4658:54;:::i;:::-;4728:86;4807:6;4802:3;4728:86;:::i;:::-;4721:93;;4838:56;4888:5;4838:56;:::i;:::-;4917:7;4948:1;4933:284;4958:6;4955:1;4952:13;4933:284;;;5034:6;5028:13;5061:63;5120:3;5105:13;5061:63;:::i;:::-;5054:70;;5147:60;5200:6;5147:60;:::i;:::-;5137:70;;4993:224;4980:1;4977;4973:9;4968:14;;4933:284;;;4937:14;5233:3;5226:10;;4634:608;;;;;;;:::o;5248:109::-;5329:21;5344:5;5329:21;:::i;:::-;5324:3;5317:34;5307:50;;:::o;5363:185::-;5477:64;5535:5;5477:64;:::i;:::-;5472:3;5465:77;5455:93;;:::o;5554:147::-;5649:45;5688:5;5649:45;:::i;:::-;5644:3;5637:58;5627:74;;:::o;5707:364::-;5795:3;5823:39;5856:5;5823:39;:::i;:::-;5878:71;5942:6;5937:3;5878:71;:::i;:::-;5871:78;;5958:52;6003:6;5998:3;5991:4;5984:5;5980:16;5958:52;:::i;:::-;6035:29;6057:6;6035:29;:::i;:::-;6030:3;6026:39;6019:46;;5799:272;;;;;:::o;6077:366::-;6219:3;6240:67;6304:2;6299:3;6240:67;:::i;:::-;6233:74;;6316:93;6405:3;6316:93;:::i;:::-;6434:2;6429:3;6425:12;6418:19;;6223:220;;;:::o;6449:366::-;6591:3;6612:67;6676:2;6671:3;6612:67;:::i;:::-;6605:74;;6688:93;6777:3;6688:93;:::i;:::-;6806:2;6801:3;6797:12;6790:19;;6595:220;;;:::o;6821:366::-;6963:3;6984:67;7048:2;7043:3;6984:67;:::i;:::-;6977:74;;7060:93;7149:3;7060:93;:::i;:::-;7178:2;7173:3;7169:12;7162:19;;6967:220;;;:::o;7193:366::-;7335:3;7356:67;7420:2;7415:3;7356:67;:::i;:::-;7349:74;;7432:93;7521:3;7432:93;:::i;:::-;7550:2;7545:3;7541:12;7534:19;;7339:220;;;:::o;7565:366::-;7707:3;7728:67;7792:2;7787:3;7728:67;:::i;:::-;7721:74;;7804:93;7893:3;7804:93;:::i;:::-;7922:2;7917:3;7913:12;7906:19;;7711:220;;;:::o;7937:366::-;8079:3;8100:67;8164:2;8159:3;8100:67;:::i;:::-;8093:74;;8176:93;8265:3;8176:93;:::i;:::-;8294:2;8289:3;8285:12;8278:19;;8083:220;;;:::o;8309:366::-;8451:3;8472:67;8536:2;8531:3;8472:67;:::i;:::-;8465:74;;8548:93;8637:3;8548:93;:::i;:::-;8666:2;8661:3;8657:12;8650:19;;8455:220;;;:::o;8681:366::-;8823:3;8844:67;8908:2;8903:3;8844:67;:::i;:::-;8837:74;;8920:93;9009:3;8920:93;:::i;:::-;9038:2;9033:3;9029:12;9022:19;;8827:220;;;:::o;9053:366::-;9195:3;9216:67;9280:2;9275:3;9216:67;:::i;:::-;9209:74;;9292:93;9381:3;9292:93;:::i;:::-;9410:2;9405:3;9401:12;9394:19;;9199:220;;;:::o;9425:366::-;9567:3;9588:67;9652:2;9647:3;9588:67;:::i;:::-;9581:74;;9664:93;9753:3;9664:93;:::i;:::-;9782:2;9777:3;9773:12;9766:19;;9571:220;;;:::o;9797:366::-;9939:3;9960:67;10024:2;10019:3;9960:67;:::i;:::-;9953:74;;10036:93;10125:3;10036:93;:::i;:::-;10154:2;10149:3;10145:12;10138:19;;9943:220;;;:::o;10169:118::-;10256:24;10274:5;10256:24;:::i;:::-;10251:3;10244:37;10234:53;;:::o;10293:112::-;10376:22;10392:5;10376:22;:::i;:::-;10371:3;10364:35;10354:51;;:::o;10411:222::-;10504:4;10542:2;10531:9;10527:18;10519:26;;10555:71;10623:1;10612:9;10608:17;10599:6;10555:71;:::i;:::-;10509:124;;;;:::o;10639:254::-;10748:4;10786:2;10775:9;10771:18;10763:26;;10799:87;10883:1;10872:9;10868:17;10859:6;10799:87;:::i;:::-;10753:140;;;;:::o;10899:210::-;10986:4;11024:2;11013:9;11009:18;11001:26;;11037:65;11099:1;11088:9;11084:17;11075:6;11037:65;:::i;:::-;10991:118;;;;:::o;11115:276::-;11235:4;11273:2;11262:9;11258:18;11250:26;;11286:98;11381:1;11370:9;11366:17;11357:6;11286:98;:::i;:::-;11240:151;;;;:::o;11397:313::-;11510:4;11548:2;11537:9;11533:18;11525:26;;11597:9;11591:4;11587:20;11583:1;11572:9;11568:17;11561:47;11625:78;11698:4;11689:6;11625:78;:::i;:::-;11617:86;;11515:195;;;;:::o;11716:419::-;11882:4;11920:2;11909:9;11905:18;11897:26;;11969:9;11963:4;11959:20;11955:1;11944:9;11940:17;11933:47;11997:131;12123:4;11997:131;:::i;:::-;11989:139;;11887:248;;;:::o;12141:419::-;12307:4;12345:2;12334:9;12330:18;12322:26;;12394:9;12388:4;12384:20;12380:1;12369:9;12365:17;12358:47;12422:131;12548:4;12422:131;:::i;:::-;12414:139;;12312:248;;;:::o;12566:419::-;12732:4;12770:2;12759:9;12755:18;12747:26;;12819:9;12813:4;12809:20;12805:1;12794:9;12790:17;12783:47;12847:131;12973:4;12847:131;:::i;:::-;12839:139;;12737:248;;;:::o;12991:419::-;13157:4;13195:2;13184:9;13180:18;13172:26;;13244:9;13238:4;13234:20;13230:1;13219:9;13215:17;13208:47;13272:131;13398:4;13272:131;:::i;:::-;13264:139;;13162:248;;;:::o;13416:419::-;13582:4;13620:2;13609:9;13605:18;13597:26;;13669:9;13663:4;13659:20;13655:1;13644:9;13640:17;13633:47;13697:131;13823:4;13697:131;:::i;:::-;13689:139;;13587:248;;;:::o;13841:419::-;14007:4;14045:2;14034:9;14030:18;14022:26;;14094:9;14088:4;14084:20;14080:1;14069:9;14065:17;14058:47;14122:131;14248:4;14122:131;:::i;:::-;14114:139;;14012:248;;;:::o;14266:419::-;14432:4;14470:2;14459:9;14455:18;14447:26;;14519:9;14513:4;14509:20;14505:1;14494:9;14490:17;14483:47;14547:131;14673:4;14547:131;:::i;:::-;14539:139;;14437:248;;;:::o;14691:419::-;14857:4;14895:2;14884:9;14880:18;14872:26;;14944:9;14938:4;14934:20;14930:1;14919:9;14915:17;14908:47;14972:131;15098:4;14972:131;:::i;:::-;14964:139;;14862:248;;;:::o;15116:419::-;15282:4;15320:2;15309:9;15305:18;15297:26;;15369:9;15363:4;15359:20;15355:1;15344:9;15340:17;15333:47;15397:131;15523:4;15397:131;:::i;:::-;15389:139;;15287:248;;;:::o;15541:419::-;15707:4;15745:2;15734:9;15730:18;15722:26;;15794:9;15788:4;15784:20;15780:1;15769:9;15765:17;15758:47;15822:131;15948:4;15822:131;:::i;:::-;15814:139;;15712:248;;;:::o;15966:419::-;16132:4;16170:2;16159:9;16155:18;16147:26;;16219:9;16213:4;16209:20;16205:1;16194:9;16190:17;16183:47;16247:131;16373:4;16247:131;:::i;:::-;16239:139;;16137:248;;;:::o;16391:222::-;16484:4;16522:2;16511:9;16507:18;16499:26;;16535:71;16603:1;16592:9;16588:17;16579:6;16535:71;:::i;:::-;16489:124;;;;:::o;16619:831::-;16882:4;16920:3;16909:9;16905:19;16897:27;;16934:71;17002:1;16991:9;16987:17;16978:6;16934:71;:::i;:::-;17015:80;17091:2;17080:9;17076:18;17067:6;17015:80;:::i;:::-;17142:9;17136:4;17132:20;17127:2;17116:9;17112:18;17105:48;17170:108;17273:4;17264:6;17170:108;:::i;:::-;17162:116;;17288:72;17356:2;17345:9;17341:18;17332:6;17288:72;:::i;:::-;17370:73;17438:3;17427:9;17423:19;17414:6;17370:73;:::i;:::-;16887:563;;;;;;;;:::o;17456:214::-;17545:4;17583:2;17572:9;17568:18;17560:26;;17596:67;17660:1;17649:9;17645:17;17636:6;17596:67;:::i;:::-;17550:120;;;;:::o;17676:132::-;17743:4;17766:3;17758:11;;17796:4;17791:3;17787:14;17779:22;;17748:60;;;:::o;17814:114::-;17881:6;17915:5;17909:12;17899:22;;17888:40;;;:::o;17934:99::-;17986:6;18020:5;18014:12;18004:22;;17993:40;;;:::o;18039:113::-;18109:4;18141;18136:3;18132:14;18124:22;;18114:38;;;:::o;18158:184::-;18257:11;18291:6;18286:3;18279:19;18331:4;18326:3;18322:14;18307:29;;18269:73;;;;:::o;18348:169::-;18432:11;18466:6;18461:3;18454:19;18506:4;18501:3;18497:14;18482:29;;18444:73;;;;:::o;18523:305::-;18563:3;18582:20;18600:1;18582:20;:::i;:::-;18577:25;;18616:20;18634:1;18616:20;:::i;:::-;18611:25;;18770:1;18702:66;18698:74;18695:1;18692:81;18689:2;;;18776:18;;:::i;:::-;18689:2;18820:1;18817;18813:9;18806:16;;18567:261;;;;:::o;18834:185::-;18874:1;18891:20;18909:1;18891:20;:::i;:::-;18886:25;;18925:20;18943:1;18925:20;:::i;:::-;18920:25;;18964:1;18954:2;;18969:18;;:::i;:::-;18954:2;19011:1;19008;19004:9;18999:14;;18876:143;;;;:::o;19025:348::-;19065:7;19088:20;19106:1;19088:20;:::i;:::-;19083:25;;19122:20;19140:1;19122:20;:::i;:::-;19117:25;;19310:1;19242:66;19238:74;19235:1;19232:81;19227:1;19220:9;19213:17;19209:105;19206:2;;;19317:18;;:::i;:::-;19206:2;19365:1;19362;19358:9;19347:20;;19073:300;;;;:::o;19379:191::-;19419:4;19439:20;19457:1;19439:20;:::i;:::-;19434:25;;19473:20;19491:1;19473:20;:::i;:::-;19468:25;;19512:1;19509;19506:8;19503:2;;;19517:18;;:::i;:::-;19503:2;19562:1;19559;19555:9;19547:17;;19424:146;;;;:::o;19576:96::-;19613:7;19642:24;19660:5;19642:24;:::i;:::-;19631:35;;19621:51;;;:::o;19678:104::-;19723:7;19752:24;19770:5;19752:24;:::i;:::-;19741:35;;19731:51;;;:::o;19788:90::-;19822:7;19865:5;19858:13;19851:21;19840:32;;19830:48;;;:::o;19884:126::-;19921:7;19961:42;19954:5;19950:54;19939:65;;19929:81;;;:::o;20016:77::-;20053:7;20082:5;20071:16;;20061:32;;;:::o;20099:86::-;20134:7;20174:4;20167:5;20163:16;20152:27;;20142:43;;;:::o;20191:180::-;20268:9;20301:64;20359:5;20301:64;:::i;:::-;20288:77;;20278:93;;;:::o;20377:140::-;20454:9;20487:24;20505:5;20487:24;:::i;:::-;20474:37;;20464:53;;;:::o;20523:121::-;20581:9;20614:24;20632:5;20614:24;:::i;:::-;20601:37;;20591:53;;;:::o;20650:307::-;20718:1;20728:113;20742:6;20739:1;20736:13;20728:113;;;20827:1;20822:3;20818:11;20812:18;20808:1;20803:3;20799:11;20792:39;20764:2;20761:1;20757:10;20752:15;;20728:113;;;20859:6;20856:1;20853:13;20850:2;;;20939:1;20930:6;20925:3;20921:16;20914:27;20850:2;20699:258;;;;:::o;20963:320::-;21007:6;21044:1;21038:4;21034:12;21024:22;;21091:1;21085:4;21081:12;21112:18;21102:2;;21168:4;21160:6;21156:17;21146:27;;21102:2;21230;21222:6;21219:14;21199:18;21196:38;21193:2;;;21249:18;;:::i;:::-;21193:2;21014:269;;;;:::o;21289:233::-;21328:3;21351:24;21369:5;21351:24;:::i;:::-;21342:33;;21397:66;21390:5;21387:77;21384:2;;;21467:18;;:::i;:::-;21384:2;21514:1;21507:5;21503:13;21496:20;;21332:190;;;:::o;21528:180::-;21576:77;21573:1;21566:88;21673:4;21670:1;21663:15;21697:4;21694:1;21687:15;21714:180;21762:77;21759:1;21752:88;21859:4;21856:1;21849:15;21883:4;21880:1;21873:15;21900:180;21948:77;21945:1;21938:88;22045:4;22042:1;22035:15;22069:4;22066:1;22059:15;22086:102;22127:6;22178:2;22174:7;22169:2;22162:5;22158:14;22154:28;22144:38;;22134:54;;;:::o;22194:222::-;22334:34;22330:1;22322:6;22318:14;22311:58;22403:5;22398:2;22390:6;22386:15;22379:30;22300:116;:::o;22422:229::-;22562:34;22558:1;22550:6;22546:14;22539:58;22631:12;22626:2;22618:6;22614:15;22607:37;22528:123;:::o;22657:225::-;22797:34;22793:1;22785:6;22781:14;22774:58;22866:8;22861:2;22853:6;22849:15;22842:33;22763:119;:::o;22888:221::-;23028:34;23024:1;23016:6;23012:14;23005:58;23097:4;23092:2;23084:6;23080:15;23073:29;22994:115;:::o;23115:177::-;23255:29;23251:1;23243:6;23239:14;23232:53;23221:71;:::o;23298:181::-;23438:33;23434:1;23426:6;23422:14;23415:57;23404:75;:::o;23485:227::-;23625:34;23621:1;23613:6;23609:14;23602:58;23694:10;23689:2;23681:6;23677:15;23670:35;23591:121;:::o;23718:182::-;23858:34;23854:1;23846:6;23842:14;23835:58;23824:76;:::o;23906:228::-;24046:34;24042:1;24034:6;24030:14;24023:58;24115:11;24110:2;24102:6;24098:15;24091:36;24012:122;:::o;24140:224::-;24280:34;24276:1;24268:6;24264:14;24257:58;24349:7;24344:2;24336:6;24332:15;24325:32;24246:118;:::o;24370:223::-;24510:34;24506:1;24498:6;24494:14;24487:58;24579:6;24574:2;24566:6;24562:15;24555:31;24476:117;:::o;24599:122::-;24672:24;24690:5;24672:24;:::i;:::-;24665:5;24662:35;24652:2;;24711:1;24708;24701:12;24652:2;24642:79;:::o;24727:138::-;24808:32;24834:5;24808:32;:::i;:::-;24801:5;24798:43;24788:2;;24855:1;24852;24845:12;24788:2;24778:87;:::o;24871:116::-;24941:21;24956:5;24941:21;:::i;:::-;24934:5;24931:32;24921:2;;24977:1;24974;24967:12;24921:2;24911:76;:::o;24993:122::-;25066:24;25084:5;25066:24;:::i;:::-;25059:5;25056:35;25046:2;;25105:1;25102;25095:12;25046:2;25036:79;:::o

Swarm Source

ipfs://0aa1ae268c5ba8adc34c906e0ccda687a1cf68e9f31ff932037fa968618c5fc8
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.