Contract 0x6f2afbf4f5e5e804c5b954889d7bf3768a3c9a45 1

 
 
Txn Hash
Block
From
To
Value [Txn Fee]
0x2b4726e2f03caeea871432061b27317b88372a88a2a99271349d4e11ad4891d496608772021-08-01 14:40:3714 mins ago0xf04a6582d9c905fbbf471d867b4edde5d51875a1 IN  Hope: HOPE Token0 BNB0.00012615
0x256532507c269684c882a70e5a8bed588b9fedcd9c5367c6e89d0977a232d05596608672021-08-01 14:40:0715 mins ago0xf04a6582d9c905fbbf471d867b4edde5d51875a1 IN  Hope: HOPE Token0 BNB0.00022215
0xa7bdd4b6bd529927089d65cf34d4e73dd3e94a943769ab5c70e1ddaf7e07e0a596593322021-08-01 13:18:351 hr 36 mins ago0xaaac2319dbe7c2e29a26c3fb341ee542311fef9c IN  Hope: HOPE Token0 BNB0.00022215
0x390a204048e5b649a1f96bcc6ee9757d1f89c4c26abc8320437c88d8d3de836296591162021-08-01 13:07:471 hr 47 mins ago0x9a8df33e5512c695b672f7435d190049781b9070 IN  Hope: HOPE Token0 BNB0.000072615
0x2c2eec5740cf46c6c2e42718e0c3272d8fda02a79d6cb5434eee495a22981ba196585952021-08-01 12:39:212 hrs 16 mins ago0x7def6a2cf7bea3206bebcb979b952730ba3fa645 IN  Hope: HOPE Token0 BNB0.00022215
0x6f35dcbb3e34a8a5ca6c60ff66fdd225ac7ccadc1f13e47d80193f066c3baca296578912021-08-01 12:02:092 hrs 53 mins ago0x226bacaf8dfc573b77050c68b0668c0e7eb70ca2 IN  Hope: HOPE Token0 BNB0.00022215
0x65384a61a86e39dc559fde8eac4ea44ba2950122ef7d071eec2e6ed5ed1e5ff696538682021-08-01 8:32:486 hrs 22 mins ago0x9ccc50923de5c128fa09b769aa120dc7f6db98bf IN  Hope: HOPE Token0 BNB0.00022215
0x0ae428ceb4425ad0f6b28c089a15eddbbdcb6d452fc4bccd55a6097d64d22d8c96500622021-08-01 5:21:009 hrs 34 mins ago0x8376d4214ed3b3b11b552217c0d2c05361caf199 IN  Hope: HOPE Token0 BNB0.00022215
0xf4a09edda255669c7f41a923fe500eb4bf5e3c588710d20e07ebafa59e78240196477462021-08-01 3:21:5111 hrs 33 mins ago0x934e10d332512abbf220690bc01c4515a4a20613 IN  Hope: HOPE Token0 BNB0.00022215
0x1b45a4311f5ae2f68361de9137a803b6a1db1a06376231f3473ddb6e97d6d3c596474482021-08-01 3:06:5711 hrs 48 mins ago0xc6fca003de1fcf6d2caced148a4f9ac62a150005 IN  Hope: HOPE Token0 BNB0.00022215
0xb1fc3510113e2f9a2685709fa90bef78802a477b9de0275704bfce6bfaefbe7a96435722021-07-31 23:47:0415 hrs 8 mins ago0x17f4e282bdc584786be7e77cda3e93f787dd1602 IN  Hope: HOPE Token0 BNB0.00022215
0xa876d4cdd2648d49beb983801fc6010ff489a5bb5c8e9e12fe2ec3a4bb1a877096383812021-07-31 19:22:4019 hrs 32 mins ago0x752039efee41b699982b9963185eca2998a59fd9 IN  Hope: HOPE Token0 BNB0.00022215
0xacfcbf9c846c42a344ff03cd45fc45f6f6b01e79ad06c1e66e5bf462cf7b328896325022021-07-31 14:11:301 day 43 mins ago0xbbd59dc56cdcfa9b7ea871766d6f940d905507d8 IN  Hope: HOPE Token0 BNB0.00012615
0x44c04a0068eaa0bddbec9c45c5c9d315bafa4cf12697ab76a199d46cf03b469896324952021-07-31 14:11:011 day 44 mins ago0xbbd59dc56cdcfa9b7ea871766d6f940d905507d8 IN  Hope: HOPE Token0 BNB0.00022215
0xd76e297b6d83485e0d4d817f8eba18f68da78898aaa96bc2cc1b03886453c11196307022021-07-31 12:40:221 day 2 hrs ago0xa81720a52990a8987c4f09955eee6624e1935586 IN  Hope: HOPE Token0 BNB0.00022215
0xb1ae1c8bd89a1a717879e4c640ab3b03322ab435b1cc046c83bfb575833be82696274272021-07-31 9:50:481 day 5 hrs ago0x4ed8560a448f2a1dd0b451867077738d9b9d2f22 IN  Hope: HOPE Token0 BNB0.00022215
0x949de6d8a0bf72c65ad2b45471f90607f4a04a7b89222ea720fad0a1718f0ce396268242021-07-31 9:20:121 day 5 hrs ago0x1e3e2808e0866a02337b45fd5133042a045fbbc4 IN  Hope: HOPE Token0 BNB0.00022215
0xf21aea734163c07682122b4d4f159b7cff77ff0f1fa5f4b4ddf20701d11e5d0296264002021-07-31 8:58:381 day 5 hrs ago0x71df24005e69fb6c64823a4c8911cdcedf60aeab IN  Hope: HOPE Token0 BNB0.00022215
0xa81fe631b756f9084bfc164adae9414f249143e5d9e610a0983894bbea74f7b996261702021-07-31 8:47:081 day 6 hrs ago0x71df24005e69fb6c64823a4c8911cdcedf60aeab IN  Hope: HOPE Token0 BNB0.00022215
0xdc52f377e605c667682efe48e5f957c86b6655a6e9b5699c9c4d6618544b38a196251512021-07-31 7:55:511 day 6 hrs ago0xa054d097fec8b718e2cc15712b54f9921fd72811 IN  Hope: HOPE Token0 BNB0.00022215
0x7dab673c9bc52562077683c6a9b28decad598eac946a2ec841d51540925b5cda96191812021-07-31 2:53:211 day 12 hrs ago0x77a5d618a60d0d6344c36d8019ca771242f13e83 IN  Hope: HOPE Token0 BNB0.00025906
0x42adeacd9c81fa0e04f7df808a74bb6d26ef29ff1e51b24907c7f20f2b5af42d96165172021-07-31 0:40:061 day 14 hrs ago0xc199891a208f85b8173aeae2662c15aa716d00bc IN  Hope: HOPE Token0 BNB0.00022215
0x25f26f7cc6038f6975d111590a72f94c7c6920c730ec9aeca206fa56cdc076a096148062021-07-30 23:14:301 day 15 hrs ago0xe9d2afff18f08375d5b7a8a804e272b6c81ceb9f IN  Hope: HOPE Token0 BNB0.000313456
0xc5f380e59d80623b59681d833663013842dfef9a02e7c68148cdfa19d66de87996127802021-07-30 21:32:461 day 17 hrs ago0x0dcfd46980c641ef72bac81a05d8313f97a7da10 IN  Hope: HOPE Token0 BNB0.00022215
0x8f4236750fbd75bb4bb670f7fa8fdf8bfe902b18ed3a3a31cf657ec60d3b6bb396114542021-07-30 20:26:281 day 18 hrs ago0x23b240b298092f8eed083ac8d36befbcb84883a1 IN  Hope: HOPE Token0 BNB0.00022215
[ Download CSV Export 

OVERVIEW

$HOPE is a charity token with a robust charitable strategy designed to maximize profitability and social impact reach.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Hope

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-12
*/

// File: contracts/@openzeppelin/contracts/access/Roles.sol

pragma solidity ^0.5.0;


/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping(address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account)
        internal
        view
        returns (bool)
    {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

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

pragma solidity ^0.5.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.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor() internal {}

    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

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

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

pragma solidity ^0.5.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.
     * _Available since v2.4.0._
     */
    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.
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage)
        internal
        pure
        returns (uint256)
    {
        // Solidity only automatically asserts when dividing by 0
        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.
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage)
        internal
        pure
        returns (uint256)
    {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: contracts/@openzeppelin/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

pragma solidity ^0.5.0;


/**
 * @dev Interface of the BEP20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {BEP20Detailed}.
 */
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: contracts/@openzeppelin/contracts/token/ERC20/IERC20Fee.sol

pragma solidity ^0.5.0;


/**
 * @dev Interface of the BEP20Fee standard.
 */
interface IERC20Fee {
    /**
     * @dev Returns the `_basisPointsRate`
     */
    function basisPointsRate() external view returns (uint256);

    /**
     * @dev Returns the `_minimumFee`
     */
    function minimumFee() external view returns (uint256);

    /**
     * @dev Returns the `_maximumFee`
     */
    function maximumFee() external view returns (uint256);

    /**
     * @dev Returns the `_denominator`
     */
    function denominator() external view returns (uint256);

    /**
     * @dev Returns the special fees parameters for account
     * @param account Account address
     * @return A tuple of (uint256, uint256, uint256, bool) types
     */
    function fees(address account)
        external
        view
        returns (uint256, uint256, uint256, bool);

    /**
     * @dev Returns the `_feesCollector`
     */
    function feesCollector() external view returns (address);

    /**
     * @dev Sets contract fees collector to a new account (`newFeesCollector`).
     * @param newFeesCollector Account address of new fees collector
     * @return A bool value indicating whether the operation succeeded
     */
    function setFeesCollector(address newFeesCollector) external returns (bool);

    /**
     * @dev Sets `_basisPointsRate`, `_minimumFee` and `_maximumFee`
     * @param newBasisPointsRate Value of basis rate
     * @param newMinimumFee Value of minimum fee
     * @param newMaximumFee Value of maximum fee
     * @return A bool value indicating whether the operation succeeded
     */
    function setParams(
        uint256 newBasisPointsRate,
        uint256 newMinimumFee,
        uint256 newMaximumFee
    ) external returns (bool);

    /**
     * @dev Sets `basisPointsRate`, `minimumFee` and `maximumFee`
     * for `account` in `_fees` mapping
     * @param account Account address
     * @param newBasisPoints Value for account basis rate
     * @param newMinFee Value of account minimum fee
     * @param newMaxFee Value of account maximum fee
     * @param state Account special fees state (true/false)
     * @return A bool value indicating whether the operation succeeded
     */
    function setSpecialParams(
        address account,
        uint256 newBasisPoints,
        uint256 newMinFee,
        uint256 newMaxFee,
        bool state
    ) external returns (bool);

    /**
     * @dev Emitted when `_basisPointsRate`, `_minimumFee` and `_maximumFee`
     * parameters have been changed.
     */
    event Params(
        uint256 indexed newBasisPoints,
        uint256 indexed newMinFee,
        uint256 indexed newMaxFee
    );

    /**
     * @dev Emitted when `_basisPointsRate`, `_minimumFee` and `_maximumFee`
     * parameters have been changed for specific account.
     */
    event SpecialParams(
        address indexed account,
        uint256 indexed newBasisPoints,
        uint256 newMinFee,
        uint256 newMaxFee
    );

    /**
     * @dev Emitted when fees are moved to fees collector
     */
    event Fee(address indexed _feesCollector, uint256 indexed fee);

    /**
     * @dev Emitted when `_feesCollector` parameter have been changed
     */
    event FeesCollector(
        address indexed _feesCollector,
        address indexed newFeesCollector
    );
}

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

pragma solidity ^0.5.0;


/**
 * @dev Optional functions from the BEP20 standard.
 */
contract BEP20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of
     * these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name, string memory symbol, uint8 decimals)
        public
    {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    /**
     * @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.
     * 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;
    }
}

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

pragma solidity ^0.5.0;


/**
 * @dev Implementation of the {IERC20Fee} interface.
 */
contract BEP20Fee is Context, Ownable, IERC20, IERC20Fee, BEP20Detailed {
    using SafeMath for uint256;

    struct SpecialFee {
        uint256 basisPointsRate;
        uint256 minimumFee;
        uint256 maximumFee;
        bool isActive;
    }

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => SpecialFee) private _fees;

    uint256 private _totalSupply;

    // additional variables for use if transaction fees ever became necessary
    uint256 private _basisPointsRate;
    uint256 private _minimumFee;
    uint256 private _maximumFee;
    uint256 private _denominator;
    address private _feesCollector;

    uint256 public availableFee;
    mapping(address => bool) public isInWhiteList;
    bool public isOpened = false;

    /**
     * @dev Sets the values for `name`, `symbol`, `decimals`,
     * `_basisPointsRate`, `_maximumFee`, `_feesCollector`
     * and `_denominator`
     * @param name The name of the token
     * @param symbol The symbol of the token
     * @param decimals The number of decimals the token uses
     * @notice `name`, `symbol`, `decimals` and _denominator
     * values are immutable: they can only be set once during construction
     */
    constructor(string memory name, string memory symbol, uint8 decimals)
        public
        BEP20Detailed(name, symbol, decimals)
    {
        _basisPointsRate = 0;
        _maximumFee = 0;
        _feesCollector = _msgSender();
        _denominator = 10000;
    }

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

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

    /**
     * @dev See {IERC20Fee-basisPointsRate}.
     */
    function basisPointsRate() public view returns (uint256) {
        return _basisPointsRate;
    }

    /**
     * @dev See {IERC20Fee-minimumFee}.
     */
    function minimumFee() public view returns (uint256) {
        return _minimumFee;
    }

    /**
     * @dev See {IERC20Fee-maximumFee}.
     */
    function maximumFee() public view returns (uint256) {
        return _maximumFee;
    }

    /**
     * @dev See {IERC20Fee-denominator}.
     */
    function denominator() public view returns (uint256) {
        return _denominator;
    }

    /**
     * @dev See {IERC20-fees}.
     */
    function fees(address account)
        public
        view
        returns (uint256, uint256, uint256, bool)
    {
        return (
            _fees[account].basisPointsRate,
            _fees[account].minimumFee,
            _fees[account].maximumFee,
            _fees[account].isActive
        );
    }

    /**
     * @dev See {IERC20Fee-feesCollector}.
     */
    function feesCollector() public view returns (address) {
        return _feesCollector;
    }

    /**
     * @dev See {IERC20Fee-setFeesCollector}.
     */
    function setFeesCollector(address newFeesCollector)
        public
        onlyOwner
        returns (bool)
    {
        require(
            newFeesCollector != address(0),
            "SetFeesCollector: new fees collector is the zero address"
        );
        emit FeesCollector(_feesCollector, newFeesCollector);
        _feesCollector = newFeesCollector;
        return true;
    }

    /**
     * @dev See {IERC20Fee-setParams}.
     */
    function setParams(
        uint256 newBasisPoints,
        uint256 newMinFee,
        uint256 newMaxFee
    ) external onlyOwner returns (bool) {
        _basisPointsRate = newBasisPoints;
        _minimumFee = newMinFee;
        _maximumFee = newMaxFee;
        emit Params(newBasisPoints, newMinFee, newMaxFee);
        return true;
    }

    /**
     * @dev See {IERC20Fee-setSpecialParams}.
     */
    function setSpecialParams(
        address account,
        uint256 newBasisPoints,
        uint256 newMinFee,
        uint256 newMaxFee,
        bool state
    ) external onlyOwner returns (bool) {
        SpecialFee memory newSpecialParams = SpecialFee({
            basisPointsRate: newBasisPoints,
            minimumFee: newMinFee,
            maximumFee: newMaxFee,
            isActive: state
        });

        _fees[account] = newSpecialParams;
        emit SpecialParams(account, newBasisPoints, newMinFee, newMaxFee);
        return true;
    }

    /**
     * @dev Calculates fee for a specific`account`
     * @param account Sender account address
     * @param amount Amount of tokens to send
     * @return An uint256 value representing the account fee
     */
    function calculateFee(address account, uint256 amount)
        internal
        view
        returns (uint256)
    {
        (
            uint256 basisPoints,
            uint256 minFee,
            uint256 maxFee,
            bool active
        ) = fees(account);

        if (active) {
            uint256 fee = (amount.mul(basisPoints)).div(_denominator);

            if (fee < minFee) fee = minFee;
            else if (fee > maxFee) fee = maxFee;

            return fee;
        }

        uint256 fee = (amount.mul(_basisPointsRate)).div(_denominator);

        if (fee < _minimumFee) fee = _minimumFee;
        else if (fee > _maximumFee) fee = _maximumFee;

        return fee;
    }

    /**
     * @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 returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     * Requirements:
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public 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 {BEP20};
     * 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
        returns (bool)
    {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "BEP20: 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
        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
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "BEP20: 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
    {
        require(
            sender != address(0),
            "BEP20Fee: transfer from the zero address"
        );
        require(
            recipient != address(0),
            "BEP20Fee: transfer to the zero address"
        );
        require(
            isOpened == true || isInWhiteList[sender] == true || isInWhiteList[recipient] == true,
            "BEP20Fee: not allowed transfer"
        );

        uint256 fee = calculateFee(sender, amount);

        require(amount >= fee, "BEP20Fee: amount less then fee");

        _balances[sender] = _balances[sender].sub(
            amount,
            "BEP20Fee: transfer amount exceeds balance"
        );

        uint256 sendAmount = amount.sub(fee);

        _balances[recipient] = _balances[recipient].add(sendAmount);
        emit Transfer(sender, recipient, sendAmount);

        if (fee > 0) {
            availableFee = availableFee.add(fee);
            emit Fee(address(0), fee);
        }
    }

    function withdrawFee() external onlyOwner {
        _balances[_msgSender()] = _balances[_msgSender()].add(availableFee);
        availableFee = 0;
    }

    /** @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 {
        require(account != address(0), "BEP20: mint to the zero address");

        _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 {
        require(account != address(0), "BEP20: burn from the zero address");

        _balances[account] = _balances[account].sub(
            amount,
            "BEP20: 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 is 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 {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

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

    /**
     * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(
            account,
            _msgSender(),
            _allowances[account][_msgSender()].sub(
                amount,
                "BEP20: burn amount exceeds allowance"
            )
        );
    }
}

// File: contracts/StableCoin.sol

pragma solidity ^0.5.0;


contract Hope is BEP20Fee {
    using Roles for Roles.Role;

    Roles.Role private _burners;

    /**
     * @dev Emitted when account get access to {BurnerRole}
     */
    event BurnerAdded(address indexed account);

    /**
     * @dev Emitted when an account loses access to the {BurnerRole}
     */
    event BurnerRemoved(address indexed account);

    /**
     * @dev Throws if caller does not have the {BurnerRole}
     */
    modifier onlyBurner() {
        require(
            isBurner(_msgSender()),
            "BurnerRole: caller does not have the Burner role"
        );
        _;
    }

    /**
     * @dev Sets the values for `name`, `symbol`, `decimals`
     * and gives owner {MinterRole} and {BurnerRole}
     * @param name The name of the token
     * @param symbol The symbol of the token
     * @param decimals The number of decimals the token uses
     * @notice `name`, `symbol` and `decimals`
     * values are immutable: they can only be set once during construction
     */
    constructor(string memory name, string memory symbol, uint8 decimals)
        public
        BEP20Fee(name, symbol, decimals)
    {
        _mint(_msgSender(), (10 ** 9) * (10**uint256(decimals)));
        isInWhiteList[_msgSender()] = true;
        _addBurner(_msgSender());
    }

    /**
     * @dev Give an account access to {BurnerRole}
     * @param account Account address
     */
    function addBurner(address account) external onlyOwner {
        _addBurner(account);
    }

    /**
     * @dev Remove an account's access to {BurnerRole}
     * @param account Account address
     */
    function renounceBurner(address account) external onlyOwner {
        _removeBurner(account);
    }

    /**
     * @dev Check if an account has {BurnerRole}
     * @param account Account address
     * @return bool
     */
    function isBurner(address account) public view returns (bool) {
        return _burners.has(account);
    }

    /**
     * @dev Destroys `amount` of tokens from the caller. See {BEP20-_mint}
     * @param amount Amount to burn
     * @notice Requirements:
     * the caller must have the {BurnerRole}
     * @return bool
     */
    function burn(uint256 amount) external onlyBurner returns (bool) {
        _burn(_msgSender(), amount);
    }

    function _addBurner(address account) internal {
        _burners.add(account);
        emit BurnerAdded(account);
    }

    function _removeBurner(address account) internal {
        _burners.remove(account);
        emit BurnerRemoved(account);
    }

    function openTransfers() external onlyOwner {
        isOpened = true;
    }

    function changeWhiteList(address account, bool value) external onlyOwner {
        isInWhiteList[account] = value;
    }
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"payable":false,"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":"account","type":"address"}],"name":"BurnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"BurnerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_feesCollector","type":"address"},{"indexed":true,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_feesCollector","type":"address"},{"indexed":true,"internalType":"address","name":"newFeesCollector","type":"address"}],"name":"FeesCollector","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newBasisPoints","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newMinFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newMaxFee","type":"uint256"}],"name":"Params","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"newBasisPoints","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMinFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMaxFee","type":"uint256"}],"name":"SpecialParams","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"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBurner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"availableFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basisPointsRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"changeWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"fees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feesCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBurner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isInWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOpened","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maximumFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"openTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"renounceBurner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newFeesCollector","type":"address"}],"name":"setFeesCollector","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newBasisPoints","type":"uint256"},{"internalType":"uint256","name":"newMinFee","type":"uint256"},{"internalType":"uint256","name":"newMaxFee","type":"uint256"}],"name":"setParams","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBasisPoints","type":"uint256"},{"internalType":"uint256","name":"newMinFee","type":"uint256"},{"internalType":"uint256","name":"newMaxFee","type":"uint256"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setSpecialParams","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600f805460ff191690553480156200001b57600080fd5b506040516200237c3803806200237c833981810160405260608110156200004157600080fd5b81019080805160405193929190846401000000008211156200006257600080fd5b9083019060208201858111156200007857600080fd5b82516401000000008111828201881017156200009357600080fd5b82525081516020918201929091019080838360005b83811015620000c2578181015183820152602001620000a8565b50505050905090810190601f168015620000f05780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011457600080fd5b9083019060208201858111156200012a57600080fd5b82516401000000008111828201881017156200014557600080fd5b82525081516020918201929091019080838360005b83811015620001745781810151838201526020016200015a565b50505050905090810190601f168015620001a25780820380516001836020036101000a031916815260200191505b5060405260200151915083905082828282826000620001c96001600160e01b036200032316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350825162000228906001906020860190620005d7565b5081516200023e906002906020850190620005d7565b506003805460ff191660ff92909216919091179055505060006008819055600a556200026962000323565b600c80546001600160a01b0319166001600160a01b03929092169190911790555050612710600b5550620002bc620002a062000323565b633b9aca0060ff8416600a0a026001600160e01b036200032816565b6001600e6000620002d56001600160e01b036200032316565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200031a6200030b62000323565b6001600160e01b036200042d16565b50505062000679565b335b90565b6001600160a01b03821662000384576040805162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620003a0816007546200047f60201b620014411790919060201c565b6007556001600160a01b038216600090815260046020908152604090912054620003d5918390620014416200047f821b17901c565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b62000448816010620004e160201b620018971790919060201c565b6040516001600160a01b038216907f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456090600090a250565b600082820183811015620004da576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b620004f682826001600160e01b036200056e16565b1562000549576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620005b75760405162461bcd60e51b81526004018080602001828103825260228152602001806200235a6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200061a57805160ff19168380011785556200064a565b828001600101855582156200064a579182015b828111156200064a5782518255916020019190600101906200062d565b50620006589291506200065c565b5090565b6200032591905b8082111562000658576000815560010162000663565b611cd180620006896000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806378c19a431161011a578063a9059cbb116100ad578063dd644f721161007c578063dd644f72146105d0578063e941fa78146105d8578063f2fde38b146105e0578063f44637ba14610606578063faaebd211461062c57610206565b8063a9059cbb1461052e578063cbe66d0a1461055a578063d065a29914610562578063dd62ed3e146105a257610206565b806396bfc229116100e957806396bfc229146104cc57806396ce0795146104f25780639cf160f6146104fa578063a457c2d71461050257610206565b806378c19a43146104905780638da5cb5b146104985780638f32d59b146104bc57806395d89b41146104c457610206565b8063395093511161019d5780635a0ce6761161016c5780635a0ce6761461040b578063660145be14610434578063692aa97e1461045a57806370a0823114610462578063715018a61461048857610206565b8063395093511461036c57806339b417b71461039857806342966c68146103c85780634334614a146103e557610206565b806323b872dd116101d957806323b872dd146102ea578063313ce56714610320578063353907141461033e578063373071f21461034657610206565b806306fdde031461020b578063095ea7b31461028857806318160ddd146102c85780631a7626e7146102e2575b600080fd5b61021361067a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024d578181015183820152602001610235565b50505050905090810190601f16801561027a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b46004803603604081101561029e57600080fd5b506001600160a01b03813516906020013561070f565b604080519115158252519081900360200190f35b6102d061072d565b60408051918252519081900360200190f35b6102d0610733565b6102b46004803603606081101561030057600080fd5b506001600160a01b03813581169160208101359091169060400135610739565b6103286107c6565b6040805160ff9092168252519081900360200190f35b6102d06107cf565b6102b46004803603602081101561035c57600080fd5b50356001600160a01b03166107d5565b6102b46004803603604081101561038257600080fd5b506001600160a01b0381351690602001356108c1565b6103c6600480360360408110156103ae57600080fd5b506001600160a01b0381351690602001351515610915565b005b6102b4600480360360208110156103de57600080fd5b5035610987565b6102b4600480360360208110156103fb57600080fd5b50356001600160a01b03166109e5565b6102b46004803603606081101561042157600080fd5b50803590602081013590604001356109f8565b6103c66004803603602081101561044a57600080fd5b50356001600160a01b0316610a89565b6102b4610adc565b6102d06004803603602081101561047857600080fd5b50356001600160a01b0316610ae5565b6103c6610b00565b6102d0610b91565b6104a0610b97565b604080516001600160a01b039092168252519081900360200190f35b6102b4610ba6565b610213610bca565b6102b4600480360360208110156104e257600080fd5b50356001600160a01b0316610c28565b6102d0610c3d565b6104a0610c43565b6102b46004803603604081101561051857600080fd5b506001600160a01b038135169060200135610c52565b6102b46004803603604081101561054457600080fd5b506001600160a01b038135169060200135610cc0565b6103c6610cd4565b6102b4600480360360a081101561057857600080fd5b506001600160a01b0381351690602081013590604081013590606081013590608001351515610d2a565b6102d0600480360360408110156105b857600080fd5b506001600160a01b0381358116916020013516610e2a565b6102d0610e55565b6103c6610e5b565b6103c6600480360360208110156105f657600080fd5b50356001600160a01b0316610f0a565b6103c66004803603602081101561061c57600080fd5b50356001600160a01b0316610f5a565b6106526004803603602081101561064257600080fd5b50356001600160a01b0316610faa565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061072361071c610fde565b8484610fe2565b5060015b92915050565b60075490565b60095490565b60006107468484846110ce565b6107bc84610752610fde565b6107b785604051806060016040528060288152602001611b16602891396001600160a01b038a16600090815260056020526040812090610790610fde565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6113aa16565b610fe2565b5060019392505050565b60035460ff1690565b600a5490565b60006107df610ba6565b61081e576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b6001600160a01b0382166108635760405162461bcd60e51b8152600401808060200182810382526038815260200180611aae6038913960400191505060405180910390fd5b600c546040516001600160a01b038085169216907faa031270faa14f493eb7abc5f320365ba17b6cee9ff519872743406dbbc77c4490600090a350600c80546001600160a01b0319166001600160a01b03831617905560015b919050565b60006107236108ce610fde565b846107b785600560006108df610fde565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61144116565b61091d610ba6565b61095c576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610999610994610fde565b6109e5565b6109d45760405162461bcd60e51b8152600401808060200182810382526030815260200180611ae66030913960400191505060405180910390fd5b6108bc6109df610fde565b836114a2565b600061072760108363ffffffff61159e16565b6000610a02610ba6565b610a41576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b60088490556009839055600a8290556040518290849086907fd16858b87f79d06c5d7f4cdf7f0943a3b343a9eb149c10ec26e7bcaae7f19bc590600090a45060019392505050565b610a91610ba6565b610ad0576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610ad981611605565b50565b600f5460ff1681565b6001600160a01b031660009081526004602052604090205490565b610b08610ba6565b610b47576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600d5481565b6000546001600160a01b031690565b600080546001600160a01b0316610bbb610fde565b6001600160a01b031614905090565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107055780601f106106da57610100808354040283529160200191610705565b600e6020526000908152604090205460ff1681565b600b5490565b600c546001600160a01b031690565b6000610723610c5f610fde565b846107b785604051806060016040528060258152602001611bc26025913960056000610c89610fde565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6113aa16565b6000610723610ccd610fde565b84846110ce565b610cdc610ba6565b610d1b576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b600f805460ff19166001179055565b6000610d34610ba6565b610d73576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610d7b611a13565b50604080516080810182528681526020808201878152828401878152861515606085019081526001600160a01b038c16600081815260068652879020865181559351600185015591516002840155516003909201805460ff191692151592909217909155835188815291820187905283519293899391927f4911f2dd30c062d375fa4a40dff10ef4d0a8f9334fb6752076e27747f3ba2e88929081900390910190a35060019695505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60085490565b610e63610ba6565b610ea2576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610eda600d5460046000610eb4610fde565b6001600160a01b031681526020810191909152604001600020549063ffffffff61144116565b60046000610ee6610fde565b6001600160a01b031681526020810191909152604001600090812091909155600d55565b610f12610ba6565b610f51576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610ad98161164d565b610f62610ba6565b610fa1576040805162461bcd60e51b81526020600482018190526024820152600080516020611b80833981519152604482015290519081900360640190fd5b610ad9816116ed565b6001600160a01b03166000908152600660205260409020805460018201546002830154600390930154919390929160ff1690565b3390565b6001600160a01b0383166110275760405162461bcd60e51b8152600401808060200182810382526024815260200180611a646024913960400191505060405180910390fd5b6001600160a01b03821661106c5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c2a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166111135760405162461bcd60e51b8152600401808060200182810382526028815260200180611c756028913960400191505060405180910390fd5b6001600160a01b0382166111585760405162461bcd60e51b8152600401808060200182810382526026815260200180611a3e6026913960400191505060405180910390fd5b600f5460ff1615156001148061118b57506001600160a01b0383166000908152600e602052604090205460ff1615156001145b806111b357506001600160a01b0382166000908152600e602052604090205460ff1615156001145b611204576040805162461bcd60e51b815260206004820152601e60248201527f42455032304665653a206e6f7420616c6c6f776564207472616e736665720000604482015290519081900360640190fd5b60006112108483611735565b905080821015611267576040805162461bcd60e51b815260206004820152601e60248201527f42455032304665653a20616d6f756e74206c657373207468656e206665650000604482015290519081900360640190fd5b6112aa82604051806060016040528060298152602001611c4c602991396001600160a01b038716600090815260046020526040902054919063ffffffff6113aa16565b6001600160a01b0385166000908152600460205260408120919091556112d6838363ffffffff6117ee16565b6001600160a01b038516600090815260046020526040902054909150611302908263ffffffff61144116565b6001600160a01b0380861660008181526004602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a381156113a357600d54611372908363ffffffff61144116565b600d5560405182906000907f7bd3aa7d673767f759ebf216e7f6c12844986c661ae6e0f1d988cf7eb7394d1d908290a35b5050505050565b600081848411156114395760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113fe5781810151838201526020016113e6565b50505050905090810190601f16801561142b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561149b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166114e75760405162461bcd60e51b8152600401808060200182810382526021815260200180611be76021913960400191505060405180910390fd5b61152a81604051806060016040528060228152602001611c08602291396001600160a01b038516600090815260046020526040902054919063ffffffff6113aa16565b6001600160a01b038316600090815260046020526040902055600754611556908263ffffffff6117ee16565b6007556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006001600160a01b0382166115e55760405162461bcd60e51b8152600401808060200182810382526022815260200180611ba06022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61161660108263ffffffff61183016565b6040516001600160a01b038216907f90eabbc0c667db2a5029ed6bc0f5fe9f356d11684a4ca9fcfaec0e53f12b9c8e90600090a250565b6001600160a01b0381166116925760405162461bcd60e51b8152600401808060200182810382526026815260200180611a886026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6116fe60108263ffffffff61189716565b6040516001600160a01b038216907f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456090600090a250565b600080600080600061174687610faa565b935093509350935080156117a257600b5460009061177a9061176e898863ffffffff61191816565b9063ffffffff61197116565b90508381101561178b575082611796565b828111156117965750815b94506107279350505050565b60006117bf600b5461176e6008548a61191890919063ffffffff16565b90506009548110156117d457506009546117e3565b600a548111156117e35750600a545b979650505050505050565b600061149b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113aa565b61183a828261159e565b6118755760405162461bcd60e51b8152600401808060200182810382526021815260200180611b3e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6118a1828261159e565b156118f3576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60008261192757506000610727565b8282028284828161193457fe5b041461149b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b5f6021913960400191505060405180910390fd5b600061149b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836119fd5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113fe5781810151838201526020016113e6565b506000838581611a0957fe5b0495945050505050565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe42455032304665653a207472616e7366657220746f20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737353657446656573436f6c6c6563746f723a206e6577206665657320636f6c6c6563746f7220697320746865207a65726f20616464726573734275726e6572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204275726e657220726f6c6542455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f42455032303a206275726e2066726f6d20746865207a65726f206164647265737342455032303a206275726e20616d6f756e7420657863656564732062616c616e636542455032303a20617070726f766520746f20746865207a65726f206164647265737342455032304665653a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032304665653a207472616e736665722066726f6d20746865207a65726f2061646472657373a265627a7a723158204f1ed9641d877c68c9f83b96d07953e2aec35a3a388c84588fb039c1bc6b003e64736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000004486f7065000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004484f504500000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000004486f7065000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004484f504500000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 486f706500000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 484f504500000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

31782:2842:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31782:2842:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17534:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17534:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24935:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24935:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20282:91;;;:::i;:::-;;;;;;;;;;;;;;;;20784:89;;;:::i;25543:426::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25543:426:0;;;;;;;;;;;;;;;;;:::i;18370:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20940:89;;;:::i;21801:400::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21801:400:0;-1:-1:-1;;;;;21801:400:0;;:::i;26346:283::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;26346:283:0;;;;;;;;:::i;34499:122::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34499:122:0;;;;;;;;;;:::i;:::-;;34026:111;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34026:111:0;;:::i;33681:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33681:109:0;-1:-1:-1;;;;;33681:109:0;;:::i;22267:351::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22267:351:0;;;;;;;;;;;;:::i;33444:101::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33444:101:0;-1:-1:-1;;;;;33444:101:0;;:::i;19450:28::-;;;:::i;20436:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20436:110:0;-1:-1:-1;;;;;20436:110:0;;:::i;9581:140::-;;;:::i;19364:27::-;;;:::i;8770:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;8770:79:0;;;;;;;;;;;;;;9136:94;;;:::i;17736:87::-;;;:::i;19398:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19398:45:0;-1:-1:-1;;;;;19398:45:0;;:::i;21097:91::-;;;:::i;21633:95::-;;;:::i;27100:383::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;27100:383:0;;;;;;;;:::i;24417:158::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24417:158:0;;;;;;;;:::i;34413:78::-;;;:::i;22691:574::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;22691:574:0;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24638:166::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24638:166:0;;;;;;;;;;:::i;20618:99::-;;;:::i;29041:155::-;;;:::i;9876:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9876:109:0;-1:-1:-1;;;;;9876:109:0;;:::i;33230:93::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33230:93:0;-1:-1:-1;;;;;33230:93:0;;:::i;21246:317::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21246:317:0;-1:-1:-1;;;;;21246:317:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17534:83;17604:5;17597:12;;;;;;;;-1:-1:-1;;17597:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17571:13;;17597:12;;17604:5;;17597:12;;17604:5;17597:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17534:83;:::o;24935:152::-;25001:4;25018:39;25027:12;:10;:12::i;:::-;25041:7;25050:6;25018:8;:39::i;:::-;-1:-1:-1;25075:4:0;24935:152;;;;;:::o;20282:91::-;20353:12;;20282:91;:::o;20784:89::-;20854:11;;20784:89;:::o;25543:426::-;25650:4;25672:36;25682:6;25690:9;25701:6;25672:9;:36::i;:::-;25719:220;25742:6;25763:12;:10;:12::i;:::-;25790:138;25846:6;25790:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25790:19:0;;;;;;:11;:19;;;;;;25810:12;:10;:12::i;:::-;-1:-1:-1;;;;;25790:33:0;;;;;;;;;;;;-1:-1:-1;25790:33:0;;;:138;;:37;:138;:::i;:::-;25719:8;:220::i;:::-;-1:-1:-1;25957:4:0;25543:426;;;;;:::o;18370:83::-;18436:9;;;;18370:83;:::o;20940:89::-;21010:11;;20940:89;:::o;21801:400::-;21906:4;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21950:30:0;;21928:136;;;;-1:-1:-1;;;21928:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22094:14;;22080:47;;-1:-1:-1;;;;;22080:47:0;;;;22094:14;;22080:47;;22094:14;;22080:47;-1:-1:-1;22138:14:0;:33;;-1:-1:-1;;;;;;22138:33:0;-1:-1:-1;;;;;22138:33:0;;;;;-1:-1:-1;9039:1:0;21801:400;;;:::o;26346:283::-;26444:4;26466:133;26489:12;:10;:12::i;:::-;26516:7;26538:50;26577:10;26538:11;:25;26550:12;:10;:12::i;:::-;-1:-1:-1;;;;;26538:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;26538:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;34499:122::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34583:22:0;;;;;;;;:13;:22;;;;;:30;;-1:-1:-1;;34583:30:0;;;;;;;;;;34499:122::o;34026:111::-;34085:4;32291:22;32300:12;:10;:12::i;:::-;32291:8;:22::i;:::-;32269:120;;;;-1:-1:-1;;;32269:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34102:27;34108:12;:10;:12::i;:::-;34122:6;34102:5;:27::i;33681:109::-;33737:4;33761:21;:8;33774:7;33761:21;:12;:21;:::i;22267:351::-;22410:4;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;22427:16;:33;;;22471:11;:23;;;22505:11;:23;;;22544:44;;22519:9;;22485;;22446:14;;22544:44;;-1:-1:-1;;22544:44:0;-1:-1:-1;22606:4:0;22267:351;;;;;:::o;33444:101::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;33515:22;33529:7;33515:13;:22::i;:::-;33444:101;:::o;19450:28::-;;;;;;:::o;20436:110::-;-1:-1:-1;;;;;20520:18:0;20493:7;20520:18;;;:9;:18;;;;;;;20436:110::o;9581:140::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;9680:1;9664:6;;9643:40;;-1:-1:-1;;;;;9664:6:0;;;;9643:40;;9680:1;;9643:40;9711:1;9694:19;;-1:-1:-1;;;;;;9694:19:0;;;9581:140::o;19364:27::-;;;;:::o;8770:79::-;8808:7;8835:6;-1:-1:-1;;;;;8835:6:0;8770:79;:::o;9136:94::-;9176:4;9216:6;;-1:-1:-1;;;;;9216:6:0;9200:12;:10;:12::i;:::-;-1:-1:-1;;;;;9200:22:0;;9193:29;;9136:94;:::o;17736:87::-;17808:7;17801:14;;;;;;;-1:-1:-1;;17801:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17775:13;;17801:14;;17808:7;;17801:14;;17808:7;17801:14;;;;;;;;;;;;;;;;;;;;;;;;19398:45;;;;;;;;;;;;;;;:::o;21097:91::-;21168:12;;21097:91;:::o;21633:95::-;21706:14;;-1:-1:-1;;;;;21706:14:0;21633:95;:::o;27100:383::-;27203:4;27225:228;27248:12;:10;:12::i;:::-;27275:7;27297:145;27354:15;27297:145;;;;;;;;;;;;;;;;;:11;:25;27309:12;:10;:12::i;:::-;-1:-1:-1;;;;;27297:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;27297:25:0;;;:34;;;;;;;;;;;:145;;:38;:145;:::i;24417:158::-;24486:4;24503:42;24513:12;:10;:12::i;:::-;24527:9;24538:6;24503:9;:42::i;34413:78::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;34468:8;:15;;-1:-1:-1;;34468:15:0;34479:4;34468:15;;;34413:78::o;22691:574::-;22888:4;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;22905:34;;:::i;:::-;-1:-1:-1;22942:171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23126:14:0;;-1:-1:-1;23126:14:0;;;:5;:14;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23126:33:0;;;;;;;;;;;23175:60;;;;;;;;;;;;;22942:171;;;;23126:14;;23175:60;;;;;;;;;;;-1:-1:-1;23253:4:0;;22691:574;-1:-1:-1;;;;;;22691:574:0:o;24638:166::-;-1:-1:-1;;;;;24769:18:0;;;24737:7;24769:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24638:166::o;20618:99::-;20693:16;;20618:99;:::o;29041:155::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;29120:41;29148:12;;29120:9;:23;29130:12;:10;:12::i;:::-;-1:-1:-1;;;;;29120:23:0;;;;;;;;;;;;-1:-1:-1;29120:23:0;;;:41;:27;:41;:::i;:::-;29094:9;:23;29104:12;:10;:12::i;:::-;-1:-1:-1;;;;;29094:23:0;;;;;;;;;;;;-1:-1:-1;29094:23:0;;;:67;;;;29172:12;:16;29041:155::o;9876:109::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;9949:28;9968:8;9949:18;:28::i;33230:93::-;8982:9;:7;:9::i;:::-;8974:54;;;;;-1:-1:-1;;;8974:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8974:54:0;;;;;;;;;;;;;;;33296:19;33307:7;33296:10;:19::i;21246:317::-;-1:-1:-1;;;;;21396:14:0;21325:7;21396:14;;;:5;:14;;;;;:30;;21441:25;;;;21481;;;;21521:23;;;;;21396:30;;21441:25;;21481;21521:23;;;21246:317::o;1982:98::-;2062:10;1982:98;:::o;30862:338::-;-1:-1:-1;;;;;30956:19:0;;30948:68;;;;-1:-1:-1;;;30948:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31035:21:0;;31027:68;;;;-1:-1:-1;;;31027:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31108:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;31160:32;;;;;;;;;;;;;;;;;30862:338;;;:::o;27941:1092::-;-1:-1:-1;;;;;28067:20:0;;28045:110;;;;-1:-1:-1;;;28045:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28188:23:0;;28166:111;;;;-1:-1:-1;;;28166:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28310:8;;;;:16;;:8;:16;;:49;;-1:-1:-1;;;;;;28330:21:0;;;;;;:13;:21;;;;;;;;:29;;:21;:29;28310:49;:85;;;-1:-1:-1;;;;;;28363:24:0;;;;;;:13;:24;;;;;;;;:32;;:24;:32;28310:85;28288:165;;;;;-1:-1:-1;;;28288:165:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28466:11;28480:28;28493:6;28501;28480:12;:28::i;:::-;28466:42;;28539:3;28529:6;:13;;28521:56;;;;;-1:-1:-1;;;28521:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28610:111;28646:6;28610:111;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28610:17:0;;;;;;:9;:17;;;;;;;:111;;:21;:111;:::i;:::-;-1:-1:-1;;;;;28590:17:0;;;;;;:9;:17;;;;;:131;;;;28755:15;:6;28766:3;28755:15;:10;:15;:::i;:::-;-1:-1:-1;;;;;28806:20:0;;;;;;:9;:20;;;;;;28734:36;;-1:-1:-1;28806:36:0;;28734;28806;:24;:36;:::i;:::-;-1:-1:-1;;;;;28783:20:0;;;;;;;:9;:20;;;;;;;;;:59;;;;28858:39;;;;;;;28783:20;;28858:39;;;;;;;;;;;;;28914:7;;28910:116;;28953:12;;:21;;28970:3;28953:21;:16;:21;:::i;:::-;28938:12;:36;28994:20;;29010:3;;29006:1;;28994:20;;29006:1;;28994:20;28910:116;27941:1092;;;;;:::o;4110:224::-;4223:7;4264:12;4256:6;;;;4248:29;;;;-1:-1:-1;;;4248:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4248:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4300:5:0;;;4110:224::o;3221:181::-;3279:7;3311:5;;;3335:6;;;;3327:46;;;;;-1:-1:-1;;;3327:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3393:1;3221:181;-1:-1:-1;;;3221:181:0:o;30069:385::-;-1:-1:-1;;;;;30145:21:0;;30137:67;;;;-1:-1:-1;;;30137:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30238:105;30275:6;30238:105;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30238:18:0;;;;;;:9;:18;;;;;;;:105;;:22;:105;:::i;:::-;-1:-1:-1;;;;;30217:18:0;;;;;;:9;:18;;;;;:126;30369:12;;:24;;30386:6;30369:24;:16;:24;:::i;:::-;30354:12;:39;30409:37;;;;;;;;30435:1;;-1:-1:-1;;;;;30409:37:0;;;;;;;;;;;;30069:385;;:::o;874:235::-;973:4;-1:-1:-1;;;;;1003:21:0;;995:68;;;;-1:-1:-1;;;995:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1081:20:0;:11;:20;;;;;;;;;;;;;;;874:235::o;34275:130::-;34335:24;:8;34351:7;34335:24;:15;:24;:::i;:::-;34375:22;;-1:-1:-1;;;;;34375:22:0;;;;;;;;34275:130;:::o;10091:266::-;-1:-1:-1;;;;;10179:22:0;;10157:110;;;;-1:-1:-1;;;10157:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10304:6;;;10283:38;;-1:-1:-1;;;;;10283:38:0;;;;10304:6;;;10283:38;;;10332:6;:17;;-1:-1:-1;;;;;;10332:17:0;-1:-1:-1;;;;;10332:17:0;;;;;;;;;;10091:266::o;34145:122::-;34202:21;:8;34215:7;34202:21;:12;:21;:::i;:::-;34239:20;;-1:-1:-1;;;;;34239:20:0;;;;;;;;34145:122;:::o;23498:722::-;23603:7;23643:19;23677:14;23706;23735:11;23760:13;23765:7;23760:4;:13::i;:::-;23628:145;;;;;;;;23790:6;23786:220;;;23857:12;;23813:11;;23827:43;;23828:23;:6;23839:11;23828:23;:10;:23;:::i;:::-;23827:29;:43;:29;:43;:::i;:::-;23813:57;;23897:6;23891:3;:12;23887:80;;;-1:-1:-1;23911:6:0;23887:80;;;23947:6;23941:3;:12;23937:30;;;-1:-1:-1;23961:6:0;23937:30;23991:3;-1:-1:-1;23984:10:0;;-1:-1:-1;;;;23984:10:0;23786:220;24018:11;24032:48;24067:12;;24033:28;24044:16;;24033:6;:10;;:28;;;;:::i;24032:48::-;24018:62;;24103:11;;24097:3;:17;24093:96;;;-1:-1:-1;24122:11:0;;24093:96;;;24159:11;;24153:3;:17;24149:40;;;-1:-1:-1;24178:11:0;;24149:40;24209:3;23498:722;-1:-1:-1;;;;;;;23498:722:0:o;3661:136::-;3719:7;3746:43;3750:1;3753;3746:43;;;;;;;;;;;;;;;;;:3;:43::i;596:183::-;676:18;680:4;686:7;676:3;:18::i;:::-;668:64;;;;-1:-1:-1;;;668:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;743:20:0;766:5;743:20;;;;;;;;;;;:28;;-1:-1:-1;;743:28:0;;;596:183::o;338:178::-;416:18;420:4;426:7;416:3;:18::i;:::-;415:19;407:63;;;;;-1:-1:-1;;;407:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;481:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;481:27:0;504:4;481:27;;;338:178::o;4569:471::-;4627:7;4872:6;4868:47;;-1:-1:-1;4902:1:0;4895:8;;4868:47;4939:5;;;4943:1;4939;:5;:1;4963:5;;;;;:10;4955:56;;;;-1:-1:-1;;;4955:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:132;5550:7;5577:39;5581:1;5584;5577:39;;;;;;;;;;;;;;;;;6243:7;6350:12;6343:5;6335:28;;;;-1:-1:-1;;;6335:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6335:28:0;;6374:9;6390:1;6386;:5;;;;;;;6130:377;-1:-1:-1;;;;;6130:377:0:o;31782:2842::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://4f1ed9641d877c68c9f83b96d07953e2aec35a3a388c84588fb039c1bc6b003e
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.