ETH Price: $2,928.53 (+0.90%)
Gas: 3 Gwei

Token

VOLTAMA (VOLTAMA)
 

Overview

Max Total Supply

100,000,000,000,000 VOLTAMA

Holders

112

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Saitama: Old SAITAMA Token
Balance
119,856,626,879.259306082 VOLTAMA

Value
$0.00
0xce3f08e664693ca792cace4af1364d5e220827b2
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:
VOLTAMA

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-08
*/

// Dependency file: @openzeppelin/contracts/token/ERC20/IERC20.sol

// SPDX-License-Identifier: MIT

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


// Dependency file: @openzeppelin/contracts/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;
    }
}


// Dependency file: @openzeppelin/contracts/access/Ownable.sol


// pragma solidity ^0.8.0;

// import "@openzeppelin/contracts/utils/Context.sol";

/**
 * @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() {
        _setOwner(_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 {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// Dependency file: @openzeppelin/contracts/utils/math/SafeMath.sol


// 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 no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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

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


// Dependency file: @openzeppelin/contracts/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);
            }
        }
    }
}


// Dependency file: contracts/interfaces/IUniswapV2Router02.sol

// pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}


// Dependency file: contracts/interfaces/IUniswapV2Factory.sol

// pragma solidity >=0.5.0;

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

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}


// Dependency file: contracts/BaseToken.sol

// pragma solidity =0.8.4;

enum TokenType {
    standard,
    antiBotStandard,
    liquidityGenerator,
    antiBotLiquidityGenerator,
    baby,
    antiBotBaby,
    buybackBaby,
    antiBotBuybackBaby
}

abstract contract BaseToken {
    event TokenCreated(
        address indexed owner,
        address indexed token,
        TokenType tokenType,
        uint256 version
    );
}


// Root file: contracts/liquidity-generator/LiquidityGeneratorToken.sol

pragma solidity =0.8.4;

// import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
// import "@openzeppelin/contracts/access/Ownable.sol";
// import "@openzeppelin/contracts/utils/math/SafeMath.sol";
// import "@openzeppelin/contracts/utils/Address.sol";
// import "contracts/interfaces/IUniswapV2Router02.sol";
// import "contracts/interfaces/IUniswapV2Factory.sol";
// import "contracts/BaseToken.sol";

contract VOLTAMA is IERC20, Ownable, BaseToken {
    using SafeMath for uint256;
    using Address for address;

    uint256 public constant VERSION = 1;

    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;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    address private DEAD = 0x000000000000000000000000000000000000dEaD;


    uint256 public _taxFee;
    uint256 private _previousTaxFee = _taxFee;

    uint256 public _liquidityFee;   
    uint256 private _previousLiquidityFee = _liquidityFee;

    uint256 public _marketingFee;
    uint256 private _previousMarketingFee = _marketingFee;

 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public _marketingAddress;





    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled;

    uint256 private numTokensSellToAddToLiquidity;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply_,
        address router_,
        address marketingAddress_,
        uint16 taxFee_,
        uint16 liquidityFee_,
        uint16 marketingFee_,
        address serviceFeeReceiver_,
        uint256 serviceFee_
    ) payable {
        require(taxFee_ >= 0, "Invalid tax fee");
        require(liquidityFee_ >= 0, "Invalid liquidity fee");
        require(marketingFee_ >= 0, "Invalid marketing fee");
        if (marketingAddress_ == address(0)) {
            require(
                marketingFee_ == 0,
                "Cant set both marketing address to address 0 and marketing percent more than 0"
            );
        }
        require(
            taxFee_ + liquidityFee_ + marketingFee_ <= 10**4 / 4,
            "Total fee is over 25%"
        );

        _name = name_;
        _symbol = symbol_;
        _decimals = 9;

        _tTotal = totalSupply_;
        _rTotal = (MAX - (MAX % _tTotal));

        _taxFee = taxFee_;
        _previousTaxFee = _taxFee;

        _liquidityFee = liquidityFee_;
        _previousLiquidityFee = _liquidityFee;

        _marketingAddress = marketingAddress_;
        _marketingFee = marketingFee_;
        _previousMarketingFee = _marketingFee;

        numTokensSellToAddToLiquidity = totalSupply_.mul(5).div(10**4); // 0.05%

        swapAndLiquifyEnabled = true;

        _rOwned[owner()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_);
        // 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;
        _isExcludedFromFee[marketingAddress_]=true;
        

        emit Transfer(address(0), owner(), _tTotal);

        emit TokenCreated(
            owner(),
            address(this),
            TokenType.liquidityGenerator,
            VERSION
        );

        payable(serviceFeeReceiver_).transfer(serviceFee_);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



    function setTaxFeePercent(uint256 taxFeeBps) external onlyOwner {
        _taxFee = taxFeeBps;
        require(
            _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,
            "Total fee is over 25%"
        );
    }

    function setLiquidityFeePercent(uint256 liquidityFeeBps)
        external
        onlyOwner
    {
        _liquidityFee = liquidityFeeBps;
        require(
            _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,
            "Total fee is over 25%"
        );
    }

    function setMarketingFeePercent(uint256 marketingFeeBps)
        external
        onlyOwner
    {
        _marketingFee = marketingFeeBps;
        require(
            _taxFee + _liquidityFee + _marketingFee <= 10**4 / 4,
            "Total fee is over 25%"
        );
    }

    function setMarketingWallet(address newWallet) external onlyOwner() {
        _marketingAddress = newWallet;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

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

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

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

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tmarketingFee = calculatemarketingFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(
            tmarketingFee
        );
        return (tTransferAmount, tFee, tLiquidity, tmarketingFee);
    }

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

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

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

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function _takemarketingFee(uint256 tmarketing) private {
        if (tmarketing > 0) {
            uint256 currentRate = _getRate();
            uint256 rmarketing = tmarketing.mul(currentRate);
            _rOwned[_marketingAddress] = _rOwned[_marketingAddress].add(rmarketing);
            if (_isExcluded[_marketingAddress])
                _tOwned[_marketingAddress] = _tOwned[_marketingAddress].add(
                    tmarketing
                );
            emit Transfer(_msgSender(), _marketingAddress, tmarketing);
        }
    }

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

    function calculateLiquidityFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul(_liquidityFee).div(10**4);
    }

    function calculatemarketingFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        if (_marketingAddress == address(0)) return 0;
        return _amount.mul(_marketingFee).div(10**4);
    }

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

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        _previousMarketingFee = _marketingFee;

        _taxFee = 0;
        _liquidityFee = 0;
        _marketingFee = 0;
    }

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

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

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

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

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

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

        bool overMinTokenBalance = contractTokenBalance >=
            numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }

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

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

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

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

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

        if (!takeFee) restoreAllFee();
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address","name":"router_","type":"address"},{"internalType":"address","name":"marketingAddress_","type":"address"},{"internalType":"uint16","name":"taxFee_","type":"uint16"},{"internalType":"uint16","name":"liquidityFee_","type":"uint16"},{"internalType":"uint16","name":"marketingFee_","type":"uint16"},{"internalType":"address","name":"serviceFeeReceiver_","type":"address"},{"internalType":"uint256","name":"serviceFee_","type":"uint256"}],"stateMutability":"payable","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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"TokenCreated","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":"VERSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"uint256","name":"liquidityFeeBps","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFeeBps","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeBps","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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"}]

60806040819052600c8054610100600160a81b03191662dead00179055600d54600e55600f5460105560115460125562003031388190039081908339810160408190526200004d91620007d7565b6200005833620005be565b62000067565b60405180910390fd5b6001600160a01b038616620001075761ffff831615620001075760405162461bcd60e51b815260206004820152604e60248201527f43616e742073657420626f7468206d61726b6574696e6720616464726573732060448201527f746f2061646472657373203020616e64206d61726b6574696e6720706572636560648201526d06e74206d6f7265207468616e20360941b608482015260a4016200005e565b6109c483620001178688620008f0565b620001239190620008f0565b61ffff161115620001775760405162461bcd60e51b815260206004820152601560248201527f546f74616c20666565206973206f76657220323525000000000000000000000060448201526064016200005e565b89516200018c90600a9060208d019062000631565b508851620001a290600b9060208c019062000631565b50600c805460ff191660091790556007889055620001c388600019620009a9565b620001d19060001962000952565b60085561ffff858116600d819055600e55848116600f819055601055601580546001600160a01b0319166001600160a01b0389161790558316601181905560125562000246612710620002328a60056200060e602090811b620011bf17901c565b6200062360201b620011cb1790919060201c565b6016556015805460ff60a81b1916600160a81b17905560085460016000620002766000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000879050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d957600080fd5b505afa158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003149190620007ba565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035d57600080fd5b505afa15801562000372573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003989190620007ba565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003e157600080fd5b505af1158015620003f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041c9190620007ba565b601480546001600160a01b03199081166001600160a01b039384161790915560138054909116918316919091179055600160046000620004646000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155908b16835291208054909216179055620004cb6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200051391815260200190565b60405180910390a3306200052f6000546001600160a01b031690565b6001600160a01b03167f56358b41df5fa59f5639228f0930994cbdde383c8a8fd74e06c04e1deebe3562600260016040516200056d929190620008c3565b60405180910390a36040516001600160a01b0384169083156108fc029084906000818181858888f19350505050158015620005ac573d6000803e3d6000fd5b50505050505050505050505062000a02565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006200061c828462000930565b9392505050565b60006200061c828462000919565b8280546200063f906200096c565b90600052602060002090601f016020900481019282620006635760008555620006ae565b82601f106200067e57805160ff1916838001178555620006ae565b82800160010185558215620006ae579182015b82811115620006ae57825182559160200191906001019062000691565b50620006bc929150620006c0565b5090565b5b80821115620006bc5760008155600101620006c1565b80516001600160a01b0381168114620006ef57600080fd5b919050565b600082601f83011262000705578081fd5b81516001600160401b0380821115620007225762000722620009ec565b604051601f8301601f19908116603f011681019082821181831017156200074d576200074d620009ec565b8160405283815260209250868385880101111562000769578485fd5b8491505b838210156200078c57858201830151818301840152908201906200076d565b838211156200079d57848385830101525b9695505050505050565b805161ffff81168114620006ef57600080fd5b600060208284031215620007cc578081fd5b6200061c82620006d7565b6000806000806000806000806000806101408b8d031215620007f7578586fd5b8a516001600160401b03808211156200080e578788fd5b6200081c8e838f01620006f4565b9b5060208d015191508082111562000832578788fd5b50620008418d828e01620006f4565b99505060408b015197506200085960608c01620006d7565b96506200086960808c01620006d7565b95506200087960a08c01620007a7565b94506200088960c08c01620007a7565b93506200089960e08c01620007a7565b9250620008aa6101008c01620006d7565b91506101208b015190509295989b9194979a5092959850565b6040810160088410620008e657634e487b7160e01b600052602160045260246000fd5b9281526020015290565b600061ffff808316818516808303821115620009105762000910620009c0565b01949350505050565b6000826200092b576200092b620009d6565b500490565b60008160001904831182151516156200094d576200094d620009c0565b500290565b600082821015620009675762000967620009c0565b500390565b600181811c908216806200098157607f821691505b60208210811415620009a357634e487b7160e01b600052602260045260246000fd5b50919050565b600082620009bb57620009bb620009d6565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61261f8062000a126000396000f3fe60806040526004361061021e5760003560e01c80634a74bb02116101235780638ee88c53116100ab578063caac79341161006f578063caac793414610652578063dd62ed3e14610672578063ea2f0b37146106b8578063f2fde38b146106d8578063ffa1ad74146106f857600080fd5b80638ee88c53146105bd57806395d89b41146105dd578063a457c2d7146105f2578063a9059cbb14610612578063c49b9a801461063257600080fd5b80636bc87c3a116100f25780636bc87c3a1461051b57806370a0823114610531578063715018a61461055157806388f82020146105665780638da5cb5b1461059f57600080fd5b80634a74bb021461048157806352390c02146104a25780635342acb4146104c25780635d098b38146104fb57600080fd5b8063313ce567116101a65780633bd5d173116101755780633bd5d173146103e1578063437823ec146104015780634549b03914610421578063457c194c1461044157806349bd5a5e1461046157600080fd5b8063313ce567146103695780633685d4191461038b57806339509351146103ab5780633b124fe7146103cb57600080fd5b80631694505e116101ed5780631694505e146102c657806318160ddd146102fe57806322976e0d1461031357806323b872dd146103295780632d8381191461034957600080fd5b8063061c82d01461022a57806306fdde031461024c578063095ea7b31461027757806313114a9d146102a757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024a610245366004612345565b61070d565b005b34801561025857600080fd5b506102616107ad565b60405161026e91906123b5565b60405180910390f35b34801561028357600080fd5b50610297610292366004612300565b61083f565b604051901515815260200161026e565b3480156102b357600080fd5b506009545b60405190815260200161026e565b3480156102d257600080fd5b506013546102e6906001600160a01b031681565b6040516001600160a01b03909116815260200161026e565b34801561030a57600080fd5b506007546102b8565b34801561031f57600080fd5b506102b860115481565b34801561033557600080fd5b506102976103443660046122c0565b610856565b34801561035557600080fd5b506102b8610364366004612345565b6108bf565b34801561037557600080fd5b50600c5460405160ff909116815260200161026e565b34801561039757600080fd5b5061024a6103a6366004612250565b610943565b3480156103b757600080fd5b506102976103c6366004612300565b610b32565b3480156103d757600080fd5b506102b8600d5481565b3480156103ed57600080fd5b5061024a6103fc366004612345565b610b68565b34801561040d57600080fd5b5061024a61041c366004612250565b610c54565b34801561042d57600080fd5b506102b861043c36600461235d565b610ca2565b34801561044d57600080fd5b5061024a61045c366004612345565b610d31565b34801561046d57600080fd5b506014546102e6906001600160a01b031681565b34801561048d57600080fd5b5060155461029790600160a81b900460ff1681565b3480156104ae57600080fd5b5061024a6104bd366004612250565b610d76565b3480156104ce57600080fd5b506102976104dd366004612250565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561050757600080fd5b5061024a610516366004612250565b610ec9565b34801561052757600080fd5b506102b8600f5481565b34801561053d57600080fd5b506102b861054c366004612250565b610f15565b34801561055d57600080fd5b5061024a610f74565b34801561057257600080fd5b50610297610581366004612250565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105ab57600080fd5b506000546001600160a01b03166102e6565b3480156105c957600080fd5b5061024a6105d8366004612345565b610faa565b3480156105e957600080fd5b50610261610fef565b3480156105fe57600080fd5b5061029761060d366004612300565b610ffe565b34801561061e57600080fd5b5061029761062d366004612300565b61104d565b34801561063e57600080fd5b5061024a61064d36600461232b565b61105a565b34801561065e57600080fd5b506015546102e6906001600160a01b031681565b34801561067e57600080fd5b506102b861068d366004612288565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106c457600080fd5b5061024a6106d3366004612250565b6110dc565b3480156106e457600080fd5b5061024a6106f3366004612250565b611127565b34801561070457600080fd5b506102b8600181565b6000546001600160a01b031633146107405760405162461bcd60e51b815260040161073790612408565b60405180910390fd5b600d819055601154600f546109c4919061075a90846124ad565b61076491906124ad565b11156107aa5760405162461bcd60e51b8152602060048201526015602482015274546f74616c20666565206973206f7665722032352560581b6044820152606401610737565b50565b6060600a80546107bc9061251b565b80601f01602080910402602001604051908101604052809291908181526020018280546107e89061251b565b80156108355780601f1061080a57610100808354040283529160200191610835565b820191906000526020600020905b81548152906001019060200180831161081857829003601f168201915b5050505050905090565b600061084c3384846111d7565b5060015b92915050565b60006108638484846112fc565b6108b584336108b08560405180606001604052806028815260200161259d602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906114f1565b6111d7565b5060019392505050565b60006008548211156109265760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610737565b600061093061151d565b905061093c83826111cb565b9392505050565b6000546001600160a01b0316331461096d5760405162461bcd60e51b815260040161073790612408565b6001600160a01b03811660009081526005602052604090205460ff166109d55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610737565b60005b600654811015610b2e57816001600160a01b031660068281548110610a0d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610b1c5760068054610a3890600190612504565b81548110610a5657634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b039092169183908110610a9057634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610af657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b2681612556565b9150506109d8565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161084c9185906108b09086611540565b3360008181526005602052604090205460ff1615610bdd5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610737565b6000610be88361154c565b5050506001600160a01b038616600090815260016020526040902054939450610c16939250849150506115a7565b6001600160a01b038316600090815260016020526040902055600854610c3c90826115a7565b600855600954610c4c9084611540565b600955505050565b6000546001600160a01b03163314610c7e5760405162461bcd60e51b815260040161073790612408565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600754831115610cf65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610737565b81610d16576000610d068461154c565b5094965061085095505050505050565b6000610d218461154c565b5093965061085095505050505050565b6000546001600160a01b03163314610d5b5760405162461bcd60e51b815260040161073790612408565b6011819055600f54600d546109c491839161075a91906124ad565b6000546001600160a01b03163314610da05760405162461bcd60e51b815260040161073790612408565b6001600160a01b03811660009081526005602052604090205460ff1615610e095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610737565b6001600160a01b03811660009081526001602052604090205415610e63576001600160a01b038116600090815260016020526040902054610e49906108bf565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610ef35760405162461bcd60e51b815260040161073790612408565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610f5257506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610850906108bf565b6000546001600160a01b03163314610f9e5760405162461bcd60e51b815260040161073790612408565b610fa860006115b3565b565b6000546001600160a01b03163314610fd45760405162461bcd60e51b815260040161073790612408565b600f819055601154600d546109c4919061075a9084906124ad565b6060600b80546107bc9061251b565b600061084c33846108b0856040518060600160405280602581526020016125c5602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906114f1565b600061084c3384846112fc565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161073790612408565b60158054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110d190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111065760405162461bcd60e51b815260040161073790612408565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146111515760405162461bcd60e51b815260040161073790612408565b6001600160a01b0381166111b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610737565b6107aa816115b3565b600061093c82846124e5565b600061093c82846124c5565b6001600160a01b0383166112395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610737565b6001600160a01b03821661129a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610737565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610737565b6001600160a01b0382166113c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610737565b600081116114245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610737565b600061142f30610f15565b601654909150811080159081906114505750601554600160a01b900460ff16155b801561146a57506014546001600160a01b03868116911614155b801561147f5750601554600160a81b900460ff165b1561149257601654915061149282611603565b6001600160a01b03851660009081526004602052604090205460019060ff16806114d457506001600160a01b03851660009081526004602052604090205460ff165b156114dd575060005b6114e9868686846116aa565b505050505050565b600081848411156115155760405162461bcd60e51b815260040161073791906123b5565b505050900390565b600080600061152a61182d565b909250905061153982826111cb565b9250505090565b600061093c82846124ad565b60008060008060008060008060008060006115668c6119e7565b935093509350935060008060006115878f87878761158261151d565b611a3c565b919f509d509b509599509397509195509350505050919395979092949650565b600061093c8284612504565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6015805460ff60a01b1916600160a01b17905560006116238260026111cb565b9050600061163183836115a7565b90504761163d83611a9e565b600061164947836115a7565b90506116558382611c1b565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506015805460ff60a01b19169055505050565b806116b7576116b7611ce3565b6001600160a01b03841660009081526005602052604090205460ff1680156116f857506001600160a01b03831660009081526005602052604090205460ff16155b1561170d57611708848484611d28565b61180b565b6001600160a01b03841660009081526005602052604090205460ff1615801561174e57506001600160a01b03831660009081526005602052604090205460ff165b1561175e57611708848484611e6e565b6001600160a01b03841660009081526005602052604090205460ff161580156117a057506001600160a01b03831660009081526005602052604090205460ff16155b156117b057611708848484611f2d565b6001600160a01b03841660009081526005602052604090205460ff1680156117f057506001600160a01b03831660009081526005602052604090205460ff165b1561180057611708848484611f87565b61180b848484611f2d565b8061182757611827600e54600d55601054600f55601254601155565b50505050565b6008546007546000918291825b6006548110156119b75782600160006006848154811061186a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806118e357508160026000600684815481106118bc57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118f957600854600754945094505050509091565b61194d600160006006848154811061192157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115a7565b92506119a3600260006006848154811061197757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115a7565b9150806119af81612556565b91505061183a565b506007546008546119c7916111cb565b8210156119de576008546007549350935050509091565b90939092509050565b60008060008060006119f886612010565b90506000611a0587612033565b90506000611a1288612050565b90506000611a2c82611a2685818d896115a7565b906115a7565b9993985091965094509092505050565b6000808080611a4b89866111bf565b90506000611a5989876111bf565b90506000611a6789886111bf565b90506000611a7589896111bf565b90506000611a8982611a26858189896115a7565b949d949c50929a509298505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ae157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d919061226c565b81600181518110611b8e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601354611bb491309116846111d7565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bed90859060009086903090429060040161243d565b600060405180830381600087803b158015611c0757600080fd5b505af11580156114e9573d6000803e3d6000fd5b601354611c339030906001600160a01b0316846111d7565b601354600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015611ca357600080fd5b505af1158015611cb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cdc9190612388565b5050505050565b600d54158015611cf35750600f54155b8015611cff5750601154155b15611d0657565b600d8054600e55600f8054601055601180546012556000928390559082905555565b6000806000806000806000611d3c8861154c565b9650965096509650965096509650611d8288600260008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611db190886115a7565b6001600160a01b03808c1660009081526001602052604080822093909355908b1681522054611de09087611540565b6001600160a01b038a16600090815260016020526040902055611e0282612086565b611e0b8161210f565b611e158584612217565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611e5a91815260200190565b60405180910390a350505050505050505050565b6000806000806000806000611e828861154c565b9650965096509650965096509650611ec887600160008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b03808c16600090815260016020908152604080832094909455918c16815260029091522054611efe9085611540565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054611de09087611540565b6000806000806000806000611f418861154c565b9650965096509650965096509650611db187600160008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6000806000806000806000611f9b8861154c565b9650965096509650965096509650611fe188600260008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611ec890886115a7565b600061085061271061202d600d54856111bf90919063ffffffff16565b906111cb565b600061085061271061202d600f54856111bf90919063ffffffff16565b6015546000906001600160a01b031661206b57506000919050565b61085061271061202d601154856111bf90919063ffffffff16565b600061209061151d565b9050600061209e83836111bf565b306000908152600160205260409020549091506120bb9082611540565b3060009081526001602090815260408083209390935560059052205460ff161561210a57306000908152600260205260409020546120f99084611540565b306000908152600260205260409020555b505050565b80156107aa57600061211f61151d565b9050600061212d83836111bf565b6015546001600160a01b03166000908152600160205260409020549091506121559082611540565b601580546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff16156121d0576015546001600160a01b03166000908152600260205260409020546121b49084611540565b6015546001600160a01b03166000908152600260205260409020555b6015546001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516112ef91815260200190565b60085461222490836115a7565b6008556009546122349082611540565b6009555050565b8035801515811461224b57600080fd5b919050565b600060208284031215612261578081fd5b813561093c81612587565b60006020828403121561227d578081fd5b815161093c81612587565b6000806040838503121561229a578081fd5b82356122a581612587565b915060208301356122b581612587565b809150509250929050565b6000806000606084860312156122d4578081fd5b83356122df81612587565b925060208401356122ef81612587565b929592945050506040919091013590565b60008060408385031215612312578182fd5b823561231d81612587565b946020939093013593505050565b60006020828403121561233c578081fd5b61093c8261223b565b600060208284031215612356578081fd5b5035919050565b6000806040838503121561236f578182fd5b8235915061237f6020840161223b565b90509250929050565b60008060006060848603121561239c578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156123e1578581018301518582016040015282016123c5565b818111156123f25783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561248c5784516001600160a01b031683529383019391830191600101612467565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156124c0576124c0612571565b500190565b6000826124e057634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124ff576124ff612571565b500290565b60008282101561251657612516612571565b500390565b600181811c9082168061252f57607f821691505b6020821081141561255057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561256a5761256a612571565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146107aa57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208fe180c5344261c9dcdc7b59c2acae4a0c438a317824ee1e5b280e2f25840ce064736f6c634300080400330000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564f4c54414d41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564f4c54414d4100000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80634a74bb02116101235780638ee88c53116100ab578063caac79341161006f578063caac793414610652578063dd62ed3e14610672578063ea2f0b37146106b8578063f2fde38b146106d8578063ffa1ad74146106f857600080fd5b80638ee88c53146105bd57806395d89b41146105dd578063a457c2d7146105f2578063a9059cbb14610612578063c49b9a801461063257600080fd5b80636bc87c3a116100f25780636bc87c3a1461051b57806370a0823114610531578063715018a61461055157806388f82020146105665780638da5cb5b1461059f57600080fd5b80634a74bb021461048157806352390c02146104a25780635342acb4146104c25780635d098b38146104fb57600080fd5b8063313ce567116101a65780633bd5d173116101755780633bd5d173146103e1578063437823ec146104015780634549b03914610421578063457c194c1461044157806349bd5a5e1461046157600080fd5b8063313ce567146103695780633685d4191461038b57806339509351146103ab5780633b124fe7146103cb57600080fd5b80631694505e116101ed5780631694505e146102c657806318160ddd146102fe57806322976e0d1461031357806323b872dd146103295780632d8381191461034957600080fd5b8063061c82d01461022a57806306fdde031461024c578063095ea7b31461027757806313114a9d146102a757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024a610245366004612345565b61070d565b005b34801561025857600080fd5b506102616107ad565b60405161026e91906123b5565b60405180910390f35b34801561028357600080fd5b50610297610292366004612300565b61083f565b604051901515815260200161026e565b3480156102b357600080fd5b506009545b60405190815260200161026e565b3480156102d257600080fd5b506013546102e6906001600160a01b031681565b6040516001600160a01b03909116815260200161026e565b34801561030a57600080fd5b506007546102b8565b34801561031f57600080fd5b506102b860115481565b34801561033557600080fd5b506102976103443660046122c0565b610856565b34801561035557600080fd5b506102b8610364366004612345565b6108bf565b34801561037557600080fd5b50600c5460405160ff909116815260200161026e565b34801561039757600080fd5b5061024a6103a6366004612250565b610943565b3480156103b757600080fd5b506102976103c6366004612300565b610b32565b3480156103d757600080fd5b506102b8600d5481565b3480156103ed57600080fd5b5061024a6103fc366004612345565b610b68565b34801561040d57600080fd5b5061024a61041c366004612250565b610c54565b34801561042d57600080fd5b506102b861043c36600461235d565b610ca2565b34801561044d57600080fd5b5061024a61045c366004612345565b610d31565b34801561046d57600080fd5b506014546102e6906001600160a01b031681565b34801561048d57600080fd5b5060155461029790600160a81b900460ff1681565b3480156104ae57600080fd5b5061024a6104bd366004612250565b610d76565b3480156104ce57600080fd5b506102976104dd366004612250565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561050757600080fd5b5061024a610516366004612250565b610ec9565b34801561052757600080fd5b506102b8600f5481565b34801561053d57600080fd5b506102b861054c366004612250565b610f15565b34801561055d57600080fd5b5061024a610f74565b34801561057257600080fd5b50610297610581366004612250565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105ab57600080fd5b506000546001600160a01b03166102e6565b3480156105c957600080fd5b5061024a6105d8366004612345565b610faa565b3480156105e957600080fd5b50610261610fef565b3480156105fe57600080fd5b5061029761060d366004612300565b610ffe565b34801561061e57600080fd5b5061029761062d366004612300565b61104d565b34801561063e57600080fd5b5061024a61064d36600461232b565b61105a565b34801561065e57600080fd5b506015546102e6906001600160a01b031681565b34801561067e57600080fd5b506102b861068d366004612288565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106c457600080fd5b5061024a6106d3366004612250565b6110dc565b3480156106e457600080fd5b5061024a6106f3366004612250565b611127565b34801561070457600080fd5b506102b8600181565b6000546001600160a01b031633146107405760405162461bcd60e51b815260040161073790612408565b60405180910390fd5b600d819055601154600f546109c4919061075a90846124ad565b61076491906124ad565b11156107aa5760405162461bcd60e51b8152602060048201526015602482015274546f74616c20666565206973206f7665722032352560581b6044820152606401610737565b50565b6060600a80546107bc9061251b565b80601f01602080910402602001604051908101604052809291908181526020018280546107e89061251b565b80156108355780601f1061080a57610100808354040283529160200191610835565b820191906000526020600020905b81548152906001019060200180831161081857829003601f168201915b5050505050905090565b600061084c3384846111d7565b5060015b92915050565b60006108638484846112fc565b6108b584336108b08560405180606001604052806028815260200161259d602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906114f1565b6111d7565b5060019392505050565b60006008548211156109265760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610737565b600061093061151d565b905061093c83826111cb565b9392505050565b6000546001600160a01b0316331461096d5760405162461bcd60e51b815260040161073790612408565b6001600160a01b03811660009081526005602052604090205460ff166109d55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610737565b60005b600654811015610b2e57816001600160a01b031660068281548110610a0d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610b1c5760068054610a3890600190612504565b81548110610a5657634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b039092169183908110610a9057634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610af657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b2681612556565b9150506109d8565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161084c9185906108b09086611540565b3360008181526005602052604090205460ff1615610bdd5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610737565b6000610be88361154c565b5050506001600160a01b038616600090815260016020526040902054939450610c16939250849150506115a7565b6001600160a01b038316600090815260016020526040902055600854610c3c90826115a7565b600855600954610c4c9084611540565b600955505050565b6000546001600160a01b03163314610c7e5760405162461bcd60e51b815260040161073790612408565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600754831115610cf65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610737565b81610d16576000610d068461154c565b5094965061085095505050505050565b6000610d218461154c565b5093965061085095505050505050565b6000546001600160a01b03163314610d5b5760405162461bcd60e51b815260040161073790612408565b6011819055600f54600d546109c491839161075a91906124ad565b6000546001600160a01b03163314610da05760405162461bcd60e51b815260040161073790612408565b6001600160a01b03811660009081526005602052604090205460ff1615610e095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610737565b6001600160a01b03811660009081526001602052604090205415610e63576001600160a01b038116600090815260016020526040902054610e49906108bf565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610ef35760405162461bcd60e51b815260040161073790612408565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610f5257506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610850906108bf565b6000546001600160a01b03163314610f9e5760405162461bcd60e51b815260040161073790612408565b610fa860006115b3565b565b6000546001600160a01b03163314610fd45760405162461bcd60e51b815260040161073790612408565b600f819055601154600d546109c4919061075a9084906124ad565b6060600b80546107bc9061251b565b600061084c33846108b0856040518060600160405280602581526020016125c5602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906114f1565b600061084c3384846112fc565b6000546001600160a01b031633146110845760405162461bcd60e51b815260040161073790612408565b60158054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110d190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111065760405162461bcd60e51b815260040161073790612408565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146111515760405162461bcd60e51b815260040161073790612408565b6001600160a01b0381166111b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610737565b6107aa816115b3565b600061093c82846124e5565b600061093c82846124c5565b6001600160a01b0383166112395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610737565b6001600160a01b03821661129a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610737565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610737565b6001600160a01b0382166113c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610737565b600081116114245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610737565b600061142f30610f15565b601654909150811080159081906114505750601554600160a01b900460ff16155b801561146a57506014546001600160a01b03868116911614155b801561147f5750601554600160a81b900460ff165b1561149257601654915061149282611603565b6001600160a01b03851660009081526004602052604090205460019060ff16806114d457506001600160a01b03851660009081526004602052604090205460ff165b156114dd575060005b6114e9868686846116aa565b505050505050565b600081848411156115155760405162461bcd60e51b815260040161073791906123b5565b505050900390565b600080600061152a61182d565b909250905061153982826111cb565b9250505090565b600061093c82846124ad565b60008060008060008060008060008060006115668c6119e7565b935093509350935060008060006115878f87878761158261151d565b611a3c565b919f509d509b509599509397509195509350505050919395979092949650565b600061093c8284612504565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6015805460ff60a01b1916600160a01b17905560006116238260026111cb565b9050600061163183836115a7565b90504761163d83611a9e565b600061164947836115a7565b90506116558382611c1b565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506015805460ff60a01b19169055505050565b806116b7576116b7611ce3565b6001600160a01b03841660009081526005602052604090205460ff1680156116f857506001600160a01b03831660009081526005602052604090205460ff16155b1561170d57611708848484611d28565b61180b565b6001600160a01b03841660009081526005602052604090205460ff1615801561174e57506001600160a01b03831660009081526005602052604090205460ff165b1561175e57611708848484611e6e565b6001600160a01b03841660009081526005602052604090205460ff161580156117a057506001600160a01b03831660009081526005602052604090205460ff16155b156117b057611708848484611f2d565b6001600160a01b03841660009081526005602052604090205460ff1680156117f057506001600160a01b03831660009081526005602052604090205460ff165b1561180057611708848484611f87565b61180b848484611f2d565b8061182757611827600e54600d55601054600f55601254601155565b50505050565b6008546007546000918291825b6006548110156119b75782600160006006848154811061186a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806118e357508160026000600684815481106118bc57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118f957600854600754945094505050509091565b61194d600160006006848154811061192157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115a7565b92506119a3600260006006848154811061197757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115a7565b9150806119af81612556565b91505061183a565b506007546008546119c7916111cb565b8210156119de576008546007549350935050509091565b90939092509050565b60008060008060006119f886612010565b90506000611a0587612033565b90506000611a1288612050565b90506000611a2c82611a2685818d896115a7565b906115a7565b9993985091965094509092505050565b6000808080611a4b89866111bf565b90506000611a5989876111bf565b90506000611a6789886111bf565b90506000611a7589896111bf565b90506000611a8982611a26858189896115a7565b949d949c50929a509298505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ae157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d919061226c565b81600181518110611b8e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601354611bb491309116846111d7565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac94790611bed90859060009086903090429060040161243d565b600060405180830381600087803b158015611c0757600080fd5b505af11580156114e9573d6000803e3d6000fd5b601354611c339030906001600160a01b0316846111d7565b601354600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015611ca357600080fd5b505af1158015611cb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cdc9190612388565b5050505050565b600d54158015611cf35750600f54155b8015611cff5750601154155b15611d0657565b600d8054600e55600f8054601055601180546012556000928390559082905555565b6000806000806000806000611d3c8861154c565b9650965096509650965096509650611d8288600260008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611db190886115a7565b6001600160a01b03808c1660009081526001602052604080822093909355908b1681522054611de09087611540565b6001600160a01b038a16600090815260016020526040902055611e0282612086565b611e0b8161210f565b611e158584612217565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611e5a91815260200190565b60405180910390a350505050505050505050565b6000806000806000806000611e828861154c565b9650965096509650965096509650611ec887600160008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b03808c16600090815260016020908152604080832094909455918c16815260029091522054611efe9085611540565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054611de09087611540565b6000806000806000806000611f418861154c565b9650965096509650965096509650611db187600160008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6000806000806000806000611f9b8861154c565b9650965096509650965096509650611fe188600260008d6001600160a01b03166001600160a01b03168152602001908152602001600020546115a790919063ffffffff16565b6001600160a01b038b16600090815260026020908152604080832093909355600190522054611ec890886115a7565b600061085061271061202d600d54856111bf90919063ffffffff16565b906111cb565b600061085061271061202d600f54856111bf90919063ffffffff16565b6015546000906001600160a01b031661206b57506000919050565b61085061271061202d601154856111bf90919063ffffffff16565b600061209061151d565b9050600061209e83836111bf565b306000908152600160205260409020549091506120bb9082611540565b3060009081526001602090815260408083209390935560059052205460ff161561210a57306000908152600260205260409020546120f99084611540565b306000908152600260205260409020555b505050565b80156107aa57600061211f61151d565b9050600061212d83836111bf565b6015546001600160a01b03166000908152600160205260409020549091506121559082611540565b601580546001600160a01b03908116600090815260016020908152604080832095909555925490911681526005909152205460ff16156121d0576015546001600160a01b03166000908152600260205260409020546121b49084611540565b6015546001600160a01b03166000908152600260205260409020555b6015546001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516112ef91815260200190565b60085461222490836115a7565b6008556009546122349082611540565b6009555050565b8035801515811461224b57600080fd5b919050565b600060208284031215612261578081fd5b813561093c81612587565b60006020828403121561227d578081fd5b815161093c81612587565b6000806040838503121561229a578081fd5b82356122a581612587565b915060208301356122b581612587565b809150509250929050565b6000806000606084860312156122d4578081fd5b83356122df81612587565b925060208401356122ef81612587565b929592945050506040919091013590565b60008060408385031215612312578182fd5b823561231d81612587565b946020939093013593505050565b60006020828403121561233c578081fd5b61093c8261223b565b600060208284031215612356578081fd5b5035919050565b6000806040838503121561236f578182fd5b8235915061237f6020840161223b565b90509250929050565b60008060006060848603121561239c578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156123e1578581018301518582016040015282016123c5565b818111156123f25783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561248c5784516001600160a01b031683529383019391830191600101612467565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156124c0576124c0612571565b500190565b6000826124e057634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124ff576124ff612571565b500290565b60008282101561251657612516612571565b500390565b600181811c9082168061252f57607f821691505b6020821081141561255057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561256a5761256a612571565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146107aa57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208fe180c5344261c9dcdc7b59c2acae4a0c438a317824ee1e5b280e2f25840ce064736f6c63430008040033

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

0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564f4c54414d41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564f4c54414d4100000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): VOLTAMA
Arg [1] : symbol_ (string): VOLTAMA
Arg [2] : totalSupply_ (uint256): 100000000000000000000000
Arg [3] : router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [4] : marketingAddress_ (address): 0x4cCC8085f89DBFF920B78171C717d6dCD0e9aBDA
Arg [5] : taxFee_ (uint16): 2
Arg [6] : liquidityFee_ (uint16): 2
Arg [7] : marketingFee_ (uint16): 8
Arg [8] : serviceFeeReceiver_ (address): 0x4cCC8085f89DBFF920B78171C717d6dCD0e9aBDA
Arg [9] : serviceFee_ (uint256): 0

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 00000000000000000000000000000000000000000000152d02c7e14af6800000
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [4] : 0000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [8] : 0000000000000000000000004ccc8085f89dbff920b78171c717d6dcd0e9abda
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [11] : 564f4c54414d4100000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [13] : 564f4c54414d4100000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

28737:23514:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38659:236;;;;;;;;;;-1:-1:-1;38659:236:0;;;;;:::i;:::-;;:::i;:::-;;32812:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33797:193;;;;;;;;;;-1:-1:-1;33797:193:0;;;;;:::i;:::-;;:::i;:::-;;;3870:14:1;;3863:22;3845:41;;3833:2;3818:18;33797:193:0;3800:92:1;35296:87:0;;;;;;;;;;-1:-1:-1;35365:10:0;;35296:87;;;9572:25:1;;;9560:2;9545:18;35296:87:0;9527:76:1;29812:41:0;;;;;;;;;;-1:-1:-1;29812:41:0;;;;-1:-1:-1;;;;;29812:41:0;;;;;;-1:-1:-1;;;;;3049:32:1;;;3031:51;;3019:2;3004:18;29812:41:0;2986:102:1;33089:95:0;;;;;;;;;;-1:-1:-1;33169:7:0;;33089:95;;29710:28;;;;;;;;;;;;;;;;33998:446;;;;;;;;;;-1:-1:-1;33998:446:0;;;;;:::i;:::-;;:::i;36311:322::-;;;;;;;;;;-1:-1:-1;36311:322:0;;;;;:::i;:::-;;:::i;32998:83::-;;;;;;;;;;-1:-1:-1;33064:9:0;;32998:83;;33064:9;;;;11062:36:1;;11050:2;11035:18;32998:83:0;11017:87:1;37095:477:0;;;;;;;;;;-1:-1:-1;37095:477:0;;;;;:::i;:::-;;:::i;34452:300::-;;;;;;;;;;-1:-1:-1;34452:300:0;;;;;:::i;:::-;;:::i;29531:22::-;;;;;;;;;;;;;;;;35391:421;;;;;;;;;;-1:-1:-1;35391:421:0;;;;;:::i;:::-;;:::i;38418:111::-;;;;;;;;;;-1:-1:-1;38418:111:0;;;;;:::i;:::-;;:::i;35820:483::-;;;;;;;;;;-1:-1:-1;35820:483:0;;;;;:::i;:::-;;:::i;39194:283::-;;;;;;;;;;-1:-1:-1;39194:283:0;;;;;:::i;:::-;;:::i;29860:28::-;;;;;;;;;;-1:-1:-1;29860:28:0;;;;-1:-1:-1;;;;;29860:28:0;;;29972:33;;;;;;;;;;-1:-1:-1;29972:33:0;;;;-1:-1:-1;;;29972:33:0;;;;;;36641:446;;;;;;;;;;-1:-1:-1;36641:446:0;;;;;:::i;:::-;;:::i;44935:124::-;;;;;;;;;;-1:-1:-1;44935:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;45024:27:0;45000:4;45024:27;;;:18;:27;;;;;;;;;44935:124;39485:116;;;;;;;;;;-1:-1:-1;39485:116:0;;;;;:::i;:::-;;:::i;29610:28::-;;;;;;;;;;;;;;;;33192:198;;;;;;;;;;-1:-1:-1;33192:198:0;;;;;:::i;:::-;;:::i;5454:94::-;;;;;;;;;;;;;:::i;35168:120::-;;;;;;;;;;-1:-1:-1;35168:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;35260:20:0;35236:4;35260:20;;;:11;:20;;;;;;;;;35168:120;4803:87;;;;;;;;;;-1:-1:-1;4849:7:0;4876:6;-1:-1:-1;;;;;4876:6:0;4803:87;;38903:283;;;;;;;;;;-1:-1:-1;38903:283:0;;;;;:::i;:::-;;:::i;32903:87::-;;;;;;;;;;;;;:::i;34760:400::-;;;;;;;;;;-1:-1:-1;34760:400:0;;;;;:::i;:::-;;:::i;33398:199::-;;;;;;;;;;-1:-1:-1;33398:199:0;;;;;:::i;:::-;;:::i;39609:171::-;;;;;;;;;;-1:-1:-1;39609:171:0;;;;;:::i;:::-;;:::i;29895:32::-;;;;;;;;;;-1:-1:-1;29895:32:0;;;;-1:-1:-1;;;;;29895:32:0;;;33605:184;;;;;;;;;;-1:-1:-1;33605:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;33754:18:0;;;33722:7;33754:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;33605:184;38537:110;;;;;;;;;;-1:-1:-1;38537:110:0;;;;;:::i;:::-;;:::i;5703:192::-;;;;;;;;;;-1:-1:-1;5703:192:0;;;;;:::i;:::-;;:::i;28858:35::-;;;;;;;;;;;;28892:1;28858:35;;38659:236;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;;;;;;;;;38734:7:::1;:19:::0;;;38812:13:::1;::::0;38796::::1;::::0;38829:9:::1;::::0;38812:13;38786:23:::1;::::0;38744:9;38786:23:::1;:::i;:::-;:39;;;;:::i;:::-;:52;;38764:123;;;::::0;-1:-1:-1;;;38764:123:0;;6923:2:1;38764:123:0::1;::::0;::::1;6905:21:1::0;6962:2;6942:18;;;6935:30;-1:-1:-1;;;6981:18:1;;;6974:51;7042:18;;38764:123:0::1;6895:171:1::0;38764:123:0::1;38659:236:::0;:::o;32812:83::-;32849:13;32882:5;32875:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32812:83;:::o;33797:193::-;33899:4;33921:39;3601:10;33944:7;33953:6;33921:8;:39::i;:::-;-1:-1:-1;33978:4:0;33797:193;;;;;:::o;33998:446::-;34130:4;34147:36;34157:6;34165:9;34176:6;34147:9;:36::i;:::-;34194:220;34217:6;3601:10;34265:138;34321:6;34265:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34265:19:0;;;;;;:11;:19;;;;;;;;3601:10;34265:33;;;;;;;;;;:37;:138::i;:::-;34194:8;:220::i;:::-;-1:-1:-1;34432:4:0;33998:446;;;;;:::o;36311:322::-;36405:7;36463;;36452;:18;;36430:110;;;;-1:-1:-1;;;36430:110:0;;5346:2:1;36430:110:0;;;5328:21:1;5385:2;5365:18;;;5358:30;5424:34;5404:18;;;5397:62;-1:-1:-1;;;5475:18:1;;;5468:40;5525:19;;36430:110:0;5318:232:1;36430:110:0;36551:19;36573:10;:8;:10::i;:::-;36551:32;-1:-1:-1;36601:24:0;:7;36551:32;36601:11;:24::i;:::-;36594:31;36311:322;-1:-1:-1;;;36311:322:0:o;37095:477::-;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37175:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;37167:60;;;::::0;-1:-1:-1;;;37167:60:0;;6567:2:1;37167:60:0::1;::::0;::::1;6549:21:1::0;6606:2;6586:18;;;6579:30;6645:29;6625:18;;;6618:57;6692:18;;37167:60:0::1;6539:177:1::0;37167:60:0::1;37243:9;37238:327;37262:9;:16:::0;37258:20;::::1;37238:327;;;37320:7;-1:-1:-1::0;;;;;37304:23:0::1;:9;37314:1;37304:12;;;;;;-1:-1:-1::0;;;37304:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;37304:12:0::1;:23;37300:254;;;37363:9;37373:16:::0;;:20:::1;::::0;37392:1:::1;::::0;37373:20:::1;:::i;:::-;37363:31;;;;;;-1:-1:-1::0;;;37363:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;37348:9:::1;:12:::0;;-1:-1:-1;;;;;37363:31:0;;::::1;::::0;37358:1;;37348:12;::::1;;;-1:-1:-1::0;;;37348:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;37348:46:0::1;-1:-1:-1::0;;;;;37348:46:0;;::::1;;::::0;;37413:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;37452:11:::1;:20:::0;;;;:28;;-1:-1:-1;;37452:28:0::1;::::0;;37499:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;37499:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;37499:15:0;;;;;-1:-1:-1;;;;;;37499:15:0::1;::::0;;;;;37238:327:::1;37095:477:::0;:::o;37300:254::-:1;37280:3:::0;::::1;::::0;::::1;:::i;:::-;;;;37238:327;;;;37095:477:::0;:::o;34452:300::-;3601:10;34567:4;34661:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;34661:34:0;;;;;;;;;;34567:4;;34589:133;;34639:7;;34661:50;;34700:10;34661:38;:50::i;35391:421::-;3601:10;35443:14;35506:19;;;:11;:19;;;;;;;;35505:20;35483:114;;;;-1:-1:-1;;;35483:114:0;;9215:2:1;35483:114:0;;;9197:21:1;9254:2;9234:18;;;9227:30;9293:34;9273:18;;;9266:62;-1:-1:-1;;;9344:18:1;;;9337:42;9396:19;;35483:114:0;9187:234:1;35483:114:0;35609:15;35640:19;35651:7;35640:10;:19::i;:::-;-1:-1:-1;;;;;;;;35688:15:0;;;;;;:7;:15;;;;;;35608:51;;-1:-1:-1;35688:28:0;;:15;-1:-1:-1;35608:51:0;;-1:-1:-1;;35688:19:0;:28::i;:::-;-1:-1:-1;;;;;35670:15:0;;;;;;:7;:15;;;;;:46;35737:7;;:20;;35749:7;35737:11;:20::i;:::-;35727:7;:30;35781:10;;:23;;35796:7;35781:14;:23::i;:::-;35768:10;:36;-1:-1:-1;;;35391:421:0:o;38418:111::-;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38487:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;38487:34:0::1;38517:4;38487:34;::::0;;38418:111::o;35820:483::-;35938:7;35982;;35971;:18;;35963:62;;;;-1:-1:-1;;;35963:62:0;;7273:2:1;35963:62:0;;;7255:21:1;7312:2;7292:18;;;7285:30;7351:33;7331:18;;;7324:61;7402:18;;35963:62:0;7245:181:1;35963:62:0;36041:17;36036:260;;36076:15;36107:19;36118:7;36107:10;:19::i;:::-;-1:-1:-1;36075:51:0;;-1:-1:-1;36141:14:0;;-1:-1:-1;;;;;;36141:14:0;36036:260;36191:23;36228:19;36239:7;36228:10;:19::i;:::-;-1:-1:-1;36188:59:0;;-1:-1:-1;36262:22:0;;-1:-1:-1;;;;;;36262:22:0;39194:283;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;39304:13:::1;:31:::0;;;39378:13:::1;::::0;39368:7:::1;::::0;39411:9:::1;::::0;39320:15;;39368:23:::1;::::0;39378:13;39368:23:::1;:::i;36641:446::-:0;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36836:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36835:21;36827:61;;;::::0;-1:-1:-1;;;36827:61:0;;6567:2:1;36827:61:0::1;::::0;::::1;6549:21:1::0;6606:2;6586:18;;;6579:30;6645:29;6625:18;;;6618:57;6692:18;;36827:61:0::1;6539:177:1::0;36827:61:0::1;-1:-1:-1::0;;;;;36903:16:0;::::1;36922:1;36903:16:::0;;;:7:::1;:16;::::0;;;;;:20;36899:109:::1;;-1:-1:-1::0;;;;;36979:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;36959:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;36940:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36899:109:::1;-1:-1:-1::0;;;;;37018:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;37018:27:0::1;37041:4;37018:27:::0;;::::1;::::0;;;37056:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;37056:23:0::1;::::0;;::::1;::::0;;36641:446::o;39485:116::-;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;39564:17:::1;:29:::0;;-1:-1:-1;;;;;;39564:29:0::1;-1:-1:-1::0;;;;;39564:29:0;;;::::1;::::0;;;::::1;::::0;;39485:116::o;33192:198::-;-1:-1:-1;;;;;33282:20:0;;33258:7;33282:20;;;:11;:20;;;;;;;;33278:49;;;-1:-1:-1;;;;;;33311:16:0;;;;;:7;:16;;;;;;;33192:198::o;33278:49::-;-1:-1:-1;;;;;33365:16:0;;;;;;:7;:16;;;;;;33345:37;;:19;:37::i;5454:94::-;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;5519:21:::1;5537:1;5519:9;:21::i;:::-;5454:94::o:0;38903:283::-;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;39013:13:::1;:31:::0;;;39103:13:::1;::::0;39077:7:::1;::::0;39120:9:::1;::::0;39103:13;39077:23:::1;::::0;39029:15;;39077:23:::1;:::i;32903:87::-:0;32942:13;32975:7;32968:14;;;;;:::i;34760:400::-;34880:4;34902:228;3601:10;34952:7;34974:145;35031:15;34974:145;;;;;;;;;;;;;;;;;3601:10;34974:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;34974:34:0;;;;;;;;;;;;:38;:145::i;33398:199::-;33503:4;33525:42;3601:10;33549:9;33560:6;33525:9;:42::i;39609:171::-;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;39686:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;39686:32:0::1;-1:-1:-1::0;;;;39686:32:0;;::::1;;::::0;;39734:38:::1;::::0;::::1;::::0;::::1;::::0;39710:8;3870:14:1;3863:22;3845:41;;3833:2;3818:18;;3800:92;39734:38:0::1;;;;;;;;39609:171:::0;:::o;38537:110::-;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38604:27:0::1;38634:5;38604:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;38604:35:0::1;::::0;;38537:110::o;5703:192::-;4849:7;4876:6;-1:-1:-1;;;;;4876:6:0;3601:10;5023:23;5015:68;;;;-1:-1:-1;;;5015:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5792:22:0;::::1;5784:73;;;::::0;-1:-1:-1;;;5784:73:0;;5757:2:1;5784:73:0::1;::::0;::::1;5739:21:1::0;5796:2;5776:18;;;5769:30;5835:34;5815:18;;;5808:62;-1:-1:-1;;;5886:18:1;;;5879:36;5932:19;;5784:73:0::1;5729:228:1::0;5784:73:0::1;5868:19;5878:8;5868:9;:19::i;9627:98::-:0;9685:7;9712:5;9716:1;9712;:5;:::i;10026:98::-;10084:7;10111:5;10115:1;10111;:5;:::i;45067:371::-;-1:-1:-1;;;;;45194:19:0;;45186:68;;;;-1:-1:-1;;;45186:68:0;;8810:2:1;45186:68:0;;;8792:21:1;8849:2;8829:18;;;8822:30;8888:34;8868:18;;;8861:62;-1:-1:-1;;;8939:18:1;;;8932:34;8983:19;;45186:68:0;8782:226:1;45186:68:0;-1:-1:-1;;;;;45273:21:0;;45265:68;;;;-1:-1:-1;;;45265:68:0;;6164:2:1;45265:68:0;;;6146:21:1;6203:2;6183:18;;;6176:30;6242:34;6222:18;;;6215:62;-1:-1:-1;;;6293:18:1;;;6286:32;6335:19;;45265:68:0;6136:224:1;45265:68:0;-1:-1:-1;;;;;45346:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;45398:32;;9572:25:1;;;45398:32:0;;9545:18:1;45398:32:0;;;;;;;;45067:371;;;:::o;45446:1531::-;-1:-1:-1;;;;;45568:18:0;;45560:68;;;;-1:-1:-1;;;45560:68:0;;8404:2:1;45560:68:0;;;8386:21:1;8443:2;8423:18;;;8416:30;8482:34;8462:18;;;8455:62;-1:-1:-1;;;8533:18:1;;;8526:35;8578:19;;45560:68:0;8376:227:1;45560:68:0;-1:-1:-1;;;;;45647:16:0;;45639:64;;;;-1:-1:-1;;;45639:64:0;;4942:2:1;45639:64:0;;;4924:21:1;4981:2;4961:18;;;4954:30;5020:34;5000:18;;;4993:62;-1:-1:-1;;;5071:18:1;;;5064:33;5114:19;;45639:64:0;4914:225:1;45639:64:0;45731:1;45722:6;:10;45714:64;;;;-1:-1:-1;;;45714:64:0;;7994:2:1;45714:64:0;;;7976:21:1;8033:2;8013:18;;;8006:30;8072:34;8052:18;;;8045:62;-1:-1:-1;;;8123:18:1;;;8116:39;8172:19;;45714:64:0;7966:231:1;45714:64:0;46073:28;46104:24;46122:4;46104:9;:24::i;:::-;46205:29;;46073:55;;-1:-1:-1;46168:66:0;;;;;;;46263:53;;-1:-1:-1;46300:16:0;;-1:-1:-1;;;46300:16:0;;;;46299:17;46263:53;:91;;;;-1:-1:-1;46341:13:0;;-1:-1:-1;;;;;46333:21:0;;;46341:13;;46333:21;;46263:91;:129;;;;-1:-1:-1;46371:21:0;;-1:-1:-1;;;46371:21:0;;;;46263:129;46245:318;;;46442:29;;46419:52;;46515:36;46530:20;46515:14;:36::i;:::-;-1:-1:-1;;;;;46756:24:0;;46636:12;46756:24;;;:18;:24;;;;;;46651:4;;46756:24;;;:50;;-1:-1:-1;;;;;;46784:22:0;;;;;;:18;:22;;;;;;;;46756:50;46752:98;;;-1:-1:-1;46833:5:0;46752:98;46928:41;46943:4;46949:2;46953:6;46961:7;46928:14;:41::i;:::-;45446:1531;;;;;;:::o;11168:240::-;11288:7;11349:12;11341:6;;;;11333:29;;;;-1:-1:-1;;;11333:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11384:5:0;;;11168:240::o;42146:164::-;42188:7;42209:15;42226;42245:19;:17;:19::i;:::-;42208:56;;-1:-1:-1;42208:56:0;-1:-1:-1;42282:20:0;42208:56;;42282:11;:20::i;:::-;42275:27;;;;42146:164;:::o;8889:98::-;8947:7;8974:5;8978:1;8974;:5;:::i;40036:847::-;40136:7;40158;40180;40202;40224;40246;40268;40318:23;40356:12;40383:18;40416;40448:20;40460:7;40448:11;:20::i;:::-;40303:165;;;;;;;;40480:15;40497:23;40522:12;40538:138;40564:7;40586:4;40605:10;40630;40655;:8;:10::i;:::-;40538:11;:138::i;:::-;40479:197;;-1:-1:-1;40479:197:0;-1:-1:-1;40479:197:0;-1:-1:-1;40780:15:0;;-1:-1:-1;40810:4:0;;-1:-1:-1;40829:10:0;;-1:-1:-1;40854:10:0;-1:-1:-1;;;;40036:847:0;;;;;;;;;:::o;9270:98::-;9328:7;9355:5;9359:1;9355;:5;:::i;5903:173::-;5959:16;5978:6;;-1:-1:-1;;;;;5995:17:0;;;-1:-1:-1;;;;;;5995:17:0;;;;;;6028:40;;5978:6;;;;;;;6028:40;;5959:16;6028:40;5903:173;;:::o;46985:977::-;30360:16;:23;;-1:-1:-1;;;;30360:23:0;-1:-1:-1;;;30360:23:0;;;;47136:27:::1;:20:::0;47161:1:::1;47136:24;:27::i;:::-;47121:42:::0;-1:-1:-1;47174:17:0::1;47194:30;:20:::0;47121:42;47194:24:::1;:30::i;:::-;47174:50:::0;-1:-1:-1;47527:21:0::1;47593:22;47610:4:::0;47593:16:::1;:22::i;:::-;47746:18;47767:41;:21;47793:14:::0;47767:25:::1;:41::i;:::-;47746:62;;47858:35;47871:9;47882:10;47858:12;:35::i;:::-;47911:43;::::0;;10798:25:1;;;10854:2;10839:18;;10832:34;;;10882:18;;;10875:34;;;47911:43:0::1;::::0;10786:2:1;10771:18;47911:43:0::1;;;;;;;-1:-1:-1::0;;30406:16:0;:24;;-1:-1:-1;;;;30406:24:0;;;-1:-1:-1;;;46985:977:0:o;49158:838::-;49314:7;49309:28;;49323:14;:12;:14::i;:::-;-1:-1:-1;;;;;49354:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;49378:22:0;;;;;;:11;:22;;;;;;;;49377:23;49354:46;49350:597;;;49417:48;49439:6;49447:9;49458:6;49417:21;:48::i;:::-;49350:597;;;-1:-1:-1;;;;;49488:19:0;;;;;;:11;:19;;;;;;;;49487:20;:46;;;;-1:-1:-1;;;;;;49511:22:0;;;;;;:11;:22;;;;;;;;49487:46;49483:464;;;49550:46;49570:6;49578:9;49589:6;49550:19;:46::i;49483:464::-;-1:-1:-1;;;;;49619:19:0;;;;;;:11;:19;;;;;;;;49618:20;:47;;;;-1:-1:-1;;;;;;49643:22:0;;;;;;:11;:22;;;;;;;;49642:23;49618:47;49614:333;;;49682:44;49700:6;49708:9;49719:6;49682:17;:44::i;49614:333::-;-1:-1:-1;;;;;49748:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;49771:22:0;;;;;;:11;:22;;;;;;;;49748:45;49744:203;;;49810:48;49832:6;49840:9;49851:6;49810:21;:48::i;49744:203::-;49891:44;49909:6;49917:9;49928:6;49891:17;:44::i;:::-;49964:7;49959:29;;49973:15;44808;;44798:7;:25;44850:21;;44834:13;:37;44898:21;;44882:13;:37;44754:173;49973:15;49158:838;;;;:::o;42318:605::-;42416:7;;42452;;42369;;;;;42470:338;42494:9;:16;42490:20;;42470:338;;;42578:7;42554;:21;42562:9;42572:1;42562:12;;;;;;-1:-1:-1;;;42562:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42562:12:0;42554:21;;;;;;;;;;;;;:31;;:83;;;42630:7;42606;:21;42614:9;42624:1;42614:12;;;;;;-1:-1:-1;;;42614:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42614:12:0;42606:21;;;;;;;;;;;;;:31;42554:83;42532:146;;;42661:7;;42670;;42653:25;;;;;;;42318:605;;:::o;42532:146::-;42703:34;42715:7;:21;42723:9;42733:1;42723:12;;;;;;-1:-1:-1;;;42723:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42723:12:0;42715:21;;;;;;;;;;;;;42703:7;;:11;:34::i;:::-;42693:44;;42762:34;42774:7;:21;42782:9;42792:1;42782:12;;;;;;-1:-1:-1;;;42782:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42782:12:0;42774:21;;;;;;;;;;;;;42762:7;;:11;:34::i;:::-;42752:44;-1:-1:-1;42512:3:0;;;;:::i;:::-;;;;42470:338;;;-1:-1:-1;42844:7:0;;42832;;:20;;:11;:20::i;:::-;42822:7;:30;42818:61;;;42862:7;;42871;;42854:25;;;;;;42318:605;;:::o;42818:61::-;42898:7;;42907;;-1:-1:-1;42318:605:0;-1:-1:-1;42318:605:0:o;40891:557::-;40992:7;41014;41036;41058;41093:12;41108:24;41124:7;41108:15;:24::i;:::-;41093:39;;41143:18;41164:30;41186:7;41164:21;:30::i;:::-;41143:51;;41205:21;41229:30;41251:7;41229:21;:30::i;:::-;41205:54;-1:-1:-1;41270:23:0;41296:76;41205:54;41296:33;41318:10;41296:33;:7;41308:4;41296:11;:17::i;:::-;:21;;:33::i;:76::-;41270:102;41408:4;;-1:-1:-1;41414:10:0;;-1:-1:-1;41414:10:0;-1:-1:-1;40891:557:0;;-1:-1:-1;;;40891:557:0:o;41456:682::-;41684:7;;;;41781:24;:7;41793:11;41781;:24::i;:::-;41763:42;-1:-1:-1;41816:12:0;41831:21;:4;41840:11;41831:8;:21::i;:::-;41816:36;-1:-1:-1;41863:18:0;41884:27;:10;41899:11;41884:14;:27::i;:::-;41863:48;-1:-1:-1;41922:18:0;41943:27;:10;41958:11;41943:14;:27::i;:::-;41922:48;-1:-1:-1;41981:23:0;42007:73;41922:48;42007:33;42029:10;42007:33;:7;42019:4;42007:11;:17::i;:73::-;42099:7;;;;-1:-1:-1;42125:4:0;;-1:-1:-1;41456:682:0;;-1:-1:-1;;;;;;;;;41456:682:0:o;47970:589::-;48120:16;;;48134:1;48120:16;;;;;;;;48096:21;;48120:16;;;;;;;;;;-1:-1:-1;48120:16:0;48096:40;;48165:4;48147;48152:1;48147:7;;;;;;-1:-1:-1;;;48147:7:0;;;;;;;;;-1:-1:-1;;;;;48147:23:0;;;:7;;;;;;;;;;:23;;;;48191:15;;:22;;;-1:-1:-1;;;48191:22:0;;;;:15;;;;;:20;;:22;;;;;48147:7;;48191:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48181:4;48186:1;48181:7;;;;;;-1:-1:-1;;;48181:7:0;;;;;;;;;-1:-1:-1;;;;;48181:32:0;;;:7;;;;;;;;;:32;48258:15;;48226:62;;48243:4;;48258:15;48276:11;48226:8;:62::i;:::-;48327:15;;:224;;-1:-1:-1;;;48327:224:0;;-1:-1:-1;;;;;48327:15:0;;;;:66;;:224;;48408:11;;48327:15;;48478:4;;48505;;48525:15;;48327:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48567:510;48747:15;;48715:62;;48732:4;;-1:-1:-1;;;;;48747:15:0;48765:11;48715:8;:62::i;:::-;48820:15;;49024:4;;48820:249;;-1:-1:-1;;;48820:249:0;;48892:4;48820:249;;;3434:34:1;3484:18;;;3477:34;;;-1:-1:-1;3527:18:1;;;3520:34;;;3570:18;;;3563:34;-1:-1:-1;;;;;48820:15:0;49024:4;;;;;3613:19:1;;;3606:44;49043:15:0;3666:19:1;;;3659:35;48820:15:0;;;:31;;48859:9;;3368:19:1;;48820:249:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;48567:510;;:::o;44413:333::-;44460:7;;:12;:34;;;;-1:-1:-1;44476:13:0;;:18;44460:34;:56;;;;-1:-1:-1;44498:13:0;;:18;44460:56;44456:69;;;44413:333::o;44456:69::-;44555:7;;;44537:15;:25;44597:13;;;44573:21;:37;44645:13;;;44621:21;:37;-1:-1:-1;44671:11:0;;;;44693:17;;;;44721;44413:333::o;51489:759::-;51640:15;51670:23;51708:12;51735:23;51773:12;51800:18;51833;51865:19;51876:7;51865:10;:19::i;:::-;51625:259;;;;;;;;;;;;;;51913:28;51933:7;51913;:15;51921:6;-1:-1:-1;;;;;51913:15:0;-1:-1:-1;;;;;51913:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;51895:15:0;;;;;;:7;:15;;;;;;;;:46;;;;51970:7;:15;;;;:28;;51990:7;51970:19;:28::i;:::-;-1:-1:-1;;;;;51952:15:0;;;;;;;:7;:15;;;;;;:46;;;;52030:18;;;;;;;:39;;52053:15;52030:22;:39::i;:::-;-1:-1:-1;;;;;52009:18:0;;;;;;:7;:18;;;;;:60;52080:26;52095:10;52080:14;:26::i;:::-;52117:29;52135:10;52117:17;:29::i;:::-;52157:23;52169:4;52175;52157:11;:23::i;:::-;52213:9;-1:-1:-1;;;;;52196:44:0;52205:6;-1:-1:-1;;;;;52196:44:0;;52224:15;52196:44;;;;9572:25:1;;9560:2;9545:18;;9527:76;52196:44:0;;;;;;;;51489:759;;;;;;;;;;:::o;50710:771::-;50859:15;50889:23;50927:12;50954:23;50992:12;51019:18;51052;51084:19;51095:7;51084:10;:19::i;:::-;50844:259;;;;;;;;;;;;;;51132:28;51152:7;51132;:15;51140:6;-1:-1:-1;;;;;51132:15:0;-1:-1:-1;;;;;51132:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;51114:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;51192:18;;;;;:7;:18;;;;;:39;;51215:15;51192:22;:39::i;:::-;-1:-1:-1;;;;;51171:18:0;;;;;;:7;:18;;;;;;;;:60;;;;51263:7;:18;;;;:39;;51286:15;51263:22;:39::i;50004:698::-;50151:15;50181:23;50219:12;50246:23;50284:12;50311:18;50344;50376:19;50387:7;50376:10;:19::i;:::-;50136:259;;;;;;;;;;;;;;50424:28;50444:7;50424;:15;50432:6;-1:-1:-1;;;;;50424:15:0;-1:-1:-1;;;;;50424:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;37580:830::-;37731:15;37761:23;37799:12;37826:23;37864:12;37891:18;37924;37956:19;37967:7;37956:10;:19::i;:::-;37716:259;;;;;;;;;;;;;;38004:28;38024:7;38004;:15;38012:6;-1:-1:-1;;;;;38004:15:0;-1:-1:-1;;;;;38004:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;37986:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38061:7;:15;;;;:28;;38081:7;38061:19;:28::i;43855:130::-;43919:7;43946:31;43971:5;43946:20;43958:7;;43946;:11;;:20;;;;:::i;:::-;:24;;:31::i;43993:174::-;44090:7;44122:37;44153:5;44122:26;44134:13;;44122:7;:11;;:26;;;;:::i;44175:230::-;44301:17;;44272:7;;-1:-1:-1;;;;;44301:17:0;44297:45;;-1:-1:-1;44341:1:0;;44175:230;-1:-1:-1;44175:230:0:o;44297:45::-;44360:37;44391:5;44360:26;44372:13;;44360:7;:11;;:26;;;;:::i;42931:355::-;42994:19;43016:10;:8;:10::i;:::-;42994:32;-1:-1:-1;43037:18:0;43058:27;:10;42994:32;43058:14;:27::i;:::-;43137:4;43121:22;;;;:7;:22;;;;;;43037:48;;-1:-1:-1;43121:38:0;;43037:48;43121:26;:38::i;:::-;43112:4;43096:22;;;;:7;:22;;;;;;;;:63;;;;43174:11;:26;;;;;;43170:108;;;43256:4;43240:22;;;;:7;:22;;;;;;:38;;43267:10;43240:26;:38::i;:::-;43231:4;43215:22;;;;:7;:22;;;;;:63;43170:108;42931:355;;;:::o;43294:553::-;43364:14;;43360:480;;43395:19;43417:10;:8;:10::i;:::-;43395:32;-1:-1:-1;43442:18:0;43463:27;:10;43395:32;43463:14;:27::i;:::-;43542:17;;-1:-1:-1;;;;;43542:17:0;43534:26;;;;:7;:26;;;;;;43442:48;;-1:-1:-1;43534:42:0;;43442:48;43534:30;:42::i;:::-;43513:17;;;-1:-1:-1;;;;;43513:17:0;;;43505:26;;;;:7;:26;;;;;;;;:71;;;;43607:17;;;;;43595:30;;:11;:30;;;;;;;43591:164;;;43681:17;;-1:-1:-1;;;;;43681:17:0;43673:26;;;;:7;:26;;;;;;:82;;43726:10;43673:30;:82::i;:::-;43652:17;;-1:-1:-1;;;;;43652:17:0;43644:26;;;;:7;:26;;;;;:111;43591:164;43798:17;;-1:-1:-1;;;;;43798:17:0;3601:10;-1:-1:-1;;;;;43775:53:0;;43817:10;43775:53;;;;9572:25:1;;9560:2;9545:18;;9527:76;39881:147:0;39959:7;;:17;;39971:4;39959:11;:17::i;:::-;39949:7;:27;40000:10;;:20;;40015:4;40000:14;:20::i;:::-;39987:10;:33;-1:-1:-1;;39881:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1649:6;1657;1710:2;1698:9;1689:7;1685:23;1681:32;1678:2;;;1731:6;1723;1716:22;1678:2;1775:9;1762:23;1794:31;1819:5;1794:31;:::i;:::-;1844:5;1896:2;1881:18;;;;1868:32;;-1:-1:-1;;;1668:238:1:o;1911:190::-;1967:6;2020:2;2008:9;1999:7;1995:23;1991:32;1988:2;;;2041:6;2033;2026:22;1988:2;2069:26;2085:9;2069:26;:::i;2106:190::-;2165:6;2218:2;2206:9;2197:7;2193:23;2189:32;2186:2;;;2239:6;2231;2224:22;2186:2;-1:-1:-1;2267:23:1;;2176:120;-1:-1:-1;2176:120:1:o;2301:258::-;2366:6;2374;2427:2;2415:9;2406:7;2402:23;2398:32;2395:2;;;2448:6;2440;2433:22;2395:2;2489:9;2476:23;2466:33;;2518:35;2549:2;2538:9;2534:18;2518:35;:::i;:::-;2508:45;;2385:174;;;;;:::o;2564:316::-;2652:6;2660;2668;2721:2;2709:9;2700:7;2696:23;2692:32;2689:2;;;2742:6;2734;2727:22;2689:2;2776:9;2770:16;2760:26;;2826:2;2815:9;2811:18;2805:25;2795:35;;2870:2;2859:9;2855:18;2849:25;2839:35;;2679:201;;;;;:::o;4132:603::-;4244:4;4273:2;4302;4291:9;4284:21;4334:6;4328:13;4377:6;4372:2;4361:9;4357:18;4350:34;4402:4;4415:140;4429:6;4426:1;4423:13;4415:140;;;4524:14;;;4520:23;;4514:30;4490:17;;;4509:2;4486:26;4479:66;4444:10;;4415:140;;;4573:6;4570:1;4567:13;4564:2;;;4643:4;4638:2;4629:6;4618:9;4614:22;4610:31;4603:45;4564:2;-1:-1:-1;4719:2:1;4698:15;-1:-1:-1;;4694:29:1;4679:45;;;;4726:2;4675:54;;4253:482;-1:-1:-1;;;4253:482:1:o;7431:356::-;7633:2;7615:21;;;7652:18;;;7645:30;7711:34;7706:2;7691:18;;7684:62;7778:2;7763:18;;7605:182::o;9608:983::-;9870:4;9918:3;9907:9;9903:19;9949:6;9938:9;9931:25;9975:2;10013:6;10008:2;9997:9;9993:18;9986:34;10056:3;10051:2;10040:9;10036:18;10029:31;10080:6;10115;10109:13;10146:6;10138;10131:22;10184:3;10173:9;10169:19;10162:26;;10223:2;10215:6;10211:15;10197:29;;10244:4;10257:195;10271:6;10268:1;10265:13;10257:195;;;10336:13;;-1:-1:-1;;;;;10332:39:1;10320:52;;10427:15;;;;10392:12;;;;10368:1;10286:9;10257:195;;;-1:-1:-1;;;;;;;10508:32:1;;;;10503:2;10488:18;;10481:60;-1:-1:-1;;;10572:3:1;10557:19;10550:35;10469:3;9879:712;-1:-1:-1;;;9879:712:1:o;11109:128::-;11149:3;11180:1;11176:6;11173:1;11170:13;11167:2;;;11186:18;;:::i;:::-;-1:-1:-1;11222:9:1;;11157:80::o;11242:217::-;11282:1;11308;11298:2;;-1:-1:-1;;;11333:31:1;;11387:4;11384:1;11377:15;11415:4;11340:1;11405:15;11298:2;-1:-1:-1;11444:9:1;;11288:171::o;11464:168::-;11504:7;11570:1;11566;11562:6;11558:14;11555:1;11552:21;11547:1;11540:9;11533:17;11529:45;11526:2;;;11577:18;;:::i;:::-;-1:-1:-1;11617:9:1;;11516:116::o;11637:125::-;11677:4;11705:1;11702;11699:8;11696:2;;;11710:18;;:::i;:::-;-1:-1:-1;11747:9:1;;11686:76::o;11767:380::-;11846:1;11842:12;;;;11889;;;11910:2;;11964:4;11956:6;11952:17;11942:27;;11910:2;12017;12009:6;12006:14;11986:18;11983:38;11980:2;;;12063:10;12058:3;12054:20;12051:1;12044:31;12098:4;12095:1;12088:15;12126:4;12123:1;12116:15;11980:2;;11822:325;;;:::o;12152:135::-;12191:3;-1:-1:-1;;12212:17:1;;12209:2;;;12232:18;;:::i;:::-;-1:-1:-1;12279:1:1;12268:13;;12199:88::o;12292:127::-;12353:10;12348:3;12344:20;12341:1;12334:31;12384:4;12381:1;12374:15;12408:4;12405:1;12398:15;12424:131;-1:-1:-1;;;;;12499:31:1;;12489:42;;12479:2;;12545:1;12542;12535:12

Swarm Source

ipfs://8fe180c5344261c9dcdc7b59c2acae4a0c438a317824ee1e5b280e2f25840ce0
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.