ETH Price: $3,312.46 (-2.89%)
Gas: 14 Gwei

Token

Recession (RCSN)
 

Overview

Max Total Supply

100,000,000 RCSN

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
409,168.269728356 RCSN

Value
$0.00
0x293d9eab4a6b6dcd263d71e74c1bd7d83fef5063
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:
Token

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-25
*/

// SPDX-License-Identifier: MIT
/**
Recession

Twitter: https://twitter.com/RecessionRCSN
*/

pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;

/**
 * @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) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;

        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

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

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

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

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

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

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'Address: call to non-contract');

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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

/*
 * @dev 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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), 'Ownable: new owner is the zero address');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function decimals() external view returns (uint8);

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Pair {
    function sync() external;
}

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 swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

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

    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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() public {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, 'ReentrancyGuard: reentrant call');
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }

    modifier isHuman() {
        require(tx.origin == msg.sender, 'sorry humans only');
        _;
    }
}


interface IBotChecker {
    function checkBots(
        address _from,
        address _to,
        uint256 _amount
    ) external;
}


pragma solidity >=0.6.0;



contract Token is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    string public name;
    string public symbol;
    uint8 public constant override decimals = 9;

    uint256 private _previousReflectionFee;
    uint256 private _previousTaxFee;
    IUniswapV2Router02 private uniswapRouter;
    address public uniswapPair;
    bool private tradingEnabled = false;
    bool private inSwap = false;

    uint256 public maxTxAmount;
    uint256 public maxAccountAmount;
    uint256 public cooldown;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping(address => bool) internal bots;

    IBotChecker private antibotChecker;
    bool public enhancedBotCheck = false;

    struct TokenProperties {
        uint256 supply;
        uint256 taxFee;
        uint256 reflectionFee;
        uint256 marketingFee;
        uint256 devFee;
        uint256 treasuryFee;
        uint256 maxTxAmount;
        uint256 maxAccountAmount;
        uint256 cooldown;
        address uniswapRouterAddress;
        address tokenB;
        address payable marketingWalletAddress;
        address payable devWalletAddress;
        address payable treasuryWalletAddress;
    }

    TokenProperties public properties;

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

    constructor(
        string memory _name,
        string memory _symbol,
        TokenProperties memory _properties,
        address _antibotChecker
    ) public {
        antibotChecker = IBotChecker(_antibotChecker);
        if (_antibotChecker != address(0)) {
            enhancedBotCheck = true;
        }

        properties = _properties;
        _tTotal = properties.supply * 10**9;
        _rTotal = (MAX - (MAX % _tTotal));
        name = _name;
        symbol = _symbol;

        _previousReflectionFee = properties.reflectionFee;
        _previousTaxFee = properties.taxFee;
        maxTxAmount = properties.maxTxAmount;
        maxAccountAmount = properties.maxAccountAmount;
        cooldown = properties.cooldown;

        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[properties.marketingWalletAddress] = true;
        _isExcludedFromFee[properties.devWalletAddress] = true;
        _isExcludedFromFee[properties.treasuryWalletAddress] = true;

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

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(properties.uniswapRouterAddress);
        uniswapRouter = _uniswapV2Router;
        _approve(address(this), address(uniswapRouter), _tTotal);
        if (properties.tokenB == address(0)) {
            uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
                address(this),
                _uniswapV2Router.WETH()
            );
        } else {
            uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), properties.tokenB);
        }
        IERC20(uniswapPair).approve(address(uniswapRouter), type(uint256).max);
    }

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

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

    function airdrop(address[] memory recipients, uint256[] memory amounts) external onlyOwner {
        require(recipients.length == amounts.length && recipients.length < 256, 'Incorrect lengths');
        for (uint256 i = 0; i < recipients.length; i++) {
            _transfer(_msgSender(), recipients[i], amounts[i]);
        }
    }

    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 tokenFromReflection(uint256 rAmount) private view returns (uint256) {
        require(rAmount <= _rTotal, 'Amount must be less than total reflections');
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function setTradingEnabled() external onlyOwner {
        tradingEnabled = true;
    }

    function removeAllFee() private {
        if (properties.reflectionFee == 0 && properties.taxFee == 0) return;
        _previousReflectionFee = properties.reflectionFee;
        _previousTaxFee = properties.taxFee;
        properties.reflectionFee = 0;
        properties.taxFee = 0;
    }

    function restoreAllFee() private {
        properties.reflectionFee = _previousReflectionFee;
        properties.taxFee = _previousTaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), 'ERC20: approve from the zero address');
        require(spender != address(0), 'ERC20: approve to the zero address');
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), 'ERC20: transfer from the zero address');
        require(to != address(0), 'ERC20: transfer to the zero address');
        require(amount > 0, 'Transfer amount must be greater than zero');
        if (!tradingEnabled) {
            require(
                _isExcludedFromFee[from] || _isExcludedFromFee[to] || _isExcludedFromFee[tx.origin],
                'Trading is not live yet'
            );
        }
        require(!bots[from] && !bots[tx.origin], 'Bot blacklisted');

        if (!inSwap) {
            if (enhancedBotCheck && address(antibotChecker) != address(0) && from == uniswapPair) {
                antibotChecker.checkBots(from, to, amount);
            }

            if (maxTxAmount != 0) {
                require(
                    _isExcludedFromFee[from] || _isExcludedFromFee[to] || amount <= maxTxAmount,
                    'Max Transfer Limit Exceeds!'
                );
            }

            if (maxAccountAmount != 0) {
                require(
                    _isExcludedFromFee[from] ||
                        _isExcludedFromFee[to] ||
                        to == uniswapPair ||
                        balanceOf(to) + amount <= maxAccountAmount,
                    'Max Account Amount Exceeds!'
                );
            }

            if (cooldown != 0) {
                require(
                    to == uniswapPair || _holderLastTransferTimestamp[to] < block.timestamp - cooldown,
                    'Cooldown timer hit!'
                );
                _holderLastTransferTimestamp[to] = block.timestamp;
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        if (!inSwap && from != uniswapPair && tradingEnabled) {
            if (contractTokenBalance > 0) {
                if (contractTokenBalance > balanceOf(uniswapPair).div(100)) {
                    swapTokensForEth(contractTokenBalance);
                }
            }
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                sendETHToFee(address(this).balance);
            }
        }

        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        if (from != uniswapPair && to != uniswapPair) {
            takeFee = false;
        }

        _tokenTransfer(from, to, amount, takeFee);

        if (takeFee && from == uniswapPair) properties.taxFee = _previousTaxFee;
        if (takeFee && to == uniswapPair) properties.reflectionFee = _previousReflectionFee;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        _approve(address(this), address(uniswapRouter), tokenAmount);
        if (properties.tokenB == address(0)) {
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniswapRouter.WETH();
            uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0,
                path,
                address(this),
                block.timestamp
            );
        } else {
            address[] memory path = new address[](3);
            path[0] = address(this);
            path[1] = properties.tokenB;
            path[2] = uniswapRouter.WETH();
            uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0,
                path,
                address(this),
                block.timestamp
            );
        }
    }

    function sendETHToFee(uint256 amount) private {
        uint256 totalFees = properties.devFee + properties.marketingFee + properties.treasuryFee;

        properties.devWalletAddress.transfer(amount.div(totalFees).mul(properties.devFee));
        properties.marketingWalletAddress.transfer(amount.div(totalFees).mul(properties.marketingFee));
        properties.treasuryWalletAddress.transfer(amount.div(totalFees).mul(properties.treasuryFee));
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _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 tReflect
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);

        _takeTeam(tReflect);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tReflect) = _getTValues(
            tAmount,
            properties.reflectionFee,
            properties.taxFee
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tReflect, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tReflect);
    }

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

    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;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

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

    function _takeTeam(uint256 tReflect) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tReflect.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

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

    receive() external payable {}

    function setMarketingWallet(address payable _marketingWalletAddress) external onlyOwner {
        properties.marketingWalletAddress = _marketingWalletAddress;
        _isExcludedFromFee[properties.marketingWalletAddress] = true;
    }

    function setTreasuryWallet(address payable _treasuryWalletAddress) external onlyOwner {
        properties.treasuryWalletAddress = _treasuryWalletAddress;
        _isExcludedFromFee[properties.treasuryWalletAddress] = true;
    }

    function excludeFromFee(address payable ad) external onlyOwner {
        _isExcludedFromFee[ad] = true;
    }

    function includeToFee(address payable ad) external onlyOwner {
        _isExcludedFromFee[ad] = false;
    }

    function setTaxFee(uint256 taxFee) external onlyOwner {
        require(taxFee <= 2500, 'Team fee must be less than 25%');
        properties.taxFee = taxFee;
    }

    function setReflectionFee(uint256 reflect) external onlyOwner {
        require(reflect <= 25, 'Reflection fee must be less than 25%');
        properties.reflectionFee = reflect;
    }

    function manualSwap() external {
        require(
            _msgSender() == properties.marketingWalletAddress ||
                _msgSender() == properties.devWalletAddress ||
                _msgSender() == properties.treasuryWalletAddress,
            'Not authorized'
        );
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external {
        require(
            _msgSender() == properties.marketingWalletAddress ||
                _msgSender() == properties.devWalletAddress ||
                _msgSender() == properties.treasuryWalletAddress,
            'Not authorized'
        );
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

    function setMaxAccountAmount(uint256 _maxAccountAmount) external onlyOwner {
        maxAccountAmount = _maxAccountAmount;
    }

    function setBotCheck(bool _enhancedBotCheck) external onlyOwner {
        enhancedBotCheck = _enhancedBotCheck;
    }

    function setCooldown(uint256 _cooldown) external onlyOwner {
        cooldown = _cooldown;
    }

    function setLaunchAmounts(
        uint256 _maxTxAmount,
        uint256 _maxAccountAmount,
        uint256 _cooldown
    ) external onlyOwner {
        maxTxAmount = _maxTxAmount;
        maxAccountAmount = _maxAccountAmount;
        cooldown = _cooldown;
    }

    function setBot(address bot, bool value) external onlyOwner {
        bots[bot] = value;
    }

    function setBotBatch(address[] memory _bots, bool value) external onlyOwner {
        require(_bots.length < 256, 'Incorrect lengths');
        for (uint256 i = 0; i < _bots.length; i++) {
            bots[_bots[i]] = value;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"components":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxAccountAmount","type":"uint256"},{"internalType":"uint256","name":"cooldown","type":"uint256"},{"internalType":"address","name":"uniswapRouterAddress","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"},{"internalType":"address payable","name":"devWalletAddress","type":"address"},{"internalType":"address payable","name":"treasuryWalletAddress","type":"address"}],"internalType":"struct Token.TokenProperties","name":"_properties","type":"tuple"},{"internalType":"address","name":"_antibotChecker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enhancedBotCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"includeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxAccountAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"properties","outputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxAccountAmount","type":"uint256"},{"internalType":"uint256","name":"cooldown","type":"uint256"},{"internalType":"address","name":"uniswapRouterAddress","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"},{"internalType":"address payable","name":"devWalletAddress","type":"address"},{"internalType":"address payable","name":"treasuryWalletAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBotBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enhancedBotCheck","type":"bool"}],"name":"setBotCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cooldown","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"_maxAccountAmount","type":"uint256"},{"internalType":"uint256","name":"_cooldown","type":"uint256"}],"name":"setLaunchAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingWalletAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAccountAmount","type":"uint256"}],"name":"setMaxAccountAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"}],"name":"setReflectionFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTradingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_treasuryWalletAddress","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600d805461ffff60a01b191690556013805460ff60a01b191690553480156200002c57600080fd5b5060405162003465380380620034658339810160408190526200004f9162000912565b60006200005b620006b4565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601380546001600160a01b0319166001600160a01b03831690811790915515620000dd576013805460ff60a01b1916600160a01b1790555b8151601481905560208084015160155560408401516016556060840151601755608084015160185560a084015160195560c0840151601a5560e0840151601b55610100840151601c55610120840151601d80546001600160a01b03199081166001600160a01b0393841617909155610140860151601e80548316918416919091179055610160860151601f8054831691841691909117905561018086015183548216908316179092556101a0850151602180549093169116179055633b9aca0002600581905560001981620001ae57fe5b06196006558351620001c89060089060208701906200078c565b508251620001de9060099060208601906200078c565b50601654600a55601554600b55601a54600e55601b54600f55601c54601055600654600160006200020e620006b4565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060016004600062000248620006b860201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260048452828120805486166001908117909155601f5483168252838220805487168217905593548216815282812080548616851790556021549091168152208054909216179055620002ca620006b4565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000311919062000b39565b60405180910390a3601d54600c80546001600160a01b0319166001600160a01b0392831690811791829055600554909262000351923092911690620006c7565b601e546001600160a01b0316620004f657806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039c57600080fd5b505afa158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d79190620008ca565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042057600080fd5b505afa15801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b9190620008ca565b6040518363ffffffff1660e01b81526004016200047a92919062000a80565b602060405180830381600087803b1580156200049557600080fd5b505af1158015620004aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d09190620008ca565b600d80546001600160a01b0319166001600160a01b039290921691909117905562000618565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200053057600080fd5b505afa15801562000545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056b9190620008ca565b601e546040516364e329cb60e11b81526001600160a01b039283169263c9c6539692620005a19230929091169060040162000a80565b602060405180830381600087803b158015620005bc57600080fd5b505af1158015620005d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f79190620008ca565b600d80546001600160a01b0319166001600160a01b03929092169190911790555b600d54600c5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39262000652929116906000199060040162000a9a565b602060405180830381600087803b1580156200066d57600080fd5b505af115801562000682573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006a89190620008f0565b50505050505062000b82565b3390565b6000546001600160a01b031690565b6001600160a01b038316620006f95760405162461bcd60e51b8152600401620006f09062000af5565b60405180910390fd5b6001600160a01b038216620007225760405162461bcd60e51b8152600401620006f09062000ab3565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906200077f90859062000b39565b60405180910390a3505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620007cf57805160ff1916838001178555620007ff565b82800160010185558215620007ff579182015b82811115620007ff578251825591602001919060010190620007e2565b506200080d92915062000811565b5090565b5b808211156200080d576000815560010162000812565b8051620008358162000b69565b92915050565b600082601f8301126200084c578081fd5b81516001600160401b0381111562000862578182fd5b602062000878601f8301601f1916820162000b42565b925081835284818386010111156200088f57600080fd5b60005b82811015620008af57848101820151848201830152810162000892565b82811115620008c15760008284860101525b50505092915050565b600060208284031215620008dc578081fd5b8151620008e98162000b69565b9392505050565b60006020828403121562000902578081fd5b81518015158114620008e9578182fd5b6000806000808486036102208112156200092a578384fd5b85516001600160401b038082111562000941578586fd5b6200094f89838a016200083b565b9650602088015191508082111562000965578586fd5b5062000974888289016200083b565b9450506101c080603f19830112156200098b578384fd5b620009968162000b42565b915060408701518252606087015160208301526080870151604083015260a0870151606083015260c0870151608083015260e087015160a08301526101008088015160c08401526101208089015160e0850152610140808a015183860152610160925062000a078b848c0162000828565b82860152610180915062000a1e8b838c0162000828565b908501526101a062000a338b8b830162000828565b8386015262000a458b858c0162000828565b8286015262000a598b6101e08c0162000828565b81860152505050508092505062000a7586610200870162000828565b905092959194509250565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b6040518181016001600160401b038111828210171562000b6157600080fd5b604052919050565b6001600160a01b038116811462000b7f57600080fd5b50565b6128d38062000b926000396000f3fe6080604052600436106102085760003560e01c80638d8c572b11610118578063cf0848f7116100a0578063e547be691161006f578063e547be6914610591578063ec28438a146105b1578063f2fde38b146105d1578063f4293890146105f1578063fcd802b1146106065761020f565b8063cf0848f71461051c578063dd62ed3e1461053c578063e156afd51461055c578063e28b27e8146105715761020f565b8063a6de7941116100e7578063a6de794114610492578063a8602fea146104a7578063a9059cbb146104c7578063c4081a4c146104e7578063c816841b146105075761020f565b80638d8c572b146104265780638da5cb5b1461044657806395d89b4114610468578063a63d5e331461047d5761020f565b8063437823ec1161019b578063672434821161016a57806367243482146103a757806370a08231146103c7578063715018a6146103e7578063787a08a6146103fc5780638c0b5e22146104115761020f565b8063437823ec146103325780634fc3f41a1461035257806351bc3c85146103725780635d098b38146103875761020f565b806323b872dd116101d757806323b872dd146102b0578063313ce567146102d0578063342aa8b5146102f25780633922af44146103125761020f565b806306fdde0314610214578063095ea7b31461023f578063171944f71461026c57806318160ddd1461028e5761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610635565b6040516102369190612250565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004612075565b6106c3565b6040516102369190612245565b34801561027857600080fd5b5061028c61028736600461219d565b6106e1565b005b34801561029a57600080fd5b506102a361073d565b6040516102369190612700565b3480156102bc57600080fd5b5061025f6102cb366004612000565b610743565b3480156102dc57600080fd5b506102e56107ca565b604051610236919061280b565b3480156102fe57600080fd5b5061028c61030d366004612040565b6107cf565b34801561031e57600080fd5b5061028c61032d3660046121d5565b61082f565b34801561033e57600080fd5b5061028c61034d366004611f90565b610872565b34801561035e57600080fd5b5061028c61036d3660046121bd565b6108cb565b34801561037e57600080fd5b5061028c610905565b34801561039357600080fd5b5061028c6103a2366004611f90565b6109a2565b3480156103b357600080fd5b5061028c6103c23660046120a0565b610a11565b3480156103d357600080fd5b506102a36103e2366004611f90565b610ac6565b3480156103f357600080fd5b5061028c610ae8565b34801561040857600080fd5b506102a3610b67565b34801561041d57600080fd5b506102a3610b6d565b34801561043257600080fd5b5061028c610441366004612159565b610b73565b34801561045257600080fd5b5061045b610c21565b604051610236919061220d565b34801561047457600080fd5b50610229610c30565b34801561048957600080fd5b506102a3610c8b565b34801561049e57600080fd5b5061025f610c91565b3480156104b357600080fd5b5061028c6104c2366004611f90565b610ca1565b3480156104d357600080fd5b5061025f6104e2366004612075565b610d10565b3480156104f357600080fd5b5061028c6105023660046121bd565b610d24565b34801561051357600080fd5b5061045b610d80565b34801561052857600080fd5b5061028c610537366004611f90565b610d8f565b34801561054857600080fd5b506102a3610557366004611fc8565b610de5565b34801561056857600080fd5b5061028c610e10565b34801561057d57600080fd5b5061028c61058c3660046121bd565b610e5a565b34801561059d57600080fd5b5061028c6105ac3660046121bd565b610e94565b3480156105bd57600080fd5b5061028c6105cc3660046121bd565b610eef565b3480156105dd57600080fd5b5061028c6105ec366004611f90565b610f29565b3480156105fd57600080fd5b5061028c610fdf565b34801561061257600080fd5b5061061b61106d565b6040516102369e9d9c9b9a99989796959493929190612779565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106bb5780601f10610690576101008083540402835291602001916106bb565b820191906000526020600020905b81548152906001019060200180831161069e57829003601f168201915b505050505081565b60006106d76106d06110b3565b84846110b7565b5060015b92915050565b6106e96110b3565b6000546001600160a01b0390811691161461071f5760405162461bcd60e51b8152600401610716906124bb565b60405180910390fd5b60138054911515600160a01b0260ff60a01b19909216919091179055565b60055490565b600061075084848461116b565b6107c08461075c6110b3565b6107bb85604051806060016040528060288152602001612876602891396001600160a01b038a1660009081526003602052604081209061079a6110b3565b6001600160a01b031681526020810191909152604001600020549190611660565b6110b7565b5060019392505050565b600981565b6107d76110b3565b6000546001600160a01b039081169116146108045760405162461bcd60e51b8152600401610716906124bb565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6108376110b3565b6000546001600160a01b039081169116146108645760405162461bcd60e51b8152600401610716906124bb565b600e92909255600f55601055565b61087a6110b3565b6000546001600160a01b039081169116146108a75760405162461bcd60e51b8152600401610716906124bb565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6108d36110b3565b6000546001600160a01b039081169116146109005760405162461bcd60e51b8152600401610716906124bb565b601055565b601f546001600160a01b03166109196110b3565b6001600160a01b0316148061094857506020546001600160a01b031661093d6110b3565b6001600160a01b0316145b8061096d57506021546001600160a01b03166109626110b3565b6001600160a01b0316145b6109895760405162461bcd60e51b8152600401610716906126d8565b600061099430610ac6565b905061099f8161168c565b50565b6109aa6110b3565b6000546001600160a01b039081169116146109d75760405162461bcd60e51b8152600401610716906124bb565b601f80546001600160a01b0319166001600160a01b039283161790819055166000908152600460205260409020805460ff19166001179055565b610a196110b3565b6000546001600160a01b03908116911614610a465760405162461bcd60e51b8152600401610716906124bb565b80518251148015610a5957506101008251105b610a755760405162461bcd60e51b815260040161071690612490565b60005b8251811015610ac157610ab9610a8c6110b3565b848381518110610a9857fe5b6020026020010151848481518110610aac57fe5b602002602001015161116b565b600101610a78565b505050565b6001600160a01b0381166000908152600160205260408120546106db9061198a565b610af06110b3565b6000546001600160a01b03908116911614610b1d5760405162461bcd60e51b8152600401610716906124bb565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60105481565b600e5481565b610b7b6110b3565b6000546001600160a01b03908116911614610ba85760405162461bcd60e51b8152600401610716906124bb565b610100825110610bca5760405162461bcd60e51b815260040161071690612490565b60005b8251811015610ac1578160126000858481518110610be757fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610bcd565b6000546001600160a01b031690565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106bb5780601f10610690576101008083540402835291602001916106bb565b600f5481565b601354600160a01b900460ff1681565b610ca96110b3565b6000546001600160a01b03908116911614610cd65760405162461bcd60e51b8152600401610716906124bb565b602180546001600160a01b0319166001600160a01b039283161790819055166000908152600460205260409020805460ff19166001179055565b60006106d7610d1d6110b3565b848461116b565b610d2c6110b3565b6000546001600160a01b03908116911614610d595760405162461bcd60e51b8152600401610716906124bb565b6109c4811115610d7b5760405162461bcd60e51b815260040161071690612630565b601555565b600d546001600160a01b031681565b610d976110b3565b6000546001600160a01b03908116911614610dc45760405162461bcd60e51b8152600401610716906124bb565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610e186110b3565b6000546001600160a01b03908116911614610e455760405162461bcd60e51b8152600401610716906124bb565b600d805460ff60a01b1916600160a01b179055565b610e626110b3565b6000546001600160a01b03908116911614610e8f5760405162461bcd60e51b8152600401610716906124bb565b600f55565b610e9c6110b3565b6000546001600160a01b03908116911614610ec95760405162461bcd60e51b8152600401610716906124bb565b6019811115610eea5760405162461bcd60e51b815260040161071690612694565b601655565b610ef76110b3565b6000546001600160a01b03908116911614610f245760405162461bcd60e51b8152600401610716906124bb565b600e55565b610f316110b3565b6000546001600160a01b03908116911614610f5e5760405162461bcd60e51b8152600401610716906124bb565b6001600160a01b038116610f845760405162461bcd60e51b815260040161071690612359565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b601f546001600160a01b0316610ff36110b3565b6001600160a01b0316148061102257506020546001600160a01b03166110176110b3565b6001600160a01b0316145b8061104757506021546001600160a01b031661103c6110b3565b6001600160a01b0316145b6110635760405162461bcd60e51b8152600401610716906126d8565b4761099f816119cb565b601454601554601654601754601854601954601a54601b54601c54601d54601e54601f546020546021546001600160a01b0394851694938416939283169291821691168e565b3390565b6001600160a01b0383166110dd5760405162461bcd60e51b81526004016107169061257e565b6001600160a01b0382166111035760405162461bcd60e51b81526004016107169061239f565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061115e908590612700565b60405180910390a3505050565b6001600160a01b0383166111915760405162461bcd60e51b815260040161071690612539565b6001600160a01b0382166111b75760405162461bcd60e51b8152600401610716906122cc565b600081116111d75760405162461bcd60e51b8152600401610716906124f0565b600d54600160a01b900460ff1661125d576001600160a01b03831660009081526004602052604090205460ff168061122757506001600160a01b03821660009081526004602052604090205460ff165b8061124157503260009081526004602052604090205460ff165b61125d5760405162461bcd60e51b815260040161071690612418565b6001600160a01b03831660009081526012602052604090205460ff1615801561129657503260009081526012602052604090205460ff16155b6112b25760405162461bcd60e51b8152600401610716906122a3565b600d54600160a81b900460ff166114e757601354600160a01b900460ff1680156112e657506013546001600160a01b031615155b80156112ff5750600d546001600160a01b038481169116145b1561136b5760135460405163162aa85d60e11b81526001600160a01b0390911690632c5550ba9061133890869086908690600401612221565b600060405180830381600087803b15801561135257600080fd5b505af1158015611366573d6000803e3d6000fd5b505050505b600e54156113db576001600160a01b03831660009081526004602052604090205460ff16806113b257506001600160a01b03821660009081526004602052604090205460ff165b806113bf5750600e548111155b6113db5760405162461bcd60e51b8152600401610716906125c2565b600f541561146d576001600160a01b03831660009081526004602052604090205460ff168061142257506001600160a01b03821660009081526004602052604090205460ff165b8061143a5750600d546001600160a01b038381169116145b806114515750600f548161144d84610ac6565b0111155b61146d5760405162461bcd60e51b8152600401610716906125f9565b601054156114e757600d546001600160a01b03838116911614806114af57506010546001600160a01b0383166000908152601160205260409020544291909103115b6114cb5760405162461bcd60e51b815260040161071690612667565b6001600160a01b03821660009081526011602052604090204290555b60006114f230610ac6565b600d54909150600160a81b900460ff1615801561151d5750600d546001600160a01b03858116911614155b80156115325750600d54600160a01b900460ff165b1561158157801561156f57600d5461155f90606490611559906001600160a01b0316610ac6565b90611ac4565b81111561156f5761156f8161168c565b47801561157f5761157f476119cb565b505b6001600160a01b03841660009081526004602052604090205460019060ff16806115c357506001600160a01b03841660009081526004602052604090205460ff165b156115cc575060005b600d546001600160a01b038681169116148015906115f85750600d546001600160a01b03858116911614155b15611601575060005b61160d85858584611b06565b8080156116275750600d546001600160a01b038681169116145b1561163357600b546015555b80801561164d5750600d546001600160a01b038581169116145b1561165957600a546016555b5050505050565b600081848411156116845760405162461bcd60e51b81526004016107169190612250565b505050900390565b600d805460ff60a81b1916600160a81b179055600c546116b79030906001600160a01b0316836110b7565b601e546001600160a01b031661180c57604080516002808252606080830184529260208301908036833701905050905030816000815181106116f557fe5b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561174957600080fd5b505afa15801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190611fac565b8160018151811061178e57fe5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906117d4908590600090869030904290600401612709565b600060405180830381600087803b1580156117ee57600080fd5b505af1158015611802573d6000803e3d6000fd5b505050505061197a565b60408051600380825260808201909252606091602082018380368337019050509050308160008151811061183c57fe5b6001600160a01b039283166020918202929092010152601e5482519116908290600190811061186757fe5b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f39190611fac565b8160028151811061190057fe5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac94790611946908590600090869030904290600401612709565b600060405180830381600087803b15801561196057600080fd5b505af1158015611974573d6000803e3d6000fd5b50505050505b50600d805460ff60a81b19169055565b60006006548211156119ae5760405162461bcd60e51b81526004016107169061230f565b60006119b8611b31565b90506119c48382611ac4565b9392505050565b601954601754601854602054918101909201916001600160a01b03909116906108fc90611a02906119fc8686611ac4565b90611b54565b6040518115909202916000818181858888f19350505050158015611a2a573d6000803e3d6000fd5b50601f546017546001600160a01b03909116906108fc90611a4f906119fc8686611ac4565b6040518115909202916000818181858888f19350505050158015611a77573d6000803e3d6000fd5b506021546019546001600160a01b03909116906108fc90611a9c906119fc8686611ac4565b6040518115909202916000818181858888f19350505050158015610ac1573d6000803e3d6000fd5b60006119c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b8e565b80611b1357611b13611bc5565b611b1e848484611bf7565b80611b2b57611b2b611cec565b50505050565b6000806000611b3e611cfa565b9092509050611b4d8282611ac4565b9250505090565b600082611b63575060006106db565b82820282848281611b7057fe5b04146119c45760405162461bcd60e51b81526004016107169061244f565b60008183611baf5760405162461bcd60e51b81526004016107169190612250565b506000838581611bbb57fe5b0495945050505050565b601654158015611bd55750601554155b15611bdf57611bf5565b60168054600a5560158054600b55600091829055555b565b600080600080600080611c0987611d31565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150611c3b9087611d94565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054611c6a9086611dd6565b6001600160a01b038916600090815260016020526040902055611c8c81611dfb565b611c968483611e45565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611cd99190612700565b60405180910390a3505050505050505050565b600a54601655600b54601555565b6006546005546000918291611d0f8282611ac4565b821015611d2757600654600554935093505050611d2d565b90925090505b9091565b6000806000806000806000806000611d548a601460020154601460010154611e69565b9250925092506000611d64611b31565b90506000806000611d778e878787611eb9565b919e509c509a509598509396509194505050505091939550919395565b60006119c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611660565b6000828201838110156119c45760405162461bcd60e51b8152600401610716906123e1565b6000611e05611b31565b90506000611e138383611b54565b30600090815260016020526040902054909150611e309082611dd6565b30600090815260016020526040902055505050565b600654611e529083611d94565b600655600754611e629082611dd6565b6007555050565b6000808080611e7d60646115598989611b54565b90506000611e916127106115598a89611b54565b90506000611ea982611ea38b86611d94565b90611d94565b9992985090965090945050505050565b6000808080611ec88886611b54565b90506000611ed68887611b54565b90506000611ee48888611b54565b90506000611ef682611ea38686611d94565b939b939a50919850919650505050505050565b600082601f830112611f19578081fd5b8135611f2c611f2782612840565b612819565b818152915060208083019084810181840286018201871015611f4d57600080fd5b60005b84811015611f75578135611f6381612860565b84529282019290820190600101611f50565b505050505092915050565b803580151581146106db57600080fd5b600060208284031215611fa1578081fd5b81356119c481612860565b600060208284031215611fbd578081fd5b81516119c481612860565b60008060408385031215611fda578081fd5b8235611fe581612860565b91506020830135611ff581612860565b809150509250929050565b600080600060608486031215612014578081fd5b833561201f81612860565b9250602084013561202f81612860565b929592945050506040919091013590565b60008060408385031215612052578182fd5b823561205d81612860565b915061206c8460208501611f80565b90509250929050565b60008060408385031215612087578182fd5b823561209281612860565b946020939093013593505050565b600080604083850312156120b2578182fd5b823567ffffffffffffffff808211156120c9578384fd5b6120d586838701611f09565b93506020915081850135818111156120eb578384fd5b85019050601f810186136120fd578283fd5b803561210b611f2782612840565b81815283810190838501858402850186018a1015612127578687fd5b8694505b8385101561214957803583526001949094019391850191850161212b565b5080955050505050509250929050565b6000806040838503121561216b578182fd5b823567ffffffffffffffff811115612181578283fd5b61218d85828601611f09565b92505061206c8460208501611f80565b6000602082840312156121ae578081fd5b813580151581146119c4578182fd5b6000602082840312156121ce578081fd5b5035919050565b6000806000606084860312156121e9578283fd5b505081359360208301359350604090920135919050565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b6000602080835283518082850152825b8181101561227c57858101830151858201604001528201612260565b8181111561228d5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600f908201526e109bdd08189b1858dadb1a5cdd1959608a1b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526017908201527f54726164696e67206973206e6f74206c69766520796574000000000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260119082015270496e636f7272656374206c656e6774687360781b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601b908201527f4d6178205472616e73666572204c696d69742045786365656473210000000000604082015260600190565b6020808252601b908201527f4d6178204163636f756e7420416d6f756e742045786365656473210000000000604082015260600190565b6020808252601e908201527f5465616d20666565206d757374206265206c657373207468616e203235250000604082015260600190565b602080825260139082015272436f6f6c646f776e2074696d6572206869742160681b604082015260600190565b60208082526024908201527f5265666c656374696f6e20666565206d757374206265206c657373207468616e6040820152632032352560e01b606082015260800190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127585784516001600160a01b031683529383019391830191600101612733565b50506001600160a01b03969096166060850152505050608001529392505050565b8e8152602081018e9052604081018d9052606081018c9052608081018b905260a081018a905260c0810189905260e0810188905261010081018790526001600160a01b0386811661012083015285811661014083015284166101608201526101c081016127ea610180830185612200565b6127f86101a0830184612200565b9f9e505050505050505050505050505050565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561283857600080fd5b604052919050565b600067ffffffffffffffff821115612856578081fd5b5060209081020190565b6001600160a01b038116811461099f57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220853e907cd6b98197f1b5a8f970fb085fd66b683cfe06c071b9de25669758c4d064736f6c634300060c0033000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000000000002bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000071afd498d0000000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000002a8ab573389e717e6bf15696a7d24ffb41fd4b380000000000000000000000000a640349aed983469353e127cab0c3311c1b707000000000000000000000000069632fbfa5506cce868bfc52dc4ceedb09b2fbaf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009526563657373696f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045243534e00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102085760003560e01c80638d8c572b11610118578063cf0848f7116100a0578063e547be691161006f578063e547be6914610591578063ec28438a146105b1578063f2fde38b146105d1578063f4293890146105f1578063fcd802b1146106065761020f565b8063cf0848f71461051c578063dd62ed3e1461053c578063e156afd51461055c578063e28b27e8146105715761020f565b8063a6de7941116100e7578063a6de794114610492578063a8602fea146104a7578063a9059cbb146104c7578063c4081a4c146104e7578063c816841b146105075761020f565b80638d8c572b146104265780638da5cb5b1461044657806395d89b4114610468578063a63d5e331461047d5761020f565b8063437823ec1161019b578063672434821161016a57806367243482146103a757806370a08231146103c7578063715018a6146103e7578063787a08a6146103fc5780638c0b5e22146104115761020f565b8063437823ec146103325780634fc3f41a1461035257806351bc3c85146103725780635d098b38146103875761020f565b806323b872dd116101d757806323b872dd146102b0578063313ce567146102d0578063342aa8b5146102f25780633922af44146103125761020f565b806306fdde0314610214578063095ea7b31461023f578063171944f71461026c57806318160ddd1461028e5761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610635565b6040516102369190612250565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004612075565b6106c3565b6040516102369190612245565b34801561027857600080fd5b5061028c61028736600461219d565b6106e1565b005b34801561029a57600080fd5b506102a361073d565b6040516102369190612700565b3480156102bc57600080fd5b5061025f6102cb366004612000565b610743565b3480156102dc57600080fd5b506102e56107ca565b604051610236919061280b565b3480156102fe57600080fd5b5061028c61030d366004612040565b6107cf565b34801561031e57600080fd5b5061028c61032d3660046121d5565b61082f565b34801561033e57600080fd5b5061028c61034d366004611f90565b610872565b34801561035e57600080fd5b5061028c61036d3660046121bd565b6108cb565b34801561037e57600080fd5b5061028c610905565b34801561039357600080fd5b5061028c6103a2366004611f90565b6109a2565b3480156103b357600080fd5b5061028c6103c23660046120a0565b610a11565b3480156103d357600080fd5b506102a36103e2366004611f90565b610ac6565b3480156103f357600080fd5b5061028c610ae8565b34801561040857600080fd5b506102a3610b67565b34801561041d57600080fd5b506102a3610b6d565b34801561043257600080fd5b5061028c610441366004612159565b610b73565b34801561045257600080fd5b5061045b610c21565b604051610236919061220d565b34801561047457600080fd5b50610229610c30565b34801561048957600080fd5b506102a3610c8b565b34801561049e57600080fd5b5061025f610c91565b3480156104b357600080fd5b5061028c6104c2366004611f90565b610ca1565b3480156104d357600080fd5b5061025f6104e2366004612075565b610d10565b3480156104f357600080fd5b5061028c6105023660046121bd565b610d24565b34801561051357600080fd5b5061045b610d80565b34801561052857600080fd5b5061028c610537366004611f90565b610d8f565b34801561054857600080fd5b506102a3610557366004611fc8565b610de5565b34801561056857600080fd5b5061028c610e10565b34801561057d57600080fd5b5061028c61058c3660046121bd565b610e5a565b34801561059d57600080fd5b5061028c6105ac3660046121bd565b610e94565b3480156105bd57600080fd5b5061028c6105cc3660046121bd565b610eef565b3480156105dd57600080fd5b5061028c6105ec366004611f90565b610f29565b3480156105fd57600080fd5b5061028c610fdf565b34801561061257600080fd5b5061061b61106d565b6040516102369e9d9c9b9a99989796959493929190612779565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106bb5780601f10610690576101008083540402835291602001916106bb565b820191906000526020600020905b81548152906001019060200180831161069e57829003601f168201915b505050505081565b60006106d76106d06110b3565b84846110b7565b5060015b92915050565b6106e96110b3565b6000546001600160a01b0390811691161461071f5760405162461bcd60e51b8152600401610716906124bb565b60405180910390fd5b60138054911515600160a01b0260ff60a01b19909216919091179055565b60055490565b600061075084848461116b565b6107c08461075c6110b3565b6107bb85604051806060016040528060288152602001612876602891396001600160a01b038a1660009081526003602052604081209061079a6110b3565b6001600160a01b031681526020810191909152604001600020549190611660565b6110b7565b5060019392505050565b600981565b6107d76110b3565b6000546001600160a01b039081169116146108045760405162461bcd60e51b8152600401610716906124bb565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6108376110b3565b6000546001600160a01b039081169116146108645760405162461bcd60e51b8152600401610716906124bb565b600e92909255600f55601055565b61087a6110b3565b6000546001600160a01b039081169116146108a75760405162461bcd60e51b8152600401610716906124bb565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6108d36110b3565b6000546001600160a01b039081169116146109005760405162461bcd60e51b8152600401610716906124bb565b601055565b601f546001600160a01b03166109196110b3565b6001600160a01b0316148061094857506020546001600160a01b031661093d6110b3565b6001600160a01b0316145b8061096d57506021546001600160a01b03166109626110b3565b6001600160a01b0316145b6109895760405162461bcd60e51b8152600401610716906126d8565b600061099430610ac6565b905061099f8161168c565b50565b6109aa6110b3565b6000546001600160a01b039081169116146109d75760405162461bcd60e51b8152600401610716906124bb565b601f80546001600160a01b0319166001600160a01b039283161790819055166000908152600460205260409020805460ff19166001179055565b610a196110b3565b6000546001600160a01b03908116911614610a465760405162461bcd60e51b8152600401610716906124bb565b80518251148015610a5957506101008251105b610a755760405162461bcd60e51b815260040161071690612490565b60005b8251811015610ac157610ab9610a8c6110b3565b848381518110610a9857fe5b6020026020010151848481518110610aac57fe5b602002602001015161116b565b600101610a78565b505050565b6001600160a01b0381166000908152600160205260408120546106db9061198a565b610af06110b3565b6000546001600160a01b03908116911614610b1d5760405162461bcd60e51b8152600401610716906124bb565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60105481565b600e5481565b610b7b6110b3565b6000546001600160a01b03908116911614610ba85760405162461bcd60e51b8152600401610716906124bb565b610100825110610bca5760405162461bcd60e51b815260040161071690612490565b60005b8251811015610ac1578160126000858481518110610be757fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610bcd565b6000546001600160a01b031690565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106bb5780601f10610690576101008083540402835291602001916106bb565b600f5481565b601354600160a01b900460ff1681565b610ca96110b3565b6000546001600160a01b03908116911614610cd65760405162461bcd60e51b8152600401610716906124bb565b602180546001600160a01b0319166001600160a01b039283161790819055166000908152600460205260409020805460ff19166001179055565b60006106d7610d1d6110b3565b848461116b565b610d2c6110b3565b6000546001600160a01b03908116911614610d595760405162461bcd60e51b8152600401610716906124bb565b6109c4811115610d7b5760405162461bcd60e51b815260040161071690612630565b601555565b600d546001600160a01b031681565b610d976110b3565b6000546001600160a01b03908116911614610dc45760405162461bcd60e51b8152600401610716906124bb565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610e186110b3565b6000546001600160a01b03908116911614610e455760405162461bcd60e51b8152600401610716906124bb565b600d805460ff60a01b1916600160a01b179055565b610e626110b3565b6000546001600160a01b03908116911614610e8f5760405162461bcd60e51b8152600401610716906124bb565b600f55565b610e9c6110b3565b6000546001600160a01b03908116911614610ec95760405162461bcd60e51b8152600401610716906124bb565b6019811115610eea5760405162461bcd60e51b815260040161071690612694565b601655565b610ef76110b3565b6000546001600160a01b03908116911614610f245760405162461bcd60e51b8152600401610716906124bb565b600e55565b610f316110b3565b6000546001600160a01b03908116911614610f5e5760405162461bcd60e51b8152600401610716906124bb565b6001600160a01b038116610f845760405162461bcd60e51b815260040161071690612359565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b601f546001600160a01b0316610ff36110b3565b6001600160a01b0316148061102257506020546001600160a01b03166110176110b3565b6001600160a01b0316145b8061104757506021546001600160a01b031661103c6110b3565b6001600160a01b0316145b6110635760405162461bcd60e51b8152600401610716906126d8565b4761099f816119cb565b601454601554601654601754601854601954601a54601b54601c54601d54601e54601f546020546021546001600160a01b0394851694938416939283169291821691168e565b3390565b6001600160a01b0383166110dd5760405162461bcd60e51b81526004016107169061257e565b6001600160a01b0382166111035760405162461bcd60e51b81526004016107169061239f565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061115e908590612700565b60405180910390a3505050565b6001600160a01b0383166111915760405162461bcd60e51b815260040161071690612539565b6001600160a01b0382166111b75760405162461bcd60e51b8152600401610716906122cc565b600081116111d75760405162461bcd60e51b8152600401610716906124f0565b600d54600160a01b900460ff1661125d576001600160a01b03831660009081526004602052604090205460ff168061122757506001600160a01b03821660009081526004602052604090205460ff165b8061124157503260009081526004602052604090205460ff165b61125d5760405162461bcd60e51b815260040161071690612418565b6001600160a01b03831660009081526012602052604090205460ff1615801561129657503260009081526012602052604090205460ff16155b6112b25760405162461bcd60e51b8152600401610716906122a3565b600d54600160a81b900460ff166114e757601354600160a01b900460ff1680156112e657506013546001600160a01b031615155b80156112ff5750600d546001600160a01b038481169116145b1561136b5760135460405163162aa85d60e11b81526001600160a01b0390911690632c5550ba9061133890869086908690600401612221565b600060405180830381600087803b15801561135257600080fd5b505af1158015611366573d6000803e3d6000fd5b505050505b600e54156113db576001600160a01b03831660009081526004602052604090205460ff16806113b257506001600160a01b03821660009081526004602052604090205460ff165b806113bf5750600e548111155b6113db5760405162461bcd60e51b8152600401610716906125c2565b600f541561146d576001600160a01b03831660009081526004602052604090205460ff168061142257506001600160a01b03821660009081526004602052604090205460ff165b8061143a5750600d546001600160a01b038381169116145b806114515750600f548161144d84610ac6565b0111155b61146d5760405162461bcd60e51b8152600401610716906125f9565b601054156114e757600d546001600160a01b03838116911614806114af57506010546001600160a01b0383166000908152601160205260409020544291909103115b6114cb5760405162461bcd60e51b815260040161071690612667565b6001600160a01b03821660009081526011602052604090204290555b60006114f230610ac6565b600d54909150600160a81b900460ff1615801561151d5750600d546001600160a01b03858116911614155b80156115325750600d54600160a01b900460ff165b1561158157801561156f57600d5461155f90606490611559906001600160a01b0316610ac6565b90611ac4565b81111561156f5761156f8161168c565b47801561157f5761157f476119cb565b505b6001600160a01b03841660009081526004602052604090205460019060ff16806115c357506001600160a01b03841660009081526004602052604090205460ff165b156115cc575060005b600d546001600160a01b038681169116148015906115f85750600d546001600160a01b03858116911614155b15611601575060005b61160d85858584611b06565b8080156116275750600d546001600160a01b038681169116145b1561163357600b546015555b80801561164d5750600d546001600160a01b038581169116145b1561165957600a546016555b5050505050565b600081848411156116845760405162461bcd60e51b81526004016107169190612250565b505050900390565b600d805460ff60a81b1916600160a81b179055600c546116b79030906001600160a01b0316836110b7565b601e546001600160a01b031661180c57604080516002808252606080830184529260208301908036833701905050905030816000815181106116f557fe5b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561174957600080fd5b505afa15801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190611fac565b8160018151811061178e57fe5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac947906117d4908590600090869030904290600401612709565b600060405180830381600087803b1580156117ee57600080fd5b505af1158015611802573d6000803e3d6000fd5b505050505061197a565b60408051600380825260808201909252606091602082018380368337019050509050308160008151811061183c57fe5b6001600160a01b039283166020918202929092010152601e5482519116908290600190811061186757fe5b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f39190611fac565b8160028151811061190057fe5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b815291169063791ac94790611946908590600090869030904290600401612709565b600060405180830381600087803b15801561196057600080fd5b505af1158015611974573d6000803e3d6000fd5b50505050505b50600d805460ff60a81b19169055565b60006006548211156119ae5760405162461bcd60e51b81526004016107169061230f565b60006119b8611b31565b90506119c48382611ac4565b9392505050565b601954601754601854602054918101909201916001600160a01b03909116906108fc90611a02906119fc8686611ac4565b90611b54565b6040518115909202916000818181858888f19350505050158015611a2a573d6000803e3d6000fd5b50601f546017546001600160a01b03909116906108fc90611a4f906119fc8686611ac4565b6040518115909202916000818181858888f19350505050158015611a77573d6000803e3d6000fd5b506021546019546001600160a01b03909116906108fc90611a9c906119fc8686611ac4565b6040518115909202916000818181858888f19350505050158015610ac1573d6000803e3d6000fd5b60006119c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b8e565b80611b1357611b13611bc5565b611b1e848484611bf7565b80611b2b57611b2b611cec565b50505050565b6000806000611b3e611cfa565b9092509050611b4d8282611ac4565b9250505090565b600082611b63575060006106db565b82820282848281611b7057fe5b04146119c45760405162461bcd60e51b81526004016107169061244f565b60008183611baf5760405162461bcd60e51b81526004016107169190612250565b506000838581611bbb57fe5b0495945050505050565b601654158015611bd55750601554155b15611bdf57611bf5565b60168054600a5560158054600b55600091829055555b565b600080600080600080611c0987611d31565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150611c3b9087611d94565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054611c6a9086611dd6565b6001600160a01b038916600090815260016020526040902055611c8c81611dfb565b611c968483611e45565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611cd99190612700565b60405180910390a3505050505050505050565b600a54601655600b54601555565b6006546005546000918291611d0f8282611ac4565b821015611d2757600654600554935093505050611d2d565b90925090505b9091565b6000806000806000806000806000611d548a601460020154601460010154611e69565b9250925092506000611d64611b31565b90506000806000611d778e878787611eb9565b919e509c509a509598509396509194505050505091939550919395565b60006119c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611660565b6000828201838110156119c45760405162461bcd60e51b8152600401610716906123e1565b6000611e05611b31565b90506000611e138383611b54565b30600090815260016020526040902054909150611e309082611dd6565b30600090815260016020526040902055505050565b600654611e529083611d94565b600655600754611e629082611dd6565b6007555050565b6000808080611e7d60646115598989611b54565b90506000611e916127106115598a89611b54565b90506000611ea982611ea38b86611d94565b90611d94565b9992985090965090945050505050565b6000808080611ec88886611b54565b90506000611ed68887611b54565b90506000611ee48888611b54565b90506000611ef682611ea38686611d94565b939b939a50919850919650505050505050565b600082601f830112611f19578081fd5b8135611f2c611f2782612840565b612819565b818152915060208083019084810181840286018201871015611f4d57600080fd5b60005b84811015611f75578135611f6381612860565b84529282019290820190600101611f50565b505050505092915050565b803580151581146106db57600080fd5b600060208284031215611fa1578081fd5b81356119c481612860565b600060208284031215611fbd578081fd5b81516119c481612860565b60008060408385031215611fda578081fd5b8235611fe581612860565b91506020830135611ff581612860565b809150509250929050565b600080600060608486031215612014578081fd5b833561201f81612860565b9250602084013561202f81612860565b929592945050506040919091013590565b60008060408385031215612052578182fd5b823561205d81612860565b915061206c8460208501611f80565b90509250929050565b60008060408385031215612087578182fd5b823561209281612860565b946020939093013593505050565b600080604083850312156120b2578182fd5b823567ffffffffffffffff808211156120c9578384fd5b6120d586838701611f09565b93506020915081850135818111156120eb578384fd5b85019050601f810186136120fd578283fd5b803561210b611f2782612840565b81815283810190838501858402850186018a1015612127578687fd5b8694505b8385101561214957803583526001949094019391850191850161212b565b5080955050505050509250929050565b6000806040838503121561216b578182fd5b823567ffffffffffffffff811115612181578283fd5b61218d85828601611f09565b92505061206c8460208501611f80565b6000602082840312156121ae578081fd5b813580151581146119c4578182fd5b6000602082840312156121ce578081fd5b5035919050565b6000806000606084860312156121e9578283fd5b505081359360208301359350604090920135919050565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b6000602080835283518082850152825b8181101561227c57858101830151858201604001528201612260565b8181111561228d5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600f908201526e109bdd08189b1858dadb1a5cdd1959608a1b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526017908201527f54726164696e67206973206e6f74206c69766520796574000000000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260119082015270496e636f7272656374206c656e6774687360781b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601b908201527f4d6178205472616e73666572204c696d69742045786365656473210000000000604082015260600190565b6020808252601b908201527f4d6178204163636f756e7420416d6f756e742045786365656473210000000000604082015260600190565b6020808252601e908201527f5465616d20666565206d757374206265206c657373207468616e203235250000604082015260600190565b602080825260139082015272436f6f6c646f776e2074696d6572206869742160681b604082015260600190565b60208082526024908201527f5265666c656374696f6e20666565206d757374206265206c657373207468616e6040820152632032352560e01b606082015260800190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127585784516001600160a01b031683529383019391830191600101612733565b50506001600160a01b03969096166060850152505050608001529392505050565b8e8152602081018e9052604081018d9052606081018c9052608081018b905260a081018a905260c0810189905260e0810188905261010081018790526001600160a01b0386811661012083015285811661014083015284166101608201526101c081016127ea610180830185612200565b6127f86101a0830184612200565b9f9e505050505050505050505050505050565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561283857600080fd5b604052919050565b600067ffffffffffffffff821115612856578081fd5b5060209081020190565b6001600160a01b038116811461099f57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220853e907cd6b98197f1b5a8f970fb085fd66b683cfe06c071b9de25669758c4d064736f6c634300060c0033

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

000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000000000002bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000071afd498d0000000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000002a8ab573389e717e6bf15696a7d24ffb41fd4b380000000000000000000000000a640349aed983469353e127cab0c3311c1b707000000000000000000000000069632fbfa5506cce868bfc52dc4ceedb09b2fbaf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009526563657373696f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045243534e00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Recession
Arg [1] : _symbol (string): RCSN
Arg [2] : _properties (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [3] : _antibotChecker (address): 0x0000000000000000000000000000000000000000

-----Encoded View---------------
21 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [2] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [3] : 00000000000000000000000000000000000000000000000000000000000002bc
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [8] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [9] : 00000000000000000000000000000000000000000000000000071afd498d0000
Arg [10] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [11] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [12] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [13] : 0000000000000000000000002a8ab573389e717e6bf15696a7d24ffb41fd4b38
Arg [14] : 0000000000000000000000000a640349aed983469353e127cab0c3311c1b7070
Arg [15] : 00000000000000000000000069632fbfa5506cce868bfc52dc4ceedb09b2fbaf
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [18] : 526563657373696f6e0000000000000000000000000000000000000000000000
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [20] : 5243534e00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

21630:17090:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22089:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26138:161;;;;;;;;;;-1:-1:-1;26138:161:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;37857:119::-;;;;;;;;;;-1:-1:-1;37857:119:0;;;;;:::i;:::-;;:::i;:::-;;25218:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26307:397::-;;;;;;;;;;-1:-1:-1;26307:397:0;;;;;:::i;:::-;;:::i;22141:43::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;38368:96::-;;;;;;;;;;-1:-1:-1;38368:96:0;;;;;:::i;:::-;;:::i;38090:270::-;;;;;;;;;;-1:-1:-1;38090:270:0;;;;;:::i;:::-;;:::i;36176:111::-;;;;;;;;;;-1:-1:-1;36176:111:0;;;;;:::i;:::-;;:::i;37984:98::-;;;;;;;;;;-1:-1:-1;37984:98:0;;;;;:::i;:::-;;:::i;36784:401::-;;;;;;;;;;;;;:::i;35691:237::-;;;;;;;;;;-1:-1:-1;35691:237:0;;;;;:::i;:::-;;:::i;25467:337::-;;;;;;;;;;-1:-1:-1;25467:337:0;;;;;:::i;:::-;;:::i;25321:138::-;;;;;;;;;;-1:-1:-1;25321:138:0;;;;;:::i;:::-;;:::i;9044:148::-;;;;;;;;;;;;;:::i;22505:23::-;;;;;;;;;;;;;:::i;22434:26::-;;;;;;;;;;;;;:::i;38472:245::-;;;;;;;;;;-1:-1:-1;38472:245:0;;;;;:::i;:::-;;:::i;8402:79::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;22114:20::-;;;;;;;;;;;;;:::i;22467:31::-;;;;;;;;;;;;;:::i;22694:36::-;;;;;;;;;;;;;:::i;35936:232::-;;;;;;;;;;-1:-1:-1;35936:232:0;;;;;:::i;:::-;;:::i;25812:167::-;;;;;;;;;;-1:-1:-1;25812:167:0;;;;;:::i;:::-;;:::i;36413:::-;;;;;;;;;;-1:-1:-1;36413:167:0;;;;;:::i;:::-;;:::i;22323:26::-;;;;;;;;;;;;;:::i;36295:110::-;;;;;;;;;;-1:-1:-1;36295:110:0;;;;;:::i;:::-;;:::i;25987:143::-;;;;;;;;;;-1:-1:-1;25987:143:0;;;;;:::i;:::-;;:::i;26974:88::-;;;;;;;;;;;;;:::i;37719:130::-;;;;;;;;;;-1:-1:-1;37719:130:0;;;;;:::i;:::-;;:::i;36588:188::-;;;;;;;;;;-1:-1:-1;36588:188:0;;;;;:::i;:::-;;:::i;37601:110::-;;;;;;;;;;-1:-1:-1;37601:110:0;;;;;:::i;:::-;;:::i;9347:244::-;;;;;;;;;;-1:-1:-1;9347:244:0;;;;;:::i;:::-;;:::i;37193:400::-;;;;;;;;;;;;;:::i;23242:33::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;22089:18::-;;;;;;;;;;;;;;;-1:-1:-1;;22089:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26138:161::-;26213:4;26230:39;26239:12;:10;:12::i;:::-;26253:7;26262:6;26230:8;:39::i;:::-;-1:-1:-1;26287:4:0;26138:161;;;;;:::o;37857:119::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;;;;;;;;;37932:16:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;37932:36:0::1;-1:-1:-1::0;;;;37932:36:0;;::::1;::::0;;;::::1;::::0;;37857:119::o;25218:95::-;25298:7;;25218:95;:::o;26307:397::-;26439:4;26456:36;26466:6;26474:9;26485:6;26456:9;:36::i;:::-;26503:171;26526:6;26547:12;:10;:12::i;:::-;26574:89;26612:6;26574:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26574:19:0;;;;;;:11;:19;;;;;;26594:12;:10;:12::i;:::-;-1:-1:-1;;;;;26574:33:0;;;;;;;;;;;;-1:-1:-1;26574:33:0;;;:89;:37;:89::i;:::-;26503:8;:171::i;:::-;-1:-1:-1;26692:4:0;26307:397;;;;;:::o;22141:43::-;22183:1;22141:43;:::o;38368:96::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38439:9:0;;;::::1;;::::0;;;:4:::1;:9;::::0;;;;:17;;-1:-1:-1;;38439:17:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38368:96::o;38090:270::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;38248:11:::1;:26:::0;;;;38285:16:::1;:36:::0;38332:8:::1;:20:::0;38090:270::o;36176:111::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36250:22:0::1;;::::0;;;:18:::1;:22;::::0;;;;:29;;-1:-1:-1;;36250:29:0::1;36275:4;36250:29;::::0;;36176:111::o;37984:98::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;38054:8:::1;:20:::0;37984:98::o;36784:401::-;36864:33;;-1:-1:-1;;;;;36864:33:0;36848:12;:10;:12::i;:::-;-1:-1:-1;;;;;36848:49:0;;:113;;;-1:-1:-1;36934:27:0;;-1:-1:-1;;;;;36934:27:0;36918:12;:10;:12::i;:::-;-1:-1:-1;;;;;36918:43:0;;36848:113;:182;;;-1:-1:-1;36998:32:0;;-1:-1:-1;;;;;36998:32:0;36982:12;:10;:12::i;:::-;-1:-1:-1;;;;;36982:48:0;;36848:182;36826:246;;;;-1:-1:-1;;;36826:246:0;;;;;;;:::i;:::-;37083:23;37109:24;37127:4;37109:9;:24::i;:::-;37083:50;;37144:33;37161:15;37144:16;:33::i;:::-;36784:401;:::o;35691:237::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;35790:33;:59;;-1:-1:-1;;;;;;35790:59:0::1;-1:-1:-1::0;;;;;35790:59:0;;::::1;;::::0;;;;35879:33:::1;-1:-1:-1::0;35860:53:0;;;:18:::1;:53;::::0;;;;:60;;-1:-1:-1;;35860:60:0::1;-1:-1:-1::0;35860:60:0::1;::::0;;35691:237::o;25467:337::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;25598:7:::1;:14;25577:10;:17;:35;:62;;;;;25636:3;25616:10;:17;:23;25577:62;25569:92;;;;-1:-1:-1::0;;;25569:92:0::1;;;;;;;:::i;:::-;25677:9;25672:125;25696:10;:17;25692:1;:21;25672:125;;;25735:50;25745:12;:10;:12::i;:::-;25759:10;25770:1;25759:13;;;;;;;;;;;;;;25774:7;25782:1;25774:10;;;;;;;;;;;;;;25735:9;:50::i;:::-;25715:3;;25672:125;;;;25467:337:::0;;:::o;25321:138::-;-1:-1:-1;;;;;25434:16:0;;25387:7;25434:16;;;:7;:16;;;;;;25414:37;;:19;:37::i;9044:148::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;9151:1:::1;9135:6:::0;;9114:40:::1;::::0;-1:-1:-1;;;;;9135:6:0;;::::1;::::0;9114:40:::1;::::0;9151:1;;9114:40:::1;9182:1;9165:19:::0;;-1:-1:-1;;;;;;9165:19:0::1;::::0;;9044:148::o;22505:23::-;;;;:::o;22434:26::-;;;;:::o;38472:245::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;38582:3:::1;38567:5;:12;:18;38559:48;;;;-1:-1:-1::0;;;38559:48:0::1;;;;;;;:::i;:::-;38623:9;38618:92;38642:5;:12;38638:1;:16;38618:92;;;38693:5;38676:4;:14;38681:5;38687:1;38681:8;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;38676:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;38676:14:0;:22;;-1:-1:-1;;38676:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;38656:3:0::1;38618:92;;8402:79:::0;8440:7;8467:6;-1:-1:-1;;;;;8467:6:0;8402:79;:::o;22114:20::-;;;;;;;;;;;;;;;-1:-1:-1;;22114:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22467:31;;;;:::o;22694:36::-;;;-1:-1:-1;;;22694:36:0;;;;;:::o;35936:232::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;36033:32;:57;;-1:-1:-1;;;;;;36033:57:0::1;-1:-1:-1::0;;;;;36033:57:0;;::::1;;::::0;;;;36120:32:::1;-1:-1:-1::0;36101:52:0;;;:18:::1;:52;::::0;;;;:59;;-1:-1:-1;;36101:59:0::1;-1:-1:-1::0;36101:59:0::1;::::0;;35936:232::o;25812:167::-;25890:4;25907:42;25917:12;:10;:12::i;:::-;25931:9;25942:6;25907:9;:42::i;36413:167::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;36496:4:::1;36486:6;:14;;36478:57;;;;-1:-1:-1::0;;;36478:57:0::1;;;;;;;:::i;:::-;36546:17:::0;:26;36413:167::o;22323:26::-;;;-1:-1:-1;;;;;22323:26:0;;:::o;36295:110::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36367:22:0::1;36392:5;36367:22:::0;;;:18:::1;:22;::::0;;;;:30;;-1:-1:-1;;36367:30:0::1;::::0;;36295:110::o;25987:143::-;-1:-1:-1;;;;;26095:18:0;;;26068:7;26095:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;25987:143::o;26974:88::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;27033:14:::1;:21:::0;;-1:-1:-1;;;;27033:21:0::1;-1:-1:-1::0;;;27033:21:0::1;::::0;;26974:88::o;37719:130::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;37805:16:::1;:36:::0;37719:130::o;36588:188::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;36680:2:::1;36669:7;:13;;36661:62;;;;-1:-1:-1::0;;;36661:62:0::1;;;;;;;:::i;:::-;36734:24:::0;:34;36588:188::o;37601:110::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;37677:11:::1;:26:::0;37601:110::o;9347:244::-;8624:12;:10;:12::i;:::-;8614:6;;-1:-1:-1;;;;;8614:6:0;;;:22;;;8606:67;;;;-1:-1:-1;;;8606:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9436:22:0;::::1;9428:73;;;;-1:-1:-1::0;;;9428:73:0::1;;;;;;;:::i;:::-;9538:6;::::0;;9517:38:::1;::::0;-1:-1:-1;;;;;9517:38:0;;::::1;::::0;9538:6;::::1;::::0;9517:38:::1;::::0;::::1;9566:6;:17:::0;;-1:-1:-1;;;;;;9566:17:0::1;-1:-1:-1::0;;;;;9566:17:0;;;::::1;::::0;;;::::1;::::0;;9347:244::o;37193:400::-;37273:33;;-1:-1:-1;;;;;37273:33:0;37257:12;:10;:12::i;:::-;-1:-1:-1;;;;;37257:49:0;;:113;;;-1:-1:-1;37343:27:0;;-1:-1:-1;;;;;37343:27:0;37327:12;:10;:12::i;:::-;-1:-1:-1;;;;;37327:43:0;;37257:113;:182;;;-1:-1:-1;37407:32:0;;-1:-1:-1;;;;;37407:32:0;37391:12;:10;:12::i;:::-;-1:-1:-1;;;;;37391:48:0;;37257:182;37235:246;;;;-1:-1:-1;;;37235:246:0;;;;;;;:::i;:::-;37521:21;37553:32;37521:21;37553:12;:32::i;23242:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23242:33:0;;;;;;;;;;;;;;;;;;:::o;7041:106::-;7129:10;7041:106;:::o;27528:369::-;-1:-1:-1;;;;;27655:19:0;;27647:68;;;;-1:-1:-1;;;27647:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27734:21:0;;27726:68;;;;-1:-1:-1;;;27726:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27805:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;27857:32;;;;;27835:6;;27857:32;:::i;:::-;;;;;;;;27528:369;;;:::o;27905:2800::-;-1:-1:-1;;;;;28027:18:0;;28019:68;;;;-1:-1:-1;;;28019:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28106:16:0;;28098:64;;;;-1:-1:-1;;;28098:64:0;;;;;;;:::i;:::-;28190:1;28181:6;:10;28173:64;;;;-1:-1:-1;;;28173:64:0;;;;;;;:::i;:::-;28253:14;;-1:-1:-1;;;28253:14:0;;;;28248:216;;-1:-1:-1;;;;;28310:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;28338:22:0;;;;;;:18;:22;;;;;;;;28310:50;:83;;;-1:-1:-1;28383:9:0;28364:29;;;;:18;:29;;;;;;;;28310:83;28284:168;;;;-1:-1:-1;;;28284:168:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28483:10:0;;;;;;:4;:10;;;;;;;;28482:11;:31;;;;-1:-1:-1;28503:9:0;28498:15;;;;:4;:15;;;;;;;;28497:16;28482:31;28474:59;;;;-1:-1:-1;;;28474:59:0;;;;;;;:::i;:::-;28551:6;;-1:-1:-1;;;28551:6:0;;;;28546:1136;;28578:16;;-1:-1:-1;;;28578:16:0;;;;:57;;;;-1:-1:-1;28606:14:0;;-1:-1:-1;;;;;28606:14:0;28598:37;;28578:57;:80;;;;-1:-1:-1;28647:11:0;;-1:-1:-1;;;;;28639:19:0;;;28647:11;;28639:19;28578:80;28574:163;;;28679:14;;:42;;-1:-1:-1;;;28679:42:0;;-1:-1:-1;;;;;28679:14:0;;;;:24;;:42;;28704:4;;28710:2;;28714:6;;28679:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28574:163;28757:11;;:16;28753:233;;-1:-1:-1;;;;;28824:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;28852:22:0;;;;;;:18;:22;;;;;;;;28824:50;:75;;;;28888:11;;28878:6;:21;;28824:75;28794:176;;;;-1:-1:-1;;;28794:176:0;;;;;;;:::i;:::-;29006:16;;:21;29002:355;;-1:-1:-1;;;;;29078:24:0;;;;;;:18;:24;;;;;;;;;:75;;-1:-1:-1;;;;;;29131:22:0;;;;;;:18;:22;;;;;;;;29078:75;:121;;;-1:-1:-1;29188:11:0;;-1:-1:-1;;;;;29182:17:0;;;29188:11;;29182:17;29078:121;:192;;;;29254:16;;29244:6;29228:13;29238:2;29228:9;:13::i;:::-;:22;:42;;29078:192;29048:293;;;;-1:-1:-1;;;29048:293:0;;;;;;;:::i;:::-;29377:8;;:13;29373:298;;29447:11;;-1:-1:-1;;;;;29441:17:0;;;29447:11;;29441:17;;:82;;-1:-1:-1;29515:8:0;;-1:-1:-1;;;;;29462:32:0;;;;;;:28;:32;;;;;;29497:15;:26;;;;-1:-1:-1;29441:82:0;29411:175;;;;-1:-1:-1;;;29411:175:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29605:32:0;;;;;;:28;:32;;;;;29640:15;29605:50;;29373:298;29694:28;29725:24;29743:4;29725:9;:24::i;:::-;29767:6;;29694:55;;-1:-1:-1;;;;29767:6:0;;;;29766:7;:30;;;;-1:-1:-1;29785:11:0;;-1:-1:-1;;;;;29777:19:0;;;29785:11;;29777:19;;29766:30;:48;;;;-1:-1:-1;29800:14:0;;-1:-1:-1;;;29800:14:0;;;;29766:48;29762:462;;;29835:24;;29831:205;;29917:11;;29907:31;;29934:3;;29907:22;;-1:-1:-1;;;;;29917:11:0;29907:9;:22::i;:::-;:26;;:31::i;:::-;29884:20;:54;29880:141;;;29963:38;29980:20;29963:16;:38::i;:::-;30079:21;30119:22;;30115:98;;30162:35;30175:21;30162:12;:35::i;:::-;29762:462;;-1:-1:-1;;;;;30272:24:0;;30236:12;30272:24;;;:18;:24;;;;;;30251:4;;30272:24;;;:50;;-1:-1:-1;;;;;;30300:22:0;;;;;;:18;:22;;;;;;;;30272:50;30268:98;;;-1:-1:-1;30349:5:0;30268:98;30390:11;;-1:-1:-1;;;;;30382:19:0;;;30390:11;;30382:19;;;;:40;;-1:-1:-1;30411:11:0;;-1:-1:-1;;;;;30405:17:0;;;30411:11;;30405:17;;30382:40;30378:88;;;-1:-1:-1;30449:5:0;30378:88;30478:41;30493:4;30499:2;30503:6;30511:7;30478:14;:41::i;:::-;30536:7;:30;;;;-1:-1:-1;30555:11:0;;-1:-1:-1;;;;;30547:19:0;;;30555:11;;30547:19;30536:30;30532:71;;;30588:15;;30568:17;:35;30532:71;30618:7;:28;;;;-1:-1:-1;30635:11:0;;-1:-1:-1;;;;;30629:17:0;;;30635:11;;30629:17;30618:28;30614:83;;;30675:22;;30648:24;:49;30614:83;27905:2800;;;;;:::o;14146:226::-;14266:7;14302:12;14294:6;;;;14286:29;;;;-1:-1:-1;;;14286:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;14338:5:0;;;14146:226::o;30713:1007::-;23318:6;:13;;-1:-1:-1;;;;23318:13:0;-1:-1:-1;;;23318:13:0;;;30823::::1;::::0;30791:60:::1;::::0;30808:4:::1;::::0;-1:-1:-1;;;;;30823:13:0::1;30839:11:::0;30791:8:::1;:60::i;:::-;30866:17:::0;;-1:-1:-1;;;;;30866:17:0::1;30862:851;;30938:16;::::0;;30952:1:::1;30938:16:::0;;;30914:21:::1;30938:16:::0;;::::1;::::0;;30914:21;30938:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;30938:16:0::1;30914:40;;30987:4;30969;30974:1;30969:7;;;;;;;;-1:-1:-1::0;;;;;30969:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;31017:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;31017:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;30969:7;;31017:20;;;;;:13;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31007:4;31012:1;31007:7;;;;;;;;-1:-1:-1::0;;;;;31007:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;31052:13:::1;::::0;:218:::1;::::0;-1:-1:-1;;;31052:218:0;;:13;::::1;::::0;:64:::1;::::0;:218:::1;::::0;31135:11;;31052:13:::1;::::0;31185:4;;31216::::1;::::0;31240:15:::1;::::0;31052:218:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30862:851;;;;31327:16;::::0;;31341:1:::1;31327:16:::0;;;;;::::1;::::0;;;31303:21:::1;::::0;31327:16:::1;::::0;::::1;31303:21:::0;;31327:16:::1;::::0;::::1;;::::0;-1:-1:-1;31327:16:0::1;31303:40;;31376:4;31358;31363:1;31358:7;;;;;;;;-1:-1:-1::0;;;;;31358:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;31406:17;;31396:7;;31406:17;::::1;::::0;31396:4;;31406:17;;31396:7;::::1;;;;;-1:-1:-1::0;;;;;31396:27:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:27;;;;31448:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;31448:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;31396:7;;31448:20;;;;;:13;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31438:4;31443:1;31438:7;;;;;;;;-1:-1:-1::0;;;;;31438:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;31483:13:::1;::::0;:218:::1;::::0;-1:-1:-1;;;31483:218:0;;:13;::::1;::::0;:64:::1;::::0;:218:::1;::::0;31566:11;;31483:13:::1;::::0;31616:4;;31647::::1;::::0;31671:15:::1;::::0;31483:218:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30862:851;;-1:-1:-1::0;23354:6:0;:14;;-1:-1:-1;;;;23354:14:0;;;30713:1007::o;26712:254::-;26780:7;26819;;26808;:18;;26800:73;;;;-1:-1:-1;;;26800:73:0;;;;;;;:::i;:::-;26884:19;26906:10;:8;:10::i;:::-;26884:32;-1:-1:-1;26934:24:0;:7;26884:32;26934:11;:24::i;:::-;26927:31;26712:254;-1:-1:-1;;;26712:254:0:o;31728:456::-;31851:22;;31825:23;;31805:17;;31886:27;;31805:43;;;:68;;;;-1:-1:-1;;;;;31886:27:0;;;;:82;;31923:44;;:21;:6;31805:68;31923:10;:21::i;:::-;:25;;:44::i;:::-;31886:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31979:33:0;;32048:23;;-1:-1:-1;;;;;31979:33:0;;;;:94;;32022:50;;:21;:6;32033:9;32022:10;:21::i;:50::-;31979:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32084:32:0;;32152:22;;-1:-1:-1;;;;;32084:32:0;;;;:92;;32126:49;;:21;:6;32137:9;32126:10;:21::i;:49::-;32084:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15578:132;15636:7;15663:39;15667:1;15670;15663:39;;;;;;;;;;;;;;;;;:3;:39::i;32192:282::-;32348:7;32343:28;;32357:14;:12;:14::i;:::-;32382:44;32400:6;32408:9;32419:6;32382:17;:44::i;:::-;32442:7;32437:29;;32451:15;:13;:15::i;:::-;32192:282;;;;:::o;34287:164::-;34329:7;34350:15;34367;34386:19;:17;:19::i;:::-;34349:56;;-1:-1:-1;34349:56:0;-1:-1:-1;34423:20:0;34349:56;;34423:11;:20::i;:::-;34416:27;;;;34287:164;:::o;14631:471::-;14689:7;14934:6;14930:47;;-1:-1:-1;14964:1:0;14957:8;;14930:47;15001:5;;;15005:1;15001;:5;:1;15025:5;;;;;:10;15017:56;;;;-1:-1:-1;;;15017:56:0;;;;;;;:::i;16206:312::-;16326:7;16361:12;16354:5;16346:28;;;;-1:-1:-1;;;16346:28:0;;;;;;;;:::i;:::-;;16385:9;16401:1;16397;:5;;;;;;;16206:312;-1:-1:-1;;;;;16206:312:0:o;27070:295::-;27117:24;;:29;:55;;;;-1:-1:-1;27150:17:0;;:22;27117:55;27113:68;;;27174:7;;27113:68;27216:24;;;27191:22;:49;27269:17;;;27251:15;:35;-1:-1:-1;27297:28:0;;;;27336:21;27070:295;:::o;32482:618::-;32629:15;32659:23;32697:12;32724:23;32762:12;32789:16;32819:19;32830:7;32819:10;:19::i;:::-;-1:-1:-1;;;;;32867:15:0;;;;;;:7;:15;;;;;;32614:224;;-1:-1:-1;32614:224:0;;-1:-1:-1;32614:224:0;;-1:-1:-1;32614:224:0;-1:-1:-1;32614:224:0;-1:-1:-1;32614:224:0;-1:-1:-1;32867:28:0;;32614:224;32867:19;:28::i;:::-;-1:-1:-1;;;;;32849:15:0;;;;;;;:7;:15;;;;;;:46;;;;32927:18;;;;;;;:39;;32950:15;32927:22;:39::i;:::-;-1:-1:-1;;;;;32906:18:0;;;;;;:7;:18;;;;;:60;32979:19;32989:8;32979:9;:19::i;:::-;33009:23;33021:4;33027;33009:11;:23::i;:::-;33065:9;-1:-1:-1;;;;;33048:44:0;33057:6;-1:-1:-1;;;;;33048:44:0;;33076:15;33048:44;;;;;;:::i;:::-;;;;;;;;32482:618;;;;;;;;;:::o;27373:147::-;27444:22;;27417:24;:49;27497:15;;27477:17;:35;27373:147::o;34459:257::-;34557:7;;34593;;34510;;;;34625:20;34557:7;34593;34625:11;:20::i;:::-;34615:7;:30;34611:61;;;34655:7;;34664;;34647:25;;;;;;;;34611:61;34691:7;;-1:-1:-1;34700:7:0;-1:-1:-1;34459:257:0;;;:::o;33108:673::-;33208:7;33230;33252;33274;33296;33318;33354:23;33379:12;33393:16;33413:115;33439:7;33461:10;:24;;;33500:10;:17;;;33413:11;:115::i;:::-;33353:175;;;;;;33539:19;33561:10;:8;:10::i;:::-;33539:32;;33583:15;33600:23;33625:12;33641:49;33653:7;33662:4;33668:8;33678:11;33641;:49::i;:::-;33582:108;;-1:-1:-1;33582:108:0;-1:-1:-1;33582:108:0;-1:-1:-1;33741:15:0;;-1:-1:-1;33758:4:0;;-1:-1:-1;33764:8:0;;-1:-1:-1;;;;;33108:673:0;;;;;;;:::o;13707:136::-;13765:7;13792:43;13796:1;13799;13792:43;;;;;;;;;;;;;;;;;:3;:43::i;13243:181::-;13301:7;13333:5;;;13357:6;;;;13349:46;;;;-1:-1:-1;;;13349:46:0;;;;;;;:::i;35272:219::-;35328:19;35350:10;:8;:10::i;:::-;35328:32;-1:-1:-1;35371:13:0;35387:25;:8;35328:32;35387:12;:25::i;:::-;35466:4;35450:22;;;;:7;:22;;;;;;35371:41;;-1:-1:-1;35450:33:0;;35371:41;35450:26;:33::i;:::-;35441:4;35425:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;35272:219:0:o;35499:147::-;35577:7;;:17;;35589:4;35577:11;:17::i;:::-;35567:7;:27;35618:10;;:20;;35633:4;35618:14;:20::i;:::-;35605:10;:33;-1:-1:-1;;35499:147:0:o;33789:490::-;33963:7;;;;34057:35;34088:3;34057:26;:7;34069:13;34057:11;:26::i;:35::-;34042:50;-1:-1:-1;34103:16:0;34122:30;34146:5;34122:19;:7;34134:6;34122:11;:19::i;:30::-;34103:49;-1:-1:-1;34163:23:0;34189:31;34103:49;34189:17;:7;34201:4;34189:11;:17::i;:::-;:21;;:31::i;:::-;34163:57;34256:4;;-1:-1:-1;34262:8:0;;-1:-1:-1;33789:490:0;;-1:-1:-1;;;;;33789:490:0:o;34724:540::-;34921:7;;;;35018:24;:7;35030:11;35018;:24::i;:::-;35000:42;-1:-1:-1;35053:12:0;35068:21;:4;35077:11;35068:8;:21::i;:::-;35053:36;-1:-1:-1;35100:13:0;35116:25;:8;35129:11;35116:12;:25::i;:::-;35100:41;-1:-1:-1;35152:23:0;35178:28;35100:41;35178:17;:7;35190:4;35178:11;:17::i;:28::-;35225:7;;;;-1:-1:-1;35251:4:0;;-1:-1:-1;34724:540:0;;-1:-1:-1;;;;;;;34724:540:0:o;454:707:-1:-;;571:3;564:4;556:6;552:17;548:27;538:2;;-1:-1;;579:12;538:2;626:6;613:20;648:80;663:64;720:6;663:64;:::i;:::-;648:80;:::i;:::-;756:21;;;639:89;-1:-1;800:4;813:14;;;;788:17;;;902;;;893:27;;;;890:36;-1:-1;887:2;;;939:1;;929:12;887:2;964:1;949:206;974:6;971:1;968:13;949:206;;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1042:50;;1106:14;;;;1134;;;;996:1;989:9;949:206;;;953:14;;;;;531:630;;;;:::o;1902:124::-;1966:20;;30151:13;;30144:21;31676:32;;31666:2;;31722:1;;31712:12;2170:241;;2274:2;2262:9;2253:7;2249:23;2245:32;2242:2;;;-1:-1;;2280:12;2242:2;85:6;72:20;97:33;124:5;97:33;:::i;2418:263::-;;2533:2;2521:9;2512:7;2508:23;2504:32;2501:2;;;-1:-1;;2539:12;2501:2;226:6;220:13;238:33;265:5;238:33;:::i;2952:366::-;;;3073:2;3061:9;3052:7;3048:23;3044:32;3041:2;;;-1:-1;;3079:12;3041:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3131:63;-1:-1;3231:2;3270:22;;72:20;97:33;72:20;97:33;:::i;:::-;3239:63;;;;3035:283;;;;;:::o;3325:491::-;;;;3463:2;3451:9;3442:7;3438:23;3434:32;3431:2;;;-1:-1;;3469:12;3431:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3521:63;-1:-1;3621:2;3660:22;;72:20;97:33;72:20;97:33;:::i;:::-;3425:391;;3629:63;;-1:-1;;;3729:2;3768:22;;;;2100:20;;3425:391::o;3823:360::-;;;3941:2;3929:9;3920:7;3916:23;3912:32;3909:2;;;-1:-1;;3947:12;3909:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3999:63;-1:-1;4117:50;4159:7;4099:2;4135:22;;4117:50;:::i;:::-;4107:60;;3903:280;;;;;:::o;4190:366::-;;;4311:2;4299:9;4290:7;4286:23;4282:32;4279:2;;;-1:-1;;4317:12;4279:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4369:63;4469:2;4508:22;;;;2100:20;;-1:-1;;;4273:283::o;4563:638::-;;;4734:2;4722:9;4713:7;4709:23;4705:32;4702:2;;;-1:-1;;4740:12;4702:2;4798:17;4785:31;4836:18;;4828:6;4825:30;4822:2;;;-1:-1;;4858:12;4822:2;4888:78;4958:7;4949:6;4938:9;4934:22;4888:78;:::i;:::-;4878:88;;5031:2;;;;5020:9;5016:18;5003:32;4836:18;5047:6;5044:30;5041:2;;;-1:-1;;5077:12;5041:2;5153:22;;;-1:-1;1297:4;1285:17;;1281:27;-1:-1;1271:2;;-1:-1;;1312:12;1271:2;1359:6;1346:20;1381:80;1396:64;1453:6;1396:64;:::i;1381:80::-;1489:21;;;1546:14;;;;1521:17;;;1635;;;1626:27;;;;1623:36;-1:-1;1620:2;;;-1:-1;;1662:12;1620:2;-1:-1;1688:10;;1682:206;1707:6;1704:1;1701:13;1682:206;;;2100:20;;1775:50;;1729:1;1722:9;;;;;1839:14;;;;1867;;1682:206;;;1686:14;5097:88;;;;;;;;4696:505;;;;;:::o;5208:496::-;;;5351:2;5339:9;5330:7;5326:23;5322:32;5319:2;;;-1:-1;;5357:12;5319:2;5415:17;5402:31;5453:18;5445:6;5442:30;5439:2;;;-1:-1;;5475:12;5439:2;5505:78;5575:7;5566:6;5555:9;5551:22;5505:78;:::i;:::-;5495:88;;;5638:50;5680:7;5620:2;5660:9;5656:22;5638:50;:::i;5711:235::-;;5812:2;5800:9;5791:7;5787:23;5783:32;5780:2;;;-1:-1;;5818:12;5780:2;1979:6;1966:20;31701:5;30151:13;30144:21;31679:5;31676:32;31666:2;;-1:-1;;31712:12;5953:241;;6057:2;6045:9;6036:7;6032:23;6028:32;6025:2;;;-1:-1;;6063:12;6025:2;-1:-1;2100:20;;6019:175;-1:-1;6019:175::o;6201:491::-;;;;6339:2;6327:9;6318:7;6314:23;6310:32;6307:2;;;-1:-1;;6345:12;6307:2;-1:-1;;2100:20;;;6497:2;6536:22;;2100:20;;-1:-1;6605:2;6644:22;;;2100:20;;6301:391;-1:-1;6301:391::o;6881:142::-;-1:-1;;;;;30239:54;6960:58;;6954:69::o;15748:222::-;-1:-1;;;;;30239:54;;;;7117:45;;15875:2;15860:18;;15846:124::o;15977:444::-;-1:-1;;;;;30239:54;;;7117:45;;30239:54;;;;16324:2;16309:18;;7117:45;16407:2;16392:18;;15585:37;;;;16160:2;16145:18;;16131:290::o;16428:210::-;30151:13;;30144:21;8198:34;;16549:2;16534:18;;16520:118::o;16645:310::-;;16792:2;;16813:17;16806:47;8538:5;29237:12;29653:6;16792:2;16781:9;16777:18;29641:19;-1:-1;31047:101;31061:6;31058:1;31055:13;31047:101;;;31128:11;;;;;31122:18;31109:11;;;29681:14;31109:11;31102:39;31076:10;;31047:101;;;31163:6;31160:1;31157:13;31154:2;;;-1:-1;29681:14;31219:6;16781:9;31210:16;;31203:27;31154:2;-1:-1;31335:7;31319:14;-1:-1;;31315:28;8696:39;;;;29681:14;8696:39;;16763:192;-1:-1;;;16763:192::o;16962:416::-;17162:2;17176:47;;;8972:2;17147:18;;;29641:19;-1:-1;;;29681:14;;;8988:38;9045:12;;;17133:245::o;17385:416::-;17585:2;17599:47;;;9296:2;17570:18;;;29641:19;9332:34;29681:14;;;9312:55;-1:-1;;;9387:12;;;9380:27;9426:12;;;17556:245::o;17808:416::-;18008:2;18022:47;;;9677:2;17993:18;;;29641:19;9713:34;29681:14;;;9693:55;-1:-1;;;9768:12;;;9761:34;9814:12;;;17979:245::o;18231:416::-;18431:2;18445:47;;;10065:2;18416:18;;;29641:19;10101:34;29681:14;;;10081:55;-1:-1;;;10156:12;;;10149:30;10198:12;;;18402:245::o;18654:416::-;18854:2;18868:47;;;10449:2;18839:18;;;29641:19;10485:34;29681:14;;;10465:55;-1:-1;;;10540:12;;;10533:26;10578:12;;;18825:245::o;19077:416::-;19277:2;19291:47;;;10829:2;19262:18;;;29641:19;10865:29;29681:14;;;10845:50;10914:12;;;19248:245::o;19500:416::-;19700:2;19714:47;;;11165:2;19685:18;;;29641:19;11201:25;29681:14;;;11181:46;11246:12;;;19671:245::o;19923:416::-;20123:2;20137:47;;;11497:2;20108:18;;;29641:19;11533:34;29681:14;;;11513:55;-1:-1;;;11588:12;;;11581:25;11625:12;;;20094:245::o;20346:416::-;20546:2;20560:47;;;11876:2;20531:18;;;29641:19;-1:-1;;;29681:14;;;11892:40;11951:12;;;20517:245::o;20769:416::-;20969:2;20983:47;;;20954:18;;;29641:19;12238:34;29681:14;;;12218:55;12292:12;;;20940:245::o;21192:416::-;21392:2;21406:47;;;12543:2;21377:18;;;29641:19;12579:34;29681:14;;;12559:55;-1:-1;;;12634:12;;;12627:33;12679:12;;;21363:245::o;21615:416::-;21815:2;21829:47;;;12930:2;21800:18;;;29641:19;12966:34;29681:14;;;12946:55;-1:-1;;;13021:12;;;13014:29;13062:12;;;21786:245::o;22038:416::-;22238:2;22252:47;;;13313:2;22223:18;;;29641:19;13349:34;29681:14;;;13329:55;-1:-1;;;13404:12;;;13397:28;13444:12;;;22209:245::o;22461:416::-;22661:2;22675:47;;;13695:2;22646:18;;;29641:19;13731:29;29681:14;;;13711:50;13780:12;;;22632:245::o;22884:416::-;23084:2;23098:47;;;14031:2;23069:18;;;29641:19;14067:29;29681:14;;;14047:50;14116:12;;;23055:245::o;23307:416::-;23507:2;23521:47;;;14367:2;23492:18;;;29641:19;14403:32;29681:14;;;14383:53;14455:12;;;23478:245::o;23730:416::-;23930:2;23944:47;;;14706:2;23915:18;;;29641:19;-1:-1;;;29681:14;;;14722:42;14783:12;;;23901:245::o;24153:416::-;24353:2;24367:47;;;15034:2;24338:18;;;29641:19;15070:34;29681:14;;;15050:55;-1:-1;;;15125:12;;;15118:28;15165:12;;;24324:245::o;24576:416::-;24776:2;24790:47;;;15416:2;24761:18;;;29641:19;-1:-1;;;29681:14;;;15432:37;15488:12;;;24747:245::o;24999:222::-;15585:37;;;25126:2;25111:18;;25097:124::o;25228:848::-;;25533:3;25522:9;25518:19;15615:5;15592:3;15585:37;25706:2;30695:24;25706:2;25695:9;25691:18;8323:58;25533:3;25743:2;25732:9;25728:18;25721:48;25783:108;7628:5;29237:12;29653:6;29648:3;29641:19;29681:14;25522:9;29681:14;7640:93;;25706:2;7804:5;29091:14;7816:21;;-1:-1;7843:260;7868:6;7865:1;7862:13;7843:260;;;7929:13;;-1:-1;;;;;30239:54;6960:58;;29496:14;;;;6853;;;;4836:18;7883:9;7843:260;;;-1:-1;;;;;;;30239:54;;;;25978:2;25963:18;;6960:58;-1:-1;;;26061:3;26046:19;15585:37;25775:116;25504:572;-1:-1;;;25504:572::o;26083:1780::-;15585:37;;;26791:2;26776:18;;15585:37;;;26874:2;26859:18;;15585:37;;;26957:2;26942:18;;15585:37;;;27040:3;27025:19;;15585:37;;;27124:3;27109:19;;15585:37;;;27208:3;27193:19;;15585:37;;;27292:3;27277:19;;15585:37;;;27376:3;27361:19;;15585:37;;;-1:-1;;;;;30239:54;;;27460:3;27445:19;;6960:58;30239:54;;;27545:3;27530:19;;6960:58;30239:54;;27646:3;27631:19;;6960:58;26626:3;26611:19;;27662:90;27747:3;27732:19;;27722:7;27662:90;:::i;:::-;27763;27848:3;27837:9;27833:19;27823:7;27763:90;:::i;:::-;26597:1266;;;;;;;;;;;;;;;;;:::o;27870:214::-;30455:4;30444:16;;;;15701:35;;27993:2;27978:18;;27964:120::o;28091:256::-;28153:2;28147:9;28179:17;;;28254:18;28239:34;;28275:22;;;28236:62;28233:2;;;28311:1;;28301:12;28233:2;28153;28320:22;28131:216;;-1:-1;28131:216::o;28354:304::-;;28513:18;28505:6;28502:30;28499:2;;;-1:-1;;28535:12;28499:2;-1:-1;28580:4;28568:17;;;28633:15;;28436:222::o;31356:117::-;-1:-1;;;;;30239:54;;31415:35;;31405:2;;31464:1;;31454:12

Swarm Source

ipfs://853e907cd6b98197f1b5a8f970fb085fd66b683cfe06c071b9de25669758c4d0
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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