Contract 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc14dbaf0bf61e0951e772a703431c6e305d03cf54dd3473e42d6a33d279cb2a5Mint Reward58159692021-03-19 11:35:25303 days 13 hrs ago0x022e3ce4eda264b3e3fef62036c8182ceb88e6ce IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0xf46c8f4187522c81f7f963b41016faa5f85dd31d52fd84d6e59c229c66313c09Mint Reward57319722021-03-16 13:32:20306 days 11 hrs ago0x880542e7235e529f107cd950afb24e4cd32d22f3 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x5d7a568012e910ce7c95bf38ac8efeb5873018f90bfcab0685bdc75998047411Sync55797622021-03-11 6:26:26311 days 18 hrs ago0x08be1270a2b9af0c00051c5d4a2a970f87bcc600 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00055388
0xaebbed9402871f8f6ca61cff132f13fff31e6d8888a98adb2eafc784abbb0b83Swap55779722021-03-11 4:56:55311 days 20 hrs ago0x08be1270a2b9af0c00051c5d4a2a970f87bcc600 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00026225
0x1a5f19a2c8e609d88e92eeea353256d03d6af08f1f8679299a6c4c07058a4bfaMint Reward54661872021-03-07 7:42:18315 days 17 hrs ago0x43929c3b2ed5664315c05422e4ffac78deccd4bc IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0xa9af70901f8b567b010fa0e50bbe925b776c52377ddec975cff6b2abdc04bec0Mint Reward54445732021-03-06 13:40:06316 days 11 hrs ago0x0064dd1840a0e5284280244f2da76aef484c6cd3 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x385ff33747b8f08fb22fab5fa056036274198cfe25e1bc2de050f4f4cae1cbf8Mint Reward53834422021-03-04 10:43:21318 days 14 hrs ago0xade883c2d201faee374ee238b88f4c0d9adf0d04 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0xc84933ac2692746f7c0dc68feb788aef09856be7bf0908c63d747e1819307120Mint Reward50802882021-02-21 19:43:08329 days 5 hrs ago0x7834c9a4b652f096a84c364b1c44828bb750924b IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x0568b6a0f545f97f0811e99a28da7bd7c8bc20a2ae5dc5e37779f6123db782f9Mint Reward50533012021-02-20 20:49:53330 days 4 hrs ago0x08428e99cdf6e3cc9137ab19f4ebe508e22e5697 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x5f2e947f1a32a2288a3977abdc1069f969e12b39e0fdf6a259bd71caeb138500Mint Reward50404442021-02-20 9:45:46330 days 15 hrs ago0x2315e82dde3fe4c921c0e3dc4b2978a424019812 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x5ff93cc7171f01419b4830416ba4147b314fe00ad2718c095bbdeb988e0c52d0Mint Reward50367232021-02-20 6:37:36330 days 18 hrs ago0x9c522e518bed1a71b5d465614bc64dd512d8f2fc IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.001126995
0x12c515af1c297a3393ec8d3b72ae3c390bb70137f1b0af0f020a2a4f0839c161Mint Reward50335932021-02-20 3:58:00330 days 20 hrs ago0xf377c0a41c56ab72ea50965d67e0b38be77f0b3d IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00249579
0x474a556ef4d8a54d5dd14d266e8b1b63f0a40e48b10dee36d65d64b304ae3aedMint Reward50264592021-02-19 21:57:05331 days 3 hrs ago0x07c9fc2907df7c99e9fdd4326ed6a81bdc7c62b5 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x2a2663174816677ae9b581ba1f01398ee151d6f7f79a12a2bdd19308a2ce03e0Mint Reward50235492021-02-19 19:31:15331 days 5 hrs ago0x0092dd784a50e356b9e1705dc780fcdcd55d78e7 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0xd1e00c72f3e815241e0f00dbd1d9581e3c87ed43c03ce9c776316e672018b8cfMint Reward50179122021-02-19 14:14:30331 days 10 hrs ago0x931b68bd47ca98c1af6e0d640527c313a0fc20e4 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00064319
0x68bf69644d87320d67d751629fade088d57becf842c27401e77790ee261892c5Mint Reward50179112021-02-19 14:14:27331 days 10 hrs ago0x931b68bd47ca98c1af6e0d640527c313a0fc20e4 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x6c0373e51fb4acdd9e5945701cd89bfd7834fe37d84d7a68da2bf46e77b8db01Mint Reward50170432021-02-19 13:17:56331 days 11 hrs ago0xe857077b8d53d7ebeba5ca2df57166ae40368c65 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0xb806b913304ca6520ddec89569d39673e4b65d0805ff0cd1fa36d9d056a7bc80Mint Reward50162112021-02-19 12:21:32331 days 12 hrs ago0xc782607b290535ccde768a630331a3c8dd0efc47 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00075133
0x9ddf8be7a857e7c445ba0dd1d3b36986f892ce94f9f3135b431a7eb668ce1457Mint Reward50107902021-02-19 7:25:19331 days 17 hrs ago0xa65f129276e9d47b127512e48e08a6eef64f34c8 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x49bec010684c572860659af3a2a6c332cd7dce1684bb8febeba2d864deda00b4Mint Reward50080172021-02-19 5:05:30331 days 19 hrs ago0xcabe9a07454c906ca63e88f54cebae440fb08ba0 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0x0465d64ce0cc9aab2e55daaa7239590b8cdd0bfdffe4020e945778b943eef471Mint Reward50072122021-02-19 4:25:11331 days 20 hrs ago0x40b76db99fae43715a5ee36771daf1fa60f824a8 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00075133
0x1946b37d2dc42f843bd1eb56147e54b419c808609b9bfcd4937841a25c146033Mint Reward50039282021-02-19 1:40:47331 days 23 hrs ago0xa1c6bf9a94e603c0c7e0559a9bbe6329137239f7 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00056259
0x2f7ba747dc339448b641d6eb76d474b59315b57a32f27d7e1f3fb0c7ac268c69Mint Reward50039242021-02-19 1:40:35331 days 23 hrs ago0xa1c6bf9a94e603c0c7e0559a9bbe6329137239f7 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
0xfd64324976f9e1dfdebc65dfb46b835a180d97db6afc68e27aca8b2b0849e4f1Mint Reward49923102021-02-18 15:49:42332 days 9 hrs ago0x3f529523984f91908c551b4ac9432e1049888fd0 IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00075133
0x456ddf92d9afae8b416ecfacec371e0397930c9538dce14a5ae40d9c6e8e090dMint Reward49722932021-02-17 23:05:05333 days 1 hr ago0x3ad64741cec31322dbf9e553ad27ac89b55a154d IN  0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e840 BNB0.00083193
[ Download CSV Export 
Latest 13 internal transactions
Parent Txn Hash Block From To Value
0x1a5f19a2c8e609d88e92eeea353256d03d6af08f1f8679299a6c4c07058a4bfa54661872021-03-07 7:42:18315 days 17 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0x1a5f19a2c8e609d88e92eeea353256d03d6af08f1f8679299a6c4c07058a4bfa54661872021-03-07 7:42:18315 days 17 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0x1a5f19a2c8e609d88e92eeea353256d03d6af08f1f8679299a6c4c07058a4bfa54661872021-03-07 7:42:18315 days 17 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x1a5f19a2c8e609d88e92eeea353256d03d6af08f1f8679299a6c4c07058a4bfa54661872021-03-07 7:42:18315 days 17 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0xa9af70901f8b567b010fa0e50bbe925b776c52377ddec975cff6b2abdc04bec054445732021-03-06 13:40:06316 days 11 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0xa9af70901f8b567b010fa0e50bbe925b776c52377ddec975cff6b2abdc04bec054445732021-03-06 13:40:06316 days 11 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0xa9af70901f8b567b010fa0e50bbe925b776c52377ddec975cff6b2abdc04bec054445732021-03-06 13:40:06316 days 11 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0xa9af70901f8b567b010fa0e50bbe925b776c52377ddec975cff6b2abdc04bec054445732021-03-06 13:40:06316 days 11 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0x385ff33747b8f08fb22fab5fa056036274198cfe25e1bc2de050f4f4cae1cbf853834422021-03-04 10:43:21318 days 14 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0x385ff33747b8f08fb22fab5fa056036274198cfe25e1bc2de050f4f4cae1cbf853834422021-03-04 10:43:21318 days 14 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0x385ff33747b8f08fb22fab5fa056036274198cfe25e1bc2de050f4f4cae1cbf853834422021-03-04 10:43:21318 days 14 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x385ff33747b8f08fb22fab5fa056036274198cfe25e1bc2de050f4f4cae1cbf853834422021-03-04 10:43:21318 days 14 hrs ago 0x082e27ae683a4ba2e3ba5ecb0eeb030d4ccd5e84 BurgerSwap: BURGER Token0 BNB
0x218ac3e24b60a0bd273776a771c15906c78c3184a7d8007196239c7cbbd5677f3609822020-09-10 16:18:46493 days 8 hrs ago 0xa4790135ba4439cdb2efb35fe191dc83d3d627f6  Contract Creation0 BNB
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x7aC2F8D82cefbdc932e68dBfd36AdDc4d606ed6B

Contract Name:
DemaxPair

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity >=0.6.6;


// 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;
        }
    }
}

// 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);
    }
}

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);
}

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;
}

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

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);
}

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);
}

//SPDX-License-Identifier: MIT
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);
}

// SPDX-License-Identifier: MIT
/**
 * @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;
    }
}

// SPDX-License-Identifier: GPL-3.0-or-later
// 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');
    }
}

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;
    }
    
}

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');
}

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 skim(address to) external lock {
        address _token0 = token0;
        address _token1 = token1;
        _safeTransfer(_token0, to, _balanceOf(_token0, address(this)).sub(reserve0));
        _safeTransfer(_token1, to, _balanceOf(_token0, address(this)).sub(reserve1));
    }

    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 Security Audit

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":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","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"}]

60806040526001600755600160155534801561001a57600080fd5b50600880546001600160a01b03191633179055612a628061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063723c2e2d1161010f578063cf675365116100a2578063f6b911bc11610071578063f6b911bc146104d0578063f8c8765e14610506578063ffc527bf14610544578063fff6cae91461054c576101f0565b8063cf675365146104b0578063d14c9641146104b8578063d21220a7146104c0578063d92e82e4146104c8576101f0565b8063a87430ba116100de578063a87430ba14610436578063ba9a7a561461047a578063bc25cf7714610482578063bfc8b208146104a8576101f0565b8063723c2e2d146103cc578063750142e6146103d45780638b185b35146103dc57806396cda08014610402576101f0565b80632c79db11116101875780635a3d5493116101565780635a3d5493146103705780636a627842146103785780636c9fa59e1461039e57806370a08231146103a6576101f0565b80632c79db11146103505780632dd310001461035857806354fd4d50146103605780635909c0d514610368576101f0565b80631485ff78116101c35780631485ff78146102f9578063174f57af1461030157806318160ddd1461030957806328e964e914610311576101f0565b8063022c0d9f146101f5578063026c4207146102835780630902f1ac1461029d5780630dfe1681146102d5575b600080fd5b6102816004803603608081101561020b57600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561024257600080fd5b82018360208201111561025457600080fd5b8035906020019184600183028401116401000000008311171561027657600080fd5b509092509050610554565b005b61028b6109ae565b60408051918252519081900360200190f35b6102a56109b4565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6102dd6109de565b604080516001600160a01b039092168252519081900360200190f35b61028b6109ed565b61028b6109f3565b61028b610aa9565b6103376004803603602081101561032757600080fd5b50356001600160a01b0316610aaf565b6040805192835260208301919091528051918290030190f35b610337610acd565b6102dd610ae1565b61028b610af0565b61028b610af6565b61028b610afc565b61028b6004803603602081101561038e57600080fd5b50356001600160a01b0316610b02565b6102dd610e04565b61028b600480360360208110156103bc57600080fd5b50356001600160a01b0316610e13565b6102dd610e25565b61028b610e34565b61028b600480360360208110156103f257600080fd5b50356001600160a01b0316610e3a565b6102816004803603606081101561041857600080fd5b508035906001600160a01b0360208201358116916040013516610e4c565b61045c6004803603602081101561044c57600080fd5b50356001600160a01b0316611069565b60408051938452602084019290925282820152519081900360600190f35b61028b61108a565b6102816004803603602081101561049857600080fd5b50356001600160a01b0316611090565b61028b611145565b61028b61114b565b61028b611151565b6102dd611157565b6102dd611166565b610337600480360360608110156104e657600080fd5b506001600160a01b03813581169160208101359091169060400135611175565b6102816004803603608081101561051c57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516611554565b61028b6115ff565b61028161161d565b6009546040805163097bc71960e31b815290516000926001600160a01b031691634bde38c8916004808301926020929190829003018186803b15801561059957600080fd5b505afa1580156105ad573d6000803e3d6000fd5b505050506040513d60208110156105c357600080fd5b50519050336001600160a01b0382161461061d576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b60155460011461065d576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601555851515806106705750600085115b6106ab5760405162461bcd60e51b81526004018080602001828103825260278152602001806128ec6027913960400191505060405180910390fd5b6000806106b66109b4565b5091509150816001600160701b0316881080156106db5750806001600160701b031687105b6107165760405162461bcd60e51b8152600401808060200182810382526024815260200180612a096024913960400191505060405180910390fd5b600b54600c5460009182916001600160a01b0391821691908116908a1682148015906107545750806001600160a01b03168a6001600160a01b031614155b61079f576040805162461bcd60e51b815260206004820152601760248201527644454d41582050414952203a20494e56414c49445f544f60481b604482015290519081900360640190fd5b8b156107b0576107b0828b8e6116b5565b8a156107c1576107c1818b8d6116b5565b871561087c57896001600160a01b03166321fb6c90338e8e8d8d6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b505050505b610886823061184f565b9350610892813061184f565b9250505060008a856001600160701b03160383116108b15760006108c0565b8a856001600160701b03160383035b905060008a856001600160701b03160383116108dd5760006108ec565b8a856001600160701b03160383035b90508b8b831515806108fe5750600083115b6109395760405162461bcd60e51b81526004018080602001828103825260268152602001806129136026913960400191505060405180910390fd5b61094586868a8a6119a2565b60408051858152602081018590528082018490526060810183905290516001600160a01b038e169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001601555505050505050505050505050565b60025481565b600d546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b600b546001600160a01b031681565b60115481565b6000601554600114610a35576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601555610a42611b69565b610a4b33611dab565b601154909150610a61908263ffffffff611e7716565b60118190556040805191825260208201839052805133927fef84ded3b746df8ce33b8e850942f885a71fa805217f9099d5e006a8f32ca58792908290030190a2600160155590565b60125481565b6001600160a01b031660009081526006602052604081205490549091565b600080610ad933611ec0565b924392509050565b6008546001600160a01b031681565b60075481565b600e5481565b600f5481565b600080600960009054906101000a90046001600160a01b03166001600160a01b0316634bde38c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5357600080fd5b505afa158015610b67573d6000803e3d6000fd5b505050506040513d6020811015610b7d57600080fd5b50519050336001600160a01b03821614610bd7576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b601554600114610c17576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601581905580610c276109b4565b50600b549193509150600090610c46906001600160a01b03163061184f565b600c54909150600090610c62906001600160a01b03163061184f565b90506000610c7f836001600160701b03871663ffffffff611e7716565b90506000610c9c836001600160701b03871663ffffffff611e7716565b60125490915080610ce557610cd16103e8610cc5610cc0868663ffffffff611f7016565b611fc9565b9063ffffffff611e7716565b9850610ce060006103e861201a565b610d34565b610d316001600160701b038816610d02858463ffffffff611f7016565b81610d0957fe5b046001600160701b038816610d24858563ffffffff611f7016565b81610d2b57fe5b046120b1565b98505b60008911610d735760405162461bcd60e51b815260040180806020018281038252602a815260200180612989602a913960400191505060405180910390fd5b610d7d8a8a61201a565b610d85611b69565b610d8f8a8a6120c7565b506001600160a01b038a166000908152601460205260409020439055610db7858589896119a2565b6040805184815260208101849052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050600160155550949695505050505050565b6005546001600160a01b031681565b60136020526000908152604090205481565b600a546001600160a01b031681565b60105481565b60146020526000908152604090205481565b6009546040805163097bc71960e31b815290516000926001600160a01b031691634bde38c8916004808301926020929190829003018186803b158015610e9157600080fd5b505afa158015610ea5573d6000803e3d6000fd5b505050506040513d6020811015610ebb57600080fd5b50519050336001600160a01b03821614610f15576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b831580610f335750816001600160a01b0316836001600160a01b0316145b15610f3d57611063565b600080610f486109b4565b50600b5491935091506001600160a01b03858116911614801590610f7a5750600c546001600160a01b03858116911614155b610fc5576040805162461bcd60e51b815260206004820152601760248201527644454d41582050414952203a20494e56414c49445f544f60481b604482015290519081900360640190fd5b610fd08585886116b5565b600b54600090610fe9906001600160a01b03163061184f565b600c54909150600090611005906001600160a01b03163061184f565b9050611013828286866119a2565b856001600160a01b0316876001600160a01b03167fd58eef465bb0100d5e79f7940ef7ec9eafeff04fa088db4388968231fffaf07d8a6040518082815260200191505060405180910390a3505050505b50505050565b60066020526000908152604090208054600182015460029092015490919083565b6103e881565b6015546001146110d0576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601555600b54600c54600d546001600160a01b039283169290911690611112908390859061110d906001600160701b0316610cc5843061184f565b6116b5565b600d5461113b908290859061110d90600160701b90046001600160701b0316610cc5873061184f565b5050600160155550565b60015490565b60045481565b60035481565b600c546001600160a01b031681565b6009546001600160a01b031681565b6000806000600960009054906101000a90046001600160a01b03166001600160a01b0316634bde38c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c857600080fd5b505afa1580156111dc573d6000803e3d6000fd5b505050506040513d60208110156111f257600080fd5b50519050336001600160a01b0382161461124c576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b60155460011461128c576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601555600954604080516360ccef1960e11b81527f52454d4f56455f4c49515549444954595f4455524154494f4e00000000000000600482015290516001600160a01b039092169163c199de3291602480820192602092909190829003018186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d602081101561132657600080fd5b50516001600160a01b038716600090815260146020526040902054014310156113805760405162461bcd60e51b815260040180806020018281038252602f81526020018061295a602f913960400191505060405180910390fd5b60008061138b6109b4565b50600b54600c549294509092506001600160a01b03908116911660006113b1833061184f565b905060006113bf833061184f565b6001600160a01b038d166000908152601360205260409020549091508a11156114195760405162461bcd60e51b815260040180806020018281038252602a8152602001806128c2602a913960400191505060405180910390fd5b6012548061142d8c8563ffffffff611f7016565b8161143457fe5b049950806114488c8463ffffffff611f7016565b8161144f57fe5b04985060008a1180156114625750600089115b61149d5760405162461bcd60e51b815260040180806020018281038252602a8152602001806129b3602a913960400191505060405180910390fd5b6114a78d8c612186565b6114af611b69565b6114b98d8c612223565b506114c5858d8c6116b5565b6114d0848d8b6116b5565b6114da853061184f565b92506114e6843061184f565b91506114f4838389896119a2565b604080518b8152602081018b905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a350505050505050600160158190555050935093915050565b6008546001600160a01b031633146115ac576040805162461bcd60e51b81526020600482015260166024820152752222a6a0ac102820a4a9101d102327a92124a22222a760511b604482015290519081900360640190fd5b600b80546001600160a01b03199081166001600160a01b0387811691909117909255600c80548216868416179055600980548216858416179055600a805490911683831617908190556110639116612305565b600a54600090611618906001600160a01b03163061184f565b905090565b60155460011461165d576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000601555600b546116ae9061167c906001600160a01b03163061184f565b600c54611692906001600160a01b03163061184f565b600d546001600160701b0380821691600160701b9004166119a2565b6001601555565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106117625780518252601f199092019160209182019101611743565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117c4576040519150601f19603f3d011682016040523d82523d6000602084013e6117c9565b606091505b50915091508180156117f75750805115806117f757508080602001905160208110156117f457600080fd5b50515b611848576040805162461bcd60e51b815260206004820152601c60248201527f44454d41582050414952203a205452414e534645525f4641494c454400000000604482015290519081900360640190fd5b5050505050565b600a546000906001600160a01b03848116911614801561187757506001600160a01b03821630145b1561191757611910601154846001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156118d857600080fd5b505afa1580156118ec573d6000803e3d6000fd5b505050506040513d602081101561190257600080fd5b50519063ffffffff611e7716565b905061199c565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561196d57600080fd5b505afa158015611981573d6000803e3d6000fd5b505050506040513d602081101561199757600080fd5b505190505b92915050565b6001600160701b0384118015906119c057506001600160701b038311155b611a09576040805162461bcd60e51b815260206004820152601560248201527444454d41582050414952203a204f564552464c4f5760581b604482015290519081900360640190fd5b600d5463ffffffff42811691600160e01b90048116820390811615801590611a3957506001600160701b03841615155b8015611a4d57506001600160701b03831615155b15611abe578063ffffffff16611a7b85611a6686612327565b6001600160e01b03169063ffffffff61233916565b600e80546001600160e01b03929092169290920201905563ffffffff8116611aa684611a6687612327565b600f80546001600160e01b0392909216929092020190555b600d80546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b600a546040805163159090bd60e01b815290516000926001600160a01b03169163159090bd916004808301926020929190829003018186803b158015611bae57600080fd5b505afa158015611bc2573d6000803e3d6000fd5b505050506040513d6020811015611bd857600080fd5b50511115611da957600a5460408051631249c58b60e01b815290516000926001600160a01b031691631249c58b91600480830192602092919082900301818787803b158015611c2657600080fd5b505af1158015611c3a573d6000803e3d6000fd5b505050506040513d6020811015611c5057600080fd5b5051600954604080516360ccef1960e11b81526a11115597d4149150d1539560aa1b60048201529051929350600092612710926001600160a01b03169163c199de32916024808301926020929190829003018186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b5051830281611ce757fe5b0490506000600960009054906101000a90046001600160a01b03166001600160a01b03166391cca3db6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d3a57600080fd5b505afa158015611d4e573d6000803e3d6000fd5b505050506040513d6020811015611d6457600080fd5b5051600a54909150611d80906001600160a01b031682846116b5565b611da2611d93848463ffffffff611e7716565b6011549063ffffffff61235e16565b6011555050505b565b6000611db56123b8565b611dbe82612439565b6001600160a01b038216600090815260066020526040902060020154611e1d576040805162461bcd60e51b815260206004820152600f60248201526e1393d512125391c81513c813525395608a1b604482015290519081900360640190fd5b6001600160a01b038083166000908152600660205260409020600201546005549091611e4b911633836124e1565b6001600160a01b038316600090815260066020526040812060020155600380548201905590505b919050565b6000611eb983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612644565b9392505050565b6001600160a01b0381166000908152600660205260408120600154825415611f2c576000611eec6126db565b9050611f28611f1b600054611f0f64e8d4a5100085611f7090919063ffffffff16565b9063ffffffff61281f16565b839063ffffffff61235e16565b9150505b611f688260010154610cc58460020154611f5c64e8d4a51000611f0f878960000154611f7090919063ffffffff16565b9063ffffffff61235e16565b949350505050565b600082611f7f5750600061199c565b82820282848281611f8c57fe5b0414611eb95760405162461bcd60e51b81526004018080602001828103825260218152602001806129396021913960400191505060405180910390fd5b6000600382111561200c575080600160028204015b8181101561200657809150600281828581611ff557fe5b040181611ffe57fe5b049050611fde565b50611e72565b8115611e7257506001919050565b60125461202d908263ffffffff61235e16565b6012556001600160a01b038216600090815260136020526040902054612059908263ffffffff61235e16565b6001600160a01b03831660008181526013602090815260408083209490945583518581529351929391927fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f89281900390910190a35050565b60008183106120c05781611eb9565b5090919050565b60008082116121075760405162461bcd60e51b815260040180806020018281038252602c8152602001806129dd602c913960400191505060405180910390fd5b6001600160a01b03831660009081526006602052604090206121276123b8565b61213084612439565b600054612143908463ffffffff61235e16565b6000558054612158908463ffffffff61235e16565b8082556001546121799164e8d4a5100091611f0f919063ffffffff611f7016565b6001918201559392505050565b6001600160a01b0382166000908152601360205260409020546121af908263ffffffff611e7716565b6001600160a01b0383166000908152601360205260409020556012546121db908263ffffffff611e7716565b6012556040805182815290516000916001600160a01b038516917fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b94539181900360200190a35050565b6001600160a01b0382166000908152600660205260408120821580159061224b575080548311155b61229c576040805162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f50524f44554354495649545900000000000000604482015290519081900360640190fd5b6122a46123b8565b6122ad84612439565b80546122bf908463ffffffff611e7716565b8082556001546122e09164e8d4a5100091611f0f919063ffffffff611f7016565b60018201556000546122f8908463ffffffff611e7716565b6000555060019392505050565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161235657fe5b049392505050565b600082820183811015611eb9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000546123e1576123d96123ca6126db565b6002549063ffffffff61235e16565b600255611da9565b60006123eb6126db565b905061241d61240e600054611f0f64e8d4a5100085611f7090919063ffffffff16565b6001549063ffffffff61235e16565b600155600254612433908263ffffffff61235e16565b60025550565b6001600160a01b03811660009081526006602052604090208054156124dd5760006124848260010154610cc564e8d4a51000611f0f6001548760000154611f7090919063ffffffff16565b600283015490915061249c908263ffffffff61235e16565b60028301556004546124b4908263ffffffff61235e16565b60045560015482546124d69164e8d4a5100091611f0f9163ffffffff611f7016565b6001830155505b5050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b6020831061255e5780518252601f19909201916020918201910161253f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146125c0576040519150601f19603f3d011682016040523d82523d6000602084013e6125c5565b606091505b50915091508180156125f35750805115806125f357508080602001905160208110156125f057600080fd5b50515b611848576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b600081848411156126d35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612698578181015183820152602001612680565b50505050905090810190601f1680156126c55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600954604080516360ccef1960e11b81526a11115597d4149150d1539560aa1b6004820152905160009283926001600160a01b039091169163c199de3291602480820192602092909190829003018186803b15801561273957600080fd5b505afa15801561274d573d6000803e3d6000fd5b505050506040513d602081101561276357600080fd5b5051600a546040805163159090bd60e01b815290519293506000926127f59261271092611f0f92878503926001600160a01b03169163159090bd916004808301926020929190829003018186803b1580156127bd57600080fd5b505afa1580156127d1573d6000803e3d6000fd5b505050506040513d60208110156127e757600080fd5b50519063ffffffff611f7016565b9050612818600254610cc583611f5c60115460035461235e90919063ffffffff16565b9250505090565b6000611eb983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836128ab5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612698578181015183820152602001612680565b5060008385816128b757fe5b049594505050505056fe44454d41582050414952203a20494e53554646494349454e545f4c49515549444954595f414d4f554e5444454d41582050414952203a20494e53554646494349454e545f4f55545055545f414d4f554e5444454d41582050414952203a20494e53554646494349454e545f494e5055545f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7744454d415820504c4154464f524d203a2052454d4f5645204c4951554944495459204455524154494f4e204641494c44454d41582050414952203a20494e53554646494349454e545f4c49515549444954595f4d494e54454444454d41582050414952203a20494e53554646494349454e545f4c49515549444954595f4255524e454450524f4455435449564954595f56414c55455f4d5553545f42455f475245415445525f5448414e5f5a45524f44454d41582050414952203a2020494e53554646494349454e545f4c4951554944495459a26469706673582212204d225b722b5690b08726d6af582aa124d1f48f8bd9473e6f7f890e76efeb0db864736f6c63430006060033

Deployed ByteCode Sourcemap

20918:12184:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20918:12184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;29538:1589:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;29538:1589:0;;;;;;;;-1:-1:-1;;;;;29538:1589:0;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;29538:1589:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;29538: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;29538:1589:0;;-1:-1:-1;29538:1589:0;-1:-1:-1;29538:1589:0;:::i;:::-;;14885:22;;;:::i;:::-;;;;;;;;;;;;;;;;23519:313;;;:::i;:::-;;;;-1:-1:-1;;;;;23519:313:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21300:21;;;:::i;:::-;;;;-1:-1:-1;;;;;21300:21:0;;;;;;;;;;;;;;21749:27;;;:::i;31926:252::-;;;:::i;21783:26::-;;;:::i;19290:145::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19290:145:0;-1:-1:-1;;;;;19290:145:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;31730:188;;;:::i;21217:22::-;;;:::i;20962:26::-;;;:::i;21630:35::-;;;:::i;21672:::-;;;:::i;26444:1219::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26444:1219:0;-1:-1:-1;;;;;26444:1219:0;;:::i;14983:25::-;;;:::i;21816:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21816:44:0;-1:-1:-1;;;;;21816:44:0;;:::i;21274:19::-;;;:::i;21716:26::-;;;:::i;22096:48::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22096:48:0;-1:-1:-1;;;;;22096:48:0;;:::i;31135:587::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31135:587:0;;;-1:-1:-1;;;;;31135:587:0;;;;;;;;;;;;:::i;15220:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15220:41:0;-1:-1:-1;;;;;15220:41:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;21064:49;;;:::i;32186:292::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32186:292:0;-1:-1:-1;;;;;32186:292:0;;:::i;19491:107::-;;;:::i;14944:26::-;;;:::i;14914:23::-;;;:::i;21328:21::-;;;:::i;21246:::-;;;:::i;27775:1651::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;27775:1651:0;;;;;;;;;;;;;;;;;:::i;24982:348::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;24982:348:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;32486:113::-;;;:::i;32953:146::-;;;:::i;29538:1589::-;24811:6;;24798:31;;;-1:-1:-1;;;24798:31:0;;;;24779:16;;-1:-1:-1;;;;;24811:6:0;;24798:29;;:31;;;;;;;;;;;;;;24811:6;24798:31;;;2:2:-1;;;;27:1;24;17:12;2:2;24798:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24798:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24798:31:0;;-1:-1:-1;24848:10:0;-1:-1:-1;;;;;24848:22:0;;;24840:57;;;;;-1:-1:-1;;;24840:57:0;;;;;;;;;;;;-1:-1:-1;;;24840:57:0;;;;;;;;;;;;;;;22220:8:::1;;22232:1;22220:13;22212:32;;;::::0;;-1:-1:-1;;;22212:32:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;;::::1;;22266:1;22255:8;:12:::0;29714:14;;;;:32:::2;;;29745:1;29732:10;:14;29714:32;29706:84;;;;-1:-1:-1::0;;;29706:84:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29802:17;29821::::0;29844:13:::2;:11;:13::i;:::-;29801:56;;;;;29904:9;-1:-1:-1::0;;;;;29891:22:0::2;:10;:22;:48;;;;;29930:9;-1:-1:-1::0;;;;;29917:22:0::2;:10;:22;29891:48;29883:97;;;;-1:-1:-1::0;;;29883:97:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30078:6;::::0;30117::::2;::::0;29991:16:::2;::::0;;;-1:-1:-1;;;;;30078:6:0;;::::2;::::0;30117;;::::2;::::0;30146:13;::::2;::::0;::::2;::::0;::::2;::::0;:30:::2;;;30169:7;-1:-1:-1::0;;;;;30163:13:0::2;:2;-1:-1:-1::0;;;;;30163:13:0::2;;;30146:30;30138:66;;;::::0;;-1:-1:-1;;;30138:66:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;30138:66:0;;;;;;;;;;;;;::::2;;30223:14:::0;;30219:58:::2;;30239:38;30253:7;30262:2;30266:10;30239:13;:38::i;:::-;30296:14:::0;;30292:58:::2;;30312:38;30326:7;30335:2;30339:10;30312:13;:38::i;:::-;30369:15:::0;;30365:89:::2;;30399:2;-1:-1:-1::0;;;;;30386:26:0::2;;30413:10;30425;30437;30449:4;;30386:68;;;;;;;;;;;;;-1:-1:-1::0;;;;;30386:68:0::2;-1:-1:-1::0;;;;;30386: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;;30386:68:0;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;30386:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;30386:68:0;;;;30365:89;30480:34;30491:7;30508:4;30480:10;:34::i;:::-;30469:45;;30540:34;30551:7;30568:4;30540:10;:34::i;:::-;30529:45;;22278:1;;30596:17;30639:10;30627:9;-1:-1:-1::0;;;;;30627:22:0::2;;30616:8;:33;:75;;30690:1;30616:75;;;30676:10;30664:9;-1:-1:-1::0;;;;;30664:22:0::2;;30652:8;:35;30616:75;30596:95;;30702:17;30745:10;30733:9;-1:-1:-1::0;;;;;30733:22:0::2;;30722:8;:33;:75;;30796:1;30722:75;;;30782:10;30770:9;-1:-1:-1::0;;;;;30770:22:0::2;;30758:8;:35;30722:75;30702:95:::0;-1:-1:-1;30830:10:0;30873;30902:13;;;;:30:::2;;;30931:1;30919:9;:13;30902:30;30894:81;;;;-1:-1:-1::0;;;30894:81:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30986:49;30994:8;31004;31014:9;31025;30986:7;:49::i;:::-;31051:68;::::0;;;;;::::2;::::0;::::2;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31051:68:0;::::2;::::0;31056:10:::2;::::0;31051:68:::2;::::0;;;;;;;::::2;-1:-1:-1::0;;22301:1:0::1;22290:8;:12:::0;-1:-1:-1;;;;;;;;;;;;29538:1589:0:o;14885:22::-;;;;:::o;23519:313::-;23734:8;;-1:-1:-1;;;;;23734:8:0;;;;-1:-1:-1;;;23765:8:0;;;;;;-1:-1:-1;;;23806:18:0;;;;;23519:313::o;21300:21::-;;;-1:-1:-1;;;;;21300:21:0;;:::o;21749:27::-;;;;:::o;31926:252::-;31971:18;22220:8;;22232:1;22220:13;22212:32;;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;;;;22266:1;22255:8;:12;32002:11:::1;:9;:11::i;:::-;32037:17;32043:10;32037:5;:17::i;:::-;32080:12;::::0;32024:30;;-1:-1:-1;32080:28:0::1;::::0;32024:30;32080:28:::1;:16;:28;:::i;:::-;32065:12;:43:::0;;;32124:46:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;32133:10:::1;::::0;32124:46:::1;::::0;;;;;;;::::1;22301:1:::0;22290:8;:12;31926:252;:::o;21783:26::-;;;;:::o;19290:145::-;-1:-1:-1;;;;;19389:11:0;19358:4;19389:11;;;:5;:11;;;;;:18;19409:17;;19389:18;;19290:145::o;31730:188::-;31776:20;31798:19;31845:28;31862:10;31845:16;:28::i;:::-;31830:43;31898:12;;-1:-1:-1;31730:188:0;-1:-1:-1;31730:188:0:o;21217:22::-;;;-1:-1:-1;;;;;21217:22:0;;:::o;20962:26::-;;;;:::o;21630:35::-;;;;:::o;21672:::-;;;;:::o;26444:1219::-;26506:17;24779:16;24811:6;;;;;;;;;-1:-1:-1;;;;;24811:6:0;-1:-1:-1;;;;;24798:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24798:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24798:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24798:31:0;;-1:-1:-1;24848:10:0;-1:-1:-1;;;;;24848:22:0;;;24840:57;;;;;-1:-1:-1;;;24840:57:0;;;;;;;;;;;;-1:-1:-1;;;24840:57:0;;;;;;;;;;;;;;;22220:8:::1;;22232:1;22220:13;22212:32;;;::::0;;-1:-1:-1;;;22212:32:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;;::::1;;22266:1;22255:8;:12:::0;;;22266:1;26579:13:::2;:11;:13::i;:::-;-1:-1:-1::0;26648:6:0::2;::::0;26536:56;;-1:-1:-1;26536:56:0;-1:-1:-1;26618:16:0::2;::::0;26637:33:::2;::::0;-1:-1:-1;;;;;26648:6:0::2;26664:4;26637:10;:33::i;:::-;26711:6;::::0;26618:52;;-1:-1:-1;26681:16:0::2;::::0;26700:33:::2;::::0;-1:-1:-1;;;;;26711:6:0::2;26727:4;26700:10;:33::i;:::-;26681:52:::0;-1:-1:-1;26744:15:0::2;26762:23;:8:::0;-1:-1:-1;;;;;26762:23:0;::::2;;:12;:23;:::i;:::-;26744:41:::0;-1:-1:-1;26796:15:0::2;26814:23;:8:::0;-1:-1:-1;;;;;26814:23:0;::::2;;:12;:23;:::i;:::-;26871:11;::::0;26796:41;;-1:-1:-1;26975:17:0;26971:353:::2;;27021:54;21108:5;27021:31;27031:20;:7:::0;27043;27031:20:::2;:11;:20;:::i;:::-;27021:9;:31::i;:::-;:35:::0;:54:::2;:35;:54;:::i;:::-;27009:66;;27090:36;27104:1;21108:5;27090;:36::i;:::-;26971:353;;;27226:86;-1:-1:-1::0;;;;;27235:37:0;::::2;:25;:7:::0;27247:12;27235:25:::2;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;27274:37:0;::::2;:25;:7:::0;27286:12;27274:25:::2;:11;:25;:::i;:::-;:37;;;;;;27226:8;:86::i;:::-;27214:98;;26971:353;27354:1;27342:9;:13;27334:68;;;;-1:-1:-1::0;;;27334:68:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27413:20;27419:2;27423:9;27413:5;:20::i;:::-;27444:11;:9;:11::i;:::-;27466:36;27488:2;27492:9;27466:21;:36::i;:::-;-1:-1:-1::0;;;;;;27513:17:0;::::2;;::::0;;;:13:::2;:17;::::0;;;;27533:12:::2;27513:32:::0;;27556:49:::2;27564:8:::0;27574;27584:9;27595;27556:7:::2;:49::i;:::-;27621:34;::::0;;;;;::::2;::::0;::::2;::::0;;;;;27626:10:::2;::::0;27621:34:::2;::::0;;;;;;::::2;-1:-1:-1::0;;22301:1:0::1;22290:8;:12:::0;-1:-1:-1;26444:1219:0;;;-1:-1:-1;;;;;;26444:1219:0:o;14983:25::-;;;-1:-1:-1;;;;;14983:25:0;;:::o;21816:44::-;;;;;;;;;;;;;:::o;21274:19::-;;;-1:-1:-1;;;;;21274:19:0;;:::o;21716:26::-;;;;:::o;22096:48::-;;;;;;;;;;;;;:::o;31135:587::-;24811:6;;24798:31;;;-1:-1:-1;;;24798:31:0;;;;24779:16;;-1:-1:-1;;;;;24811:6:0;;24798:29;;:31;;;;;;;;;;;;;;24811:6;24798:31;;;2:2:-1;;;;27:1;24;17:12;2:2;24798:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24798:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24798:31:0;;-1:-1:-1;24848:10:0;-1:-1:-1;;;;;24848:22:0;;;24840:57;;;;;-1:-1:-1;;;24840:57:0;;;;;;;;;;;;-1:-1:-1;;;24840:57:0;;;;;;;;;;;;;;;31266:11;;;:26:::1;;;31290:2;-1:-1:-1::0;;;;;31281:11:0::1;:5;-1:-1:-1::0;;;;;31281:11:0::1;;31266:26;31262:39;;;31294:7;;31262:39;31312:17;31331::::0;31354:13:::1;:11;:13::i;:::-;-1:-1:-1::0;31392:6:0::1;::::0;31311:56;;-1:-1:-1;31311:56:0;-1:-1:-1;;;;;;31386:12:0;;::::1;31392:6:::0;::::1;31386:12;::::0;::::1;::::0;:28:::1;;-1:-1:-1::0;31408:6:0::1;::::0;-1:-1:-1;;;;;31402:12:0;;::::1;31408:6:::0;::::1;31402:12;;31386:28;31378:64;;;::::0;;-1:-1:-1;;;31378:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31378:64:0;;;;;;;;;;;;;::::1;;31453:32;31467:5;31474:2;31478:6;31453:13;:32::i;:::-;31526:6;::::0;31496:16:::1;::::0;31515:33:::1;::::0;-1:-1:-1;;;;;31526:6:0::1;31542:4;31515:10;:33::i;:::-;31589:6;::::0;31496:52;;-1:-1:-1;31559:16:0::1;::::0;31578:33:::1;::::0;-1:-1:-1;;;;;31589:6:0::1;31605:4;31578:10;:33::i;:::-;31559:52;;31622:49;31630:8;31640;31650:9;31661;31622:7;:49::i;:::-;31702:2;-1:-1:-1::0;;;;;31687:27:0::1;31695:5;-1:-1:-1::0;;;;;31687:27:0::1;;31707:6;31687:27;;;;;;;;;;;;;;;;;;24908:1;;;;;31135:587:::0;;;;:::o;15220:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21064:49::-;21108:5;21064:49;:::o;32186:292::-;22220:8;;22232:1;22220:13;22212:32;;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;;;;22266:1;22255:8;:12;32255:6:::1;::::0;32290::::1;::::0;32373:8:::1;::::0;-1:-1:-1;;;;;32255:6:0;;::::1;::::0;32290;;::::1;::::0;32307:76:::1;::::0;32255:6;;32330:2;;32334:48:::1;::::0;-1:-1:-1;;;;;32373:8:0::1;32334:34;32255:6:::0;32362:4:::1;32334:10;:34::i;:48::-;32307:13;:76::i;:::-;32460:8;::::0;32394:76:::1;::::0;32408:7;;32417:2;;32421:48:::1;::::0;-1:-1:-1;;;32460:8:0;::::1;-1:-1:-1::0;;;;;32460:8:0::1;32421:34;32432:7:::0;32449:4:::1;32421:10;:34::i;32394:76::-;-1:-1:-1::0;;22301:1:0;22290:8;:12;-1:-1:-1;32186:292:0:o;19491:107::-;19573:17;;19491:107;:::o;14944:26::-;;;;:::o;14914:23::-;;;;:::o;21328:21::-;;;-1:-1:-1;;;;;21328:21:0;;:::o;21246:::-;;;-1:-1:-1;;;;;21246:21:0;;:::o;27775:1651::-;27901:15;27918;24779:16;24811:6;;;;;;;;;-1:-1:-1;;;;;24811:6:0;-1:-1:-1;;;;;24798:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24798:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24798:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24798:31:0;;-1:-1:-1;24848:10:0;-1:-1:-1;;;;;24848:22:0;;;24840:57;;;;;-1:-1:-1;;;24840:57:0;;;;;;;;;;;;-1:-1:-1;;;24840:57:0;;;;;;;;;;;;;;;22220:8:::1;;22232:1;22220:13;22212:32;;;::::0;;-1:-1:-1;;;22212:32:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;;::::1;;22266:1;22255:8;:12:::0;28036:6:::2;::::0;28023:74:::2;::::0;;-1:-1:-1;;;28023:74:0;;20000:36:::2;28023:74;::::0;::::2;::::0;;;-1:-1:-1;;;;;28036:6:0;;::::2;::::0;28023:35:::2;::::0;:74;;;;;::::2;::::0;;;;;;;;;28036:6;28023:74;::::2;;2:2:-1::0;::::2;;;27:1;24::::0;17:12:::2;2:2;28023:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;28023:74:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;-1:-1:::0;28023:74:0;-1:-1:-1;;;;;28001:19:0;::::2;;::::0;;;:13:::2;28023:74;28001:19:::0;;;;;:96:::2;27968:12;:129;;27946:226;;;;-1:-1:-1::0;;;27946:226:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28184:17;28203::::0;28226:13:::2;:11;:13::i;:::-;-1:-1:-1::0;28283:6:0::2;::::0;28333::::2;::::0;28183:56;;-1:-1:-1;28183:56:0;;-1:-1:-1;;;;;;28283:6:0;;::::2;::::0;28333::::2;28265:15;28384:34;28283:6:::0;28412:4:::2;28384:10;:34::i;:::-;28365:53;;28429:16;28448:34;28459:7;28476:4;28448:10;:34::i;:::-;-1:-1:-1::0;;;;;28501:15:0;::::2;;::::0;;;:9:::2;:15;::::0;;;;;28429:53;;-1:-1:-1;28501:25:0;-1:-1:-1;28501:25:0::2;28493:80;;;;-1:-1:-1::0;;;28493:80:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28609:11;::::0;;28719:20:::2;:6:::0;28730:8;28719:20:::2;:10;:20;:::i;:::-;:35;;;;;;::::0;-1:-1:-1;28846:12:0;28823:20:::2;:6:::0;28834:8;28823:20:::2;:10;:20;:::i;:::-;:35;;;;;;28813:45;;28935:1;28925:7;:11;:26;;;;;28950:1;28940:7;:11;28925:26;28917:81;;;;-1:-1:-1::0;;;28917:81:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29009:19;29015:4;29021:6;29009:5;:19::i;:::-;29039:11;:9;:11::i;:::-;29061:35;29083:4;29089:6;29061:21;:35::i;:::-;;29109;29123:7;29132:2;29136:7;29109:13;:35::i;:::-;29155;29169:7;29178:2;29182:7;29155:13;:35::i;:::-;29212:34;29223:7;29240:4;29212:10;:34::i;:::-;29201:45;;29268:34;29279:7;29296:4;29268:10;:34::i;:::-;29257:45;;29313:49;29321:8;29331;29341:9;29352;29313:7;:49::i;:::-;29380:38;::::0;;;;;::::2;::::0;::::2;::::0;;;;;-1:-1:-1;;;;;29380:38:0;::::2;::::0;29385:10:::2;::::0;29380:38:::2;::::0;;;;;;;;;::::2;22278:1;;;;;;;22301::::1;22290:8;:12;;;;27775:1651:::0;;;;;;;:::o;24982:348::-;25153:7;;-1:-1:-1;;;;;25153:7:0;25139:10;:21;25131:56;;;;;-1:-1:-1;;;25131:56:0;;;;;;;;;;;;-1:-1:-1;;;25131:56:0;;;;;;;;;;;;;;;25198:6;:16;;-1:-1:-1;;;;;;25198:16:0;;;-1:-1:-1;;;;;25198:16:0;;;;;;;;;;25225:6;:16;;;;;;;;;;25252:6;:16;;;;;;;;;;25279:4;:12;;;;;;;;;;;;;25302:20;;25317:4;25302:14;:20::i;32486:113::-;32571:4;;32533:7;;32560:31;;-1:-1:-1;;;;;32571:4:0;32585;32560:10;:31::i;:::-;32553:38;;32486:113;:::o;32953:146::-;22220:8;;22232:1;22220:13;22212:32;;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;-1:-1:-1;;;22212:32:0;;;;;;;;;;;;;;;22266:1;22255:8;:12;33013:6:::1;::::0;32994:97:::1;::::0;33002:33:::1;::::0;-1:-1:-1;;;;;33013:6:0::1;33029:4;33002:10;:33::i;:::-;33048:6;::::0;33037:33:::1;::::0;-1:-1:-1;;;;;33048:6:0::1;33064:4;33037:10;:33::i;:::-;33072:8;::::0;-1:-1:-1;;;;;33072:8:0;;::::1;::::0;-1:-1:-1;;;33082:8:0;::::1;;32994:7;:97::i;:::-;22301:1:::0;22290:8;:12;32953:146::o;23840:326::-;21172:34;;;;;;;;;;;;;;;;;24005:43;;-1:-1:-1;;;;;24005:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;24005:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;23994:55:0;;;;23959:12;;23973:17;;23994:10;;;24005:43;23994:55;;;25:18:-1;23994: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;;;23994: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;;23958:91:0;;;;24068:7;:57;;;;-1:-1:-1;24080:11:0;;:16;;:44;;;24111:4;24100:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24100:24:0;24080:44;24060:98;;;;;-1:-1:-1;;;24060:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23840:326;;;;;:::o;32607:297::-;32713:4;;32680:7;;-1:-1:-1;;;;;32704:13:0;;;32713:4;;32704:13;:39;;;;-1:-1:-1;;;;;;32721:22:0;;32738:4;32721:22;32704:39;32700:197;;;32767:48;32802:12;;32774:5;-1:-1:-1;;;;;32767:23:0;;32791:5;32767:30;;;;;;;;;;;;;-1:-1:-1;;;;;32767:30:0;-1:-1:-1;;;;;32767:30:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32767:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32767:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32767:30:0;;:48;:34;:48;:::i;:::-;32760:55;;;;32700:197;32862:5;-1:-1:-1;;;;;32855:23:0;;32879:5;32855:30;;;;;;;;;;;;;-1:-1:-1;;;;;32855:30:0;-1:-1:-1;;;;;32855:30:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32855:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32855:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32855:30:0;;-1:-1:-1;32700:197:0;32607:297;;;;:::o;25415:917::-;-1:-1:-1;;;;;25576:23:0;;;;;:50;;-1:-1:-1;;;;;;25603:23:0;;;25576:50;25568:84;;;;;-1:-1:-1;;;25568:84:0;;;;;;;;;;;;-1:-1:-1;;;25568:84:0;;;;;;;;;;;;;;;25767:18;;25694:23;:15;:23;;;-1:-1:-1;;;25767:18:0;;;;25750:35;;;25823:15;;;;;;:33;;-1:-1:-1;;;;;;25842:14:0;;;;25823:33;:51;;;;-1:-1:-1;;;;;;25860:14:0;;;;25823:51;25819:342;;;26032:11;25976:67;;25984:44;26018:9;25984:27;26001:9;25984:16;:27::i;:::-;-1:-1:-1;;;;;25984:33:0;;:44;:33;:44;:::i;:::-;25952:20;:91;;-1:-1:-1;;;;;25976:53:0;;;;:67;;;;25952:91;;;26082:67;;;26090:44;26124:9;26090:27;26107:9;26090:16;:27::i;:44::-;26058:20;:91;;-1:-1:-1;;;;;26082:53:0;;;;:67;;;;26058:91;;;25819:342;26171:8;:28;;-1:-1:-1;;26171:28:0;-1:-1:-1;;;;;26171:28:0;;;;;;;-1:-1:-1;;;;26210:28:0;-1:-1:-1;;;26210:28:0;;;;;;;;;-1:-1:-1;;;;;26249:35:0;-1:-1:-1;;;26249:35:0;;;;;;;;;26300:24;;;26305:8;;;26300:24;;26315:8;;;;;;;26300:24;;;;;;;;;;;;;;;;;25415:917;;;;;;:::o;22746:431::-;22796:4;;22790:18;;;-1:-1:-1;;;22790:18:0;;;;22811:1;;-1:-1:-1;;;;;22796:4:0;;22790:16;;:18;;;;;;;;;;;;;;22796:4;22790:18;;;2:2:-1;;;;27:1;24;17:12;2:2;22790:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22790:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22790:18:0;:22;22787:383;;;22849:4;;22843:18;;;-1:-1:-1;;;22843:18:0;;;;22829:11;;-1:-1:-1;;;;;22849:4:0;;22843:16;;:18;;;;;;;;;;;;;;22829:11;22849:4;22843:18;;;2:2:-1;;;;27:1;24;17:12;2:2;22843:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22843:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22843:18:0;22915:6;;22902:60;;;-1:-1:-1;;;22902:60:0;;-1:-1:-1;;;22902:60:0;;;;;;22843:18;;-1:-1:-1;22876:14:0;;22965:5;;-1:-1:-1;;;;;22915:6:0;;22902:35;;:60;;;;;22843:18;;22902:60;;;;;;;22915:6;22902:60;;;2:2:-1;;;;27:1;24;17:12;2:2;22902:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22902:60:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22902:60:0;22893:69;;:77;;;;;;22876:94;;22985:18;23019:6;;;;;;;;;-1:-1:-1;;;;;23019:6:0;-1:-1:-1;;;;;23006:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23006:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23006:26:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23006:26:0;23061:4;;23006:26;;-1:-1:-1;23047:42:0;;-1:-1:-1;;;;;23061:4:0;23006:26;23079:9;23047:13;:42::i;:::-;23119:39;23136:21;:6;23147:9;23136:21;:10;:21;:::i;:::-;23119:12;;;:39;:16;:39;:::i;:::-;23104:12;:54;-1:-1:-1;;;22787:383:0;22746:431::o;18830:387::-;18885:4;18902:9;:7;:9::i;:::-;18922:12;18929:4;18922:6;:12::i;:::-;-1:-1:-1;;;;;18953:11:0;;18978:1;18953:11;;;:5;:11;;;;;:22;;;18945:54;;;;;-1:-1:-1;;;18945:54:0;;;;;;;;;;;;-1:-1:-1;;;18945:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19024:11:0;;;19010;19024;;;:5;:11;;;;;:22;;;19085:10;;19024:22;;19057:59;;19085:10;19097;19024:22;19057:27;:59::i;:::-;-1:-1:-1;;;;;19127:11:0;;19152:1;19127:11;;;:5;:11;;;;;:22;;:26;19164:11;:21;;;;;;19179:6;-1:-1:-1;18830:387:0;;;;:::o;9223:136::-;9281:7;9308:43;9312:1;9315;9308:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9301:50;9223:136;-1:-1:-1;;;9223:136:0:o;18040:542::-;-1:-1:-1;;;;;18148:11:0;;18103:4;18148:11;;;:5;:11;;;;;18196:17;;18278;;:22;18274:184;;18317:11;18331:16;:14;:16::i;:::-;18317:30;;18383:63;18406:39;18427:17;;18406:16;18417:4;18406:6;:10;;:16;;;;:::i;:::-;:20;:39;:20;:39;:::i;:::-;18383:18;;:63;:22;:63;:::i;:::-;18362:84;;18274:184;;18475:99;18554:8;:19;;;18475:74;18529:8;:19;;;18475:49;18519:4;18475:39;18495:18;18475:8;:15;;;:19;;:39;;;;:::i;:49::-;:53;:74;:53;:74;:::i;:99::-;18468:106;18040:542;-1:-1:-1;;;;18040:542:0:o;10113:471::-;10171:7;10416:6;10412:47;;-1:-1:-1;10446:1:0;10439:8;;10412:47;10483:5;;;10487:1;10483;:5;:1;10507:5;;;;;:10;10499:56;;;;-1:-1:-1;;;10499:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:303;362:6;389:1;385;:5;381:232;;;-1:-1:-1;411:1:0;444;440;436:5;;:9;460:92;471:1;467;:5;460:92;;;497:1;493:5;;535:1;530;526;522;:5;;;;;;:9;521:15;;;;;;517:19;;460:92;;;381:232;;;;573:6;;569:44;;-1:-1:-1;600:1:0;317:303;;;:::o;22318:200::-;22394:11;;:22;;22410:5;22394:22;:15;:22;:::i;:::-;22380:11;:36;-1:-1:-1;;;;;22443:13:0;;;;;;:9;:13;;;;;;:24;;22461:5;22443:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;22427:13:0;;;;;;:9;:13;;;;;;;;:40;;;;22483:27;;;;;;;22427:13;;;;22483:27;;;;;;;;;;22318:200;;:::o;103:96::-;155:6;182:1;178;:5;:13;;190:1;178:13;;;-1:-1:-1;186:1:0;;174:17;-1:-1:-1;103:96:0:o;16768:490::-;16851:4;16884:1;16876:5;:9;16868:66;;;;-1:-1:-1;;;16868:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16975:11:0;;16947:25;16975:11;;;:5;:11;;;;;16997:9;:7;:9::i;:::-;17017:12;17024:4;17017:6;:12::i;:::-;17062:17;;:28;;17084:5;17062:28;:21;:28;:::i;:::-;17042:17;:48;17121:15;;:26;;17141:5;17121:26;:19;:26;:::i;:::-;17103:44;;;17200:17;;17180:48;;17223:4;;17180:38;;17103:44;17180:38;:19;:38;:::i;:48::-;17158:19;;;;:70;:19;16768:490;-1:-1:-1;;;16768:490:0:o;22526:208::-;-1:-1:-1;;;;;22608:15:0;;;;;;:9;:15;;;;;;:26;;22628:5;22608:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;22590:15:0;;;;;;:9;:15;;;;;:44;22659:11;;:22;;22675:5;22659:22;:15;:22;:::i;:::-;22645:11;:36;22697:29;;;;;;;;22716:1;;-1:-1:-1;;;;;22697:29:0;;;;;;;;;;;;22526:208;;:::o;17505:523::-;-1:-1:-1;;;;;17633:11:0;;17588:4;17633:11;;;:5;:11;;;;;17663:9;;;;;:37;;-1:-1:-1;17676:15:0;;:24;-1:-1:-1;17676:24:0;17663:37;17655:75;;;;;-1:-1:-1;;;17655:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17751:9;:7;:9::i;:::-;17771:12;17778:4;17771:6;:12::i;:::-;17822:15;;:26;;17842:5;17822:26;:19;:26;:::i;:::-;17804:44;;;17901:17;;17881:48;;17924:4;;17881:38;;17804:44;17881:38;:19;:38;:::i;:48::-;17859:19;;;:70;17960:17;;:28;;17982:5;17960:28;:21;:28;:::i;:::-;17940:17;:48;-1:-1:-1;18016:4:0;;17505:523;-1:-1:-1;;;17505:523:0:o;15274:97::-;15339:10;:24;;-1:-1:-1;;;;;;15339:24:0;-1:-1:-1;;;;;15339:24:0;;;;;;;;;;15274:97::o;889:120::-;-1:-1:-1;;;;;965:10:0;-1:-1:-1;;;965:17:0;;889:120::o;1080:108::-;1140:9;-1:-1:-1;;;;;1170:10:0;;-1:-1:-1;;;;;1166:14:0;;1170:10;1166:14;;;;;;1080:108;-1:-1:-1;;;1080:108:0:o;8759:181::-;8817:7;8849:5;;;8873:6;;;;8865:46;;;;;-1:-1:-1;;;8865:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15447:368;15498:17;;15494:121;;15550:32;15565:16;:14;:16::i;:::-;15550:10;;;:32;:14;:32;:::i;:::-;15537:10;:45;15597:7;;15494:121;15635:14;15652:16;:14;:16::i;:::-;15635:33;;15699:62;15721:39;15742:17;;15721:16;15732:4;15721:6;:10;;:16;;;;:::i;:39::-;15699:17;;;:62;:21;:62;:::i;:::-;15679:17;:82;15785:10;;:22;;15800:6;15785:22;:14;:22;:::i;:::-;15772:10;:35;-1:-1:-1;15447:368:0:o;16049:468::-;-1:-1:-1;;;;;16135:11:0;;16107:25;16135:11;;;:5;:11;;;;;16161:15;;:19;16157:353;;16197:12;16212:73;16265:8;:19;;;16212:48;16255:4;16212:38;16232:17;;16212:8;:15;;;:19;;:38;;;;:::i;:73::-;16322:19;;;;16197:88;;-1:-1:-1;16322:32:0;;16197:88;16322:32;:23;:32;:::i;:::-;16300:19;;;:54;16386:14;;:27;;16405:7;16386:27;:18;:27;:::i;:::-;16369:14;:44;16470:17;;16450:15;;:48;;16493:4;;16450:38;;;:19;:38;:::i;:48::-;16428:19;;;:70;-1:-1:-1;16157:353:0;16049:468;;:::o;13773:361::-;13968:45;;;-1:-1:-1;;;;;13968:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13968:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;13957:57:0;;;;13922:12;;13936:17;;13957:10;;;;13968:45;13957:57;;;25:18:-1;13957: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;;;13957: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;;13921:93:0;;;;14033:7;:57;;;;-1:-1:-1;14045:11:0;;:16;;:44;;;14076:4;14065:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14065:24:0;14045:44;14025:101;;;;;-1:-1:-1;;;14025:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9662:192;9748:7;9784:12;9776:6;;;;9768:29;;;;-1:-1:-1;;;9768: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;9768:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9820:5:0;;;9662:192::o;23189:322::-;23295:6;;23282:60;;;-1:-1:-1;;;23282:60:0;;-1:-1:-1;;;23282:60:0;;;;;;23247:4;;;;-1:-1:-1;;;;;23295:6:0;;;;23282:35;;:60;;;;;;;;;;;;;;;23295:6;23282:60;;;2:2:-1;;;;27:1;24;17:12;2:2;23282:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23282:60:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23282:60:0;23377:4;;23371:18;;;-1:-1:-1;;;23371:18:0;;;;23282:60;;-1:-1:-1;23353:15:0;;23371:53;;23418:5;;23371:42;;23394:18;;;;-1:-1:-1;;;;;23377:4:0;;23371:16;;:18;;;;;23282:60;;23371:18;;;;;;;23377:4;23371:18;;;2:2:-1;;;;27:1;24;17:12;2:2;23371:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23371:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23371:18:0;;:42;:22;:42;:::i;:53::-;23353:71;;23442:61;23492:10;;23442:45;23476:10;23442:29;23458:12;;23442:11;;:15;;:29;;;;:::i;:61::-;23435:68;;;;23189:322;:::o;11060:132::-;11118:7;11145:39;11149:1;11152;11145:39;;;;;;;;;;;;;;;;;11774:7;11809:12;11802:5;11794:28;;;;-1:-1:-1;;;11794:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11794:28:0;;11833:9;11849:1;11845;:5;;;;;;;11688:278;-1:-1:-1;;;;;11688:278:0:o

Swarm Source

ipfs://4d225b722b5690b08726d6af582aa124d1f48f8bd9473e6f7f890e76efeb0db8
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.