Contract 0x950e2522a0abe6e6132df1d45b0856779915d779

Contract Overview

Balance:
0 BNB

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x4e56bb25d514d2f76bc632fa98952a00cff92e7dc4e75ddfdb0979c57439fee2Mint123231902021-09-13 6:22:0210 days 23 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0x1e05c879f66534333501c2b78209152f6ddc7db6205a820381268dea565564d3Mint122062102021-09-09 4:13:2515 days 1 hr ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0xad7fe29fe4ac56ff12106efe18d31b3dc7f5e47d077adc9f5e968c38143be9a6Approve121921772021-09-08 16:30:5415 days 13 hrs ago0xfa9c4cf2bd7cd9d8556d737010f119b37e257709 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00030093
0xf48ff25bf7dc19c526ac8e8b5938ec5d28c5d01708da37618a15cfc31206c931Approve121329722021-09-06 15:08:0217 days 14 hrs ago0xfa9c4cf2bd7cd9d8556d737010f119b37e257709 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.000451395
0x8027ece17d87276a9484bcff14726688902a339be8b0e4bbe0e393256a43af7bMint121222102021-09-06 6:04:2017 days 23 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0xefa522605cb3dc6b578df61a9a8b1fcfd5ca8cf55988dcea452d4fe28a2bd8dcMint120429232021-09-03 10:53:4720 days 18 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0xd3c4dbfc34bcc0640adbe6fd9faecc6fb2e52cec8917f4daa255931b4c1fa1a7Mint119249582021-08-30 8:11:5424 days 21 hrs ago0x6cf9380f5e1a38e3b4c5101c1aa0211603fec13f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00059344
0xd55b08ef04300282acdf5d71ae6ed6a11471522b5cedc28acb3a5641922699ccApprove118707412021-08-28 10:54:0726 days 18 hrs ago0xfa9c4cf2bd7cd9d8556d737010f119b37e257709 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00045093
0xe167985e62b904310ffb668d5f55453cb7653360cf4c68fcf8da44253a9af834Mint118339082021-08-27 4:11:4828 days 1 hr ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0x439d15ea1838a95d2017351b0c5f39059b24b96ed54bba198429c204a02e5fe8Mint118098332021-08-26 8:07:5328 days 21 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0x9b2d29af242fdb509b25032b25f13bd829140821bcc2de9d1f155b39249d336fApprove117890642021-08-25 14:35:5029 days 15 hrs ago0xaddebdbf7cd61211416e790a690aec58b82f7c22 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044925
0x75ca451219f749b8b9bd4cac3d935948b51ca7e70c99711f4a073e89aabd9a38Transfer117884262021-08-25 13:56:0729 days 15 hrs ago0x3e55491eadeca69225eb857c35d9e0a2270960e6 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00051942
0x3663c4a388a6647bc06432ab5646f5dcef0bda99919536199a6d6c662f3eba2fMint117817492021-08-25 8:22:1529 days 21 hrs ago0x6cf9380f5e1a38e3b4c5101c1aa0211603fec13f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00059344
0x9ad6beb624292f50b970e1bcb098706fc5f26e556a795ab6b0f9bd368030071fMint117564862021-08-24 11:18:1130 days 18 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0x0412dbe103ecfcc4caee72da5848465230eb51111da9575b25420b452a019a0cMint117505232021-08-24 6:19:3430 days 23 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0xd28f912c055cc3bd09a4890d0d8f6c6c98d1ae3636e6170942522dedabfde137Mint117283802021-08-23 11:52:0531 days 17 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0xb9677e68ab616cb74dd746005dfbf383ae735fbe96b5fda89e55ff7d908f2c32Transfer117038112021-08-22 15:23:3832 days 14 hrs ago0xbc406a8cdea30819bac178d2c2afca080a3477ce IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.003065286
0xa4749a2fa184c3df3fb15c316699c3dcfb5ceab72a4fe70686651aa89ba1dff8Mint116939562021-08-22 6:49:1432 days 22 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0xd4963c77fa2581530fe503a2b82d24909eb8333c2838dd42dd68be9dfb937161Mint116422992021-08-20 11:27:0434 days 18 hrs ago0xfc9da28545ddcadcdcdb2ae16c4705de68cb6570 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0xa362de13fe9ff70287d540e708732965ea3dc94217db95e2296d42c6080ee9e3Mint116081732021-08-19 6:32:5135 days 23 hrs ago0x6cf9380f5e1a38e3b4c5101c1aa0211603fec13f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00059344
0x8613055165bde85bd40c5efb538afab27b986393cb7ebd134e1dc4da88fe73cfMint114736602021-08-14 13:28:3240 days 16 hrs ago0xccf12b7b2792d789542810d5574711b9c81d002f IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0xcb3b294b434642d80579e011c34a1b343f47e03e2e8a7c15a8e14dd46da48b09Mint114735042021-08-14 13:20:4440 days 16 hrs ago0x626125d30a86d3b069dcc3a72c81e4174a4eaf90 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00059344
0xae2b3e51bb465e385620ca3ff977b1847c063d280aee1d9f21d18dc7a4f77f10Mint114411792021-08-13 10:24:2241 days 19 hrs ago0x67801add292db3c67815c7b6f282eb61b9ee9cb0 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.000487784
0x9bc92ab95a01c56ef9c9d98309ab890fe7afc4484b161311dc4ed9ffa5d83cd5Mint114117702021-08-12 9:53:2742 days 19 hrs ago0xa99e29bf5ce2afe726d4ab15d62bdb7786a7083d IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00044344
0x70ea5516cf4094d13237ac6b14f212a8e7b5519631f3618f917206acc0daf710Approve114109002021-08-12 9:09:5742 days 20 hrs ago0x84e5f1f648040a1af939be6dcac1a2d27da85d85 IN  0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB0.00045093
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x67885a8cf97fa325cae771c95fd09e93bbdb936328a2323205794da9c996061c126077322021-09-23 5:31:321 day 16 mins ago 0x00044190feed366ba29be0d3e3d4d12919f34782 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x67885a8cf97fa325cae771c95fd09e93bbdb936328a2323205794da9c996061c126077322021-09-23 5:31:321 day 16 mins ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0x333ef863816362cc7d15db0fe3dcb73b5e4aee6a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0x333ef863816362cc7d15db0fe3dcb73b5e4aee6a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0x333ef863816362cc7d15db0fe3dcb73b5e4aee6a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0x4cc061bfb00b04384844bf9a73b4bb67b101d77a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0xae866e6d2b96180cd46d02d5ab2206d00c00883b 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0xae866e6d2b96180cd46d02d5ab2206d00c00883b 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0x333ef863816362cc7d15db0fe3dcb73b5e4aee6a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0x333ef863816362cc7d15db0fe3dcb73b5e4aee6a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x990b3da64995cf20e5d5bc3fb36ee4819fe90536cf8ec067e50a938d0cdf9b61126077202021-09-23 5:30:561 day 16 mins ago 0x4cc061bfb00b04384844bf9a73b4bb67b101d77a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x0916d5550974a7fbee5177cc95115e179e71d7db2fe33a337dccfbcacc94b19a126076632021-09-23 5:28:051 day 19 mins ago 0x00044190feed366ba29be0d3e3d4d12919f34782 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x0916d5550974a7fbee5177cc95115e179e71d7db2fe33a337dccfbcacc94b19a126076632021-09-23 5:28:051 day 19 mins ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x68207f20d200974b6b43bbfc3781d3132efa10a45fc306c77ed039124ab1486a123231832021-09-13 6:21:4110 days 23 hrs ago 0x4cc061bfb00b04384844bf9a73b4bb67b101d77a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x68207f20d200974b6b43bbfc3781d3132efa10a45fc306c77ed039124ab1486a123231832021-09-13 6:21:4110 days 23 hrs ago 0x333ef863816362cc7d15db0fe3dcb73b5e4aee6a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x68207f20d200974b6b43bbfc3781d3132efa10a45fc306c77ed039124ab1486a123231832021-09-13 6:21:4110 days 23 hrs ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x68207f20d200974b6b43bbfc3781d3132efa10a45fc306c77ed039124ab1486a123231832021-09-13 6:21:4110 days 23 hrs ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x68207f20d200974b6b43bbfc3781d3132efa10a45fc306c77ed039124ab1486a123231832021-09-13 6:21:4110 days 23 hrs ago 0x4cc061bfb00b04384844bf9a73b4bb67b101d77a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x92aaa59a53cdf7ac7502303089b67df7638d5bb8a87de6e0ca346bad8d22078c122751512021-09-11 13:49:5512 days 15 hrs ago 0xd99d1c33f9fc3444f8101754abc46c52416550d1 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
0x92aaa59a53cdf7ac7502303089b67df7638d5bb8a87de6e0ca346bad8d22078c122751512021-09-11 13:49:5512 days 15 hrs ago 0x333ef863816362cc7d15db0fe3dcb73b5e4aee6a 0x950e2522a0abe6e6132df1d45b0856779915d7790 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x6Ca7Cdcb3FA4712D09598d64a150536D1354992e

Contract Name:
MoonRatBUSD

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-06-25
*/

// File: @openzeppelin/contracts/GSN/Context.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

pragma solidity >=0.6.0 <0.8.0;

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/math/SafeMath.sol

pragma solidity >=0.6.0 <0.8.0;

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol

pragma solidity >=0.6.0 <0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

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

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

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

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

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

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

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

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

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

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

// File: @openzeppelin/contracts/Utils/ReentrancyGuard.sol

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

// File: contracts/lib/MoonRatBUSD.sol

pragma solidity >=0.6.8;
pragma experimental ABIEncoderV2;




contract MoonRatBUSD is ERC20, ReentrancyGuard {
    using SafeMath for uint256;

    mapping(address => uint256) public nextMintDate;

    constructor() public ERC20("MoonRat BUSD", "MBUSD") {
        _mint(msg.sender, 10 * 10 ** 9 * 10 ** 18);
    }

    function mint(uint256 amount) external nonReentrant {
        // Check that the calling account has the minter role
        require(amount <= 1000 ether, 'Error: Quota limit exceeds');

        require(nextMintDate[msg.sender] <= block.timestamp, 'Error: Minting time is not reached');

        nextMintDate[msg.sender] = block.timestamp + 1 hours;

        _mint(msg.sender, amount);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[{"internalType":"address","name":"","type":"address"}],"name":"nextMintDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f4d6f6f6e526174204255534400000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d4255534400000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000306565b508060049080519060200190620000af92919062000306565b506012600560006101000a81548160ff021916908360ff16021790555050506001600681905550620000f4336b204fce5e3e25026110000000620000fa60201b60201c565b620004c6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200016d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000164906200046c565b60405180910390fd5b6200018160008383620002a960201b60201c565b6200019d81600254620002ae60201b620009421790919060201c565b600281905550620001fb816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002ae60201b620009421790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200029d91906200048e565b60405180910390a35050565b505050565b600080828401905083811015620002fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f3906200044a565b60405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200034957805160ff19168380011785556200037a565b828001600101855582156200037a579182015b82811115620003795782518255916020019190600101906200035c565b5b5090506200038991906200038d565b5090565b620003b291905b80821115620003ae57600081600090555060010162000394565b5090565b90565b6000620003c4601b83620004ab565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600062000406601f83620004ab565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6200044481620004bc565b82525050565b600060208201905081810360008301526200046581620003b5565b9050919050565b600060208201905081810360008301526200048781620003f7565b9050919050565b6000602082019050620004a5600083018462000439565b92915050565b600082825260208201905092915050565b6000819050919050565b6117b980620004d66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d714610228578063a9059cbb14610258578063d2c65ce814610288578063dd62ed3e146102b8576100cf565b806370a08231146101be57806395d89b41146101ee578063a0712d681461020c576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102e8565b6040516100e991906114b5565b60405180910390f35b61010c600480360381019061010791906110d1565b61038a565b604051610119919061149a565b60405180910390f35b61012a6103a8565b60405161013791906115f7565b60405180910390f35b61015a60048036038101906101559190611082565b6103b2565b604051610167919061149a565b60405180910390f35b61017861048b565b6040516101859190611612565b60405180910390f35b6101a860048036038101906101a391906110d1565b6104a2565b6040516101b5919061149a565b60405180910390f35b6101d860048036038101906101d3919061101d565b610555565b6040516101e591906115f7565b60405180910390f35b6101f661059d565b60405161020391906114b5565b60405180910390f35b6102266004803603810190610221919061110d565b61063f565b005b610242600480360381019061023d91906110d1565b6107b8565b60405161024f919061149a565b60405180910390f35b610272600480360381019061026d91906110d1565b610885565b60405161027f919061149a565b60405180910390f35b6102a2600480360381019061029d919061101d565b6108a3565b6040516102af91906115f7565b60405180910390f35b6102d260048036038101906102cd9190611046565b6108bb565b6040516102df91906115f7565b60405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103805780601f1061035557610100808354040283529160200191610380565b820191906000526020600020905b81548152906001019060200180831161036357829003601f168201915b5050505050905090565b600061039e610397610997565b848461099f565b6001905092915050565b6000600254905090565b60006103bf848484610b6a565b610480846103cb610997565b61047b8560405180606001604052806028815260200161173760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610431610997565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dff9092919063ffffffff16565b61099f565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061054b6104af610997565b8461054685600160006104c0610997565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461094290919063ffffffff16565b61099f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106355780601f1061060a57610100808354040283529160200191610635565b820191906000526020600020905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b60026006541415610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c906115b7565b60405180910390fd5b6002600681905550683635c9adc5dea000008111156106d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d090611537565b60405180910390fd5b42600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290611557565b60405180910390fd5b610e104201600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107ad3382610e5a565b600160068190555050565b600061087b6107c5610997565b846108768560405180606001604052806025815260200161175f60259139600160006107ef610997565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dff9092919063ffffffff16565b61099f565b6001905092915050565b6000610899610892610997565b8484610b6a565b6001905092915050565b60076020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008082840190508381101561098d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098490611517565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0690611597565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a76906114f7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b5d91906115f7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd190611577565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c41906114d7565b60405180910390fd5b610c55838383610fee565b610cc081604051806060016040528060268152602001611711602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dff9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d53816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461094290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610df291906115f7565b60405180910390a3505050565b6000838311158290610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e91906114b5565b60405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec1906115d7565b60405180910390fd5b610ed660008383610fee565b610eeb8160025461094290919063ffffffff16565b600281905550610f42816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461094290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fe291906115f7565b60405180910390a35050565b505050565b600081359050611002816116e2565b92915050565b600081359050611017816116f9565b92915050565b60006020828403121561102f57600080fd5b600061103d84828501610ff3565b91505092915050565b6000806040838503121561105957600080fd5b600061106785828601610ff3565b925050602061107885828601610ff3565b9150509250929050565b60008060006060848603121561109757600080fd5b60006110a586828701610ff3565b93505060206110b686828701610ff3565b92505060406110c786828701611008565b9150509250925092565b600080604083850312156110e457600080fd5b60006110f285828601610ff3565b925050602061110385828601611008565b9150509250929050565b60006020828403121561111f57600080fd5b600061112d84828501611008565b91505092915050565b61113f8161165b565b82525050565b60006111508261162d565b61115a8185611638565b935061116a81856020860161169e565b611173816116d1565b840191505092915050565b600061118b602383611638565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111f1602283611638565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611257601b83611638565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611297601a83611638565b91507f4572726f723a2051756f7461206c696d697420657863656564730000000000006000830152602082019050919050565b60006112d7602283611638565b91507f4572726f723a204d696e74696e672074696d65206973206e6f7420726561636860008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061133d602583611638565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113a3602483611638565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611409601f83611638565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000611449601f83611638565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61148581611687565b82525050565b61149481611691565b82525050565b60006020820190506114af6000830184611136565b92915050565b600060208201905081810360008301526114cf8184611145565b905092915050565b600060208201905081810360008301526114f08161117e565b9050919050565b60006020820190508181036000830152611510816111e4565b9050919050565b600060208201905081810360008301526115308161124a565b9050919050565b600060208201905081810360008301526115508161128a565b9050919050565b60006020820190508181036000830152611570816112ca565b9050919050565b6000602082019050818103600083015261159081611330565b9050919050565b600060208201905081810360008301526115b081611396565b9050919050565b600060208201905081810360008301526115d0816113fc565b9050919050565b600060208201905081810360008301526115f08161143c565b9050919050565b600060208201905061160c600083018461147c565b92915050565b6000602082019050611627600083018461148b565b92915050565b600081519050919050565b600082825260208201905092915050565b600061165482611667565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156116bc5780820151818401526020810190506116a1565b838111156116cb576000848401525b50505050565b6000601f19601f8301169050919050565b6116eb81611649565b81146116f657600080fd5b50565b61170281611687565b811461170d57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122062ead4d49280925b945fb29633c2505629bba7348418c22be15cb515bf7c042964736f6c63430006080033

Deployed ByteCode Sourcemap

23018:668:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23018:668:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;11379:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;13485:169;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12454:100;;;:::i;:::-;;;;;;;;;;;;;;;;14136:321;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12306:83;;;:::i;:::-;;;;;;;;;;;;;;;;14866:218;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12617:119;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11581:87;;;:::i;:::-;;;;;;;;;;;;;;;;23284:399;;;;;;;;;;;;;;;;:::i;:::-;;15587:269;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12949:175;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23107:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13187:151;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11379:83;11416:13;11449:5;11442:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11379:83;:::o;13485:169::-;13568:4;13585:39;13594:12;:10;:12::i;:::-;13608:7;13617:6;13585:8;:39::i;:::-;13642:4;13635:11;;13485:169;;;;:::o;12454:100::-;12507:7;12534:12;;12527:19;;12454:100;:::o;14136:321::-;14242:4;14259:36;14269:6;14277:9;14288:6;14259:9;:36::i;:::-;14306:121;14315:6;14323:12;:10;:12::i;:::-;14337:89;14375:6;14337:89;;;;;;;;;;;;;;;;;:11;:19;14349:6;14337:19;;;;;;;;;;;;;;;:33;14357:12;:10;:12::i;:::-;14337:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14306:8;:121::i;:::-;14445:4;14438:11;;14136:321;;;;;:::o;12306:83::-;12347:5;12372:9;;;;;;;;;;;12365:16;;12306:83;:::o;14866:218::-;14954:4;14971:83;14980:12;:10;:12::i;:::-;14994:7;15003:50;15042:10;15003:11;:25;15015:12;:10;:12::i;:::-;15003:25;;;;;;;;;;;;;;;:34;15029:7;15003:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14971:8;:83::i;:::-;15072:4;15065:11;;14866:218;;;;:::o;12617:119::-;12683:7;12710:9;:18;12720:7;12710:18;;;;;;;;;;;;;;;;12703:25;;12617:119;;;:::o;11581:87::-;11620:13;11653:7;11646:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11581:87;:::o;23284:399::-;21952:1;22558:7;;:19;;22550:63;;;;;;;;;;;;;;;;;;;;;;21952:1;22691:7;:18;;;;23428:10:::1;23418:6;:20;;23410:59;;;;;;;;;;;;;;;;;;;;;;23518:15;23490:12;:24;23503:10;23490:24;;;;;;;;;;;;;;;;:43;;23482:90;;;;;;;;;;;;;;;;;;;;;;23630:7;23612:15;:25;23585:12;:24;23598:10;23585:24;;;;;;;;;;;;;;;:52;;;;23650:25;23656:10;23668:6;23650:5;:25::i;:::-;21908:1:::0;22870:7;:22;;;;23284:399;:::o;15587:269::-;15680:4;15697:129;15706:12;:10;:12::i;:::-;15720:7;15729:96;15768:15;15729:96;;;;;;;;;;;;;;;;;:11;:25;15741:12;:10;:12::i;:::-;15729:25;;;;;;;;;;;;;;;:34;15755:7;15729:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15697:8;:129::i;:::-;15844:4;15837:11;;15587:269;;;;:::o;12949:175::-;13035:4;13052:42;13062:12;:10;:12::i;:::-;13076:9;13087:6;13052:9;:42::i;:::-;13112:4;13105:11;;12949:175;;;;:::o;23107:47::-;;;;;;;;;;;;;;;;;:::o;13187:151::-;13276:7;13303:11;:18;13315:5;13303:18;;;;;;;;;;;;;;;:27;13322:7;13303:27;;;;;;;;;;;;;;;;13296:34;;13187:151;;;;:::o;4755:181::-;4813:7;4833:9;4849:1;4845;:5;4833:17;;4874:1;4869;:6;;4861:46;;;;;;;;;;;;;;;;;;;;;;4927:1;4920:8;;;4755:181;;;;:::o;665:106::-;718:15;753:10;746:17;;665:106;:::o;18734:346::-;18853:1;18836:19;;:5;:19;;;;18828:68;;;;;;;;;;;;;;;;;;;;;;18934:1;18915:21;;:7;:21;;;;18907:68;;;;;;;;;;;;;;;;;;;;;;19018:6;18988:11;:18;19000:5;18988:18;;;;;;;;;;;;;;;:27;19007:7;18988:27;;;;;;;;;;;;;;;:36;;;;19056:7;19040:32;;19049:5;19040:32;;;19065:6;19040:32;;;;;;;;;;;;;;;18734:346;;;:::o;16346:539::-;16470:1;16452:20;;:6;:20;;;;16444:70;;;;;;;;;;;;;;;;;;;;;;16554:1;16533:23;;:9;:23;;;;16525:71;;;;;;;;;;;;;;;;;;;;;;16609:47;16630:6;16638:9;16649:6;16609:20;:47::i;:::-;16689:71;16711:6;16689:71;;;;;;;;;;;;;;;;;:9;:17;16699:6;16689:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;16669:9;:17;16679:6;16669:17;;;;;;;;;;;;;;;:91;;;;16794:32;16819:6;16794:9;:20;16804:9;16794:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16771:9;:20;16781:9;16771:20;;;;;;;;;;;;;;;:55;;;;16859:9;16842:35;;16851:6;16842:35;;;16870:6;16842:35;;;;;;;;;;;;;;;16346:539;;;:::o;5658:192::-;5744:7;5777:1;5772;:6;;5780:12;5764:29;;;;;;;;;;;;;;;;;;;;;;;;;5804:9;5820:1;5816;:5;5804:17;;5841:1;5834:8;;;5658:192;;;;;:::o;17167:378::-;17270:1;17251:21;;:7;:21;;;;17243:65;;;;;;;;;;;;;;;;;;;;;;17321:49;17350:1;17354:7;17363:6;17321:20;:49::i;:::-;17398:24;17415:6;17398:12;;:16;;:24;;;;:::i;:::-;17383:12;:39;;;;17454:30;17477:6;17454:9;:18;17464:7;17454:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;17433:9;:18;17443:7;17433:18;;;;;;;;;;;;;;;:51;;;;17521:7;17500:37;;17517:1;17500:37;;;17530:6;17500:37;;;;;;;;;;;;;;;17167:378;;:::o;20105:92::-;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:130;;222:6;209:20;200:29;;234:33;261:5;234:33;;;194:78;;;;;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;399:1;396;389:12;351:2;434:1;451:53;496:7;487:6;476:9;472:22;451:53;;;441:63;;413:97;345:175;;;;;527:366;;;648:2;636:9;627:7;623:23;619:32;616:2;;;664:1;661;654:12;616:2;699:1;716:53;761:7;752:6;741:9;737:22;716:53;;;706:63;;678:97;806:2;824:53;869:7;860:6;849:9;845:22;824:53;;;814:63;;785:98;610:283;;;;;;900:491;;;;1038:2;1026:9;1017:7;1013:23;1009:32;1006:2;;;1054:1;1051;1044:12;1006:2;1089:1;1106:53;1151:7;1142:6;1131:9;1127:22;1106:53;;;1096:63;;1068:97;1196:2;1214:53;1259:7;1250:6;1239:9;1235:22;1214:53;;;1204:63;;1175:98;1304:2;1322:53;1367:7;1358:6;1347:9;1343:22;1322:53;;;1312:63;;1283:98;1000:391;;;;;;1398:366;;;1519:2;1507:9;1498:7;1494:23;1490:32;1487:2;;;1535:1;1532;1525:12;1487:2;1570:1;1587:53;1632:7;1623:6;1612:9;1608:22;1587:53;;;1577:63;;1549:97;1677:2;1695:53;1740:7;1731:6;1720:9;1716:22;1695:53;;;1685:63;;1656:98;1481:283;;;;;;1771:241;;1875:2;1863:9;1854:7;1850:23;1846:32;1843:2;;;1891:1;1888;1881:12;1843:2;1926:1;1943:53;1988:7;1979:6;1968:9;1964:22;1943:53;;;1933:63;;1905:97;1837:175;;;;;2019:104;2096:21;2111:5;2096:21;;;2091:3;2084:34;2078:45;;;2130:347;;2242:39;2275:5;2242:39;;;2293:71;2357:6;2352:3;2293:71;;;2286:78;;2369:52;2414:6;2409:3;2402:4;2395:5;2391:16;2369:52;;;2442:29;2464:6;2442:29;;;2437:3;2433:39;2426:46;;2222:255;;;;;;2485:372;;2645:67;2709:2;2704:3;2645:67;;;2638:74;;2745:34;2741:1;2736:3;2732:11;2725:55;2814:5;2809:2;2804:3;2800:12;2793:27;2848:2;2843:3;2839:12;2832:19;;2631:226;;;;2866:371;;3026:67;3090:2;3085:3;3026:67;;;3019:74;;3126:34;3122:1;3117:3;3113:11;3106:55;3195:4;3190:2;3185:3;3181:12;3174:26;3228:2;3223:3;3219:12;3212:19;;3012:225;;;;3246:327;;3406:67;3470:2;3465:3;3406:67;;;3399:74;;3506:29;3502:1;3497:3;3493:11;3486:50;3564:2;3559:3;3555:12;3548:19;;3392:181;;;;3582:326;;3742:67;3806:2;3801:3;3742:67;;;3735:74;;3842:28;3838:1;3833:3;3829:11;3822:49;3899:2;3894:3;3890:12;3883:19;;3728:180;;;;3917:371;;4077:67;4141:2;4136:3;4077:67;;;4070:74;;4177:34;4173:1;4168:3;4164:11;4157:55;4246:4;4241:2;4236:3;4232:12;4225:26;4279:2;4274:3;4270:12;4263:19;;4063:225;;;;4297:374;;4457:67;4521:2;4516:3;4457:67;;;4450:74;;4557:34;4553:1;4548:3;4544:11;4537:55;4626:7;4621:2;4616:3;4612:12;4605:29;4662:2;4657:3;4653:12;4646:19;;4443:228;;;;4680:373;;4840:67;4904:2;4899:3;4840:67;;;4833:74;;4940:34;4936:1;4931:3;4927:11;4920:55;5009:6;5004:2;4999:3;4995:12;4988:28;5044:2;5039:3;5035:12;5028:19;;4826:227;;;;5062:331;;5222:67;5286:2;5281:3;5222:67;;;5215:74;;5322:33;5318:1;5313:3;5309:11;5302:54;5384:2;5379:3;5375:12;5368:19;;5208:185;;;;5402:331;;5562:67;5626:2;5621:3;5562:67;;;5555:74;;5662:33;5658:1;5653:3;5649:11;5642:54;5724:2;5719:3;5715:12;5708:19;;5548:185;;;;5741:113;5824:24;5842:5;5824:24;;;5819:3;5812:37;5806:48;;;5861:107;5940:22;5956:5;5940:22;;;5935:3;5928:35;5922:46;;;5975:210;;6096:2;6085:9;6081:18;6073:26;;6110:65;6172:1;6161:9;6157:17;6148:6;6110:65;;;6067:118;;;;;6192:310;;6339:2;6328:9;6324:18;6316:26;;6389:9;6383:4;6379:20;6375:1;6364:9;6360:17;6353:47;6414:78;6487:4;6478:6;6414:78;;;6406:86;;6310:192;;;;;6509:416;;6709:2;6698:9;6694:18;6686:26;;6759:9;6753:4;6749:20;6745:1;6734:9;6730:17;6723:47;6784:131;6910:4;6784:131;;;6776:139;;6680:245;;;;6932:416;;7132:2;7121:9;7117:18;7109:26;;7182:9;7176:4;7172:20;7168:1;7157:9;7153:17;7146:47;7207:131;7333:4;7207:131;;;7199:139;;7103:245;;;;7355:416;;7555:2;7544:9;7540:18;7532:26;;7605:9;7599:4;7595:20;7591:1;7580:9;7576:17;7569:47;7630:131;7756:4;7630:131;;;7622:139;;7526:245;;;;7778:416;;7978:2;7967:9;7963:18;7955:26;;8028:9;8022:4;8018:20;8014:1;8003:9;7999:17;7992:47;8053:131;8179:4;8053:131;;;8045:139;;7949:245;;;;8201:416;;8401:2;8390:9;8386:18;8378:26;;8451:9;8445:4;8441:20;8437:1;8426:9;8422:17;8415:47;8476:131;8602:4;8476:131;;;8468:139;;8372:245;;;;8624:416;;8824:2;8813:9;8809:18;8801:26;;8874:9;8868:4;8864:20;8860:1;8849:9;8845:17;8838:47;8899:131;9025:4;8899:131;;;8891:139;;8795:245;;;;9047:416;;9247:2;9236:9;9232:18;9224:26;;9297:9;9291:4;9287:20;9283:1;9272:9;9268:17;9261:47;9322:131;9448:4;9322:131;;;9314:139;;9218:245;;;;9470:416;;9670:2;9659:9;9655:18;9647:26;;9720:9;9714:4;9710:20;9706:1;9695:9;9691:17;9684:47;9745:131;9871:4;9745:131;;;9737:139;;9641:245;;;;9893:416;;10093:2;10082:9;10078:18;10070:26;;10143:9;10137:4;10133:20;10129:1;10118:9;10114:17;10107:47;10168:131;10294:4;10168:131;;;10160:139;;10064:245;;;;10316:222;;10443:2;10432:9;10428:18;10420:26;;10457:71;10525:1;10514:9;10510:17;10501:6;10457:71;;;10414:124;;;;;10545:214;;10668:2;10657:9;10653:18;10645:26;;10682:67;10746:1;10735:9;10731:17;10722:6;10682:67;;;10639:120;;;;;10766:122;;10860:5;10854:12;10844:22;;10825:63;;;;10896:163;;11011:6;11006:3;10999:19;11048:4;11043:3;11039:14;11024:29;;10992:67;;;;;11067:91;;11129:24;11147:5;11129:24;;;11118:35;;11112:46;;;;11165:85;;11238:5;11231:13;11224:21;11213:32;;11207:43;;;;11257:121;;11330:42;11323:5;11319:54;11308:65;;11302:76;;;;11385:72;;11447:5;11436:16;;11430:27;;;;11464:81;;11535:4;11528:5;11524:16;11513:27;;11507:38;;;;11553:268;11618:1;11625:101;11639:6;11636:1;11633:13;11625:101;;;11715:1;11710:3;11706:11;11700:18;11696:1;11691:3;11687:11;11680:39;11661:2;11658:1;11654:10;11649:15;;11625:101;;;11741:6;11738:1;11735:13;11732:2;;;11806:1;11797:6;11792:3;11788:16;11781:27;11732:2;11602:219;;;;;11829:97;;11917:2;11913:7;11908:2;11901:5;11897:14;11893:28;11883:38;;11877:49;;;;11934:117;12003:24;12021:5;12003:24;;;11996:5;11993:35;11983:2;;12042:1;12039;12032:12;11983:2;11977:74;;12058:117;12127:24;12145:5;12127:24;;;12120:5;12117:35;12107:2;;12166:1;12163;12156:12;12107:2;12101:74;

Swarm Source

ipfs://62ead4d49280925b945fb29633c2505629bba7348418c22be15cb515bf7c0429
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading