ETH Price: $3,332.89 (-3.59%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve183493752023-10-14 15:00:47452 days ago1697295647IN
0x7cB56e7d...D8aeB2193
0 ETH0.000322756.92287991
Approve177048242023-07-16 9:00:59542 days ago1689498059IN
0x7cB56e7d...D8aeB2193
0 ETH0.0007011115.05801412
Approve176264862023-07-05 8:26:11553 days ago1688545571IN
0x7cB56e7d...D8aeB2193
0 ETH0.0022754149.1228456
Approve176246952023-07-05 2:25:23553 days ago1688523923IN
0x7cB56e7d...D8aeB2193
0 ETH0.0023097449.60695374
Approve176195522023-07-04 9:05:11554 days ago1688461511IN
0x7cB56e7d...D8aeB2193
0 ETH0.000758116.34510771
Approve176195042023-07-04 8:55:23554 days ago1688460923IN
0x7cB56e7d...D8aeB2193
0 ETH0.0005408418.50889626
Approve176194962023-07-04 8:53:35554 days ago1688460815IN
0x7cB56e7d...D8aeB2193
0 ETH0.0008083617.47400402
Approve176194442023-07-04 8:42:47554 days ago1688460167IN
0x7cB56e7d...D8aeB2193
0 ETH0.00042516.08580567
Approve176194442023-07-04 8:42:47554 days ago1688460167IN
0x7cB56e7d...D8aeB2193
0 ETH0.0007451116.08580567
Approve176194112023-07-04 8:35:59554 days ago1688459759IN
0x7cB56e7d...D8aeB2193
0 ETH0.0007257815.65246535
Approve176193842023-07-04 8:30:35554 days ago1688459435IN
0x7cB56e7d...D8aeB2193
0 ETH0.0004698617.78374781
Approve176193812023-07-04 8:29:59554 days ago1688459399IN
0x7cB56e7d...D8aeB2193
0 ETH0.0007612716.43479355
Approve176193512023-07-04 8:23:59554 days ago1688459039IN
0x7cB56e7d...D8aeB2193
0 ETH0.0007522516.24012341
Transfer176192652023-07-04 8:06:47554 days ago1688458007IN
0x7cB56e7d...D8aeB2193
0 ETH0.0008929218.25503868
Approve176054062023-07-02 9:22:35556 days ago1688289755IN
0x7cB56e7d...D8aeB2193
0 ETH0.000643613.89452876
Approve175733992023-06-27 21:36:47560 days ago1687901807IN
0x7cB56e7d...D8aeB2193
0 ETH0.0006004812.89668383
Approve175676452023-06-27 2:07:59561 days ago1687831679IN
0x7cB56e7d...D8aeB2193
0 ETH0.0006119213.12553249
Transfer175600532023-06-26 0:29:35562 days ago1687739375IN
0x7cB56e7d...D8aeB2193
0 ETH0.0003833912.05107195
Approve175421522023-06-23 12:05:23565 days ago1687521923IN
0x7cB56e7d...D8aeB2193
0 ETH0.0040235686.75026827
Approve175417132023-06-23 10:36:35565 days ago1687516595IN
0x7cB56e7d...D8aeB2193
0 ETH0.0012015525.77292876
Approve175416662023-06-23 10:26:59565 days ago1687516019IN
0x7cB56e7d...D8aeB2193
0 ETH0.0042477891.11305136
Approve175411602023-06-23 8:44:35565 days ago1687509875IN
0x7cB56e7d...D8aeB2193
0 ETH0.0007148515.33325482
Approve175411382023-06-23 8:39:59565 days ago1687509599IN
0x7cB56e7d...D8aeB2193
0 ETH0.0006300213.53106826
Approve175410632023-06-23 8:24:23565 days ago1687508663IN
0x7cB56e7d...D8aeB2193
0 ETH0.0005994612.94148564
Approve175410562023-06-23 8:22:59565 days ago1687508579IN
0x7cB56e7d...D8aeB2193
0 ETH0.000591312.76532428
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20PresetMinterPauser

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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);
}
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 ERC20Burnable is Context, ERC20 {
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}
abstract contract Pausable is Context {
    event Paused(address account);

    event Unpaused(address account);

    bool private _paused;

    constructor() {
        _paused = false;
    }

    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    modifier whenPaused() {
        _requirePaused();
        _;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}
abstract contract ERC20Pausable is ERC20, Pausable {
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
        super._beforeTokenTransfer(from, to, amount);

        require(!paused(), "ERC20Pausable: token transfer while paused");
    }
}
interface IAccessControl {
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    function hasRole(bytes32 role, address account) external view returns (bool);

    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    function grantRole(bytes32 role, address account) external;

    function revokeRole(bytes32 role, address account) external;

    function renounceRole(bytes32 role, address account) external;
}
interface IAccessControlEnumerable is IAccessControl {
    function getRoleMember(bytes32 role, uint256 index) external view returns (address);

    function getRoleMemberCount(bytes32 role) external view returns (uint256);
}
library Math {
    enum Rounding {
        Down,
        Up,
        Zero
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        return (a & b) + (a ^ b) / 2;
    }

    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        return a == 0 ? 0 : (a - 1) / b + 1;
    }

    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
        unchecked {
            uint256 prod0;
            uint256 prod1;
            assembly {
                let mm := mulmod(x, y, not(0))
                prod0 := mul(x, y)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            if (prod1 == 0) {
                return prod0 / denominator;
            }

            require(denominator > prod1, "Math: mulDiv overflow");

            uint256 remainder;
            assembly {
                remainder := mulmod(x, y, denominator)

                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            uint256 twos = denominator & (~denominator + 1);
            assembly {
                denominator := div(denominator, twos)

                prod0 := div(prod0, twos)

                twos := add(div(sub(0, twos), twos), 1)
            }

            prod0 |= prod1 * twos;

            uint256 inverse = (3 * denominator) ^ 2;

            inverse *= 2 - denominator * inverse;
            inverse *= 2 - denominator * inverse;
            inverse *= 2 - denominator * inverse;
            inverse *= 2 - denominator * inverse;
            inverse *= 2 - denominator * inverse;
            inverse *= 2 - denominator * inverse;

            result = prod0 * inverse;
            return result;
        }
    }

    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
        uint256 result = mulDiv(x, y, denominator);
        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
            result += 1;
        }
        return result;
    }

    function sqrt(uint256 a) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 result = 1 << (log2(a) >> 1);

        unchecked {
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            return min(result, a / result);
        }
    }

    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = sqrt(a);
            return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
        }
    }

    function log2(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 128;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 64;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 32;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 16;
            }
            if (value >> 8 > 0) {
                value >>= 8;
                result += 8;
            }
            if (value >> 4 > 0) {
                value >>= 4;
                result += 4;
            }
            if (value >> 2 > 0) {
                value >>= 2;
                result += 2;
            }
            if (value >> 1 > 0) {
                result += 1;
            }
        }
        return result;
    }

    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log2(value);
            return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
        }
    }

    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10 ** 64) {
                value /= 10 ** 64;
                result += 64;
            }
            if (value >= 10 ** 32) {
                value /= 10 ** 32;
                result += 32;
            }
            if (value >= 10 ** 16) {
                value /= 10 ** 16;
                result += 16;
            }
            if (value >= 10 ** 8) {
                value /= 10 ** 8;
                result += 8;
            }
            if (value >= 10 ** 4) {
                value /= 10 ** 4;
                result += 4;
            }
            if (value >= 10 ** 2) {
                value /= 10 ** 2;
                result += 2;
            }
            if (value >= 10 ** 1) {
                result += 1;
            }
        }
        return result;
    }

    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log10(value);
            return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);
        }
    }

    function log256(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 16;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 8;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 4;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 2;
            }
            if (value >> 8 > 0) {
                result += 1;
            }
        }
        return result;
    }

    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log256(value);
            return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);
        }
    }
}
library SignedMath {
    function max(int256 a, int256 b) internal pure returns (int256) {
        return a > b ? a : b;
    }

    function min(int256 a, int256 b) internal pure returns (int256) {
        return a < b ? a : b;
    }

    function average(int256 a, int256 b) internal pure returns (int256) {
        int256 x = (a & b) + ((a ^ b) >> 1);
        return x + (int256(uint256(x) >> 255) & (a ^ b));
    }

    function abs(int256 n) internal pure returns (uint256) {
        unchecked {
            return uint256(n >= 0 ? n : -n);
        }
    }
}
library Strings {
    bytes16 private constant _SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = Math.log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;
                assembly {
                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }

    function toString(int256 value) internal pure returns (string memory) {
        return string(abi.encodePacked(value < 0 ? "-" : "", toString(SignedMath.abs(value))));
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        unchecked {
            return toHexString(value, Math.log256(value) + 1);
        }
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }

    function equal(string memory a, string memory b) internal pure returns (bool) {
        return keccak256(bytes(a)) == keccak256(bytes(b));
    }
}
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}
abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping(address => bool) members;
        bytes32 adminRole;
    }

    mapping(bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    modifier onlyRole(bytes32 role) {
        _checkRole(role);
        _;
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    function hasRole(bytes32 role, address account) public view virtual override returns (bool) {
        return _roles[role].members[account];
    }

    function _checkRole(bytes32 role) internal view virtual {
        _checkRole(role, _msgSender());
    }

    function _checkRole(bytes32 role, address account) internal view virtual {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(account),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    function _grantRole(bytes32 role, address account) internal virtual {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) internal virtual {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}
library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            if (lastIndex != toDeleteIndex) {
                bytes32 lastValue = set._values[lastIndex];

                set._values[toDeleteIndex] = lastValue;
                set._indexes[lastValue] = valueIndex;
            }

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        return set._values[index];
    }

    function _values(Set storage set) private view returns (bytes32[] memory) {
        return set._values;
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {
        bytes32[] memory store = _values(set._inner);
        bytes32[] memory result;

        assembly {
            result := store
        }

        return result;
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    function values(AddressSet storage set) internal view returns (address[] memory) {
        bytes32[] memory store = _values(set._inner);
        address[] memory result;

        assembly {
            result := store
        }

        return result;
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }

    function values(UintSet storage set) internal view returns (uint256[] memory) {
        bytes32[] memory store = _values(set._inner);
        uint256[] memory result;

        assembly {
            result := store
        }

        return result;
    }
}
abstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {
    using EnumerableSet for EnumerableSet.AddressSet;

    mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);
    }

    function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {
        return _roleMembers[role].at(index);
    }

    function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {
        return _roleMembers[role].length();
    }

    function _grantRole(bytes32 role, address account) internal virtual override {
        super._grantRole(role, account);
        _roleMembers[role].add(account);
    }

    function _revokeRole(bytes32 role, address account) internal virtual override {
        super._revokeRole(role, account);
        _roleMembers[role].remove(account);
    }
}


contract ERC20PresetMinterPauser is Context, AccessControlEnumerable, ERC20Burnable, ERC20Pausable {
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
    bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");

    constructor(string memory name, string memory symbol) ERC20(name, symbol) {
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());

        _setupRole(MINTER_ROLE, _msgSender());
        _setupRole(PAUSER_ROLE, _msgSender());
    }

    function mint(address to, uint256 amount) public virtual {
        require(hasRole(MINTER_ROLE, _msgSender()), "ERC20PresetMinterPauser: must have minter role to mint");
        _mint(to, amount);
    }

    function pause() public virtual {
        require(hasRole(PAUSER_ROLE, _msgSender()), "ERC20PresetMinterPauser: must have pauser role to pause");
        _pause();
    }

    function unpause() public virtual {
        require(hasRole(PAUSER_ROLE, _msgSender()), "ERC20PresetMinterPauser: must have pauser role to unpause");
        _unpause();
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override(ERC20, ERC20Pausable) {
        super._beforeTokenTransfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b5060405162001cb338038062001cb38339810160408190526200003391620002cf565b81816005620000438382620003c0565b506006620000528282620003c0565b50506007805460ff19169055506200006b5f33620000cb565b620000977f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000cb565b620000c37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000cb565b505062000488565b620000d78282620000db565b5050565b620000e7828262000105565b5f828152600160205260409020620001009082620001a3565b505050565b5f828152602081815260408083206001600160a01b038516845290915290205460ff16620000d7575f828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200015f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b5f620001b9836001600160a01b038416620001c2565b90505b92915050565b5f8181526001830160205260408120546200020957508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155620001bc565b505f620001bc565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000235575f80fd5b81516001600160401b038082111562000252576200025262000211565b604051601f8301601f19908116603f011681019082821181831017156200027d576200027d62000211565b8160405283815260209250868385880101111562000299575f80fd5b5f91505b83821015620002bc57858201830151818301840152908201906200029d565b5f93810190920192909252949350505050565b5f8060408385031215620002e1575f80fd5b82516001600160401b0380821115620002f8575f80fd5b620003068683870162000225565b935060208501519150808211156200031c575f80fd5b506200032b8582860162000225565b9150509250929050565b600181811c908216806200034a57607f821691505b6020821081036200036957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000100575f81815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b505050505050565b81516001600160401b03811115620003dc57620003dc62000211565b620003f481620003ed845462000335565b846200036f565b602080601f8311600181146200042a575f8415620004125750858301515b5f19600386901b1c1916600185901b178555620003b8565b5f85815260208120601f198616915b828110156200045a5788860151825594840194600190910190840162000439565b50858210156200047857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61181d80620004965f395ff3fe608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806370a08231116100f3578063a457c2d711610093578063d53913931161006e578063d5391393146103a2578063d547741f146103c9578063dd62ed3e146103dc578063e63ab1e9146103ef575f80fd5b8063a457c2d714610369578063a9059cbb1461037c578063ca15c8731461038f575f80fd5b80639010d07c116100ce5780639010d07c1461031c57806391d148541461034757806395d89b411461035a578063a217fddf14610362575f80fd5b806370a08231146102d957806379cc6790146103015780638456cb5914610314575f80fd5b8063313ce5671161015e5780633f4ba83a116101395780633f4ba83a146102a057806340c10f19146102a857806342966c68146102bb5780635c975abb146102ce575f80fd5b8063313ce5671461026b57806336568abe1461027a578063395093511461028d575f80fd5b806318160ddd1161019957806318160ddd1461020f57806323b872dd14610221578063248a9ca3146102345780632f2ff15d14610256575f80fd5b806301ffc9a7146101bf57806306fdde03146101e7578063095ea7b3146101fc575b5f80fd5b6101d26101cd366004611500565b610416565b60405190151581526020015b60405180910390f35b6101ef610440565b6040516101de9190611549565b6101d261020a366004611596565b6104d0565b6004545b6040519081526020016101de565b6101d261022f3660046115be565b6104e7565b6102136102423660046115f7565b5f9081526020819052604090206001015490565b61026961026436600461160e565b61050a565b005b604051601281526020016101de565b61026961028836600461160e565b610533565b6101d261029b366004611596565b6105b6565b6102696105d7565b6102696102b6366004611596565b61067d565b6102696102c93660046115f7565b61071c565b60075460ff166101d2565b6102136102e7366004611638565b6001600160a01b03165f9081526002602052604090205490565b61026961030f366004611596565b610729565b61026961073e565b61032f61032a366004611651565b6107e2565b6040516001600160a01b0390911681526020016101de565b6101d261035536600461160e565b610800565b6101ef610828565b6102135f81565b6101d2610377366004611596565b610837565b6101d261038a366004611596565b6108b1565b61021361039d3660046115f7565b6108be565b6102137f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102696103d736600461160e565b6108d4565b6102136103ea366004611671565b6108f8565b6102137f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b5f6001600160e01b03198216635a05180f60e01b148061043a575061043a82610922565b92915050565b60606005805461044f90611699565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90611699565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050505050905090565b5f336104dd818585610956565b5060019392505050565b5f336104f4858285610a79565b6104ff858585610af1565b506001949350505050565b5f8281526020819052604090206001015461052481610ca5565b61052e8383610caf565b505050565b6001600160a01b03811633146105a85760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105b28282610cd0565b5050565b5f336104dd8185856105c883836108f8565b6105d291906116e5565b610956565b6106017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610800565b6106735760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e706175736500000000000000606482015260840161059f565b61067b610cf1565b565b6106a77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610800565b6107125760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b606482015260840161059f565b6105b28282610d43565b6107263382610e0d565b50565b610734823383610a79565b6105b28282610e0d565b6107687f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610800565b6107da5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f207061757365000000000000000000606482015260840161059f565b61067b610f4a565b5f8281526001602052604081206107f99083610f87565b9392505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461044f90611699565b5f338161084482866108f8565b9050838110156108a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161059f565b6104ff8286868403610956565b5f336104dd818585610af1565b5f81815260016020526040812061043a90610f92565b5f828152602081905260409020600101546108ee81610ca5565b61052e8383610cd0565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b5f6001600160e01b03198216637965db0b60e01b148061043a57506301ffc9a760e01b6001600160e01b031983161461043a565b6001600160a01b0383166109b85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059f565b6001600160a01b038216610a195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059f565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610a8484846108f8565b90505f198114610aeb5781811015610ade5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161059f565b610aeb8484848403610956565b50505050565b6001600160a01b038316610b555760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059f565b6001600160a01b038216610bb75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059f565b610bc2838383610f9b565b6001600160a01b0383165f9081526002602052604090205481811015610c395760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161059f565b6001600160a01b038085165f8181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c989086815260200190565b60405180910390a3610aeb565b6107268133610fa6565b610cb98282610fff565b5f82815260016020526040902061052e9082611082565b610cda8282611096565b5f82815260016020526040902061052e90826110fa565b610cf961110e565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d995760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161059f565b610da45f8383610f9b565b8060045f828254610db591906116e5565b90915550506001600160a01b0382165f818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610e6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161059f565b610e78825f83610f9b565b6001600160a01b0382165f9081526002602052604090205481811015610eeb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161059f565b6001600160a01b0383165f8181526002602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b610f52611157565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d263390565b5f6107f9838361119d565b5f61043a825490565b61052e8383836111c3565b610fb08282610800565b6105b257610fbd81611229565b610fc883602061123b565b604051602001610fd99291906116f8565b60408051601f198184030181529082905262461bcd60e51b825261059f91600401611549565b6110098282610800565b6105b2575f828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561103e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b5f6107f9836001600160a01b0384166113d1565b6110a08282610800565b156105b2575f828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b5f6107f9836001600160a01b03841661141d565b60075460ff1661067b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161059f565b60075460ff161561067b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161059f565b5f825f0182815481106111b2576111b261176c565b905f5260205f200154905092915050565b60075460ff161561052e5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b606482015260840161059f565b606061043a6001600160a01b03831660145b60605f611249836002611780565b6112549060026116e5565b67ffffffffffffffff81111561126c5761126c611797565b6040519080825280601f01601f191660200182016040528015611296576020820181803683370190505b509050600360fc1b815f815181106112b0576112b061176c565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106112de576112de61176c565b60200101906001600160f81b03191690815f1a9053505f611300846002611780565b61130b9060016116e5565b90505b6001811115611382576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061133f5761133f61176c565b1a60f81b8282815181106113555761135561176c565b60200101906001600160f81b03191690815f1a90535060049490941c9361137b816117ab565b905061130e565b5083156107f95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161059f565b5f81815260018301602052604081205461141657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561043a565b505f61043a565b5f81815260018301602052604081205480156114f7575f61143f6001836117c0565b85549091505f90611452906001906117c0565b90508181146114b1575f865f0182815481106114705761147061176c565b905f5260205f200154905080875f0184815481106114905761149061176c565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806114c2576114c26117d3565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061043a565b5f91505061043a565b5f60208284031215611510575f80fd5b81356001600160e01b0319811681146107f9575f80fd5b5f5b83811015611541578181015183820152602001611529565b50505f910152565b602081525f8251806020840152611567816040850160208701611527565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611591575f80fd5b919050565b5f80604083850312156115a7575f80fd5b6115b08361157b565b946020939093013593505050565b5f805f606084860312156115d0575f80fd5b6115d98461157b565b92506115e76020850161157b565b9150604084013590509250925092565b5f60208284031215611607575f80fd5b5035919050565b5f806040838503121561161f575f80fd5b8235915061162f6020840161157b565b90509250929050565b5f60208284031215611648575f80fd5b6107f98261157b565b5f8060408385031215611662575f80fd5b50508035926020909101359150565b5f8060408385031215611682575f80fd5b61168b8361157b565b915061162f6020840161157b565b600181811c908216806116ad57607f821691505b6020821081036116cb57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561043a5761043a6116d1565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f835161172f816017850160208801611527565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611760816028840160208801611527565b01602801949350505050565b634e487b7160e01b5f52603260045260245ffd5b808202811582820484141761043a5761043a6116d1565b634e487b7160e01b5f52604160045260245ffd5b5f816117b9576117b96116d1565b505f190190565b8181038181111561043a5761043a6116d1565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220ca4db07f7b785d2572dac73a618b8354c8fab4376c92b66bc24913ef461418a864736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c4265696a696e67204475636b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044245494400000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806370a08231116100f3578063a457c2d711610093578063d53913931161006e578063d5391393146103a2578063d547741f146103c9578063dd62ed3e146103dc578063e63ab1e9146103ef575f80fd5b8063a457c2d714610369578063a9059cbb1461037c578063ca15c8731461038f575f80fd5b80639010d07c116100ce5780639010d07c1461031c57806391d148541461034757806395d89b411461035a578063a217fddf14610362575f80fd5b806370a08231146102d957806379cc6790146103015780638456cb5914610314575f80fd5b8063313ce5671161015e5780633f4ba83a116101395780633f4ba83a146102a057806340c10f19146102a857806342966c68146102bb5780635c975abb146102ce575f80fd5b8063313ce5671461026b57806336568abe1461027a578063395093511461028d575f80fd5b806318160ddd1161019957806318160ddd1461020f57806323b872dd14610221578063248a9ca3146102345780632f2ff15d14610256575f80fd5b806301ffc9a7146101bf57806306fdde03146101e7578063095ea7b3146101fc575b5f80fd5b6101d26101cd366004611500565b610416565b60405190151581526020015b60405180910390f35b6101ef610440565b6040516101de9190611549565b6101d261020a366004611596565b6104d0565b6004545b6040519081526020016101de565b6101d261022f3660046115be565b6104e7565b6102136102423660046115f7565b5f9081526020819052604090206001015490565b61026961026436600461160e565b61050a565b005b604051601281526020016101de565b61026961028836600461160e565b610533565b6101d261029b366004611596565b6105b6565b6102696105d7565b6102696102b6366004611596565b61067d565b6102696102c93660046115f7565b61071c565b60075460ff166101d2565b6102136102e7366004611638565b6001600160a01b03165f9081526002602052604090205490565b61026961030f366004611596565b610729565b61026961073e565b61032f61032a366004611651565b6107e2565b6040516001600160a01b0390911681526020016101de565b6101d261035536600461160e565b610800565b6101ef610828565b6102135f81565b6101d2610377366004611596565b610837565b6101d261038a366004611596565b6108b1565b61021361039d3660046115f7565b6108be565b6102137f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102696103d736600461160e565b6108d4565b6102136103ea366004611671565b6108f8565b6102137f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b5f6001600160e01b03198216635a05180f60e01b148061043a575061043a82610922565b92915050565b60606005805461044f90611699565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90611699565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050505050905090565b5f336104dd818585610956565b5060019392505050565b5f336104f4858285610a79565b6104ff858585610af1565b506001949350505050565b5f8281526020819052604090206001015461052481610ca5565b61052e8383610caf565b505050565b6001600160a01b03811633146105a85760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105b28282610cd0565b5050565b5f336104dd8185856105c883836108f8565b6105d291906116e5565b610956565b6106017f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610800565b6106735760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e706175736500000000000000606482015260840161059f565b61067b610cf1565b565b6106a77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610800565b6107125760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b606482015260840161059f565b6105b28282610d43565b6107263382610e0d565b50565b610734823383610a79565b6105b28282610e0d565b6107687f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610800565b6107da5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f207061757365000000000000000000606482015260840161059f565b61067b610f4a565b5f8281526001602052604081206107f99083610f87565b9392505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461044f90611699565b5f338161084482866108f8565b9050838110156108a45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161059f565b6104ff8286868403610956565b5f336104dd818585610af1565b5f81815260016020526040812061043a90610f92565b5f828152602081905260409020600101546108ee81610ca5565b61052e8383610cd0565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b5f6001600160e01b03198216637965db0b60e01b148061043a57506301ffc9a760e01b6001600160e01b031983161461043a565b6001600160a01b0383166109b85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059f565b6001600160a01b038216610a195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059f565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f610a8484846108f8565b90505f198114610aeb5781811015610ade5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161059f565b610aeb8484848403610956565b50505050565b6001600160a01b038316610b555760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059f565b6001600160a01b038216610bb75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059f565b610bc2838383610f9b565b6001600160a01b0383165f9081526002602052604090205481811015610c395760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161059f565b6001600160a01b038085165f8181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c989086815260200190565b60405180910390a3610aeb565b6107268133610fa6565b610cb98282610fff565b5f82815260016020526040902061052e9082611082565b610cda8282611096565b5f82815260016020526040902061052e90826110fa565b610cf961110e565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d995760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161059f565b610da45f8383610f9b565b8060045f828254610db591906116e5565b90915550506001600160a01b0382165f818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610e6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161059f565b610e78825f83610f9b565b6001600160a01b0382165f9081526002602052604090205481811015610eeb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161059f565b6001600160a01b0383165f8181526002602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b610f52611157565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d263390565b5f6107f9838361119d565b5f61043a825490565b61052e8383836111c3565b610fb08282610800565b6105b257610fbd81611229565b610fc883602061123b565b604051602001610fd99291906116f8565b60408051601f198184030181529082905262461bcd60e51b825261059f91600401611549565b6110098282610800565b6105b2575f828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561103e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b5f6107f9836001600160a01b0384166113d1565b6110a08282610800565b156105b2575f828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b5f6107f9836001600160a01b03841661141d565b60075460ff1661067b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161059f565b60075460ff161561067b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161059f565b5f825f0182815481106111b2576111b261176c565b905f5260205f200154905092915050565b60075460ff161561052e5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b606482015260840161059f565b606061043a6001600160a01b03831660145b60605f611249836002611780565b6112549060026116e5565b67ffffffffffffffff81111561126c5761126c611797565b6040519080825280601f01601f191660200182016040528015611296576020820181803683370190505b509050600360fc1b815f815181106112b0576112b061176c565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106112de576112de61176c565b60200101906001600160f81b03191690815f1a9053505f611300846002611780565b61130b9060016116e5565b90505b6001811115611382576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061133f5761133f61176c565b1a60f81b8282815181106113555761135561176c565b60200101906001600160f81b03191690815f1a90535060049490941c9361137b816117ab565b905061130e565b5083156107f95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161059f565b5f81815260018301602052604081205461141657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561043a565b505f61043a565b5f81815260018301602052604081205480156114f7575f61143f6001836117c0565b85549091505f90611452906001906117c0565b90508181146114b1575f865f0182815481106114705761147061176c565b905f5260205f200154905080875f0184815481106114905761149061176c565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806114c2576114c26117d3565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061043a565b5f91505061043a565b5f60208284031215611510575f80fd5b81356001600160e01b0319811681146107f9575f80fd5b5f5b83811015611541578181015183820152602001611529565b50505f910152565b602081525f8251806020840152611567816040850160208701611527565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611591575f80fd5b919050565b5f80604083850312156115a7575f80fd5b6115b08361157b565b946020939093013593505050565b5f805f606084860312156115d0575f80fd5b6115d98461157b565b92506115e76020850161157b565b9150604084013590509250925092565b5f60208284031215611607575f80fd5b5035919050565b5f806040838503121561161f575f80fd5b8235915061162f6020840161157b565b90509250929050565b5f60208284031215611648575f80fd5b6107f98261157b565b5f8060408385031215611662575f80fd5b50508035926020909101359150565b5f8060408385031215611682575f80fd5b61168b8361157b565b915061162f6020840161157b565b600181811c908216806116ad57607f821691505b6020821081036116cb57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561043a5761043a6116d1565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f835161172f816017850160208801611527565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611760816028840160208801611527565b01602801949350505050565b634e487b7160e01b5f52603260045260245ffd5b808202811582820484141761043a5761043a6116d1565b634e487b7160e01b5f52604160045260245ffd5b5f816117b9576117b96116d1565b505f190190565b8181038181111561043a5761043a6116d1565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220ca4db07f7b785d2572dac73a618b8354c8fab4376c92b66bc24913ef461418a864736f6c63430008140033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c4265696a696e67204475636b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044245494400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): Beijing Duck
Arg [1] : symbol (string): BEID

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [3] : 4265696a696e67204475636b0000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 4245494400000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

27198:1288:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26305:214;;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;26305:214:0;;;;;;;;1609:100;;;:::i;:::-;;;;;;;:::i;2541:201::-;;;;;;:::i;:::-;;:::i;1930:108::-;2018:12;;1930:108;;;1736:25:1;;;1724:2;1709:18;1930:108:0;1590:177:1;2750:261:0;;;;;;:::i;:::-;;:::i;19763:131::-;;;;;;:::i;:::-;19837:7;19864:12;;;;;;;;;;:22;;;;19763:131;19902:147;;;;;;:::i;:::-;;:::i;:::-;;1829:93;;;1912:2;2873:36:1;;2861:2;2846:18;1829:93:0;2731:184:1;20214:218:0;;;;;;:::i;:::-;;:::i;3019:238::-;;;;;;:::i;:::-;;:::i;28080:178::-;;;:::i;27687:205::-;;;;;;:::i;:::-;;:::i;6436:91::-;;;;;;:::i;:::-;;:::i;7072:86::-;7143:7;;;;7072:86;;2046:127;;;;;;:::i;:::-;-1:-1:-1;;;;;2147:18:0;2120:7;2147:18;;;:9;:18;;;;;;;2046:127;6535:164;;;;;;:::i;:::-;;:::i;27900:172::-;;;:::i;26527:153::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3713:32:1;;;3695:51;;3683:2;3668:18;26527:153:0;3549:203:1;18995:147:0;;;;;;:::i;:::-;;:::i;1717:104::-;;;:::i;18638:49::-;;18683:4;18638:49;;3265:436;;;;;;:::i;:::-;;:::i;2181:193::-;;;;;;:::i;:::-;;:::i;26688:142::-;;;;;;:::i;:::-;;:::i;27304:62::-;;27342:24;27304:62;;20057:149;;;;;;:::i;:::-;;:::i;2382:151::-;;;;;;:::i;:::-;;:::i;27373:62::-;;27411:24;27373:62;;26305:214;26390:4;-1:-1:-1;;;;;;26414:57:0;;-1:-1:-1;;;26414:57:0;;:97;;;26475:36;26499:11;26475:23;:36::i;:::-;26407:104;26305:214;-1:-1:-1;;26305:214:0:o;1609:100::-;1663:13;1696:5;1689:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:100;:::o;2541:201::-;2624:4;1071:10;2680:32;1071:10;2696:7;2705:6;2680:8;:32::i;:::-;-1:-1:-1;2730:4:0;;2541:201;-1:-1:-1;;;2541:201:0:o;2750:261::-;2847:4;1071:10;2905:38;2921:4;1071:10;2936:6;2905:15;:38::i;:::-;2954:27;2964:4;2970:2;2974:6;2954:9;:27::i;:::-;-1:-1:-1;2999:4:0;;2750:261;-1:-1:-1;;;;2750:261:0:o;19902:147::-;19837:7;19864:12;;;;;;;;;;:22;;;18739:16;18750:4;18739:10;:16::i;:::-;20016:25:::1;20027:4;20033:7;20016:10;:25::i;:::-;19902:147:::0;;;:::o;20214:218::-;-1:-1:-1;;;;;20310:23:0;;1071:10;20310:23;20302:83;;;;-1:-1:-1;;;20302:83:0;;4609:2:1;20302:83:0;;;4591:21:1;4648:2;4628:18;;;4621:30;4687:34;4667:18;;;4660:62;-1:-1:-1;;;4738:18:1;;;4731:45;4793:19;;20302:83:0;;;;;;;;;20398:26;20410:4;20416:7;20398:11;:26::i;:::-;20214:218;;:::o;3019:238::-;3107:4;1071:10;3163:64;1071:10;3179:7;3216:10;3188:25;1071:10;3179:7;3188:9;:25::i;:::-;:38;;;;:::i;:::-;3163:8;:64::i;28080:178::-;28133:34;27411:24;1071:10;18995:147;:::i;28133:34::-;28125:104;;;;-1:-1:-1;;;28125:104:0;;5287:2:1;28125:104:0;;;5269:21:1;5326:2;5306:18;;;5299:30;5365:34;5345:18;;;5338:62;5436:27;5416:18;;;5409:55;5481:19;;28125:104:0;5085:421:1;28125:104:0;28240:10;:8;:10::i;:::-;28080:178::o;27687:205::-;27763:34;27342:24;1071:10;18995:147;:::i;27763:34::-;27755:101;;;;-1:-1:-1;;;27755:101:0;;5713:2:1;27755:101:0;;;5695:21:1;5752:2;5732:18;;;5725:30;5791:34;5771:18;;;5764:62;-1:-1:-1;;;5842:18:1;;;5835:52;5904:19;;27755:101:0;5511:418:1;27755:101:0;27867:17;27873:2;27877:6;27867:5;:17::i;6436:91::-;6492:27;1071:10;6512:6;6492:5;:27::i;:::-;6436:91;:::o;6535:164::-;6612:46;6628:7;1071:10;6651:6;6612:15;:46::i;:::-;6669:22;6675:7;6684:6;6669:5;:22::i;27900:172::-;27951:34;27411:24;1071:10;18995:147;:::i;27951:34::-;27943:102;;;;-1:-1:-1;;;27943:102:0;;6136:2:1;27943:102:0;;;6118:21:1;6175:2;6155:18;;;6148:30;6214:34;6194:18;;;6187:62;6285:25;6265:18;;;6258:53;6328:19;;27943:102:0;5934:419:1;27943:102:0;28056:8;:6;:8::i;26527:153::-;26617:7;26644:18;;;:12;:18;;;;;:28;;26666:5;26644:21;:28::i;:::-;26637:35;26527:153;-1:-1:-1;;;26527:153:0:o;18995:147::-;19081:4;19105:12;;;;;;;;;;;-1:-1:-1;;;;;19105:29:0;;;;;;;;;;;;;;;18995:147::o;1717:104::-;1773:13;1806:7;1799:14;;;;;:::i;3265:436::-;3358:4;1071:10;3358:4;3441:25;1071:10;3458:7;3441:9;:25::i;:::-;3414:52;;3505:15;3485:16;:35;;3477:85;;;;-1:-1:-1;;;3477:85:0;;6560:2:1;3477:85:0;;;6542:21:1;6599:2;6579:18;;;6572:30;6638:34;6618:18;;;6611:62;-1:-1:-1;;;6689:18:1;;;6682:35;6734:19;;3477:85:0;6358:401:1;3477:85:0;3598:60;3607:5;3614:7;3642:15;3623:16;:34;3598:8;:60::i;2181:193::-;2260:4;1071:10;2316:28;1071:10;2333:2;2337:6;2316:9;:28::i;26688:142::-;26768:7;26795:18;;;:12;:18;;;;;:27;;:25;:27::i;20057:149::-;19837:7;19864:12;;;;;;;;;;:22;;;18739:16;18750:4;18739:10;:16::i;:::-;20172:26:::1;20184:4;20190:7;20172:11;:26::i;2382:151::-:0;-1:-1:-1;;;;;2498:18:0;;;2471:7;2498:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2382:151::o;18783:204::-;18868:4;-1:-1:-1;;;;;;18892:47:0;;-1:-1:-1;;;18892:47:0;;:87;;-1:-1:-1;;;;;;;;;;18356:40:0;;;18943:36;18247:157;5404:346;-1:-1:-1;;;;;5506:19:0;;5498:68;;;;-1:-1:-1;;;5498:68:0;;6966:2:1;5498:68:0;;;6948:21:1;7005:2;6985:18;;;6978:30;7044:34;7024:18;;;7017:62;-1:-1:-1;;;7095:18:1;;;7088:34;7139:19;;5498:68:0;6764:400:1;5498:68:0;-1:-1:-1;;;;;5585:21:0;;5577:68;;;;-1:-1:-1;;;5577:68:0;;7371:2:1;5577:68:0;;;7353:21:1;7410:2;7390:18;;;7383:30;7449:34;7429:18;;;7422:62;-1:-1:-1;;;7500:18:1;;;7493:32;7542:19;;5577:68:0;7169:398:1;5577:68:0;-1:-1:-1;;;;;5658:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5710:32;;1736:25:1;;;5710:32:0;;1709:18:1;5710:32:0;;;;;;;5404:346;;;:::o;5758:419::-;5859:24;5886:25;5896:5;5903:7;5886:9;:25::i;:::-;5859:52;;-1:-1:-1;;5926:16:0;:37;5922:248;;6008:6;5988:16;:26;;5980:68;;;;-1:-1:-1;;;5980:68:0;;7774:2:1;5980:68:0;;;7756:21:1;7813:2;7793:18;;;7786:30;7852:31;7832:18;;;7825:59;7901:18;;5980:68:0;7572:353:1;5980:68:0;6092:51;6101:5;6108:7;6136:6;6117:16;:25;6092:8;:51::i;:::-;5848:329;5758:419;;;:::o;3709:641::-;-1:-1:-1;;;;;3806:18:0;;3798:68;;;;-1:-1:-1;;;3798:68:0;;8132:2:1;3798:68:0;;;8114:21:1;8171:2;8151:18;;;8144:30;8210:34;8190:18;;;8183:62;-1:-1:-1;;;8261:18:1;;;8254:35;8306:19;;3798:68:0;7930:401:1;3798:68:0;-1:-1:-1;;;;;3885:16:0;;3877:64;;;;-1:-1:-1;;;3877:64:0;;8538:2:1;3877:64:0;;;8520:21:1;8577:2;8557:18;;;8550:30;8616:34;8596:18;;;8589:62;-1:-1:-1;;;8667:18:1;;;8660:33;8710:19;;3877:64:0;8336:399:1;3877:64:0;3954:38;3975:4;3981:2;3985:6;3954:20;:38::i;:::-;-1:-1:-1;;;;;4027:15:0;;4005:19;4027:15;;;:9;:15;;;;;;4061:21;;;;4053:72;;;;-1:-1:-1;;;4053:72:0;;8942:2:1;4053:72:0;;;8924:21:1;8981:2;8961:18;;;8954:30;9020:34;9000:18;;;8993:62;-1:-1:-1;;;9071:18:1;;;9064:36;9117:19;;4053:72:0;8740:402:1;4053:72:0;-1:-1:-1;;;;;4161:15:0;;;;;;;:9;:15;;;;;;4179:20;;;4161:38;;4214:13;;;;;;;;;;:23;;;;;;4266:26;;;;;;4193:6;1736:25:1;;1724:2;1709:18;;1590:177;4266:26:0;;;;;;;;4305:37;19902:147;19150:105;19217:30;19228:4;1071:10;19217;:30::i;26838:169::-;26926:31;26943:4;26949:7;26926:16;:31::i;:::-;26968:18;;;;:12;:18;;;;;:31;;26991:7;26968:22;:31::i;27015:174::-;27104:32;27122:4;27128:7;27104:17;:32::i;:::-;27147:18;;;;:12;:18;;;;;:34;;27173:7;27147:25;:34::i;7524:120::-;7028:16;:14;:16::i;:::-;7583:7:::1;:15:::0;;-1:-1:-1;;7583:15:0::1;::::0;;7614:22:::1;1071:10:::0;7623:12:::1;7614:22;::::0;-1:-1:-1;;;;;3713:32:1;;;3695:51;;3683:2;3668:18;7614:22:0::1;;;;;;;7524:120::o:0;4358:435::-;-1:-1:-1;;;;;4442:21:0;;4434:65;;;;-1:-1:-1;;;4434:65:0;;9349:2:1;4434:65:0;;;9331:21:1;9388:2;9368:18;;;9361:30;9427:33;9407:18;;;9400:61;9478:18;;4434:65:0;9147:355:1;4434:65:0;4512:49;4541:1;4545:7;4554:6;4512:20;:49::i;:::-;4590:6;4574:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4632:18:0;;;;;;:9;:18;;;;;;;;:28;;;;;;4687:37;1736:25:1;;;4687:37:0;;1709:18:1;4687:37:0;;;;;;;20214:218;;:::o;4801:595::-;-1:-1:-1;;;;;4885:21:0;;4877:67;;;;-1:-1:-1;;;4877:67:0;;9709:2:1;4877:67:0;;;9691:21:1;9748:2;9728:18;;;9721:30;9787:34;9767:18;;;9760:62;-1:-1:-1;;;9838:18:1;;;9831:31;9879:19;;4877:67:0;9507:397:1;4877:67:0;4957:49;4978:7;4995:1;4999:6;4957:20;:49::i;:::-;-1:-1:-1;;;;;5044:18:0;;5019:22;5044:18;;;:9;:18;;;;;;5081:24;;;;5073:71;;;;-1:-1:-1;;;5073:71:0;;10111:2:1;5073:71:0;;;10093:21:1;10150:2;10130:18;;;10123:30;10189:34;10169:18;;;10162:62;-1:-1:-1;;;10240:18:1;;;10233:32;10282:19;;5073:71:0;9909:398:1;5073:71:0;-1:-1:-1;;;;;5180:18:0;;;;;;:9;:18;;;;;;;;5201:23;;;5180:44;;5239:12;:22;;;;;;;5290:37;1736:25:1;;;5180:18:0;;;5290:37;;1709:18:1;5290:37:0;;;;;;;19902:147;;;:::o;7398:118::-;6948:19;:17;:19::i;:::-;7458:7:::1;:14:::0;;-1:-1:-1;;7458:14:0::1;7468:4;7458:14;::::0;;7488:20:::1;7495:12;1071:10:::0;;991:98;24617:158;24691:7;24742:22;24746:3;24758:5;24742:3;:22::i;24492:117::-;24555:7;24582:19;24590:3;22642:18;;22559:109;28266:217;28431:44;28458:4;28464:2;28468:6;28431:26;:44::i;19263:492::-;19352:22;19360:4;19366:7;19352;:22::i;:::-;19347:401;;19540:28;19560:7;19540:19;:28::i;:::-;19641:38;19669:4;19676:2;19641:19;:38::i;:::-;19445:257;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;19445:257:0;;;;;;;;;;-1:-1:-1;;;19391:345:0;;;;;;;:::i;20819:238::-;20903:22;20911:4;20917:7;20903;:22::i;:::-;20898:152;;20942:6;:12;;;;;;;;;;;-1:-1:-1;;;;;20942:29:0;;;;;;;;;:36;;-1:-1:-1;;20942:36:0;20974:4;20942:36;;;21025:12;1071:10;;991:98;21025:12;-1:-1:-1;;;;;20998:40:0;21016:7;-1:-1:-1;;;;;20998:40:0;21010:4;20998:40;;;;;;;;;;20819:238;;:::o;23991:152::-;24061:4;24085:50;24090:3;-1:-1:-1;;;;;24110:23:0;;24085:4;:50::i;21065:239::-;21149:22;21157:4;21163:7;21149;:22::i;:::-;21145:152;;;21220:5;21188:12;;;;;;;;;;;-1:-1:-1;;;;;21188:29:0;;;;;;;;;;:37;;-1:-1:-1;;21188:37:0;;;21245:40;1071:10;;21188:12;;21245:40;;21220:5;21245:40;21065:239;;:::o;24151:158::-;24224:4;24248:53;24256:3;-1:-1:-1;;;;;24276:23:0;;24248:7;:53::i;7282:108::-;7143:7;;;;7341:41;;;;-1:-1:-1;;;7341:41:0;;11331:2:1;7341:41:0;;;11313:21:1;11370:2;11350:18;;;11343:30;-1:-1:-1;;;11389:18:1;;;11382:50;11449:18;;7341:41:0;11129:344:1;7166:108:0;7143:7;;;;7236:9;7228:38;;;;-1:-1:-1;;;7228:38:0;;11680:2:1;7228:38:0;;;11662:21:1;11719:2;11699:18;;;11692:30;-1:-1:-1;;;11738:18:1;;;11731:46;11794:18;;7228:38:0;11478:340:1;22676:120:0;22743:7;22770:3;:11;;22782:5;22770:18;;;;;;;;:::i;:::-;;;;;;;;;22763:25;;22676:120;;;;:::o;7707:238::-;7143:7;;;;7881:9;7873:64;;;;-1:-1:-1;;;7873:64:0;;12157:2:1;7873:64:0;;;12139:21:1;12196:2;12176:18;;;12169:30;12235:34;12215:18;;;12208:62;-1:-1:-1;;;12286:18:1;;;12279:40;12336:19;;7873:64:0;11955:406:1;17788:151:0;17846:13;17879:52;-1:-1:-1;;;;;17891:22:0;;16329:2;17333:447;17408:13;17434:19;17466:10;17470:6;17466:1;:10;:::i;:::-;:14;;17479:1;17466:14;:::i;:::-;17456:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17456:25:0;;17434:47;;-1:-1:-1;;;17492:6:0;17499:1;17492:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;17492:15:0;;;;;;;;;-1:-1:-1;;;17518:6:0;17525:1;17518:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;17518:15:0;;;;;;;;-1:-1:-1;17549:9:0;17561:10;17565:6;17561:1;:10;:::i;:::-;:14;;17574:1;17561:14;:::i;:::-;17549:26;;17544:131;17581:1;17577;:5;17544:131;;;-1:-1:-1;;;17625:5:0;17633:3;17625:11;17616:21;;;;;;;:::i;:::-;;;;17604:6;17611:1;17604:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;17604:33:0;;;;;;;;-1:-1:-1;17662:1:0;17652:11;;;;;17584:3;;;:::i;:::-;;;17544:131;;;-1:-1:-1;17693:10:0;;17685:55;;;;-1:-1:-1;;;17685:55:0;;13014:2:1;17685:55:0;;;12996:21:1;;;13033:18;;;13026:30;13092:34;13072:18;;;13065:62;13144:18;;17685:55:0;12812:356:1;21440:291:0;21503:4;22519:19;;;:12;;;:19;;;;;;21520:204;;-1:-1:-1;21563:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;21623:18;;21601:19;;;:12;;;:19;;;;;;:40;;;;21656:11;;21520:204;-1:-1:-1;21707:5:0;21700:12;;21739:675;21805:4;21843:19;;;:12;;;:19;;;;;;21879:15;;21875:532;;21911:21;21935:14;21948:1;21935:10;:14;:::i;:::-;21984:18;;21911:38;;-1:-1:-1;21964:17:0;;21984:22;;22005:1;;21984:22;:::i;:::-;21964:42;;22040:13;22027:9;:26;22023:223;;22074:17;22094:3;:11;;22106:9;22094:22;;;;;;;;:::i;:::-;;;;;;;;;22074:42;;22166:9;22137:3;:11;;22149:13;22137:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;22194:23;;;:12;;;:23;;;;;:36;;;22023:223;22262:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;22303:3;:12;;:19;22316:5;22303:19;;;;;;;;;;;22296:26;;;22346:4;22339:11;;;;;;;21875:532;22390:5;22383:12;;;;;14:286:1;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;497:250;582:1;592:113;606:6;603:1;600:13;592:113;;;682:11;;;676:18;663:11;;;656:39;628:2;621:10;592:113;;;-1:-1:-1;;739:1:1;721:16;;714:27;497:250::o;752:396::-;901:2;890:9;883:21;864:4;933:6;927:13;976:6;971:2;960:9;956:18;949:34;992:79;1064:6;1059:2;1048:9;1044:18;1039:2;1031:6;1027:15;992:79;:::i;:::-;1132:2;1111:15;-1:-1:-1;;1107:29:1;1092:45;;;;1139:2;1088:54;;752:396;-1:-1:-1;;752:396:1:o;1153:173::-;1221:20;;-1:-1:-1;;;;;1270:31:1;;1260:42;;1250:70;;1316:1;1313;1306:12;1250:70;1153:173;;;:::o;1331:254::-;1399:6;1407;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;1499:29;1518:9;1499:29;:::i;:::-;1489:39;1575:2;1560:18;;;;1547:32;;-1:-1:-1;;;1331:254:1:o;1772:328::-;1849:6;1857;1865;1918:2;1906:9;1897:7;1893:23;1889:32;1886:52;;;1934:1;1931;1924:12;1886:52;1957:29;1976:9;1957:29;:::i;:::-;1947:39;;2005:38;2039:2;2028:9;2024:18;2005:38;:::i;:::-;1995:48;;2090:2;2079:9;2075:18;2062:32;2052:42;;1772:328;;;;;:::o;2105:180::-;2164:6;2217:2;2205:9;2196:7;2192:23;2188:32;2185:52;;;2233:1;2230;2223:12;2185:52;-1:-1:-1;2256:23:1;;2105:180;-1:-1:-1;2105:180:1:o;2472:254::-;2540:6;2548;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2653:9;2640:23;2630:33;;2682:38;2716:2;2705:9;2701:18;2682:38;:::i;:::-;2672:48;;2472:254;;;;;:::o;3105:186::-;3164:6;3217:2;3205:9;3196:7;3192:23;3188:32;3185:52;;;3233:1;3230;3223:12;3185:52;3256:29;3275:9;3256:29;:::i;3296:248::-;3364:6;3372;3425:2;3413:9;3404:7;3400:23;3396:32;3393:52;;;3441:1;3438;3431:12;3393:52;-1:-1:-1;;3464:23:1;;;3534:2;3519:18;;;3506:32;;-1:-1:-1;3296:248:1:o;3757:260::-;3825:6;3833;3886:2;3874:9;3865:7;3861:23;3857:32;3854:52;;;3902:1;3899;3892:12;3854:52;3925:29;3944:9;3925:29;:::i;:::-;3915:39;;3973:38;4007:2;3996:9;3992:18;3973:38;:::i;4022:380::-;4101:1;4097:12;;;;4144;;;4165:61;;4219:4;4211:6;4207:17;4197:27;;4165:61;4272:2;4264:6;4261:14;4241:18;4238:38;4235:161;;4318:10;4313:3;4309:20;4306:1;4299:31;4353:4;4350:1;4343:15;4381:4;4378:1;4371:15;4235:161;;4022:380;;;:::o;4823:127::-;4884:10;4879:3;4875:20;4872:1;4865:31;4915:4;4912:1;4905:15;4939:4;4936:1;4929:15;4955:125;5020:9;;;5041:10;;;5038:36;;;5054:18;;:::i;10312:812::-;10723:25;10718:3;10711:38;10693:3;10778:6;10772:13;10794:75;10862:6;10857:2;10852:3;10848:12;10841:4;10833:6;10829:17;10794:75;:::i;:::-;-1:-1:-1;;;10928:2:1;10888:16;;;10920:11;;;10913:40;10978:13;;11000:76;10978:13;11062:2;11054:11;;11047:4;11035:17;;11000:76;:::i;:::-;11096:17;11115:2;11092:26;;10312:812;-1:-1:-1;;;;10312:812:1:o;11823:127::-;11884:10;11879:3;11875:20;11872:1;11865:31;11915:4;11912:1;11905:15;11939:4;11936:1;11929:15;12366:168;12439:9;;;12470;;12487:15;;;12481:22;;12467:37;12457:71;;12508:18;;:::i;12539:127::-;12600:10;12595:3;12591:20;12588:1;12581:31;12631:4;12628:1;12621:15;12655:4;12652:1;12645:15;12671:136;12710:3;12738:5;12728:39;;12747:18;;:::i;:::-;-1:-1:-1;;;12783:18:1;;12671:136::o;13173:128::-;13240:9;;;13261:11;;;13258:37;;;13275:18;;:::i;13306:127::-;13367:10;13362:3;13358:20;13355:1;13348:31;13398:4;13395:1;13388:15;13422:4;13419:1;13412:15

Swarm Source

ipfs://ca4db07f7b785d2572dac73a618b8354c8fab4376c92b66bc24913ef461418a8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.