YES Token (YES) Verified
QR Code
Address
0x8debbb77e8a17cffCfC0C7F1f40308886edD3f9f
Token
YES Token (YES)
Transactions
1,339 Transactions
Transfers
4 Transfers
Gas Used
55,281,280
Balance
0 KUB ( )
Tokens
Fetching tokens...
Last Balance Update
Block #14981243
Creator
0xec4247–efad5c at 0x031a39–239224
QR Code
Contract name:
YESToken




Optimization enabled
true
Compiler version
v0.8.11+commit.d7f03943




Optimization runs
200
EVM Version
default




Verified at
2022-02-11T15:46:00.966164Z

Constructor Arguments

000000000000000000000000000000000000000000084595161401484a000000000000000000000000000000409cf41ee862df7024f289e9f2ea2f5d0d7f3eb400000000000000000000000015122c945763da4435b45e082234108361b64eba000000000000000000000000a755a1f6a35ba92835c0a23d3e5292e101d32716000000000000000000000000fbf5b70ef07ae6f64d3796f8a0fe83a3579fab6f0000000000000000000000000000000000000000000000000000000000000004

Arg [0] (uint256) : 10000000000000000000000000
Arg [1] (address) : 0x409cf41ee862df7024f289e9f2ea2f5d0d7f3eb4
Arg [2] (address) : 0x15122c945763da4435b45e082234108361b64eba
Arg [3] (address) : 0xa755a1f6a35ba92835c0a23d3e5292e101d32716
Arg [4] (address) : 0xfbf5b70ef07ae6f64d3796f8a0fe83a3579fab6f
Arg [5] (uint256) : 4

              

Contract source code

// Sources flattened with hardhat v2.8.3 https://hardhat.org

// File contracts/modules/kap20/interfaces/IKAP20.sol

//SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.9.0;

interface IKAP20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

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

    function transfer(address recipient, 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 adminApprove(
        address owner,
        address spender,
        uint256 amount
    ) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    function adminTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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


// File contracts/modules/kap20/interfaces/IKToken.sol

pragma solidity >=0.6.0 <0.9.0;

interface IKToken {
    function internalTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    function externalTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}


// File contracts/modules/misc/Context.sol

pragma solidity 0.8.11;

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

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


// File contracts/modules/pause/Pausable.sol

pragma solidity 0.8.11;

abstract contract Pausable {
    event Paused(address account);
    event Unpaused(address account);

    bool public paused;

    constructor() {
        paused = false;
    }

    modifier whenNotPaused() {
        require(!paused, "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused, "Pausable: not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        paused = true;
        emit Paused(msg.sender);
    }

    function _unpause() internal virtual whenPaused {
        paused = false;
        emit Unpaused(msg.sender);
    }
}


// File contracts/modules/admin/interfaces/IAdminProjectRouter.sol


pragma solidity >=0.6.0 <0.9.0;

interface IAdminProjectRouter {
    function isSuperAdmin(address _addr, string calldata _project) external view returns (bool);

    function isAdmin(address _addr, string calldata _project) external view returns (bool);
}


// File contracts/modules/admin/Authorization.sol

pragma solidity 0.8.11;

abstract contract Authorization {
    IAdminProjectRouter public adminProjectRouter;
    string public PROJECT;

    event AdminProjectRouterSet(address indexed oldAdmin, address indexed newAdmin, address indexed caller);

    modifier onlySuperAdmin() {
        require(adminProjectRouter.isSuperAdmin(msg.sender, PROJECT), "Authorization: restricted only super admin");
        _;
    }

    modifier onlyAdmin() {
        require(adminProjectRouter.isAdmin(msg.sender, PROJECT), "Authorization: restricted only admin");
        _;
    }

    modifier onlySuperAdminOrAdmin() {
        require(
            adminProjectRouter.isSuperAdmin(msg.sender, PROJECT) || adminProjectRouter.isAdmin(msg.sender, PROJECT),
            "Authorization: restricted only super admin or admin"
        );
        _;
    }

    function setAdminProjectRouter(address _adminProjectRouter) public virtual onlySuperAdmin {
        require(_adminProjectRouter != address(0), "Authorization: new admin project router is the zero address");
        emit AdminProjectRouterSet(address(adminProjectRouter), _adminProjectRouter, msg.sender);
        adminProjectRouter = IAdminProjectRouter(_adminProjectRouter);
    }
}


// File contracts/modules/kyc/interfaces/IKYCBitkubChain.sol

pragma solidity >=0.6.0 <0.9.0;

interface IKYCBitkubChain {
    function kycsLevel(address _addr) external view returns (uint256);
}


// File contracts/modules/kyc/KYCHandler.sol

pragma solidity 0.8.11;

abstract contract KYCHandler {
    IKYCBitkubChain public kyc;

    uint256 public acceptedKYCLevel;
    bool public isActivatedOnlyKYCAddress;

    function _activateOnlyKYCAddress() internal virtual {
        isActivatedOnlyKYCAddress = true;
    }

    function _setKYC(address _kyc) internal virtual {
        kyc = IKYCBitkubChain(_kyc);
    }

    function _setAcceptedKYCLevel(uint256 _kycLevel) internal virtual {
        acceptedKYCLevel = _kycLevel;
    }
}


// File contracts/modules/access/Ownable.sol

// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity 0.8.11;

abstract contract Ownable is Context {
    address private _owner;

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

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

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

    modifier onlyOwner() {
        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);
    }
}


// File contracts/modules/committee/Committee.sol

pragma solidity 0.8.11;

abstract contract Committee {
    address public committee;

    event CommitteeSet(
        address indexed oldCommittee,
        address indexed newCommittee,
        address indexed caller
    );

    modifier onlyCommittee() {
        require(
            msg.sender == committee,
            "Committee: restricted only committee"
        );
        _;
    }

    function setCommittee(address _committee) public virtual onlyCommittee {
        emit CommitteeSet(committee, _committee, msg.sender);
        committee = _committee;
    }
}


// File contracts/modules/access/AccessController.sol

pragma solidity 0.8.11;




abstract contract AccessController is
    Authorization,
    KYCHandler,
    Ownable,
    Committee
{
    event TransferRouterSet(
        address indexed oldTransferRouter,
        address indexed newTransferRouter,
        address indexed caller
    );

    address public transferRouter;

    modifier onlyOwnerOrCommittee() {
        require(
            msg.sender == owner() || msg.sender == committee,
            "AccessController: restricted only owner or committee"
        );
        _;
    }

    modifier onlySuperAdminOrTransferRouter() {
        require(
            adminProjectRouter.isSuperAdmin(msg.sender, PROJECT) ||
                msg.sender == transferRouter,
            "AccessController: restricted only super admin or transfer router"
        );
        _;
    }

    modifier onlySuperAdminOrCommittee() {
        require(
            adminProjectRouter.isSuperAdmin(msg.sender, PROJECT) ||
                msg.sender == committee,
            "AccessController: restricted only super admin or committee"
        );
        _;
    }

    modifier onlySuperAdminOrOwner() {
        require(
            adminProjectRouter.isSuperAdmin(msg.sender, PROJECT) ||
                msg.sender == owner(),
            "AccessController: restricted only super admin or owner"
        );
        _;
    }

    function activateOnlyKYCAddress() external onlyCommittee {
        _activateOnlyKYCAddress();
    }

    function setKYC(address _kyc) external onlyCommittee {
        _setKYC(_kyc);
    }

    function setAcceptedKYCLevel(uint256 _kycLevel) external onlyCommittee {
        _setAcceptedKYCLevel(_kycLevel);
    }

    function setTransferRouter(address _transferRouter)
        external
        onlyOwnerOrCommittee
    {
        emit TransferRouterSet(transferRouter, _transferRouter, msg.sender);
        transferRouter = _transferRouter;
    }

    function setAdminProjectRouter(address _adminProjectRouter)
        public
        override
        onlyOwnerOrCommittee
    {
        require(
            _adminProjectRouter != address(0),
            "Authorization: new admin project router is the zero address"
        );
        emit AdminProjectRouterSet(
            address(adminProjectRouter),
            _adminProjectRouter,
            msg.sender
        );
        adminProjectRouter = IAdminProjectRouter(_adminProjectRouter);
    }
}


// File contracts/modules/kap20/KAP20.sol

pragma solidity 0.8.11;





contract KAP20 is IKAP20, IKToken, Pausable, AccessController {
    mapping(address => uint256) _balances;

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

    uint256 public override totalSupply;

    string public override name;
    string public override symbol;
    uint8 public override decimals;

    constructor(
        string memory _name,
        string memory _symbol,
        string memory _projectName,
        uint8 _decimals,
        address _kyc,
        address _adminProjectRouter,
        address _committee,
        address _transferRouter,
        uint256 _acceptedKYCLevel
    ) {
        name = _name;
        symbol = _symbol;
        PROJECT = _projectName;
        decimals = _decimals;
        kyc = IKYCBitkubChain(_kyc);
        adminProjectRouter = IAdminProjectRouter(_adminProjectRouter);
        committee = _committee;
        transferRouter = _transferRouter;
        acceptedKYCLevel = _acceptedKYCLevel;
    }

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

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        whenNotPaused
        returns (bool)
    {
        _transfer(msg.sender, recipient, 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)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function adminApprove(
        address owner,
        address spender,
        uint256 amount
    )
        public
        virtual
        override
        whenNotPaused
        onlySuperAdminOrAdmin
        returns (bool)
    {
        require(
            kyc.kycsLevel(owner) >= acceptedKYCLevel &&
                kyc.kycsLevel(spender) >= acceptedKYCLevel,
            "KAP20: owner or spender address is not a KYC user"
        );

        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override whenNotPaused returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(
            currentAllowance >= amount,
            "KAP20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(
            currentAllowance >= subtractedValue,
            "KAP20: decreased allowance below zero"
        );
        unchecked {
            _approve(msg.sender, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "KAP20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

    function adminTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override onlyCommittee returns (bool) {
        if (isActivatedOnlyKYCAddress) {
            require(
                kyc.kycsLevel(sender) > 0 && kyc.kycsLevel(recipient) > 0,
                "KAP721: only internal purpose"
            );
        }
        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "KAP20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        return true;
    }

    function internalTransfer(
        address sender,
        address recipient,
        uint256 amount
    )
        external
        override
        whenNotPaused
        onlySuperAdminOrTransferRouter
        returns (bool)
    {
        require(
            kyc.kycsLevel(sender) >= acceptedKYCLevel &&
                kyc.kycsLevel(recipient) >= acceptedKYCLevel,
            "KAP20: only internal purpose"
        );

        _transfer(sender, recipient, amount);
        return true;
    }

    function externalTransfer(
        address sender,
        address recipient,
        uint256 amount
    )
        external
        override
        whenNotPaused
        onlySuperAdminOrTransferRouter
        returns (bool)
    {
        require(
            kyc.kycsLevel(sender) >= acceptedKYCLevel,
            "KAP20: only internal purpose"
        );

        _transfer(sender, recipient, amount);
        return true;
    }
}


// File contracts/YESToken.sol

pragma solidity 0.8.11;

contract YESToken is KAP20 {

    constructor(
        uint256 _totalSupply,
        address _kyc,
        address _adminProjectRouter,
        address _committee,
        address _transferRouter,
        uint256 _acceptedKYCLevel
    )
        KAP20(
            "YES Token",
            "YES",
            "bitkub-next-yuemmai",
            18,
            _kyc,
            _adminProjectRouter,
            _committee,
            _transferRouter,
            _acceptedKYCLevel
        )
    {
        _mint(msg.sender, _totalSupply);
    }

    function pause() external onlyOwner {
        _pause();
    }

    function unpause() external onlyOwner {
        _unpause();
    }

}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"uint256","name":"_totalSupply","internalType":"uint256"},{"type":"address","name":"_kyc","internalType":"address"},{"type":"address","name":"_adminProjectRouter","internalType":"address"},{"type":"address","name":"_committee","internalType":"address"},{"type":"address","name":"_transferRouter","internalType":"address"},{"type":"uint256","name":"_acceptedKYCLevel","internalType":"uint256"}]},{"type":"event","name":"AdminProjectRouterSet","inputs":[{"type":"address","name":"oldAdmin","internalType":"address","indexed":true},{"type":"address","name":"newAdmin","internalType":"address","indexed":true},{"type":"address","name":"caller","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"CommitteeSet","inputs":[{"type":"address","name":"oldCommittee","internalType":"address","indexed":true},{"type":"address","name":"newCommittee","internalType":"address","indexed":true},{"type":"address","name":"caller","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"type":"address","name":"account","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TransferRouterSet","inputs":[{"type":"address","name":"oldTransferRouter","internalType":"address","indexed":true},{"type":"address","name":"newTransferRouter","internalType":"address","indexed":true},{"type":"address","name":"caller","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"type":"address","name":"account","internalType":"address","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"PROJECT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"acceptedKYCLevel","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"activateOnlyKYCAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"adminApprove","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IAdminProjectRouter"}],"name":"adminProjectRouter","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"adminTransfer","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"committee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"externalTransfer","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"internalTransfer","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isActivatedOnlyKYCAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IKYCBitkubChain"}],"name":"kyc","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pause","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"paused","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setAcceptedKYCLevel","inputs":[{"type":"uint256","name":"_kycLevel","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setAdminProjectRouter","inputs":[{"type":"address","name":"_adminProjectRouter","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setCommittee","inputs":[{"type":"address","name":"_committee","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setKYC","inputs":[{"type":"address","name":"_kyc","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTransferRouter","inputs":[{"type":"address","name":"_transferRouter","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"transferRouter","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unpause","inputs":[]}]
            

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063d648e0c8116100ad578063da72c1e81161007c578063da72c1e814610439578063dd62ed3e1461044c578063f2fde38b14610485578063f71c559c14610498578063fcd6c191146104ab57600080fd5b8063d648e0c8146103e8578063d738a1ef146103fb578063d864e74014610413578063d89f92d41461042657600080fd5b8063a9059cbb116100e9578063a9059cbb146103a6578063bddae40e146103b9578063c7095909146103cc578063cef3810f146103df57600080fd5b80638da5cb5b1461034e57806390d6b45f1461037857806395d89b411461038b578063a457c2d71461039357600080fd5b80633f4ba83a1161019d5780635c975abb1161016c5780635c975abb146102fb57806370a0823114610308578063715018a6146103315780638456cb59146103395780638ad1a37f1461034157600080fd5b80633f4ba83a146102ba578063480a6229146102c2578063483a83df146102d557806359e026f7146102e857600080fd5b806323b872dd116101d957806323b872dd1461026b5780632abd04381461027e578063313ce5671461028857806339509351146102a757600080fd5b806306fdde031461020b578063095ea7b3146102295780631714d7f31461024c57806318160ddd14610254575b600080fd5b6102136104be565b60405161022091906117f5565b60405180910390f35b61023c610237366004611866565b61054c565b6040519015158152602001610220565b610213610562565b61025d60095481565b604051908152602001610220565b61023c610279366004611890565b61056f565b610286610644565b005b600c546102959060ff1681565b60405160ff9091168152602001610220565b61023c6102b5366004611866565b610682565b6102866106be565b6102866102d03660046118cc565b6106f6565b6102866102e33660046118cc565b610830565b61023c6102f6366004611890565b61087b565b60005461023c9060ff1681565b61025d6103163660046118cc565b6001600160a01b031660009081526007602052604090205490565b610286610a98565b610286610ad2565b60045461023c9060ff1681565b60045461010090046001600160a01b03165b6040516001600160a01b039091168152602001610220565b600254610360906001600160a01b031681565b610213610b0a565b61023c6103a1366004611866565b610b17565b61023c6103b4366004611866565b610ba6565b6102866103c73660046118cc565b610bd5565b6102866103da3660046118cc565b610c5e565b61025d60035481565b600654610360906001600160a01b031681565b6000546103609061010090046001600160a01b031681565b600554610360906001600160a01b031681565b6102866104343660046118ee565b610d13565b61023c610447366004611890565b610d46565b61025d61045a366004611907565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6102866104933660046118cc565b610f81565b61023c6104a6366004611890565b61101f565b61023c6104b9366004611890565b611121565b600a80546104cb9061193a565b80601f01602080910402602001604051908101604052809291908181526020018280546104f79061193a565b80156105445780601f1061051957610100808354040283529160200191610544565b820191906000526020600020905b81548152906001019060200180831161052757829003601f168201915b505050505081565b60006105593384846113fe565b50600192915050565b600180546104cb9061193a565b6000805460ff161561059c5760405162461bcd60e51b815260040161059390611975565b60405180910390fd5b6105a7848484611522565b6001600160a01b03841660009081526008602090815260408083203384529091529020548281101561062c5760405162461bcd60e51b815260206004820152602860248201527f4b415032303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610593565b61063985338584036113fe565b506001949350505050565b6005546001600160a01b0316331461066e5760405162461bcd60e51b81526004016105939061199f565b6106806004805460ff19166001179055565b565b3360008181526008602090815260408083206001600160a01b038716845290915281205490916105599185906106b99086906119e3565b6113fe565b6004546001600160a01b036101009091041633146106ee5760405162461bcd60e51b815260040161059390611a09565b6106806116b2565b60045461010090046001600160a01b03166001600160a01b0316336001600160a01b0316148061073057506005546001600160a01b031633145b61074c5760405162461bcd60e51b815260040161059390611a3e565b6001600160a01b0381166107c85760405162461bcd60e51b815260206004820152603b60248201527f417574686f72697a6174696f6e3a206e65772061646d696e2070726f6a65637460448201527f20726f7574657220697320746865207a65726f206164647265737300000000006064820152608401610593565b6000805460405133926001600160a01b0385811693610100900416917f58e55f165b909274f0282e1ac942856a6d21936c654774fbdc15a6f8966a17ce9190a4600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b0316331461085a5760405162461bcd60e51b81526004016105939061199f565b600280546001600160a01b0319166001600160a01b03831617905550565b50565b6000805460ff161561089f5760405162461bcd60e51b815260040161059390611975565b6000546040516302b98ccf60e41b81526101009091046001600160a01b031690632b98ccf0906108d6903390600190600401611a92565b602060405180830381865afa1580156108f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109179190611b4b565b8061092c57506006546001600160a01b031633145b6109485760405162461bcd60e51b815260040161059390611b6d565b6003546002546040516306f19a8d60e21b81526001600160a01b03878116600483015290911690631bc66a3490602401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190611bcb565b10158015610a3757506003546002546040516306f19a8d60e21b81526001600160a01b03868116600483015290911690631bc66a34906024015b602060405180830381865afa158015610a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a349190611bcb565b10155b610a835760405162461bcd60e51b815260206004820152601c60248201527f4b415032303a206f6e6c7920696e7465726e616c20707572706f7365000000006044820152606401610593565b610a8e848484611522565b5060019392505050565b6004546001600160a01b03610100909104163314610ac85760405162461bcd60e51b815260040161059390611a09565b610680600061173b565b6004546001600160a01b03610100909104163314610b025760405162461bcd60e51b815260040161059390611a09565b610680611795565b600b80546104cb9061193a565b3360009081526008602090815260408083206001600160a01b038616845290915281205482811015610b995760405162461bcd60e51b815260206004820152602560248201527f4b415032303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610593565b610a8e33858584036113fe565b6000805460ff1615610bca5760405162461bcd60e51b815260040161059390611975565b610559338484611522565b6005546001600160a01b03163314610bff5760405162461bcd60e51b81526004016105939061199f565b60055460405133916001600160a01b03848116929116907f98be4d11812ae954fb899148019b8b73771468cd9346e1ca47d2fa731011eae690600090a4600580546001600160a01b0319166001600160a01b0392909216919091179055565b60045461010090046001600160a01b03166001600160a01b0316336001600160a01b03161480610c9857506005546001600160a01b031633145b610cb45760405162461bcd60e51b815260040161059390611a3e565b60065460405133916001600160a01b03848116929116907fb82f5713184c2542a2134cb1d30de213eb0a56612721e1d610eb0299c3771df590600090a4600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d3d5760405162461bcd60e51b81526004016105939061199f565b61087881600355565b6005546000906001600160a01b03163314610d735760405162461bcd60e51b81526004016105939061199f565b60045460ff1615610eb2576002546040516306f19a8d60e21b81526001600160a01b0386811660048301526000921690631bc66a3490602401602060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ded9190611bcb565b118015610e6657506002546040516306f19a8d60e21b81526001600160a01b0385811660048301526000921690631bc66a3490602401602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e649190611bcb565b115b610eb25760405162461bcd60e51b815260206004820152601d60248201527f4b41503732313a206f6e6c7920696e7465726e616c20707572706f73650000006044820152606401610593565b6001600160a01b03841660009081526007602052604090205482811015610eeb5760405162461bcd60e51b815260040161059390611be4565b6001600160a01b03808616600090815260076020526040808220868503905591861681529081208054859290610f229084906119e3565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610f6e91815260200190565b60405180910390a3506001949350505050565b6004546001600160a01b03610100909104163314610fb15760405162461bcd60e51b815260040161059390611a09565b6001600160a01b0381166110165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610593565b6108788161173b565b6000805460ff16156110435760405162461bcd60e51b815260040161059390611975565b6000546040516302b98ccf60e41b81526101009091046001600160a01b031690632b98ccf09061107a903390600190600401611a92565b602060405180830381865afa158015611097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bb9190611b4b565b806110d057506006546001600160a01b031633145b6110ec5760405162461bcd60e51b815260040161059390611b6d565b6003546002546040516306f19a8d60e21b81526001600160a01b03878116600483015290911690631bc66a34906024016109f3565b6000805460ff16156111455760405162461bcd60e51b815260040161059390611975565b6000546040516302b98ccf60e41b81526101009091046001600160a01b031690632b98ccf09061117c903390600190600401611a92565b602060405180830381865afa158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190611b4b565b8061123b5750600054604051631bea69e360e01b81526101009091046001600160a01b031690631bea69e3906111fa903390600190600401611a92565b602060405180830381865afa158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b9190611b4b565b6112a35760405162461bcd60e51b815260206004820152603360248201527f417574686f72697a6174696f6e3a2072657374726963746564206f6e6c7920736044820152723ab832b91030b236b4b71037b91030b236b4b760691b6064820152608401610593565b6003546002546040516306f19a8d60e21b81526001600160a01b03878116600483015290911690631bc66a3490602401602060405180830381865afa1580156112f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113149190611bcb565b1015801561139157506003546002546040516306f19a8d60e21b81526001600160a01b03868116600483015290911690631bc66a3490602401602060405180830381865afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190611bcb565b10155b6113f75760405162461bcd60e51b815260206004820152603160248201527f4b415032303a206f776e6572206f72207370656e64657220616464726573732060448201527034b9903737ba10309025aca1903ab9b2b960791b6064820152608401610593565b610a8e8484845b6001600160a01b0383166114605760405162461bcd60e51b8152602060048201526024808201527f4b415032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610593565b6001600160a01b0382166114c15760405162461bcd60e51b815260206004820152602260248201527f4b415032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610593565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115865760405162461bcd60e51b815260206004820152602560248201527f4b415032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610593565b6001600160a01b0382166115e85760405162461bcd60e51b815260206004820152602360248201527f4b415032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610593565b6001600160a01b038316600090815260076020526040902054818110156116215760405162461bcd60e51b815260040161059390611be4565b6001600160a01b038085166000908152600760205260408082208585039055918516815290812080548492906116589084906119e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116a491815260200190565b60405180910390a350505050565b60005460ff166116fb5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610593565b6000805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b600480546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005460ff16156117b85760405162461bcd60e51b815260040161059390611975565b6000805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611731565b600060208083528351808285015260005b8181101561182257858101830151858201604001528201611806565b81811115611834576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461186157600080fd5b919050565b6000806040838503121561187957600080fd5b6118828361184a565b946020939093013593505050565b6000806000606084860312156118a557600080fd5b6118ae8461184a565b92506118bc6020850161184a565b9150604084013590509250925092565b6000602082840312156118de57600080fd5b6118e78261184a565b9392505050565b60006020828403121561190057600080fd5b5035919050565b6000806040838503121561191a57600080fd5b6119238361184a565b91506119316020840161184a565b90509250929050565b600181811c9082168061194e57607f821691505b6020821081141561196f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526024908201527f436f6d6d69747465653a2072657374726963746564206f6e6c7920636f6d6d696040820152637474656560e01b606082015260800190565b60008219821115611a0457634e487b7160e01b600052601160045260246000fd5b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526034908201527f416363657373436f6e74726f6c6c65723a2072657374726963746564206f6e6c60408201527379206f776e6572206f7220636f6d6d697474656560601b606082015260800190565b60018060a01b0383168152600060206040818401526000845481600182811c915080831680611ac257607f831692505b858310811415611ae057634e487b7160e01b85526022600452602485fd5b6040880183905260608801818015611aff5760018114611b1057611b3b565b60ff19861682528782019650611b3b565b60008b81526020902060005b86811015611b3557815484820152908501908901611b1c565b83019750505b50949a9950505050505050505050565b600060208284031215611b5d57600080fd5b815180151581146118e757600080fd5b602080825260409082018190527f416363657373436f6e74726f6c6c65723a2072657374726963746564206f6e6c908201527f792073757065722061646d696e206f72207472616e7366657220726f75746572606082015260800190565b600060208284031215611bdd57600080fd5b5051919050565b60208082526026908201527f4b415032303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b60608201526080019056fea26469706673582212209f3d44fad87f6d35c77ab012eeb444a0cc84290fb73a400a8630ea123c9db3a664736f6c634300080b0033