ETH Price: $3,424.42 (+3.13%)
Gas: 9.13 Gwei

Token

AMEN (AMEN)
 

Overview

Max Total Supply

420,690,000,000,000 AMEN

Holders

497

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
mir4vip.eth
Balance
1,000 AMEN

Value
$0.00
0x7f2279bcf021bb8608445d5b09094062c2512969
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:
AMEN

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-20
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

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

    function functionCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                0,
                "Address: low-level call failed"
            );
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data
    ) internal view returns (bytes memory) {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(
        bytes memory returndata,
        string memory errorMessage
    ) private pure {
        if (returndata.length > 0) {
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

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

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

    // solhint-disable-next-line func-name-mixedcase
    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

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

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

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

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

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

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 oldAllowance = token.allowance(address(this), spender);
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                oldAllowance + value
            )
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(
                oldAllowance >= value,
                "SafeERC20: decreased allowance below zero"
            );
            _callOptionalReturn(
                token,
                abi.encodeWithSelector(
                    token.approve.selector,
                    spender,
                    oldAllowance - value
                )
            );
        }
    }

    function forceApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        bytes memory approvalCall = abi.encodeWithSelector(
            token.approve.selector,
            spender,
            value
        );

        if (!_callOptionalReturnBool(token, approvalCall)) {
            _callOptionalReturn(
                token,
                abi.encodeWithSelector(token.approve.selector, spender, 0)
            );
            _callOptionalReturn(token, approvalCall);
        }
    }

    function safePermit(
        IERC20Permit token,
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal {
        uint256 nonceBefore = token.nonces(owner);
        token.permit(owner, spender, value, deadline, v, r, s);
        uint256 nonceAfter = token.nonces(owner);
        require(
            nonceAfter == nonceBefore + 1,
            "SafeERC20: permit did not succeed"
        );
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(
            data,
            "SafeERC20: low-level call failed"
        );
        require(
            returndata.length == 0 || abi.decode(returndata, (bool)),
            "SafeERC20: ERC20 operation did not succeed"
        );
    }

    function _callOptionalReturnBool(
        IERC20 token,
        bytes memory data
    ) private returns (bool) {
        (bool success, bytes memory returndata) = address(token).call(data);
        return
            success &&
            (returndata.length == 0 || abi.decode(returndata, (bool))) &&
            Address.isContract(address(token));
    }
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;

            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;

            _totalSupply -= amount;
        }

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

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

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract AMEN is Ownable, ERC20 {
    using SafeERC20 for IERC20;
    mapping (address => bool) public wList;
    mapping(address => bool) public bList;
    bool public isLaunch = false;

    constructor() ERC20("AMEN", "AMEN") {
        address ownerAddress = 0x2332D66F30aEdA23C8A3D36Df6c507ac9dC30Fb7;
        _transferOwnership(ownerAddress);
        _mint(ownerAddress, 420690000000000 * (10 ** 18));

        wList[ownerAddress] = true;
        wList[address(this)] = true;
    }

    receive() external payable {}

    fallback() external payable {}

    function burn(uint256 amount) external {
        super._burn(_msgSender(), amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!bList[sender], "black user");

        if (!wList[sender] && !wList[recipient]) {
            require(isLaunch, "Swap not open");
        }

        super._transfer(sender, recipient, amount);
    }

    function claimStuckTokens(address token) external onlyOwner {
        if (token == address(0x0)) {
            payable(_msgSender()).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.safeTransfer(_msgSender(), balance);
    }

    function Launch() public onlyOwner {
        isLaunch = true;
    }

    function setWList(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            wList[addresses[i]] = status;
        }
    }

    function setBList(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            bList[addresses[i]] = status;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bList","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805460ff191690553480156200001b57600080fd5b506040518060400160405280600481526020016320a6a2a760e11b8152506040518060400160405280600481526020016320a6a2a760e11b815250620000706200006a6200010a60201b60201c565b6200010e565b60046200007e8382620002cf565b5060056200008d8282620002cf565b50732332d66f30aeda23c8a3d36df6c507ac9dc30fb79150620000b29050816200010e565b620000cc816d14bddab3e51a57cff87a500000006200015e565b6001600160a01b03166000908152600660205260408082208054600160ff1991821681179092553084529190922080549091169091179055620003c3565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001b95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060036000828254620001cd91906200039b565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025657607f821691505b6020821081036200027757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022657600081815260208120601f850160051c81016020861015620002a65750805b601f850160051c820191505b81811015620002c757828155600101620002b2565b505050505050565b81516001600160401b03811115620002eb57620002eb6200022b565b6200030381620002fc845462000241565b846200027d565b602080601f8311600181146200033b5760008415620003225750858301515b600019600386901b1c1916600185901b178555620002c7565b600085815260208120601f198616915b828110156200036c578886015182559484019460019091019084016200034b565b50858210156200038b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003bd57634e487b7160e01b600052601160045260246000fd5b92915050565b61146680620003d36000396000f3fe60806040526004361061012d5760003560e01c806375674291116100a5578063bcb823521161006c578063bcb8235214610359578063d5e9452414610389578063dd62ed3e146103a9578063f2fde38b146103c9578063f5d588f5146103e9578063f9d0831a1461040357005b806375674291146102bc5780638da5cb5b146102dc57806395d89b4114610304578063a457c2d714610319578063a9059cbb1461033957005b8063271fff7f116100f4578063271fff7f146101e5578063313ce56714610215578063395093511461023157806342966c681461025157806370a0823114610271578063715018a6146102a757005b806302ac81681461013657806306fdde031461014b578063095ea7b31461017657806318160ddd146101a657806323b872dd146101c557005b3661013457005b005b34801561014257600080fd5b50610134610423565b34801561015757600080fd5b5061016061043a565b60405161016d9190611195565b60405180910390f35b34801561018257600080fd5b506101966101913660046111e4565b6104cc565b604051901515815260200161016d565b3480156101b257600080fd5b506003545b60405190815260200161016d565b3480156101d157600080fd5b506101966101e036600461120e565b6104e6565b3480156101f157600080fd5b5061019661020036600461124a565b60066020526000908152604090205460ff1681565b34801561022157600080fd5b506040516012815260200161016d565b34801561023d57600080fd5b5061019661024c3660046111e4565b61050a565b34801561025d57600080fd5b5061013461026c36600461126c565b61052c565b34801561027d57600080fd5b506101b761028c36600461124a565b6001600160a01b031660009081526001602052604090205490565b3480156102b357600080fd5b50610134610539565b3480156102c857600080fd5b506101346102d7366004611293565b61054d565b3480156102e857600080fd5b506000546040516001600160a01b03909116815260200161016d565b34801561031057600080fd5b506101606105ca565b34801561032557600080fd5b506101966103343660046111e4565b6105d9565b34801561034557600080fd5b506101966103543660046111e4565b610659565b34801561036557600080fd5b5061019661037436600461124a565b60076020526000908152604090205460ff1681565b34801561039557600080fd5b506101346103a4366004611293565b610667565b3480156103b557600080fd5b506101b76103c4366004611319565b6106de565b3480156103d557600080fd5b506101346103e436600461124a565b610709565b3480156103f557600080fd5b506008546101969060ff1681565b34801561040f57600080fd5b5061013461041e36600461124a565b61077f565b61042b61084d565b6008805460ff19166001179055565b6060600480546104499061134c565b80601f01602080910402602001604051908101604052809291908181526020018280546104759061134c565b80156104c25780601f10610497576101008083540402835291602001916104c2565b820191906000526020600020905b8154815290600101906020018083116104a557829003601f168201915b5050505050905090565b6000336104da8185856108a7565b60019150505b92915050565b6000336104f48582856109cb565b6104ff858585610a3f565b506001949350505050565b6000336104da81858561051d83836106de565b610527919061139c565b6108a7565b6105363382610b8b565b50565b61054161084d565b61054b6000610cbf565b565b61055561084d565b60005b828110156105c4578160076000868685818110610577576105776113af565b905060200201602081019061058c919061124a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556105bd816113c5565b9050610558565b50505050565b6060600580546104499061134c565b600033816105e782866106de565b90508381101561064c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6104ff82868684036108a7565b6000336104da818585610a3f565b61066f61084d565b60005b828110156105c4578160066000868685818110610691576106916113af565b90506020020160208101906106a6919061124a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556106d7816113c5565b9050610672565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61071161084d565b6001600160a01b0381166107765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610643565b61053681610cbf565b61078761084d565b6001600160a01b0381166107c55760405133904780156108fc02916000818181858888f193505050501580156107c1573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561080e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083291906113de565b90506108486001600160a01b0383163383610d0f565b505050565b6000546001600160a01b0316331461054b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610643565b6001600160a01b0383166109095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610643565b6001600160a01b03821661096a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610643565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109d784846106de565b905060001981146105c45781811015610a325760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610643565b6105c484848484036108a7565b60008111610aa15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610643565b6001600160a01b03831660009081526007602052604090205460ff1615610af75760405162461bcd60e51b815260206004820152600a602482015269313630b1b5903ab9b2b960b11b6044820152606401610643565b6001600160a01b03831660009081526006602052604090205460ff16158015610b3957506001600160a01b03821660009081526006602052604090205460ff16155b15610b805760085460ff16610b805760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b6044820152606401610643565b610848838383610d61565b6001600160a01b038216610beb5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610643565b6001600160a01b03821660009081526001602052604090205481811015610c5f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610643565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610848908490610f0c565b6001600160a01b038316610dc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610643565b6001600160a01b038216610e275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610643565b6001600160a01b03831660009081526001602052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610643565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eff9086815260200190565b60405180910390a36105c4565b6000610f61826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fe19092919063ffffffff16565b9050805160001480610f82575080806020019051810190610f8291906113f7565b6108485760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610643565b6060610ff08484600085610ff8565b949350505050565b6060824710156110595760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610643565b600080866001600160a01b031685876040516110759190611414565b60006040518083038185875af1925050503d80600081146110b2576040519150601f19603f3d011682016040523d82523d6000602084013e6110b7565b606091505b50915091506110c8878383876110d3565b979650505050505050565b6060831561114257825160000361113b576001600160a01b0385163b61113b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610643565b5081610ff0565b610ff083838151156111575781518083602001fd5b8060405162461bcd60e51b81526004016106439190611195565b60005b8381101561118c578181015183820152602001611174565b50506000910152565b60208152600082518060208401526111b4816040850160208701611171565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146111df57600080fd5b919050565b600080604083850312156111f757600080fd5b611200836111c8565b946020939093013593505050565b60008060006060848603121561122357600080fd5b61122c846111c8565b925061123a602085016111c8565b9150604084013590509250925092565b60006020828403121561125c57600080fd5b611265826111c8565b9392505050565b60006020828403121561127e57600080fd5b5035919050565b801515811461053657600080fd5b6000806000604084860312156112a857600080fd5b833567ffffffffffffffff808211156112c057600080fd5b818601915086601f8301126112d457600080fd5b8135818111156112e357600080fd5b8760208260051b85010111156112f857600080fd5b6020928301955093505084013561130e81611285565b809150509250925092565b6000806040838503121561132c57600080fd5b611335836111c8565b9150611343602084016111c8565b90509250929050565b600181811c9082168061136057607f821691505b60208210810361138057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104e0576104e0611386565b634e487b7160e01b600052603260045260246000fd5b6000600182016113d7576113d7611386565b5060010190565b6000602082840312156113f057600080fd5b5051919050565b60006020828403121561140957600080fd5b815161126581611285565b60008251611426818460208701611171565b919091019291505056fea2646970667358221220b4b750bf106e696b5900f3545aba5d28a216772ef372d236b78187e56b4724c564736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012d5760003560e01c806375674291116100a5578063bcb823521161006c578063bcb8235214610359578063d5e9452414610389578063dd62ed3e146103a9578063f2fde38b146103c9578063f5d588f5146103e9578063f9d0831a1461040357005b806375674291146102bc5780638da5cb5b146102dc57806395d89b4114610304578063a457c2d714610319578063a9059cbb1461033957005b8063271fff7f116100f4578063271fff7f146101e5578063313ce56714610215578063395093511461023157806342966c681461025157806370a0823114610271578063715018a6146102a757005b806302ac81681461013657806306fdde031461014b578063095ea7b31461017657806318160ddd146101a657806323b872dd146101c557005b3661013457005b005b34801561014257600080fd5b50610134610423565b34801561015757600080fd5b5061016061043a565b60405161016d9190611195565b60405180910390f35b34801561018257600080fd5b506101966101913660046111e4565b6104cc565b604051901515815260200161016d565b3480156101b257600080fd5b506003545b60405190815260200161016d565b3480156101d157600080fd5b506101966101e036600461120e565b6104e6565b3480156101f157600080fd5b5061019661020036600461124a565b60066020526000908152604090205460ff1681565b34801561022157600080fd5b506040516012815260200161016d565b34801561023d57600080fd5b5061019661024c3660046111e4565b61050a565b34801561025d57600080fd5b5061013461026c36600461126c565b61052c565b34801561027d57600080fd5b506101b761028c36600461124a565b6001600160a01b031660009081526001602052604090205490565b3480156102b357600080fd5b50610134610539565b3480156102c857600080fd5b506101346102d7366004611293565b61054d565b3480156102e857600080fd5b506000546040516001600160a01b03909116815260200161016d565b34801561031057600080fd5b506101606105ca565b34801561032557600080fd5b506101966103343660046111e4565b6105d9565b34801561034557600080fd5b506101966103543660046111e4565b610659565b34801561036557600080fd5b5061019661037436600461124a565b60076020526000908152604090205460ff1681565b34801561039557600080fd5b506101346103a4366004611293565b610667565b3480156103b557600080fd5b506101b76103c4366004611319565b6106de565b3480156103d557600080fd5b506101346103e436600461124a565b610709565b3480156103f557600080fd5b506008546101969060ff1681565b34801561040f57600080fd5b5061013461041e36600461124a565b61077f565b61042b61084d565b6008805460ff19166001179055565b6060600480546104499061134c565b80601f01602080910402602001604051908101604052809291908181526020018280546104759061134c565b80156104c25780601f10610497576101008083540402835291602001916104c2565b820191906000526020600020905b8154815290600101906020018083116104a557829003601f168201915b5050505050905090565b6000336104da8185856108a7565b60019150505b92915050565b6000336104f48582856109cb565b6104ff858585610a3f565b506001949350505050565b6000336104da81858561051d83836106de565b610527919061139c565b6108a7565b6105363382610b8b565b50565b61054161084d565b61054b6000610cbf565b565b61055561084d565b60005b828110156105c4578160076000868685818110610577576105776113af565b905060200201602081019061058c919061124a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556105bd816113c5565b9050610558565b50505050565b6060600580546104499061134c565b600033816105e782866106de565b90508381101561064c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6104ff82868684036108a7565b6000336104da818585610a3f565b61066f61084d565b60005b828110156105c4578160066000868685818110610691576106916113af565b90506020020160208101906106a6919061124a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556106d7816113c5565b9050610672565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61071161084d565b6001600160a01b0381166107765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610643565b61053681610cbf565b61078761084d565b6001600160a01b0381166107c55760405133904780156108fc02916000818181858888f193505050501580156107c1573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561080e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083291906113de565b90506108486001600160a01b0383163383610d0f565b505050565b6000546001600160a01b0316331461054b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610643565b6001600160a01b0383166109095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610643565b6001600160a01b03821661096a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610643565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109d784846106de565b905060001981146105c45781811015610a325760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610643565b6105c484848484036108a7565b60008111610aa15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610643565b6001600160a01b03831660009081526007602052604090205460ff1615610af75760405162461bcd60e51b815260206004820152600a602482015269313630b1b5903ab9b2b960b11b6044820152606401610643565b6001600160a01b03831660009081526006602052604090205460ff16158015610b3957506001600160a01b03821660009081526006602052604090205460ff16155b15610b805760085460ff16610b805760405162461bcd60e51b815260206004820152600d60248201526c29bbb0b8103737ba1037b832b760991b6044820152606401610643565b610848838383610d61565b6001600160a01b038216610beb5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610643565b6001600160a01b03821660009081526001602052604090205481811015610c5f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610643565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610848908490610f0c565b6001600160a01b038316610dc55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610643565b6001600160a01b038216610e275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610643565b6001600160a01b03831660009081526001602052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610643565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610eff9086815260200190565b60405180910390a36105c4565b6000610f61826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fe19092919063ffffffff16565b9050805160001480610f82575080806020019051810190610f8291906113f7565b6108485760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610643565b6060610ff08484600085610ff8565b949350505050565b6060824710156110595760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610643565b600080866001600160a01b031685876040516110759190611414565b60006040518083038185875af1925050503d80600081146110b2576040519150601f19603f3d011682016040523d82523d6000602084013e6110b7565b606091505b50915091506110c8878383876110d3565b979650505050505050565b6060831561114257825160000361113b576001600160a01b0385163b61113b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610643565b5081610ff0565b610ff083838151156111575781518083602001fd5b8060405162461bcd60e51b81526004016106439190611195565b60005b8381101561118c578181015183820152602001611174565b50506000910152565b60208152600082518060208401526111b4816040850160208701611171565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146111df57600080fd5b919050565b600080604083850312156111f757600080fd5b611200836111c8565b946020939093013593505050565b60008060006060848603121561122357600080fd5b61122c846111c8565b925061123a602085016111c8565b9150604084013590509250925092565b60006020828403121561125c57600080fd5b611265826111c8565b9392505050565b60006020828403121561127e57600080fd5b5035919050565b801515811461053657600080fd5b6000806000604084860312156112a857600080fd5b833567ffffffffffffffff808211156112c057600080fd5b818601915086601f8301126112d457600080fd5b8135818111156112e357600080fd5b8760208260051b85010111156112f857600080fd5b6020928301955093505084013561130e81611285565b809150509250925092565b6000806040838503121561132c57600080fd5b611335836111c8565b9150611343602084016111c8565b90509250929050565b600181811c9082168061136057607f821691505b60208210810361138057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104e0576104e0611386565b634e487b7160e01b600052603260045260246000fd5b6000600182016113d7576113d7611386565b5060010190565b6000602082840312156113f057600080fd5b5051919050565b60006020828403121561140957600080fd5b815161126581611285565b60008251611426818460208701611171565b919091019291505056fea2646970667358221220b4b750bf106e696b5900f3545aba5d28a216772ef372d236b78187e56b4724c564736f6c63430008130033

Deployed Bytecode Sourcemap

17235:1935:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18690:69;;;;;;;;;;;;;:::i;10863:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11861:226;;;;;;;;;;-1:-1:-1;11861:226:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;11861:226:0;1107:187:1;11184:108:0;;;;;;;;;;-1:-1:-1;11272:12:0;;11184:108;;;1445:25:1;;;1433:2;1418:18;11184:108:0;1299:177:1;12095:295:0;;;;;;;;;;-1:-1:-1;12095:295:0;;;;;:::i;:::-;;:::i;17307:38::-;;;;;;;;;;-1:-1:-1;17307:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11083:93;;;;;;;;;;-1:-1:-1;11083:93:0;;11166:2;2147:36:1;;2135:2;2120:18;11083:93:0;2005:184:1;12398:263:0;;;;;;;;;;-1:-1:-1;12398:263:0;;;;;:::i;:::-;;:::i;17816:91::-;;;;;;;;;;-1:-1:-1;17816:91:0;;;;;:::i;:::-;;:::i;11300:143::-;;;;;;;;;;-1:-1:-1;11300:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;11417:18:0;11390:7;11417:18;;;:9;:18;;;;;;;11300:143;16680:103;;;;;;;;;;;;;:::i;18971:196::-;;;;;;;;;;-1:-1:-1;18971:196:0;;;;;:::i;:::-;;:::i;16445:87::-;;;;;;;;;;-1:-1:-1;16491:7:0;16518:6;16445:87;;-1:-1:-1;;;;;16518:6:0;;;3403:51:1;;3391:2;3376:18;16445:87:0;3257:203:1;10971:104:0;;;;;;;;;;;;;:::i;12669:498::-;;;;;;;;;;-1:-1:-1;12669:498:0;;;;;:::i;:::-;;:::i;11451:218::-;;;;;;;;;;-1:-1:-1;11451:218:0;;;;;:::i;:::-;;:::i;17352:37::-;;;;;;;;;;-1:-1:-1;17352:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18767:196;;;;;;;;;;-1:-1:-1;18767:196:0;;;;;:::i;:::-;;:::i;11677:176::-;;;;;;;;;;-1:-1:-1;11677:176:0;;;;;:::i;:::-;;:::i;16791:238::-;;;;;;;;;;-1:-1:-1;16791:238:0;;;;;:::i;:::-;;:::i;17396:28::-;;;;;;;;;;-1:-1:-1;17396:28:0;;;;;;;;18311:371;;;;;;;;;;-1:-1:-1;18311:371:0;;;;;:::i;:::-;;:::i;18690:69::-;16404:13;:11;:13::i;:::-;18736:8:::1;:15:::0;;-1:-1:-1;;18736:15:0::1;18747:4;18736:15;::::0;;18690:69::o;10863:100::-;10917:13;10950:5;10943:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10863:100;:::o;11861:226::-;11969:4;10323:10;12025:32;10323:10;12041:7;12050:6;12025:8;:32::i;:::-;12075:4;12068:11;;;11861:226;;;;;:::o;12095:295::-;12226:4;10323:10;12284:38;12300:4;10323:10;12315:6;12284:15;:38::i;:::-;12333:27;12343:4;12349:2;12353:6;12333:9;:27::i;:::-;-1:-1:-1;12378:4:0;;12095:295;-1:-1:-1;;;;12095:295:0:o;12398:263::-;12511:4;10323:10;12567:64;10323:10;12583:7;12620:10;12592:25;10323:10;12583:7;12592:9;:25::i;:::-;:38;;;;:::i;:::-;12567:8;:64::i;17816:91::-;17866:33;10323:10;17892:6;17866:11;:33::i;:::-;17816:91;:::o;16680:103::-;16404:13;:11;:13::i;:::-;16745:30:::1;16772:1;16745:18;:30::i;:::-;16680:103::o:0;18971:196::-;16404:13;:11;:13::i;:::-;19067:9:::1;19062:98;19078:20:::0;;::::1;19062:98;;;19142:6;19120:5;:19;19126:9;;19136:1;19126:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19120:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19120:19:0;:28;;-1:-1:-1;;19120:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19100:3:::1;::::0;::::1;:::i;:::-;;;19062:98;;;;18971:196:::0;;;:::o;10971:104::-;11027:13;11060:7;11053:14;;;;;:::i;12669:498::-;12787:4;10323:10;12787:4;12870:25;10323:10;12887:7;12870:9;:25::i;:::-;12843:52;;12948:15;12928:16;:35;;12906:122;;;;-1:-1:-1;;;12906:122:0;;4851:2:1;12906:122:0;;;4833:21:1;4890:2;4870:18;;;4863:30;4929:34;4909:18;;;4902:62;-1:-1:-1;;;4980:18:1;;;4973:35;5025:19;;12906:122:0;;;;;;;;;13064:60;13073:5;13080:7;13108:15;13089:16;:34;13064:8;:60::i;11451:218::-;11555:4;10323:10;11611:28;10323:10;11628:2;11632:6;11611:9;:28::i;18767:196::-;16404:13;:11;:13::i;:::-;18863:9:::1;18858:98;18874:20:::0;;::::1;18858:98;;;18938:6;18916:5;:19;18922:9;;18932:1;18922:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18916:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18916:19:0;:28;;-1:-1:-1;;18916:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18896:3:::1;::::0;::::1;:::i;:::-;;;18858:98;;11677:176:::0;-1:-1:-1;;;;;11818:18:0;;;11791:7;11818:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11677:176::o;16791:238::-;16404:13;:11;:13::i;:::-;-1:-1:-1;;;;;16894:22:0;::::1;16872:110;;;::::0;-1:-1:-1;;;16872:110:0;;5257:2:1;16872:110:0::1;::::0;::::1;5239:21:1::0;5296:2;5276:18;;;5269:30;5335:34;5315:18;;;5308:62;-1:-1:-1;;;5386:18:1;;;5379:36;5432:19;;16872:110:0::1;5055:402:1::0;16872:110:0::1;16993:28;17012:8;16993:18;:28::i;18311:371::-:0;16404:13;:11;:13::i;:::-;-1:-1:-1;;;;;18386:21:0;::::1;18382:128;;18424:53;::::0;10323:10;;18455:21:::1;18424:53:::0;::::1;;;::::0;::::1;::::0;;;18455:21;10323:10;18424:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17816:91:::0;:::o;18382:128::-:1;18582:35;::::0;-1:-1:-1;;;18582:35:0;;18611:4:::1;18582:35;::::0;::::1;3403:51:1::0;18547:5:0;;18520:17:::1;::::0;-1:-1:-1;;;;;18582:20:0;::::1;::::0;::::1;::::0;3376:18:1;;18582:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18564:53:::0;-1:-1:-1;18628:46:0::1;-1:-1:-1::0;;;;;18628:23:0;::::1;10323:10:::0;18564:53;18628:23:::1;:46::i;:::-;18371:311;;18311:371:::0;:::o;16540:132::-;16491:7;16518:6;-1:-1:-1;;;;;16518:6:0;10323:10;16604:23;16596:68;;;;-1:-1:-1;;;16596:68:0;;5853:2:1;16596:68:0;;;5835:21:1;;;5872:18;;;5865:30;5931:34;5911:18;;;5904:62;5983:18;;16596:68:0;5651:356:1;14945:380:0;-1:-1:-1;;;;;15081:19:0;;15073:68;;;;-1:-1:-1;;;15073:68:0;;6214:2:1;15073:68:0;;;6196:21:1;6253:2;6233:18;;;6226:30;6292:34;6272:18;;;6265:62;-1:-1:-1;;;6343:18:1;;;6336:34;6387:19;;15073:68:0;6012:400:1;15073:68:0;-1:-1:-1;;;;;15160:21:0;;15152:68;;;;-1:-1:-1;;;15152:68:0;;6619:2:1;15152:68:0;;;6601:21:1;6658:2;6638:18;;;6631:30;6697:34;6677:18;;;6670:62;-1:-1:-1;;;6748:18:1;;;6741:32;6790:19;;15152:68:0;6417:398:1;15152:68:0;-1:-1:-1;;;;;15233:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15285:32;;1445:25:1;;;15285:32:0;;1418:18:1;15285:32:0;;;;;;;14945:380;;;:::o;15333:502::-;15468:24;15495:25;15505:5;15512:7;15495:9;:25::i;:::-;15468:52;;-1:-1:-1;;15535:16:0;:37;15531:297;;15635:6;15615:16;:26;;15589:117;;;;-1:-1:-1;;;15589:117:0;;7022:2:1;15589:117:0;;;7004:21:1;7061:2;7041:18;;;7034:30;7100:31;7080:18;;;7073:59;7149:18;;15589:117:0;6820:353:1;15589:117:0;15750:51;15759:5;15766:7;15794:6;15775:16;:25;15750:8;:51::i;17915:388::-;18031:1;18022:6;:10;18014:64;;;;-1:-1:-1;;;18014:64:0;;7380:2:1;18014:64:0;;;7362:21:1;7419:2;7399:18;;;7392:30;7458:34;7438:18;;;7431:62;-1:-1:-1;;;7509:18:1;;;7502:39;7558:19;;18014:64:0;7178:405:1;18014:64:0;-1:-1:-1;;;;;18098:13:0;;;;;;:5;:13;;;;;;;;18097:14;18089:37;;;;-1:-1:-1;;;18089:37:0;;7790:2:1;18089:37:0;;;7772:21:1;7829:2;7809:18;;;7802:30;-1:-1:-1;;;7848:18:1;;;7841:40;7898:18;;18089:37:0;7588:334:1;18089:37:0;-1:-1:-1;;;;;18144:13:0;;;;;;:5;:13;;;;;;;;18143:14;:35;;;;-1:-1:-1;;;;;;18162:16:0;;;;;;:5;:16;;;;;;;;18161:17;18143:35;18139:102;;;18203:8;;;;18195:34;;;;-1:-1:-1;;;18195:34:0;;8129:2:1;18195:34:0;;;8111:21:1;8168:2;8148:18;;;8141:30;-1:-1:-1;;;8187:18:1;;;8180:43;8240:18;;18195:34:0;7927:337:1;18195:34:0;18253:42;18269:6;18277:9;18288:6;18253:15;:42::i;14340:597::-;-1:-1:-1;;;;;14424:21:0;;14416:67;;;;-1:-1:-1;;;14416:67:0;;8471:2:1;14416:67:0;;;8453:21:1;8510:2;8490:18;;;8483:30;8549:34;8529:18;;;8522:62;-1:-1:-1;;;8600:18:1;;;8593:31;8641:19;;14416:67:0;8269:397:1;14416:67:0;-1:-1:-1;;;;;14583:18:0;;14558:22;14583:18;;;:9;:18;;;;;;14620:24;;;;14612:71;;;;-1:-1:-1;;;14612:71:0;;8873:2:1;14612:71:0;;;8855:21:1;8912:2;8892:18;;;8885:30;8951:34;8931:18;;;8924:62;-1:-1:-1;;;9002:18:1;;;8995:32;9044:19;;14612:71:0;8671:398:1;14612:71:0;-1:-1:-1;;;;;14719:18:0;;;;;;:9;:18;;;;;;;;14740:23;;;14719:44;;14780:12;:22;;;;;;;14831:37;1445:25:1;;;14719:18:0;;;14831:37;;1418:18:1;14831:37:0;;;;;;;18371:311:::1;;18311:371:::0;:::o;17037:191::-;17111:16;17130:6;;-1:-1:-1;;;;;17147:17:0;;;-1:-1:-1;;;;;;17147:17:0;;;;;;17180:40;;17130:6;;;;;;;17180:40;;17111:16;17180:40;17100:128;17037:191;:::o;6118:214::-;6255:58;;;-1:-1:-1;;;;;9266:32:1;;6255:58:0;;;9248:51:1;9315:18;;;;9308:34;;;6255:58:0;;;;;;;;;;9221:18:1;;;;6255:58:0;;;;;;;;-1:-1:-1;;;;;6255:58:0;-1:-1:-1;;;6255:58:0;;;6201:123;;6235:5;;6201:19;:123::i;13175:714::-;-1:-1:-1;;;;;13306:18:0;;13298:68;;;;-1:-1:-1;;;13298:68:0;;9555:2:1;13298:68:0;;;9537:21:1;9594:2;9574:18;;;9567:30;9633:34;9613:18;;;9606:62;-1:-1:-1;;;9684:18:1;;;9677:35;9729:19;;13298:68:0;9353:401:1;13298:68:0;-1:-1:-1;;;;;13385:16:0;;13377:64;;;;-1:-1:-1;;;13377:64:0;;9961:2:1;13377:64:0;;;9943:21:1;10000:2;9980:18;;;9973:30;10039:34;10019:18;;;10012:62;-1:-1:-1;;;10090:18:1;;;10083:33;10133:19;;13377:64:0;9759:399:1;13377:64:0;-1:-1:-1;;;;;13527:15:0;;13505:19;13527:15;;;:9;:15;;;;;;13575:21;;;;13553:109;;;;-1:-1:-1;;;13553:109:0;;10365:2:1;13553:109:0;;;10347:21:1;10404:2;10384:18;;;10377:30;10443:34;10423:18;;;10416:62;-1:-1:-1;;;10494:18:1;;;10487:36;10540:19;;13553:109:0;10163:402:1;13553:109:0;-1:-1:-1;;;;;13698:15:0;;;;;;;:9;:15;;;;;;13716:20;;;13698:38;;13753:13;;;;;;;;;;:23;;;;;;13805:26;;;;;;13730:6;1445:25:1;;1433:2;1418:18;;1299:177;13805:26:0;;;;;;;;13844:37;18311:371;9226:380;9307:23;9333:106;9375:4;9333:106;;;;;;;;;;;;;;;;;9341:5;-1:-1:-1;;;;;9333:27:0;;;:106;;;;;:::i;:::-;9307:132;;9472:10;:17;9493:1;9472:22;:56;;;;9509:10;9498:30;;;;;;;;;;;;:::i;:::-;9450:148;;;;-1:-1:-1;;;9450:148:0;;11022:2:1;9450:148:0;;;11004:21:1;11061:2;11041:18;;;11034:30;11100:34;11080:18;;;11073:62;-1:-1:-1;;;11151:18:1;;;11144:40;11201:19;;9450:148:0;10820:406:1;923:229:0;1060:12;1092:52;1114:6;1122:4;1128:1;1131:12;1092:21;:52::i;:::-;1085:59;923:229;-1:-1:-1;;;;923:229:0:o;1524:612::-;1694:12;1766:5;1741:21;:30;;1719:118;;;;-1:-1:-1;;;1719:118:0;;11433:2:1;1719:118:0;;;11415:21:1;11472:2;11452:18;;;11445:30;11511:34;11491:18;;;11484:62;-1:-1:-1;;;11562:18:1;;;11555:36;11608:19;;1719:118:0;11231:402:1;1719:118:0;1849:12;1863:23;1890:6;-1:-1:-1;;;;;1890:11:0;1909:5;1930:4;1890:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:97;;;;1976:152;2021:6;2046:7;2072:10;2101:12;1976:26;:152::i;:::-;1956:172;1524:612;-1:-1:-1;;;;;;;1524:612:0:o;3640:477::-;3825:12;3854:7;3850:260;;;3882:10;:17;3903:1;3882:22;3878:123;;-1:-1:-1;;;;;169:19:0;;;3925:60;;;;-1:-1:-1;;;3925:60:0;;12132:2:1;3925:60:0;;;12114:21:1;12171:2;12151:18;;;12144:30;12210:31;12190:18;;;12183:59;12259:18;;3925:60:0;11930:353:1;3925:60:0;-1:-1:-1;4022:10:0;4015:17;;3850:260;4065:33;4073:10;4085:12;4561:17;;:21;4557:299;;4704:10;4698:17;4761:15;4748:10;4744:2;4740:19;4733:44;4557:299;4831:12;4824:20;;-1:-1:-1;;;4824:20:0;;;;;;;;:::i;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1481:328::-;1558:6;1566;1574;1627:2;1615:9;1606:7;1602:23;1598:32;1595:52;;;1643:1;1640;1633:12;1595:52;1666:29;1685:9;1666:29;:::i;:::-;1656:39;;1714:38;1748:2;1737:9;1733:18;1714:38;:::i;:::-;1704:48;;1799:2;1788:9;1784:18;1771:32;1761:42;;1481:328;;;;;:::o;1814:186::-;1873:6;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1965:29;1984:9;1965:29;:::i;:::-;1955:39;1814:186;-1:-1:-1;;;1814:186:1:o;2194:180::-;2253:6;2306:2;2294:9;2285:7;2281:23;2277:32;2274:52;;;2322:1;2319;2312:12;2274:52;-1:-1:-1;2345:23:1;;2194:180;-1:-1:-1;2194:180:1:o;2379:118::-;2465:5;2458:13;2451:21;2444:5;2441:32;2431:60;;2487:1;2484;2477:12;2502:750;2594:6;2602;2610;2663:2;2651:9;2642:7;2638:23;2634:32;2631:52;;;2679:1;2676;2669:12;2631:52;2719:9;2706:23;2748:18;2789:2;2781:6;2778:14;2775:34;;;2805:1;2802;2795:12;2775:34;2843:6;2832:9;2828:22;2818:32;;2888:7;2881:4;2877:2;2873:13;2869:27;2859:55;;2910:1;2907;2900:12;2859:55;2950:2;2937:16;2976:2;2968:6;2965:14;2962:34;;;2992:1;2989;2982:12;2962:34;3047:7;3040:4;3030:6;3027:1;3023:14;3019:2;3015:23;3011:34;3008:47;3005:67;;;3068:1;3065;3058:12;3005:67;3099:4;3091:13;;;;-1:-1:-1;3123:6:1;-1:-1:-1;;3164:20:1;;3151:34;3194:28;3151:34;3194:28;:::i;:::-;3241:5;3231:15;;;2502:750;;;;;:::o;3465:260::-;3533:6;3541;3594:2;3582:9;3573:7;3569:23;3565:32;3562:52;;;3610:1;3607;3600:12;3562:52;3633:29;3652:9;3633:29;:::i;:::-;3623:39;;3681:38;3715:2;3704:9;3700:18;3681:38;:::i;:::-;3671:48;;3465:260;;;;;:::o;3730:380::-;3809:1;3805:12;;;;3852;;;3873:61;;3927:4;3919:6;3915:17;3905:27;;3873:61;3980:2;3972:6;3969:14;3949:18;3946:38;3943:161;;4026:10;4021:3;4017:20;4014:1;4007:31;4061:4;4058:1;4051:15;4089:4;4086:1;4079:15;3943:161;;3730:380;;;:::o;4115:127::-;4176:10;4171:3;4167:20;4164:1;4157:31;4207:4;4204:1;4197:15;4231:4;4228:1;4221:15;4247:125;4312:9;;;4333:10;;;4330:36;;;4346:18;;:::i;4377:127::-;4438:10;4433:3;4429:20;4426:1;4419:31;4469:4;4466:1;4459:15;4493:4;4490:1;4483:15;4509:135;4548:3;4569:17;;;4566:43;;4589:18;;:::i;:::-;-1:-1:-1;4636:1:1;4625:13;;4509:135::o;5462:184::-;5532:6;5585:2;5573:9;5564:7;5560:23;5556:32;5553:52;;;5601:1;5598;5591:12;5553:52;-1:-1:-1;5624:16:1;;5462:184;-1:-1:-1;5462:184:1:o;10570:245::-;10637:6;10690:2;10678:9;10669:7;10665:23;10661:32;10658:52;;;10706:1;10703;10696:12;10658:52;10738:9;10732:16;10757:28;10779:5;10757:28;:::i;11638:287::-;11767:3;11805:6;11799:13;11821:66;11880:6;11875:3;11868:4;11860:6;11856:17;11821:66;:::i;:::-;11903:16;;;;;11638:287;-1:-1:-1;;11638:287:1:o

Swarm Source

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