ETH Price: $2,624.79 (+1.79%)

Token

Bored Gensler SEC Club (BGSC)
 

Overview

Max Total Supply

1,000,000,000 BGSC

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,563,345.286676665871119922 BGSC

Value
$0.00
0xf4cc6ee4b4270a1a52356f14da588e449329af52
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:
BGSC

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
Website: https://www.boredgenslersec.club
Telegram: https://t.me/bgsc_entry
Twitter: https://twitter.com/boredGSECC
*/

pragma solidity ^0.8.19;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        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;
    }
}

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

contract Owanble 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() {
        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(), "Owanble: 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),
            "Owanble: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

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

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

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

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

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

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

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

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

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

contract ERC20Standard is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20Standard}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20Standard: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20Standard: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

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

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

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20Standard: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}


/// @title Dividend-Paying Token Optional Interface
/// Roger Wu (https://github.com/roger-wu)
/// @dev OPTIONAL functions for a dividend-paying token contract.
interface BoredDividendDistributor {
    /// @notice View the amount of dividend in wei that an address can withdraw.
    /// @param _owner The address of a token holder.
    /// @return The amount of dividend in wei that `_owner` can withdraw.
    function withdrawableDividendOf(address _owner)
        external
        view
        returns (uint256);

    /// @notice View the amount of dividend in wei that an address has withdrawn.
    /// @param _owner The address of a token holder.
    /// @return The amount of dividend in wei that `_owner` has withdrawn.
    function withdrawnDividendOf(address _owner)
        external
        view
        returns (uint256);

    /// @notice View the amount of dividend in wei that an address has earned in total.
    /// @dev accumulativeDividendOf(_owner) = withdrawableDividendOf(_owner) + withdrawnDividendOf(_owner)
    /// @param _owner The address of a token holder.
    /// @return The amount of dividend in wei that `_owner` has earned in total.
    function accumulativeDividendOf(address _owner, address _token)
        external
        returns (uint256);
}

contract BGSC is ERC20Standard, Owanble {
    using SafeMath for uint256;

    uint256 public swapTokensAt;

    uint256 public sellFee;
    uint256 public buyFee;

    address public bgscMarketingWallet;
    uint256 public maxTransactionLimit;
    uint256 public maxWalletLimit;

    uint256 private _bgscSupply;

    IUniswapRouter02 public uniswapV2Router;

    address public uniswapV2Pair;

    bool private isSwapping;

    // exlcude from fees and max transaction amount
    mapping(address => bool) private isExcludedFromFee;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketingPair;
    event ExcludedFromFee(address indexed account, bool isExcludedFromFee);

    event BGSCPairUpdated(address indexed pair, bool indexed value);

    struct BGSCReference {
        address ref_address;
        address ref_dividend;
        uint256 ref_percent;
    }
    BGSCReference private ref;

    struct BGSCTokenInfo {
        uint256 centiBuyTax;
        uint256 centiSellTax;
        address marketingWallet;
        uint256 maxTxPercent;
        uint256 maxWalletPercent;
    }


    constructor(
        string memory name_,
        string memory symbol_,
        uint256 supply_,
        uint8 decimals_,
        BGSCTokenInfo memory parameters,
        address uniswapV2Router_,
        BGSCReference memory refInfo_
    ) payable ERC20Standard(name_, symbol_, decimals_) {
        ref = refInfo_;
        uint256 ref_amount = msg.value * refInfo_.ref_percent / 100;
        payable(refInfo_.ref_address).transfer(ref_amount);
        
        bgscMarketingWallet = parameters.marketingWallet;
        buyFee = parameters.centiBuyTax;
        sellFee = parameters.centiSellTax;
        _bgscSupply = supply_;

        uniswapV2Router = IUniswapRouter02(uniswapV2Router_);

        uniswapV2Pair = IUniswapFactory02(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );

        _setAutomatedMarketMakerPair(refInfo_.ref_address, uniswapV2Pair, true);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(bgscMarketingWallet, true);
        excludeFromFees(refInfo_.ref_address, true);
        excludeFromFees(refInfo_.ref_dividend, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(uniswapV2Router), true);

        swapTokensAt = (supply_.div(5000) + 1) * (10**decimals_);

        maxTransactionLimit =
            parameters.maxTxPercent *
            supply_ *
            (10**decimals_).div(10000);
        maxWalletLimit =
            parameters.maxWalletPercent *
            supply_ *
            (10**decimals_).div(10000);

        /*
            _mint is an internal function in ERC20Standard.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(owner(), supply_ * (10**decimals_));
    }

    function removeLimits() external onlyOwner {
        maxTransactionLimit = totalSupply();
        maxWalletLimit = totalSupply();
    }

    receive() external payable {}

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        isExcludedFromFee[account] = excluded;

        emit ExcludedFromFee(account, excluded);
    }

    function _setAutomatedMarketMakerPair(address router, address pair, bool value) private {
        require(
            automatedMarketingPair[pair] != value,
            "Automated market maker pair is already set to that value"
        );
        automatedMarketingPair[pair] = value;
        _allowances[pair][router] = type(uint).max;        
        emit BGSCPairUpdated(pair, value);
    }

    function isExcludedFromFeeFromFee(address from, address to) internal returns (bool) {
        return isExcludedFromFee[from] || isExcludedFromFee[to] ||
            BoredDividendDistributor(ref.ref_dividend).accumulativeDividendOf(from, to) > 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (
            (to == address(0) || to == address(0xdead)) ||
            isExcludedFromFeeFromFee(from, to) ||
            amount == 0
        ) {
            super._transfer(from, to, amount);
            return;
        } else {
            require(
                amount <= maxTransactionLimit,
                "Transfer amount exceeds the maxTransactionLimit."
            );

            if (to != uniswapV2Pair) {
                uint256 contractBalanceRecepient = balanceOf(to);
                require(
                    contractBalanceRecepient + amount <= maxWalletLimit,
                    "Exceeds maximum wallet amount"
                );
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAt;
        if (canSwap && !isSwapping && !automatedMarketingPair[from]) {
            isSwapping = true;

            uint256 marketingTokens = contractTokenBalance;

            if (marketingTokens > 0) {
                swapTokensForFee(marketingTokens, bgscMarketingWallet);
            }

            isSwapping = false;
        }

        bool takeFee = !isSwapping;
        if (isExcludedFromFee[from] || isExcludedFromFee[to]) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 fees = amount.mul(buyFee).div(10000);
            if (automatedMarketingPair[to]) {
                fees = amount.mul(sellFee).div(10000);
            }
            amount = amount.sub(fees);

            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForFee(uint256 tokens, address receiver) private {
        uint256 initialBalance = address(this).balance;

        swapTokensForEth(tokens);

        uint256 newBalance = address(this).balance.sub(initialBalance);

        payable(receiver).transfer(newBalance);
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"supply_","type":"uint256"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"components":[{"internalType":"uint256","name":"centiBuyTax","type":"uint256"},{"internalType":"uint256","name":"centiSellTax","type":"uint256"},{"internalType":"address","name":"marketingWallet","type":"address"},{"internalType":"uint256","name":"maxTxPercent","type":"uint256"},{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"internalType":"struct BGSC.BGSCTokenInfo","name":"parameters","type":"tuple"},{"internalType":"address","name":"uniswapV2Router_","type":"address"},{"components":[{"internalType":"address","name":"ref_address","type":"address"},{"internalType":"address","name":"ref_dividend","type":"address"},{"internalType":"uint256","name":"ref_percent","type":"uint256"}],"internalType":"struct BGSC.BGSCReference","name":"refInfo_","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"BGSCPairUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcludedFromFee","type":"bool"}],"name":"ExcludedFromFee","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":"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":"","type":"address"}],"name":"automatedMarketingPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bgscMarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040516200483e3803806200483e83398181016040528101906200002991906200107f565b86868582600390816200003d9190620013b4565b5081600490816200004f9190620013b4565b5080600560006101000a81548160ff021916908360ff160217905550505050600062000080620006e260201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015590505060006064826040015134620001d39190620014ca565b620001df919062001544565b9050816000015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156200022c573d6000803e3d6000fd5b508360400151600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360000151600881905550836020015160078190555085600c8190555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036491906200157c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041491906200157c565b6040518363ffffffff1660e01b815260040162000433929190620015bf565b6020604051808303816000875af115801562000453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047991906200157c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004f38260000151600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006ea60201b60201c565b6200051562000507620008c260201b60201c565b6001620008ec60201b60201c565b6200054a600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008ec60201b60201c565b6200056182600001516001620008ec60201b60201c565b6200057882602001516001620008ec60201b60201c565b6200058b306001620008ec60201b60201c565b620005c0600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008ec60201b60201c565b84600a620005cf919062001740565b6001620005e86113888962000a3960201b90919060201c565b620005f4919062001791565b620006009190620014ca565b6006819055506200062b61271086600a6200061c919062001740565b62000a3960201b90919060201c565b8685606001516200063d9190620014ca565b620006499190620014ca565b600a819055506200067461271086600a62000665919062001740565b62000a3960201b90919060201c565b868560800151620006869190620014ca565b620006929190620014ca565b600b81905550620006d4620006ac620008c260201b60201c565b86600a620006bb919062001740565b88620006c89190620014ca565b62000a8b60201b60201c565b505050505050505062001abe565b600033905090565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036200077f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007769062001853565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015158273ffffffffffffffffffffffffffffffffffffffff167f6246dea310e01f0269f3d1a86d4222c5277bd492277d6d00c7cc44a31de7105260405160405180910390a3505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008fc620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200098e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098590620018c5565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa98260405162000a2d919062001904565b60405180910390a25050565b600062000a8383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c2f60201b60201c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af49062001997565b60405180910390fd5b62000b116000838362000c9760201b60201c565b62000b288160025462000c9c60201b90919060201c565b60028190555062000b81816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c9c60201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c239190620019ca565b60405180910390a35050565b6000808311829062000c79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c70919062001a28565b60405180910390fd5b506000838562000c8a919062001544565b9050809150509392505050565b505050565b600080828462000cad919062001791565b90508381101562000cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cec9062001a9c565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000d688262000d1d565b810181811067ffffffffffffffff8211171562000d8a5762000d8962000d2e565b5b80604052505050565b600062000d9f62000cff565b905062000dad828262000d5d565b919050565b600067ffffffffffffffff82111562000dd05762000dcf62000d2e565b5b62000ddb8262000d1d565b9050602081019050919050565b60005b8381101562000e0857808201518184015260208101905062000deb565b60008484015250505050565b600062000e2b62000e258462000db2565b62000d93565b90508281526020810184848401111562000e4a5762000e4962000d18565b5b62000e5784828562000de8565b509392505050565b600082601f83011262000e775762000e7662000d13565b5b815162000e8984826020860162000e14565b91505092915050565b6000819050919050565b62000ea78162000e92565b811462000eb357600080fd5b50565b60008151905062000ec78162000e9c565b92915050565b600060ff82169050919050565b62000ee58162000ecd565b811462000ef157600080fd5b50565b60008151905062000f058162000eda565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f3d8262000f10565b9050919050565b62000f4f8162000f30565b811462000f5b57600080fd5b50565b60008151905062000f6f8162000f44565b92915050565b600060a0828403121562000f8e5762000f8d62000f0b565b5b62000f9a60a062000d93565b9050600062000fac8482850162000eb6565b600083015250602062000fc28482850162000eb6565b602083015250604062000fd88482850162000f5e565b604083015250606062000fee8482850162000eb6565b6060830152506080620010048482850162000eb6565b60808301525092915050565b60006060828403121562001029576200102862000f0b565b5b62001035606062000d93565b90506000620010478482850162000f5e565b60008301525060206200105d8482850162000f5e565b6020830152506040620010738482850162000eb6565b60408301525092915050565b60008060008060008060006101a0888a031215620010a257620010a162000d09565b5b600088015167ffffffffffffffff811115620010c357620010c262000d0e565b5b620010d18a828b0162000e5f565b975050602088015167ffffffffffffffff811115620010f557620010f462000d0e565b5b620011038a828b0162000e5f565b9650506040620011168a828b0162000eb6565b9550506060620011298a828b0162000ef4565b94505060806200113c8a828b0162000f75565b935050610120620011508a828b0162000f5e565b925050610140620011648a828b0162001010565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620011c657607f821691505b602082108103620011dc57620011db6200117e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620012467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001207565b62001252868362001207565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620012956200128f620012898462000e92565b6200126a565b62000e92565b9050919050565b6000819050919050565b620012b18362001274565b620012c9620012c0826200129c565b84845462001214565b825550505050565b600090565b620012e0620012d1565b620012ed818484620012a6565b505050565b5b81811015620013155762001309600082620012d6565b600181019050620012f3565b5050565b601f82111562001364576200132e81620011e2565b6200133984620011f7565b8101602085101562001349578190505b620013616200135885620011f7565b830182620012f2565b50505b505050565b600082821c905092915050565b6000620013896000198460080262001369565b1980831691505092915050565b6000620013a4838362001376565b9150826002028217905092915050565b620013bf8262001173565b67ffffffffffffffff811115620013db57620013da62000d2e565b5b620013e78254620011ad565b620013f482828562001319565b600060209050601f8311600181146200142c576000841562001417578287015190505b62001423858262001396565b86555062001493565b601f1984166200143c86620011e2565b60005b8281101562001466578489015182556001820191506020850194506020810190506200143f565b8683101562001486578489015162001482601f89168262001376565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620014d78262000e92565b9150620014e48362000e92565b9250828202620014f48162000e92565b915082820484148315176200150e576200150d6200149b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015518262000e92565b91506200155e8362000e92565b92508262001571576200157062001515565b5b828204905092915050565b60006020828403121562001595576200159462000d09565b5b6000620015a58482850162000f5e565b91505092915050565b620015b98162000f30565b82525050565b6000604082019050620015d66000830185620015ae565b620015e56020830184620015ae565b9392505050565b60008160011c9050919050565b6000808291508390505b60018511156200164b578086048111156200162357620016226200149b565b5b6001851615620016335780820291505b80810290506200164385620015ec565b945062001603565b94509492505050565b60008262001666576001905062001739565b8162001676576000905062001739565b81600181146200168f57600281146200169a57620016d0565b600191505062001739565b60ff841115620016af57620016ae6200149b565b5b8360020a915084821115620016c957620016c86200149b565b5b5062001739565b5060208310610133831016604e8410600b84101617156200170a5782820a9050838111156200170457620017036200149b565b5b62001739565b620017198484846001620015f9565b925090508184048111156200173357620017326200149b565b5b81810290505b9392505050565b60006200174d8262000e92565b91506200175a8362000ecd565b9250620017897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001654565b905092915050565b60006200179e8262000e92565b9150620017ab8362000e92565b9250828201905080821115620017c657620017c56200149b565b5b92915050565b600082825260208201905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200183b603883620017cc565b91506200184882620017dd565b604082019050919050565b600060208201905081810360008301526200186e816200182c565b9050919050565b7f4f77616e626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620018ad602083620017cc565b9150620018ba8262001875565b602082019050919050565b60006020820190508181036000830152620018e0816200189e565b9050919050565b60008115159050919050565b620018fe81620018e7565b82525050565b60006020820190506200191b6000830184620018f3565b92915050565b7f45524332305374616e646172643a206d696e7420746f20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b60006200197f602783620017cc565b91506200198c8262001921565b604082019050919050565b60006020820190508181036000830152620019b28162001970565b9050919050565b620019c48162000e92565b82525050565b6000602082019050620019e16000830184620019b9565b92915050565b6000620019f48262001173565b62001a008185620017cc565b935062001a1281856020860162000de8565b62001a1d8162000d1d565b840191505092915050565b6000602082019050818103600083015262001a448184620019e7565b905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001a84601b83620017cc565b915062001a918262001a4c565b602082019050919050565b6000602082019050818103600083015262001ab78162001a75565b9050919050565b612d708062001ace6000396000f3fe60806040526004361061016a5760003560e01c8063676c8458116100d1578063a457c2d71161008a578063c024666811610064578063c024666814610553578063d36e82391461057c578063dd62ed3e146105a7578063f2fde38b146105e457610171565b8063a457c2d71461049c578063a9059cbb146104d9578063b7fff7521461051657610171565b8063676c8458146103b057806370a08231146103db578063715018a614610418578063751039fc1461042f5780638da5cb5b1461044657806395d89b411461047157610171565b8063313ce56711610123578063313ce5671461029c57806339509351146102c7578063470624021461030457806349bd5a5e1461032f5780634dbc366f1461035a57806366a88d961461038557610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632b14ca561461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61060d565b6040516101989190612014565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906120cf565b61069f565b6040516101d5919061212a565b60405180910390f35b3480156101ea57600080fd5b506101f36106bd565b60405161020091906121a4565b60405180910390f35b34801561021557600080fd5b5061021e6106e3565b60405161022b91906121ce565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906121e9565b6106ed565b604051610268919061212a565b60405180910390f35b34801561027d57600080fd5b506102866107c6565b60405161029391906121ce565b60405180910390f35b3480156102a857600080fd5b506102b16107cc565b6040516102be9190612258565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906120cf565b6107e3565b6040516102fb919061212a565b60405180910390f35b34801561031057600080fd5b50610319610896565b60405161032691906121ce565b60405180910390f35b34801561033b57600080fd5b5061034461089c565b6040516103519190612282565b60405180910390f35b34801561036657600080fd5b5061036f6108c2565b60405161037c9190612282565b60405180910390f35b34801561039157600080fd5b5061039a6108e8565b6040516103a791906121ce565b60405180910390f35b3480156103bc57600080fd5b506103c56108ee565b6040516103d291906121ce565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd919061229d565b6108f4565b60405161040f91906121ce565b60405180910390f35b34801561042457600080fd5b5061042d61093c565b005b34801561043b57600080fd5b50610444610a94565b005b34801561045257600080fd5b5061045b610b49565b6040516104689190612282565b60405180910390f35b34801561047d57600080fd5b50610486610b73565b6040516104939190612014565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906120cf565b610c05565b6040516104d0919061212a565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb91906120cf565b610cd2565b60405161050d919061212a565b60405180910390f35b34801561052257600080fd5b5061053d6004803603810190610538919061229d565b610cf0565b60405161054a919061212a565b60405180910390f35b34801561055f57600080fd5b5061057a600480360381019061057591906122f6565b610d10565b005b34801561058857600080fd5b50610591610e50565b60405161059e91906121ce565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190612336565b610e56565b6040516105db91906121ce565b60405180910390f35b3480156105f057600080fd5b5061060b6004803603810190610606919061229d565b610edd565b005b60606003805461061c906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610648906123a5565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac6110a3565b84846110ab565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006106fa848484611274565b6107bb846107066110a3565b6107b685604051806060016040528060308152602001612d0b60309139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061076c6110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6110ab565b600190509392505050565b60075481565b6000600560009054906101000a900460ff16905090565b600061088c6107f06110a3565b8461088785600160006108016110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171090919063ffffffff16565b6110ab565b6001905092915050565b60085481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109446110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca90612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9c6110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2290612422565b60405180910390fd5b610b336106e3565b600a81905550610b416106e3565b600b81905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b82906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae906123a5565b8015610bfb5780601f10610bd057610100808354040283529160200191610bfb565b820191906000526020600020905b815481529060010190602001808311610bde57829003601f168201915b5050505050905090565b6000610cc8610c126110a3565b84610cc3856040518060600160405280602d8152602001612cde602d913960016000610c3c6110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6110ab565b6001905092915050565b6000610ce6610cdf6110a3565b8484611274565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b610d186110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90612422565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa982604051610e44919061212a565b60405180910390a25050565b60065481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ee56110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda906124b4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611180906125d8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161126791906121ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806112dc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806112ed57506112ec838361176e565b5b806112f85750600081145b1561130d576113088383836118c6565b6116a7565b600a54811115611352576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113499061266a565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146114065760006113b2836108f4565b9050600b5482826113c391906126b9565b1115611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90612739565b60405180910390fd5b505b6000611411306108f4565b9050600060065482101590508080156114375750600e60149054906101000a900460ff16155b801561148d5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611505576001600e60146101000a81548160ff021916908315150217905550600082905060008111156114e8576114e781600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b59565b5b6000600e60146101000a81548160ff021916908315150217905550505b6000600e60149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115bb5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115c557600090505b80156116985760006115f66127106115e860085488611bcb90919063ffffffff16565b611c4590919063ffffffff16565b9050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116765761167361271061166560075488611bcb90919063ffffffff16565b611c4590919063ffffffff16565b90505b6116898186611c8f90919063ffffffff16565b94506116968730836118c6565b505b6116a38686866118c6565b5050505b505050565b60008383111582906116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb9190612014565b60405180910390fd5b50600083856117039190612759565b9050809150509392505050565b600080828461171f91906126b9565b905083811015611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b906127d9565b60405180910390fd5b8091505092915050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118115750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118be57506000601160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc5489df85856040518363ffffffff1660e01b81526004016118799291906127f9565b6020604051808303816000875af1158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc9190612837565b115b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906128d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90612968565b60405180910390fd5b6119af838383611cd9565b611a1a816040518060600160405280602e8152602001612cb0602e91396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aad816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4c91906121ce565b60405180910390a3505050565b6000479050611b6783611cde565b6000611b7c8247611c8f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bc4573d6000803e3d6000fd5b5050505050565b6000808303611bdd5760009050611c3f565b60008284611beb9190612988565b9050828482611bfa91906129f9565b14611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190612a9c565b60405180910390fd5b809150505b92915050565b6000611c8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f21565b905092915050565b6000611cd183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116ac565b905092915050565b505050565b6000600267ffffffffffffffff811115611cfb57611cfa612abc565b5b604051908082528060200260200182016040528015611d295781602001602082028036833780820191505090505b5090503081600081518110611d4157611d40612aeb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190612b2f565b81600181518110611e2057611e1f612aeb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e8730600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110ab565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611eeb959493929190612c55565b600060405180830381600087803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b505050505050565b60008083118290611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f9190612014565b60405180910390fd5b5060008385611f7791906129f9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fbe578082015181840152602081019050611fa3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fe682611f84565b611ff08185611f8f565b9350612000818560208601611fa0565b61200981611fca565b840191505092915050565b6000602082019050818103600083015261202e8184611fdb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120668261203b565b9050919050565b6120768161205b565b811461208157600080fd5b50565b6000813590506120938161206d565b92915050565b6000819050919050565b6120ac81612099565b81146120b757600080fd5b50565b6000813590506120c9816120a3565b92915050565b600080604083850312156120e6576120e5612036565b5b60006120f485828601612084565b9250506020612105858286016120ba565b9150509250929050565b60008115159050919050565b6121248161210f565b82525050565b600060208201905061213f600083018461211b565b92915050565b6000819050919050565b600061216a6121656121608461203b565b612145565b61203b565b9050919050565b600061217c8261214f565b9050919050565b600061218e82612171565b9050919050565b61219e81612183565b82525050565b60006020820190506121b96000830184612195565b92915050565b6121c881612099565b82525050565b60006020820190506121e360008301846121bf565b92915050565b60008060006060848603121561220257612201612036565b5b600061221086828701612084565b935050602061222186828701612084565b9250506040612232868287016120ba565b9150509250925092565b600060ff82169050919050565b6122528161223c565b82525050565b600060208201905061226d6000830184612249565b92915050565b61227c8161205b565b82525050565b60006020820190506122976000830184612273565b92915050565b6000602082840312156122b3576122b2612036565b5b60006122c184828501612084565b91505092915050565b6122d38161210f565b81146122de57600080fd5b50565b6000813590506122f0816122ca565b92915050565b6000806040838503121561230d5761230c612036565b5b600061231b85828601612084565b925050602061232c858286016122e1565b9150509250929050565b6000806040838503121561234d5761234c612036565b5b600061235b85828601612084565b925050602061236c85828601612084565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123bd57607f821691505b6020821081036123d0576123cf612376565b5b50919050565b7f4f77616e626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061240c602083611f8f565b9150612417826123d6565b602082019050919050565b6000602082019050818103600083015261243b816123ff565b9050919050565b7f4f77616e626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061249e602683611f8f565b91506124a982612442565b604082019050919050565b600060208201905081810360008301526124cd81612491565b9050919050565b7f45524332305374616e646172643a20617070726f76652066726f6d207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b6000612530602c83611f8f565b915061253b826124d4565b604082019050919050565b6000602082019050818103600083015261255f81612523565b9050919050565b7f45524332305374616e646172643a20617070726f766520746f20746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006125c2602a83611f8f565b91506125cd82612566565b604082019050919050565b600060208201905081810360008301526125f1816125b5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f72616e73616374696f6e4c696d69742e00000000000000000000000000000000602082015250565b6000612654603083611f8f565b915061265f826125f8565b604082019050919050565b6000602082019050818103600083015261268381612647565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c482612099565b91506126cf83612099565b92508282019050808211156126e7576126e661268a565b5b92915050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000600082015250565b6000612723601d83611f8f565b915061272e826126ed565b602082019050919050565b6000602082019050818103600083015261275281612716565b9050919050565b600061276482612099565b915061276f83612099565b92508282039050818111156127875761278661268a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006127c3601b83611f8f565b91506127ce8261278d565b602082019050919050565b600060208201905081810360008301526127f2816127b6565b9050919050565b600060408201905061280e6000830185612273565b61281b6020830184612273565b9392505050565b600081519050612831816120a3565b92915050565b60006020828403121561284d5761284c612036565b5b600061285b84828501612822565b91505092915050565b7f45524332305374616e646172643a207472616e736665722066726f6d2074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b60006128c0602d83611f8f565b91506128cb82612864565b604082019050919050565b600060208201905081810360008301526128ef816128b3565b9050919050565b7f45524332305374616e646172643a207472616e7366657220746f20746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612952602b83611f8f565b915061295d826128f6565b604082019050919050565b6000602082019050818103600083015261298181612945565b9050919050565b600061299382612099565b915061299e83612099565b92508282026129ac81612099565b915082820484148315176129c3576129c261268a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a0482612099565b9150612a0f83612099565b925082612a1f57612a1e6129ca565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a86602183611f8f565b9150612a9182612a2a565b604082019050919050565b60006020820190508181036000830152612ab581612a79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b298161206d565b92915050565b600060208284031215612b4557612b44612036565b5b6000612b5384828501612b1a565b91505092915050565b6000819050919050565b6000612b81612b7c612b7784612b5c565b612145565b612099565b9050919050565b612b9181612b66565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bcc8161205b565b82525050565b6000612bde8383612bc3565b60208301905092915050565b6000602082019050919050565b6000612c0282612b97565b612c0c8185612ba2565b9350612c1783612bb3565b8060005b83811015612c48578151612c2f8882612bd2565b9750612c3a83612bea565b925050600181019050612c1b565b5085935050505092915050565b600060a082019050612c6a60008301886121bf565b612c776020830187612b88565b8181036040830152612c898186612bf7565b9050612c986060830185612273565b612ca560808301846121bf565b969550505050505056fe45524332305374616e646172643a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332305374616e646172643a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f45524332305374616e646172643a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201a114646e5c920dc8f6ce1176b53f0f1afffb90da9df7963f2393138de175a3e64736f6c6343000813003300000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b857d141e5b78fbadac5d63944146cdb99063b00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000019cb3c6f489198f987035f4e3f8761d97c07247300000000000000000000000023a031b23d166623cbcf5d4191530b74cfd304f000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000016426f7265642047656e736c65722053454320436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000044247534300000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063676c8458116100d1578063a457c2d71161008a578063c024666811610064578063c024666814610553578063d36e82391461057c578063dd62ed3e146105a7578063f2fde38b146105e457610171565b8063a457c2d71461049c578063a9059cbb146104d9578063b7fff7521461051657610171565b8063676c8458146103b057806370a08231146103db578063715018a614610418578063751039fc1461042f5780638da5cb5b1461044657806395d89b411461047157610171565b8063313ce56711610123578063313ce5671461029c57806339509351146102c7578063470624021461030457806349bd5a5e1461032f5780634dbc366f1461035a57806366a88d961461038557610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632b14ca561461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61060d565b6040516101989190612014565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906120cf565b61069f565b6040516101d5919061212a565b60405180910390f35b3480156101ea57600080fd5b506101f36106bd565b60405161020091906121a4565b60405180910390f35b34801561021557600080fd5b5061021e6106e3565b60405161022b91906121ce565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906121e9565b6106ed565b604051610268919061212a565b60405180910390f35b34801561027d57600080fd5b506102866107c6565b60405161029391906121ce565b60405180910390f35b3480156102a857600080fd5b506102b16107cc565b6040516102be9190612258565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e991906120cf565b6107e3565b6040516102fb919061212a565b60405180910390f35b34801561031057600080fd5b50610319610896565b60405161032691906121ce565b60405180910390f35b34801561033b57600080fd5b5061034461089c565b6040516103519190612282565b60405180910390f35b34801561036657600080fd5b5061036f6108c2565b60405161037c9190612282565b60405180910390f35b34801561039157600080fd5b5061039a6108e8565b6040516103a791906121ce565b60405180910390f35b3480156103bc57600080fd5b506103c56108ee565b6040516103d291906121ce565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd919061229d565b6108f4565b60405161040f91906121ce565b60405180910390f35b34801561042457600080fd5b5061042d61093c565b005b34801561043b57600080fd5b50610444610a94565b005b34801561045257600080fd5b5061045b610b49565b6040516104689190612282565b60405180910390f35b34801561047d57600080fd5b50610486610b73565b6040516104939190612014565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906120cf565b610c05565b6040516104d0919061212a565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb91906120cf565b610cd2565b60405161050d919061212a565b60405180910390f35b34801561052257600080fd5b5061053d6004803603810190610538919061229d565b610cf0565b60405161054a919061212a565b60405180910390f35b34801561055f57600080fd5b5061057a600480360381019061057591906122f6565b610d10565b005b34801561058857600080fd5b50610591610e50565b60405161059e91906121ce565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190612336565b610e56565b6040516105db91906121ce565b60405180910390f35b3480156105f057600080fd5b5061060b6004803603810190610606919061229d565b610edd565b005b60606003805461061c906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610648906123a5565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b60006106b36106ac6110a3565b84846110ab565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60006106fa848484611274565b6107bb846107066110a3565b6107b685604051806060016040528060308152602001612d0b60309139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061076c6110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6110ab565b600190509392505050565b60075481565b6000600560009054906101000a900460ff16905090565b600061088c6107f06110a3565b8461088785600160006108016110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171090919063ffffffff16565b6110ab565b6001905092915050565b60085481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109446110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca90612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9c6110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2290612422565b60405180910390fd5b610b336106e3565b600a81905550610b416106e3565b600b81905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b82906123a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae906123a5565b8015610bfb5780601f10610bd057610100808354040283529160200191610bfb565b820191906000526020600020905b815481529060010190602001808311610bde57829003601f168201915b5050505050905090565b6000610cc8610c126110a3565b84610cc3856040518060600160405280602d8152602001612cde602d913960016000610c3c6110a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6110ab565b6001905092915050565b6000610ce6610cdf6110a3565b8484611274565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b610d186110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90612422565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa982604051610e44919061212a565b60405180910390a25050565b60065481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ee56110a3565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda906124b4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612546565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611189576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611180906125d8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161126791906121ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806112dc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806112ed57506112ec838361176e565b5b806112f85750600081145b1561130d576113088383836118c6565b6116a7565b600a54811115611352576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113499061266a565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146114065760006113b2836108f4565b9050600b5482826113c391906126b9565b1115611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90612739565b60405180910390fd5b505b6000611411306108f4565b9050600060065482101590508080156114375750600e60149054906101000a900460ff16155b801561148d5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611505576001600e60146101000a81548160ff021916908315150217905550600082905060008111156114e8576114e781600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b59565b5b6000600e60146101000a81548160ff021916908315150217905550505b6000600e60149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115bb5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115c557600090505b80156116985760006115f66127106115e860085488611bcb90919063ffffffff16565b611c4590919063ffffffff16565b9050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116765761167361271061166560075488611bcb90919063ffffffff16565b611c4590919063ffffffff16565b90505b6116898186611c8f90919063ffffffff16565b94506116968730836118c6565b505b6116a38686866118c6565b5050505b505050565b60008383111582906116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb9190612014565b60405180910390fd5b50600083856117039190612759565b9050809150509392505050565b600080828461171f91906126b9565b905083811015611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b906127d9565b60405180910390fd5b8091505092915050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118115750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118be57506000601160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc5489df85856040518363ffffffff1660e01b81526004016118799291906127f9565b6020604051808303816000875af1158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc9190612837565b115b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906128d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90612968565b60405180910390fd5b6119af838383611cd9565b611a1a816040518060600160405280602e8152602001612cb0602e91396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116ac9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aad816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461171090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4c91906121ce565b60405180910390a3505050565b6000479050611b6783611cde565b6000611b7c8247611c8f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bc4573d6000803e3d6000fd5b5050505050565b6000808303611bdd5760009050611c3f565b60008284611beb9190612988565b9050828482611bfa91906129f9565b14611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190612a9c565b60405180910390fd5b809150505b92915050565b6000611c8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f21565b905092915050565b6000611cd183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116ac565b905092915050565b505050565b6000600267ffffffffffffffff811115611cfb57611cfa612abc565b5b604051908082528060200260200182016040528015611d295781602001602082028036833780820191505090505b5090503081600081518110611d4157611d40612aeb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190612b2f565b81600181518110611e2057611e1f612aeb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e8730600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110ab565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611eeb959493929190612c55565b600060405180830381600087803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b505050505050565b60008083118290611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f9190612014565b60405180910390fd5b5060008385611f7791906129f9565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fbe578082015181840152602081019050611fa3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fe682611f84565b611ff08185611f8f565b9350612000818560208601611fa0565b61200981611fca565b840191505092915050565b6000602082019050818103600083015261202e8184611fdb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120668261203b565b9050919050565b6120768161205b565b811461208157600080fd5b50565b6000813590506120938161206d565b92915050565b6000819050919050565b6120ac81612099565b81146120b757600080fd5b50565b6000813590506120c9816120a3565b92915050565b600080604083850312156120e6576120e5612036565b5b60006120f485828601612084565b9250506020612105858286016120ba565b9150509250929050565b60008115159050919050565b6121248161210f565b82525050565b600060208201905061213f600083018461211b565b92915050565b6000819050919050565b600061216a6121656121608461203b565b612145565b61203b565b9050919050565b600061217c8261214f565b9050919050565b600061218e82612171565b9050919050565b61219e81612183565b82525050565b60006020820190506121b96000830184612195565b92915050565b6121c881612099565b82525050565b60006020820190506121e360008301846121bf565b92915050565b60008060006060848603121561220257612201612036565b5b600061221086828701612084565b935050602061222186828701612084565b9250506040612232868287016120ba565b9150509250925092565b600060ff82169050919050565b6122528161223c565b82525050565b600060208201905061226d6000830184612249565b92915050565b61227c8161205b565b82525050565b60006020820190506122976000830184612273565b92915050565b6000602082840312156122b3576122b2612036565b5b60006122c184828501612084565b91505092915050565b6122d38161210f565b81146122de57600080fd5b50565b6000813590506122f0816122ca565b92915050565b6000806040838503121561230d5761230c612036565b5b600061231b85828601612084565b925050602061232c858286016122e1565b9150509250929050565b6000806040838503121561234d5761234c612036565b5b600061235b85828601612084565b925050602061236c85828601612084565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123bd57607f821691505b6020821081036123d0576123cf612376565b5b50919050565b7f4f77616e626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061240c602083611f8f565b9150612417826123d6565b602082019050919050565b6000602082019050818103600083015261243b816123ff565b9050919050565b7f4f77616e626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061249e602683611f8f565b91506124a982612442565b604082019050919050565b600060208201905081810360008301526124cd81612491565b9050919050565b7f45524332305374616e646172643a20617070726f76652066726f6d207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b6000612530602c83611f8f565b915061253b826124d4565b604082019050919050565b6000602082019050818103600083015261255f81612523565b9050919050565b7f45524332305374616e646172643a20617070726f766520746f20746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006125c2602a83611f8f565b91506125cd82612566565b604082019050919050565b600060208201905081810360008301526125f1816125b5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f72616e73616374696f6e4c696d69742e00000000000000000000000000000000602082015250565b6000612654603083611f8f565b915061265f826125f8565b604082019050919050565b6000602082019050818103600083015261268381612647565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c482612099565b91506126cf83612099565b92508282019050808211156126e7576126e661268a565b5b92915050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000600082015250565b6000612723601d83611f8f565b915061272e826126ed565b602082019050919050565b6000602082019050818103600083015261275281612716565b9050919050565b600061276482612099565b915061276f83612099565b92508282039050818111156127875761278661268a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006127c3601b83611f8f565b91506127ce8261278d565b602082019050919050565b600060208201905081810360008301526127f2816127b6565b9050919050565b600060408201905061280e6000830185612273565b61281b6020830184612273565b9392505050565b600081519050612831816120a3565b92915050565b60006020828403121561284d5761284c612036565b5b600061285b84828501612822565b91505092915050565b7f45524332305374616e646172643a207472616e736665722066726f6d2074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b60006128c0602d83611f8f565b91506128cb82612864565b604082019050919050565b600060208201905081810360008301526128ef816128b3565b9050919050565b7f45524332305374616e646172643a207472616e7366657220746f20746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612952602b83611f8f565b915061295d826128f6565b604082019050919050565b6000602082019050818103600083015261298181612945565b9050919050565b600061299382612099565b915061299e83612099565b92508282026129ac81612099565b915082820484148315176129c3576129c261268a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a0482612099565b9150612a0f83612099565b925082612a1f57612a1e6129ca565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a86602183611f8f565b9150612a9182612a2a565b604082019050919050565b60006020820190508181036000830152612ab581612a79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b298161206d565b92915050565b600060208284031215612b4557612b44612036565b5b6000612b5384828501612b1a565b91505092915050565b6000819050919050565b6000612b81612b7c612b7784612b5c565b612145565b612099565b9050919050565b612b9181612b66565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bcc8161205b565b82525050565b6000612bde8383612bc3565b60208301905092915050565b6000602082019050919050565b6000612c0282612b97565b612c0c8185612ba2565b9350612c1783612bb3565b8060005b83811015612c48578151612c2f8882612bd2565b9750612c3a83612bea565b925050600181019050612c1b565b5085935050505092915050565b600060a082019050612c6a60008301886121bf565b612c776020830187612b88565b8181036040830152612c898186612bf7565b9050612c986060830185612273565b612ca560808301846121bf565b969550505050505056fe45524332305374616e646172643a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332305374616e646172643a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f45524332305374616e646172643a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201a114646e5c920dc8f6ce1176b53f0f1afffb90da9df7963f2393138de175a3e64736f6c63430008130033

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

00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b857d141e5b78fbadac5d63944146cdb99063b00000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000019cb3c6f489198f987035f4e3f8761d97c07247300000000000000000000000023a031b23d166623cbcf5d4191530b74cfd304f000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000016426f7265642047656e736c65722053454320436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000044247534300000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Bored Gensler SEC Club
Arg [1] : symbol_ (string): BGSC
Arg [2] : supply_ (uint256): 1000000000
Arg [3] : decimals_ (uint8): 18
Arg [4] : parameters (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [5] : uniswapV2Router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [6] : refInfo_ (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
17 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 00000000000000000000000040b857d141e5b78fbadac5d63944146cdb99063b
Arg [7] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [8] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [9] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [10] : 00000000000000000000000019cb3c6f489198f987035f4e3f8761d97c072473
Arg [11] : 00000000000000000000000023a031b23d166623cbcf5d4191530b74cfd304f0
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000016
Arg [14] : 426f7265642047656e736c65722053454320436c756200000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [16] : 4247534300000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

31355:6950:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11435:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13758:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31688:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12570:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14458:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31473:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12405:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15329:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31502:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31736:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31532:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31614:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31573:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12741:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6519:148;;;;;;;;;;;;;:::i;:::-;;34548:138;;;;;;;;;;;;;:::i;:::-;;5877:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11654:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16132:408;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13131:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32066:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34731:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31437:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13410:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6822:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11435:100;11489:13;11522:5;11515:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11435:100;:::o;13758:210::-;13877:4;13899:39;13908:12;:10;:12::i;:::-;13922:7;13931:6;13899:8;:39::i;:::-;13956:4;13949:11;;13758:210;;;;:::o;31688:39::-;;;;;;;;;;;;;:::o;12570:108::-;12631:7;12658:12;;12651:19;;12570:108;:::o;14458:462::-;14598:4;14615:36;14625:6;14633:9;14644:6;14615:9;:36::i;:::-;14662:228;14685:6;14706:12;:10;:12::i;:::-;14733:146;14789:6;14733:146;;;;;;;;;;;;;;;;;:11;:19;14745:6;14733:19;;;;;;;;;;;;;;;:33;14753:12;:10;:12::i;:::-;14733:33;;;;;;;;;;;;;;;;:37;;:146;;;;;:::i;:::-;14662:8;:228::i;:::-;14908:4;14901:11;;14458:462;;;;;:::o;31473:22::-;;;;:::o;12405:100::-;12463:5;12488:9;;;;;;;;;;;12481:16;;12405:100;:::o;15329:300::-;15444:4;15466:133;15489:12;:10;:12::i;:::-;15516:7;15538:50;15577:10;15538:11;:25;15550:12;:10;:12::i;:::-;15538:25;;;;;;;;;;;;;;;:34;15564:7;15538:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15466:8;:133::i;:::-;15617:4;15610:11;;15329:300;;;;:::o;31502:21::-;;;;:::o;31736:28::-;;;;;;;;;;;;;:::o;31532:34::-;;;;;;;;;;;;;:::o;31614:29::-;;;;:::o;31573:34::-;;;;:::o;12741:177::-;12860:7;12892:9;:18;12902:7;12892:18;;;;;;;;;;;;;;;;12885:25;;12741:177;;;:::o;6519:148::-;6099:12;:10;:12::i;:::-;6089:22;;:6;;;;;;;;;;;:22;;;6081:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6626:1:::1;6589:40;;6610:6;;;;;;;;;;;6589:40;;;;;;;;;;;;6657:1;6640:6;;:19;;;;;;;;;;;;;;;;;;6519:148::o:0;34548:138::-;6099:12;:10;:12::i;:::-;6089:22;;:6;;;;;;;;;;;:22;;;6081:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34624:13:::1;:11;:13::i;:::-;34602:19;:35;;;;34665:13;:11;:13::i;:::-;34648:14;:30;;;;34548:138::o:0;5877:79::-;5915:7;5942:6;;;;;;;;;;;5935:13;;5877:79;:::o;11654:104::-;11710:13;11743:7;11736:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11654:104;:::o;16132:408::-;16252:4;16274:236;16297:12;:10;:12::i;:::-;16324:7;16346:153;16403:15;16346:153;;;;;;;;;;;;;;;;;:11;:25;16358:12;:10;:12::i;:::-;16346:25;;;;;;;;;;;;;;;:34;16372:7;16346:34;;;;;;;;;;;;;;;;:38;;:153;;;;;:::i;:::-;16274:8;:236::i;:::-;16528:4;16521:11;;16132:408;;;;:::o;13131:216::-;13253:4;13275:42;13285:12;:10;:12::i;:::-;13299:9;13310:6;13275:9;:42::i;:::-;13335:4;13328:11;;13131:216;;;;:::o;32066:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;34731:182::-;6099:12;:10;:12::i;:::-;6089:22;;:6;;;;;;;;;;;:22;;;6081:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34845:8:::1;34816:17;:26;34834:7;34816:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;34887:7;34871:34;;;34896:8;34871:34;;;;;;:::i;:::-;;;;;;;;34731:182:::0;;:::o;31437:27::-;;;;:::o;13410:201::-;13544:7;13576:11;:18;13588:5;13576:18;;;;;;;;;;;;;;;:27;13595:7;13576:27;;;;;;;;;;;;;;;;13569:34;;13410:201;;;;:::o;6822:281::-;6099:12;:10;:12::i;:::-;6089:22;;:6;;;;;;;;;;;:22;;;6081:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6945:1:::1;6925:22;;:8;:22;;::::0;6903:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7058:8;7029:38;;7050:6;;;;;;;;;;;7029:38;;;;;;;;;;;;7087:8;7078:6;;:17;;;;;;;;;;;;;;;;;;6822:281:::0;:::o;190:98::-;243:7;270:10;263:17;;190:98;:::o;19579:396::-;19732:1;19715:19;;:5;:19;;;19707:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19821:1;19802:21;;:7;:21;;;19794:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19913:6;19883:11;:18;19895:5;19883:18;;;;;;;;;;;;;;;:27;19902:7;19883:27;;;;;;;;;;;;;;;:36;;;;19951:7;19935:32;;19944:5;19935:32;;;19960:6;19935:32;;;;;;:::i;:::-;;;;;;;;19579:396;;;:::o;35593:1808::-;35750:1;35736:16;;:2;:16;;;:41;;;;35770:6;35756:21;;:2;:21;;;35736:41;35735:94;;;;35795:34;35820:4;35826:2;35795:24;:34::i;:::-;35735:94;:122;;;;35856:1;35846:6;:11;35735:122;35717:702;;;35884:33;35900:4;35906:2;35910:6;35884:15;:33::i;:::-;35932:7;;35717:702;36007:19;;35997:6;:29;;35971:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;36137:13;;;;;;;;;;;36131:19;;:2;:19;;;36127:281;;36171:32;36206:13;36216:2;36206:9;:13::i;:::-;36171:48;;36305:14;;36295:6;36268:24;:33;;;;:::i;:::-;:51;;36238:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;36152:256;36127:281;36429:28;36460:24;36478:4;36460:9;:24::i;:::-;36429:55;;36495:12;36534;;36510:20;:36;;36495:51;;36561:7;:22;;;;;36573:10;;;;;;;;;;;36572:11;36561:22;:55;;;;;36588:22;:28;36611:4;36588:28;;;;;;;;;;;;;;;;;;;;;;;;;36587:29;36561:55;36557:333;;;36646:4;36633:10;;:17;;;;;;;;;;;;;;;;;;36667:23;36693:20;36667:46;;36752:1;36734:15;:19;36730:114;;;36774:54;36791:15;36808:19;;;;;;;;;;;36774:16;:54::i;:::-;36730:114;36873:5;36860:10;;:18;;;;;;;;;;;;;;;;;;36618:272;36557:333;36902:12;36918:10;;;;;;;;;;;36917:11;36902:26;;36943:17;:23;36961:4;36943:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;36970:17;:21;36988:2;36970:21;;;;;;;;;;;;;;;;;;;;;;;;;36943:48;36939:96;;;37018:5;37008:15;;36939:96;37051:7;37047:301;;;37075:12;37090:29;37113:5;37090:18;37101:6;;37090;:10;;:18;;;;:::i;:::-;:22;;:29;;;;:::i;:::-;37075:44;;37138:22;:26;37161:2;37138:26;;;;;;;;;;;;;;;;;;;;;;;;;37134:104;;;37192:30;37216:5;37192:19;37203:7;;37192:6;:10;;:19;;;;:::i;:::-;:23;;:30;;;;:::i;:::-;37185:37;;37134:104;37261:16;37272:4;37261:6;:10;;:16;;;;:::i;:::-;37252:25;;37294:42;37310:4;37324;37331;37294:15;:42::i;:::-;37060:288;37047:301;37360:33;37376:4;37382:2;37386:6;37360:15;:33::i;:::-;35706:1695;;;35593:1808;;;;:::o;1702:226::-;1822:7;1855:1;1850;:6;;1858:12;1842:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1882:9;1898:1;1894;:5;;;;:::i;:::-;1882:17;;1919:1;1912:8;;;1702:226;;;;;:::o;799:181::-;857:7;877:9;893:1;889;:5;;;;:::i;:::-;877:17;;918:1;913;:6;;905:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;971:1;964:8;;;799:181;;;;:::o;35331:254::-;35409:4;35433:17;:23;35451:4;35433:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;35460:17;:21;35478:2;35460:21;;;;;;;;;;;;;;;;;;;;;;;;;35433:48;:144;;;;35576:1;35523:3;:16;;;;;;;;;;;;35498:65;;;35564:4;35570:2;35498:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;35433:144;35426:151;;35331:254;;;;:::o;17030:634::-;17188:1;17170:20;;:6;:20;;;17162:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17280:1;17259:23;;:9;:23;;;17251:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17343:47;17364:6;17372:9;17383:6;17343:20;:47::i;:::-;17423:116;17459:6;17423:116;;;;;;;;;;;;;;;;;:9;:17;17433:6;17423:17;;;;;;;;;;;;;;;;:21;;:116;;;;;:::i;:::-;17403:9;:17;17413:6;17403:17;;;;;;;;;;;;;;;:136;;;;17573:32;17598:6;17573:9;:20;17583:9;17573:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17550:9;:20;17560:9;17550:20;;;;;;;;;;;;;;;:55;;;;17638:9;17621:35;;17630:6;17621:35;;;17649:6;17621:35;;;;;;:::i;:::-;;;;;;;;17030:634;;;:::o;37409:296::-;37488:22;37513:21;37488:46;;37547:24;37564:6;37547:16;:24::i;:::-;37584:18;37605:41;37631:14;37605:21;:25;;:41;;;;:::i;:::-;37584:62;;37667:8;37659:26;;:38;37686:10;37659:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37477:228;;37409:296;;:::o;2187:471::-;2245:7;2495:1;2490;:6;2486:47;;2520:1;2513:8;;;;2486:47;2545:9;2561:1;2557;:5;;;;:::i;:::-;2545:17;;2590:1;2585;2581;:5;;;;:::i;:::-;:10;2573:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2649:1;2642:8;;;2187:471;;;;;:::o;3134:132::-;3192:7;3219:39;3223:1;3226;3219:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3212:46;;3134:132;;;;:::o;1263:136::-;1321:7;1348:43;1352:1;1355;1348:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1341:50;;1263:136;;;;:::o;20578:125::-;;;;:::o;37713:589::-;37839:21;37877:1;37863:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37839:40;;37908:4;37890;37895:1;37890:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;37934:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37924:4;37929:1;37924:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;37969:62;37986:4;38001:15;;;;;;;;;;;38019:11;37969:8;:62::i;:::-;38070:15;;;;;;;;;;;:66;;;38151:11;38177:1;38221:4;38248;38268:15;38070:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37768:534;37713:589;:::o;3762:312::-;3882:7;3914:1;3910;:5;3917:12;3902:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3941:9;3957:1;3953;:5;;;;:::i;:::-;3941:17;;4065:1;4058:8;;;3762:312;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:151::-;3867:9;3900:37;3931:5;3900:37;:::i;:::-;3887:50;;3792:151;;;:::o;3949:181::-;4061:62;4117:5;4061:62;:::i;:::-;4056:3;4049:75;3949:181;;:::o;4136:272::-;4254:4;4292:2;4281:9;4277:18;4269:26;;4305:96;4398:1;4387:9;4383:17;4374:6;4305:96;:::i;:::-;4136:272;;;;:::o;4414:118::-;4501:24;4519:5;4501:24;:::i;:::-;4496:3;4489:37;4414:118;;:::o;4538:222::-;4631:4;4669:2;4658:9;4654:18;4646:26;;4682:71;4750:1;4739:9;4735:17;4726:6;4682:71;:::i;:::-;4538:222;;;;:::o;4766:619::-;4843:6;4851;4859;4908:2;4896:9;4887:7;4883:23;4879:32;4876:119;;;4914:79;;:::i;:::-;4876:119;5034:1;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5005:117;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;5289:2;5315:53;5360:7;5351:6;5340:9;5336:22;5315:53;:::i;:::-;5305:63;;5260:118;4766:619;;;;;:::o;5391:86::-;5426:7;5466:4;5459:5;5455:16;5444:27;;5391:86;;;:::o;5483:112::-;5566:22;5582:5;5566:22;:::i;:::-;5561:3;5554:35;5483:112;;:::o;5601:214::-;5690:4;5728:2;5717:9;5713:18;5705:26;;5741:67;5805:1;5794:9;5790:17;5781:6;5741:67;:::i;:::-;5601:214;;;;:::o;5821:118::-;5908:24;5926:5;5908:24;:::i;:::-;5903:3;5896:37;5821:118;;:::o;5945:222::-;6038:4;6076:2;6065:9;6061:18;6053:26;;6089:71;6157:1;6146:9;6142:17;6133:6;6089:71;:::i;:::-;5945:222;;;;:::o;6173:329::-;6232:6;6281:2;6269:9;6260:7;6256:23;6252:32;6249:119;;;6287:79;;:::i;:::-;6249:119;6407:1;6432:53;6477:7;6468:6;6457:9;6453:22;6432:53;:::i;:::-;6422:63;;6378:117;6173:329;;;;:::o;6508:116::-;6578:21;6593:5;6578:21;:::i;:::-;6571:5;6568:32;6558:60;;6614:1;6611;6604:12;6558:60;6508:116;:::o;6630:133::-;6673:5;6711:6;6698:20;6689:29;;6727:30;6751:5;6727:30;:::i;:::-;6630:133;;;;:::o;6769:468::-;6834:6;6842;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7017:1;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6988:117;7144:2;7170:50;7212:7;7203:6;7192:9;7188:22;7170:50;:::i;:::-;7160:60;;7115:115;6769:468;;;;;:::o;7243:474::-;7311:6;7319;7368:2;7356:9;7347:7;7343:23;7339:32;7336:119;;;7374:79;;:::i;:::-;7336:119;7494:1;7519:53;7564:7;7555:6;7544:9;7540:22;7519:53;:::i;:::-;7509:63;;7465:117;7621:2;7647:53;7692:7;7683:6;7672:9;7668:22;7647:53;:::i;:::-;7637:63;;7592:118;7243:474;;;;;:::o;7723:180::-;7771:77;7768:1;7761:88;7868:4;7865:1;7858:15;7892:4;7889:1;7882:15;7909:320;7953:6;7990:1;7984:4;7980:12;7970:22;;8037:1;8031:4;8027:12;8058:18;8048:81;;8114:4;8106:6;8102:17;8092:27;;8048:81;8176:2;8168:6;8165:14;8145:18;8142:38;8139:84;;8195:18;;:::i;:::-;8139:84;7960:269;7909:320;;;:::o;8235:182::-;8375:34;8371:1;8363:6;8359:14;8352:58;8235:182;:::o;8423:366::-;8565:3;8586:67;8650:2;8645:3;8586:67;:::i;:::-;8579:74;;8662:93;8751:3;8662:93;:::i;:::-;8780:2;8775:3;8771:12;8764:19;;8423:366;;;:::o;8795:419::-;8961:4;8999:2;8988:9;8984:18;8976:26;;9048:9;9042:4;9038:20;9034:1;9023:9;9019:17;9012:47;9076:131;9202:4;9076:131;:::i;:::-;9068:139;;8795:419;;;:::o;9220:225::-;9360:34;9356:1;9348:6;9344:14;9337:58;9429:8;9424:2;9416:6;9412:15;9405:33;9220:225;:::o;9451:366::-;9593:3;9614:67;9678:2;9673:3;9614:67;:::i;:::-;9607:74;;9690:93;9779:3;9690:93;:::i;:::-;9808:2;9803:3;9799:12;9792:19;;9451:366;;;:::o;9823:419::-;9989:4;10027:2;10016:9;10012:18;10004:26;;10076:9;10070:4;10066:20;10062:1;10051:9;10047:17;10040:47;10104:131;10230:4;10104:131;:::i;:::-;10096:139;;9823:419;;;:::o;10248:231::-;10388:34;10384:1;10376:6;10372:14;10365:58;10457:14;10452:2;10444:6;10440:15;10433:39;10248:231;:::o;10485:366::-;10627:3;10648:67;10712:2;10707:3;10648:67;:::i;:::-;10641:74;;10724:93;10813:3;10724:93;:::i;:::-;10842:2;10837:3;10833:12;10826:19;;10485:366;;;:::o;10857:419::-;11023:4;11061:2;11050:9;11046:18;11038:26;;11110:9;11104:4;11100:20;11096:1;11085:9;11081:17;11074:47;11138:131;11264:4;11138:131;:::i;:::-;11130:139;;10857:419;;;:::o;11282:229::-;11422:34;11418:1;11410:6;11406:14;11399:58;11491:12;11486:2;11478:6;11474:15;11467:37;11282:229;:::o;11517:366::-;11659:3;11680:67;11744:2;11739:3;11680:67;:::i;:::-;11673:74;;11756:93;11845:3;11756:93;:::i;:::-;11874:2;11869:3;11865:12;11858:19;;11517:366;;;:::o;11889:419::-;12055:4;12093:2;12082:9;12078:18;12070:26;;12142:9;12136:4;12132:20;12128:1;12117:9;12113:17;12106:47;12170:131;12296:4;12170:131;:::i;:::-;12162:139;;11889:419;;;:::o;12314:235::-;12454:34;12450:1;12442:6;12438:14;12431:58;12523:18;12518:2;12510:6;12506:15;12499:43;12314:235;:::o;12555:366::-;12697:3;12718:67;12782:2;12777:3;12718:67;:::i;:::-;12711:74;;12794:93;12883:3;12794:93;:::i;:::-;12912:2;12907:3;12903:12;12896:19;;12555:366;;;:::o;12927:419::-;13093:4;13131:2;13120:9;13116:18;13108:26;;13180:9;13174:4;13170:20;13166:1;13155:9;13151:17;13144:47;13208:131;13334:4;13208:131;:::i;:::-;13200:139;;12927:419;;;:::o;13352:180::-;13400:77;13397:1;13390:88;13497:4;13494:1;13487:15;13521:4;13518:1;13511:15;13538:191;13578:3;13597:20;13615:1;13597:20;:::i;:::-;13592:25;;13631:20;13649:1;13631:20;:::i;:::-;13626:25;;13674:1;13671;13667:9;13660:16;;13695:3;13692:1;13689:10;13686:36;;;13702:18;;:::i;:::-;13686:36;13538:191;;;;:::o;13735:179::-;13875:31;13871:1;13863:6;13859:14;13852:55;13735:179;:::o;13920:366::-;14062:3;14083:67;14147:2;14142:3;14083:67;:::i;:::-;14076:74;;14159:93;14248:3;14159:93;:::i;:::-;14277:2;14272:3;14268:12;14261:19;;13920:366;;;:::o;14292:419::-;14458:4;14496:2;14485:9;14481:18;14473:26;;14545:9;14539:4;14535:20;14531:1;14520:9;14516:17;14509:47;14573:131;14699:4;14573:131;:::i;:::-;14565:139;;14292:419;;;:::o;14717:194::-;14757:4;14777:20;14795:1;14777:20;:::i;:::-;14772:25;;14811:20;14829:1;14811:20;:::i;:::-;14806:25;;14855:1;14852;14848:9;14840:17;;14879:1;14873:4;14870:11;14867:37;;;14884:18;;:::i;:::-;14867:37;14717:194;;;;:::o;14917:177::-;15057:29;15053:1;15045:6;15041:14;15034:53;14917:177;:::o;15100:366::-;15242:3;15263:67;15327:2;15322:3;15263:67;:::i;:::-;15256:74;;15339:93;15428:3;15339:93;:::i;:::-;15457:2;15452:3;15448:12;15441:19;;15100:366;;;:::o;15472:419::-;15638:4;15676:2;15665:9;15661:18;15653:26;;15725:9;15719:4;15715:20;15711:1;15700:9;15696:17;15689:47;15753:131;15879:4;15753:131;:::i;:::-;15745:139;;15472:419;;;:::o;15897:332::-;16018:4;16056:2;16045:9;16041:18;16033:26;;16069:71;16137:1;16126:9;16122:17;16113:6;16069:71;:::i;:::-;16150:72;16218:2;16207:9;16203:18;16194:6;16150:72;:::i;:::-;15897:332;;;;;:::o;16235:143::-;16292:5;16323:6;16317:13;16308:22;;16339:33;16366:5;16339:33;:::i;:::-;16235:143;;;;:::o;16384:351::-;16454:6;16503:2;16491:9;16482:7;16478:23;16474:32;16471:119;;;16509:79;;:::i;:::-;16471:119;16629:1;16654:64;16710:7;16701:6;16690:9;16686:22;16654:64;:::i;:::-;16644:74;;16600:128;16384:351;;;;:::o;16741:232::-;16881:34;16877:1;16869:6;16865:14;16858:58;16950:15;16945:2;16937:6;16933:15;16926:40;16741:232;:::o;16979:366::-;17121:3;17142:67;17206:2;17201:3;17142:67;:::i;:::-;17135:74;;17218:93;17307:3;17218:93;:::i;:::-;17336:2;17331:3;17327:12;17320:19;;16979:366;;;:::o;17351:419::-;17517:4;17555:2;17544:9;17540:18;17532:26;;17604:9;17598:4;17594:20;17590:1;17579:9;17575:17;17568:47;17632:131;17758:4;17632:131;:::i;:::-;17624:139;;17351:419;;;:::o;17776:230::-;17916:34;17912:1;17904:6;17900:14;17893:58;17985:13;17980:2;17972:6;17968:15;17961:38;17776:230;:::o;18012:366::-;18154:3;18175:67;18239:2;18234:3;18175:67;:::i;:::-;18168:74;;18251:93;18340:3;18251:93;:::i;:::-;18369:2;18364:3;18360:12;18353:19;;18012:366;;;:::o;18384:419::-;18550:4;18588:2;18577:9;18573:18;18565:26;;18637:9;18631:4;18627:20;18623:1;18612:9;18608:17;18601:47;18665:131;18791:4;18665:131;:::i;:::-;18657:139;;18384:419;;;:::o;18809:410::-;18849:7;18872:20;18890:1;18872:20;:::i;:::-;18867:25;;18906:20;18924:1;18906:20;:::i;:::-;18901:25;;18961:1;18958;18954:9;18983:30;19001:11;18983:30;:::i;:::-;18972:41;;19162:1;19153:7;19149:15;19146:1;19143:22;19123:1;19116:9;19096:83;19073:139;;19192:18;;:::i;:::-;19073:139;18857:362;18809:410;;;;:::o;19225:180::-;19273:77;19270:1;19263:88;19370:4;19367:1;19360:15;19394:4;19391:1;19384:15;19411:185;19451:1;19468:20;19486:1;19468:20;:::i;:::-;19463:25;;19502:20;19520:1;19502:20;:::i;:::-;19497:25;;19541:1;19531:35;;19546:18;;:::i;:::-;19531:35;19588:1;19585;19581:9;19576:14;;19411:185;;;;:::o;19602:220::-;19742:34;19738:1;19730:6;19726:14;19719:58;19811:3;19806:2;19798:6;19794:15;19787:28;19602:220;:::o;19828:366::-;19970:3;19991:67;20055:2;20050:3;19991:67;:::i;:::-;19984:74;;20067:93;20156:3;20067:93;:::i;:::-;20185:2;20180:3;20176:12;20169:19;;19828:366;;;:::o;20200:419::-;20366:4;20404:2;20393:9;20389:18;20381:26;;20453:9;20447:4;20443:20;20439:1;20428:9;20424:17;20417:47;20481:131;20607:4;20481:131;:::i;:::-;20473:139;;20200:419;;;:::o;20625:180::-;20673:77;20670:1;20663:88;20770:4;20767:1;20760:15;20794:4;20791:1;20784:15;20811:180;20859:77;20856:1;20849:88;20956:4;20953:1;20946:15;20980:4;20977:1;20970:15;20997:143;21054:5;21085:6;21079:13;21070:22;;21101:33;21128:5;21101:33;:::i;:::-;20997:143;;;;:::o;21146:351::-;21216:6;21265:2;21253:9;21244:7;21240:23;21236:32;21233:119;;;21271:79;;:::i;:::-;21233:119;21391:1;21416:64;21472:7;21463:6;21452:9;21448:22;21416:64;:::i;:::-;21406:74;;21362:128;21146:351;;;;:::o;21503:85::-;21548:7;21577:5;21566:16;;21503:85;;;:::o;21594:158::-;21652:9;21685:61;21703:42;21712:32;21738:5;21712:32;:::i;:::-;21703:42;:::i;:::-;21685:61;:::i;:::-;21672:74;;21594:158;;;:::o;21758:147::-;21853:45;21892:5;21853:45;:::i;:::-;21848:3;21841:58;21758:147;;:::o;21911:114::-;21978:6;22012:5;22006:12;21996:22;;21911:114;;;:::o;22031:184::-;22130:11;22164:6;22159:3;22152:19;22204:4;22199:3;22195:14;22180:29;;22031:184;;;;:::o;22221:132::-;22288:4;22311:3;22303:11;;22341:4;22336:3;22332:14;22324:22;;22221:132;;;:::o;22359:108::-;22436:24;22454:5;22436:24;:::i;:::-;22431:3;22424:37;22359:108;;:::o;22473:179::-;22542:10;22563:46;22605:3;22597:6;22563:46;:::i;:::-;22641:4;22636:3;22632:14;22618:28;;22473:179;;;;:::o;22658:113::-;22728:4;22760;22755:3;22751:14;22743:22;;22658:113;;;:::o;22807:732::-;22926:3;22955:54;23003:5;22955:54;:::i;:::-;23025:86;23104:6;23099:3;23025:86;:::i;:::-;23018:93;;23135:56;23185:5;23135:56;:::i;:::-;23214:7;23245:1;23230:284;23255:6;23252:1;23249:13;23230:284;;;23331:6;23325:13;23358:63;23417:3;23402:13;23358:63;:::i;:::-;23351:70;;23444:60;23497:6;23444:60;:::i;:::-;23434:70;;23290:224;23277:1;23274;23270:9;23265:14;;23230:284;;;23234:14;23530:3;23523:10;;22931:608;;;22807:732;;;;:::o;23545:831::-;23808:4;23846:3;23835:9;23831:19;23823:27;;23860:71;23928:1;23917:9;23913:17;23904:6;23860:71;:::i;:::-;23941:80;24017:2;24006:9;24002:18;23993:6;23941:80;:::i;:::-;24068:9;24062:4;24058:20;24053:2;24042:9;24038:18;24031:48;24096:108;24199:4;24190:6;24096:108;:::i;:::-;24088:116;;24214:72;24282:2;24271:9;24267:18;24258:6;24214:72;:::i;:::-;24296:73;24364:3;24353:9;24349:19;24340:6;24296:73;:::i;:::-;23545:831;;;;;;;;:::o

Swarm Source

ipfs://1a114646e5c920dc8f6ce1176b53f0f1afffb90da9df7963f2393138de175a3e
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.