ETH Price: $3,280.28 (-3.82%)
Gas: 16 Gwei

Token

DeflationaryCapital (DFC)
 

Overview

Max Total Supply

1,000,000,000,000 DFC

Holders

76

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
403,037,014.337087627 DFC

Value
$0.00
0x8edafaee203c4ab9a837203d50e51e187ab28d4c
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:
DeflationaryCapital

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-27
*/

/*

Stepped away for a moment and missed VariStableCapital?

DFC - DeflationaryCapital is by known devs who have created some of the top 
coins you know and love on ETH

Deflationary Capital: $DFC
Deflationary DeFi-as-a-Service (DaaS) Token, with 60% supply burned to 0x0dEaD
You buy on Ethereum, we execute algorithmic stablecoin strategies on various chains and return the profits to $DFC holders.

Initial Supply: 1,000,000,000,000 $DFC
60% of $DFC burned to 0x0dEaD
10% of each buy goes to existing holders.
10% of each sell goes into various-chain algorithmic stablecoin investing to add to the treasury and buy back $DFC tokens.

Telegram: https://t.me/deflationarycapital

*/

pragma solidity ^0.8.0;

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

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

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

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

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

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. 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;
        }
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

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

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;


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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

// File: @openzeppelin/contracts/utils/Address.sol


// OpenZeppelin Contracts v4.4.0 (utils/Address.sol)

pragma solidity ^0.8.0;

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

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

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

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

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

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: contracts/deflationarycapital.sol

// Deflationary Capital: $DFC
// Deflationary DeFi-as-a-Service (DaaS) Token, with 60% supply burned to 0x0dEaD
// You buy on Ethereum, we execute algorithmic stablecoin strategies on various chains and return the profits to $DFC holders.

//Initial Supply: 1,000,000,000,000 $DFC 
//60% of $DFC burned to 0x0dEaD
//10% of each buy goes to existing holders.
//10% of each sell goes into various-chain algorithmic stablecoin investing to add to the treasury and buy back $DFC tokens.

// Telegram: https://t.me/deflationarycapital

    interface IUniswapV2Factory {
        event PairCreated(address indexed token0, address indexed token1, address pair, uint);

        function feeTo() external view returns (address);
        function feeToSetter() external view returns (address);

        function getPair(address tokenA, address tokenB) external view returns (address pair);
        function allPairs(uint) external view returns (address pair);
        function allPairsLength() external view returns (uint);

        function createPair(address tokenA, address tokenB) external returns (address pair);

        function setFeeTo(address) external;
        function setFeeToSetter(address) external;
    }

    interface IUniswapV2Pair {
        event Approval(address indexed owner, address indexed spender, uint value);
        event Transfer(address indexed from, address indexed to, uint value);

        function name() external pure returns (string memory);
        function symbol() external pure returns (string memory);
        function decimals() external pure returns (uint8);
        function totalSupply() external view returns (uint);
        function balanceOf(address owner) external view returns (uint);
        function allowance(address owner, address spender) external view returns (uint);

        function approve(address spender, uint value) external returns (bool);
        function transfer(address to, uint value) external returns (bool);
        function transferFrom(address from, address to, uint value) external returns (bool);

        function DOMAIN_SEPARATOR() external view returns (bytes32);
        function PERMIT_TYPEHASH() external pure returns (bytes32);
        function nonces(address owner) external view returns (uint);

        function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

        event Mint(address indexed sender, uint amount0, uint amount1);
        event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
        event Swap(
            address indexed sender,
            uint amount0In,
            uint amount1In,
            uint amount0Out,
            uint amount1Out,
            address indexed to
        );
        event Sync(uint112 reserve0, uint112 reserve1);

        function MINIMUM_LIQUIDITY() external pure returns (uint);
        function factory() external view returns (address);
        function token0() external view returns (address);
        function token1() external view returns (address);
        function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
        function price0CumulativeLast() external view returns (uint);
        function price1CumulativeLast() external view returns (uint);
        function kLast() external view returns (uint);

        function mint(address to) external returns (uint liquidity);
        function burn(address to) external returns (uint amount0, uint amount1);
        function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
        function skim(address to) external;
        function sync() external;

        function initialize(address, address) external;
    }

interface IUniswapV2Router01 {
        function factory() external pure returns (address);
        function WETH() external pure returns (address);

        function addLiquidity(
            address tokenA,
            address tokenB,
            uint amountADesired,
            uint amountBDesired,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB, uint liquidity);
        function addLiquidityETH(
            address token,
            uint amountTokenDesired,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
        function removeLiquidity(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETH(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external returns (uint amountToken, uint amountETH);
        function removeLiquidityWithPermit(
            address tokenA,
            address tokenB,
            uint liquidity,
            uint amountAMin,
            uint amountBMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountA, uint amountB);
        function removeLiquidityETHWithPermit(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountToken, uint amountETH);
        function swapExactTokensForTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapTokensForExactTokens(
            uint amountOut,
            uint amountInMax,
            address[] calldata path,
            address to,
            uint deadline
        ) external returns (uint[] memory amounts);
        function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);
        function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
            external
            returns (uint[] memory amounts);
        function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
            external
            payable
            returns (uint[] memory amounts);

        function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
        function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
        function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
        function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
        function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
    }


   interface IUniswapV2Router02 is IUniswapV2Router01 {
        function removeLiquidityETHSupportingFeeOnTransferTokens(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external returns (uint amountETH);
        function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
            address token,
            uint liquidity,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline,
            bool approveMax, uint8 v, bytes32 r, bytes32 s
        ) external returns (uint amountETH);

        function swapExactTokensForTokensSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
        function swapExactETHForTokensSupportingFeeOnTransferTokens(
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external payable;
        function swapExactTokensForETHSupportingFeeOnTransferTokens(
            uint amountIn,
            uint amountOutMin,
            address[] calldata path,
            address to,
            uint deadline
        ) external;
    }

pragma solidity ^0.8.0;
//SPDX-License-Identifier: MIT






    contract DeflationaryCapital is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

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

        mapping (address => bool) private _isExcludedFromFee;

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;

        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 1000000000000 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'DeflationaryCapital';
        string private _symbol = 'DFC';
        uint8 private _decimals = 9;

        uint256 private _taxFee = 10;
        uint256 private _teamFee = 10;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousTeamFee = _teamFee;

        address payable public _DFCWalletAddress;
        address payable public _marketingWalletAddress;

        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 100000000000000e9;
        // We will set a minimum amount of tokens to be swaped => 5M
        uint256 private _numOfTokensToExchangeForTeam = 5 * 10**3 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

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

        constructor (address payable DFCWalletAddress, address payable marketingWalletAddress) {
            _DFCWalletAddress = DFCWalletAddress;
            _marketingWalletAddress = marketingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

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

        function deliver(uint256 tAmount) public {
            address sender = _msgSender();
            require(!_isExcluded[sender], "Excluded addresses cannot call this function");
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rTotal = _rTotal.sub(rAmount);
            _tFeeTotal = _tFeeTotal.add(tAmount);
        }

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

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

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

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

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

            _previousTaxFee = _taxFee;
            _previousTeamFee = _teamFee;

            _taxFee = 0;
            _teamFee = 0;
        }

        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _teamFee = _previousTeamFee;
        }

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

        function _approve(address owner, address spender, uint256 amount) private {
            require(owner != address(0), "ERC20: approve from the zero address");
            require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

            // is the token balance of this contract address over the min number of
            // tokens that we need to initiate a swap?
            // also, don't get caught in a circular team event.
            // also, don't swap if sender is uniswap pair.
            uint256 contractTokenBalance = balanceOf(address(this));

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

            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                // We need to swap the current tokens to ETH and send to the team wallet
                swapTokensForEth(contractTokenBalance);

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

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

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

            //transfer amount, it will take tax and team fee
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

        function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            // generate the uniswap pair path of token -> weth
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniswapV2Router.WETH();

            _approve(address(this), address(uniswapV2Router), tokenAmount);

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

        function sendETHToTeam(uint256 amount) private {
            _DFCWalletAddress.transfer(amount.div(2));
            _marketingWalletAddress.transfer(amount.div(2));
        }

        // We are exposing these functions to be able to manual swap and send
        // in case the token is highly valued and 5M becomes too much
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }

        function manualSend() external onlyOwner() {
            uint256 contractETHBalance = address(this).balance;
            sendETHToTeam(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }

        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();

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

            if(!takeFee)
                restoreAllFee();
        }

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

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

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

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

        function _takeTeam(uint256 tTeam) private {
            uint256 currentRate =  _getRate();
            uint256 rTeam = tTeam.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tTeam);
        }

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

         //to recieve ETH from uniswapV2Router when swaping
        receive() external payable {}

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

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tTeam = tAmount.mul(teamFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
            return (tTransferAmount, tFee, tTeam);
        }

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

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

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

        function _getTaxFee() private view returns(uint256) {
            return _taxFee;
        }

        function _getMaxTxAmount() private view returns(uint256) {
            return _maxTxAmount;
        }

        function _getETHBalance() public view returns(uint256 balance) {
            return address(this).balance;
        }

        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 1 && taxFee <= 25, 'taxFee should be in 1 - 25');
            _taxFee = taxFee;
        }

        function _setTeamFee(uint256 teamFee) external onlyOwner() {
            require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25');
            _teamFee = teamFee;
        }

        function _setDFCWallet(address payable DFCWalletAddress) external onlyOwner() {
            _DFCWalletAddress = DFCWalletAddress;
        }

        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
            require(maxTxAmount >= 100000000000000e9 , 'maxTxAmount should be greater than 100000000000000e9');
            _maxTxAmount = maxTxAmount;
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"DFCWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_DFCWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"DFCWalletAddress","type":"address"}],"name":"_setDFCWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052683635c9adc5dea0000060075560075460001962000023919062000946565b60001962000032919062000883565b6008556040518060400160405280601381526020017f4465666c6174696f6e6172794361706974616c00000000000000000000000000815250600a908051906020019062000082929190620006cc565b506040518060400160405280600381526020017f4446430000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000d0929190620006cc565b506009600c60006101000a81548160ff021916908360ff160217905550600a600d55600a600e55600d54600f55600e546010556000601260146101000a81548160ff0219169083151502179055506001601260156101000a81548160ff02191690831515021790555069152d02c7e14af680000060135565048c273950006014553480156200015e57600080fd5b5060405162005988380380620059888339818101604052810190620001849190620007d6565b620001a462000198620005d760201b60201c565b620005df60201b60201c565b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600160006200023d620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037957600080fd5b505afa1580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b49190620007aa565b6040518363ffffffff1660e01b8152600401620003d392919062000839565b602060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004299190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004ac620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000565620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005c6919062000866565b60405180910390a350505062000a3f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006da9062000910565b90600052602060002090601f016020900481019282620006fe57600085556200074a565b82601f106200071957805160ff19168380011785556200074a565b828001600101855582156200074a579182015b82811115620007495782518255916020019190600101906200072c565b5b5090506200075991906200075d565b5090565b5b80821115620007785760008160009055506001016200075e565b5090565b6000815190506200078d8162000a0b565b92915050565b600081519050620007a48162000a25565b92915050565b600060208284031215620007bd57600080fd5b6000620007cd848285016200077c565b91505092915050565b60008060408385031215620007ea57600080fd5b6000620007fa8582860162000793565b92505060206200080d8582860162000793565b9150509250929050565b6200082281620008be565b82525050565b620008338162000906565b82525050565b600060408201905062000850600083018562000817565b6200085f602083018462000817565b9392505050565b60006020820190506200087d600083018462000828565b92915050565b6000620008908262000906565b91506200089d8362000906565b925082821015620008b357620008b26200097e565b5b828203905092915050565b6000620008cb82620008e6565b9050919050565b6000620008df82620008e6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200092957607f821691505b6020821081141562000940576200093f620009dc565b5b50919050565b6000620009538262000906565b9150620009608362000906565b925082620009735762000972620009ad565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000a1681620008be565b811462000a2257600080fd5b50565b62000a3081620008d2565b811462000a3c57600080fd5b50565b60805160601c60a05160601c614f0162000a8760003960008181610f6b015261243f01526000818161095d015281816127aa015281816128c001526128e70152614f016000f3fe6080604052600436106102135760003560e01c80636ddd171311610118578063cba0e996116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063cba0e99614610716578063d7d8a6d514610753578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b806395d89b41116100e757806395d89b411461061f578063a457c2d71461064a578063a9059cbb14610687578063aed14a0d146106c4578063af9549e0146106ed5761021a565b80636ddd17131461057557806370a08231146105a0578063715018a6146105dd5780638da5cb5b146105f45761021a565b8063313ce5671161019b5780634549b0391161016a5780634549b0391461049057806349bd5a5e146104cd57806351bc3c85146104f85780635342acb41461050f5780635880b8731461054c5761021a565b8063313ce567146103d457806339509351146103ff5780633bd5d1731461043c5780634144d9e4146104655761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632d838119146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b604051610241919061481d565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061401e565b610933565b60405161027e91906147e7565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614a3f565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614802565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614a3f565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190614083565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613f93565b610a5c565b60405161036591906147e7565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190614083565b610b35565b005b3480156103a357600080fd5b506103be60048036038101906103b99190614083565b610c0c565b6040516103cb9190614a3f565b60405180910390f35b3480156103e057600080fd5b506103e9610c7a565b6040516103f69190614ab4565b60405180910390f35b34801561040b57600080fd5b506104266004803603810190610421919061401e565b610c91565b60405161043391906147e7565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190614083565b610d44565b005b34801561047157600080fd5b5061047a610ebf565b60405161048791906147cc565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906140ac565b610ee5565b6040516104c49190614a3f565b60405180910390f35b3480156104d957600080fd5b506104e2610f69565b6040516104ef91906147b1565b60405180910390f35b34801561050457600080fd5b5061050d610f8d565b005b34801561051b57600080fd5b5061053660048036038101906105319190613edc565b611022565b60405161054391906147e7565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190614083565b611078565b005b34801561058157600080fd5b5061058a61114f565b60405161059791906147e7565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613edc565b611162565b6040516105d49190614a3f565b60405180910390f35b3480156105e957600080fd5b506105f261124d565b005b34801561060057600080fd5b506106096112d5565b60405161061691906147b1565b60405180910390f35b34801561062b57600080fd5b506106346112fe565b604051610641919061481d565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c919061401e565b611390565b60405161067e91906147e7565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a9919061401e565b61145d565b6040516106bb91906147e7565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e69190613f2e565b61147b565b005b3480156106f957600080fd5b50610714600480360381019061070f9190613fe2565b61153b565b005b34801561072257600080fd5b5061073d60048036038101906107389190613edc565b611612565b60405161074a91906147e7565b60405180910390f35b34801561075f57600080fd5b50610768611668565b60405161077591906147cc565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613f57565b61168e565b6040516107b29190614a3f565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061405a565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613edc565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613edc565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614a3f565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613edc565b611c59565b005b6060600a80546108b090614d09565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d09565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940612027565b848461202f565b6001905092915050565b6000600954905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b610991612027565b73ffffffffffffffffffffffffffffffffffffffff166109af6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc9061495f565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a49906148ff565b60405180910390fd5b8060138190555050565b6000610a698484846121fa565b610b2a84610a75612027565b610b2585604051806060016040528060288152602001614e7f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b600190509392505050565b610b3d612027565b73ffffffffffffffffffffffffffffffffffffffff16610b5b6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061495f565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906148bf565b60405180910390fd5b80600e8190555050565b6000600854821115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a9061485f565b60405180910390fd5b6000610c5d6125d0565b9050610c7281846125fb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d3a610c9e612027565b84610d358560036000610caf612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b61202f565b6001905092915050565b6000610d4e612027565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490614a1f565b60405180910390fd5b6000610de883612627565b50505050509050610e4181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e998160085461268e90919063ffffffff16565b600881905550610eb48360095461261190919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f239061491f565b60405180910390fd5b81610f4c576000610f3c84612627565b5050505050905080915050610f63565b6000610f5784612627565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f95612027565b73ffffffffffffffffffffffffffffffffffffffff16610fb36112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110009061495f565b60405180910390fd5b600061101430611162565b905061101f816126a4565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611080612027565b73ffffffffffffffffffffffffffffffffffffffff1661109e6112d5565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb9061495f565b60405180910390fd5b60018110158015611106575060198111155b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906149df565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111fd57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611248565b611245600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b90505b919050565b611255612027565b73ffffffffffffffffffffffffffffffffffffffff166112736112d5565b73ffffffffffffffffffffffffffffffffffffffff16146112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c09061495f565b60405180910390fd5b6112d36000612998565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461130d90614d09565b80601f016020809104026020016040519081016040528092919081815260200182805461133990614d09565b80156113865780601f1061135b57610100808354040283529160200191611386565b820191906000526020600020905b81548152906001019060200180831161136957829003601f168201915b5050505050905090565b600061145361139d612027565b8461144e85604051806060016040528060258152602001614ea760259139600360006113c7612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b6001905092915050565b600061147161146a612027565b84846121fa565b6001905092915050565b611483612027565b73ffffffffffffffffffffffffffffffffffffffff166114a16112d5565b73ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee9061495f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611543612027565b73ffffffffffffffffffffffffffffffffffffffff166115616112d5565b73ffffffffffffffffffffffffffffffffffffffff16146115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae9061495f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d612027565b73ffffffffffffffffffffffffffffffffffffffff1661173b6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061495f565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6612027565b73ffffffffffffffffffffffffffffffffffffffff166117d46112d5565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061495f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906149ff565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906148df565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4612027565b73ffffffffffffffffffffffffffffffffffffffff16611af26112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061495f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061487f565b60405180910390fd5b611bc181612998565b50565b611bcc612027565b73ffffffffffffffffffffffffffffffffffffffff16611bea6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c379061495f565b60405180910390fd5b6000479050611c4e81612a5c565b50565b600047905090565b611c61612027565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc9061495f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906148df565b60405180910390fd5b60005b600680549050811015612023578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120105760066001600680549050611e1d9190614c05565b81548110611e54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611eb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611fd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612023565b808061201b90614d3b565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561209f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612096906149bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061489f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121ed9190614a3f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061499f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d19061483f565b60405180910390fd5b6000811161231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061497f565b60405180910390fd5b6123256112d5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561239357506123636112d5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123de576013548111156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d49061493f565b60405180910390fd5b5b60006123e930611162565b905060135481106123fa5760135490505b60006014548210159050601260149054906101000a900460ff1615801561242d5750601260159054906101000a900460ff165b80156124365750805b801561248e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124b65761249c826126a4565b600047905060008111156124b4576124b347612a5c565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061255d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256757600090505b61257386868684612b57565b505050505050565b60008383111582906125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba919061481d565b60405180910390fd5b5082840390509392505050565b60008060006125dd612e68565b915091506125f481836125fb90919063ffffffff16565b9250505090565b600081836126099190614b7a565b905092915050565b6000818361261f9190614b24565b905092915050565b60008060008060008060008060006126448a600d54600e546131b3565b92509250925060006126546125d0565b905060008060006126668e8786613249565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000818361269c9190614c05565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612702577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127305781602001602082028036833780820191505090505b509050308160008151811061276e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613f05565b81600181518110612880577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128e5307f00000000000000000000000000000000000000000000000000000000000000008461202f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612947959493929190614a5a565b600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612aac6002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ad7573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612b286002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612b53573d6000803e3d6000fd5b5050565b80612b6557612b646132a7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1d57612c188484846132ea565b612e54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cd557612cd084848461354a565b612e53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d795750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8e57612d898484846137aa565b612e52565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4557612e40848484613975565b612e51565b612e508484846137aa565b5b5b5b5b80612e6257612e61613c6a565b5b50505050565b600080600060085490506000600754905060005b60068054905081101561317657826001600060068481548110612ec8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fdc5750816002600060068481548110612f74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ff357600854600754945094505050506131af565b6130a96001600060068481548110613034577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461268e90919063ffffffff16565b925061316160026000600684815481106130ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361268e90919063ffffffff16565b9150808061316e90614d3b565b915050612e7c565b5061318e6007546008546125fb90919063ffffffff16565b8210156131a6576008546007549350935050506131af565b81819350935050505b9091565b6000806000806131df60646131d1888a613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061320960646131fb888b613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061323282613224858c61268e90919063ffffffff16565b61268e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132628588613c7e90919063ffffffff16565b905060006132798688613c7e90919063ffffffff16565b90506000613290828461268e90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d541480156132bb57506000600e54145b156132c5576132e8565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806132fc87612627565b95509550955095509550955061335a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ef86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d081613c94565b6134da8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135379190614a3f565b60405180910390a3505050505050505050565b60008060008060008061355c87612627565b9550955095509550955095506135ba86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373081613c94565b61373a8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137979190614a3f565b60405180910390a3505050505050505050565b6000806000806000806137bc87612627565b95509550955095509550955061381a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fb81613c94565b6139058483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139629190614a3f565b60405180910390a3505050505050505050565b60008060008060008061398787612627565b9550955095509550955095506139e587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf081613c94565b613bfa8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c579190614a3f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613c8c9190614bab565b905092915050565b6000613c9e6125d0565b90506000613cb58284613c7e90919063ffffffff16565b9050613d0981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e3457613df083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613e4e8260085461268e90919063ffffffff16565b600881905550613e698160095461261190919063ffffffff16565b6009819055505050565b600081359050613e8281614e22565b92915050565b600081519050613e9781614e22565b92915050565b600081359050613eac81614e39565b92915050565b600081359050613ec181614e50565b92915050565b600081359050613ed681614e67565b92915050565b600060208284031215613eee57600080fd5b6000613efc84828501613e73565b91505092915050565b600060208284031215613f1757600080fd5b6000613f2584828501613e88565b91505092915050565b600060208284031215613f4057600080fd5b6000613f4e84828501613e9d565b91505092915050565b60008060408385031215613f6a57600080fd5b6000613f7885828601613e73565b9250506020613f8985828601613e73565b9150509250929050565b600080600060608486031215613fa857600080fd5b6000613fb686828701613e73565b9350506020613fc786828701613e73565b9250506040613fd886828701613ec7565b9150509250925092565b60008060408385031215613ff557600080fd5b600061400385828601613e73565b925050602061401485828601613eb2565b9150509250929050565b6000806040838503121561403157600080fd5b600061403f85828601613e73565b925050602061405085828601613ec7565b9150509250929050565b60006020828403121561406c57600080fd5b600061407a84828501613eb2565b91505092915050565b60006020828403121561409557600080fd5b60006140a384828501613ec7565b91505092915050565b600080604083850312156140bf57600080fd5b60006140cd85828601613ec7565b92505060206140de85828601613eb2565b9150509250929050565b60006140f4838361410f565b60208301905092915050565b61410981614c4b565b82525050565b61411881614c39565b82525050565b61412781614c39565b82525050565b600061413882614adf565b6141428185614b02565b935061414d83614acf565b8060005b8381101561417e57815161416588826140e8565b975061417083614af5565b925050600181019050614151565b5085935050505092915050565b61419481614c5d565b82525050565b6141a381614ca0565b82525050565b6141b281614cc4565b82525050565b60006141c382614aea565b6141cd8185614b13565b93506141dd818560208601614cd6565b6141e681614e11565b840191505092915050565b60006141fe602383614b13565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614264602a83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006142ca602683614b13565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614330602283614b13565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614396601b83614b13565b91507f7465616d4665652073686f756c6420626520696e2031202d20323500000000006000830152602082019050919050565b60006143d6601b83614b13565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000614416603483614b13565b91507f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008301527f616e2031303030303030303030303030303065390000000000000000000000006020830152604082019050919050565b600061447c601f83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006144bc602883614b13565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614522602083614b13565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614562602983614b13565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006145c8602583614b13565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061462e602483614b13565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614694601a83614b13565b91507f7461784665652073686f756c6420626520696e2031202d2032350000000000006000830152602082019050919050565b60006146d4602283614b13565b91507f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008301527f722e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061473a602c83614b13565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b61479c81614c89565b82525050565b6147ab81614c93565b82525050565b60006020820190506147c6600083018461411e565b92915050565b60006020820190506147e16000830184614100565b92915050565b60006020820190506147fc600083018461418b565b92915050565b6000602082019050614817600083018461419a565b92915050565b6000602082019050818103600083015261483781846141b8565b905092915050565b60006020820190508181036000830152614858816141f1565b9050919050565b6000602082019050818103600083015261487881614257565b9050919050565b60006020820190508181036000830152614898816142bd565b9050919050565b600060208201905081810360008301526148b881614323565b9050919050565b600060208201905081810360008301526148d881614389565b9050919050565b600060208201905081810360008301526148f8816143c9565b9050919050565b6000602082019050818103600083015261491881614409565b9050919050565b600060208201905081810360008301526149388161446f565b9050919050565b60006020820190508181036000830152614958816144af565b9050919050565b6000602082019050818103600083015261497881614515565b9050919050565b6000602082019050818103600083015261499881614555565b9050919050565b600060208201905081810360008301526149b8816145bb565b9050919050565b600060208201905081810360008301526149d881614621565b9050919050565b600060208201905081810360008301526149f881614687565b9050919050565b60006020820190508181036000830152614a18816146c7565b9050919050565b60006020820190508181036000830152614a388161472d565b9050919050565b6000602082019050614a546000830184614793565b92915050565b600060a082019050614a6f6000830188614793565b614a7c60208301876141a9565b8181036040830152614a8e818661412d565b9050614a9d606083018561411e565b614aaa6080830184614793565b9695505050505050565b6000602082019050614ac960008301846147a2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614b2f82614c89565b9150614b3a83614c89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6f57614b6e614d84565b5b828201905092915050565b6000614b8582614c89565b9150614b9083614c89565b925082614ba057614b9f614db3565b5b828204905092915050565b6000614bb682614c89565b9150614bc183614c89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bfa57614bf9614d84565b5b828202905092915050565b6000614c1082614c89565b9150614c1b83614c89565b925082821015614c2e57614c2d614d84565b5b828203905092915050565b6000614c4482614c69565b9050919050565b6000614c5682614c69565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cab82614cb2565b9050919050565b6000614cbd82614c69565b9050919050565b6000614ccf82614c89565b9050919050565b60005b83811015614cf4578082015181840152602081019050614cd9565b83811115614d03576000848401525b50505050565b60006002820490506001821680614d2157607f821691505b60208210811415614d3557614d34614de2565b5b50919050565b6000614d4682614c89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d7957614d78614d84565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614e2b81614c39565b8114614e3657600080fd5b50565b614e4281614c4b565b8114614e4d57600080fd5b50565b614e5981614c5d565b8114614e6457600080fd5b50565b614e7081614c89565b8114614e7b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200cfc35baec208015557f5f69f922016d62c063e19c7fc57094924608cb5146cc64736f6c6343000800003300000000000000000000000085fb0ba8836668f1a054f3dc7bce83df909b13b2000000000000000000000000a02ba9efd87ce0df4e8d4277aa7c124f2f8d3adf

Deployed Bytecode

0x6080604052600436106102135760003560e01c80636ddd171311610118578063cba0e996116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063cba0e99614610716578063d7d8a6d514610753578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b806395d89b41116100e757806395d89b411461061f578063a457c2d71461064a578063a9059cbb14610687578063aed14a0d146106c4578063af9549e0146106ed5761021a565b80636ddd17131461057557806370a08231146105a0578063715018a6146105dd5780638da5cb5b146105f45761021a565b8063313ce5671161019b5780634549b0391161016a5780634549b0391461049057806349bd5a5e146104cd57806351bc3c85146104f85780635342acb41461050f5780635880b8731461054c5761021a565b8063313ce567146103d457806339509351146103ff5780633bd5d1731461043c5780634144d9e4146104655761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632d838119146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b604051610241919061481d565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061401e565b610933565b60405161027e91906147e7565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614a3f565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614802565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614a3f565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190614083565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613f93565b610a5c565b60405161036591906147e7565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190614083565b610b35565b005b3480156103a357600080fd5b506103be60048036038101906103b99190614083565b610c0c565b6040516103cb9190614a3f565b60405180910390f35b3480156103e057600080fd5b506103e9610c7a565b6040516103f69190614ab4565b60405180910390f35b34801561040b57600080fd5b506104266004803603810190610421919061401e565b610c91565b60405161043391906147e7565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190614083565b610d44565b005b34801561047157600080fd5b5061047a610ebf565b60405161048791906147cc565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906140ac565b610ee5565b6040516104c49190614a3f565b60405180910390f35b3480156104d957600080fd5b506104e2610f69565b6040516104ef91906147b1565b60405180910390f35b34801561050457600080fd5b5061050d610f8d565b005b34801561051b57600080fd5b5061053660048036038101906105319190613edc565b611022565b60405161054391906147e7565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190614083565b611078565b005b34801561058157600080fd5b5061058a61114f565b60405161059791906147e7565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613edc565b611162565b6040516105d49190614a3f565b60405180910390f35b3480156105e957600080fd5b506105f261124d565b005b34801561060057600080fd5b506106096112d5565b60405161061691906147b1565b60405180910390f35b34801561062b57600080fd5b506106346112fe565b604051610641919061481d565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c919061401e565b611390565b60405161067e91906147e7565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a9919061401e565b61145d565b6040516106bb91906147e7565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e69190613f2e565b61147b565b005b3480156106f957600080fd5b50610714600480360381019061070f9190613fe2565b61153b565b005b34801561072257600080fd5b5061073d60048036038101906107389190613edc565b611612565b60405161074a91906147e7565b60405180910390f35b34801561075f57600080fd5b50610768611668565b60405161077591906147cc565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613f57565b61168e565b6040516107b29190614a3f565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061405a565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613edc565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613edc565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614a3f565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613edc565b611c59565b005b6060600a80546108b090614d09565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d09565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940612027565b848461202f565b6001905092915050565b6000600954905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b610991612027565b73ffffffffffffffffffffffffffffffffffffffff166109af6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc9061495f565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a49906148ff565b60405180910390fd5b8060138190555050565b6000610a698484846121fa565b610b2a84610a75612027565b610b2585604051806060016040528060288152602001614e7f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b600190509392505050565b610b3d612027565b73ffffffffffffffffffffffffffffffffffffffff16610b5b6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba89061495f565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906148bf565b60405180910390fd5b80600e8190555050565b6000600854821115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a9061485f565b60405180910390fd5b6000610c5d6125d0565b9050610c7281846125fb90919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d3a610c9e612027565b84610d358560036000610caf612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b61202f565b6001905092915050565b6000610d4e612027565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490614a1f565b60405180910390fd5b6000610de883612627565b50505050509050610e4181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e998160085461268e90919063ffffffff16565b600881905550610eb48360095461261190919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f239061491f565b60405180910390fd5b81610f4c576000610f3c84612627565b5050505050905080915050610f63565b6000610f5784612627565b50505050915050809150505b92915050565b7f0000000000000000000000009b3dc40228485ccc47e0f0732f2e8ee613c5b3a581565b610f95612027565b73ffffffffffffffffffffffffffffffffffffffff16610fb36112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110009061495f565b60405180910390fd5b600061101430611162565b905061101f816126a4565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611080612027565b73ffffffffffffffffffffffffffffffffffffffff1661109e6112d5565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb9061495f565b60405180910390fd5b60018110158015611106575060198111155b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906149df565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111fd57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611248565b611245600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b90505b919050565b611255612027565b73ffffffffffffffffffffffffffffffffffffffff166112736112d5565b73ffffffffffffffffffffffffffffffffffffffff16146112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c09061495f565b60405180910390fd5b6112d36000612998565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b805461130d90614d09565b80601f016020809104026020016040519081016040528092919081815260200182805461133990614d09565b80156113865780601f1061135b57610100808354040283529160200191611386565b820191906000526020600020905b81548152906001019060200180831161136957829003601f168201915b5050505050905090565b600061145361139d612027565b8461144e85604051806060016040528060258152602001614ea760259139600360006113c7612027565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257b9092919063ffffffff16565b61202f565b6001905092915050565b600061147161146a612027565b84846121fa565b6001905092915050565b611483612027565b73ffffffffffffffffffffffffffffffffffffffff166114a16112d5565b73ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee9061495f565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611543612027565b73ffffffffffffffffffffffffffffffffffffffff166115616112d5565b73ffffffffffffffffffffffffffffffffffffffff16146115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae9061495f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d612027565b73ffffffffffffffffffffffffffffffffffffffff1661173b6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061495f565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6612027565b73ffffffffffffffffffffffffffffffffffffffff166117d46112d5565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118219061495f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906149ff565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906148df565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4612027565b73ffffffffffffffffffffffffffffffffffffffff16611af26112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f9061495f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf9061487f565b60405180910390fd5b611bc181612998565b50565b611bcc612027565b73ffffffffffffffffffffffffffffffffffffffff16611bea6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c379061495f565b60405180910390fd5b6000479050611c4e81612a5c565b50565b600047905090565b611c61612027565b73ffffffffffffffffffffffffffffffffffffffff16611c7f6112d5565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc9061495f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906148df565b60405180910390fd5b60005b600680549050811015612023578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120105760066001600680549050611e1d9190614c05565b81548110611e54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611eb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611fd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612023565b808061201b90614d3b565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561209f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612096906149bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561210f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121069061489f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121ed9190614a3f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122619061499f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d19061483f565b60405180910390fd5b6000811161231d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123149061497f565b60405180910390fd5b6123256112d5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561239357506123636112d5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123de576013548111156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d49061493f565b60405180910390fd5b5b60006123e930611162565b905060135481106123fa5760135490505b60006014548210159050601260149054906101000a900460ff1615801561242d5750601260159054906101000a900460ff165b80156124365750805b801561248e57507f0000000000000000000000009b3dc40228485ccc47e0f0732f2e8ee613c5b3a573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156124b65761249c826126a4565b600047905060008111156124b4576124b347612a5c565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061255d5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561256757600090505b61257386868684612b57565b505050505050565b60008383111582906125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba919061481d565b60405180910390fd5b5082840390509392505050565b60008060006125dd612e68565b915091506125f481836125fb90919063ffffffff16565b9250505090565b600081836126099190614b7a565b905092915050565b6000818361261f9190614b24565b905092915050565b60008060008060008060008060006126448a600d54600e546131b3565b92509250925060006126546125d0565b905060008060006126668e8786613249565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000818361269c9190614c05565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612702577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127305781602001602082028036833780820191505090505b509050308160008151811061276e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613f05565b81600181518110612880577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128e5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461202f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612947959493929190614a5a565b600060405180830381600087803b15801561296157600080fd5b505af1158015612975573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612aac6002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612ad7573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612b286002846125fb90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612b53573d6000803e3d6000fd5b5050565b80612b6557612b646132a7565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1d57612c188484846132ea565b612e54565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cc05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cd557612cd084848461354a565b612e53565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d795750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d8e57612d898484846137aa565b612e52565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e4557612e40848484613975565b612e51565b612e508484846137aa565b5b5b5b5b80612e6257612e61613c6a565b5b50505050565b600080600060085490506000600754905060005b60068054905081101561317657826001600060068481548110612ec8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612fdc5750816002600060068481548110612f74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ff357600854600754945094505050506131af565b6130a96001600060068481548110613034577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461268e90919063ffffffff16565b925061316160026000600684815481106130ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361268e90919063ffffffff16565b9150808061316e90614d3b565b915050612e7c565b5061318e6007546008546125fb90919063ffffffff16565b8210156131a6576008546007549350935050506131af565b81819350935050505b9091565b6000806000806131df60646131d1888a613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061320960646131fb888b613c7e90919063ffffffff16565b6125fb90919063ffffffff16565b9050600061323282613224858c61268e90919063ffffffff16565b61268e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132628588613c7e90919063ffffffff16565b905060006132798688613c7e90919063ffffffff16565b90506000613290828461268e90919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d541480156132bb57506000600e54145b156132c5576132e8565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806132fc87612627565b95509550955095509550955061335a87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133ef86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134d081613c94565b6134da8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135379190614a3f565b60405180910390a3505050505050505050565b60008060008060008061355c87612627565b9550955095509550955095506135ba86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136e485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373081613c94565b61373a8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137979190614a3f565b60405180910390a3505050505050505050565b6000806000806000806137bc87612627565b95509550955095509550955061381a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138af85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138fb81613c94565b6139058483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139629190614a3f565b60405180910390a3505050505050505050565b60008060008060008061398787612627565b9550955095509550955095506139e587600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a7a86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0f83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bf081613c94565b613bfa8483613e39565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c579190614a3f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613c8c9190614bab565b905092915050565b6000613c9e6125d0565b90506000613cb58284613c7e90919063ffffffff16565b9050613d0981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e3457613df083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613e4e8260085461268e90919063ffffffff16565b600881905550613e698160095461261190919063ffffffff16565b6009819055505050565b600081359050613e8281614e22565b92915050565b600081519050613e9781614e22565b92915050565b600081359050613eac81614e39565b92915050565b600081359050613ec181614e50565b92915050565b600081359050613ed681614e67565b92915050565b600060208284031215613eee57600080fd5b6000613efc84828501613e73565b91505092915050565b600060208284031215613f1757600080fd5b6000613f2584828501613e88565b91505092915050565b600060208284031215613f4057600080fd5b6000613f4e84828501613e9d565b91505092915050565b60008060408385031215613f6a57600080fd5b6000613f7885828601613e73565b9250506020613f8985828601613e73565b9150509250929050565b600080600060608486031215613fa857600080fd5b6000613fb686828701613e73565b9350506020613fc786828701613e73565b9250506040613fd886828701613ec7565b9150509250925092565b60008060408385031215613ff557600080fd5b600061400385828601613e73565b925050602061401485828601613eb2565b9150509250929050565b6000806040838503121561403157600080fd5b600061403f85828601613e73565b925050602061405085828601613ec7565b9150509250929050565b60006020828403121561406c57600080fd5b600061407a84828501613eb2565b91505092915050565b60006020828403121561409557600080fd5b60006140a384828501613ec7565b91505092915050565b600080604083850312156140bf57600080fd5b60006140cd85828601613ec7565b92505060206140de85828601613eb2565b9150509250929050565b60006140f4838361410f565b60208301905092915050565b61410981614c4b565b82525050565b61411881614c39565b82525050565b61412781614c39565b82525050565b600061413882614adf565b6141428185614b02565b935061414d83614acf565b8060005b8381101561417e57815161416588826140e8565b975061417083614af5565b925050600181019050614151565b5085935050505092915050565b61419481614c5d565b82525050565b6141a381614ca0565b82525050565b6141b281614cc4565b82525050565b60006141c382614aea565b6141cd8185614b13565b93506141dd818560208601614cd6565b6141e681614e11565b840191505092915050565b60006141fe602383614b13565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614264602a83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006142ca602683614b13565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614330602283614b13565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614396601b83614b13565b91507f7465616d4665652073686f756c6420626520696e2031202d20323500000000006000830152602082019050919050565b60006143d6601b83614b13565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000614416603483614b13565b91507f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008301527f616e2031303030303030303030303030303065390000000000000000000000006020830152604082019050919050565b600061447c601f83614b13565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006144bc602883614b13565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614522602083614b13565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000614562602983614b13565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006145c8602583614b13565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061462e602483614b13565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614694601a83614b13565b91507f7461784665652073686f756c6420626520696e2031202d2032350000000000006000830152602082019050919050565b60006146d4602283614b13565b91507f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008301527f722e0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061473a602c83614b13565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b61479c81614c89565b82525050565b6147ab81614c93565b82525050565b60006020820190506147c6600083018461411e565b92915050565b60006020820190506147e16000830184614100565b92915050565b60006020820190506147fc600083018461418b565b92915050565b6000602082019050614817600083018461419a565b92915050565b6000602082019050818103600083015261483781846141b8565b905092915050565b60006020820190508181036000830152614858816141f1565b9050919050565b6000602082019050818103600083015261487881614257565b9050919050565b60006020820190508181036000830152614898816142bd565b9050919050565b600060208201905081810360008301526148b881614323565b9050919050565b600060208201905081810360008301526148d881614389565b9050919050565b600060208201905081810360008301526148f8816143c9565b9050919050565b6000602082019050818103600083015261491881614409565b9050919050565b600060208201905081810360008301526149388161446f565b9050919050565b60006020820190508181036000830152614958816144af565b9050919050565b6000602082019050818103600083015261497881614515565b9050919050565b6000602082019050818103600083015261499881614555565b9050919050565b600060208201905081810360008301526149b8816145bb565b9050919050565b600060208201905081810360008301526149d881614621565b9050919050565b600060208201905081810360008301526149f881614687565b9050919050565b60006020820190508181036000830152614a18816146c7565b9050919050565b60006020820190508181036000830152614a388161472d565b9050919050565b6000602082019050614a546000830184614793565b92915050565b600060a082019050614a6f6000830188614793565b614a7c60208301876141a9565b8181036040830152614a8e818661412d565b9050614a9d606083018561411e565b614aaa6080830184614793565b9695505050505050565b6000602082019050614ac960008301846147a2565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614b2f82614c89565b9150614b3a83614c89565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b6f57614b6e614d84565b5b828201905092915050565b6000614b8582614c89565b9150614b9083614c89565b925082614ba057614b9f614db3565b5b828204905092915050565b6000614bb682614c89565b9150614bc183614c89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bfa57614bf9614d84565b5b828202905092915050565b6000614c1082614c89565b9150614c1b83614c89565b925082821015614c2e57614c2d614d84565b5b828203905092915050565b6000614c4482614c69565b9050919050565b6000614c5682614c69565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614cab82614cb2565b9050919050565b6000614cbd82614c69565b9050919050565b6000614ccf82614c89565b9050919050565b60005b83811015614cf4578082015181840152602081019050614cd9565b83811115614d03576000848401525b50505050565b60006002820490506001821680614d2157607f821691505b60208210811415614d3557614d34614de2565b5b50919050565b6000614d4682614c89565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d7957614d78614d84565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614e2b81614c39565b8114614e3657600080fd5b50565b614e4281614c4b565b8114614e4d57600080fd5b50565b614e5981614c5d565b8114614e6457600080fd5b50565b614e7081614c89565b8114614e7b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200cfc35baec208015557f5f69f922016d62c063e19c7fc57094924608cb5146cc64736f6c63430008000033

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

00000000000000000000000085fb0ba8836668f1a054f3dc7bce83df909b13b2000000000000000000000000a02ba9efd87ce0df4e8d4277aa7c124f2f8d3adf

-----Decoded View---------------
Arg [0] : DFCWalletAddress (address): 0x85fb0Ba8836668f1a054F3dc7bCe83DF909b13b2
Arg [1] : marketingWalletAddress (address): 0xA02bA9EFd87CE0dF4E8D4277aA7c124f2F8D3Adf

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000085fb0ba8836668f1a054f3dc7bce83df909b13b2
Arg [1] : 000000000000000000000000a02ba9efd87ce0df4e8d4277aa7c124f2f8d3adf


Deployed Bytecode Sourcemap

31431:18846:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34162:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35166:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36514:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32570:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34475:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50037:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35351:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49684:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37522:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34372:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35692:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36621:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32511:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37038:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32632:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42708:168;;;;;;;;;;;;;:::i;:::-;;39213:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49491:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32713:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34590:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13110:103;;;;;;;;;;;;;:::i;:::-;;12459:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34265:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35934:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34812:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49884:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36357:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36227:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32460:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35003:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43068:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37803:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13368:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42888:168;;;;;;;;;;;;;:::i;:::-;;49361:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38290:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34162:91;34199:13;34236:5;34229:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34162:91;:::o;35166:173::-;35241:4;35262:39;35271:12;:10;:12::i;:::-;35285:7;35294:6;35262:8;:39::i;:::-;35323:4;35316:11;;35166:173;;;;:::o;36514:95::-;36556:7;36587:10;;36580:17;;36514:95;:::o;32570:51::-;;;:::o;34475:103::-;34528:7;34559;;34552:14;;34475:103;:::o;50037:233::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50142:17:::1;50127:11;:32;;50119:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;50247:11;50232:12;:26;;;;50037:233:::0;:::o;35351:329::-;35449:4;35470:36;35480:6;35488:9;35499:6;35470:9;:36::i;:::-;35521:121;35530:6;35538:12;:10;:12::i;:::-;35552:89;35590:6;35552:89;;;;;;;;;;;;;;;;;:11;:19;35564:6;35552:19;;;;;;;;;;;;;;;:33;35572:12;:10;:12::i;:::-;35552:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;35521:8;:121::i;:::-;35664:4;35657:11;;35351:329;;;;;:::o;49684:188::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49777:1:::1;49766:7;:12;;:29;;;;;49793:2;49782:7;:13;;49766:29;49758:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;49853:7;49842:8;:18;;;;49684:188:::0;:::o;37522:269::-;37588:7;37631;;37620;:18;;37612:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37700:19;37723:10;:8;:10::i;:::-;37700:33;;37755:24;37767:11;37755:7;:11;;:24;;;;:::i;:::-;37748:31;;;37522:269;;;:::o;34372:91::-;34413:5;34442:9;;;;;;;;;;;34435:16;;34372:91;:::o;35692:230::-;35780:4;35801:83;35810:12;:10;:12::i;:::-;35824:7;35833:50;35872:10;35833:11;:25;35845:12;:10;:12::i;:::-;35833:25;;;;;;;;;;;;;;;:34;35859:7;35833:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;35801:8;:83::i;:::-;35906:4;35899:11;;35692:230;;;;:::o;36621:405::-;36677:14;36694:12;:10;:12::i;:::-;36677:29;;36730:11;:19;36742:6;36730:19;;;;;;;;;;;;;;;;;;;;;;;;;36729:20;36721:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;36814:15;36838:19;36849:7;36838:10;:19::i;:::-;36813:44;;;;;;;36890:28;36910:7;36890;:15;36898:6;36890:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36872:7;:15;36880:6;36872:15;;;;;;;;;;;;;;;:46;;;;36943:20;36955:7;36943;;:11;;:20;;;;:::i;:::-;36933:7;:30;;;;36991:23;37006:7;36991:10;;:14;;:23;;;;:::i;:::-;36978:10;:36;;;;36621:405;;;:::o;32511:46::-;;;;;;;;;;;;;:::o;37038:472::-;37128:7;37171;;37160;:18;;37152:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;37234:17;37229:270;;37273:15;37297:19;37308:7;37297:10;:19::i;:::-;37272:44;;;;;;;37342:7;37335:14;;;;;37229:270;37392:23;37423:19;37434:7;37423:10;:19::i;:::-;37390:52;;;;;;;37468:15;37461:22;;;37038:472;;;;;:::o;32632:38::-;;;:::o;42708:168::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42766:23:::1;42792:24;42810:4;42792:9;:24::i;:::-;42766:50;;42831:33;42848:15;42831:16;:33::i;:::-;12750:1;42708:168::o:0;39213:131::-;39277:4;39305:18;:27;39324:7;39305:27;;;;;;;;;;;;;;;;;;;;;;;;;39298:34;;39213:131;;;:::o;49491:181::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49581:1:::1;49571:6;:11;;:27;;;;;49596:2;49586:6;:12;;49571:27;49563:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;49654:6;49644:7;:16;;;;49491:181:::0;:::o;32713:30::-;;;;;;;;;;;;;:::o;34590:210::-;34656:7;34684:11;:20;34696:7;34684:20;;;;;;;;;;;;;;;;;;;;;;;;;34680:49;;;34713:7;:16;34721:7;34713:16;;;;;;;;;;;;;;;;34706:23;;;;34680:49;34751:37;34771:7;:16;34779:7;34771:16;;;;;;;;;;;;;;;;34751:19;:37::i;:::-;34744:44;;34590:210;;;;:::o;13110:103::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13175:30:::1;13202:1;13175:18;:30::i;:::-;13110:103::o:0;12459:87::-;12505:7;12532:6;;;;;;;;;;;12525:13;;12459:87;:::o;34265:95::-;34304:13;34341:7;34334:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34265:95;:::o;35934:281::-;36027:4;36048:129;36057:12;:10;:12::i;:::-;36071:7;36080:96;36119:15;36080:96;;;;;;;;;;;;;;;;;:11;:25;36092:12;:10;:12::i;:::-;36080:25;;;;;;;;;;;;;;;:34;36106:7;36080:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;36048:8;:129::i;:::-;36199:4;36192:11;;35934:281;;;;:::o;34812:179::-;34890:4;34911:42;34921:12;:10;:12::i;:::-;34935:9;34946:6;34911:9;:42::i;:::-;34975:4;34968:11;;34812:179;;;;:::o;49884:141::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49997:16:::1;49977:17;;:36;;;;;;;;;;;;;;;;;;49884:141:::0;:::o;36357:145::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36482:8:::1;36452:18;:27;36471:7;36452:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;36357:145:::0;;:::o;36227:118::-;36285:4;36313:11;:20;36325:7;36313:20;;;;;;;;;;;;;;;;;;;;;;;;;36306:27;;36227:118;;;:::o;32460:40::-;;;;;;;;;;;;;:::o;35003:151::-;35084:7;35115:11;:18;35127:5;35115:18;;;;;;;;;;;;;;;:27;35134:7;35115:27;;;;;;;;;;;;;;;;35108:34;;35003:151;;;;:::o;43068:106::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43155:7:::1;43141:11;;:21;;;;;;;;;;;;;;;;;;43068:106:::0;:::o;37803:475::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37899:42:::1;37888:53;;:7;:53;;;;37880:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;38004:11;:20;38016:7;38004:20;;;;;;;;;;;;;;;;;;;;;;;;;38003:21;37995:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;38093:1;38074:7;:16;38082:7;38074:16;;;;;;;;;;;;;;;;:20;38071:116;;;38134:37;38154:7;:16;38162:7;38154:16;;;;;;;;;;;;;;;;38134:19;:37::i;:::-;38115:7;:16;38123:7;38115:16;;;;;;;;;;;;;;;:56;;;;38071:116;38224:4;38201:11;:20;38213:7;38201:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;38243:9;38258:7;38243:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37803:475:::0;:::o;13368:201::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13477:1:::1;13457:22;;:8;:22;;;;13449:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13533:28;13552:8;13533:18;:28::i;:::-;13368:201:::0;:::o;42888:168::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42946:26:::1;42975:21;42946:50;;43011:33;43025:18;43011:13;:33::i;:::-;12750:1;42888:168::o:0;49361:118::-;49407:15;49446:21;49439:28;;49361:118;:::o;38290:522::-;12690:12;:10;:12::i;:::-;12679:23;;:7;:5;:7::i;:::-;:23;;;12671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38375:11:::1;:20;38387:7;38375:20;;;;;;;;;;;;;;;;;;;;;;;;;38367:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;38447:9;38442:359;38466:9;:16;;;;38462:1;:20;38442:359;;;38528:7;38512:23;;:9;38522:1;38512:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;38508:278;;;38575:9;38604:1;38585:9;:16;;;;:20;;;;:::i;:::-;38575:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38560:9;38570:1;38560:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38648:1;38629:7;:16;38637:7;38629:16;;;;;;;;;;;;;;;:20;;;;38695:5;38672:11;:20;38684:7;38672:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38723:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38761:5;;38508:278;38484:3;;;;;:::i;:::-;;;;38442:359;;;;38290:522:::0;:::o;11183:98::-;11236:7;11263:10;11256:17;;11183:98;:::o;39356:357::-;39470:1;39453:19;;:5;:19;;;;39445:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39555:1;39536:21;;:7;:21;;;;39528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39643:6;39613:11;:18;39625:5;39613:18;;;;;;;;;;;;;;;:27;39632:7;39613:27;;;;;;;;;;;;;;;:36;;;;39685:7;39669:32;;39678:5;39669:32;;;39694:6;39669:32;;;;;;:::i;:::-;;;;;;;;39356:357;;;:::o;39725:1964::-;39844:1;39826:20;;:6;:20;;;;39818:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39932:1;39911:23;;:9;:23;;;;39903:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;40006:1;39997:6;:10;39989:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;40083:7;:5;:7::i;:::-;40073:17;;:6;:17;;;;:41;;;;;40107:7;:5;:7::i;:::-;40094:20;;:9;:20;;;;40073:41;40070:138;;;40151:12;;40141:6;:22;;40133:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;40070:138;40491:28;40522:24;40540:4;40522:9;:24::i;:::-;40491:55;;40590:12;;40566:20;:36;40563:124;;40659:12;;40636:35;;40563:124;40703:24;40754:29;;40730:20;:53;;40703:80;;40803:6;;;;;;;;;;;40802:7;:22;;;;;40813:11;;;;;;;;;;;40802:22;:45;;;;;40828:19;40802:45;:72;;;;;40861:13;40851:23;;:6;:23;;;;40802:72;40798:436;;;40985:38;41002:20;40985:16;:38::i;:::-;41044:26;41073:21;41044:50;;41137:1;41116:18;:22;41113:106;;;41163:36;41177:21;41163:13;:36::i;:::-;41113:106;40798:436;;41315:12;41330:4;41315:19;;41442:18;:26;41461:6;41442:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;41472:18;:29;41491:9;41472:29;;;;;;;;;;;;;;;;;;;;;;;;;41442:59;41439:113;;;41531:5;41521:15;;41439:113;41630:47;41645:6;41652:9;41662:6;41669:7;41630:14;:47::i;:::-;39725:1964;;;;;;:::o;5722:240::-;5842:7;5900:1;5895;:6;;5903:12;5887:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5942:1;5938;:5;5931:12;;5722:240;;;;;:::o;48347:175::-;48388:7;48413:15;48430;48449:19;:17;:19::i;:::-;48412:56;;;;48490:20;48502:7;48490;:11;;:20;;;;:::i;:::-;48483:27;;;;48347:175;:::o;4580:98::-;4638:7;4669:1;4665;:5;;;;:::i;:::-;4658:12;;4580:98;;;;:::o;3443:::-;3501:7;3532:1;3528;:5;;;;:::i;:::-;3521:12;;3443:98;;;;:::o;47105:481::-;47164:7;47173;47182;47191;47200;47209;47234:23;47259:12;47273:13;47290:39;47302:7;47311;;47320:8;;47290:11;:39::i;:::-;47233:96;;;;;;47344:19;47367:10;:8;:10::i;:::-;47344:33;;47393:15;47410:23;47435:12;47451:39;47463:7;47472:4;47478:11;47451;:39::i;:::-;47392:98;;;;;;47513:7;47522:15;47539:4;47545:15;47562:4;47568:5;47505:69;;;;;;;;;;;;;;;;;;;47105:481;;;;;;;:::o;3824:98::-;3882:7;3913:1;3909;:5;;;;:::i;:::-;3902:12;;3824:98;;;;:::o;41701:656::-;33131:4;33122:6;;:13;;;;;;;;;;;;;;;;;;41846:21:::1;41884:1;41870:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41846:40;;41919:4;41901;41906:1;41901:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;41949:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41939:4;41944:1;41939:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;41988:62;42005:4;42020:15;42038:11;41988:8;:62::i;:::-;42097:15;:66;;;42182:11;42212:1;42260:4;42291;42315:15;42097:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33150:1;33175:5:::0;33166:6;;:14;;;;;;;;;;;;;;;;;;41701:656;:::o;13729:191::-;13803:16;13822:6;;;;;;;;;;;13803:25;;13848:8;13839:6;;:17;;;;;;;;;;;;;;;;;;13903:8;13872:40;;13893:8;13872:40;;;;;;;;;;;;13729:191;;:::o;42369:177::-;42431:17;;;;;;;;;;;:26;;:41;42458:13;42469:1;42458:6;:10;;:13;;;;:::i;:::-;42431:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42487:23;;;;;;;;;;;:32;;:47;42520:13;42531:1;42520:6;:10;;:13;;;;:::i;:::-;42487:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42369:177;:::o;43186:883::-;43302:7;43298:44;;43328:14;:12;:14::i;:::-;43298:44;43363:11;:19;43375:6;43363:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;43387:11;:22;43399:9;43387:22;;;;;;;;;;;;;;;;;;;;;;;;;43386:23;43363:46;43359:637;;;43430:48;43452:6;43460:9;43471:6;43430:21;:48::i;:::-;43359:637;;;43505:11;:19;43517:6;43505:19;;;;;;;;;;;;;;;;;;;;;;;;;43504:20;:46;;;;;43528:11;:22;43540:9;43528:22;;;;;;;;;;;;;;;;;;;;;;;;;43504:46;43500:496;;;43571:46;43591:6;43599:9;43610:6;43571:19;:46::i;:::-;43500:496;;;43644:11;:19;43656:6;43644:19;;;;;;;;;;;;;;;;;;;;;;;;;43643:20;:47;;;;;43668:11;:22;43680:9;43668:22;;;;;;;;;;;;;;;;;;;;;;;;;43667:23;43643:47;43639:357;;;43711:44;43729:6;43737:9;43748:6;43711:17;:44::i;:::-;43639:357;;;43781:11;:19;43793:6;43781:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43804:11;:22;43816:9;43804:22;;;;;;;;;;;;;;;;;;;;;;;;;43781:45;43777:219;;;43847:48;43869:6;43877:9;43888:6;43847:21;:48::i;:::-;43777:219;;;43936:44;43954:6;43962:9;43973:6;43936:17;:44::i;:::-;43777:219;43639:357;43500:496;43359:637;44016:7;44012:45;;44042:15;:13;:15::i;:::-;44012:45;43186:883;;;;:::o;48534:595::-;48584:7;48593;48617:15;48635:7;;48617:25;;48657:15;48675:7;;48657:25;;48702:9;48697:305;48721:9;:16;;;;48717:1;:20;48697:305;;;48791:7;48767;:21;48775:9;48785:1;48775:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48767:21;;;;;;;;;;;;;;;;:31;:66;;;;48826:7;48802;:21;48810:9;48820:1;48810:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48802:21;;;;;;;;;;;;;;;;:31;48767:66;48763:97;;;48843:7;;48852;;48835:25;;;;;;;;;48763:97;48889:34;48901:7;:21;48909:9;48919:1;48909:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48901:21;;;;;;;;;;;;;;;;48889:7;:11;;:34;;;;:::i;:::-;48879:44;;48952:34;48964:7;:21;48972:9;48982:1;48972:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48964:21;;;;;;;;;;;;;;;;48952:7;:11;;:34;;;;:::i;:::-;48942:44;;48739:3;;;;;:::i;:::-;;;;48697:305;;;;49030:20;49042:7;;49030;;:11;;:20;;;;:::i;:::-;49020:7;:30;49016:61;;;49060:7;;49069;;49052:25;;;;;;;;49016:61;49100:7;49109;49092:25;;;;;;48534:595;;;:::o;47598:371::-;47691:7;47700;47709;47733:12;47748:28;47772:3;47748:19;47760:6;47748:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;47733:43;;47791:13;47807:29;47832:3;47807:20;47819:7;47807;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;47791:45;;47851:23;47877:28;47899:5;47877:17;47889:4;47877:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;47851:54;;47928:15;47945:4;47951:5;47920:37;;;;;;;;;47598:371;;;;;;;:::o;47981:354::-;48076:7;48085;48094;48118:15;48136:24;48148:11;48136:7;:11;;:24;;;;:::i;:::-;48118:42;;48175:12;48190:21;48199:11;48190:4;:8;;:21;;;;:::i;:::-;48175:36;;48226:23;48252:17;48264:4;48252:7;:11;;:17;;;;:::i;:::-;48226:43;;48292:7;48301:15;48318:4;48284:39;;;;;;;;;47981:354;;;;;;;:::o;38824:238::-;38885:1;38874:7;;:12;:29;;;;;38902:1;38890:8;;:13;38874:29;38871:41;;;38905:7;;38871:41;38946:7;;38928:15;:25;;;;38987:8;;38968:16;:27;;;;39022:1;39012:7;:11;;;;39049:1;39038:8;:12;;;;38824:238;:::o;45212:580::-;45319:15;45336:23;45361:12;45375:23;45400:12;45414:13;45431:19;45442:7;45431:10;:19::i;:::-;45318:132;;;;;;;;;;;;45483:28;45503:7;45483;:15;45491:6;45483:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45465:7;:15;45473:6;45465:15;;;;;;;;;;;;;;;:46;;;;45544:28;45564:7;45544;:15;45552:6;45544:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45526:7;:15;45534:6;45526:15;;;;;;;;;;;;;;;:46;;;;45608:39;45631:15;45608:7;:18;45616:9;45608:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45587:7;:18;45595:9;45587:18;;;;;;;;;;;;;;;:60;;;;45662:16;45672:5;45662:9;:16::i;:::-;45693:23;45705:4;45711;45693:11;:23::i;:::-;45753:9;45736:44;;45745:6;45736:44;;;45764:15;45736:44;;;;;;:::i;:::-;;;;;;;;45212:580;;;;;;;;;:::o;44608:592::-;44713:15;44730:23;44755:12;44769:23;44794:12;44808:13;44825:19;44836:7;44825:10;:19::i;:::-;44712:132;;;;;;;;;;;;44877:28;44897:7;44877;:15;44885:6;44877:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44859:7;:15;44867:6;44859:15;;;;;;;;;;;;;;;:46;;;;44941:39;44964:15;44941:7;:18;44949:9;44941:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44920:7;:18;44928:9;44920:18;;;;;;;;;;;;;;;:60;;;;45016:39;45039:15;45016:7;:18;45024:9;45016:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44995:7;:18;45003:9;44995:18;;;;;;;;;;;;;;;:60;;;;45070:16;45080:5;45070:9;:16::i;:::-;45101:23;45113:4;45119;45101:11;:23::i;:::-;45161:9;45144:44;;45153:6;45144:44;;;45172:15;45144:44;;;;;;:::i;:::-;;;;;;;;44608:592;;;;;;;;;:::o;44081:515::-;44184:15;44201:23;44226:12;44240:23;44265:12;44279:13;44296:19;44307:7;44296:10;:19::i;:::-;44183:132;;;;;;;;;;;;44348:28;44368:7;44348;:15;44356:6;44348:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44330:7;:15;44338:6;44330:15;;;;;;;;;;;;;;;:46;;;;44412:39;44435:15;44412:7;:18;44420:9;44412:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44391:7;:18;44399:9;44391:18;;;;;;;;;;;;;;;:60;;;;44466:16;44476:5;44466:9;:16::i;:::-;44497:23;44509:4;44515;44497:11;:23::i;:::-;44557:9;44540:44;;44549:6;44540:44;;;44568:15;44540:44;;;;;;:::i;:::-;;;;;;;;44081:515;;;;;;;;;:::o;45804:655::-;45911:15;45928:23;45953:12;45967:23;45992:12;46006:13;46023:19;46034:7;46023:10;:19::i;:::-;45910:132;;;;;;;;;;;;46075:28;46095:7;46075;:15;46083:6;46075:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46057:7;:15;46065:6;46057:15;;;;;;;;;;;;;;;:46;;;;46136:28;46156:7;46136;:15;46144:6;46136:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46118:7;:15;46126:6;46118:15;;;;;;;;;;;;;;;:46;;;;46200:39;46223:15;46200:7;:18;46208:9;46200:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46179:7;:18;46187:9;46179:18;;;;;;;;;;;;;;;:60;;;;46275:39;46298:15;46275:7;:18;46283:9;46275:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46254:7;:18;46262:9;46254:18;;;;;;;;;;;;;;;:60;;;;46329:16;46339:5;46329:9;:16::i;:::-;46360:23;46372:4;46378;46360:11;:23::i;:::-;46420:9;46403:44;;46412:6;46403:44;;;46431:15;46403:44;;;;;;:::i;:::-;;;;;;;;45804:655;;;;;;;;;:::o;39074:127::-;39132:15;;39122:7;:25;;;;39173:16;;39162:8;:27;;;;39074:127::o;4181:98::-;4239:7;4270:1;4266;:5;;;;:::i;:::-;4259:12;;4181:98;;;;:::o;46471:349::-;46528:19;46551:10;:8;:10::i;:::-;46528:33;;46576:13;46592:22;46602:11;46592:5;:9;;:22;;;;:::i;:::-;46576:38;;46654:33;46681:5;46654:7;:22;46670:4;46654:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46629:7;:22;46645:4;46629:22;;;;;;;;;;;;;;;:58;;;;46705:11;:26;46725:4;46705:26;;;;;;;;;;;;;;;;;;;;;;;;;46702:106;;;46775:33;46802:5;46775:7;:22;46791:4;46775:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46750:7;:22;46766:4;46750:22;;;;;;;;;;;;;;;:58;;;;46702:106;46471:349;;;:::o;46832:159::-;46914:17;46926:4;46914:7;;:11;;:17;;;;:::i;:::-;46904:7;:27;;;;46959:20;46974:4;46959:10;;:14;;:20;;;;:::i;:::-;46946:10;:33;;;;46832:159;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:139::-;;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;653:87;;;;:::o;746:262::-;;854:2;842:9;833:7;829:23;825:32;822:2;;;870:1;867;860:12;822:2;913:1;938:53;983:7;974:6;963:9;959:22;938:53;:::i;:::-;928:63;;884:117;812:196;;;;:::o;1014:284::-;;1133:2;1121:9;1112:7;1108:23;1104:32;1101:2;;;1149:1;1146;1139:12;1101:2;1192:1;1217:64;1273:7;1264:6;1253:9;1249:22;1217:64;:::i;:::-;1207:74;;1163:128;1091:207;;;;:::o;1304:278::-;;1420:2;1408:9;1399:7;1395:23;1391:32;1388:2;;;1436:1;1433;1426:12;1388:2;1479:1;1504:61;1557:7;1548:6;1537:9;1533:22;1504:61;:::i;:::-;1494:71;;1450:125;1378:204;;;;:::o;1588:407::-;;;1713:2;1701:9;1692:7;1688:23;1684:32;1681:2;;;1729:1;1726;1719:12;1681:2;1772:1;1797:53;1842:7;1833:6;1822:9;1818:22;1797:53;:::i;:::-;1787:63;;1743:117;1899:2;1925:53;1970:7;1961:6;1950:9;1946:22;1925:53;:::i;:::-;1915:63;;1870:118;1671:324;;;;;:::o;2001:552::-;;;;2143:2;2131:9;2122:7;2118:23;2114:32;2111:2;;;2159:1;2156;2149:12;2111:2;2202:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2173:117;2329:2;2355:53;2400:7;2391:6;2380:9;2376:22;2355:53;:::i;:::-;2345:63;;2300:118;2457:2;2483:53;2528:7;2519:6;2508:9;2504:22;2483:53;:::i;:::-;2473:63;;2428:118;2101:452;;;;;:::o;2559:401::-;;;2681:2;2669:9;2660:7;2656:23;2652:32;2649:2;;;2697:1;2694;2687:12;2649:2;2740:1;2765:53;2810:7;2801:6;2790:9;2786:22;2765:53;:::i;:::-;2755:63;;2711:117;2867:2;2893:50;2935:7;2926:6;2915:9;2911:22;2893:50;:::i;:::-;2883:60;;2838:115;2639:321;;;;;:::o;2966:407::-;;;3091:2;3079:9;3070:7;3066:23;3062:32;3059:2;;;3107:1;3104;3097:12;3059:2;3150:1;3175:53;3220:7;3211:6;3200:9;3196:22;3175:53;:::i;:::-;3165:63;;3121:117;3277:2;3303:53;3348:7;3339:6;3328:9;3324:22;3303:53;:::i;:::-;3293:63;;3248:118;3049:324;;;;;:::o;3379:256::-;;3484:2;3472:9;3463:7;3459:23;3455:32;3452:2;;;3500:1;3497;3490:12;3452:2;3543:1;3568:50;3610:7;3601:6;3590:9;3586:22;3568:50;:::i;:::-;3558:60;;3514:114;3442:193;;;;:::o;3641:262::-;;3749:2;3737:9;3728:7;3724:23;3720:32;3717:2;;;3765:1;3762;3755:12;3717:2;3808:1;3833:53;3878:7;3869:6;3858:9;3854:22;3833:53;:::i;:::-;3823:63;;3779:117;3707:196;;;;:::o;3909:401::-;;;4031:2;4019:9;4010:7;4006:23;4002:32;3999:2;;;4047:1;4044;4037:12;3999:2;4090:1;4115:53;4160:7;4151:6;4140:9;4136:22;4115:53;:::i;:::-;4105:63;;4061:117;4217:2;4243:50;4285:7;4276:6;4265:9;4261:22;4243:50;:::i;:::-;4233:60;;4188:115;3989:321;;;;;:::o;4316:179::-;;4406:46;4448:3;4440:6;4406:46;:::i;:::-;4484:4;4479:3;4475:14;4461:28;;4396:99;;;;:::o;4501:142::-;4604:32;4630:5;4604:32;:::i;:::-;4599:3;4592:45;4582:61;;:::o;4649:108::-;4726:24;4744:5;4726:24;:::i;:::-;4721:3;4714:37;4704:53;;:::o;4763:118::-;4850:24;4868:5;4850:24;:::i;:::-;4845:3;4838:37;4828:53;;:::o;4917:732::-;;5065:54;5113:5;5065:54;:::i;:::-;5135:86;5214:6;5209:3;5135:86;:::i;:::-;5128:93;;5245:56;5295:5;5245:56;:::i;:::-;5324:7;5355:1;5340:284;5365:6;5362:1;5359:13;5340:284;;;5441:6;5435:13;5468:63;5527:3;5512:13;5468:63;:::i;:::-;5461:70;;5554:60;5607:6;5554:60;:::i;:::-;5544:70;;5400:224;5387:1;5384;5380:9;5375:14;;5340:284;;;5344:14;5640:3;5633:10;;5041:608;;;;;;;:::o;5655:109::-;5736:21;5751:5;5736:21;:::i;:::-;5731:3;5724:34;5714:50;;:::o;5770:185::-;5884:64;5942:5;5884:64;:::i;:::-;5879:3;5872:77;5862:93;;:::o;5961:147::-;6056:45;6095:5;6056:45;:::i;:::-;6051:3;6044:58;6034:74;;:::o;6114:364::-;;6230:39;6263:5;6230:39;:::i;:::-;6285:71;6349:6;6344:3;6285:71;:::i;:::-;6278:78;;6365:52;6410:6;6405:3;6398:4;6391:5;6387:16;6365:52;:::i;:::-;6442:29;6464:6;6442:29;:::i;:::-;6437:3;6433:39;6426:46;;6206:272;;;;;:::o;6484:367::-;;6647:67;6711:2;6706:3;6647:67;:::i;:::-;6640:74;;6744:34;6740:1;6735:3;6731:11;6724:55;6810:5;6805:2;6800:3;6796:12;6789:27;6842:2;6837:3;6833:12;6826:19;;6630:221;;;:::o;6857:374::-;;7020:67;7084:2;7079:3;7020:67;:::i;:::-;7013:74;;7117:34;7113:1;7108:3;7104:11;7097:55;7183:12;7178:2;7173:3;7169:12;7162:34;7222:2;7217:3;7213:12;7206:19;;7003:228;;;:::o;7237:370::-;;7400:67;7464:2;7459:3;7400:67;:::i;:::-;7393:74;;7497:34;7493:1;7488:3;7484:11;7477:55;7563:8;7558:2;7553:3;7549:12;7542:30;7598:2;7593:3;7589:12;7582:19;;7383:224;;;:::o;7613:366::-;;7776:67;7840:2;7835:3;7776:67;:::i;:::-;7769:74;;7873:34;7869:1;7864:3;7860:11;7853:55;7939:4;7934:2;7929:3;7925:12;7918:26;7970:2;7965:3;7961:12;7954:19;;7759:220;;;:::o;7985:325::-;;8148:67;8212:2;8207:3;8148:67;:::i;:::-;8141:74;;8245:29;8241:1;8236:3;8232:11;8225:50;8301:2;8296:3;8292:12;8285:19;;8131:179;;;:::o;8316:325::-;;8479:67;8543:2;8538:3;8479:67;:::i;:::-;8472:74;;8576:29;8572:1;8567:3;8563:11;8556:50;8632:2;8627:3;8623:12;8616:19;;8462:179;;;:::o;8647:384::-;;8810:67;8874:2;8869:3;8810:67;:::i;:::-;8803:74;;8907:34;8903:1;8898:3;8894:11;8887:55;8973:22;8968:2;8963:3;8959:12;8952:44;9022:2;9017:3;9013:12;9006:19;;8793:238;;;:::o;9037:329::-;;9200:67;9264:2;9259:3;9200:67;:::i;:::-;9193:74;;9297:33;9293:1;9288:3;9284:11;9277:54;9357:2;9352:3;9348:12;9341:19;;9183:183;;;:::o;9372:372::-;;9535:67;9599:2;9594:3;9535:67;:::i;:::-;9528:74;;9632:34;9628:1;9623:3;9619:11;9612:55;9698:10;9693:2;9688:3;9684:12;9677:32;9735:2;9730:3;9726:12;9719:19;;9518:226;;;:::o;9750:330::-;;9913:67;9977:2;9972:3;9913:67;:::i;:::-;9906:74;;10010:34;10006:1;10001:3;9997:11;9990:55;10071:2;10066:3;10062:12;10055:19;;9896:184;;;:::o;10086:373::-;;10249:67;10313:2;10308:3;10249:67;:::i;:::-;10242:74;;10346:34;10342:1;10337:3;10333:11;10326:55;10412:11;10407:2;10402:3;10398:12;10391:33;10450:2;10445:3;10441:12;10434:19;;10232:227;;;:::o;10465:369::-;;10628:67;10692:2;10687:3;10628:67;:::i;:::-;10621:74;;10725:34;10721:1;10716:3;10712:11;10705:55;10791:7;10786:2;10781:3;10777:12;10770:29;10825:2;10820:3;10816:12;10809:19;;10611:223;;;:::o;10840:368::-;;11003:67;11067:2;11062:3;11003:67;:::i;:::-;10996:74;;11100:34;11096:1;11091:3;11087:11;11080:55;11166:6;11161:2;11156:3;11152:12;11145:28;11199:2;11194:3;11190:12;11183:19;;10986:222;;;:::o;11214:324::-;;11377:67;11441:2;11436:3;11377:67;:::i;:::-;11370:74;;11474:28;11470:1;11465:3;11461:11;11454:49;11529:2;11524:3;11520:12;11513:19;;11360:178;;;:::o;11544:366::-;;11707:67;11771:2;11766:3;11707:67;:::i;:::-;11700:74;;11804:34;11800:1;11795:3;11791:11;11784:55;11870:4;11865:2;11860:3;11856:12;11849:26;11901:2;11896:3;11892:12;11885:19;;11690:220;;;:::o;11916:376::-;;12079:67;12143:2;12138:3;12079:67;:::i;:::-;12072:74;;12176:34;12172:1;12167:3;12163:11;12156:55;12242:14;12237:2;12232:3;12228:12;12221:36;12283:2;12278:3;12274:12;12267:19;;12062:230;;;:::o;12298:118::-;12385:24;12403:5;12385:24;:::i;:::-;12380:3;12373:37;12363:53;;:::o;12422:112::-;12505:22;12521:5;12505:22;:::i;:::-;12500:3;12493:35;12483:51;;:::o;12540:222::-;;12671:2;12660:9;12656:18;12648:26;;12684:71;12752:1;12741:9;12737:17;12728:6;12684:71;:::i;:::-;12638:124;;;;:::o;12768:254::-;;12915:2;12904:9;12900:18;12892:26;;12928:87;13012:1;13001:9;12997:17;12988:6;12928:87;:::i;:::-;12882:140;;;;:::o;13028:210::-;;13153:2;13142:9;13138:18;13130:26;;13166:65;13228:1;13217:9;13213:17;13204:6;13166:65;:::i;:::-;13120:118;;;;:::o;13244:276::-;;13402:2;13391:9;13387:18;13379:26;;13415:98;13510:1;13499:9;13495:17;13486:6;13415:98;:::i;:::-;13369:151;;;;:::o;13526:313::-;;13677:2;13666:9;13662:18;13654:26;;13726:9;13720:4;13716:20;13712:1;13701:9;13697:17;13690:47;13754:78;13827:4;13818:6;13754:78;:::i;:::-;13746:86;;13644:195;;;;:::o;13845:419::-;;14049:2;14038:9;14034:18;14026:26;;14098:9;14092:4;14088:20;14084:1;14073:9;14069:17;14062:47;14126:131;14252:4;14126:131;:::i;:::-;14118:139;;14016:248;;;:::o;14270:419::-;;14474:2;14463:9;14459:18;14451:26;;14523:9;14517:4;14513:20;14509:1;14498:9;14494:17;14487:47;14551:131;14677:4;14551:131;:::i;:::-;14543:139;;14441:248;;;:::o;14695:419::-;;14899:2;14888:9;14884:18;14876:26;;14948:9;14942:4;14938:20;14934:1;14923:9;14919:17;14912:47;14976:131;15102:4;14976:131;:::i;:::-;14968:139;;14866:248;;;:::o;15120:419::-;;15324:2;15313:9;15309:18;15301:26;;15373:9;15367:4;15363:20;15359:1;15348:9;15344:17;15337:47;15401:131;15527:4;15401:131;:::i;:::-;15393:139;;15291:248;;;:::o;15545:419::-;;15749:2;15738:9;15734:18;15726:26;;15798:9;15792:4;15788:20;15784:1;15773:9;15769:17;15762:47;15826:131;15952:4;15826:131;:::i;:::-;15818:139;;15716:248;;;:::o;15970:419::-;;16174:2;16163:9;16159:18;16151:26;;16223:9;16217:4;16213:20;16209:1;16198:9;16194:17;16187:47;16251:131;16377:4;16251:131;:::i;:::-;16243:139;;16141:248;;;:::o;16395:419::-;;16599:2;16588:9;16584:18;16576:26;;16648:9;16642:4;16638:20;16634:1;16623:9;16619:17;16612:47;16676:131;16802:4;16676:131;:::i;:::-;16668:139;;16566:248;;;:::o;16820:419::-;;17024:2;17013:9;17009:18;17001:26;;17073:9;17067:4;17063:20;17059:1;17048:9;17044:17;17037:47;17101:131;17227:4;17101:131;:::i;:::-;17093:139;;16991:248;;;:::o;17245:419::-;;17449:2;17438:9;17434:18;17426:26;;17498:9;17492:4;17488:20;17484:1;17473:9;17469:17;17462:47;17526:131;17652:4;17526:131;:::i;:::-;17518:139;;17416:248;;;:::o;17670:419::-;;17874:2;17863:9;17859:18;17851:26;;17923:9;17917:4;17913:20;17909:1;17898:9;17894:17;17887:47;17951:131;18077:4;17951:131;:::i;:::-;17943:139;;17841:248;;;:::o;18095:419::-;;18299:2;18288:9;18284:18;18276:26;;18348:9;18342:4;18338:20;18334:1;18323:9;18319:17;18312:47;18376:131;18502:4;18376:131;:::i;:::-;18368:139;;18266:248;;;:::o;18520:419::-;;18724:2;18713:9;18709:18;18701:26;;18773:9;18767:4;18763:20;18759:1;18748:9;18744:17;18737:47;18801:131;18927:4;18801:131;:::i;:::-;18793:139;;18691:248;;;:::o;18945:419::-;;19149:2;19138:9;19134:18;19126:26;;19198:9;19192:4;19188:20;19184:1;19173:9;19169:17;19162:47;19226:131;19352:4;19226:131;:::i;:::-;19218:139;;19116:248;;;:::o;19370:419::-;;19574:2;19563:9;19559:18;19551:26;;19623:9;19617:4;19613:20;19609:1;19598:9;19594:17;19587:47;19651:131;19777:4;19651:131;:::i;:::-;19643:139;;19541:248;;;:::o;19795:419::-;;19999:2;19988:9;19984:18;19976:26;;20048:9;20042:4;20038:20;20034:1;20023:9;20019:17;20012:47;20076:131;20202:4;20076:131;:::i;:::-;20068:139;;19966:248;;;:::o;20220:419::-;;20424:2;20413:9;20409:18;20401:26;;20473:9;20467:4;20463:20;20459:1;20448:9;20444:17;20437:47;20501:131;20627:4;20501:131;:::i;:::-;20493:139;;20391:248;;;:::o;20645:222::-;;20776:2;20765:9;20761:18;20753:26;;20789:71;20857:1;20846:9;20842:17;20833:6;20789:71;:::i;:::-;20743:124;;;;:::o;20873:831::-;;21174:3;21163:9;21159:19;21151:27;;21188:71;21256:1;21245:9;21241:17;21232:6;21188:71;:::i;:::-;21269:80;21345:2;21334:9;21330:18;21321:6;21269:80;:::i;:::-;21396:9;21390:4;21386:20;21381:2;21370:9;21366:18;21359:48;21424:108;21527:4;21518:6;21424:108;:::i;:::-;21416:116;;21542:72;21610:2;21599:9;21595:18;21586:6;21542:72;:::i;:::-;21624:73;21692:3;21681:9;21677:19;21668:6;21624:73;:::i;:::-;21141:563;;;;;;;;:::o;21710:214::-;;21837:2;21826:9;21822:18;21814:26;;21850:67;21914:1;21903:9;21899:17;21890:6;21850:67;:::i;:::-;21804:120;;;;:::o;21930:132::-;;22020:3;22012:11;;22050:4;22045:3;22041:14;22033:22;;22002:60;;;:::o;22068:114::-;;22169:5;22163:12;22153:22;;22142:40;;;:::o;22188:99::-;;22274:5;22268:12;22258:22;;22247:40;;;:::o;22293:113::-;;22395:4;22390:3;22386:14;22378:22;;22368:38;;;:::o;22412:184::-;;22545:6;22540:3;22533:19;22585:4;22580:3;22576:14;22561:29;;22523:73;;;;:::o;22602:169::-;;22720:6;22715:3;22708:19;22760:4;22755:3;22751:14;22736:29;;22698:73;;;;:::o;22777:305::-;;22836:20;22854:1;22836:20;:::i;:::-;22831:25;;22870:20;22888:1;22870:20;:::i;:::-;22865:25;;23024:1;22956:66;22952:74;22949:1;22946:81;22943:2;;;23030:18;;:::i;:::-;22943:2;23074:1;23071;23067:9;23060:16;;22821:261;;;;:::o;23088:185::-;;23145:20;23163:1;23145:20;:::i;:::-;23140:25;;23179:20;23197:1;23179:20;:::i;:::-;23174:25;;23218:1;23208:2;;23223:18;;:::i;:::-;23208:2;23265:1;23262;23258:9;23253:14;;23130:143;;;;:::o;23279:348::-;;23342:20;23360:1;23342:20;:::i;:::-;23337:25;;23376:20;23394:1;23376:20;:::i;:::-;23371:25;;23564:1;23496:66;23492:74;23489:1;23486:81;23481:1;23474:9;23467:17;23463:105;23460:2;;;23571:18;;:::i;:::-;23460:2;23619:1;23616;23612:9;23601:20;;23327:300;;;;:::o;23633:191::-;;23693:20;23711:1;23693:20;:::i;:::-;23688:25;;23727:20;23745:1;23727:20;:::i;:::-;23722:25;;23766:1;23763;23760:8;23757:2;;;23771:18;;:::i;:::-;23757:2;23816:1;23813;23809:9;23801:17;;23678:146;;;;:::o;23830:96::-;;23896:24;23914:5;23896:24;:::i;:::-;23885:35;;23875:51;;;:::o;23932:104::-;;24006:24;24024:5;24006:24;:::i;:::-;23995:35;;23985:51;;;:::o;24042:90::-;;24119:5;24112:13;24105:21;24094:32;;24084:48;;;:::o;24138:126::-;;24215:42;24208:5;24204:54;24193:65;;24183:81;;;:::o;24270:77::-;;24336:5;24325:16;;24315:32;;;:::o;24353:86::-;;24428:4;24421:5;24417:16;24406:27;;24396:43;;;:::o;24445:180::-;;24555:64;24613:5;24555:64;:::i;:::-;24542:77;;24532:93;;;:::o;24631:140::-;;24741:24;24759:5;24741:24;:::i;:::-;24728:37;;24718:53;;;:::o;24777:121::-;;24868:24;24886:5;24868:24;:::i;:::-;24855:37;;24845:53;;;:::o;24904:307::-;24972:1;24982:113;24996:6;24993:1;24990:13;24982:113;;;25081:1;25076:3;25072:11;25066:18;25062:1;25057:3;25053:11;25046:39;25018:2;25015:1;25011:10;25006:15;;24982:113;;;25113:6;25110:1;25107:13;25104:2;;;25193:1;25184:6;25179:3;25175:16;25168:27;25104:2;24953:258;;;;:::o;25217:320::-;;25298:1;25292:4;25288:12;25278:22;;25345:1;25339:4;25335:12;25366:18;25356:2;;25422:4;25414:6;25410:17;25400:27;;25356:2;25484;25476:6;25473:14;25453:18;25450:38;25447:2;;;25503:18;;:::i;:::-;25447:2;25268:269;;;;:::o;25543:233::-;;25605:24;25623:5;25605:24;:::i;:::-;25596:33;;25651:66;25644:5;25641:77;25638:2;;;25721:18;;:::i;:::-;25638:2;25768:1;25761:5;25757:13;25750:20;;25586:190;;;:::o;25782:180::-;25830:77;25827:1;25820:88;25927:4;25924:1;25917:15;25951:4;25948:1;25941:15;25968:180;26016:77;26013:1;26006:88;26113:4;26110:1;26103:15;26137:4;26134:1;26127:15;26154:180;26202:77;26199:1;26192:88;26299:4;26296:1;26289:15;26323:4;26320:1;26313:15;26340:102;;26432:2;26428:7;26423:2;26416:5;26412:14;26408:28;26398:38;;26388:54;;;:::o;26448:122::-;26521:24;26539:5;26521:24;:::i;:::-;26514:5;26511:35;26501:2;;26560:1;26557;26550:12;26501:2;26491:79;:::o;26576:138::-;26657:32;26683:5;26657:32;:::i;:::-;26650:5;26647:43;26637:2;;26704:1;26701;26694:12;26637:2;26627:87;:::o;26720:116::-;26790:21;26805:5;26790:21;:::i;:::-;26783:5;26780:32;26770:2;;26826:1;26823;26816:12;26770:2;26760:76;:::o;26842:122::-;26915:24;26933:5;26915:24;:::i;:::-;26908:5;26905:35;26895:2;;26954:1;26951;26944:12;26895:2;26885:79;:::o

Swarm Source

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