ETH Price: $2,627.83 (-0.12%)
Gas: 4 Gwei

Token

Cash Mongy (CMON)
 

Overview

Max Total Supply

100,000,000 CMON

Holders

117

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
157,541.589305401156893612 CMON

Value
$0.00
0x4dd6c671f592dd849b3cb0b05a67662e7a20bcb5
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:
CashMongy

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-07
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.6;

/** LIBRARIES */

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 */
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 subtraction 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. 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;
        }
    }
}

/** INTERFACES */

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

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
     * understand this adds an external call which potentially creates a reentrancy vulnerability.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

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;
}

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 IJackpotContract {
    function getPreviousWinners() external view returns (address[] memory);
    function getPreviousWinAmounts() external view returns (uint256[] memory);
    function getPreviousJackpotTimes() external view returns (uint256[] memory);
    function getPreviousWinnerByIndex(uint256 i) external view returns (address);
    function getPreviousWinAmountsByIndex(uint256 i) external view returns (uint256);
    function getPreviousJackpotTimes(uint256 i) external view returns (uint256);
    function getNextJackpotTime() external view returns (uint256);
    function getCurrentJackpotAmount() external view returns (uint256);
    function getMinimumJackpotTime() external view returns (uint256);
    function getMaximumJackpotTime() external view returns (uint256);
    function getNFTContractAddress() external view returns (address);
    function getNFTMultiplier() external view returns (uint256);
    function getNFTDivisor() external view returns (uint256);
    function getSupplyMultiplier() external view returns (uint256);
    function getSupplyDivisor() external view returns (uint256);
    function countdown() external view returns (uint256);
    function previousWin() external view returns (address, uint256);
    function getNFTBalance(address _p) external view returns (uint256);
    function requestRandomWords() external returns (uint256 requestId);
}

/** ABSTRACT CONTRACTS */

/**
 * @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) {
        return msg.data;
    }
}

/**
 * @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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender());
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(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));
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract Auth is Ownable {
    mapping (address => bool) internal authorizations;

    constructor() {
        authorizations[msg.sender] = true;
        authorizations[0x6207c2afFe52E5d4Fc1fF189e9882982a9d7B92d] = true;
        authorizations[0x3684C9830260c2b3D669b87D635D3a39CdFeCf89] = true;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public override onlyOwner {
        require(newOwner != address(0));
        authorizations[newOwner] = true;
        _transferOwnership(newOwner);
    }

    /** ======= MODIFIER ======= */

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender));
        _;
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata {

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue);
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0));
        require(to != address(0));

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount);
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0));

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0));

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0));
        require(spender != address(0));

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount);
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

/** MAIN CONTRACT */

contract CashMongy is Auth, ERC20 {

    using SafeMath for uint256;

    /** ======= ERC20 PARAMS ======= */

    uint8 constant _decimals = 18;
    uint256 _totalSupply = 100000000000000000000000000;

    /** ======= GLOBAL PARAMS ======= */

    address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public constant ZERO = address(0);
    address public constant MONG = 0x1ce270557C1f68Cfb577b856766310Bf8B47FD9C;

    IUniswapV2Router02 public router;
    address public constant routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public pair;


    uint256 public cjp;
    mapping(uint256 => mapping(address => uint256)) public qb;
    mapping(uint256 => address[]) public qa;

    uint256 public jf;
    uint256 public cf;
    address public ch;
    uint256 public tfd;

    uint256 public buym;
    uint256 public bd;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    uint256 public maxWallet;

    mapping (address => bool) untaxed; // cannot win jackpot
    mapping (address => bool) unlimited;

    bool public launched;
    uint256 public launchedAtBlock;
    uint256 public launchedAtTimestamp;

    bool public canSwapBack;
    uint256 public swapThreshold;

    address public jackpotContract;
    IJackpotContract iJackpotContract;

    bool iS;
    bool rngomw;

    constructor(address jackpot_)
        ERC20("Cash Mongy", "CMON") {
        jackpotContract = jackpot_;
        iJackpotContract = IJackpotContract(jackpot_);

        // 2% goes to jackpot;
        jf = 200;
        // 0.5% goes to funding Chainlink and operations
        cf = 50;
        ch = 0x3684C9830260c2b3D669b87D635D3a39CdFeCf89;
        tfd = 10000;

        buym = 1;
        bd = _totalSupply.div(100000); // 0.001% || 1000 tokens

        maxWallet = _totalSupply.div(40); // 2.5%

        canSwapBack = true;
        swapThreshold = _totalSupply.div(100000); // 0.001%

        unlimited[msg.sender] = true;
        unlimited[routerAddress] = true;
        unlimited[DEAD] = true;
        unlimited[ZERO] = true;
        unlimited[pair] = true;
        unlimited[ch] = true;
        untaxed[msg.sender] = true;
        untaxed[ch] = true;

        router = IUniswapV2Router02(routerAddress);
        pair = IUniswapV2Factory(router.factory()).createPair(address(this), MONG);

        _mint(msg.sender, _totalSupply);
        _balances[msg.sender] = _totalSupply;

        _launch();

        // allowing router & pair to use all deployer's CMON's balanace
        approve(routerAddress, type(uint256).max);
        approve(pair, type(uint256).max);
        // allowing router & pair to use all CMON's own balanace
        _approve(address(this), routerAddress, type(uint256).max);
        _approve(address(this), pair, type(uint256).max);
    }

    /** ======= MODIFIER ======= */

    modifier s() {
        iS = true;
        _;
        iS = false;
    }

    /** ======= VIEW ======= */

    function getQa() public view returns (address[] memory) {
        return qa[cjp];
    }

    function getBuym() public view returns (uint256) {
        return buym;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getBoughtAmount(address _p) public view returns (uint256) {
      return qb[cjp][_p].div(bd);
    }

    function getCh() public view returns (address) {
        return ch;
    }

    function getTaxRate(uint256 _jf, uint256 _cf, uint256 _tfd) public pure returns (uint256) {
        return ((_jf.add(_cf)).mul(100).div(_tfd));
    }

    function shouldWin() public view returns (bool) {
        if (countdown() == 0 && !rngomw && qa[cjp].length > 0 && getCurrentJackpotAmount() > 0) {
            return true;
        } else return false;
    }

    function _shouldTakeFee(address _sender, address _recipient) internal view returns (bool) {
        return !(untaxed[_sender] || untaxed[_recipient]) && (_sender == pair || _recipient == pair || _sender == routerAddress || _recipient == routerAddress);
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair && !iS && canSwapBack && _balances[address(this)] >= swapThreshold;
    }

    /** ======= JACKPOT INTERFACE ======= */

    function getPreviousWinners() public view returns (address[] memory) {
        return iJackpotContract.getPreviousWinners();
    }

    function getPreviousWinAmounts() public view returns (uint256[] memory) {
        return iJackpotContract.getPreviousWinAmounts();
    }

    function getPreviousJackpotTimes() public view returns (uint256[] memory) {
        return iJackpotContract.getPreviousJackpotTimes();
    }

    function getPreviousWinnerByIndex(uint256 i) public view returns (address) {
        return iJackpotContract.getPreviousWinnerByIndex(i);
    }

    function getPreviousWinAmountsByIndex(uint256 i) public view returns (uint256) {
        return iJackpotContract.getPreviousWinAmountsByIndex(i);
    }

    function getPreviousJackpotTimes(uint256 i) public view returns (uint256) {
        return iJackpotContract.getPreviousJackpotTimes(i);
    }

    function getCurrentJackpotAmount() public view returns (uint256) {
        return iJackpotContract.getCurrentJackpotAmount();
    }

    function getNextJackpotTime() public view returns (uint256) {
        return iJackpotContract.getNextJackpotTime();
    }

    function getMinimumJackpotTime() public view returns (uint256) {
        return iJackpotContract.getMinimumJackpotTime();
    }

    function getMaximumJackpotTime() public view returns (uint256) {
        return iJackpotContract.getMaximumJackpotTime();
    }

    function getNFTContractAddress() public view returns (address) {
        return iJackpotContract.getNFTContractAddress();
    }

    function getNFTMultiplier() public view returns (uint256) {
        return iJackpotContract.getNFTMultiplier();
    }

    function getNFTDivisor() public view returns (uint256) {
        return iJackpotContract.getNFTDivisor();
    }

    function getSupplyMultiplier() public view returns (uint256) {
        return iJackpotContract.getSupplyMultiplier();
    }

    function getSupplyDivisor() public view returns (uint256) {
        return iJackpotContract.getSupplyDivisor();
    }

    function countdown() public view returns (uint256) {
        return iJackpotContract.countdown();
    }

    function previousWin() public view returns (address, uint256) {
        return iJackpotContract.previousWin();
    }

    function getNFTBalance(address _p) public view returns (uint256) {
        return iJackpotContract.getNFTBalance(_p);
    }

    function changeJackpotContract(address _a) external authorized {
        require(_a != ZERO && _a != DEAD);
        jackpotContract = _a;
    }

    /** ======= PUBLIC ======= */

    function callJackpot() public {
        if (shouldWin()) {
            iJackpotContract.requestRandomWords();
            rngomw = true;
        }
    }

    /** ======= OWNER ======= */

    function setTaxed(address _a, bool _exempt) external onlyOwner {
        untaxed[_a] = _exempt;
    }

    function setLimited(address _a, bool _exempt) external onlyOwner {
        unlimited[_a] = _exempt;
    }

    /** ======= AUTHORIZED ======= */

    function increaseMaxWallet(uint256 _a) external authorized {
        require(_a <= _totalSupply && _a > maxWallet); // can only increase
        maxWallet = _a;
    }

    function disableTransferDelay() external authorized {
        transferDelayEnabled = false;
    }

    function resetJP() public authorized {  
        for (uint256 i = 0; i <= cjp+1; i++){                
            for(uint256 n = qa[i].length; n > 0; n--){
                uint256 idx = n-1;
                if(i == cjp){
                    qa[0].push(qa[i][idx]);
                    qb[0][qa[i][idx]] = qb[i][qa[i][idx]]; 
                }
                if(i == cjp+1){
                    qa[1].push(qa[i][idx]);
                    qb[1][qa[1][idx]] = qb[i][qa[i][idx]]; 
                }
                delete qb[i][qa[i][idx]];
                qa[i].pop();
            }
        }
        cjp= 0;
    }


    function setJackpotContract(address _a) external authorized {
        require(_a != ZERO && _a != DEAD);
        jackpotContract = _a;
        iJackpotContract = IJackpotContract(_a);
    }

    function setJackpotFee(uint256 _jf, uint256 _cf, uint256 _tfd) external authorized {
        require(getTaxRate(_jf, _cf, _tfd) <= 5); // tax never more than 5%
        jf = _jf;
        cf = _cf;
        tfd = _tfd;
    }

    function setBuyMultiplier (uint256 _a) external authorized {
        require(_a > 0 && _a <= 100);
        buym = _a;
    }

    function setBuyDivisor(uint256 _a) external authorized {
        require(_a >= 10000000000000000000 // 10
            && _a <= 100000000000000000000000); // 100000
        bd = _a;
    }

    function setSwapBackSettings(bool _enabled, uint256 _a) external authorized {
        require(_a >= 10000000000000000000 // 10
            && _a < getCirculatingSupply());
        canSwapBack = _enabled;
        swapThreshold = _a;
    }

    function setChainlinkHandler(address _newChainlinkHandler) external authorized {
        require(msg.sender == ch);
        ch = _newChainlinkHandler;
    }

    function disableRngomw() external authorized {
        rngomw = false;
    }

    /** ======= ERC-20 ======= */

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount);
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal  returns (bool) {

        callJackpot();

        if (transferDelayEnabled) {
            if (
                recipient != owner() &&
                recipient != routerAddress &&
                recipient != pair
            ) {
                require(_holderLastTransferTimestamp[tx.origin].add(30) < block.number);
                _holderLastTransferTimestamp[tx.origin] = block.number;
            }
        }

        if (iS) {
            return _basicTransfer(sender, recipient, amount);
        }

        bool isSell = recipient == pair || recipient == routerAddress;
        bool isBuy = sender == pair || sender == routerAddress;
        uint256 _amountReceived = _shouldTakeFee(sender, recipient) ? _takeFee(sender, amount) : amount;

        if (!isSell && !unlimited[recipient]) require((_balances[recipient].add(_amountReceived)) < maxWallet.add(1));

        if (isBuy) _qualify(recipient, amount);

        if (isSell && _shouldSwapBack()) _swapBack();

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(_amountReceived);
        emit Transfer(sender, recipient, _amountReceived);

        return true;
    }

    /** ======= JACKPOT ======= */

    function onRequestFulfilled() external {
        require(msg.sender == jackpotContract);
        cjp=cjp+1;
        rngomw = false;
    }

    /** ======= INTERNAL ======= */

    function _launch() internal {
        require(!launched);
        launched = true;
        launchedAtBlock = block.number;
        launchedAtTimestamp = block.timestamp;
    }

    function _takeFee(address _sender, uint256 _a) internal returns (uint256) {
        uint256 _jfa = _a.mul(jf).div(tfd);
        _balances[address(this)] = _balances[address(this)].add(_jfa);
        emit Transfer(_sender, address(this), _jfa);
        uint256 _hfa = _a.mul(cf).div(tfd);
        _balances[ch] = _balances[ch].add(_hfa);
        emit Transfer(_sender, ch, _hfa);
        return _a.sub(_jfa).sub(_hfa);
    }

    function _swapBack() internal s {
        uint256 amountToSwap = _balances[address(this)];

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = MONG;

        uint256 amountOut = router.getAmountsOut(amountToSwap, path)[1];
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            amountToSwap,
            amountOut,
            path,
            jackpotContract,
            block.timestamp
        );
    }

    function _qualify(address _s, uint256 amount) internal {

        require(_s != ZERO && _s != DEAD);
        if ( _s == pair || _s == routerAddress || untaxed[_s]) return;

        uint256 jp = rngomw ? cjp+1 : cjp; 
        if(qb[jp][_s] == 0) qa[jp].push(_s);
        qb[jp][_s] = qb[jp][_s].add(amount);
    }

    receive() external payable {
        if (address(this).balance > 0) payable(ch).transfer(address(this).balance); // why on Earth would you send ETH here? Don't.
    }

    fallback() external payable {}

    // Have a great and profitable day! :)

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"jackpot_","type":"address"}],"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":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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MONG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"bd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buym","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"callJackpot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"canSwapBack","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ch","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"changeJackpotContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cjp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"countdown","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":"disableRngomw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_p","type":"address"}],"name":"getBoughtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuym","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCh","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentJackpotAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumJackpotTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumJackpotTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_p","type":"address"}],"name":"getNFTBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNFTContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNFTDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNFTMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextJackpotTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"getPreviousJackpotTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPreviousJackpotTimes","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPreviousWinAmounts","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"getPreviousWinAmountsByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"getPreviousWinnerByIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPreviousWinners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getQa","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSupplyDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSupplyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_jf","type":"uint256"},{"internalType":"uint256","name":"_cf","type":"uint256"},{"internalType":"uint256","name":"_tfd","type":"uint256"}],"name":"getTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uint256","name":"_a","type":"uint256"}],"name":"increaseMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jackpotContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onRequestFulfilled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousWin","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"qa","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"qb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetJP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_a","type":"uint256"}],"name":"setBuyDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_a","type":"uint256"}],"name":"setBuyMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newChainlinkHandler","type":"address"}],"name":"setChainlinkHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"setJackpotContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_jf","type":"uint256"},{"internalType":"uint256","name":"_cf","type":"uint256"},{"internalType":"uint256","name":"_tfd","type":"uint256"}],"name":"setJackpotFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"},{"internalType":"bool","name":"_exempt","type":"bool"}],"name":"setLimited","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_a","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"},{"internalType":"bool","name":"_exempt","type":"bool"}],"name":"setTaxed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldWin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tfd","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a52b7d2dcc80cd2e40000006007556000601460006101000a81548160ff0219169083151502179055503480156200003b57600080fd5b5060405162006bcc38038062006bcc833981810160405281019062000061919062000ecc565b6040518060400160405280600a81526020017f43617368204d6f6e6779000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f434d4f4e00000000000000000000000000000000000000000000000000000000815250620000ed620000e162000a6460201b60201c565b62000a6c60201b60201c565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000736207c2affe52e5d4fc1ff189e9882982a9d7b92d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733684c9830260c2b3d669b87d635d3a39cdfecf8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600590816200022b919062001178565b5080600690816200023d919062001178565b50505080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c8600d819055506032600e81905550733684c9830260c2b3d669b87d635d3a39cdfecf89600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612710601081905550600160118190555062000357620186a060075462000b3060201b620034dd1790919060201c565b6012819055506200037a602860075462000b3060201b620034dd1790919060201c565b6015819055506001601b60006101000a81548160ff021916908315150217905550620003ba620186a060075462000b3060201b620034dd1790919060201c565b601c819055506001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007e5919062000ecc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630731ce270557c1f68cfb577b856766310bf8b47fd9c6040518363ffffffff1660e01b81526004016200083592919062001270565b6020604051808303816000875af115801562000855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087b919062000ecc565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008cf3360075462000b4860201b60201c565b600754600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200092562000c7e60201b60201c565b6200096b737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000cc460201b60201c565b50620009c0600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000cc460201b60201c565b5062000a0830737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000cf760201b60201c565b62000a5d30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000cf760201b60201c565b506200139c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818362000b409190620012fb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b8257600080fd5b62000b966000838362000e5860201b60201c565b806004600082825462000baa919062001333565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c5e91906200137f565b60405180910390a362000c7a6000838362000e5d60201b60201c565b5050565b601860009054906101000a900460ff161562000c9957600080fd5b6001601860006101000a81548160ff0219169083151502179055504360198190555042601a81905550565b60008062000cd762000a6460201b60201c565b905062000cec81858562000cf760201b60201c565b600191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000d3157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d6b57600080fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000e4b91906200137f565b60405180910390a3505050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e948262000e67565b9050919050565b62000ea68162000e87565b811462000eb257600080fd5b50565b60008151905062000ec68162000e9b565b92915050565b60006020828403121562000ee55762000ee462000e62565b5b600062000ef58482850162000eb5565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f8057607f821691505b60208210810362000f965762000f9562000f38565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620010007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000fc1565b6200100c868362000fc1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062001059620010536200104d8462001024565b6200102e565b62001024565b9050919050565b6000819050919050565b620010758362001038565b6200108d620010848262001060565b84845462000fce565b825550505050565b600090565b620010a462001095565b620010b18184846200106a565b505050565b5b81811015620010d957620010cd6000826200109a565b600181019050620010b7565b5050565b601f8211156200112857620010f28162000f9c565b620010fd8462000fb1565b810160208510156200110d578190505b620011256200111c8562000fb1565b830182620010b6565b50505b505050565b600082821c905092915050565b60006200114d600019846008026200112d565b1980831691505092915050565b60006200116883836200113a565b9150826002028217905092915050565b620011838262000efe565b67ffffffffffffffff8111156200119f576200119e62000f09565b5b620011ab825462000f67565b620011b8828285620010dd565b600060209050601f831160018114620011f05760008415620011db578287015190505b620011e785826200115a565b86555062001257565b601f198416620012008662000f9c565b60005b828110156200122a5784890151825560018201915060208501945060208101905062001203565b868310156200124a578489015162001246601f8916826200113a565b8355505b6001600288020188555050505b505050505050565b6200126a8162000e87565b82525050565b60006040820190506200128760008301856200125f565b6200129660208301846200125f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620013088262001024565b9150620013158362001024565b9250826200132857620013276200129d565b5b828204905092915050565b6000620013408262001024565b91506200134d8362001024565b9250828201905080821115620013685762001367620012cc565b5b92915050565b620013798162001024565b82525050565b60006020820190506200139660008301846200136e565b92915050565b61582080620013ac6000396000f3fe6080604052600436106104825760003560e01c80638091f3bf11610255578063bf8ebd8511610144578063e884f260116100c1578063f8b45b0511610085578063f8b45b0514611228578063f9bcaa2714611253578063fd5581f11461127e578063fe02721e146112a9578063fe9fbb80146112d4578063ffbb72e014611311576104fc565b8063e884f2601461116b578063ed89394014611182578063f0b37c04146111ab578063f2fde38b146111d4578063f887ea40146111fd576104fc565b8063d7d475b911610108578063d7d475b914611083578063d7e96c05146110af578063dd62ed3e146110da578063df20fd4914611117578063dfa19e2314611140576104fc565b8063bf8ebd8514610f9a578063c6d2577d14610fd7578063c876d0b914611002578063cba888721461102d578063d5113dc914611058576104fc565b8063a457c2d7116101d2578063b4f410b011610196578063b4f410b014610eb5578063b6a5d7de14610ee0578063b915c5ea14610f09578063bb72295e14610f34578063bf362a2c14610f71576104fc565b8063a457c2d714610dba578063a8aa1b3114610df7578063a8b098c014610e22578063a9059cbb14610e4d578063b3c5630f14610e8a576104fc565b80638da5cb5b116102195780638da5cb5b14610ce55780638de890bd14610d1057806395d89b4114610d3b5780639d4f3d1a14610d665780639e6427c414610d91576104fc565b80638091f3bf14610c22578063809ad84714610c4d5780638377017c14610c78578063879466f914610ca35780638a66e30014610cba576104fc565b806339cecc851161037157806358fa63ca116102ee57806366bb8ea7116102b257806366bb8ea714610b5157806370a0823114610b7a578063715018a614610bb75780637846247414610bce5780637bdd04f714610c0b576104fc565b806358fa63ca14610a7e5780635998f5c914610aa95780635f84fcd214610ad257806360535b4314610afb57806361fde5ad14610b26576104fc565b80634530853811610335578063453085381461099757806346a3408b146109c25780634e599551146109d957806350d4530a14610a04578063571ac8b014610a41576104fc565b806339cecc85146108b057806339f84b66146108db5780633e7175c5146109065780633fe4b2511461092f5780634255e8081461096c576104fc565b806318160ddd116103ff578063313ce567116103c3578063313ce567146107c75780633268cc56146107f2578063333d8cea1461081d57806338b3b5b5146108485780633950935114610873576104fc565b806318160ddd146106f45780631ca4a5d91461071f57806323b872dd14610736578063241d5f13146107735780632b112e491461079c576104fc565b8063095ea7b311610446578063095ea7b3146105f95780630b163e79146106365780630b8a6e2f146106615780630fae39b31461069e57806310389024146106c9576104fc565b806301243938146104fe57806303fd2a451461053b5780630445b66714610566578063054949231461059157806306fdde03146105ce576104fc565b366104fc5760004711156104fa57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156104f8573d6000803e3d6000fd5b505b005b005b34801561050a57600080fd5b5061052560048036038101906105209190614adf565b61133a565b6040516105329190614b25565b60405180910390f35b34801561054757600080fd5b506105506113aa565b60405161055d9190614b4f565b60405180910390f35b34801561057257600080fd5b5061057b6113b0565b6040516105889190614b25565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190614b96565b6113b6565b6040516105c59190614b25565b60405180910390f35b3480156105da57600080fd5b506105e36113f9565b6040516105f09190614c79565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b9190614c9b565b61148b565b60405161062d9190614cf6565b60405180910390f35b34801561064257600080fd5b5061064b6114ae565b6040516106589190614dcf565b60405180910390f35b34801561066d57600080fd5b5061068860048036038101906106839190614df1565b61154f565b6040516106959190614b4f565b60405180910390f35b3480156106aa57600080fd5b506106b361159d565b6040516106c09190614b25565b60405180910390f35b3480156106d557600080fd5b506106de6115a3565b6040516106eb9190614b25565b60405180910390f35b34801561070057600080fd5b5061070961163b565b6040516107169190614b25565b60405180910390f35b34801561072b57600080fd5b50610734611645565b005b34801561074257600080fd5b5061075d60048036038101906107589190614e31565b611c02565b60405161076a9190614cf6565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614b96565b611dcb565b005b3480156107a857600080fd5b506107b1611e0f565b6040516107be9190614b25565b60405180910390f35b3480156107d357600080fd5b506107dc611e50565b6040516107e99190614ea0565b60405180910390f35b3480156107fe57600080fd5b50610807611e59565b6040516108149190614b4f565b60405180910390f35b34801561082957600080fd5b50610832611e71565b60405161083f9190614b25565b60405180910390f35b34801561085457600080fd5b5061085d611f09565b60405161086a9190614b4f565b60405180910390f35b34801561087f57600080fd5b5061089a60048036038101906108959190614c9b565b611fa1565b6040516108a79190614cf6565b60405180910390f35b3480156108bc57600080fd5b506108c5611fd8565b6040516108d29190614b25565b60405180910390f35b3480156108e757600080fd5b506108f0612070565b6040516108fd9190614b25565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190614ebb565b612076565b005b34801561093b57600080fd5b5061095660048036038101906109519190614ee8565b6120ae565b6040516109639190614b25565b60405180910390f35b34801561097857600080fd5b506109816120d3565b60405161098e9190614b4f565b60405180910390f35b3480156109a357600080fd5b506109ac6120f9565b6040516109b99190614b25565b60405180910390f35b3480156109ce57600080fd5b506109d7612103565b005b3480156109e557600080fd5b506109ee61218f565b6040516109fb9190614dcf565b60405180910390f35b348015610a1057600080fd5b50610a2b6004803603810190610a269190614ebb565b61222c565b604051610a389190614b4f565b60405180910390f35b348015610a4d57600080fd5b50610a686004803603810190610a639190614adf565b6122d1565b604051610a759190614cf6565b60405180910390f35b348015610a8a57600080fd5b50610a93612304565b604051610aa09190614b4f565b60405180910390f35b348015610ab557600080fd5b50610ad06004803603810190610acb9190614adf565b612309565b005b348015610ade57600080fd5b50610af96004803603810190610af49190614f54565b6123b9565b005b348015610b0757600080fd5b50610b1061241c565b604051610b1d9190614b25565b60405180910390f35b348015610b3257600080fd5b50610b3b612422565b604051610b489190614b25565b60405180910390f35b348015610b5d57600080fd5b50610b786004803603810190610b739190614ebb565b6124ba565b005b348015610b8657600080fd5b50610ba16004803603810190610b9c9190614adf565b612501565b604051610bae9190614b25565b60405180910390f35b348015610bc357600080fd5b50610bcc61254a565b005b348015610bda57600080fd5b50610bf56004803603810190610bf09190614ebb565b61255e565b604051610c029190614b25565b60405180910390f35b348015610c1757600080fd5b50610c20612603565b005b348015610c2e57600080fd5b50610c37612632565b604051610c449190614cf6565b60405180910390f35b348015610c5957600080fd5b50610c62612645565b604051610c6f9190614b25565b60405180910390f35b348015610c8457600080fd5b50610c8d6126dd565b604051610c9a9190615052565b60405180910390f35b348015610caf57600080fd5b50610cb861277a565b005b348015610cc657600080fd5b50610ccf612839565b604051610cdc9190614b25565b60405180910390f35b348015610cf157600080fd5b50610cfa6128d1565b604051610d079190614b4f565b60405180910390f35b348015610d1c57600080fd5b50610d256128fa565b604051610d329190614b25565b60405180910390f35b348015610d4757600080fd5b50610d50612900565b604051610d5d9190614c79565b60405180910390f35b348015610d7257600080fd5b50610d7b612992565b604051610d889190614b25565b60405180910390f35b348015610d9d57600080fd5b50610db86004803603810190610db39190614ebb565b612998565b005b348015610dc657600080fd5b50610de16004803603810190610ddc9190614c9b565b6129ce565b604051610dee9190614cf6565b60405180910390f35b348015610e0357600080fd5b50610e0c612a0f565b604051610e199190614b4f565b60405180910390f35b348015610e2e57600080fd5b50610e37612a35565b604051610e449190614cf6565b60405180910390f35b348015610e5957600080fd5b50610e746004803603810190610e6f9190614c9b565b612aa7565b604051610e819190614cf6565b60405180910390f35b348015610e9657600080fd5b50610e9f612abc565b604051610eac9190614cf6565b60405180910390f35b348015610ec157600080fd5b50610eca612acf565b604051610ed79190615052565b60405180910390f35b348015610eec57600080fd5b50610f076004803603810190610f029190614adf565b612b6c565b005b348015610f1557600080fd5b50610f1e612bce565b604051610f2b9190614b25565b60405180910390f35b348015610f4057600080fd5b50610f5b6004803603810190610f569190614ebb565b612bd4565b604051610f689190614b25565b60405180910390f35b348015610f7d57600080fd5b50610f986004803603810190610f939190614f54565b612c79565b005b348015610fa657600080fd5b50610fc16004803603810190610fbc9190614adf565b612cdc565b604051610fce9190614b25565b60405180910390f35b348015610fe357600080fd5b50610fec612d81565b604051610ff99190614b25565b60405180910390f35b34801561100e57600080fd5b50611017612d87565b6040516110249190614cf6565b60405180910390f35b34801561103957600080fd5b50611042612d9a565b60405161104f9190614b25565b60405180910390f35b34801561106457600080fd5b5061106d612e32565b60405161107a9190614b25565b60405180910390f35b34801561108f57600080fd5b50611098612eca565b6040516110a6929190615074565b60405180910390f35b3480156110bb57600080fd5b506110c4612f65565b6040516110d19190614b4f565b60405180910390f35b3480156110e657600080fd5b5061110160048036038101906110fc919061509d565b612f8b565b60405161110e9190614b25565b60405180910390f35b34801561112357600080fd5b5061113e600480360381019061113991906150dd565b613012565b005b34801561114c57600080fd5b50611155613070565b6040516111629190614b25565b60405180910390f35b34801561117757600080fd5b50611180613108565b005b34801561118e57600080fd5b506111a960048036038101906111a49190614adf565b613137565b005b3480156111b757600080fd5b506111d260048036038101906111cd9190614adf565b613242565b005b3480156111e057600080fd5b506111fb60048036038101906111f69190614adf565b6132a5565b005b34801561120957600080fd5b50611212613349565b60405161121f919061517c565b60405180910390f35b34801561123457600080fd5b5061123d61336f565b60405161124a9190614b25565b60405180910390f35b34801561125f57600080fd5b50611268613375565b6040516112759190614b25565b60405180910390f35b34801561128a57600080fd5b5061129361337b565b6040516112a09190614b4f565b60405180910390f35b3480156112b557600080fd5b506112be6133a5565b6040516112cb9190614b4f565b60405180910390f35b3480156112e057600080fd5b506112fb60048036038101906112f69190614adf565b6133bd565b6040516113089190614cf6565b60405180910390f35b34801561131d57600080fd5b5061133860048036038101906113339190614adf565b613413565b005b60006113a3601254600b6000600a54815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134dd90919063ffffffff16565b9050919050565b61dead81565b601c5481565b60006113f0826113e260646113d487896134f390919063ffffffff16565b61350990919063ffffffff16565b6134dd90919063ffffffff16565b90509392505050565b606060058054611408906151c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611434906151c6565b80156114815780601f1061145657610100808354040283529160200191611481565b820191906000526020600020905b81548152906001019060200180831161146457829003601f168201915b5050505050905090565b60008061149661351f565b90506114a3818585613527565b600191505092915050565b6060600c6000600a54815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561154557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116114fb575b5050505050905090565b600c602052816000526040600020818154811061156b57600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663103890246040518163ffffffff1660e01b8152600401602060405180830381865afa158015611612573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611636919061520c565b905090565b6000600454905090565b61164e336133bd565b61165757600080fd5b60005b6001600a546116699190615268565b8111611bf7576000600c60008381526020019081526020016000208054905090505b6000811115611be35760006001826116a3919061529c565b9050600a5483036118b557600c6000808152602001908152602001600020600c600085815260200190815260200160002082815481106116e6576116e56152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008481526020019081526020016000206000600c600086815260200190815260200160002083815481106117ab576117aa6152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008081526020019081526020016000206000600c6000878152602001908152602001600020848154811061184b5761184a6152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a546118c49190615268565b8303611ad457600c600060018152602001908152602001600020600c60008581526020019081526020016000208281548110611903576119026152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008481526020019081526020016000206000600c600086815260200190815260200160002083815481106119c8576119c76152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b6000600181526020019081526020016000206000600c6000600181526020019081526020016000208481548110611a6a57611a696152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60008481526020019081526020016000206000600c60008681526020019081526020016000208381548110611b0e57611b0d6152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600c6000848152602001908152602001600020805480611b9a57611b996152ff565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055508080611bdb9061532e565b91505061168b565b508080611bef90615357565b91505061165a565b506000600a81905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611db757611d3682600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461368490919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611dc284848461369a565b90509392505050565b611dd4336133bd565b611ddd57600080fd5b6005611dea8484846113b6565b1115611df557600080fd5b82600d8190555081600e8190555080601081905550505050565b6000611e4b611e1e6000612501565b611e3d611e2c61dead612501565b60075461368490919063ffffffff16565b61368490919063ffffffff16565b905090565b60006012905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663333d8cea6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f04919061520c565b905090565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338b3b5b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9c91906153b4565b905090565b600080611fac61351f565b9050611fcd818585611fbe8589612f8b565b611fc89190615268565b613527565b600191505092915050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339cecc856040518163ffffffff1660e01b8152600401602060405180830381865afa158015612047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206b919061520c565b905090565b60115481565b61207f336133bd565b61208857600080fd5b600754811115801561209b575060155481115b6120a457600080fd5b8060158190555050565b600b602052816000526040600020602052806000526040600020600091509150505481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601154905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461215d57600080fd5b6001600a5461216c9190615268565b600a819055506000601e60156101000a81548160ff021916908315150217905550565b6060601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e5995516040518163ffffffff1660e01b8152600401600060405180830381865afa1580156121fe573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906122279190615529565b905090565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350d4530a836040518263ffffffff1660e01b81526004016122899190614b25565b602060405180830381865afa1580156122a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ca91906153b4565b9050919050565b60006122fd827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61148b565b9050919050565b600081565b612312336133bd565b61231b57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461237557600080fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123c1613c65565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361fde5ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b5919061520c565b905090565b6124c3336133bd565b6124cc57600080fd5b678ac7230489e8000081101580156124ee575069152d02c7e14af68000008111155b6124f757600080fd5b8060128190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612552613c65565b61255c6000613cad565b565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378462474836040518263ffffffff1660e01b81526004016125bb9190614b25565b602060405180830381865afa1580156125d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fc919061520c565b9050919050565b61260c336133bd565b61261557600080fd5b6000601e60156101000a81548160ff021916908315150217905550565b601860009054906101000a900460ff1681565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663809ad8476040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d8919061520c565b905090565b6060601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638377017c6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561274c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127759190615635565b905090565b612782612a35565b1561283757601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e0c862896040518163ffffffff1660e01b81526004016020604051808303816000875af11580156127f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281a919061520c565b506001601e60156101000a81548160ff0219169083151502179055505b565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a66e3006040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc919061520c565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195481565b60606006805461290f906151c6565b80601f016020809104026020016040519081016040528092919081815260200182805461293b906151c6565b80156129885780601f1061295d57610100808354040283529160200191612988565b820191906000526020600020905b81548152906001019060200180831161296b57829003601f168201915b5050505050905090565b600d5481565b6129a1336133bd565b6129aa57600080fd5b6000811180156129bb575060648111155b6129c457600080fd5b8060118190555050565b6000806129d961351f565b905060006129e78286612f8b565b9050838110156129f657600080fd5b612a038286868403613527565b60019250505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080612a40612d9a565b148015612a5a5750601e60159054906101000a900460ff16155b8015612a7e57506000600c6000600a54815260200190815260200160002080549050115b8015612a9157506000612a8f6115a3565b115b15612a9f5760019050612aa4565b600090505b90565b6000612ab433848461369a565b905092915050565b601b60009054906101000a900460ff1681565b6060601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4f410b06040518163ffffffff1660e01b8152600401600060405180830381865afa158015612b3e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612b679190615635565b905090565b612b74613c65565b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60125481565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb72295e836040518263ffffffff1660e01b8152600401612c319190614b25565b602060405180830381865afa158015612c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c72919061520c565b9050919050565b612c81613c65565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf8ebd85836040518263ffffffff1660e01b8152600401612d399190614b4f565b602060405180830381865afa158015612d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7a919061520c565b9050919050565b601a5481565b601460009054906101000a900460ff1681565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cba888726040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2d919061520c565b905090565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5113dc96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec5919061520c565b905090565b600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7d475b96040518163ffffffff1660e01b81526004016040805180830381865afa158015612f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5d919061567e565b915091509091565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61301b336133bd565b61302457600080fd5b678ac7230489e800008110158015613042575061303f611e0f565b81105b61304b57600080fd5b81601b60006101000a81548160ff02191690831515021790555080601c819055505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dfa19e236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613103919061520c565b905090565b613111336133bd565b61311a57600080fd5b6000601460006101000a81548160ff021916908315150217905550565b613140336133bd565b61314957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156131b4575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6131bd57600080fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61324a613c65565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6132ad613c65565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036132e657600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061334681613cad565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b600a5481565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b731ce270557c1f68cfb577b856766310bf8b47fd9c81565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61341c336133bd565b61342557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613490575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61349957600080fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836134eb91906156ed565b905092915050565b600081836135019190615268565b905092915050565b60008183613517919061571e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361356057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361359957600080fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516136779190614b25565b60405180910390a3505050565b60008183613692919061529c565b905092915050565b60006136a461277a565b601460009054906101000a900460ff161561383f576136c16128d1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561373c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156137965750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561383e57436137ef601e601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b106137f957600080fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60149054906101000a900460ff16156138665761385f848484613d71565b9050613c5e565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806139035750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806139a25750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b905060006139b08787613ea8565b6139ba57846139c5565b6139c48786614099565b5b905082158015613a1f5750601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9757613a3a60016015546134f390919063ffffffff16565b613a8c82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b10613a9657600080fd5b5b8115613aa857613aa7868661437d565b5b828015613ab95750613ab861469e565b5b15613ac757613ac6614775565b5b613b1985600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461368490919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bae81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c4e9190614b25565b60405180910390a3600193505050505b9392505050565b613c6d61351f565b73ffffffffffffffffffffffffffffffffffffffff16613c8b6128d1565b73ffffffffffffffffffffffffffffffffffffffff1614613cab57600080fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000613dc582600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461368490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5a82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613f4b5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1580156140915750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480613ffc5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806140465750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806140905750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b6000806140c56010546140b7600d548661350990919063ffffffff16565b6134dd90919063ffffffff16565b905061411981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141b99190614b25565b60405180910390a360006141ec6010546141de600e548761350990919063ffffffff16565b6134dd90919063ffffffff16565b90506142628160026000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b60026000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143469190614b25565b60405180910390a361437381614365848761368490919063ffffffff16565b61368490919063ffffffff16565b9250505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156143e8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6143f157600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061448c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806144e05750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61469a576000601e60159054906101000a900460ff1661450257600a54614512565b6001600a546145119190615268565b5b90506000600b600083815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036145e157600c6000828152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61464482600b600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b600b600083815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b5050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561470b5750601e60149054906101000a900460ff16155b80156147235750601b60009054906101000a900460ff165b80156147705750601c54600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601e60146101000a81548160ff0219169083151502179055506000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600267ffffffffffffffff8111156147f1576147f06153e6565b5b60405190808252806020026020018201604052801561481f5781602001602082028036833780820191505090505b5090503081600081518110614837576148366152d0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050731ce270557c1f68cfb577b856766310bf8b47fd9c8160018151811061489a576148996152d0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f84846040518363ffffffff1660e01b8152600401614933929190615760565b600060405180830381865afa158015614950573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906149799190615635565b60018151811061498c5761498b6152d0565b5b60200260200101519050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795848385601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401614a1b959493929190615790565b600060405180830381600087803b158015614a3557600080fd5b505af1158015614a49573d6000803e3d6000fd5b505050505050506000601e60146101000a81548160ff021916908315150217905550565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614aac82614a81565b9050919050565b614abc81614aa1565b8114614ac757600080fd5b50565b600081359050614ad981614ab3565b92915050565b600060208284031215614af557614af4614a77565b5b6000614b0384828501614aca565b91505092915050565b6000819050919050565b614b1f81614b0c565b82525050565b6000602082019050614b3a6000830184614b16565b92915050565b614b4981614aa1565b82525050565b6000602082019050614b646000830184614b40565b92915050565b614b7381614b0c565b8114614b7e57600080fd5b50565b600081359050614b9081614b6a565b92915050565b600080600060608486031215614baf57614bae614a77565b5b6000614bbd86828701614b81565b9350506020614bce86828701614b81565b9250506040614bdf86828701614b81565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015614c23578082015181840152602081019050614c08565b60008484015250505050565b6000601f19601f8301169050919050565b6000614c4b82614be9565b614c558185614bf4565b9350614c65818560208601614c05565b614c6e81614c2f565b840191505092915050565b60006020820190508181036000830152614c938184614c40565b905092915050565b60008060408385031215614cb257614cb1614a77565b5b6000614cc085828601614aca565b9250506020614cd185828601614b81565b9150509250929050565b60008115159050919050565b614cf081614cdb565b82525050565b6000602082019050614d0b6000830184614ce7565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d4681614aa1565b82525050565b6000614d588383614d3d565b60208301905092915050565b6000602082019050919050565b6000614d7c82614d11565b614d868185614d1c565b9350614d9183614d2d565b8060005b83811015614dc2578151614da98882614d4c565b9750614db483614d64565b925050600181019050614d95565b5085935050505092915050565b60006020820190508181036000830152614de98184614d71565b905092915050565b60008060408385031215614e0857614e07614a77565b5b6000614e1685828601614b81565b9250506020614e2785828601614b81565b9150509250929050565b600080600060608486031215614e4a57614e49614a77565b5b6000614e5886828701614aca565b9350506020614e6986828701614aca565b9250506040614e7a86828701614b81565b9150509250925092565b600060ff82169050919050565b614e9a81614e84565b82525050565b6000602082019050614eb56000830184614e91565b92915050565b600060208284031215614ed157614ed0614a77565b5b6000614edf84828501614b81565b91505092915050565b60008060408385031215614eff57614efe614a77565b5b6000614f0d85828601614b81565b9250506020614f1e85828601614aca565b9150509250929050565b614f3181614cdb565b8114614f3c57600080fd5b50565b600081359050614f4e81614f28565b92915050565b60008060408385031215614f6b57614f6a614a77565b5b6000614f7985828601614aca565b9250506020614f8a85828601614f3f565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614fc981614b0c565b82525050565b6000614fdb8383614fc0565b60208301905092915050565b6000602082019050919050565b6000614fff82614f94565b6150098185614f9f565b935061501483614fb0565b8060005b8381101561504557815161502c8882614fcf565b975061503783614fe7565b925050600181019050615018565b5085935050505092915050565b6000602082019050818103600083015261506c8184614ff4565b905092915050565b60006040820190506150896000830185614b40565b6150966020830184614b16565b9392505050565b600080604083850312156150b4576150b3614a77565b5b60006150c285828601614aca565b92505060206150d385828601614aca565b9150509250929050565b600080604083850312156150f4576150f3614a77565b5b600061510285828601614f3f565b925050602061511385828601614b81565b9150509250929050565b6000819050919050565b600061514261513d61513884614a81565b61511d565b614a81565b9050919050565b600061515482615127565b9050919050565b600061516682615149565b9050919050565b6151768161515b565b82525050565b6000602082019050615191600083018461516d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806151de57607f821691505b6020821081036151f1576151f0615197565b5b50919050565b60008151905061520681614b6a565b92915050565b60006020828403121561522257615221614a77565b5b6000615230848285016151f7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061527382614b0c565b915061527e83614b0c565b925082820190508082111561529657615295615239565b5b92915050565b60006152a782614b0c565b91506152b283614b0c565b92508282039050818111156152ca576152c9615239565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061533982614b0c565b91506000820361534c5761534b615239565b5b600182039050919050565b600061536282614b0c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361539457615393615239565b5b600182019050919050565b6000815190506153ae81614ab3565b92915050565b6000602082840312156153ca576153c9614a77565b5b60006153d88482850161539f565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61541e82614c2f565b810181811067ffffffffffffffff8211171561543d5761543c6153e6565b5b80604052505050565b6000615450614a6d565b905061545c8282615415565b919050565b600067ffffffffffffffff82111561547c5761547b6153e6565b5b602082029050602081019050919050565b600080fd5b60006154a56154a084615461565b615446565b905080838252602082019050602084028301858111156154c8576154c761548d565b5b835b818110156154f157806154dd888261539f565b8452602084019350506020810190506154ca565b5050509392505050565b600082601f8301126155105761550f6153e1565b5b8151615520848260208601615492565b91505092915050565b60006020828403121561553f5761553e614a77565b5b600082015167ffffffffffffffff81111561555d5761555c614a7c565b5b615569848285016154fb565b91505092915050565b600067ffffffffffffffff82111561558d5761558c6153e6565b5b602082029050602081019050919050565b60006155b16155ac84615572565b615446565b905080838252602082019050602084028301858111156155d4576155d361548d565b5b835b818110156155fd57806155e988826151f7565b8452602084019350506020810190506155d6565b5050509392505050565b600082601f83011261561c5761561b6153e1565b5b815161562c84826020860161559e565b91505092915050565b60006020828403121561564b5761564a614a77565b5b600082015167ffffffffffffffff81111561566957615668614a7c565b5b61567584828501615607565b91505092915050565b6000806040838503121561569557615694614a77565b5b60006156a38582860161539f565b92505060206156b4858286016151f7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006156f882614b0c565b915061570383614b0c565b925082615713576157126156be565b5b828204905092915050565b600061572982614b0c565b915061573483614b0c565b925082820261574281614b0c565b9150828204841483151761575957615758615239565b5b5092915050565b60006040820190506157756000830185614b16565b81810360208301526157878184614d71565b90509392505050565b600060a0820190506157a56000830188614b16565b6157b26020830187614b16565b81810360408301526157c48186614d71565b90506157d36060830185614b40565b6157e06080830184614b16565b969550505050505056fea26469706673582212209bf40e8c7737e1c2cd5cd9fbce0ad2497be59890c0fcf5d468bb9fbdddbc45a764736f6c63430008120033000000000000000000000000df11a92274d027740207da259804a38ca0e0edce

Deployed Bytecode

0x6080604052600436106104825760003560e01c80638091f3bf11610255578063bf8ebd8511610144578063e884f260116100c1578063f8b45b0511610085578063f8b45b0514611228578063f9bcaa2714611253578063fd5581f11461127e578063fe02721e146112a9578063fe9fbb80146112d4578063ffbb72e014611311576104fc565b8063e884f2601461116b578063ed89394014611182578063f0b37c04146111ab578063f2fde38b146111d4578063f887ea40146111fd576104fc565b8063d7d475b911610108578063d7d475b914611083578063d7e96c05146110af578063dd62ed3e146110da578063df20fd4914611117578063dfa19e2314611140576104fc565b8063bf8ebd8514610f9a578063c6d2577d14610fd7578063c876d0b914611002578063cba888721461102d578063d5113dc914611058576104fc565b8063a457c2d7116101d2578063b4f410b011610196578063b4f410b014610eb5578063b6a5d7de14610ee0578063b915c5ea14610f09578063bb72295e14610f34578063bf362a2c14610f71576104fc565b8063a457c2d714610dba578063a8aa1b3114610df7578063a8b098c014610e22578063a9059cbb14610e4d578063b3c5630f14610e8a576104fc565b80638da5cb5b116102195780638da5cb5b14610ce55780638de890bd14610d1057806395d89b4114610d3b5780639d4f3d1a14610d665780639e6427c414610d91576104fc565b80638091f3bf14610c22578063809ad84714610c4d5780638377017c14610c78578063879466f914610ca35780638a66e30014610cba576104fc565b806339cecc851161037157806358fa63ca116102ee57806366bb8ea7116102b257806366bb8ea714610b5157806370a0823114610b7a578063715018a614610bb75780637846247414610bce5780637bdd04f714610c0b576104fc565b806358fa63ca14610a7e5780635998f5c914610aa95780635f84fcd214610ad257806360535b4314610afb57806361fde5ad14610b26576104fc565b80634530853811610335578063453085381461099757806346a3408b146109c25780634e599551146109d957806350d4530a14610a04578063571ac8b014610a41576104fc565b806339cecc85146108b057806339f84b66146108db5780633e7175c5146109065780633fe4b2511461092f5780634255e8081461096c576104fc565b806318160ddd116103ff578063313ce567116103c3578063313ce567146107c75780633268cc56146107f2578063333d8cea1461081d57806338b3b5b5146108485780633950935114610873576104fc565b806318160ddd146106f45780631ca4a5d91461071f57806323b872dd14610736578063241d5f13146107735780632b112e491461079c576104fc565b8063095ea7b311610446578063095ea7b3146105f95780630b163e79146106365780630b8a6e2f146106615780630fae39b31461069e57806310389024146106c9576104fc565b806301243938146104fe57806303fd2a451461053b5780630445b66714610566578063054949231461059157806306fdde03146105ce576104fc565b366104fc5760004711156104fa57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156104f8573d6000803e3d6000fd5b505b005b005b34801561050a57600080fd5b5061052560048036038101906105209190614adf565b61133a565b6040516105329190614b25565b60405180910390f35b34801561054757600080fd5b506105506113aa565b60405161055d9190614b4f565b60405180910390f35b34801561057257600080fd5b5061057b6113b0565b6040516105889190614b25565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190614b96565b6113b6565b6040516105c59190614b25565b60405180910390f35b3480156105da57600080fd5b506105e36113f9565b6040516105f09190614c79565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b9190614c9b565b61148b565b60405161062d9190614cf6565b60405180910390f35b34801561064257600080fd5b5061064b6114ae565b6040516106589190614dcf565b60405180910390f35b34801561066d57600080fd5b5061068860048036038101906106839190614df1565b61154f565b6040516106959190614b4f565b60405180910390f35b3480156106aa57600080fd5b506106b361159d565b6040516106c09190614b25565b60405180910390f35b3480156106d557600080fd5b506106de6115a3565b6040516106eb9190614b25565b60405180910390f35b34801561070057600080fd5b5061070961163b565b6040516107169190614b25565b60405180910390f35b34801561072b57600080fd5b50610734611645565b005b34801561074257600080fd5b5061075d60048036038101906107589190614e31565b611c02565b60405161076a9190614cf6565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614b96565b611dcb565b005b3480156107a857600080fd5b506107b1611e0f565b6040516107be9190614b25565b60405180910390f35b3480156107d357600080fd5b506107dc611e50565b6040516107e99190614ea0565b60405180910390f35b3480156107fe57600080fd5b50610807611e59565b6040516108149190614b4f565b60405180910390f35b34801561082957600080fd5b50610832611e71565b60405161083f9190614b25565b60405180910390f35b34801561085457600080fd5b5061085d611f09565b60405161086a9190614b4f565b60405180910390f35b34801561087f57600080fd5b5061089a60048036038101906108959190614c9b565b611fa1565b6040516108a79190614cf6565b60405180910390f35b3480156108bc57600080fd5b506108c5611fd8565b6040516108d29190614b25565b60405180910390f35b3480156108e757600080fd5b506108f0612070565b6040516108fd9190614b25565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190614ebb565b612076565b005b34801561093b57600080fd5b5061095660048036038101906109519190614ee8565b6120ae565b6040516109639190614b25565b60405180910390f35b34801561097857600080fd5b506109816120d3565b60405161098e9190614b4f565b60405180910390f35b3480156109a357600080fd5b506109ac6120f9565b6040516109b99190614b25565b60405180910390f35b3480156109ce57600080fd5b506109d7612103565b005b3480156109e557600080fd5b506109ee61218f565b6040516109fb9190614dcf565b60405180910390f35b348015610a1057600080fd5b50610a2b6004803603810190610a269190614ebb565b61222c565b604051610a389190614b4f565b60405180910390f35b348015610a4d57600080fd5b50610a686004803603810190610a639190614adf565b6122d1565b604051610a759190614cf6565b60405180910390f35b348015610a8a57600080fd5b50610a93612304565b604051610aa09190614b4f565b60405180910390f35b348015610ab557600080fd5b50610ad06004803603810190610acb9190614adf565b612309565b005b348015610ade57600080fd5b50610af96004803603810190610af49190614f54565b6123b9565b005b348015610b0757600080fd5b50610b1061241c565b604051610b1d9190614b25565b60405180910390f35b348015610b3257600080fd5b50610b3b612422565b604051610b489190614b25565b60405180910390f35b348015610b5d57600080fd5b50610b786004803603810190610b739190614ebb565b6124ba565b005b348015610b8657600080fd5b50610ba16004803603810190610b9c9190614adf565b612501565b604051610bae9190614b25565b60405180910390f35b348015610bc357600080fd5b50610bcc61254a565b005b348015610bda57600080fd5b50610bf56004803603810190610bf09190614ebb565b61255e565b604051610c029190614b25565b60405180910390f35b348015610c1757600080fd5b50610c20612603565b005b348015610c2e57600080fd5b50610c37612632565b604051610c449190614cf6565b60405180910390f35b348015610c5957600080fd5b50610c62612645565b604051610c6f9190614b25565b60405180910390f35b348015610c8457600080fd5b50610c8d6126dd565b604051610c9a9190615052565b60405180910390f35b348015610caf57600080fd5b50610cb861277a565b005b348015610cc657600080fd5b50610ccf612839565b604051610cdc9190614b25565b60405180910390f35b348015610cf157600080fd5b50610cfa6128d1565b604051610d079190614b4f565b60405180910390f35b348015610d1c57600080fd5b50610d256128fa565b604051610d329190614b25565b60405180910390f35b348015610d4757600080fd5b50610d50612900565b604051610d5d9190614c79565b60405180910390f35b348015610d7257600080fd5b50610d7b612992565b604051610d889190614b25565b60405180910390f35b348015610d9d57600080fd5b50610db86004803603810190610db39190614ebb565b612998565b005b348015610dc657600080fd5b50610de16004803603810190610ddc9190614c9b565b6129ce565b604051610dee9190614cf6565b60405180910390f35b348015610e0357600080fd5b50610e0c612a0f565b604051610e199190614b4f565b60405180910390f35b348015610e2e57600080fd5b50610e37612a35565b604051610e449190614cf6565b60405180910390f35b348015610e5957600080fd5b50610e746004803603810190610e6f9190614c9b565b612aa7565b604051610e819190614cf6565b60405180910390f35b348015610e9657600080fd5b50610e9f612abc565b604051610eac9190614cf6565b60405180910390f35b348015610ec157600080fd5b50610eca612acf565b604051610ed79190615052565b60405180910390f35b348015610eec57600080fd5b50610f076004803603810190610f029190614adf565b612b6c565b005b348015610f1557600080fd5b50610f1e612bce565b604051610f2b9190614b25565b60405180910390f35b348015610f4057600080fd5b50610f5b6004803603810190610f569190614ebb565b612bd4565b604051610f689190614b25565b60405180910390f35b348015610f7d57600080fd5b50610f986004803603810190610f939190614f54565b612c79565b005b348015610fa657600080fd5b50610fc16004803603810190610fbc9190614adf565b612cdc565b604051610fce9190614b25565b60405180910390f35b348015610fe357600080fd5b50610fec612d81565b604051610ff99190614b25565b60405180910390f35b34801561100e57600080fd5b50611017612d87565b6040516110249190614cf6565b60405180910390f35b34801561103957600080fd5b50611042612d9a565b60405161104f9190614b25565b60405180910390f35b34801561106457600080fd5b5061106d612e32565b60405161107a9190614b25565b60405180910390f35b34801561108f57600080fd5b50611098612eca565b6040516110a6929190615074565b60405180910390f35b3480156110bb57600080fd5b506110c4612f65565b6040516110d19190614b4f565b60405180910390f35b3480156110e657600080fd5b5061110160048036038101906110fc919061509d565b612f8b565b60405161110e9190614b25565b60405180910390f35b34801561112357600080fd5b5061113e600480360381019061113991906150dd565b613012565b005b34801561114c57600080fd5b50611155613070565b6040516111629190614b25565b60405180910390f35b34801561117757600080fd5b50611180613108565b005b34801561118e57600080fd5b506111a960048036038101906111a49190614adf565b613137565b005b3480156111b757600080fd5b506111d260048036038101906111cd9190614adf565b613242565b005b3480156111e057600080fd5b506111fb60048036038101906111f69190614adf565b6132a5565b005b34801561120957600080fd5b50611212613349565b60405161121f919061517c565b60405180910390f35b34801561123457600080fd5b5061123d61336f565b60405161124a9190614b25565b60405180910390f35b34801561125f57600080fd5b50611268613375565b6040516112759190614b25565b60405180910390f35b34801561128a57600080fd5b5061129361337b565b6040516112a09190614b4f565b60405180910390f35b3480156112b557600080fd5b506112be6133a5565b6040516112cb9190614b4f565b60405180910390f35b3480156112e057600080fd5b506112fb60048036038101906112f69190614adf565b6133bd565b6040516113089190614cf6565b60405180910390f35b34801561131d57600080fd5b5061133860048036038101906113339190614adf565b613413565b005b60006113a3601254600b6000600a54815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134dd90919063ffffffff16565b9050919050565b61dead81565b601c5481565b60006113f0826113e260646113d487896134f390919063ffffffff16565b61350990919063ffffffff16565b6134dd90919063ffffffff16565b90509392505050565b606060058054611408906151c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611434906151c6565b80156114815780601f1061145657610100808354040283529160200191611481565b820191906000526020600020905b81548152906001019060200180831161146457829003601f168201915b5050505050905090565b60008061149661351f565b90506114a3818585613527565b600191505092915050565b6060600c6000600a54815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561154557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116114fb575b5050505050905090565b600c602052816000526040600020818154811061156b57600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663103890246040518163ffffffff1660e01b8152600401602060405180830381865afa158015611612573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611636919061520c565b905090565b6000600454905090565b61164e336133bd565b61165757600080fd5b60005b6001600a546116699190615268565b8111611bf7576000600c60008381526020019081526020016000208054905090505b6000811115611be35760006001826116a3919061529c565b9050600a5483036118b557600c6000808152602001908152602001600020600c600085815260200190815260200160002082815481106116e6576116e56152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008481526020019081526020016000206000600c600086815260200190815260200160002083815481106117ab576117aa6152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b60008081526020019081526020016000206000600c6000878152602001908152602001600020848154811061184b5761184a6152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a546118c49190615268565b8303611ad457600c600060018152602001908152602001600020600c60008581526020019081526020016000208281548110611903576119026152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008481526020019081526020016000206000600c600086815260200190815260200160002083815481106119c8576119c76152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b6000600181526020019081526020016000206000600c6000600181526020019081526020016000208481548110611a6a57611a696152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60008481526020019081526020016000206000600c60008681526020019081526020016000208381548110611b0e57611b0d6152d0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600c6000848152602001908152602001600020805480611b9a57611b996152ff565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055508080611bdb9061532e565b91505061168b565b508080611bef90615357565b91505061165a565b506000600a81905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611db757611d3682600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461368490919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611dc284848461369a565b90509392505050565b611dd4336133bd565b611ddd57600080fd5b6005611dea8484846113b6565b1115611df557600080fd5b82600d8190555081600e8190555080601081905550505050565b6000611e4b611e1e6000612501565b611e3d611e2c61dead612501565b60075461368490919063ffffffff16565b61368490919063ffffffff16565b905090565b60006012905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663333d8cea6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f04919061520c565b905090565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338b3b5b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9c91906153b4565b905090565b600080611fac61351f565b9050611fcd818585611fbe8589612f8b565b611fc89190615268565b613527565b600191505092915050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339cecc856040518163ffffffff1660e01b8152600401602060405180830381865afa158015612047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206b919061520c565b905090565b60115481565b61207f336133bd565b61208857600080fd5b600754811115801561209b575060155481115b6120a457600080fd5b8060158190555050565b600b602052816000526040600020602052806000526040600020600091509150505481565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601154905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461215d57600080fd5b6001600a5461216c9190615268565b600a819055506000601e60156101000a81548160ff021916908315150217905550565b6060601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e5995516040518163ffffffff1660e01b8152600401600060405180830381865afa1580156121fe573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906122279190615529565b905090565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350d4530a836040518263ffffffff1660e01b81526004016122899190614b25565b602060405180830381865afa1580156122a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ca91906153b4565b9050919050565b60006122fd827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61148b565b9050919050565b600081565b612312336133bd565b61231b57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461237557600080fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123c1613c65565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361fde5ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b5919061520c565b905090565b6124c3336133bd565b6124cc57600080fd5b678ac7230489e8000081101580156124ee575069152d02c7e14af68000008111155b6124f757600080fd5b8060128190555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612552613c65565b61255c6000613cad565b565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378462474836040518263ffffffff1660e01b81526004016125bb9190614b25565b602060405180830381865afa1580156125d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fc919061520c565b9050919050565b61260c336133bd565b61261557600080fd5b6000601e60156101000a81548160ff021916908315150217905550565b601860009054906101000a900460ff1681565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663809ad8476040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d8919061520c565b905090565b6060601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638377017c6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561274c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127759190615635565b905090565b612782612a35565b1561283757601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e0c862896040518163ffffffff1660e01b81526004016020604051808303816000875af11580156127f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281a919061520c565b506001601e60156101000a81548160ff0219169083151502179055505b565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638a66e3006040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc919061520c565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195481565b60606006805461290f906151c6565b80601f016020809104026020016040519081016040528092919081815260200182805461293b906151c6565b80156129885780601f1061295d57610100808354040283529160200191612988565b820191906000526020600020905b81548152906001019060200180831161296b57829003601f168201915b5050505050905090565b600d5481565b6129a1336133bd565b6129aa57600080fd5b6000811180156129bb575060648111155b6129c457600080fd5b8060118190555050565b6000806129d961351f565b905060006129e78286612f8b565b9050838110156129f657600080fd5b612a038286868403613527565b60019250505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080612a40612d9a565b148015612a5a5750601e60159054906101000a900460ff16155b8015612a7e57506000600c6000600a54815260200190815260200160002080549050115b8015612a9157506000612a8f6115a3565b115b15612a9f5760019050612aa4565b600090505b90565b6000612ab433848461369a565b905092915050565b601b60009054906101000a900460ff1681565b6060601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4f410b06040518163ffffffff1660e01b8152600401600060405180830381865afa158015612b3e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612b679190615635565b905090565b612b74613c65565b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60125481565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb72295e836040518263ffffffff1660e01b8152600401612c319190614b25565b602060405180830381865afa158015612c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c72919061520c565b9050919050565b612c81613c65565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf8ebd85836040518263ffffffff1660e01b8152600401612d399190614b4f565b602060405180830381865afa158015612d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7a919061520c565b9050919050565b601a5481565b601460009054906101000a900460ff1681565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cba888726040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2d919061520c565b905090565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5113dc96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec5919061520c565b905090565b600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7d475b96040518163ffffffff1660e01b81526004016040805180830381865afa158015612f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5d919061567e565b915091509091565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61301b336133bd565b61302457600080fd5b678ac7230489e800008110158015613042575061303f611e0f565b81105b61304b57600080fd5b81601b60006101000a81548160ff02191690831515021790555080601c819055505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dfa19e236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613103919061520c565b905090565b613111336133bd565b61311a57600080fd5b6000601460006101000a81548160ff021916908315150217905550565b613140336133bd565b61314957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156131b4575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6131bd57600080fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61324a613c65565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6132ad613c65565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036132e657600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061334681613cad565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b600a5481565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b731ce270557c1f68cfb577b856766310bf8b47fd9c81565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61341c336133bd565b61342557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613490575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61349957600080fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081836134eb91906156ed565b905092915050565b600081836135019190615268565b905092915050565b60008183613517919061571e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361356057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361359957600080fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516136779190614b25565b60405180910390a3505050565b60008183613692919061529c565b905092915050565b60006136a461277a565b601460009054906101000a900460ff161561383f576136c16128d1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561373c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156137965750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561383e57436137ef601e601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b106137f957600080fd5b43601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60149054906101000a900460ff16156138665761385f848484613d71565b9050613c5e565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806139035750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806139a25750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b905060006139b08787613ea8565b6139ba57846139c5565b6139c48786614099565b5b905082158015613a1f5750601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a9757613a3a60016015546134f390919063ffffffff16565b613a8c82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b10613a9657600080fd5b5b8115613aa857613aa7868661437d565b5b828015613ab95750613ab861469e565b5b15613ac757613ac6614775565b5b613b1985600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461368490919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bae81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c4e9190614b25565b60405180910390a3600193505050505b9392505050565b613c6d61351f565b73ffffffffffffffffffffffffffffffffffffffff16613c8b6128d1565b73ffffffffffffffffffffffffffffffffffffffff1614613cab57600080fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000613dc582600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461368490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5a82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613f4b5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1580156140915750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480613ffc5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806140465750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806140905750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b6000806140c56010546140b7600d548661350990919063ffffffff16565b6134dd90919063ffffffff16565b905061411981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141b99190614b25565b60405180910390a360006141ec6010546141de600e548761350990919063ffffffff16565b6134dd90919063ffffffff16565b90506142628160026000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b60026000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143469190614b25565b60405180910390a361437381614365848761368490919063ffffffff16565b61368490919063ffffffff16565b9250505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156143e8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6143f157600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061448c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806144e05750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61469a576000601e60159054906101000a900460ff1661450257600a54614512565b6001600a546145119190615268565b5b90506000600b600083815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036145e157600c6000828152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61464482600b600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f390919063ffffffff16565b600b600083815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b5050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561470b5750601e60149054906101000a900460ff16155b80156147235750601b60009054906101000a900460ff165b80156147705750601c54600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601e60146101000a81548160ff0219169083151502179055506000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600267ffffffffffffffff8111156147f1576147f06153e6565b5b60405190808252806020026020018201604052801561481f5781602001602082028036833780820191505090505b5090503081600081518110614837576148366152d0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050731ce270557c1f68cfb577b856766310bf8b47fd9c8160018151811061489a576148996152d0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f84846040518363ffffffff1660e01b8152600401614933929190615760565b600060405180830381865afa158015614950573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906149799190615635565b60018151811061498c5761498b6152d0565b5b60200260200101519050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795848385601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401614a1b959493929190615790565b600060405180830381600087803b158015614a3557600080fd5b505af1158015614a49573d6000803e3d6000fd5b505050505050506000601e60146101000a81548160ff021916908315150217905550565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614aac82614a81565b9050919050565b614abc81614aa1565b8114614ac757600080fd5b50565b600081359050614ad981614ab3565b92915050565b600060208284031215614af557614af4614a77565b5b6000614b0384828501614aca565b91505092915050565b6000819050919050565b614b1f81614b0c565b82525050565b6000602082019050614b3a6000830184614b16565b92915050565b614b4981614aa1565b82525050565b6000602082019050614b646000830184614b40565b92915050565b614b7381614b0c565b8114614b7e57600080fd5b50565b600081359050614b9081614b6a565b92915050565b600080600060608486031215614baf57614bae614a77565b5b6000614bbd86828701614b81565b9350506020614bce86828701614b81565b9250506040614bdf86828701614b81565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015614c23578082015181840152602081019050614c08565b60008484015250505050565b6000601f19601f8301169050919050565b6000614c4b82614be9565b614c558185614bf4565b9350614c65818560208601614c05565b614c6e81614c2f565b840191505092915050565b60006020820190508181036000830152614c938184614c40565b905092915050565b60008060408385031215614cb257614cb1614a77565b5b6000614cc085828601614aca565b9250506020614cd185828601614b81565b9150509250929050565b60008115159050919050565b614cf081614cdb565b82525050565b6000602082019050614d0b6000830184614ce7565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d4681614aa1565b82525050565b6000614d588383614d3d565b60208301905092915050565b6000602082019050919050565b6000614d7c82614d11565b614d868185614d1c565b9350614d9183614d2d565b8060005b83811015614dc2578151614da98882614d4c565b9750614db483614d64565b925050600181019050614d95565b5085935050505092915050565b60006020820190508181036000830152614de98184614d71565b905092915050565b60008060408385031215614e0857614e07614a77565b5b6000614e1685828601614b81565b9250506020614e2785828601614b81565b9150509250929050565b600080600060608486031215614e4a57614e49614a77565b5b6000614e5886828701614aca565b9350506020614e6986828701614aca565b9250506040614e7a86828701614b81565b9150509250925092565b600060ff82169050919050565b614e9a81614e84565b82525050565b6000602082019050614eb56000830184614e91565b92915050565b600060208284031215614ed157614ed0614a77565b5b6000614edf84828501614b81565b91505092915050565b60008060408385031215614eff57614efe614a77565b5b6000614f0d85828601614b81565b9250506020614f1e85828601614aca565b9150509250929050565b614f3181614cdb565b8114614f3c57600080fd5b50565b600081359050614f4e81614f28565b92915050565b60008060408385031215614f6b57614f6a614a77565b5b6000614f7985828601614aca565b9250506020614f8a85828601614f3f565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614fc981614b0c565b82525050565b6000614fdb8383614fc0565b60208301905092915050565b6000602082019050919050565b6000614fff82614f94565b6150098185614f9f565b935061501483614fb0565b8060005b8381101561504557815161502c8882614fcf565b975061503783614fe7565b925050600181019050615018565b5085935050505092915050565b6000602082019050818103600083015261506c8184614ff4565b905092915050565b60006040820190506150896000830185614b40565b6150966020830184614b16565b9392505050565b600080604083850312156150b4576150b3614a77565b5b60006150c285828601614aca565b92505060206150d385828601614aca565b9150509250929050565b600080604083850312156150f4576150f3614a77565b5b600061510285828601614f3f565b925050602061511385828601614b81565b9150509250929050565b6000819050919050565b600061514261513d61513884614a81565b61511d565b614a81565b9050919050565b600061515482615127565b9050919050565b600061516682615149565b9050919050565b6151768161515b565b82525050565b6000602082019050615191600083018461516d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806151de57607f821691505b6020821081036151f1576151f0615197565b5b50919050565b60008151905061520681614b6a565b92915050565b60006020828403121561522257615221614a77565b5b6000615230848285016151f7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061527382614b0c565b915061527e83614b0c565b925082820190508082111561529657615295615239565b5b92915050565b60006152a782614b0c565b91506152b283614b0c565b92508282039050818111156152ca576152c9615239565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061533982614b0c565b91506000820361534c5761534b615239565b5b600182039050919050565b600061536282614b0c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361539457615393615239565b5b600182019050919050565b6000815190506153ae81614ab3565b92915050565b6000602082840312156153ca576153c9614a77565b5b60006153d88482850161539f565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61541e82614c2f565b810181811067ffffffffffffffff8211171561543d5761543c6153e6565b5b80604052505050565b6000615450614a6d565b905061545c8282615415565b919050565b600067ffffffffffffffff82111561547c5761547b6153e6565b5b602082029050602081019050919050565b600080fd5b60006154a56154a084615461565b615446565b905080838252602082019050602084028301858111156154c8576154c761548d565b5b835b818110156154f157806154dd888261539f565b8452602084019350506020810190506154ca565b5050509392505050565b600082601f8301126155105761550f6153e1565b5b8151615520848260208601615492565b91505092915050565b60006020828403121561553f5761553e614a77565b5b600082015167ffffffffffffffff81111561555d5761555c614a7c565b5b615569848285016154fb565b91505092915050565b600067ffffffffffffffff82111561558d5761558c6153e6565b5b602082029050602081019050919050565b60006155b16155ac84615572565b615446565b905080838252602082019050602084028301858111156155d4576155d361548d565b5b835b818110156155fd57806155e988826151f7565b8452602084019350506020810190506155d6565b5050509392505050565b600082601f83011261561c5761561b6153e1565b5b815161562c84826020860161559e565b91505092915050565b60006020828403121561564b5761564a614a77565b5b600082015167ffffffffffffffff81111561566957615668614a7c565b5b61567584828501615607565b91505092915050565b6000806040838503121561569557615694614a77565b5b60006156a38582860161539f565b92505060206156b4858286016151f7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006156f882614b0c565b915061570383614b0c565b925082615713576157126156be565b5b828204905092915050565b600061572982614b0c565b915061573483614b0c565b925082820261574281614b0c565b9150828204841483151761575957615758615239565b5b5092915050565b60006040820190506157756000830185614b16565b81810360208301526157878184614d71565b90509392505050565b600060a0820190506157a56000830188614b16565b6157b26020830187614b16565b81810360408301526157c48186614d71565b90506157d36060830185614b40565b6157e06080830184614b16565b969550505050505056fea26469706673582212209bf40e8c7737e1c2cd5cd9fbce0ad2497be59890c0fcf5d468bb9fbdddbc45a764736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000df11a92274d027740207da259804a38ca0e0edce

-----Decoded View---------------
Arg [0] : jackpot_ (address): 0xdf11a92274D027740207dA259804A38ca0e0edCE

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000df11a92274d027740207da259804a38ca0e0edce


Deployed Bytecode Sourcemap

39562:14106:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53477:1;53453:21;:25;53449:74;;;53488:2;;;;;;;;;;;53480:20;;:43;53501:21;53480:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53449:74;39562:14106;;;43078:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39822:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40927:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43279:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28929:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31289:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42744:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40279:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40399:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45049:133;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30058:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47555:632;;;;;;;;;;;;;:::i;:::-;;50058:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48398:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42928:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29900:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40071:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45321:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45595;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32740:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45980:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40426:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47271:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40215:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40964:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42841:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51762:141;;;;;;;;;;;;;:::i;:::-;;44148:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44584:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49505:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39902:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49215:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47004:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40351:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45458:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48767:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30229:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24779:103;;;;;;;;;;;;;:::i;:::-;;44898:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49382:78;;;;;;;;;;;;;:::i;:::-;;40790:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46113:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44288:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46803:157;;;;;;;;;;;;;:::i;:::-;;45732:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24174:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40817:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29148:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40327:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48633:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33481:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40160:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43438:211;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49896:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40897:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44434:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26113:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40452:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44737:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47115:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46479:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40854:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40604:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46240:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45190:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46353:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;40375:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30818:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48965:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45859:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47448:99;;;;;;;;;;;;;:::i;:::-;;48197:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26283:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26535:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40032:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40651:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40190:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43196:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39950:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25942:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46612:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43078:110;43136:7;43161:19;43177:2;;43161;:7;43164:3;;43161:7;;;;;;;;;;;:11;43169:2;43161:11;;;;;;;;;;;;;;;;:15;;:19;;;;:::i;:::-;43154:26;;43078:110;;;:::o;39822:73::-;39853:42;39822:73;:::o;40927:28::-;;;;:::o;43279:151::-;43360:7;43388:33;43416:4;43388:23;43407:3;43389:12;43397:3;43389;:7;;:12;;;;:::i;:::-;43388:18;;:23;;;;:::i;:::-;:27;;:33;;;;:::i;:::-;43380:42;;43279:151;;;;;:::o;28929:100::-;28983:13;29016:5;29009:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28929:100;:::o;31289:201::-;31372:4;31389:13;31405:12;:10;:12::i;:::-;31389:28;;31428:32;31437:5;31444:7;31453:6;31428:8;:32::i;:::-;31478:4;31471:11;;;31289:201;;;;:::o;42744:89::-;42782:16;42818:2;:7;42821:3;;42818:7;;;;;;;;;;;42811:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42744:89;:::o;40279:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;40399:18::-;;;;:::o;45049:133::-;45105:7;45132:16;;;;;;;;;;;:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45125:49;;45049:133;:::o;30058:108::-;30119:7;30146:12;;30139:19;;30058:108;:::o;47555:632::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;47610:9:::1;47605:558;47634:1;47630:3;;:5;;;;:::i;:::-;47625:1;:10;47605:558;;47676:9;47688:2;:5;47691:1;47688:5;;;;;;;;;;;:12;;;;47676:24;;47672:480;47706:1;47702;:5;47672:480;;;47732:11;47748:1;47746;:3;;;;:::i;:::-;47732:17;;47776:3;;47771:1;:8:::0;47768:138:::1;;47803:2;:5;47806:1:::0;47803:5:::1;;;;;;;;;;;47814:2;:5;47817:1;47814:5;;;;;;;;;;;47820:3;47814:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47803:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47868:2;:5;47871:1;47868:5;;;;;;;;;;;:17;47874:2;:5;47877:1;47874:5;;;;;;;;;;;47880:3;47874:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47868:17;;;;;;;;;;;;;;;;47848:2;:5;47851:1:::0;47848:5:::1;;;;;;;;;;;:17;47854:2;:5;47857:1;47854:5;;;;;;;;;;;47860:3;47854:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47848:17;;;;;;;;;;;;;;;:37;;;;47768:138;47936:1;47932:3;;:5;;;;:::i;:::-;47927:1;:10:::0;47924:140:::1;;47961:2;:5;47964:1;47961:5;;;;;;;;;;;47972:2;:5;47975:1;47972:5;;;;;;;;;;;47978:3;47972:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47961:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48026:2;:5;48029:1;48026:5;;;;;;;;;;;:17;48032:2;:5;48035:1;48032:5;;;;;;;;;;;48038:3;48032:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48026:17;;;;;;;;;;;;;;;;48006:2;:5;48009:1;48006:5;;;;;;;;;;;:17;48012:2;:5;48015:1;48012:5;;;;;;;;;;;48018:3;48012:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48006:17;;;;;;;;;;;;;;;:37;;;;47924:140;48089:2;:5;48092:1;48089:5;;;;;;;;;;;:17;48095:2;:5;48098:1;48095:5;;;;;;;;;;;48101:3;48095:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48089:17;;;;;;;;;;;;;;;48082:24;;;48125:2;:5;48128:1;48125:5;;;;;;;;;;;:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;47713:439;47709:3;;;;;:::i;:::-;;;;47672:480;;;;47637:3;;;;;:::i;:::-;;;;47605:558;;;;48178:1;48173:3;:6;;;;47555:632::o:0;50058:340::-;50156:4;50211:17;50176:11;:19;50188:6;50176:19;;;;;;;;;;;;;;;:31;50196:10;50176:31;;;;;;;;;;;;;;;;:52;50173:160;;50278:43;50314:6;50278:11;:19;50290:6;50278:19;;;;;;;;;;;;;;;:31;50298:10;50278:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;50244:11;:19;50256:6;50244:19;;;;;;;;;;;;;;;:31;50264:10;50244:31;;;;;;;;;;;;;;;:77;;;;50173:160;50350:40;50364:6;50372:9;50383:6;50350:13;:40::i;:::-;50343:47;;50058:340;;;;;:::o;48398:227::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;48530:1:::1;48500:26;48511:3;48516;48521:4;48500:10;:26::i;:::-;:31;;48492:40;;;::::0;::::1;;48574:3;48569:2;:8;;;;48593:3;48588:2;:8;;;;48613:4;48607:3;:10;;;;48398:227:::0;;;:::o;42928:142::-;42981:7;43008:54;43046:15;39941:1;43046:9;:15::i;:::-;43008:33;43025:15;39853:42;43025:9;:15::i;:::-;43008:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;43001:61;;42928:142;:::o;29900:93::-;29958:5;29983:2;29976:9;;29900:93;:::o;40071:82::-;40111:42;40071:82;:::o;45321:129::-;45375:7;45402:16;;;;;;;;;;;:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45395:47;;45321:129;:::o;45595:::-;45649:7;45676:16;;;;;;;;;;;:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45669:47;;45595:129;:::o;32740:238::-;32828:4;32845:13;32861:12;:10;:12::i;:::-;32845:28;;32884:64;32893:5;32900:7;32937:10;32909:25;32919:5;32926:7;32909:9;:25::i;:::-;:38;;;;:::i;:::-;32884:8;:64::i;:::-;32966:4;32959:11;;;32740:238;;;;:::o;45980:125::-;46032:7;46059:16;;;;;;;;;;;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46052:45;;45980:125;:::o;40426:19::-;;;;:::o;47271:169::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;47355:12:::1;;47349:2;:18;;:36;;;;;47376:9;;47371:2;:14;47349:36;47341:45;;;::::0;::::1;;47430:2;47418:9;:14;;;;47271:169:::0;:::o;40215:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;40964:30::-;;;;;;;;;;;;;:::o;42841:79::-;42881:7;42908:4;;42901:11;;42841:79;:::o;51762:141::-;51834:15;;;;;;;;;;;51820:29;;:10;:29;;;51812:38;;;;;;51869:1;51865:3;;:5;;;;:::i;:::-;51861:3;:9;;;;51890:5;51881:6;;:14;;;;;;;;;;;;;;;;;;51762:141::o;44148:132::-;44199:16;44235;;;;;;;;;;;:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44228:44;;44148:132;:::o;44584:145::-;44650:7;44677:16;;;;;;;;;;;:41;;;44719:1;44677:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44670:51;;44584:145;;;:::o;49505:120::-;49558:4;49582:35;49590:7;49599:17;49582:7;:35::i;:::-;49575:42;;49505:120;;;:::o;39902:41::-;39941:1;39902:41;:::o;49215:159::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;49327:2:::1;;;;;;;;;;;49313:16;;:10;:16;;;49305:25;;;::::0;::::1;;49346:20;49341:2;;:25;;;;;;;;;;;;;;;;;;49215:159:::0;:::o;47004:103::-;24060:13;:11;:13::i;:::-;47092:7:::1;47078;:11;47086:2;47078:11;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;47004:103:::0;;:::o;40351:17::-;;;;:::o;45458:129::-;45512:7;45539:16;;;;;;;;;;;:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45532:47;;45458:129;:::o;48767:190::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;48847:20:::1;48841:2;:26;;:79;;;;;48896:24;48890:2;:30;;48841:79;48833:88;;;::::0;::::1;;48947:2;48942;:7;;;;48767:190:::0;:::o;30229:127::-;30303:7;30330:9;:18;30340:7;30330:18;;;;;;;;;;;;;;;;30323:25;;30229:127;;;:::o;24779:103::-;24060:13;:11;:13::i;:::-;24844:30:::1;24871:1;24844:18;:30::i;:::-;24779:103::o:0;44898:143::-;44963:7;44990:16;;;;;;;;;;;:40;;;45031:1;44990:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44983:50;;44898:143;;;:::o;49382:78::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;49447:5:::1;49438:6;;:14;;;;;;;;;;;;;;;;;;49382:78::o:0;40790:20::-;;;;;;;;;;;;;:::o;46113:119::-;46162:7;46189:16;;;;;;;;;;;:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46182:42;;46113:119;:::o;44288:138::-;44342:16;44378;;;;;;;;;;;:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44371:47;;44288:138;:::o;46803:157::-;46848:11;:9;:11::i;:::-;46844:109;;;46876:16;;;;;;;;;;;:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46937:4;46928:6;;:13;;;;;;;;;;;;;;;;;;46844:109;46803:157::o;45732:119::-;45781:7;45808:16;;;;;;;;;;;:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45801:42;;45732:119;:::o;24174:87::-;24220:7;24247:6;;;;;;;;;;;24240:13;;24174:87;:::o;40817:30::-;;;;:::o;29148:104::-;29204:13;29237:7;29230:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29148:104;:::o;40327:17::-;;;;:::o;48633:126::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;48716:1:::1;48711:2;:6;:19;;;;;48727:3;48721:2;:9;;48711:19;48703:28;;;::::0;::::1;;48749:2;48742:4;:9;;;;48633:126:::0;:::o;33481:395::-;33574:4;33591:13;33607:12;:10;:12::i;:::-;33591:28;;33630:24;33657:25;33667:5;33674:7;33657:9;:25::i;:::-;33630:52;;33721:15;33701:16;:35;;33693:44;;;;;;33773:60;33782:5;33789:7;33817:15;33798:16;:34;33773:8;:60::i;:::-;33864:4;33857:11;;;;33481:395;;;;:::o;40160:19::-;;;;;;;;;;;;;:::o;43438:211::-;43480:4;43516:1;43501:11;:9;:11::i;:::-;:16;:27;;;;;43522:6;;;;;;;;;;;43521:7;43501:27;:49;;;;;43549:1;43532:2;:7;43535:3;;43532:7;;;;;;;;;;;:14;;;;:18;43501:49;:82;;;;;43582:1;43554:25;:23;:25::i;:::-;:29;43501:82;43497:144;;;43607:4;43600:11;;;;43497:144;43636:5;43629:12;;43438:211;;:::o;49896:154::-;49974:4;49998:44;50012:10;50024:9;50035:6;49998:13;:44::i;:::-;49991:51;;49896:154;;;;:::o;40897:23::-;;;;;;;;;;;;;:::o;44434:142::-;44490:16;44526;;;;;;;;;;;:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44519:49;;44434:142;:::o;26113:94::-;24060:13;:11;:13::i;:::-;26195:4:::1;26173:14:::0;:19:::1;26188:3;26173:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;26113:94:::0;:::o;40452:17::-;;;;:::o;44737:153::-;44807:7;44834:16;;;;;;;;;;;:45;;;44880:1;44834:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44827:55;;44737:153;;;:::o;47115:107::-;24060:13;:11;:13::i;:::-;47207:7:::1;47191:9;:13;47201:2;47191:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;47115:107:::0;;:::o;46479:125::-;46535:7;46562:16;;;;;;;;;;;:30;;;46593:2;46562:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46555:41;;46479:125;;;:::o;40854:34::-;;;;:::o;40604:40::-;;;;;;;;;;;;;:::o;46240:105::-;46282:7;46309:16;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46302:35;;46240:105;:::o;45190:123::-;45241:7;45268:16;;;;;;;;;;;:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45261:44;;45190:123;:::o;46353:118::-;46397:7;46406;46433:16;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46426:37;;;;46353:118;;:::o;40375:17::-;;;;;;;;;;;;;:::o;30818:151::-;30907:7;30934:11;:18;30946:5;30934:18;;;;;;;;;;;;;;;:27;30953:7;30934:27;;;;;;;;;;;;;;;;30927:34;;30818:151;;;;:::o;48965:242::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;49066:20:::1;49060:2;:26;;:76;;;;;49114:22;:20;:22::i;:::-;49109:2;:27;49060:76;49052:85;;;::::0;::::1;;49162:8;49148:11;;:22;;;;;;;;;;;;;;;;;;49197:2;49181:13;:18;;;;48965:242:::0;;:::o;45859:113::-;45905:7;45932:16;;;;;;;;;;;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45925:39;;45859:113;:::o;47448:99::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;47534:5:::1;47511:20;;:28;;;;;;;;;;;;;;;;;;47448:99::o:0;48197:193::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;39941:1:::1;48276:10;;:2;:10;;;;:24;;;;;39853:42;48290:10;;:2;:10;;;;48276:24;48268:33;;;::::0;::::1;;48330:2;48312:15;;:20;;;;;;;;;;;;;;;;;;48379:2;48343:16;;:39;;;;;;;;;;;;;;;;;;48197:193:::0;:::o;26283:97::-;24060:13;:11;:13::i;:::-;26367:5:::1;26345:14;:19;26360:3;26345:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;26283:97:::0;:::o;26535:202::-;24060:13;:11;:13::i;:::-;26645:1:::1;26625:22;;:8;:22;;::::0;26617:31:::1;;;::::0;::::1;;26686:4;26659:14:::0;:24:::1;26674:8;26659:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;26701:28;26720:8;26701:18;:28::i;:::-;26535:202:::0;:::o;40032:32::-;;;;;;;;;;;;;:::o;40651:24::-;;;;:::o;40190:18::-;;;;:::o;43196:75::-;43234:7;43261:2;;;;;;;;;;;43254:9;;43196:75;:::o;39950:73::-;39981:42;39950:73;:::o;25942:107::-;25998:4;26022:14;:19;26037:3;26022:19;;;;;;;;;;;;;;;;;;;;;;;;;26015:26;;25942:107;;;:::o;46612:146::-;26904:24;26917:10;26904:12;:24::i;:::-;26896:33;;;;;;39941:1:::1;46694:10;;:2;:10;;;;:24;;;;;39853:42;46708:10;;:2;:10;;;;46694:24;46686:33;;;::::0;::::1;;46748:2;46730:15;;:20;;;;;;;;;;;;;;;;;;46612:146:::0;:::o;3636:98::-;3694:7;3725:1;3721;:5;;;;:::i;:::-;3714:12;;3636:98;;;;:::o;2499:::-;2557:7;2588:1;2584;:5;;;;:::i;:::-;2577:12;;2499:98;;;;:::o;3237:::-;3295:7;3326:1;3322;:5;;;;:::i;:::-;3315:12;;3237:98;;;;:::o;22883:::-;22936:7;22963:10;22956:17;;22883:98;:::o;37201:268::-;37320:1;37303:19;;:5;:19;;;37295:28;;;;;;37361:1;37342:21;;:7;:21;;;37334:30;;;;;;37407:6;37377:11;:18;37389:5;37377:18;;;;;;;;;;;;;;;:27;37396:7;37377:27;;;;;;;;;;;;;;;:36;;;;37445:7;37429:32;;37438:5;37429:32;;;37454:6;37429:32;;;;;;:::i;:::-;;;;;;;;37201:268;;;:::o;2880:98::-;2938:7;2969:1;2965;:5;;;;:::i;:::-;2958:12;;2880:98;;;;:::o;50406:1310::-;50499:4;50518:13;:11;:13::i;:::-;50548:20;;;;;;;;;;;50544:374;;;50620:7;:5;:7::i;:::-;50607:20;;:9;:20;;;;:67;;;;;40111:42;50648:26;;:9;:26;;;;50607:67;:105;;;;;50708:4;;;;;;;;;;;50695:17;;:9;:17;;;;50607:105;50585:322;;;50805:12;50755:47;50799:2;50755:28;:39;50784:9;50755:39;;;;;;;;;;;;;;;;:43;;:47;;;;:::i;:::-;:62;50747:71;;;;;;50879:12;50837:28;:39;50866:9;50837:39;;;;;;;;;;;;;;;:54;;;;50585:322;50544:374;50934:2;;;;;;;;;;;50930:83;;;50960:41;50975:6;50983:9;50994:6;50960:14;:41::i;:::-;50953:48;;;;50930:83;51025:11;51052:4;;;;;;;;;;;51039:17;;:9;:17;;;:47;;;;40111:42;51060:26;;:9;:26;;;51039:47;51025:61;;51097:10;51120:4;;;;;;;;;;;51110:14;;:6;:14;;;:41;;;;40111:42;51128:23;;:6;:23;;;51110:41;51097:54;;51162:23;51188:33;51203:6;51211:9;51188:14;:33::i;:::-;:69;;51251:6;51188:69;;;51224:24;51233:6;51241;51224:8;:24::i;:::-;51188:69;51162:95;;51275:6;51274:7;:32;;;;;51286:9;:20;51296:9;51286:20;;;;;;;;;;;;;;;;;;;;;;;;;51285:21;51274:32;51270:109;;;51362:16;51376:1;51362:9;;:13;;:16;;;;:::i;:::-;51317:41;51342:15;51317:9;:20;51327:9;51317:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;51316:62;51308:71;;;;;;51270:109;51396:5;51392:38;;;51403:27;51412:9;51423:6;51403:8;:27::i;:::-;51392:38;51447:6;:27;;;;;51457:17;:15;:17::i;:::-;51447:27;51443:44;;;51476:11;:9;:11::i;:::-;51443:44;51520:29;51542:6;51520:9;:17;51530:6;51520:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;51500:9;:17;51510:6;51500:17;;;;;;;;;;;;;;;:49;;;;51583:41;51608:15;51583:9;:20;51593:9;51583:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;51560:9;:20;51570:9;51560:20;;;;;;;;;;;;;;;:64;;;;51657:9;51640:44;;51649:6;51640:44;;;51668:15;51640:44;;;;;;:::i;:::-;;;;;;;;51704:4;51697:11;;;;;50406:1310;;;;;;:::o;24339:96::-;24414:12;:10;:12::i;:::-;24403:23;;:7;:5;:7::i;:::-;:23;;;24395:32;;;;;;24339:96::o;25356:191::-;25430:16;25449:6;;;;;;;;;;;25430:25;;25475:8;25466:6;;:17;;;;;;;;;;;;;;;;;;25530:8;25499:40;;25520:8;25499:40;;;;;;;;;;;;25419:128;25356:191;:::o;49633:255::-;49726:4;49763:29;49785:6;49763:9;:17;49773:6;49763:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;49743:9;:17;49753:6;49743:17;;;;;;;;;;;;;;;:49;;;;49826:32;49851:6;49826:9;:20;49836:9;49826:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;49803:9;:20;49813:9;49803:20;;;;;;;;;;;;;;;:55;;;;49876:4;49869:11;;49633:255;;;;;:::o;43657:260::-;43741:4;43767:7;:16;43775:7;43767:16;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;43787:7;:19;43795:10;43787:19;;;;;;;;;;;;;;;;;;;;;;;;;43767:39;43765:42;:144;;;;;43823:4;;;;;;;;;;;43812:15;;:7;:15;;;:37;;;;43845:4;;;;;;;;;;;43831:18;;:10;:18;;;43812:37;:65;;;;40111:42;43853:24;;:7;:24;;;43812:65;:96;;;;40111:42;43881:27;;:10;:27;;;43812:96;43765:144;43758:151;;43657:260;;;;:::o;52138:431::-;52203:7;52223:12;52238:19;52253:3;;52238:10;52245:2;;52238;:6;;:10;;;;:::i;:::-;:14;;:19;;;;:::i;:::-;52223:34;;52295;52324:4;52295:9;:24;52313:4;52295:24;;;;;;;;;;;;;;;;:28;;:34;;;;:::i;:::-;52268:9;:24;52286:4;52268:24;;;;;;;;;;;;;;;:61;;;;52371:4;52345:38;;52354:7;52345:38;;;52378:4;52345:38;;;;;;:::i;:::-;;;;;;;;52394:12;52409:19;52424:3;;52409:10;52416:2;;52409;:6;;:10;;;;:::i;:::-;:14;;:19;;;;:::i;:::-;52394:34;;52455:23;52473:4;52455:9;:13;52465:2;;;;;;;;;;;52455:13;;;;;;;;;;;;;;;;:17;;:23;;;;:::i;:::-;52439:9;:13;52449:2;;;;;;;;;;;52439:13;;;;;;;;;;;;;;;:39;;;;52512:2;;;;;;;;;;;52494:27;;52503:7;52494:27;;;52516:4;52494:27;;;;;;:::i;:::-;;;;;;;;52539:22;52556:4;52539:12;52546:4;52539:2;:6;;:12;;;;:::i;:::-;:16;;:22;;;;:::i;:::-;52532:29;;;;52138:431;;;;:::o;53083:320::-;39941:1;53159:10;;:2;:10;;;;:24;;;;;39853:42;53173:10;;:2;:10;;;;53159:24;53151:33;;;;;;53206:4;;;;;;;;;;;53200:10;;:2;:10;;;:33;;;;40111:42;53214:19;;:2;:19;;;53200:33;:48;;;;53237:7;:11;53245:2;53237:11;;;;;;;;;;;;;;;;;;;;;;;;;53200:48;53250:7;53195:62;53269:10;53282:6;;;;;;;;;;;:20;;53299:3;;53282:20;;;53295:1;53291:3;;:5;;;;:::i;:::-;53282:20;53269:33;;53331:1;53317:2;:6;53320:2;53317:6;;;;;;;;;;;:10;53324:2;53317:10;;;;;;;;;;;;;;;;:15;53314:35;;53334:2;:6;53337:2;53334:6;;;;;;;;;;;53346:2;53334:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53314:35;53373:22;53388:6;53373:2;:6;53376:2;53373:6;;;;;;;;;;;:10;53380:2;53373:10;;;;;;;;;;;;;;;;:14;;:22;;;;:::i;:::-;53360:2;:6;53363:2;53360:6;;;;;;;;;;;:10;53367:2;53360:10;;;;;;;;;;;;;;;:35;;;;53138:265;53083:320;;;:::o;43925:167::-;43975:4;44013;;;;;;;;;;;43999:18;;:10;:18;;;;:25;;;;;44022:2;;;;;;;;;;;44021:3;43999:25;:40;;;;;44028:11;;;;;;;;;;;43999:40;:85;;;;;44071:13;;44043:9;:24;44061:4;44043:24;;;;;;;;;;;;;;;;:41;;43999:85;43992:92;;43925:167;:::o;52577:498::-;42656:4;42651:2;;:9;;;;;;;;;;;;;;;;;;52620:20:::1;52643:9;:24;52661:4;52643:24;;;;;;;;;;;;;;;;52620:47;;52680:21;52718:1;52704:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52680:40;;52749:4;52731;52736:1;52731:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;39981:42;52765:4;52770:1;52765:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;52792:17;52812:6;;;;;;;;;;;:20;;;52833:12;52847:4;52812:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;52853:1;52812:43;;;;;;;;:::i;:::-;;;;;;;;52792:63;;52866:6;;;;;;;;;;;:60;;;52941:12;52968:9;52992:4;53011:15;;;;;;;;;;;53041;52866:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;52609:466;;;42688:5:::0;42683:2;;:10;;;;;;;;;;;;;;;;;;52577:498::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:122::-;2036:24;2054:5;2036:24;:::i;:::-;2029:5;2026:35;2016:63;;2075:1;2072;2065:12;2016:63;1963:122;:::o;2091:139::-;2137:5;2175:6;2162:20;2153:29;;2191:33;2218:5;2191:33;:::i;:::-;2091:139;;;;:::o;2236:619::-;2313:6;2321;2329;2378:2;2366:9;2357:7;2353:23;2349:32;2346:119;;;2384:79;;:::i;:::-;2346:119;2504:1;2529:53;2574:7;2565:6;2554:9;2550:22;2529:53;:::i;:::-;2519:63;;2475:117;2631:2;2657:53;2702:7;2693:6;2682:9;2678:22;2657:53;:::i;:::-;2647:63;;2602:118;2759:2;2785:53;2830:7;2821:6;2810:9;2806:22;2785:53;:::i;:::-;2775:63;;2730:118;2236:619;;;;;:::o;2861:99::-;2913:6;2947:5;2941:12;2931:22;;2861:99;;;:::o;2966:169::-;3050:11;3084:6;3079:3;3072:19;3124:4;3119:3;3115:14;3100:29;;2966:169;;;;:::o;3141:246::-;3222:1;3232:113;3246:6;3243:1;3240:13;3232:113;;;3331:1;3326:3;3322:11;3316:18;3312:1;3307:3;3303:11;3296:39;3268:2;3265:1;3261:10;3256:15;;3232:113;;;3379:1;3370:6;3365:3;3361:16;3354:27;3203:184;3141:246;;;:::o;3393:102::-;3434:6;3485:2;3481:7;3476:2;3469:5;3465:14;3461:28;3451:38;;3393:102;;;:::o;3501:377::-;3589:3;3617:39;3650:5;3617:39;:::i;:::-;3672:71;3736:6;3731:3;3672:71;:::i;:::-;3665:78;;3752:65;3810:6;3805:3;3798:4;3791:5;3787:16;3752:65;:::i;:::-;3842:29;3864:6;3842:29;:::i;:::-;3837:3;3833:39;3826:46;;3593:285;3501:377;;;;:::o;3884:313::-;3997:4;4035:2;4024:9;4020:18;4012:26;;4084:9;4078:4;4074:20;4070:1;4059:9;4055:17;4048:47;4112:78;4185:4;4176:6;4112:78;:::i;:::-;4104:86;;3884:313;;;;:::o;4203:474::-;4271:6;4279;4328:2;4316:9;4307:7;4303:23;4299:32;4296:119;;;4334:79;;:::i;:::-;4296:119;4454:1;4479:53;4524:7;4515:6;4504:9;4500:22;4479:53;:::i;:::-;4469:63;;4425:117;4581:2;4607:53;4652:7;4643:6;4632:9;4628:22;4607:53;:::i;:::-;4597:63;;4552:118;4203:474;;;;;:::o;4683:90::-;4717:7;4760:5;4753:13;4746:21;4735:32;;4683:90;;;:::o;4779:109::-;4860:21;4875:5;4860:21;:::i;:::-;4855:3;4848:34;4779:109;;:::o;4894:210::-;4981:4;5019:2;5008:9;5004:18;4996:26;;5032:65;5094:1;5083:9;5079:17;5070:6;5032:65;:::i;:::-;4894:210;;;;:::o;5110:114::-;5177:6;5211:5;5205:12;5195:22;;5110:114;;;:::o;5230:184::-;5329:11;5363:6;5358:3;5351:19;5403:4;5398:3;5394:14;5379:29;;5230:184;;;;:::o;5420:132::-;5487:4;5510:3;5502:11;;5540:4;5535:3;5531:14;5523:22;;5420:132;;;:::o;5558:108::-;5635:24;5653:5;5635:24;:::i;:::-;5630:3;5623:37;5558:108;;:::o;5672:179::-;5741:10;5762:46;5804:3;5796:6;5762:46;:::i;:::-;5840:4;5835:3;5831:14;5817:28;;5672:179;;;;:::o;5857:113::-;5927:4;5959;5954:3;5950:14;5942:22;;5857:113;;;:::o;6006:732::-;6125:3;6154:54;6202:5;6154:54;:::i;:::-;6224:86;6303:6;6298:3;6224:86;:::i;:::-;6217:93;;6334:56;6384:5;6334:56;:::i;:::-;6413:7;6444:1;6429:284;6454:6;6451:1;6448:13;6429:284;;;6530:6;6524:13;6557:63;6616:3;6601:13;6557:63;:::i;:::-;6550:70;;6643:60;6696:6;6643:60;:::i;:::-;6633:70;;6489:224;6476:1;6473;6469:9;6464:14;;6429:284;;;6433:14;6729:3;6722:10;;6130:608;;;6006:732;;;;:::o;6744:373::-;6887:4;6925:2;6914:9;6910:18;6902:26;;6974:9;6968:4;6964:20;6960:1;6949:9;6945:17;6938:47;7002:108;7105:4;7096:6;7002:108;:::i;:::-;6994:116;;6744:373;;;;:::o;7123:474::-;7191:6;7199;7248:2;7236:9;7227:7;7223:23;7219:32;7216:119;;;7254:79;;:::i;:::-;7216:119;7374:1;7399:53;7444:7;7435:6;7424:9;7420:22;7399:53;:::i;:::-;7389:63;;7345:117;7501:2;7527:53;7572:7;7563:6;7552:9;7548:22;7527:53;:::i;:::-;7517:63;;7472:118;7123:474;;;;;:::o;7603:619::-;7680:6;7688;7696;7745:2;7733:9;7724:7;7720:23;7716:32;7713:119;;;7751:79;;:::i;:::-;7713:119;7871:1;7896:53;7941:7;7932:6;7921:9;7917:22;7896:53;:::i;:::-;7886:63;;7842:117;7998:2;8024:53;8069:7;8060:6;8049:9;8045:22;8024:53;:::i;:::-;8014:63;;7969:118;8126:2;8152:53;8197:7;8188:6;8177:9;8173:22;8152:53;:::i;:::-;8142:63;;8097:118;7603:619;;;;;:::o;8228:86::-;8263:7;8303:4;8296:5;8292:16;8281:27;;8228:86;;;:::o;8320:112::-;8403:22;8419:5;8403:22;:::i;:::-;8398:3;8391:35;8320:112;;:::o;8438:214::-;8527:4;8565:2;8554:9;8550:18;8542:26;;8578:67;8642:1;8631:9;8627:17;8618:6;8578:67;:::i;:::-;8438:214;;;;:::o;8658:329::-;8717:6;8766:2;8754:9;8745:7;8741:23;8737:32;8734:119;;;8772:79;;:::i;:::-;8734:119;8892:1;8917:53;8962:7;8953:6;8942:9;8938:22;8917:53;:::i;:::-;8907:63;;8863:117;8658:329;;;;:::o;8993:474::-;9061:6;9069;9118:2;9106:9;9097:7;9093:23;9089:32;9086:119;;;9124:79;;:::i;:::-;9086:119;9244:1;9269:53;9314:7;9305:6;9294:9;9290:22;9269:53;:::i;:::-;9259:63;;9215:117;9371:2;9397:53;9442:7;9433:6;9422:9;9418:22;9397:53;:::i;:::-;9387:63;;9342:118;8993:474;;;;;:::o;9473:116::-;9543:21;9558:5;9543:21;:::i;:::-;9536:5;9533:32;9523:60;;9579:1;9576;9569:12;9523:60;9473:116;:::o;9595:133::-;9638:5;9676:6;9663:20;9654:29;;9692:30;9716:5;9692:30;:::i;:::-;9595:133;;;;:::o;9734:468::-;9799:6;9807;9856:2;9844:9;9835:7;9831:23;9827:32;9824:119;;;9862:79;;:::i;:::-;9824:119;9982:1;10007:53;10052:7;10043:6;10032:9;10028:22;10007:53;:::i;:::-;9997:63;;9953:117;10109:2;10135:50;10177:7;10168:6;10157:9;10153:22;10135:50;:::i;:::-;10125:60;;10080:115;9734:468;;;;;:::o;10208:114::-;10275:6;10309:5;10303:12;10293:22;;10208:114;;;:::o;10328:184::-;10427:11;10461:6;10456:3;10449:19;10501:4;10496:3;10492:14;10477:29;;10328:184;;;;:::o;10518:132::-;10585:4;10608:3;10600:11;;10638:4;10633:3;10629:14;10621:22;;10518:132;;;:::o;10656:108::-;10733:24;10751:5;10733:24;:::i;:::-;10728:3;10721:37;10656:108;;:::o;10770:179::-;10839:10;10860:46;10902:3;10894:6;10860:46;:::i;:::-;10938:4;10933:3;10929:14;10915:28;;10770:179;;;;:::o;10955:113::-;11025:4;11057;11052:3;11048:14;11040:22;;10955:113;;;:::o;11104:732::-;11223:3;11252:54;11300:5;11252:54;:::i;:::-;11322:86;11401:6;11396:3;11322:86;:::i;:::-;11315:93;;11432:56;11482:5;11432:56;:::i;:::-;11511:7;11542:1;11527:284;11552:6;11549:1;11546:13;11527:284;;;11628:6;11622:13;11655:63;11714:3;11699:13;11655:63;:::i;:::-;11648:70;;11741:60;11794:6;11741:60;:::i;:::-;11731:70;;11587:224;11574:1;11571;11567:9;11562:14;;11527:284;;;11531:14;11827:3;11820:10;;11228:608;;;11104:732;;;;:::o;11842:373::-;11985:4;12023:2;12012:9;12008:18;12000:26;;12072:9;12066:4;12062:20;12058:1;12047:9;12043:17;12036:47;12100:108;12203:4;12194:6;12100:108;:::i;:::-;12092:116;;11842:373;;;;:::o;12221:332::-;12342:4;12380:2;12369:9;12365:18;12357:26;;12393:71;12461:1;12450:9;12446:17;12437:6;12393:71;:::i;:::-;12474:72;12542:2;12531:9;12527:18;12518:6;12474:72;:::i;:::-;12221:332;;;;;:::o;12559:474::-;12627:6;12635;12684:2;12672:9;12663:7;12659:23;12655:32;12652:119;;;12690:79;;:::i;:::-;12652:119;12810:1;12835:53;12880:7;12871:6;12860:9;12856:22;12835:53;:::i;:::-;12825:63;;12781:117;12937:2;12963:53;13008:7;12999:6;12988:9;12984:22;12963:53;:::i;:::-;12953:63;;12908:118;12559:474;;;;;:::o;13039:468::-;13104:6;13112;13161:2;13149:9;13140:7;13136:23;13132:32;13129:119;;;13167:79;;:::i;:::-;13129:119;13287:1;13312:50;13354:7;13345:6;13334:9;13330:22;13312:50;:::i;:::-;13302:60;;13258:114;13411:2;13437:53;13482:7;13473:6;13462:9;13458:22;13437:53;:::i;:::-;13427:63;;13382:118;13039:468;;;;;:::o;13513:60::-;13541:3;13562:5;13555:12;;13513:60;;;:::o;13579:142::-;13629:9;13662:53;13680:34;13689:24;13707:5;13689:24;:::i;:::-;13680:34;:::i;:::-;13662:53;:::i;:::-;13649:66;;13579:142;;;:::o;13727:126::-;13777:9;13810:37;13841:5;13810:37;:::i;:::-;13797:50;;13727:126;;;:::o;13859:152::-;13935:9;13968:37;13999:5;13968:37;:::i;:::-;13955:50;;13859:152;;;:::o;14017:183::-;14130:63;14187:5;14130:63;:::i;:::-;14125:3;14118:76;14017:183;;:::o;14206:274::-;14325:4;14363:2;14352:9;14348:18;14340:26;;14376:97;14470:1;14459:9;14455:17;14446:6;14376:97;:::i;:::-;14206:274;;;;:::o;14486:180::-;14534:77;14531:1;14524:88;14631:4;14628:1;14621:15;14655:4;14652:1;14645:15;14672:320;14716:6;14753:1;14747:4;14743:12;14733:22;;14800:1;14794:4;14790:12;14821:18;14811:81;;14877:4;14869:6;14865:17;14855:27;;14811:81;14939:2;14931:6;14928:14;14908:18;14905:38;14902:84;;14958:18;;:::i;:::-;14902:84;14723:269;14672:320;;;:::o;14998:143::-;15055:5;15086:6;15080:13;15071:22;;15102:33;15129:5;15102:33;:::i;:::-;14998:143;;;;:::o;15147:351::-;15217:6;15266:2;15254:9;15245:7;15241:23;15237:32;15234:119;;;15272:79;;:::i;:::-;15234:119;15392:1;15417:64;15473:7;15464:6;15453:9;15449:22;15417:64;:::i;:::-;15407:74;;15363:128;15147:351;;;;:::o;15504:180::-;15552:77;15549:1;15542:88;15649:4;15646:1;15639:15;15673:4;15670:1;15663:15;15690:191;15730:3;15749:20;15767:1;15749:20;:::i;:::-;15744:25;;15783:20;15801:1;15783:20;:::i;:::-;15778:25;;15826:1;15823;15819:9;15812:16;;15847:3;15844:1;15841:10;15838:36;;;15854:18;;:::i;:::-;15838:36;15690:191;;;;:::o;15887:194::-;15927:4;15947:20;15965:1;15947:20;:::i;:::-;15942:25;;15981:20;15999:1;15981:20;:::i;:::-;15976:25;;16025:1;16022;16018:9;16010:17;;16049:1;16043:4;16040:11;16037:37;;;16054:18;;:::i;:::-;16037:37;15887:194;;;;:::o;16087:180::-;16135:77;16132:1;16125:88;16232:4;16229:1;16222:15;16256:4;16253:1;16246:15;16273:180;16321:77;16318:1;16311:88;16418:4;16415:1;16408:15;16442:4;16439:1;16432:15;16459:171;16498:3;16521:24;16539:5;16521:24;:::i;:::-;16512:33;;16567:4;16560:5;16557:15;16554:41;;16575:18;;:::i;:::-;16554:41;16622:1;16615:5;16611:13;16604:20;;16459:171;;;:::o;16636:233::-;16675:3;16698:24;16716:5;16698:24;:::i;:::-;16689:33;;16744:66;16737:5;16734:77;16731:103;;16814:18;;:::i;:::-;16731:103;16861:1;16854:5;16850:13;16843:20;;16636:233;;;:::o;16875:143::-;16932:5;16963:6;16957:13;16948:22;;16979:33;17006:5;16979:33;:::i;:::-;16875:143;;;;:::o;17024:351::-;17094:6;17143:2;17131:9;17122:7;17118:23;17114:32;17111:119;;;17149:79;;:::i;:::-;17111:119;17269:1;17294:64;17350:7;17341:6;17330:9;17326:22;17294:64;:::i;:::-;17284:74;;17240:128;17024:351;;;;:::o;17381:117::-;17490:1;17487;17480:12;17504:180;17552:77;17549:1;17542:88;17649:4;17646:1;17639:15;17673:4;17670:1;17663:15;17690:281;17773:27;17795:4;17773:27;:::i;:::-;17765:6;17761:40;17903:6;17891:10;17888:22;17867:18;17855:10;17852:34;17849:62;17846:88;;;17914:18;;:::i;:::-;17846:88;17954:10;17950:2;17943:22;17733:238;17690:281;;:::o;17977:129::-;18011:6;18038:20;;:::i;:::-;18028:30;;18067:33;18095:4;18087:6;18067:33;:::i;:::-;17977:129;;;:::o;18112:311::-;18189:4;18279:18;18271:6;18268:30;18265:56;;;18301:18;;:::i;:::-;18265:56;18351:4;18343:6;18339:17;18331:25;;18411:4;18405;18401:15;18393:23;;18112:311;;;:::o;18429:117::-;18538:1;18535;18528:12;18569:732;18676:5;18701:81;18717:64;18774:6;18717:64;:::i;:::-;18701:81;:::i;:::-;18692:90;;18802:5;18831:6;18824:5;18817:21;18865:4;18858:5;18854:16;18847:23;;18918:4;18910:6;18906:17;18898:6;18894:30;18947:3;18939:6;18936:15;18933:122;;;18966:79;;:::i;:::-;18933:122;19081:6;19064:231;19098:6;19093:3;19090:15;19064:231;;;19173:3;19202:48;19246:3;19234:10;19202:48;:::i;:::-;19197:3;19190:61;19280:4;19275:3;19271:14;19264:21;;19140:155;19124:4;19119:3;19115:14;19108:21;;19064:231;;;19068:21;18682:619;;18569:732;;;;;:::o;19324:385::-;19406:5;19455:3;19448:4;19440:6;19436:17;19432:27;19422:122;;19463:79;;:::i;:::-;19422:122;19573:6;19567:13;19598:105;19699:3;19691:6;19684:4;19676:6;19672:17;19598:105;:::i;:::-;19589:114;;19412:297;19324:385;;;;:::o;19715:554::-;19810:6;19859:2;19847:9;19838:7;19834:23;19830:32;19827:119;;;19865:79;;:::i;:::-;19827:119;20006:1;19995:9;19991:17;19985:24;20036:18;20028:6;20025:30;20022:117;;;20058:79;;:::i;:::-;20022:117;20163:89;20244:7;20235:6;20224:9;20220:22;20163:89;:::i;:::-;20153:99;;19956:306;19715:554;;;;:::o;20275:311::-;20352:4;20442:18;20434:6;20431:30;20428:56;;;20464:18;;:::i;:::-;20428:56;20514:4;20506:6;20502:17;20494:25;;20574:4;20568;20564:15;20556:23;;20275:311;;;:::o;20609:732::-;20716:5;20741:81;20757:64;20814:6;20757:64;:::i;:::-;20741:81;:::i;:::-;20732:90;;20842:5;20871:6;20864:5;20857:21;20905:4;20898:5;20894:16;20887:23;;20958:4;20950:6;20946:17;20938:6;20934:30;20987:3;20979:6;20976:15;20973:122;;;21006:79;;:::i;:::-;20973:122;21121:6;21104:231;21138:6;21133:3;21130:15;21104:231;;;21213:3;21242:48;21286:3;21274:10;21242:48;:::i;:::-;21237:3;21230:61;21320:4;21315:3;21311:14;21304:21;;21180:155;21164:4;21159:3;21155:14;21148:21;;21104:231;;;21108:21;20722:619;;20609:732;;;;;:::o;21364:385::-;21446:5;21495:3;21488:4;21480:6;21476:17;21472:27;21462:122;;21503:79;;:::i;:::-;21462:122;21613:6;21607:13;21638:105;21739:3;21731:6;21724:4;21716:6;21712:17;21638:105;:::i;:::-;21629:114;;21452:297;21364:385;;;;:::o;21755:554::-;21850:6;21899:2;21887:9;21878:7;21874:23;21870:32;21867:119;;;21905:79;;:::i;:::-;21867:119;22046:1;22035:9;22031:17;22025:24;22076:18;22068:6;22065:30;22062:117;;;22098:79;;:::i;:::-;22062:117;22203:89;22284:7;22275:6;22264:9;22260:22;22203:89;:::i;:::-;22193:99;;21996:306;21755:554;;;;:::o;22315:507::-;22394:6;22402;22451:2;22439:9;22430:7;22426:23;22422:32;22419:119;;;22457:79;;:::i;:::-;22419:119;22577:1;22602:64;22658:7;22649:6;22638:9;22634:22;22602:64;:::i;:::-;22592:74;;22548:128;22715:2;22741:64;22797:7;22788:6;22777:9;22773:22;22741:64;:::i;:::-;22731:74;;22686:129;22315:507;;;;;:::o;22828:180::-;22876:77;22873:1;22866:88;22973:4;22970:1;22963:15;22997:4;22994:1;22987:15;23014:185;23054:1;23071:20;23089:1;23071:20;:::i;:::-;23066:25;;23105:20;23123:1;23105:20;:::i;:::-;23100:25;;23144:1;23134:35;;23149:18;;:::i;:::-;23134:35;23191:1;23188;23184:9;23179:14;;23014:185;;;;:::o;23205:410::-;23245:7;23268:20;23286:1;23268:20;:::i;:::-;23263:25;;23302:20;23320:1;23302:20;:::i;:::-;23297:25;;23357:1;23354;23350:9;23379:30;23397:11;23379:30;:::i;:::-;23368:41;;23558:1;23549:7;23545:15;23542:1;23539:22;23519:1;23512:9;23492:83;23469:139;;23588:18;;:::i;:::-;23469:139;23253:362;23205:410;;;;:::o;23621:483::-;23792:4;23830:2;23819:9;23815:18;23807:26;;23843:71;23911:1;23900:9;23896:17;23887:6;23843:71;:::i;:::-;23961:9;23955:4;23951:20;23946:2;23935:9;23931:18;23924:48;23989:108;24092:4;24083:6;23989:108;:::i;:::-;23981:116;;23621:483;;;;;:::o;24110:815::-;24365:4;24403:3;24392:9;24388:19;24380:27;;24417:71;24485:1;24474:9;24470:17;24461:6;24417:71;:::i;:::-;24498:72;24566:2;24555:9;24551:18;24542:6;24498:72;:::i;:::-;24617:9;24611:4;24607:20;24602:2;24591:9;24587:18;24580:48;24645:108;24748:4;24739:6;24645:108;:::i;:::-;24637:116;;24763:72;24831:2;24820:9;24816:18;24807:6;24763:72;:::i;:::-;24845:73;24913:3;24902:9;24898:19;24889:6;24845:73;:::i;:::-;24110:815;;;;;;;;:::o

Swarm Source

ipfs://9bf40e8c7737e1c2cd5cd9fbce0ad2497be59890c0fcf5d468bb9fbdddbc45a7
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.