Contract 0x7ac55ac530f2c29659573bde0700c6758d69e677

 

Contract Overview

BurgerSwap: BURGER
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x71ef6fa4092faf324f056c58a1809656dec1e099b2499b094f112978e8372cdb83161102021-06-15 10:40:0715 hrs 13 mins ago0xb3038871117bb460a7c1649a21260d002bc8da5b IN  BurgerSwap: BURGER0 BNB0.00055748
0x08214aab9d07c270e9cc14a395ca7cf8f0d8d6073dc5190dc3da0c8e1dc4ca3c81848042021-06-10 20:19:245 days 5 hrs ago0xa189eb010b66b88405fdaab17402c8b3334be8d6 IN  BurgerSwap: BURGER0 BNB0.00063248
0xa744a7c0e4a4376724b15f7f1bde0d1a5559dd951e4ce341f5850bb8c7e2cba781269752021-06-08 19:55:307 days 5 hrs ago0x8a2e711b5535791bf70a86594ca6f5fefa527463 IN  BurgerSwap: BURGER0 BNB0.00055748
0xea2f8487e4137076946a550a88df8a2e67510f3e9f7bb30ba99e5da24c23f1bd80452842021-06-05 23:43:5510 days 2 hrs ago0xfca3e0b210a08d588d20ad3978d1cfc4dbee3e79 IN  BurgerSwap: BURGER0 BNB0.00055748
0xe068c130363f19dc1975884043e8e5a9e5ac38b143a626e9633cbf09be170c6c79998262021-06-04 9:47:2311 days 16 hrs ago0xebf1ea0f9707ababe06533ba8c32632c007fffa3 IN  BurgerSwap: BURGER0 BNB0.00055748
0xa1a07c58fd11df475decc275a3ede74a2cb0c142288b7835a7d3e2a71cd3035479886202021-06-04 0:23:2912 days 1 hr ago0xa30bb56e45e9aff3b785af70a7472d5b791f1c04 IN  BurgerSwap: BURGER0 BNB0.00055748
0xc28fff040bbf3930bace2dc6e56965a5a5ce81b61f6796378c4699cef3f155bf79376492021-06-02 5:46:2013 days 20 hrs ago0x698fa6437475f3f86df33ea0cb612ad529954811 IN  BurgerSwap: BURGER0 BNB0.00055748
0xd44081cb1ea97e8b0cdb0d668d9b1f33d0b053187ced162b6b0da4d0dc82605f79148232021-06-01 10:42:4714 days 15 hrs ago0xb81a0e6c38c3fec8a171cfe9631f60127a0c5bfd IN  BurgerSwap: BURGER0 BNB0.00027694
0x3022819dcc8f7e104d37f6dd68ff713a0f6198bb41d67d3993f09769a1cb122179119782021-06-01 8:20:2614 days 17 hrs ago0x6aef3fe427791a2548df3d280e1d5631e8a3d72c IN  BurgerSwap: BURGER0 BNB0.00055748
0x5100b5535d0d561b141d5ac14217357e0c189f6eeaf7c73d3543efd6db9f1ae379115662021-06-01 7:59:5014 days 17 hrs ago0x6bccb6a41306aabda33efd02695568fab8dad50a IN  BurgerSwap: BURGER0 BNB0.00055748
0xd2019d07e88910dd09e028e2e1e4496e4c110c90e7eda34564b0f08fdd40c71f79042522021-06-01 1:51:1815 days 2 mins ago0xd0fbbf7e5d7fbba3b2afd608415ada965a573481 IN  BurgerSwap: BURGER0 BNB0.000376225
0xa965b75a57eb0041d3958b4e63d4808e09d3ef2b98efb852fe35eee028a7d08178919212021-05-31 15:31:5015 days 10 hrs ago0x09fdad6e6380d19d6116b31c3509d8babac33513 IN  BurgerSwap: BURGER0 BNB0.00055748
0xf6170f3c38da463b3af6e8e5bc511a9434f9b7e38f7236f3ce50b96880b7b1a378770322021-05-31 3:03:5315 days 22 hrs ago0x5f9dea11d9028ce7386302fd81d82029b94c4bb6 IN  BurgerSwap: BURGER0 BNB0.00055748
0x2da7de0210959fdc946f7f804010a8edd3a67559b7b3cc66775226010859844678628782021-05-30 15:13:2816 days 10 hrs ago0x44802f5bb3700ef3f12492342f80840f41bd0ad4 IN  BurgerSwap: BURGER0 BNB0.000416075
0x4770a93665b5fb05695bd0ad1f062a508d2781ff4911f7919fdcea42b9f9f82f78475502021-05-30 2:25:0616 days 23 hrs ago0xd79065db570b51de2de67160beb74bad01907a4f IN  BurgerSwap: BURGER0 BNB0.00055748
0xb58f5f1ab064069be8f53821987d83177f92c878402c87fb9880ed492079e07578401332021-05-29 20:13:4317 days 5 hrs ago0xd5e8130b58fe6f39ddfe780243256af9fabac992 IN  BurgerSwap: BURGER0 BNB0.00055748
0xb28acdcf7e6f560caafa4053c890010fca0cef478a57b949cbe7d4077972c8e378377862021-05-29 18:15:4517 days 7 hrs ago0xddd1af408153f3fbf8028377c2da990287d1c09c IN  BurgerSwap: BURGER0 BNB0.00063248
0x76166f1ba9cbe610974605bd9fd0b013d9c8c1f64919e9db471b369dbc78b6ce78282492021-05-29 10:16:2117 days 15 hrs ago0x8b0473e5f2871d420b7891c01a45ef84ee2d523d IN  BurgerSwap: BURGER0 BNB0.00055748
0xde8c5667fdac494d8e23c0cf2f8fa792793851d455d09b148d1740a5b95f7ff878269452021-05-29 9:11:0917 days 16 hrs ago0x1d3330cafc20fb832f716677dcdeb347821a319d IN  BurgerSwap: BURGER0 BNB0.00059263
0xd3bb4a76644ae7452a0e54e471da25abf12abe71e25f909684753e3393af00be78192762021-05-29 2:46:2117 days 23 hrs ago0x7b938b2192a4787351ed7ba33b07ec7680d0b370 IN  BurgerSwap: BURGER0 BNB0.00027694
0xd687f87f8285092fd1a269ab0756ef1dadf2bd498764c9ef6d40fcbab072bd4c78135022021-05-28 21:56:5818 days 3 hrs ago0xa7fab85434c622f3c68bbb739c21ec3e564d5499 IN  BurgerSwap: BURGER0 BNB0.00055748
0xf1384ce768662e4d79e3ddb3268e3105f1a827f2b1861721a9c2b5bb970defd778130472021-05-28 21:33:1618 days 4 hrs ago0xfeb2df0a1db88c3d304a0a172a3c176370b9368d IN  BurgerSwap: BURGER0 BNB0.00027694
0xa5b9cbd9ba1d07d1a982baa33940c857233659bea5d302abd892ece74478aea078084642021-05-28 17:42:5918 days 8 hrs ago0x5ca06211a3fdc450002875f6d85ae0a4e78e61af IN  BurgerSwap: BURGER0 BNB0.000416075
0xb92aa7dbf3861c22b674edf6def4f6d9d327c65d42954cdb298b0f6dfee3ec4678059762021-05-28 15:38:2318 days 10 hrs ago0x710981e8bddd736c6796e968115b70697681221a IN  BurgerSwap: BURGER0 BNB0.000416075
0xfacbdbe9642d98c89929d9701eb847d896ca49f3c5bee22b14fe836b400aa7bc77940422021-05-28 5:41:1318 days 20 hrs ago0xafd8cdd3ce3eff84063ddd2cedcd06abe5191abc IN  BurgerSwap: BURGER0 BNB0.000941975
[ Download CSV Export 

OVERVIEW

BurgerSwap pool to exchange between BURGER and WBNB.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:51100 days 13 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 BurgerSwap: BURGER0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:42100 days 13 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0x3becd05231bbba6f7adda92f3c79fb3aa96d943b BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0x3becd05231bbba6f7adda92f3c79fb3aa96d943b BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0x3becd05231bbba6f7adda92f3c79fb3aa96d943b BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER Binance: WBNB Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER Binance: WBNB Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER Binance: WBNB Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0x3becd05231bbba6f7adda92f3c79fb3aa96d943b BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0x3becd05231bbba6f7adda92f3c79fb3aa96d943b BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0x3becd05231bbba6f7adda92f3c79fb3aa96d943b BurgerSwap: BURGER0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER Binance: WBNB Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago BurgerSwap: BURGER 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42100 days 14 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 BurgerSwap: BURGER0 BNB
[ Download CSV Export 
Loading

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

Contract Name:
DemaxPair

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-09-19
*/

// Dependency file: contracts/interfaces/IERC20.sol

// pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

// Dependency file: contracts/libraries/TransferHelper.sol

// SPDX-License-Identifier: GPL-3.0-or-later

// pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

// Dependency file: contracts/libraries/SafeMath.sol

// SPDX-License-Identifier: MIT

// pragma solidity ^0.6.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;
    }
}
// Dependency file: contracts/interfaces/ERC2917-Interface.sol

//SPDX-License-Identifier: MIT
// pragma solidity >=0.6.6;
// import '../interfaces/IERC20.sol';

interface IERC2917 is IERC20 {

    /// @dev This emit when interests amount per block is changed by the owner of the contract.
    /// It emits with the old interests amount and the new interests amount.
    event InterestRatePerBlockChanged (uint oldValue, uint newValue);

    /// @dev This emit when a users' productivity has changed
    /// It emits with the user's address and the the value after the change.
    event ProductivityIncreased (address indexed user, uint value);

    /// @dev This emit when a users' productivity has changed
    /// It emits with the user's address and the the value after the change.
    event ProductivityDecreased (address indexed user, uint value);

    /// @dev Return the current contract's interests rate per block.
    /// @return The amount of interests currently producing per each block.
    function interestsPerBlock() external view returns (uint);

    /// @notice Change the current contract's interests rate.
    /// @dev Note the best practice will be restrict the gross product provider's contract address to call this.
    /// @return The true/fase to notice that the value has successfully changed or not, when it succeed, it will emite the InterestRatePerBlockChanged event.
    function changeInterestRatePerBlock(uint value) external returns (bool);

    /// @notice It will get the productivity of given user.
    /// @dev it will return 0 if user has no productivity proved in the contract.
    /// @return user's productivity and overall productivity.
    function getProductivity(address user) external view returns (uint, uint);

    /// @notice increase a user's productivity.
    /// @dev Note the best practice will be restrict the callee to prove of productivity's contract address.
    /// @return true to confirm that the productivity added success.
    function increaseProductivity(address user, uint value) external returns (bool);

    /// @notice decrease a user's productivity.
    /// @dev Note the best practice will be restrict the callee to prove of productivity's contract address.
    /// @return true to confirm that the productivity removed success.
    function decreaseProductivity(address user, uint value) external returns (bool);

    /// @notice take() will return the interests that callee will get at current block height.
    /// @dev it will always calculated by block.number, so it will change when block height changes.
    /// @return amount of the interests that user are able to mint() at current block height.
    function take() external view returns (uint);

    /// @notice similar to take(), but with the block height joined to calculate return.
    /// @dev for instance, it returns (_amount, _block), which means at block height _block, the callee has accumulated _amount of interests.
    /// @return amount of interests and the block height.
    function takeWithBlock() external view returns (uint, uint);

    /// @notice mint the avaiable interests to callee.
    /// @dev once it mint, the amount of interests will transfer to callee's address.
    /// @return the amount of interests minted.
    function mint() external returns (uint);
}
// Dependency file: contracts/libraries/ConfigNames.sol

// pragma solidity >=0.5.16;

library ConfigNames {
    bytes32 public constant PRODUCE_DGAS_RATE = bytes32('PRODUCE_DGAS_RATE');
    bytes32 public constant SWAP_FEE_PERCENT = bytes32('SWAP_FEE_PERCENT');
    bytes32 public constant LIST_DGAS_AMOUNT = bytes32('LIST_DGAS_AMOUNT');
    bytes32 public constant UNSTAKE_DURATION = bytes32('UNSTAKE_DURATION');
    bytes32 public constant REMOVE_LIQUIDITY_DURATION = bytes32('REMOVE_LIQUIDITY_DURATION');
    bytes32 public constant TOKEN_TO_DGAS_PAIR_MIN_PERCENT = bytes32('TOKEN_TO_DGAS_PAIR_MIN_PERCENT');
    bytes32 public constant LIST_TOKEN_FAILURE_BURN_PRECENT = bytes32('LIST_TOKEN_FAILURE_BURN_PRECENT');
    bytes32 public constant LIST_TOKEN_SUCCESS_BURN_PRECENT = bytes32('LIST_TOKEN_SUCCESS_BURN_PRECENT');
    bytes32 public constant PROPOSAL_DGAS_AMOUNT = bytes32('PROPOSAL_DGAS_AMOUNT');
    bytes32 public constant VOTE_DURATION = bytes32('VOTE_DURATION');
    bytes32 public constant VOTE_REWARD_PERCENT = bytes32('VOTE_REWARD_PERCENT');
    bytes32 public constant TOKEN_PENGDING_SWITCH = bytes32('TOKEN_PENGDING_SWITCH');
    bytes32 public constant TOKEN_PENGDING_TIME = bytes32('TOKEN_PENGDING_TIME');
    bytes32 public constant LIST_TOKEN_SWITCH = bytes32('LIST_TOKEN_SWITCH');
    bytes32 public constant DEV_PRECENT = bytes32('DEV_PRECENT');
}
// Dependency file: contracts/modules/BaseShareField.sol

// pragma solidity >=0.6.6;
// import '../interfaces/ERC2917-Interface.sol';
// import '../libraries/SafeMath.sol';
// import '../libraries/TransferHelper.sol';

contract BaseShareField {
    using SafeMath for uint;
    
    uint totalProductivity;
    uint accAmountPerShare;
    
    uint public totalShare;
    uint public mintedShare;
    uint public mintCumulation;
    
    address public shareToken;
    
    struct UserInfo {
        uint amount;     // How many tokens the user has provided.
        uint rewardDebt; // Reward debt. 
        uint rewardEarn; // Reward earn and not minted
    }

    mapping(address => UserInfo) public users;
    
    function _setShareToken(address _shareToken) internal {
        shareToken = _shareToken;
    }

    // Update reward variables of the given pool to be up-to-date.
    function _update() internal virtual {
        if (totalProductivity == 0) {
            totalShare = totalShare.add(_currentReward());
            return;
        }
        
        uint256 reward = _currentReward();
        accAmountPerShare = accAmountPerShare.add(reward.mul(1e12).div(totalProductivity));
        totalShare = totalShare.add(reward);
    }
    
    function _currentReward() internal virtual view returns (uint) {
        return mintedShare.add(IERC20(shareToken).balanceOf(address(this))).sub(totalShare);
    }
    
    // Audit user's reward to be up-to-date
    function _audit(address user) internal virtual {
        UserInfo storage userInfo = users[user];
        if (userInfo.amount > 0) {
            uint pending = userInfo.amount.mul(accAmountPerShare).div(1e12).sub(userInfo.rewardDebt);
            userInfo.rewardEarn = userInfo.rewardEarn.add(pending);
            mintCumulation = mintCumulation.add(pending);
            userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12);
        }
    }

    // External function call
    // This function increase user's productivity and updates the global productivity.
    // the users' actual share percentage will calculated by:
    // Formula:     user_productivity / global_productivity
    function _increaseProductivity(address user, uint value) internal virtual returns (bool) {
        require(value > 0, 'PRODUCTIVITY_VALUE_MUST_BE_GREATER_THAN_ZERO');

        UserInfo storage userInfo = users[user];
        _update();
        _audit(user);

        totalProductivity = totalProductivity.add(value);

        userInfo.amount = userInfo.amount.add(value);
        userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12);
        return true;
    }

    // External function call 
    // This function will decreases user's productivity by value, and updates the global productivity
    // it will record which block this is happenning and accumulates the area of (productivity * time)
    function _decreaseProductivity(address user, uint value) internal virtual returns (bool) {
        UserInfo storage userInfo = users[user];
        require(value > 0 && userInfo.amount >= value, 'INSUFFICIENT_PRODUCTIVITY');
        
        _update();
        _audit(user);
        
        userInfo.amount = userInfo.amount.sub(value);
        userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12);
        totalProductivity = totalProductivity.sub(value);
        
        return true;
    }
    
    function _takeWithAddress(address user) internal view returns (uint) {
        UserInfo storage userInfo = users[user];
        uint _accAmountPerShare = accAmountPerShare;
        // uint256 lpSupply = totalProductivity;
        if (totalProductivity != 0) {
            uint reward = _currentReward();
            _accAmountPerShare = _accAmountPerShare.add(reward.mul(1e12).div(totalProductivity));
        }
        return userInfo.amount.mul(_accAmountPerShare).div(1e12).add(userInfo.rewardEarn).sub(userInfo.rewardDebt);
    }

    // External function call
    // When user calls this function, it will calculate how many token will mint to user from his productivity * time
    // Also it calculates global token supply from last time the user mint to this time.
    function _mint(address user) internal virtual returns (uint) {
        _update();
        _audit(user);
        require(users[user].rewardEarn > 0, "NOTHING TO MINT");
        uint amount = users[user].rewardEarn;
        TransferHelper.safeTransfer(shareToken, msg.sender, amount);
        users[user].rewardEarn = 0;
        mintedShare += amount;
        return amount;
    }

    // Returns how many productivity a user has and global has.
    function getProductivity(address user) public virtual view returns (uint, uint) {
        return (users[user].amount, totalProductivity);
    }

    // Returns the current gorss product rate.
    function interestsPerBlock() public virtual view returns (uint) {
        return accAmountPerShare;
    }
    
}
// Dependency file: contracts/interfaces/IDemaxConfig.sol

// pragma solidity >=0.5.0;

interface IDemaxConfig {
    function governor() external view returns (address);
    function dev() external view returns (address);
    function PERCENT_DENOMINATOR() external view returns (uint);
    function getConfig(bytes32 _name) external view returns (uint minValue, uint maxValue, uint maxSpan, uint value, uint enable);
    function getConfigValue(bytes32 _name) external view returns (uint);
    function changeConfigValue(bytes32 _name, uint _value) external returns (bool);
    function checkToken(address _token) external view returns(bool);
    function checkPair(address tokenA, address tokenB) external view returns (bool);
    function listToken(address _token) external returns (bool);
    function getDefaultListTokens() external returns (address[] memory);
    function platform() external view returns  (address);
    function addToken(address _token) external returns (bool);
}
// Dependency file: contracts/interfaces/IDemaxCallee.sol

// pragma solidity >=0.5.0;

interface IDemaxCallee {
    function demaxCall(address sender, uint amount0, uint amount1, bytes calldata data) external;
}

// Dependency file: contracts/interfaces/IDgas.sol

// pragma solidity >=0.5.0;

interface IDgas {
    function amountPerBlock() external view returns (uint);
    function changeInterestRatePerBlock(uint value) external returns (bool);
    function getProductivity(address user) external view returns (uint, uint);
    function increaseProductivity(address user, uint value) external returns (bool);
    function decreaseProductivity(address user, uint value) external returns (bool);
    function take() external view returns (uint);
    function takeWithBlock() external view returns (uint, uint);
    function mint() external returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function upgradeImpl(address _newImpl) external;
    function upgradeGovernance(address _newGovernor) external;
}
// Dependency file: contracts/interfaces/IDemaxFactory.sol

// pragma solidity >=0.5.0;

interface IDemaxFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function contractCodeHash() external view returns (bytes32);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function isPair(address pair) external view returns (bool);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function playerPairs(address player, uint index) external view returns (address pair);
    function getPlayerPairCount(address player) external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);
    function addPlayerPair(address player, address _pair) external returns (bool);
}

// Dependency file: contracts/libraries/UQ112x112.sol

// pragma solidity >=0.5.0;

// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))

// range: [0, 2**112 - 1]
// resolution: 1 / 2**112

library UQ112x112 {
    uint224 constant Q112 = 2**112;

    // encode a uint112 as a UQ112x112
    function encode(uint112 y) internal pure returns (uint224 z) {
        z = uint224(y) * Q112; // never overflows
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
        z = x / uint224(y);
    }
}

// Dependency file: contracts/libraries/Math.sol

// pragma solidity >=0.5.0;

// a library for performing various math operations

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

pragma solidity >=0.6.6;

// import './libraries/Math.sol';
// import './libraries/UQ112x112.sol';
// import './interfaces/IDemaxFactory.sol';
// import './interfaces/IDgas.sol';
// import './interfaces/IDemaxCallee.sol';
// import './interfaces/IDemaxConfig.sol';
// import './modules/BaseShareField.sol';
// import './libraries/ConfigNames.sol';

contract DemaxPair is BaseShareField {
    uint256 public version = 1;
    using SafeMath for uint256;
    using UQ112x112 for uint224;

    uint256 public constant MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));

    address public FACTORY;
    address public CONFIG;
    address public DGAS;
    address public token0;
    address public token1;

    uint112 private reserve0; // uses single storage slot, accessible via getReserves
    uint112 private reserve1; // uses single storage slot, accessible via getReserves
    uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves

    uint256 public price0CumulativeLast;
    uint256 public price1CumulativeLast;

    uint256 public totalReward;
    uint256 public remainReward;
    uint256 public totalSupply;
    mapping(address => uint256) public balanceOf;
    event Mint(address indexed from, address indexed to, uint256 value);
    event Burn(address indexed from, address indexed to, uint256 value);
    event MintDGAS(address indexed player, uint256 pairMint, uint256 userMint);
    mapping(address => uint256) public lastMintBlock;

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'Locked');
        unlocked = 0;
        _;
        unlocked = 1;
    }

    function _mint(address to, uint256 value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Mint(address(0), to, value);
    }

    function _burn(address from, uint256 value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Burn(from, address(0), value);
    }
    
    function _mintDGAS() internal {
        if(IDgas(DGAS).take() > 0) {
            uint reward = IDgas(DGAS).mint();
            uint devAmount = reward * IDemaxConfig(CONFIG).getConfigValue(ConfigNames.DEV_PRECENT) / 10000;
            address devAddress = IDemaxConfig(CONFIG).dev();
            _safeTransfer(DGAS, devAddress, devAmount);
            remainReward = remainReward.add(reward.sub(devAmount));
        }
    }
    
    function _currentReward() internal override view returns (uint) {
        uint devPercent = IDemaxConfig(CONFIG).getConfigValue(ConfigNames.DEV_PRECENT);
        uint pairReward = IDgas(DGAS).take().mul(10000 - devPercent).div(10000);
        return mintedShare.add(remainReward).add(pairReward).sub(totalShare);
    }

    function getReserves()
        public
        view
        returns (
            uint112 _reserve0,
            uint112 _reserve1,
            uint32 _blockTimestampLast
        )
    {
        _reserve0 = reserve0;
        _reserve1 = reserve1;
        _blockTimestampLast = blockTimestampLast;
    }

    function _safeTransfer(
        address token,
        address to,
        uint256 value
    ) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'DEMAX PAIR : TRANSFER_FAILED');
    }

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event SwapFee(address indexed token, address indexed to, uint256 amount);
    event Sync(uint112 reserve0, uint112 reserve1);

    constructor() public {
        FACTORY = msg.sender;
    }

    modifier onlyPlatform {
        address platform = IDemaxConfig(CONFIG).platform();
        require(msg.sender == platform, 'DEMAX PAIR : FORBIDDEN');
        _;
    }

    // called once by the factory at time of deployment
    function initialize(
        address _token0,
        address _token1,
        address _config,
        address _dgas
    ) external {
        require(msg.sender == FACTORY, 'DEMAX PAIR : FORBIDDEN');
        token0 = _token0;
        token1 = _token1;
        CONFIG = _config;
        DGAS = _dgas;
        _setShareToken(DGAS);
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(
        uint256 balance0,
        uint256 balance1,
        uint112 _reserve0,
        uint112 _reserve1
    ) private {
        require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'DEMAX PAIR : OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // this low-level function should be called from a contract which performs // important safety checks
    function mint(address to) external onlyPlatform lock returns (uint256 liquidity) {
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        uint256 balance0 = _balanceOf(token0, address(this));
        uint256 balance1 = _balanceOf(token1, address(this));
        uint256 amount0 = balance0.sub(_reserve0);
        uint256 amount1 = balance1.sub(_reserve1);
        uint256 _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
            _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'DEMAX PAIR : INSUFFICIENT_LIQUIDITY_MINTED');
        _mint(to, liquidity);
        _mintDGAS();
        _increaseProductivity(to, liquidity);
        lastMintBlock[to] = block.number;
        _update(balance0, balance1, _reserve0, _reserve1);
        emit Mint(msg.sender, amount0, amount1);
    }

    // this low-level function should be called from a contract which performs // important safety checks
    function burn(
        address from,
        address to,
        uint256 amount
    ) external onlyPlatform lock returns (uint256 amount0, uint256 amount1) {
        require(
            block.number >=
                lastMintBlock[from] + IDemaxConfig(CONFIG).getConfigValue(ConfigNames.REMOVE_LIQUIDITY_DURATION),
            'DEMAX PLATFORM : REMOVE LIQUIDITY DURATION FAIL'
        );
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        uint256 balance0 = _balanceOf(_token0, address(this));
        uint256 balance1 = _balanceOf(_token1, address(this));
        require(balanceOf[from] >= amount, 'DEMAX PAIR : INSUFFICIENT_LIQUIDITY_AMOUNT');

        uint256 _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        amount0 = amount.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution
        amount1 = amount.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution
        require(amount0 > 0 && amount1 > 0, 'DEMAX PAIR : INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(from, amount);
        _mintDGAS();
        _decreaseProductivity(from, amount);

        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = _balanceOf(_token0, address(this));
        balance1 = _balanceOf(_token1, address(this));
        _update(balance0, balance1, _reserve0, _reserve1);

        emit Burn(msg.sender, amount0, amount1, to);
    }

    // this low-level function should be called from a contract which performs // important safety checks
    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external onlyPlatform lock {
        require(amount0Out > 0 || amount1Out > 0, 'DEMAX PAIR : INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'DEMAX PAIR :  INSUFFICIENT_LIQUIDITY');
        uint256 balance0;
        uint256 balance1;
        {
            address _token0 = token0;
            address _token1 = token1;
            require(to != _token0 && to != _token1, 'DEMAX PAIR : INVALID_TO');
            if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out);
            if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out);
            if (data.length > 0) IDemaxCallee(to).demaxCall(msg.sender, amount0Out, amount1Out, data);
            balance0 = _balanceOf(_token0, address(this));
            balance1 = _balanceOf(_token1, address(this));
        }
        uint256 amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint256 amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        uint256 _amount0Out = amount0Out;
        uint256 _amount1Out = amount1Out;
        require(amount0In > 0 || amount1In > 0, 'DEMAX PAIR : INSUFFICIENT_INPUT_AMOUNT');
        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, _amount0Out, _amount1Out, to);
    }

    function swapFee(
        uint256 amount,
        address token,
        address to
    ) external onlyPlatform {
        if (amount == 0 || token == to) return;
        (uint112 _reserve0, uint112 _reserve1, ) = getReserves();
        require(to != token0 && to != token1, 'DEMAX PAIR : INVALID_TO');
        _safeTransfer(token, to, amount);
        uint256 balance0 = _balanceOf(token0, address(this));
        uint256 balance1 = _balanceOf(token1, address(this));
        _update(balance0, balance1, _reserve0, _reserve1);
        emit SwapFee(token, to , amount);
    }

    function queryReward() external view returns (uint256 rewardAmount, uint256 blockNumber) {
        rewardAmount = _takeWithAddress(msg.sender);
        blockNumber = block.number;
    }

    function mintReward() external lock returns (uint256 userReward) {
        _mintDGAS();
        userReward = _mint(msg.sender);
        remainReward = remainReward.sub(userReward);
        emit MintDGAS(msg.sender, remainReward, userReward);
    }

    function getDGASReserve() public view returns (uint256) {
        return _balanceOf(DGAS, address(this));
    }

    function _balanceOf(address token, address owner) internal view returns (uint256) {
        if (token == DGAS && owner == address(this)) {
            return IERC20(token).balanceOf(owner).sub(remainReward);
        } else {
            return IERC20(token).balanceOf(owner);
        }
    }

    // force reserves to match balances
    function sync() external lock {
        _update(_balanceOf(token0, address(this)), _balanceOf(token1, address(this)), reserve0, reserve1);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","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":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"pairMint","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"userMint","type":"uint256"}],"name":"MintDGAS","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"inputs":[],"name":"CONFIG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DGAS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDGASReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getProductivity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"address","name":"_config","type":"address"},{"internalType":"address","name":"_dgas","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"interestsPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastMintBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintCumulation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintReward","outputs":[{"internalType":"uint256","name":"userReward","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintedShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"queryReward","outputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shareToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"swapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"rewardEarn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526001600755600160155534801561001a57600080fd5b50600880546001600160a01b0319163317905561297c8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063cf675365116100a2578063f6b911bc11610071578063f6b911bc1461049f578063f8c8765e146104d5578063ffc527bf14610513578063fff6cae91461051b576101e5565b8063cf6753651461047f578063d14c964114610487578063d21220a71461048f578063d92e82e414610497576101e5565b806396cda080116100de57806396cda080146103f7578063a87430ba1461042b578063ba9a7a561461046f578063bfc8b20814610477576101e5565b806370a082311461039b578063723c2e2d146103c1578063750142e6146103c95780638b185b35146103d1576101e5565b806328e964e9116101875780635909c0d5116101565780635909c0d51461035d5780635a3d5493146103655780636a6278421461036d5780636c9fa59e14610393576101e5565b806328e964e9146103065780632c79db11146103455780632dd310001461034d57806354fd4d5014610355576101e5565b80630dfe1681116101c35780630dfe1681146102ca5780631485ff78146102ee578063174f57af146102f657806318160ddd146102fe576101e5565b8063022c0d9f146101ea578063026c4207146102785780630902f1ac14610292575b600080fd5b6102766004803603608081101561020057600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561023757600080fd5b82018360208201111561024957600080fd5b8035906020019184600183028401116401000000008311171561026b57600080fd5b509092509050610523565b005b61028061097d565b60408051918252519081900360200190f35b61029a610983565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6102d26109ad565b604080516001600160a01b039092168252519081900360200190f35b6102806109bc565b6102806109c2565b610280610a78565b61032c6004803603602081101561031c57600080fd5b50356001600160a01b0316610a7e565b6040805192835260208301919091528051918290030190f35b61032c610a9c565b6102d2610ab0565b610280610abf565b610280610ac5565b610280610acb565b6102806004803603602081101561038357600080fd5b50356001600160a01b0316610ad1565b6102d2610dd3565b610280600480360360208110156103b157600080fd5b50356001600160a01b0316610de2565b6102d2610df4565b610280610e03565b610280600480360360208110156103e757600080fd5b50356001600160a01b0316610e09565b6102766004803603606081101561040d57600080fd5b508035906001600160a01b0360208201358116916040013516610e1b565b6104516004803603602081101561044157600080fd5b50356001600160a01b0316611038565b60408051938452602084019290925282820152519081900360600190f35b610280611059565b61028061105f565b610280611065565b61028061106b565b6102d2611071565b6102d2611080565b61032c600480360360608110156104b557600080fd5b506001600160a01b0381358116916020810135909116906040013561108f565b610276600480360360808110156104eb57600080fd5b506001600160a01b03813581169160208101358216916040820135811691606001351661146e565b610280611519565b610276611537565b6009546040805163097bc71960e31b815290516000926001600160a01b031691634bde38c8916004808301926020929190829003018186803b15801561056857600080fd5b505afa15801561057c573d6000803e3d6000fd5b505050506040513d602081101561059257600080fd5b50519050336001600160a01b038216146105ec576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b60155460011461062c576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b60006015558515158061063f5750600085115b61067a5760405162461bcd60e51b81526004018080602001828103825260278152602001806128066027913960400191505060405180910390fd5b600080610685610983565b5091509150816001600160701b0316881080156106aa5750806001600160701b031687105b6106e55760405162461bcd60e51b81526004018080602001828103825260248152602001806129236024913960400191505060405180910390fd5b600b54600c5460009182916001600160a01b0391821691908116908a1682148015906107235750806001600160a01b03168a6001600160a01b031614155b61076e576040805162461bcd60e51b815260206004820152601760248201527644454d41582050414952203a20494e56414c49445f544f60481b604482015290519081900360640190fd5b8b1561077f5761077f828b8e6115cf565b8a1561079057610790818b8d6115cf565b871561084b57896001600160a01b03166321fb6c90338e8e8d8d6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561083257600080fd5b505af1158015610846573d6000803e3d6000fd5b505050505b6108558230611769565b93506108618130611769565b9250505060008a856001600160701b031603831161088057600061088f565b8a856001600160701b03160383035b905060008a856001600160701b03160383116108ac5760006108bb565b8a856001600160701b03160383035b90508b8b831515806108cd5750600083115b6109085760405162461bcd60e51b815260040180806020018281038252602681526020018061282d6026913960400191505060405180910390fd5b61091486868a8a6118bc565b60408051858152602081018590528082018490526060810183905290516001600160a01b038e169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001601555505050505050505050505050565b60025481565b600d546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b600b546001600160a01b031681565b60115481565b6000601554600114610a04576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601555610a11611a83565b610a1a33611cc5565b601154909150610a30908263ffffffff611d9116565b60118190556040805191825260208201839052805133927fef84ded3b746df8ce33b8e850942f885a71fa805217f9099d5e006a8f32ca58792908290030190a2600160155590565b60125481565b6001600160a01b031660009081526006602052604081205490549091565b600080610aa833611dda565b924392509050565b6008546001600160a01b031681565b60075481565b600e5481565b600f5481565b600080600960009054906101000a90046001600160a01b03166001600160a01b0316634bde38c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2257600080fd5b505afa158015610b36573d6000803e3d6000fd5b505050506040513d6020811015610b4c57600080fd5b50519050336001600160a01b03821614610ba6576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b601554600114610be6576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601581905580610bf6610983565b50600b549193509150600090610c15906001600160a01b031630611769565b600c54909150600090610c31906001600160a01b031630611769565b90506000610c4e836001600160701b03871663ffffffff611d9116565b90506000610c6b836001600160701b03871663ffffffff611d9116565b60125490915080610cb457610ca06103e8610c94610c8f868663ffffffff611e8a16565b611ee3565b9063ffffffff611d9116565b9850610caf60006103e8611f34565b610d03565b610d006001600160701b038816610cd1858463ffffffff611e8a16565b81610cd857fe5b046001600160701b038816610cf3858563ffffffff611e8a16565b81610cfa57fe5b04611fcb565b98505b60008911610d425760405162461bcd60e51b815260040180806020018281038252602a8152602001806128a3602a913960400191505060405180910390fd5b610d4c8a8a611f34565b610d54611a83565b610d5e8a8a611fe1565b506001600160a01b038a166000908152601460205260409020439055610d86858589896118bc565b6040805184815260208101849052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050600160155550949695505050505050565b6005546001600160a01b031681565b60136020526000908152604090205481565b600a546001600160a01b031681565b60105481565b60146020526000908152604090205481565b6009546040805163097bc71960e31b815290516000926001600160a01b031691634bde38c8916004808301926020929190829003018186803b158015610e6057600080fd5b505afa158015610e74573d6000803e3d6000fd5b505050506040513d6020811015610e8a57600080fd5b50519050336001600160a01b03821614610ee4576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b831580610f025750816001600160a01b0316836001600160a01b0316145b15610f0c57611032565b600080610f17610983565b50600b5491935091506001600160a01b03858116911614801590610f495750600c546001600160a01b03858116911614155b610f94576040805162461bcd60e51b815260206004820152601760248201527644454d41582050414952203a20494e56414c49445f544f60481b604482015290519081900360640190fd5b610f9f8585886115cf565b600b54600090610fb8906001600160a01b031630611769565b600c54909150600090610fd4906001600160a01b031630611769565b9050610fe2828286866118bc565b856001600160a01b0316876001600160a01b03167fd58eef465bb0100d5e79f7940ef7ec9eafeff04fa088db4388968231fffaf07d8a6040518082815260200191505060405180910390a3505050505b50505050565b60066020526000908152604090208054600182015460029092015490919083565b6103e881565b60015490565b60045481565b60035481565b600c546001600160a01b031681565b6009546001600160a01b031681565b6000806000600960009054906101000a90046001600160a01b03166001600160a01b0316634bde38c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e257600080fd5b505afa1580156110f6573d6000803e3d6000fd5b505050506040513d602081101561110c57600080fd5b50519050336001600160a01b03821614611166576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b6015546001146111a6576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601555600954604080516360ccef1960e11b81527f52454d4f56455f4c49515549444954595f4455524154494f4e00000000000000600482015290516001600160a01b039092169163c199de3291602480820192602092909190829003018186803b15801561121657600080fd5b505afa15801561122a573d6000803e3d6000fd5b505050506040513d602081101561124057600080fd5b50516001600160a01b0387166000908152601460205260409020540143101561129a5760405162461bcd60e51b815260040180806020018281038252602f815260200180612874602f913960400191505060405180910390fd5b6000806112a5610983565b50600b54600c549294509092506001600160a01b03908116911660006112cb8330611769565b905060006112d98330611769565b6001600160a01b038d166000908152601360205260409020549091508a11156113335760405162461bcd60e51b815260040180806020018281038252602a8152602001806127dc602a913960400191505060405180910390fd5b601254806113478c8563ffffffff611e8a16565b8161134e57fe5b049950806113628c8463ffffffff611e8a16565b8161136957fe5b04985060008a11801561137c5750600089115b6113b75760405162461bcd60e51b815260040180806020018281038252602a8152602001806128cd602a913960400191505060405180910390fd5b6113c18d8c6120a0565b6113c9611a83565b6113d38d8c61213d565b506113df858d8c6115cf565b6113ea848d8b6115cf565b6113f48530611769565b92506114008430611769565b915061140e838389896118bc565b604080518b8152602081018b905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a350505050505050600160158190555050935093915050565b6008546001600160a01b031633146114c6576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b600b80546001600160a01b03199081166001600160a01b0387811691909117909255600c80548216868416179055600980548216858416179055600a80549091168383161790819055611032911661221f565b600a54600090611532906001600160a01b031630611769565b905090565b601554600114611577576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601555600b546115c890611596906001600160a01b031630611769565b600c546115ac906001600160a01b031630611769565b600d546001600160701b0380821691600160701b9004166118bc565b6001601555565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b6020831061167c5780518252601f19909201916020918201910161165d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146116de576040519150601f19603f3d011682016040523d82523d6000602084013e6116e3565b606091505b5091509150818015611711575080511580611711575080806020019051602081101561170e57600080fd5b50515b611762576040805162461bcd60e51b815260206004820152601c60248201527f44454d41582050414952203a205452414e534645525f4641494c454400000000604482015290519081900360640190fd5b5050505050565b600a546000906001600160a01b03848116911614801561179157506001600160a01b03821630145b156118315761182a601154846001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156117f257600080fd5b505afa158015611806573d6000803e3d6000fd5b505050506040513d602081101561181c57600080fd5b50519063ffffffff611d9116565b90506118b6565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561188757600080fd5b505afa15801561189b573d6000803e3d6000fd5b505050506040513d60208110156118b157600080fd5b505190505b92915050565b6001600160701b0384118015906118da57506001600160701b038311155b611923576040805162461bcd60e51b815260206004820152601560248201527444454d41582050414952203a204f564552464c4f5760581b604482015290519081900360640190fd5b600d5463ffffffff42811691600160e01b9004811682039081161580159061195357506001600160701b03841615155b801561196757506001600160701b03831615155b156119d8578063ffffffff166119958561198086612241565b6001600160e01b03169063ffffffff61225316565b600e80546001600160e01b03929092169290920201905563ffffffff81166119c08461198087612241565b600f80546001600160e01b0392909216929092020190555b600d80546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b600a546040805163159090bd60e01b815290516000926001600160a01b03169163159090bd916004808301926020929190829003018186803b158015611ac857600080fd5b505afa158015611adc573d6000803e3d6000fd5b505050506040513d6020811015611af257600080fd5b50511115611cc357600a5460408051631249c58b60e01b815290516000926001600160a01b031691631249c58b91600480830192602092919082900301818787803b158015611b4057600080fd5b505af1158015611b54573d6000803e3d6000fd5b505050506040513d6020811015611b6a57600080fd5b5051600954604080516360ccef1960e11b81526a11115597d4149150d1539560aa1b60048201529051929350600092612710926001600160a01b03169163c199de32916024808301926020929190829003018186803b158015611bcc57600080fd5b505afa158015611be0573d6000803e3d6000fd5b505050506040513d6020811015611bf657600080fd5b5051830281611c0157fe5b0490506000600960009054906101000a90046001600160a01b03166001600160a01b03166391cca3db6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5457600080fd5b505afa158015611c68573d6000803e3d6000fd5b505050506040513d6020811015611c7e57600080fd5b5051600a54909150611c9a906001600160a01b031682846115cf565b611cbc611cad848463ffffffff611d9116565b6011549063ffffffff61227816565b6011555050505b565b6000611ccf6122d2565b611cd882612353565b6001600160a01b038216600090815260066020526040902060020154611d37576040805162461bcd60e51b815260206004820152600f60248201526e1393d512125391c81513c813525395608a1b604482015290519081900360640190fd5b6001600160a01b038083166000908152600660205260409020600201546005549091611d65911633836123fb565b6001600160a01b038316600090815260066020526040812060020155600380548201905590505b919050565b6000611dd383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061255e565b9392505050565b6001600160a01b0381166000908152600660205260408120600154825415611e46576000611e066125f5565b9050611e42611e35600054611e2964e8d4a5100085611e8a90919063ffffffff16565b9063ffffffff61273916565b839063ffffffff61227816565b9150505b611e828260010154610c948460020154611e7664e8d4a51000611e29878960000154611e8a90919063ffffffff16565b9063ffffffff61227816565b949350505050565b600082611e99575060006118b6565b82820282848281611ea657fe5b0414611dd35760405162461bcd60e51b81526004018080602001828103825260218152602001806128536021913960400191505060405180910390fd5b60006003821115611f26575080600160028204015b81811015611f2057809150600281828581611f0f57fe5b040181611f1857fe5b049050611ef8565b50611d8c565b8115611d8c57506001919050565b601254611f47908263ffffffff61227816565b6012556001600160a01b038216600090815260136020526040902054611f73908263ffffffff61227816565b6001600160a01b03831660008181526013602090815260408083209490945583518581529351929391927fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f89281900390910190a35050565b6000818310611fda5781611dd3565b5090919050565b60008082116120215760405162461bcd60e51b815260040180806020018281038252602c8152602001806128f7602c913960400191505060405180910390fd5b6001600160a01b03831660009081526006602052604090206120416122d2565b61204a84612353565b60005461205d908463ffffffff61227816565b6000558054612072908463ffffffff61227816565b8082556001546120939164e8d4a5100091611e29919063ffffffff611e8a16565b6001918201559392505050565b6001600160a01b0382166000908152601360205260409020546120c9908263ffffffff611d9116565b6001600160a01b0383166000908152601360205260409020556012546120f5908263ffffffff611d9116565b6012556040805182815290516000916001600160a01b038516917fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b94539181900360200190a35050565b6001600160a01b03821660009081526006602052604081208215801590612165575080548311155b6121b6576040805162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f50524f44554354495649545900000000000000604482015290519081900360640190fd5b6121be6122d2565b6121c784612353565b80546121d9908463ffffffff611d9116565b8082556001546121fa9164e8d4a5100091611e29919063ffffffff611e8a16565b6001820155600054612212908463ffffffff611d9116565b6000555060019392505050565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161227057fe5b049392505050565b600082820183811015611dd3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000546122fb576122f36122e46125f5565b6002549063ffffffff61227816565b600255611cc3565b60006123056125f5565b9050612337612328600054611e2964e8d4a5100085611e8a90919063ffffffff16565b6001549063ffffffff61227816565b60015560025461234d908263ffffffff61227816565b60025550565b6001600160a01b03811660009081526006602052604090208054156123f757600061239e8260010154610c9464e8d4a51000611e296001548760000154611e8a90919063ffffffff16565b60028301549091506123b6908263ffffffff61227816565b60028301556004546123ce908263ffffffff61227816565b60045560015482546123f09164e8d4a5100091611e299163ffffffff611e8a16565b6001830155505b5050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106124785780518252601f199092019160209182019101612459565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146124da576040519150601f19603f3d011682016040523d82523d6000602084013e6124df565b606091505b509150915081801561250d57508051158061250d575080806020019051602081101561250a57600080fd5b50515b611762576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b600081848411156125ed5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125b257818101518382015260200161259a565b50505050905090810190601f1680156125df5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600954604080516360ccef1960e11b81526a11115597d4149150d1539560aa1b6004820152905160009283926001600160a01b039091169163c199de3291602480820192602092909190829003018186803b15801561265357600080fd5b505afa158015612667573d6000803e3d6000fd5b505050506040513d602081101561267d57600080fd5b5051600a546040805163159090bd60e01b8152905192935060009261270f9261271092611e2992878503926001600160a01b03169163159090bd916004808301926020929190829003018186803b1580156126d757600080fd5b505afa1580156126eb573d6000803e3d6000fd5b505050506040513d602081101561270157600080fd5b50519063ffffffff611e8a16565b9050612732600254610c9483611e7660115460035461227890919063ffffffff16565b9250505090565b6000611dd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836127c55760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156125b257818101518382015260200161259a565b5060008385816127d157fe5b049594505050505056fe44454d41582050414952203a20494e53554646494349454e545f4c49515549444954595f414d4f554e5444454d41582050414952203a20494e53554646494349454e545f4f55545055545f414d4f554e5444454d41582050414952203a20494e53554646494349454e545f494e5055545f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7744454d415820504c4154464f524d203a2052454d4f5645204c4951554944495459204455524154494f4e204641494c44454d41582050414952203a20494e53554646494349454e545f4c49515549444954595f4d494e54454444454d41582050414952203a20494e53554646494349454e545f4c49515549444954595f4255524e454450524f4455435449564954595f56414c55455f4d5553545f42455f475245415445525f5448414e5f5a45524f44454d41582050414952203a2020494e53554646494349454e545f4c4951554944495459a26469706673582212203d06d3778a5251c90eb2e8dae417a357fdd52b411184d6312ab5491391ddb87064736f6c63430006060033

Deployed ByteCode Sourcemap

22498:11893:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22498:11893:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;31127:1589:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;31127:1589:0;;;;;;;;-1:-1:-1;;;;;31127:1589:0;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;31127:1589:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;31127:1589:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;31127:1589:0;;-1:-1:-1;31127:1589:0;-1:-1:-1;31127:1589:0;:::i;:::-;;13078:22;;;:::i;:::-;;;;;;;;;;;;;;;;25099:313;;;:::i;:::-;;;;-1:-1:-1;;;;;25099:313:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22880:21;;;:::i;:::-;;;;-1:-1:-1;;;;;22880:21:0;;;;;;;;;;;;;;23329:27;;;:::i;33515:252::-;;;:::i;23363:26::-;;;:::i;17483:145::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17483:145:0;-1:-1:-1;;;;;17483:145:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;33319:188;;;:::i;22797:22::-;;;:::i;22542:26::-;;;:::i;23210:35::-;;;:::i;23252:::-;;;:::i;28027:1219::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28027:1219:0;-1:-1:-1;;;;;28027:1219:0;;:::i;13176:25::-;;;:::i;23396:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23396:44:0;-1:-1:-1;;;;;23396:44:0;;:::i;22854:19::-;;;:::i;23296:26::-;;;:::i;23676:48::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23676:48:0;-1:-1:-1;;;;;23676:48:0;;:::i;32724:587::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32724:587:0;;;-1:-1:-1;;;;;32724:587:0;;;;;;;;;;;;:::i;13413:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13413:41:0;-1:-1:-1;;;;;13413:41:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;22644:49;;;:::i;17684:107::-;;;:::i;13137:26::-;;;:::i;13107:23::-;;;:::i;22908:21::-;;;:::i;22826:::-;;;:::i;29361:1651::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;29361:1651:0;;;;;;;;;;;;;;;;;:::i;26562:348::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;26562:348:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;33775:113::-;;;:::i;34242:146::-;;;:::i;31127:1589::-;26391:6;;26378:31;;;-1:-1:-1;;;26378:31:0;;;;26359:16;;-1:-1:-1;;;;;26391:6:0;;26378:29;;:31;;;;;;;;;;;;;;26391:6;26378:31;;;2:2:-1;;;;27:1;24;17:12;2:2;26378:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26378:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26378:31:0;;-1:-1:-1;26428:10:0;-1:-1:-1;;;;;26428:22:0;;;26420:57;;;;;-1:-1:-1;;;26420:57:0;;;;;;;;;;;;-1:-1:-1;;;26420:57:0;;;;;;;;;;;;;;;23800:8:::1;;23812:1;23800:13;23792:32;;;::::0;;-1:-1:-1;;;23792:32:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23792:32:0;;;;;;;;;;;;;::::1;;23846:1;23835:8;:12:::0;31303:14;;;;:32:::2;;;31334:1;31321:10;:14;31303:32;31295:84;;;;-1:-1:-1::0;;;31295:84:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31391:17;31410::::0;31433:13:::2;:11;:13::i;:::-;31390:56;;;;;31493:9;-1:-1:-1::0;;;;;31480:22:0::2;:10;:22;:48;;;;;31519:9;-1:-1:-1::0;;;;;31506:22:0::2;:10;:22;31480:48;31472:97;;;;-1:-1:-1::0;;;31472:97:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31667:6;::::0;31706::::2;::::0;31580:16:::2;::::0;;;-1:-1:-1;;;;;31667:6:0;;::::2;::::0;31706;;::::2;::::0;31735:13;::::2;::::0;::::2;::::0;::::2;::::0;:30:::2;;;31758:7;-1:-1:-1::0;;;;;31752:13:0::2;:2;-1:-1:-1::0;;;;;31752:13:0::2;;;31735:30;31727:66;;;::::0;;-1:-1:-1;;;31727:66:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;31727:66:0;;;;;;;;;;;;;::::2;;31812:14:::0;;31808:58:::2;;31828:38;31842:7;31851:2;31855:10;31828:13;:38::i;:::-;31885:14:::0;;31881:58:::2;;31901:38;31915:7;31924:2;31928:10;31901:13;:38::i;:::-;31958:15:::0;;31954:89:::2;;31988:2;-1:-1:-1::0;;;;;31975:26:0::2;;32002:10;32014;32026;32038:4;;31975:68;;;;;;;;;;;;;-1:-1:-1::0;;;;;31975:68:0::2;-1:-1:-1::0;;;;;31975:68:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;31975:68:0;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;31975:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;31975:68:0;;;;31954:89;32069:34;32080:7;32097:4;32069:10;:34::i;:::-;32058:45;;32129:34;32140:7;32157:4;32129:10;:34::i;:::-;32118:45;;23858:1;;32185:17;32228:10;32216:9;-1:-1:-1::0;;;;;32216:22:0::2;;32205:8;:33;:75;;32279:1;32205:75;;;32265:10;32253:9;-1:-1:-1::0;;;;;32253:22:0::2;;32241:8;:35;32205:75;32185:95;;32291:17;32334:10;32322:9;-1:-1:-1::0;;;;;32322:22:0::2;;32311:8;:33;:75;;32385:1;32311:75;;;32371:10;32359:9;-1:-1:-1::0;;;;;32359:22:0::2;;32347:8;:35;32311:75;32291:95:::0;-1:-1:-1;32419:10:0;32462;32491:13;;;;:30:::2;;;32520:1;32508:9;:13;32491:30;32483:81;;;;-1:-1:-1::0;;;32483:81:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32575:49;32583:8;32593;32603:9;32614;32575:7;:49::i;:::-;32640:68;::::0;;;;;::::2;::::0;::::2;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32640:68:0;::::2;::::0;32645:10:::2;::::0;32640:68:::2;::::0;;;;;;;::::2;-1:-1:-1::0;;23881:1:0::1;23870:8;:12:::0;-1:-1:-1;;;;;;;;;;;;31127:1589:0:o;13078:22::-;;;;:::o;25099:313::-;25314:8;;-1:-1:-1;;;;;25314:8:0;;;;-1:-1:-1;;;25345:8:0;;;;;;-1:-1:-1;;;25386:18:0;;;;;25099:313::o;22880:21::-;;;-1:-1:-1;;;;;22880:21:0;;:::o;23329:27::-;;;;:::o;33515:252::-;33560:18;23800:8;;23812:1;23800:13;23792:32;;;;;-1:-1:-1;;;23792:32:0;;;;;;;;;;;;-1:-1:-1;;;23792:32:0;;;;;;;;;;;;;;;23846:1;23835:8;:12;33591:11:::1;:9;:11::i;:::-;33626:17;33632:10;33626:5;:17::i;:::-;33669:12;::::0;33613:30;;-1:-1:-1;33669:28:0::1;::::0;33613:30;33669:28:::1;:16;:28;:::i;:::-;33654:12;:43:::0;;;33713:46:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;33722:10:::1;::::0;33713:46:::1;::::0;;;;;;;::::1;23881:1:::0;23870:8;:12;33515:252;:::o;23363:26::-;;;;:::o;17483:145::-;-1:-1:-1;;;;;17582:11:0;17551:4;17582:11;;;:5;:11;;;;;:18;17602:17;;17582:18;;17483:145::o;33319:188::-;33365:20;33387:19;33434:28;33451:10;33434:16;:28::i;:::-;33419:43;33487:12;;-1:-1:-1;33319:188:0;-1:-1:-1;33319:188:0:o;22797:22::-;;;-1:-1:-1;;;;;22797:22:0;;:::o;22542:26::-;;;;:::o;23210:35::-;;;;:::o;23252:::-;;;;:::o;28027:1219::-;28089:17;26359:16;26391:6;;;;;;;;;-1:-1:-1;;;;;26391:6:0;-1:-1:-1;;;;;26378:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26378:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26378:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26378:31:0;;-1:-1:-1;26428:10:0;-1:-1:-1;;;;;26428:22:0;;;26420:57;;;;;-1:-1:-1;;;26420:57:0;;;;;;;;;;;;-1:-1:-1;;;26420:57:0;;;;;;;;;;;;;;;23800:8:::1;;23812:1;23800:13;23792:32;;;::::0;;-1:-1:-1;;;23792:32:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23792:32:0;;;;;;;;;;;;;::::1;;23846:1;23835:8;:12:::0;;;23846:1;28162:13:::2;:11;:13::i;:::-;-1:-1:-1::0;28231:6:0::2;::::0;28119:56;;-1:-1:-1;28119:56:0;-1:-1:-1;28201:16:0::2;::::0;28220:33:::2;::::0;-1:-1:-1;;;;;28231:6:0::2;28247:4;28220:10;:33::i;:::-;28294:6;::::0;28201:52;;-1:-1:-1;28264:16:0::2;::::0;28283:33:::2;::::0;-1:-1:-1;;;;;28294:6:0::2;28310:4;28283:10;:33::i;:::-;28264:52:::0;-1:-1:-1;28327:15:0::2;28345:23;:8:::0;-1:-1:-1;;;;;28345:23:0;::::2;;:12;:23;:::i;:::-;28327:41:::0;-1:-1:-1;28379:15:0::2;28397:23;:8:::0;-1:-1:-1;;;;;28397:23:0;::::2;;:12;:23;:::i;:::-;28454:11;::::0;28379:41;;-1:-1:-1;28558:17:0;28554:353:::2;;28604:54;22688:5;28604:31;28614:20;:7:::0;28626;28614:20:::2;:11;:20;:::i;:::-;28604:9;:31::i;:::-;:35:::0;:54:::2;:35;:54;:::i;:::-;28592:66;;28673:36;28687:1;22688:5;28673;:36::i;:::-;28554:353;;;28809:86;-1:-1:-1::0;;;;;28818:37:0;::::2;:25;:7:::0;28830:12;28818:25:::2;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;28857:37:0;::::2;:25;:7:::0;28869:12;28857:25:::2;:11;:25;:::i;:::-;:37;;;;;;28809:8;:86::i;:::-;28797:98;;28554:353;28937:1;28925:9;:13;28917:68;;;;-1:-1:-1::0;;;28917:68:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28996:20;29002:2;29006:9;28996:5;:20::i;:::-;29027:11;:9;:11::i;:::-;29049:36;29071:2;29075:9;29049:21;:36::i;:::-;-1:-1:-1::0;;;;;;29096:17:0;::::2;;::::0;;;:13:::2;:17;::::0;;;;29116:12:::2;29096:32:::0;;29139:49:::2;29147:8:::0;29157;29167:9;29178;29139:7:::2;:49::i;:::-;29204:34;::::0;;;;;::::2;::::0;::::2;::::0;;;;;29209:10:::2;::::0;29204:34:::2;::::0;;;;;;::::2;-1:-1:-1::0;;23881:1:0::1;23870:8;:12:::0;-1:-1:-1;28027:1219:0;;;-1:-1:-1;;;;;;28027:1219:0:o;13176:25::-;;;-1:-1:-1;;;;;13176:25:0;;:::o;23396:44::-;;;;;;;;;;;;;:::o;22854:19::-;;;-1:-1:-1;;;;;22854:19:0;;:::o;23296:26::-;;;;:::o;23676:48::-;;;;;;;;;;;;;:::o;32724:587::-;26391:6;;26378:31;;;-1:-1:-1;;;26378:31:0;;;;26359:16;;-1:-1:-1;;;;;26391:6:0;;26378:29;;:31;;;;;;;;;;;;;;26391:6;26378:31;;;2:2:-1;;;;27:1;24;17:12;2:2;26378:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26378:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26378:31:0;;-1:-1:-1;26428:10:0;-1:-1:-1;;;;;26428:22:0;;;26420:57;;;;;-1:-1:-1;;;26420:57:0;;;;;;;;;;;;-1:-1:-1;;;26420:57:0;;;;;;;;;;;;;;;32855:11;;;:26:::1;;;32879:2;-1:-1:-1::0;;;;;32870:11:0::1;:5;-1:-1:-1::0;;;;;32870:11:0::1;;32855:26;32851:39;;;32883:7;;32851:39;32901:17;32920::::0;32943:13:::1;:11;:13::i;:::-;-1:-1:-1::0;32981:6:0::1;::::0;32900:56;;-1:-1:-1;32900:56:0;-1:-1:-1;;;;;;32975:12:0;;::::1;32981:6:::0;::::1;32975:12;::::0;::::1;::::0;:28:::1;;-1:-1:-1::0;32997:6:0::1;::::0;-1:-1:-1;;;;;32991:12:0;;::::1;32997:6:::0;::::1;32991:12;;32975:28;32967:64;;;::::0;;-1:-1:-1;;;32967:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;32967:64:0;;;;;;;;;;;;;::::1;;33042:32;33056:5;33063:2;33067:6;33042:13;:32::i;:::-;33115:6;::::0;33085:16:::1;::::0;33104:33:::1;::::0;-1:-1:-1;;;;;33115:6:0::1;33131:4;33104:10;:33::i;:::-;33178:6;::::0;33085:52;;-1:-1:-1;33148:16:0::1;::::0;33167:33:::1;::::0;-1:-1:-1;;;;;33178:6:0::1;33194:4;33167:10;:33::i;:::-;33148:52;;33211:49;33219:8;33229;33239:9;33250;33211:7;:49::i;:::-;33291:2;-1:-1:-1::0;;;;;33276:27:0::1;33284:5;-1:-1:-1::0;;;;;33276:27:0::1;;33296:6;33276:27;;;;;;;;;;;;;;;;;;26488:1;;;;;32724:587:::0;;;;:::o;13413:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22644:49::-;22688:5;22644:49;:::o;17684:107::-;17766:17;;17684:107;:::o;13137:26::-;;;;:::o;13107:23::-;;;;:::o;22908:21::-;;;-1:-1:-1;;;;;22908:21:0;;:::o;22826:::-;;;-1:-1:-1;;;;;22826:21:0;;:::o;29361:1651::-;29487:15;29504;26359:16;26391:6;;;;;;;;;-1:-1:-1;;;;;26391:6:0;-1:-1:-1;;;;;26378:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26378:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26378:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26378:31:0;;-1:-1:-1;26428:10:0;-1:-1:-1;;;;;26428:22:0;;;26420:57;;;;;-1:-1:-1;;;26420:57:0;;;;;;;;;;;;-1:-1:-1;;;26420:57:0;;;;;;;;;;;;;;;23800:8:::1;;23812:1;23800:13;23792:32;;;::::0;;-1:-1:-1;;;23792:32:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23792:32:0;;;;;;;;;;;;;::::1;;23846:1;23835:8;:12:::0;29622:6:::2;::::0;29609:74:::2;::::0;;-1:-1:-1;;;29609:74:0;;11804:36:::2;29609:74;::::0;::::2;::::0;;;-1:-1:-1;;;;;29622:6:0;;::::2;::::0;29609:35:::2;::::0;:74;;;;;::::2;::::0;;;;;;;;;29622:6;29609:74;::::2;;2:2:-1::0;::::2;;;27:1;24::::0;17:12:::2;2:2;29609:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;29609:74:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;-1:-1:::0;29609:74:0;-1:-1:-1;;;;;29587:19:0;::::2;;::::0;;;:13:::2;29609:74;29587:19:::0;;;;;:96:::2;29554:12;:129;;29532:226;;;;-1:-1:-1::0;;;29532:226:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29770:17;29789::::0;29812:13:::2;:11;:13::i;:::-;-1:-1:-1::0;29869:6:0::2;::::0;29919::::2;::::0;29769:56;;-1:-1:-1;29769:56:0;;-1:-1:-1;;;;;;29869:6:0;;::::2;::::0;29919::::2;29851:15;29970:34;29869:6:::0;29998:4:::2;29970:10;:34::i;:::-;29951:53;;30015:16;30034:34;30045:7;30062:4;30034:10;:34::i;:::-;-1:-1:-1::0;;;;;30087:15:0;::::2;;::::0;;;:9:::2;:15;::::0;;;;;30015:53;;-1:-1:-1;30087:25:0;-1:-1:-1;30087:25:0::2;30079:80;;;;-1:-1:-1::0;;;30079:80:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30195:11;::::0;;30305:20:::2;:6:::0;30316:8;30305:20:::2;:10;:20;:::i;:::-;:35;;;;;;::::0;-1:-1:-1;30432:12:0;30409:20:::2;:6:::0;30420:8;30409:20:::2;:10;:20;:::i;:::-;:35;;;;;;30399:45;;30521:1;30511:7;:11;:26;;;;;30536:1;30526:7;:11;30511:26;30503:81;;;;-1:-1:-1::0;;;30503:81:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30595:19;30601:4;30607:6;30595:5;:19::i;:::-;30625:11;:9;:11::i;:::-;30647:35;30669:4;30675:6;30647:21;:35::i;:::-;;30695;30709:7;30718:2;30722:7;30695:13;:35::i;:::-;30741;30755:7;30764:2;30768:7;30741:13;:35::i;:::-;30798:34;30809:7;30826:4;30798:10;:34::i;:::-;30787:45;;30854:34;30865:7;30882:4;30854:10;:34::i;:::-;30843:45;;30899:49;30907:8;30917;30927:9;30938;30899:7;:49::i;:::-;30966:38;::::0;;;;;::::2;::::0;::::2;::::0;;;;;-1:-1:-1;;;;;30966:38:0;::::2;::::0;30971:10:::2;::::0;30966:38:::2;::::0;;;;;;;;;::::2;23858:1;;;;;;;23881::::1;23870:8;:12;;;;29361:1651:::0;;;;;;;:::o;26562:348::-;26733:7;;-1:-1:-1;;;;;26733:7:0;26719:10;:21;26711:56;;;;;-1:-1:-1;;;26711:56:0;;;;;;;;;;;;-1:-1:-1;;;26711:56:0;;;;;;;;;;;;;;;26778:6;:16;;-1:-1:-1;;;;;;26778:16:0;;;-1:-1:-1;;;;;26778:16:0;;;;;;;;;;26805:6;:16;;;;;;;;;;26832:6;:16;;;;;;;;;;26859:4;:12;;;;;;;;;;;;;26882:20;;26897:4;26882:14;:20::i;33775:113::-;33860:4;;33822:7;;33849:31;;-1:-1:-1;;;;;33860:4:0;33874;33849:10;:31::i;:::-;33842:38;;33775:113;:::o;34242:146::-;23800:8;;23812:1;23800:13;23792:32;;;;;-1:-1:-1;;;23792:32:0;;;;;;;;;;;;-1:-1:-1;;;23792:32:0;;;;;;;;;;;;;;;23846:1;23835:8;:12;34302:6:::1;::::0;34283:97:::1;::::0;34291:33:::1;::::0;-1:-1:-1;;;;;34302:6:0::1;34318:4;34291:10;:33::i;:::-;34337:6;::::0;34326:33:::1;::::0;-1:-1:-1;;;;;34337:6:0::1;34353:4;34326:10;:33::i;:::-;34361:8;::::0;-1:-1:-1;;;;;34361:8:0;;::::1;::::0;-1:-1:-1;;;34371:8:0;::::1;;34283:7;:97::i;:::-;23881:1:::0;23870:8;:12;34242:146::o;25420:326::-;22752:34;;;;;;;;;;;;;;;;;25585:43;;-1:-1:-1;;;;;25585:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;25585:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;25574:55:0;;;;25539:12;;25553:17;;25574:10;;;25585:43;25574:55;;;25:18:-1;25574:55:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;25574:55:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;25538:91:0;;;;25648:7;:57;;;;-1:-1:-1;25660:11:0;;:16;;:44;;;25691:4;25680:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25680:24:0;25660:44;25640:98;;;;;-1:-1:-1;;;25640:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25420:326;;;;;:::o;33896:297::-;34002:4;;33969:7;;-1:-1:-1;;;;;33993:13:0;;;34002:4;;33993:13;:39;;;;-1:-1:-1;;;;;;34010:22:0;;34027:4;34010:22;33993:39;33989:197;;;34056:48;34091:12;;34063:5;-1:-1:-1;;;;;34056:23:0;;34080:5;34056:30;;;;;;;;;;;;;-1:-1:-1;;;;;34056:30:0;-1:-1:-1;;;;;34056:30:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34056:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34056:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34056:30:0;;:48;:34;:48;:::i;:::-;34049:55;;;;33989:197;34151:5;-1:-1:-1;;;;;34144:23:0;;34168:5;34144:30;;;;;;;;;;;;;-1:-1:-1;;;;;34144:30:0;-1:-1:-1;;;;;34144:30:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34144:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34144:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34144:30:0;;-1:-1:-1;33989:197:0;33896:297;;;;:::o;26995:917::-;-1:-1:-1;;;;;27156:23:0;;;;;:50;;-1:-1:-1;;;;;;27183:23:0;;;27156:50;27148:84;;;;;-1:-1:-1;;;27148:84:0;;;;;;;;;;;;-1:-1:-1;;;27148:84:0;;;;;;;;;;;;;;;27347:18;;27274:23;:15;:23;;;-1:-1:-1;;;27347:18:0;;;;27330:35;;;27403:15;;;;;;:33;;-1:-1:-1;;;;;;27422:14:0;;;;27403:33;:51;;;;-1:-1:-1;;;;;;27440:14:0;;;;27403:51;27399:342;;;27612:11;27556:67;;27564:44;27598:9;27564:27;27581:9;27564:16;:27::i;:::-;-1:-1:-1;;;;;27564:33:0;;:44;:33;:44;:::i;:::-;27532:20;:91;;-1:-1:-1;;;;;27556:53:0;;;;:67;;;;27532:91;;;27662:67;;;27670:44;27704:9;27670:27;27687:9;27670:16;:27::i;:44::-;27638:20;:91;;-1:-1:-1;;;;;27662:53:0;;;;:67;;;;27638:91;;;27399:342;27751:8;:28;;-1:-1:-1;;27751:28:0;-1:-1:-1;;;;;27751:28:0;;;;;;;-1:-1:-1;;;;27790:28:0;-1:-1:-1;;;27790:28:0;;;;;;;;;-1:-1:-1;;;;;27829:35:0;-1:-1:-1;;;27829:35:0;;;;;;;;;27880:24;;;27885:8;;;27880:24;;27895:8;;;;;;;27880:24;;;;;;;;;;;;;;;;;26995:917;;;;;;:::o;24326:431::-;24376:4;;24370:18;;;-1:-1:-1;;;24370:18:0;;;;24391:1;;-1:-1:-1;;;;;24376:4:0;;24370:16;;:18;;;;;;;;;;;;;;24376:4;24370:18;;;2:2:-1;;;;27:1;24;17:12;2:2;24370:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24370:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24370:18:0;:22;24367:383;;;24429:4;;24423:18;;;-1:-1:-1;;;24423:18:0;;;;24409:11;;-1:-1:-1;;;;;24429:4:0;;24423:16;;:18;;;;;;;;;;;;;;24409:11;24429:4;24423:18;;;2:2:-1;;;;27:1;24;17:12;2:2;24423:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24423:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24423:18:0;24495:6;;24482:60;;;-1:-1:-1;;;24482:60:0;;-1:-1:-1;;;24482:60:0;;;;;;24423:18;;-1:-1:-1;24456:14:0;;24545:5;;-1:-1:-1;;;;;24495:6:0;;24482:35;;:60;;;;;24423:18;;24482:60;;;;;;;24495:6;24482:60;;;2:2:-1;;;;27:1;24;17:12;2:2;24482:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24482:60:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24482:60:0;24473:69;;:77;;;;;;24456:94;;24565:18;24599:6;;;;;;;;;-1:-1:-1;;;;;24599:6:0;-1:-1:-1;;;;;24586:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24586:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24586:26:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24586:26:0;24641:4;;24586:26;;-1:-1:-1;24627:42:0;;-1:-1:-1;;;;;24641:4:0;24586:26;24659:9;24627:13;:42::i;:::-;24699:39;24716:21;:6;24727:9;24716:21;:10;:21;:::i;:::-;24699:12;;;:39;:16;:39;:::i;:::-;24684:12;:54;-1:-1:-1;;;24367:383:0;24326:431::o;17023:387::-;17078:4;17095:9;:7;:9::i;:::-;17115:12;17122:4;17115:6;:12::i;:::-;-1:-1:-1;;;;;17146:11:0;;17171:1;17146:11;;;:5;:11;;;;;:22;;;17138:54;;;;;-1:-1:-1;;;17138:54:0;;;;;;;;;;;;-1:-1:-1;;;17138:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17217:11:0;;;17203;17217;;;:5;:11;;;;;:22;;;17278:10;;17217:22;;17250:59;;17278:10;17290;17217:22;17250:27;:59::i;:::-;-1:-1:-1;;;;;17320:11:0;;17345:1;17320:11;;;:5;:11;;;;;:22;;:26;17357:11;:21;;;;;;17372:6;-1:-1:-1;17023:387:0;;;;:::o;3955:136::-;4013:7;4040:43;4044:1;4047;4040:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4033:50;3955:136;-1:-1:-1;;;3955:136:0:o;16233:542::-;-1:-1:-1;;;;;16341:11:0;;16296:4;16341:11;;;:5;:11;;;;;16389:17;;16471;;:22;16467:184;;16510:11;16524:16;:14;:16::i;:::-;16510:30;;16576:63;16599:39;16620:17;;16599:16;16610:4;16599:6;:10;;:16;;;;:::i;:::-;:20;:39;:20;:39;:::i;:::-;16576:18;;:63;:22;:63;:::i;:::-;16555:84;;16467:184;;16668:99;16747:8;:19;;;16668:74;16722:8;:19;;;16668:49;16712:4;16668:39;16688:18;16668:8;:15;;;:19;;:39;;;;:::i;:49::-;:53;:74;:53;:74;:::i;:99::-;16661:106;16233:542;-1:-1:-1;;;;16233:542:0:o;4845:471::-;4903:7;5148:6;5144:47;;-1:-1:-1;5178:1:0;5171:8;;5144:47;5215:5;;;5219:1;5215;:5;:1;5239:5;;;;;:10;5231:56;;;;-1:-1:-1;;;5231:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21828:303;21873:6;21900:1;21896;:5;21892:232;;;-1:-1:-1;21922:1:0;21955;21951;21947:5;;:9;21971:92;21982:1;21978;:5;21971:92;;;22008:1;22004:5;;22046:1;22041;22037;22033;:5;;;;;;:9;22032:15;;;;;;22028:19;;21971:92;;;21892:232;;;;22084:6;;22080:44;;-1:-1:-1;22111:1:0;21828:303;;;:::o;23898:200::-;23974:11;;:22;;23990:5;23974:22;:15;:22;:::i;:::-;23960:11;:36;-1:-1:-1;;;;;24023:13:0;;;;;;:9;:13;;;;;;:24;;24041:5;24023:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;24007:13:0;;;;;;:9;:13;;;;;;;;:40;;;;24063:27;;;;;;;24007:13;;;;24063:27;;;;;;;;;;23898:200;;:::o;21614:96::-;21666:6;21693:1;21689;:5;:13;;21701:1;21689:13;;;-1:-1:-1;21697:1:0;;21685:17;-1:-1:-1;21614:96:0:o;14961:490::-;15044:4;15077:1;15069:5;:9;15061:66;;;;-1:-1:-1;;;15061:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15168:11:0;;15140:25;15168:11;;;:5;:11;;;;;15190:9;:7;:9::i;:::-;15210:12;15217:4;15210:6;:12::i;:::-;15255:17;;:28;;15277:5;15255:28;:21;:28;:::i;:::-;15235:17;:48;15314:15;;:26;;15334:5;15314:26;:19;:26;:::i;:::-;15296:44;;;15393:17;;15373:48;;15416:4;;15373:38;;15296:44;15373:38;:19;:38;:::i;:48::-;15351:19;;;;:70;:19;14961:490;-1:-1:-1;;;14961:490:0:o;24106:208::-;-1:-1:-1;;;;;24188:15:0;;;;;;:9;:15;;;;;;:26;;24208:5;24188:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;24170:15:0;;;;;;:9;:15;;;;;:44;24239:11;;:22;;24255:5;24239:22;:15;:22;:::i;:::-;24225:11;:36;24277:29;;;;;;;;24296:1;;-1:-1:-1;;;;;24277:29:0;;;;;;;;;;;;24106:208;;:::o;15698:523::-;-1:-1:-1;;;;;15826:11:0;;15781:4;15826:11;;;:5;:11;;;;;15856:9;;;;;:37;;-1:-1:-1;15869:15:0;;:24;-1:-1:-1;15869:24:0;15856:37;15848:75;;;;;-1:-1:-1;;;15848:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15944:9;:7;:9::i;:::-;15964:12;15971:4;15964:6;:12::i;:::-;16015:15;;:26;;16035:5;16015:26;:19;:26;:::i;:::-;15997:44;;;16094:17;;16074:48;;16117:4;;16074:38;;15997:44;16074:38;:19;:38;:::i;:48::-;16052:19;;;:70;16153:17;;:28;;16175:5;16153:28;:21;:28;:::i;:::-;16133:17;:48;-1:-1:-1;16209:4:0;;15698:523;-1:-1:-1;;;15698:523:0:o;13467:97::-;13532:10;:24;;-1:-1:-1;;;;;;13532:24:0;-1:-1:-1;;;;;13532:24:0;;;;;;;;;;13467:97::o;21150:120::-;-1:-1:-1;;;;;21226:10:0;-1:-1:-1;;;21226:17:0;;21150:120::o;21341:108::-;21401:9;-1:-1:-1;;;;;21431:10:0;;-1:-1:-1;;;;;21427:14:0;;21431:10;21427:14;;;;;;21341:108;-1:-1:-1;;;21341:108:0:o;3491:181::-;3549:7;3581:5;;;3605:6;;;;3597:46;;;;;-1:-1:-1;;;3597:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13640:368;13691:17;;13687:121;;13743:32;13758:16;:14;:16::i;:::-;13743:10;;;:32;:14;:32;:::i;:::-;13730:10;:45;13790:7;;13687:121;13828:14;13845:16;:14;:16::i;:::-;13828:33;;13892:62;13914:39;13935:17;;13914:16;13925:4;13914:6;:10;;:16;;;;:::i;:39::-;13892:17;;;:62;:21;:62;:::i;:::-;13872:17;:82;13978:10;;:22;;13993:6;13978:22;:14;:22;:::i;:::-;13965:10;:35;-1:-1:-1;13640:368:0:o;14242:468::-;-1:-1:-1;;;;;14328:11:0;;14300:25;14328:11;;;:5;:11;;;;;14354:15;;:19;14350:353;;14390:12;14405:73;14458:8;:19;;;14405:48;14448:4;14405:38;14425:17;;14405:8;:15;;;:19;;:38;;;;:::i;:73::-;14515:19;;;;14390:88;;-1:-1:-1;14515:32:0;;14390:88;14515:32;:23;:32;:::i;:::-;14493:19;;;:54;14579:14;;:27;;14598:7;14579:27;:18;:27;:::i;:::-;14562:14;:44;14663:17;;14643:15;;:48;;14686:4;;14643:38;;;:19;:38;:::i;:48::-;14621:19;;;:70;-1:-1:-1;14350:353:0;14242:468;;:::o;1549:361::-;1744:45;;;-1:-1:-1;;;;;1744:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1744:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1733:57:0;;;;1698:12;;1712:17;;1733:10;;;;1744:45;1733:57;;;25:18:-1;1733:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1733:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1697:93:0;;;;1809:7;:57;;;;-1:-1:-1;1821:11:0;;:16;;:44;;;1852:4;1841:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1841:24:0;1821:44;1801:101;;;;;-1:-1:-1;;;1801:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4394:192;4480:7;4516:12;4508:6;;;;4500:29;;;;-1:-1:-1;;;4500: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;4500:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4552:5:0;;;4394:192::o;24769:322::-;24875:6;;24862:60;;;-1:-1:-1;;;24862:60:0;;-1:-1:-1;;;24862:60:0;;;;;;24827:4;;;;-1:-1:-1;;;;;24875:6:0;;;;24862:35;;:60;;;;;;;;;;;;;;;24875:6;24862:60;;;2:2:-1;;;;27:1;24;17:12;2:2;24862:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24862:60:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24862:60:0;24957:4;;24951:18;;;-1:-1:-1;;;24951:18:0;;;;24862:60;;-1:-1:-1;24933:15:0;;24951:53;;24998:5;;24951:42;;24974:18;;;;-1:-1:-1;;;;;24957:4:0;;24951:16;;:18;;;;;24862:60;;24951:18;;;;;;;24957:4;24951:18;;;2:2:-1;;;;27:1;24;17:12;2:2;24951:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24951:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24951:18:0;;:42;:22;:42;:::i;:53::-;24933:71;;25022:61;25072:10;;25022:45;25056:10;25022:29;25038:12;;25022:11;;:15;;:29;;;;:::i;:61::-;25015:68;;;;24769:322;:::o;5792:132::-;5850:7;5877:39;5881:1;5884;5877:39;;;;;;;;;;;;;;;;;6506:7;6541:12;6534:5;6526:28;;;;-1:-1:-1;;;6526:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6526:28:0;;6565:9;6581:1;6577;:5;;;;;;;6420:278;-1:-1:-1;;;;;6420:278:0:o

Swarm Source

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