Contract 0x2fB8132D4CF3E4413065f68051D5b2FBD2e642B5

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x56f9f9d8267b5d3a152692f37faabd9306b8e3245b92e6336c9c3768b1e9af66Harvest753350962023-03-30 18:25:0620 mins ago0xd2fc65fd105825cecc9b81a9bb8cf462efca2f63 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00007069 0.1
0x6ac858ca3853d7620dfd27e9df5e16fce93938d3fd70535af8828fe3f6c57021Harvest753350652023-03-30 18:24:5820 mins ago0xd2fc65fd105825cecc9b81a9bb8cf462efca2f63 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.0000728 0.1
0xc68ed540d0502895829528d6ed777f00ca33e80c1a670b4513fa2b22c4b87aebWithdraw752966142023-03-30 15:45:432 hrs 59 mins ago0x2f2e8c0b1c8546bf94c27630476fac165450e34e IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00008964 0.1
0xc86095498e473a66c675f11fca5e63a200ed9bb6af7c9993abde38f02af5ee5fHarvest752965612023-03-30 15:45:303 hrs ago0x2f2e8c0b1c8546bf94c27630476fac165450e34e IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00007504 0.1
0x55aa39bc10ab61f900ff9300065af990900544825a09ee5e3dc8efca86333b23Deposit751099722023-03-30 2:54:2215 hrs 51 mins ago0x2f2e8c0b1c8546bf94c27630476fac165450e34e IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.0000752 0.1
0xe0633d72deede6ac6e0244f0b0c2954891d1bd06b4686df9538bd205f5907e8eHarvest748281452023-03-29 7:12:551 day 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004206 0.1
0xf523031e16a5d3fae0f8bfb705342f490d2e280cdd11891a9110c38ae60b9b52Harvest748280612023-03-29 7:12:341 day 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004377 0.1
0x325a41b40efdc0569498b4df8525f868aa853bd456a2ad63d95a2d302c9750aeHarvest745892552023-03-28 14:22:142 days 4 hrs ago0x13b39775583e0888f9836782acf9f1e50f767ca4 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00006075 0.1
0xb59429df1022b278667a9744aaa3c0b503830d133723ec92911345fc76c666beHarvest745613022023-03-28 12:26:322 days 6 hrs ago0x0e80e91f6fbdfcb7ee5fc4e0afe39a68306adc94 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004660.1
0x0a8f98a11e9b5eb9cab803baa5c857ff6bf22e104b6d3d556c5abef7c88a4f1aHarvest745612772023-03-28 12:26:262 days 6 hrs ago0x0e80e91f6fbdfcb7ee5fc4e0afe39a68306adc94 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004660.1
0x82fd18e13c55afb1121bacc59acd4900d0fde0e2faad184a9805c106c887f506Deposit745530462023-03-28 11:52:222 days 6 hrs ago0x2f2e8c0b1c8546bf94c27630476fac165450e34e IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00006517 0.1
0x6103a8c3844c78567e12552071c8c929995bd256999bc99d80a217227416abe8Harvest741068432023-03-27 4:53:193 days 13 hrs ago0xd2fc65fd105825cecc9b81a9bb8cf462efca2f63 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.0000318 0.1
0x969503789d5c5af83af8664ec266fde1db79eeaa95e04bd6dff428de8fdf8351Harvest741068182023-03-27 4:53:133 days 13 hrs ago0xd2fc65fd105825cecc9b81a9bb8cf462efca2f63 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.0000335 0.1
0x92781107366cd4ef3414e09a85bbba9bab9b4cd817037667f4fedeff678b39eeHarvest734239882023-03-25 5:23:355 days 13 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003207 0.1
0xf162693f8207e3db647d06fce30c9ad2dc287b189b6d6d861903cf7d0e8fc1e8Harvest734239682023-03-25 5:23:305 days 13 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003378 0.1
0x0d57efe9832c5112ca08f0ea0c05b5b1a9b189966b3e11bf8df191a714753fc0Harvest732219402023-03-24 15:29:496 days 3 hrs ago0x0e80e91f6fbdfcb7ee5fc4e0afe39a68306adc94 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.000059950.1
0xdfad59a982fb4f9311ef31761ba1cec317b922d0eb2741466cdee6886a0cb813Harvest732219152023-03-24 15:29:436 days 3 hrs ago0x0e80e91f6fbdfcb7ee5fc4e0afe39a68306adc94 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.000061660.1
0x87b48dad81a0bc389ddc7a11977f389f7068b50bb705922fcf272f569586c61dHarvest731639142023-03-24 11:31:446 days 7 hrs ago0xd2fc65fd105825cecc9b81a9bb8cf462efca2f63 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003985 0.1
0xb798cf475339ca40081e48b4781a78227907d3b2dfae8cb5656a523d1c290932Harvest731638942023-03-24 11:31:396 days 7 hrs ago0xd2fc65fd105825cecc9b81a9bb8cf462efca2f63 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004156 0.1
0xef9812229ba4fdfbc350723b73e75c3f25a159ba9531e29fb246447e6a65e9c9Harvest728095702023-03-23 11:45:597 days 6 hrs ago0x0e80e91f6fbdfcb7ee5fc4e0afe39a68306adc94 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.000037940.1
0xc65c4bf54a1895387ec7f5db9bc948179ddfe51ab85775774db3cffec937123bHarvest728095412023-03-23 11:45:517 days 6 hrs ago0x0e80e91f6fbdfcb7ee5fc4e0afe39a68306adc94 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.000039650.1
0xec82ab3e789ee665394d0d66799733d6671dc1081de04a93cc17c009c92e2a1fHarvest727289132023-03-23 6:24:087 days 12 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003209 0.1
0x23bb1145aacd783a4ad15e2ec5eca8d7e85ef8bb121dea6b1db1e6f8617c7c01Harvest727288902023-03-23 6:24:037 days 12 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.0000338 0.1
0x271bc6d27766e913ac269b5784dcd8541daf092195f233c6e24fe50ab5197665Harvest723607212023-03-22 5:10:528 days 13 hrs ago0x9d8bef562fa7db31a06bca891b2ddfacda74d8c0 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.000029920.1
0x2836d8297ab1af40b45786d5dda2708dd2703054c75ee8bc56c18191d534b0b0Harvest723605802023-03-22 5:10:228 days 13 hrs ago0x9d8bef562fa7db31a06bca891b2ddfacda74d8c0 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.000032620.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa10291b09c974b018a0bece1ed44a06a1df62085bcab4cb1d81ae08ab2e03547720799572023-03-21 9:51:079 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xa10291b09c974b018a0bece1ed44a06a1df62085bcab4cb1d81ae08ab2e03547720799572023-03-21 9:51:079 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xa10291b09c974b018a0bece1ed44a06a1df62085bcab4cb1d81ae08ab2e03547720799572023-03-21 9:51:079 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xa10291b09c974b018a0bece1ed44a06a1df62085bcab4cb1d81ae08ab2e03547720799572023-03-21 9:51:079 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x5579f4932cda2893376558b045033719fec5fd340 ETH
0xb3d4d607699967bbd7fca8f23bcd7793f19d1c6f5d74a322785d4ccf5719d52a720799062023-03-21 9:50:549 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xb3d4d607699967bbd7fca8f23bcd7793f19d1c6f5d74a322785d4ccf5719d52a720799062023-03-21 9:50:549 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xb3d4d607699967bbd7fca8f23bcd7793f19d1c6f5d74a322785d4ccf5719d52a720799062023-03-21 9:50:549 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xb3d4d607699967bbd7fca8f23bcd7793f19d1c6f5d74a322785d4ccf5719d52a720799062023-03-21 9:50:549 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x6737b6194500fa22dc033b76bf9255dbdc77a50a0 ETH
0x0c2ad93f151a60337597267b739f21a0bbfd1045c7b2571698602d3a8813f4ce720021412023-03-21 4:31:189 days 14 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x0c2ad93f151a60337597267b739f21a0bbfd1045c7b2571698602d3a8813f4ce720021412023-03-21 4:31:189 days 14 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x0c2ad93f151a60337597267b739f21a0bbfd1045c7b2571698602d3a8813f4ce720021412023-03-21 4:31:189 days 14 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x0c2ad93f151a60337597267b739f21a0bbfd1045c7b2571698602d3a8813f4ce720021412023-03-21 4:31:189 days 14 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x44d9f3e2f8c85842596692250a6ce1eb148d4b4c0 ETH
0x5b8610495374138000afa551b423f013e0d09d2066f69d9c3b159879d6a20605720021072023-03-21 4:31:099 days 14 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x44d9f3e2f8c85842596692250a6ce1eb148d4b4c0 ETH
0x5b8610495374138000afa551b423f013e0d09d2066f69d9c3b159879d6a20605720021072023-03-21 4:31:099 days 14 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x5b8610495374138000afa551b423f013e0d09d2066f69d9c3b159879d6a20605720021072023-03-21 4:31:099 days 14 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x44d9f3e2f8c85842596692250a6ce1eb148d4b4c0 ETH
0x91dcf3c4afe8055a2ddb5b48efb68eb22b3e7171a6ad7189cb85907db219fecb717142602023-03-20 8:31:0310 days 10 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x91dcf3c4afe8055a2ddb5b48efb68eb22b3e7171a6ad7189cb85907db219fecb717142602023-03-20 8:31:0310 days 10 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x91dcf3c4afe8055a2ddb5b48efb68eb22b3e7171a6ad7189cb85907db219fecb717142602023-03-20 8:31:0310 days 10 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x91dcf3c4afe8055a2ddb5b48efb68eb22b3e7171a6ad7189cb85907db219fecb717142602023-03-20 8:31:0310 days 10 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x6737b6194500fa22dc033b76bf9255dbdc77a50a0 ETH
0x168f50dbfb66dd79dee595b4f0de7abcaf8a73719f7d82c05b4e924548650332717142432023-03-20 8:30:5910 days 10 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x168f50dbfb66dd79dee595b4f0de7abcaf8a73719f7d82c05b4e924548650332717142432023-03-20 8:30:5910 days 10 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x168f50dbfb66dd79dee595b4f0de7abcaf8a73719f7d82c05b4e924548650332717142432023-03-20 8:30:5910 days 10 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x168f50dbfb66dd79dee595b4f0de7abcaf8a73719f7d82c05b4e924548650332717142432023-03-20 8:30:5910 days 10 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x5579f4932cda2893376558b045033719fec5fd340 ETH
0xed0f5503ce459a3fdec4079f9fb3d175d9bd6a0be2984c5ff7110f07a8a8e832716753592023-03-20 5:49:0810 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xed0f5503ce459a3fdec4079f9fb3d175d9bd6a0be2984c5ff7110f07a8a8e832716753592023-03-20 5:49:0810 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GemFarm

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2023-03-02
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, 'e0');
        (bool success,) = recipient.call{value : amount}('');
        require(success, 'e1');
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, 'e0');
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, 'e0');
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, 'e0');
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'e0');
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeERC20 {
    using Address for address;
    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, 'e0');
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), 'e1');
        }
    }
}

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

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

contract Ownable is Context {
    address private _owner;

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: not owner");
        _;
    }

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

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

        _;

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

    modifier isHuman() {
        require(tx.origin == msg.sender, "sorry humans only");
        _;
    }
}

interface CakeToken {
    function mint(address _to, uint256 _amount) external returns (bool);

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

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

contract GemFarm is Ownable, ReentrancyGuard {
    using SafeERC20 for IERC20;

    struct UserInfo {
        uint256 amount;
        uint256 rewardDebt;
    }

    struct PoolInfo {
        IERC20 lpToken;
        uint256 allocPoint;
        uint256 lastRewardBlock;
        uint256 accCakePerShare;
        uint256 staking_stock_length;
        uint256 multiple;
        bool if_invite_reward;
        bool pool_status;
    }

    CakeToken public cake;
    PoolInfo[] public poolInfo;

    address public devAddress;
    uint256 public cakePerBlock;
    uint256 public stakingFee = 0;
    uint256 public withdrawFee = 0;
    uint256 public inviteFee = 0;
    uint256 public totalAllocPoint = 0;
    uint256 public startBlock;

    mapping(uint256 => mapping(address => UserInfo)) public userInfo;
    mapping(uint256 => mapping(address => uint256)) public first_staking_time;
    mapping(uint256 => mapping(address => uint256)) public last_staking_time;
    mapping(address => address) public invitor;
    mapping(address => bool) public is_invitor;
    mapping(uint256 => mapping(address => uint256)) public pending_list;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);
    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount);

    constructor() {
        devAddress = _msgSender();
        startBlock = block.number + (10 * 365 * 24 * 60 * 60);
    }

    function poolLength() external view returns (uint256) {
        return poolInfo.length;
    }

    function add( 
        IERC20 _lpToken, 
        uint256 _allocPoint,
        uint256 _multiple,
        uint256 _staking_stock_length, 
        bool _if_invite_reward,
        bool _withUpdate
    ) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock;
        totalAllocPoint = totalAllocPoint + _allocPoint;
        poolInfo.push(
            PoolInfo({
                lpToken: _lpToken,
                allocPoint: _allocPoint,
                multiple: _multiple,
                lastRewardBlock: lastRewardBlock,
                accCakePerShare: 0,
                staking_stock_length: _staking_stock_length,
                if_invite_reward: _if_invite_reward,
                pool_status: true
            })
        );
    }

    function set(
        uint256 _pid, 
        uint256 _allocPoint, 
        uint256 _multiple,
        uint256 _staking_stock_length, 
        bool _if_invite_reward,
        bool _withUpdate
    ) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        totalAllocPoint = totalAllocPoint - poolInfo[_pid].allocPoint + _allocPoint;
        poolInfo[_pid].allocPoint = _allocPoint;
        poolInfo[_pid].multiple = _multiple;
        poolInfo[_pid].staking_stock_length = _staking_stock_length;
        poolInfo[_pid].if_invite_reward = _if_invite_reward;
    }

    function getMultiplier(uint256 _from, uint256 _to, uint256 _poolMultiple) public pure returns (uint256) {
        return (_to - _from) * _poolMultiple;
    }

    function pendingReward(uint256 _pid, address _user) external view returns (uint256) {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        uint256 accCakePerShare = pool.accCakePerShare;
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (block.number > pool.lastRewardBlock && lpSupply != 0) {
            uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number, pool.multiple);
            uint256 cakeReward = multiplier * cakePerBlock * pool.allocPoint / totalAllocPoint;
            accCakePerShare = accCakePerShare + (cakeReward * 1e12 / lpSupply);
        }
        uint256 reward = user.amount * accCakePerShare / 1e12 - user.rewardDebt + pending_list[_pid][_user];
        if (pool.if_invite_reward) {
            uint256 fee = reward * inviteFee / 100;
            return reward - fee;
        }
        return reward;
    }

    function massUpdatePools() public {
        uint256 length = poolInfo.length;
        for (uint256 pid = 0; pid < length; pid++) {
            updatePool(pid);
        }
    }

    function updatePool(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        if (block.number <= pool.lastRewardBlock) {
            return;
        }
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (lpSupply == 0) {
            pool.lastRewardBlock = block.number;
            return;
        }
        uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number, pool.multiple);
        uint256 cakeReward = multiplier * cakePerBlock * pool.allocPoint / totalAllocPoint;
        if (cakeReward > 0) {
            cake.mint(address(this), cakeReward);
        }

        pool.accCakePerShare = pool.accCakePerShare + (cakeReward * 1e12 / lpSupply);
        pool.lastRewardBlock = block.number;
    }

    function deposit(uint256 _pid, uint256 _amount, address _invitor) public nonReentrant {
        require(poolInfo[_pid].pool_status, 'not open');

        address account = _msgSender();
        if (first_staking_time[_pid][account] == 0) {
            first_staking_time[_pid][account] = block.timestamp;
        }
        if (invitor[account] == address(0) && _invitor != address(0) && _invitor != account && !is_invitor[account]) {
            invitor[account] = _invitor;
            is_invitor[_invitor] = true;
        }
        last_staking_time[_pid][account] = block.timestamp;

        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][account];
        updatePool(_pid);

        if (user.amount > 0) {
            uint256 pending = user.amount * pool.accCakePerShare / 1e12 - user.rewardDebt;
            if (pending > 0) {
                pending_list[_pid][account] = pending_list[_pid][account] + pending;
            }
        }
        if (_amount > 0) {
            uint256 fee = _amount * stakingFee / 100;
            uint256 left = _amount - fee;
            if (fee > 0) {
                pool.lpToken.safeTransferFrom(account, devAddress, fee);
            }
            pool.lpToken.safeTransferFrom(account, address(this), left);
            user.amount = user.amount + left;
        }
        user.rewardDebt = user.amount * pool.accCakePerShare / 1e12;
        emit Deposit(account, _pid, _amount);
    }

    function withdraw(uint256 _pid, uint256 _amount) public nonReentrant {
        address account = _msgSender();
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][account];
        require(user.amount >= _amount, "no more");
        updatePool(_pid);

        uint256 pending = user.amount * pool.accCakePerShare / 1e12 - user.rewardDebt;
        if (pending > 0) {
            pending_list[_pid][account] = pending_list[_pid][account] + pending;
        }
        if (_amount > 0) {
            user.amount = user.amount - _amount;
            uint256 fee = _amount * withdrawFee / 100;
            uint256 left = _amount - fee;
            if (fee > 0) {
                pool.lpToken.safeTransfer(devAddress, fee);
            }
            pool.lpToken.safeTransfer(account, left);
        }
        user.rewardDebt = user.amount * pool.accCakePerShare / 1e12;
        emit Withdraw(account, _pid, _amount);
    }

    function emergencyWithdraw(uint256 _pid) public nonReentrant {
        address account = _msgSender();
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][account];
        require(user.amount > 0, "no deposit");

        uint256 fee = user.amount * withdrawFee / 100;
        uint256 left = user.amount - fee;
        if (fee > 0) {
            pool.lpToken.safeTransfer(devAddress, fee);
        }
        pool.lpToken.safeTransfer(account, left);
        user.amount = 0;
        user.rewardDebt = 0;
        pending_list[_pid][account] = 0;
        emit EmergencyWithdraw(account, _pid, left);
    }

    function canHarvest(uint256 _pid, address _user) public view returns (bool) {
        return
            block.number >= startBlock &&
            block.timestamp > last_staking_time[_pid][_user] + poolInfo[_pid].staking_stock_length;
    }

    function harvest(uint256 _pid) public nonReentrant isHuman {
        address account = _msgSender();
        require(canHarvest(_pid, account), 'time limit');

        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][account];
        updatePool(_pid);

        if (user.amount > 0) {
            uint256 pending = user.amount * pool.accCakePerShare / 1e12 - user.rewardDebt;
            if (pending > 0) {
                pending_list[_pid][account] = pending_list[_pid][account] + pending;
            }
        }
        user.rewardDebt = user.amount * pool.accCakePerShare / 1e12;


        uint256 reward = pending_list[_pid][account];
        require(reward > 0, 'no rewards');

        pending_list[_pid][account] = 0;
        if (pool.if_invite_reward) {
            uint256 fee = reward * inviteFee / 100;
            if (fee > 0) {
                if (invitor[account] == address(0)) {
                    safeCakeTransfer(devAddress, fee);
                } else {
                    safeCakeTransfer(invitor[account], fee);
                }
            }
            reward = reward - fee;
            safeCakeTransfer(account, reward);
        } else {
            safeCakeTransfer(account, reward);
        }
        emit Harvest(account, _pid, reward);
    }

    function safeCakeTransfer(address _to, uint256 _amount) internal {
        uint256 cakeBal = cake.balanceOf(address(this));
        if (_amount > cakeBal) {
            cake.transfer(_to, cakeBal);
        } else {
            cake.transfer(_to, _amount);
        }
    }

    function startFarming() public onlyOwner {
        require(block.number < startBlock, "farm started already");

        uint256 length = poolInfo.length;
        for (uint256 pid = 0; pid < length; ++pid) {
            poolInfo[pid].lastRewardBlock = block.number;
        }

        startBlock = block.number;
    }

    function setPoolState(uint256 _pid, bool _state) public onlyOwner {
        poolInfo[_pid].pool_status = _state;
    }

    function setFees(uint256 _stakingFee, uint256 _withdrawFee, uint256 _inviteFee) public onlyOwner {
        require(_stakingFee < 50 && _withdrawFee < 50 && _inviteFee < 50, 'too high');
        stakingFee = _stakingFee;
        withdrawFee = _withdrawFee;
        inviteFee = _inviteFee;
    }

    function setCake(CakeToken _cake, uint256 _cakePerBlock) public onlyOwner {
        cake = _cake;
        cakePerBlock = _cakePerBlock;
    }

    function setdev(address _devaddr) public {
        require(_msgSender() == devAddress || _msgSender() == owner(), "cannot");
        devAddress = _devaddr;
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_multiple","type":"uint256"},{"internalType":"uint256","name":"_staking_stock_length","type":"uint256"},{"internalType":"bool","name":"_if_invite_reward","type":"bool"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cake","outputs":[{"internalType":"contract CakeToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cakePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"canHarvest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_invitor","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"first_staking_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"},{"internalType":"uint256","name":"_poolMultiple","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inviteFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"invitor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"is_invitor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"last_staking_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"pending_list","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accCakePerShare","type":"uint256"},{"internalType":"uint256","name":"staking_stock_length","type":"uint256"},{"internalType":"uint256","name":"multiple","type":"uint256"},{"internalType":"bool","name":"if_invite_reward","type":"bool"},{"internalType":"bool","name":"pool_status","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_multiple","type":"uint256"},{"internalType":"uint256","name":"_staking_stock_length","type":"uint256"},{"internalType":"bool","name":"_if_invite_reward","type":"bool"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract CakeToken","name":"_cake","type":"address"},{"internalType":"uint256","name":"_cakePerBlock","type":"uint256"}],"name":"setCake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakingFee","type":"uint256"},{"internalType":"uint256","name":"_withdrawFee","type":"uint256"},{"internalType":"uint256","name":"_inviteFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPoolState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"setdev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startFarming","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600060065560006007556000600855600060095534801561002457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055600480546001600160a01b0319163317905561008a436312cc0300610092565b600a556100b8565b600082198211156100b357634e487b7160e01b600052601160045260246000fd5b500190565b61233f806100c76000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80637bafb02911610125578063d3b6b88c116100ad578063e35772f21161007c578063e35772f214610512578063e941fa7814610525578063ea9301d61461052e578063eff9884314610551578063f2fde38b1461055a57600080fd5b8063d3b6b88c146104c6578063dba408b1146104d9578063dce17484146104ec578063ddc63262146104ff57600080fd5b806398969e82116100f457806398969e821461047c578063afbcfea11461048f578063b38a436014610497578063b52d881f146104a0578063cec10c11146104b357600080fd5b80637bafb029146103fe5780638da5cb5b146104115780638dbdbe6d1461042257806393f1a40b1461043557600080fd5b80633cc5ac2f116101a857806348cd4cb11161017757806348cd4cb1146103bf57806351eb05a6146103c85780635312ea8e146103db578063630b5ba1146103ee578063715018a6146103f657600080fd5b80633cc5ac2f146103435780633d6b5e5c14610358578063441a3e701461038357806347f6567e1461039657600080fd5b806328634a74116101e457806328634a741461029f5780632e6c998d146102ca5780632f5a947d146102ed5780633ad10ef61461031857600080fd5b80630755e0b614610216578063081e3eda146102325780631526fe271461023a57806317caf6f114610296575b600080fd5b61021f60055481565b6040519081526020015b60405180910390f35b60035461021f565b61024d610248366004611f2c565b61056d565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a0840152151560c0830152151560e082015261010001610229565b61021f60095481565b61021f6102ad366004611f5d565b601060209081526000928352604080842090915290825290205481565b6102dd6102d8366004611f5d565b6105d2565b6040519015158152602001610229565b61021f6102fb366004611f5d565b600d60209081526000928352604080842090915290825290205481565b60045461032b906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b610356610351366004611f9b565b61063f565b005b61021f610366366004611f5d565b600c60209081526000928352604080842090915290825290205481565b610356610391366004611ff9565b61077c565b61032b6103a436600461201b565b600e602052600090815260409020546001600160a01b031681565b61021f600a5481565b6103566103d6366004611f2c565b6109b2565b6103566103e9366004611f2c565b610b64565b610356610ce1565b610356610d0e565b61021f61040c36600461203f565b610d82565b6000546001600160a01b031661032b565b61035661043036600461206b565b610da1565b610467610443366004611f5d565b600b6020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610229565b61021f61048a366004611f5d565b611121565b610356611307565b61021f60085481565b6103566104ae3660046120a4565b6113c7565b6103566104c136600461203f565b611431565b6103566104d436600461201b565b6114bc565b6103566104e73660046120c9565b61153f565b60025461032b906001600160a01b031681565b61035661050d366004611f2c565b61158f565b6103566105203660046120f5565b6118d0565b61021f60075481565b6102dd61053c36600461201b565b600f6020526000908152604090205460ff1681565b61021f60065481565b61035661056836600461201b565b611ad0565b6003818154811061057d57600080fd5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b039095169650929491939092919060ff8082169161010090041688565b6000600a5443101580156106365750600383815481106105f4576105f461213e565b6000918252602080832060046007909302019190910154858352600d825260408084206001600160a01b0387168552909252912054610633919061216a565b42115b90505b92915050565b6000546001600160a01b031633146106725760405162461bcd60e51b815260040161066990612182565b60405180910390fd5b801561068057610680610ce1565b84600387815481106106945761069461213e565b9060005260206000209060070201600101546009546106b391906121ae565b6106bd919061216a565b60098190555084600387815481106106d7576106d761213e565b90600052602060002090600702016001018190555083600387815481106107005761070061213e565b90600052602060002090600702016005018190555082600387815481106107295761072961213e565b90600052602060002090600702016004018190555081600387815481106107525761075261213e565b60009182526020909120600790910201600601805460ff1916911515919091179055505050505050565b6002600154141561079f5760405162461bcd60e51b8152600401610669906121c5565b600260015560003390506000600384815481106107be576107be61213e565b60009182526020808320878452600b825260408085206001600160a01b0388168652909252922080546007909202909201925084111561082a5760405162461bcd60e51b81526020600482015260076024820152666e6f206d6f726560c81b6044820152606401610669565b610833856109b2565b6000816001015464e8d4a510008460030154846000015461085491906121fc565b61085e919061221b565b61086891906121ae565b905080156108c25760008681526010602090815260408083206001600160a01b038816845290915290205461089e90829061216a565b60008781526010602090815260408083206001600160a01b03891684529091529020555b841561093f5781546108d59086906121ae565b82556007546000906064906108ea90886121fc565b6108f4919061221b565b9050600061090282886121ae565b90508115610926576004548554610926916001600160a01b03918216911684611bba565b845461093c906001600160a01b03168783611bba565b50505b6003830154825464e8d4a5100091610956916121fc565b610960919061221b565b600183015560405185815286906001600160a01b038616907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568906020015b60405180910390a350506001805550505050565b6000600382815481106109c7576109c761213e565b90600052602060002090600702019050806002015443116109e6575050565b80546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a52919061223d565b905080610a6457504360029091015550565b6000610a798360020154438560050154610d82565b90506000600954846001015460055484610a9391906121fc565b610a9d91906121fc565b610aa7919061221b565b90508015610b26576002546040516340c10f1960e01b8152306004820152602481018390526001600160a01b03909116906340c10f19906044016020604051808303816000875af1158015610b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b249190612256565b505b82610b368264e8d4a510006121fc565b610b40919061221b565b8460030154610b4f919061216a565b60038501555050436002909201919091555050565b60026001541415610b875760405162461bcd60e51b8152600401610669906121c5565b60026001556000339050600060038381548110610ba657610ba661213e565b60009182526020808320868452600b825260408085206001600160a01b03881686529092529220805460079092029092019250610c125760405162461bcd60e51b815260206004820152600a6024820152691b9bc819195c1bdcda5d60b21b6044820152606401610669565b600060646007548360000154610c2891906121fc565b610c32919061221b565b90506000818360000154610c4691906121ae565b90508115610c6a576004548454610c6a916001600160a01b03918216911684611bba565b8354610c80906001600160a01b03168683611bba565b6000808455600184018190558681526010602090815260408083206001600160a01b03891680855290835281842093909355518381528892917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595910161099e565b60035460005b81811015610d0a57610cf8816109b2565b80610d0281612273565b915050610ce7565b5050565b6000546001600160a01b03163314610d385760405162461bcd60e51b815260040161066990612182565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600081610d8f85856121ae565b610d9991906121fc565b949350505050565b60026001541415610dc45760405162461bcd60e51b8152600401610669906121c5565b60026001556003805484908110610ddd57610ddd61213e565b906000526020600020906007020160060160019054906101000a900460ff16610e335760405162461bcd60e51b81526020600482015260086024820152673737ba1037b832b760c11b6044820152606401610669565b6000838152600c6020908152604080832033808552925290912054610e78576000848152600c602090815260408083206001600160a01b038516845290915290204290555b6001600160a01b038181166000908152600e602052604090205416158015610ea857506001600160a01b03821615155b8015610ec65750806001600160a01b0316826001600160a01b031614155b8015610eeb57506001600160a01b0381166000908152600f602052604090205460ff16155b15610f34576001600160a01b038181166000908152600e6020908152604080832080546001600160a01b0319169487169485179055928252600f905220805460ff191660011790555b6000848152600d602090815260408083206001600160a01b038516845290915281204290556003805486908110610f6d57610f6d61213e565b60009182526020808320888452600b825260408085206001600160a01b0388168652909252922060079091029091019150610fa7866109b2565b80541561103f576000816001015464e8d4a5100084600301548460000154610fcf91906121fc565b610fd9919061221b565b610fe391906121ae565b9050801561103d5760008781526010602090815260408083206001600160a01b038816845290915290205461101990829061216a565b60008881526010602090815260408083206001600160a01b03891684529091529020555b505b84156110be57600060646006548761105791906121fc565b611061919061221b565b9050600061106f82886121ae565b90508115611095576004548454611095916001600160a01b039182169188911685611c22565b83546110ac906001600160a01b0316863084611c22565b82546110b990829061216a565b835550505b6003820154815464e8d4a51000916110d5916121fc565b6110df919061221b565b600182015560405185815286906001600160a01b038516907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060200161099e565b600080600384815481106111375761113761213e565b60009182526020808320878452600b825260408085206001600160a01b03898116875293528085206007949094029091016003810154815492516370a0823160e01b815230600482015291965093949291909116906370a0823190602401602060405180830381865afa1580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d6919061223d565b90508360020154431180156111ea57508015155b1561125d5760006112048560020154438760050154610d82565b9050600060095486600101546005548461121e91906121fc565b61122891906121fc565b611232919061221b565b9050826112448264e8d4a510006121fc565b61124e919061221b565b611258908561216a565b935050505b60008781526010602090815260408083206001600160a01b038a1684529091528120546001850154855464e8d4a51000906112999087906121fc565b6112a3919061221b565b6112ad91906121ae565b6112b7919061216a565b600686015490915060ff16156112fc5760006064600854836112d991906121fc565b6112e3919061221b565b90506112ef81836121ae565b9650505050505050610639565b979650505050505050565b6000546001600160a01b031633146113315760405162461bcd60e51b815260040161066990612182565b600a5443106113795760405162461bcd60e51b81526020600482015260146024820152736661726d207374617274656420616c726561647960601b6044820152606401610669565b60035460005b818110156113bf57436003828154811061139b5761139b61213e565b60009182526020909120600260079092020101556113b881612273565b905061137f565b505043600a55565b6000546001600160a01b031633146113f15760405162461bcd60e51b815260040161066990612182565b80600383815481106114055761140561213e565b906000526020600020906007020160060160016101000a81548160ff0219169083151502179055505050565b6000546001600160a01b0316331461145b5760405162461bcd60e51b815260040161066990612182565b60328310801561146b5750603282105b80156114775750603281105b6114ae5760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610669565b600692909255600755600855565b6004546001600160a01b0316336001600160a01b031614806114e857506000546001600160a01b031633145b61151d5760405162461bcd60e51b815260206004820152600660248201526518d85b9b9bdd60d21b6044820152606401610669565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115695760405162461bcd60e51b815260040161066990612182565b600280546001600160a01b0319166001600160a01b039390931692909217909155600555565b600260015414156115b25760405162461bcd60e51b8152600401610669906121c5565b60026001553233146115fa5760405162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b6044820152606401610669565b3361160582826105d2565b61163e5760405162461bcd60e51b815260206004820152600a6024820152691d1a5b59481b1a5b5a5d60b21b6044820152606401610669565b6000600383815481106116535761165361213e565b60009182526020808320868452600b825260408085206001600160a01b038816865290925292206007909102909101915061168d846109b2565b805415611725576000816001015464e8d4a51000846003015484600001546116b591906121fc565b6116bf919061221b565b6116c991906121ae565b905080156117235760008581526010602090815260408083206001600160a01b03881684529091529020546116ff90829061216a565b60008681526010602090815260408083206001600160a01b03891684529091529020555b505b6003820154815464e8d4a510009161173c916121fc565b611746919061221b565b600182015560008481526010602090815260408083206001600160a01b0387168452909152902054806117a85760405162461bcd60e51b815260206004820152600a6024820152696e6f207265776172647360b01b6044820152606401610669565b60008581526010602090815260408083206001600160a01b0388168452909152812055600683015460ff16156118775760006064600854836117ea91906121fc565b6117f4919061221b565b9050801561185b576001600160a01b038581166000908152600e60205260409020541661183657600454611831906001600160a01b031682611c60565b61185b565b6001600160a01b038086166000908152600e602052604090205461185b911682611c60565b61186581836121ae565b91506118718583611c60565b50611881565b6118818482611c60565b84846001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954836040516118bd91815260200190565b60405180910390a3505060018055505050565b6000546001600160a01b031633146118fa5760405162461bcd60e51b815260040161066990612182565b801561190857611908610ce1565b6000600a54431161191b57600a5461191d565b435b90508560095461192d919061216a565b6009556040805161010080820183526001600160a01b03998a168252602082019889529181019283526000606082018181526080830197885260a0830198895295151560c08301908152600160e0840181815260038054928301815590935292517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600790940293840180546001600160a01b03191691909c1617909a5597517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c82015591517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d83015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e82015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85f8401555091517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f86082015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f8619093018054925161ffff1990931693151561ff0019169390931791151502179055565b6000546001600160a01b03163314611afa5760405162461bcd60e51b815260040161066990612182565b6001600160a01b038116611b5f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610669565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b038316602482015260448101829052611c1d90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d88565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611c5a9085906323b872dd60e01b90608401611be6565b50505050565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccd919061223d565b905080821115611d4f5760025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015b6020604051808303816000875af1158015611d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612256565b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401611d0c565b6000611dc28260405180604001604052806002815260200161065360f41b815250856001600160a01b0316611e119092919063ffffffff16565b805190915015611c1d5780806020019051810190611de09190612256565b611c1d5760405162461bcd60e51b8152602060048201526002602482015261653160f01b6044820152606401610669565b6060610d9984846000856060611e2685611ef3565b611e575760405162461bcd60e51b8152602060048201526002602482015261065360f41b6044820152606401610669565b600080866001600160a01b03168587604051611e7391906122ba565b60006040518083038185875af1925050503d8060008114611eb0576040519150601f19603f3d011682016040523d82523d6000602084013e611eb5565b606091505b50915091508115611ec9579150610d999050565b805115611ed95780518082602001fd5b8360405162461bcd60e51b815260040161066991906122d6565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610d99575050151592915050565b600060208284031215611f3e57600080fd5b5035919050565b6001600160a01b0381168114611f5a57600080fd5b50565b60008060408385031215611f7057600080fd5b823591506020830135611f8281611f45565b809150509250929050565b8015158114611f5a57600080fd5b60008060008060008060c08789031215611fb457600080fd5b863595506020870135945060408701359350606087013592506080870135611fdb81611f8d565b915060a0870135611feb81611f8d565b809150509295509295509295565b6000806040838503121561200c57600080fd5b50508035926020909101359150565b60006020828403121561202d57600080fd5b813561203881611f45565b9392505050565b60008060006060848603121561205457600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561208057600080fd5b8335925060208401359150604084013561209981611f45565b809150509250925092565b600080604083850312156120b757600080fd5b823591506020830135611f8281611f8d565b600080604083850312156120dc57600080fd5b82356120e781611f45565b946020939093013593505050565b60008060008060008060c0878903121561210e57600080fd5b863561211981611f45565b95506020870135945060408701359350606087013592506080870135611fdb81611f8d565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561217d5761217d612154565b500190565b60208082526012908201527127bbb730b136329d103737ba1037bbb732b960711b604082015260600190565b6000828210156121c0576121c0612154565b500390565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600081600019048311821515161561221657612216612154565b500290565b60008261223857634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561224f57600080fd5b5051919050565b60006020828403121561226857600080fd5b815161203881611f8d565b600060001982141561228757612287612154565b5060010190565b60005b838110156122a9578181015183820152602001612291565b83811115611c5a5750506000910152565b600082516122cc81846020870161228e565b9190910192915050565b60208152600082518060208401526122f581604085016020870161228e565b601f01601f1916919091016040019291505056fea2646970667358221220e71a2e6606506d29ebf656ac0d0cd615b76175bb32e26b2dbd98293d76cf4f3364736f6c634300080a0033

Deployed ByteCode Sourcemap

6795:11490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7342:27;;;;;;;;;160:25:1;;;148:2;133:18;7342:27:0;;;;;;;;8422:95;8494:8;:15;8422:95;;7275:26;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;743:32:1;;;725:51;;807:2;792:18;;785:34;;;;835:18;;;828:34;;;;893:2;878:18;;871:34;;;;936:3;921:19;;914:35;763:3;965:19;;958:35;1037:14;1030:22;1024:3;1009:19;;1002:51;1097:14;1090:22;1084:3;1069:19;;1062:51;712:3;697:19;7275:26:0;381:738:1;7484:34:0;;;;;;7887:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;15304:244;;;;;;:::i;:::-;;:::i;:::-;;;1745:14:1;;1738:22;1720:41;;1708:2;1693:18;15304:244:0;1580:187:1;7710:72:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7310:25;;;;;-1:-1:-1;;;;;7310:25:0;;;;;;-1:-1:-1;;;;;1936:32:1;;;1918:51;;1906:2;1891:18;7310:25:0;1772:203:1;9415:614:0;;;;;;:::i;:::-;;:::i;:::-;;7630:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;13645:981;;;;;;:::i;:::-;;:::i;7789:42::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;7789:42:0;;;7525:25;;;;;;11349:779;;;;;;:::i;:::-;;:::i;14634:662::-;;;;;;:::i;:::-;;:::i;11161:180::-;;;:::i;5173:148::-;;;:::i;10037:159::-;;;;;;:::i;:::-;;:::i;4743:79::-;4781:7;4808:6;-1:-1:-1;;;;;4808:6:0;4743:79;;12136:1501;;;;;;:::i;:::-;;:::i;7559:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4147:25:1;;;4203:2;4188:18;;4181:34;;;;4120:18;7559:64:0;3973:248:1;10204:949:0;;;;;;:::i;:::-;;:::i;17199:325::-;;;:::i;7449:28::-;;;;;;17532:120;;;;;;:::i;:::-;;:::i;17660:298::-;;;;;;:::i;:::-;;:::i;18118:164::-;;;;;;:::i;:::-;;:::i;17966:144::-;;;;;;:::i;:::-;;:::i;7247:21::-;;;;;-1:-1:-1;;;;;7247:21:0;;;15556:1349;;;;;;:::i;:::-;;:::i;8525:882::-;;;;;;:::i;:::-;;:::i;7412:30::-;;;;;;7838:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7376:29;;;;;;5476:244;;;;;;:::i;:::-;;:::i;7275:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7275:26:0;;;;-1:-1:-1;7275:26:0;;;;;;;;;;;;;;;;;;:::o;15304:244::-;15374:4;15427:10;;15411:12;:26;;:129;;;;;15505:8;15514:4;15505:14;;;;;;;;:::i;:::-;;;;;;;;;:35;:14;;;;;:35;;;;;15472:23;;;:17;:23;;;;;;-1:-1:-1;;;;;15472:30:0;;;;;;;;;;:68;;15505:35;15472:68;:::i;:::-;15454:15;:86;15411:129;15391:149;;15304:244;;;;;:::o;9415:614::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;;;;;;;;;9651:11:::1;9647:61;;;9679:17;:15;:17::i;:::-;9782:11;9754:8;9763:4;9754:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;9736:15;;:43;;;;:::i;:::-;:57;;;;:::i;:::-;9718:15;:75;;;;9832:11;9804:8;9813:4;9804:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;:39;;;;9880:9;9854:8;9863:4;9854:14;;;;;;;;:::i;:::-;;;;;;;;;;;:23;;:35;;;;9938:21;9900:8;9909:4;9900:14;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;:59;;;;10004:17;9970:8;9979:4;9970:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:31;;:51:::0;;-1:-1:-1;;9970:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;9415:614:0:o;13645:981::-;5852:1;6072:7;;:19;;6064:63;;;;-1:-1:-1;;;6064:63:0;;;;;;;:::i;:::-;5852:1;6205:7;:18;13725:15:::1;3871:10:::0;13725:30:::1;;13766:21;13790:8;13799:4;13790:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;13839;;;:8:::1;:14:::0;;;;;;-1:-1:-1;;;;;13839:23:0;::::1;::::0;;;;;;;13881:11;;13790:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;13881:22:0;-1:-1:-1;13881:22:0::1;13873:42;;;::::0;-1:-1:-1;;;13873:42:0;;7280:2:1;13873:42:0::1;::::0;::::1;7262:21:1::0;7319:1;7299:18;;;7292:29;-1:-1:-1;;;7337:18:1;;;7330:37;7384:18;;13873:42:0::1;7078:330:1::0;13873:42:0::1;13926:16;13937:4;13926:10;:16::i;:::-;13955:15;14017:4;:15;;;14010:4;13987;:20;;;13973:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:59;;;;:::i;:::-;13955:77:::0;-1:-1:-1;14047:11:0;;14043:111:::1;;14105:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;14105:27:0;::::1;::::0;;;;;;;;:37:::1;::::0;14135:7;;14105:37:::1;:::i;:::-;14075:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;14075:27:0;::::1;::::0;;;;;;;:67;14043:111:::1;14168:11:::0;;14164:337:::1;;14210:11:::0;;:21:::1;::::0;14224:7;;14210:21:::1;:::i;:::-;14196:35:::0;;14270:11:::1;::::0;14196::::1;::::0;14284:3:::1;::::0;14260:21:::1;::::0;:7;:21:::1;:::i;:::-;:27;;;;:::i;:::-;14246:41:::0;-1:-1:-1;14302:12:0::1;14317:13;14246:41:::0;14317:7;:13:::1;:::i;:::-;14302:28:::0;-1:-1:-1;14349:7:0;;14345:90:::1;;14403:10;::::0;14377:12;;:42:::1;::::0;-1:-1:-1;;;;;14377:12:0;;::::1;::::0;14403:10:::1;14415:3:::0;14377:25:::1;:42::i;:::-;14449:12:::0;;:40:::1;::::0;-1:-1:-1;;;;;14449:12:0::1;14475:7:::0;14484:4;14449:25:::1;:40::i;:::-;14181:320;;14164:337;14543:20;::::0;::::1;::::0;14529:11;;14566:4:::1;::::0;14529:34:::1;::::0;::::1;:::i;:::-;:41;;;;:::i;:::-;14511:15;::::0;::::1;:59:::0;14586:32:::1;::::0;160:25:1;;;14604:4:0;;-1:-1:-1;;;;;14586:32:0;::::1;::::0;::::1;::::0;148:2:1;133:18;14586:32:0::1;;;;;;;;-1:-1:-1::0;;5808:1:0;6384:22;;-1:-1:-1;;;;13645:981:0:o;11349:779::-;11401:21;11425:8;11434:4;11425:14;;;;;;;;:::i;:::-;;;;;;;;;;;11401:38;;11470:4;:20;;;11454:12;:36;11450:75;;11507:7;11349:779;:::o;11450:75::-;11554:12;;:37;;-1:-1:-1;;;11554:37:0;;11585:4;11554:37;;;1918:51:1;11535:16:0;;-1:-1:-1;;;;;11554:12:0;;:22;;1891:18:1;;11554:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11535:56;-1:-1:-1;11606:13:0;11602:102;;-1:-1:-1;11659:12:0;11636:20;;;;:35;-1:-1:-1;11349:779:0:o;11602:102::-;11714:18;11735:64;11749:4;:20;;;11771:12;11785:4;:13;;;11735;:64::i;:::-;11714:85;;11810:18;11877:15;;11859:4;:15;;;11844:12;;11831:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;11810:82;-1:-1:-1;11907:14:0;;11903:83;;11938:4;;:36;;-1:-1:-1;;;11938:36:0;;11956:4;11938:36;;;8171:51:1;8238:18;;;8231:34;;;-1:-1:-1;;;;;11938:4:0;;;;:9;;8144:18:1;;11938:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11903:83;12065:8;12045:17;:10;12058:4;12045:17;:::i;:::-;:28;;;;:::i;:::-;12021:4;:20;;;:53;;;;:::i;:::-;11998:20;;;:76;-1:-1:-1;;12108:12:0;12085:20;;;;:35;;;;-1:-1:-1;;11349:779:0:o;14634:662::-;5852:1;6072:7;;:19;;6064:63;;;;-1:-1:-1;;;6064:63:0;;;;;;;:::i;:::-;5852:1;6205:7;:18;14706:15:::1;3871:10:::0;14706:30:::1;;14747:21;14771:8;14780:4;14771:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;14820;;;:8:::1;:14:::0;;;;;;-1:-1:-1;;;;;14820:23:0;::::1;::::0;;;;;;;14862:11;;14771:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;14854:38:0::1;;;::::0;-1:-1:-1;;;14854:38:0;;8728:2:1;14854:38:0::1;::::0;::::1;8710:21:1::0;8767:2;8747:18;;;8740:30;-1:-1:-1;;;8786:18:1;;;8779:40;8836:18;;14854:38:0::1;8526:334:1::0;14854:38:0::1;14905:11;14947:3;14933:11;;14919:4;:11;;;:25;;;;:::i;:::-;:31;;;;:::i;:::-;14905:45;;14961:12;14990:3;14976:4;:11;;;:17;;;;:::i;:::-;14961:32:::0;-1:-1:-1;15008:7:0;;15004:82:::1;;15058:10;::::0;15032:12;;:42:::1;::::0;-1:-1:-1;;;;;15032:12:0;;::::1;::::0;15058:10:::1;15070:3:::0;15032:25:::1;:42::i;:::-;15096:12:::0;;:40:::1;::::0;-1:-1:-1;;;;;15096:12:0::1;15122:7:::0;15131:4;15096:25:::1;:40::i;:::-;15161:1;15147:15:::0;;;15173::::1;::::0;::::1;:19:::0;;;15203:18;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;15203:27:0;::::1;::::0;;;;;;;;;:31;;;;15250:38;160:25:1;;;15203:18:0;;:27;15250:38:::1;::::0;133:18:1;15250:38:0::1;14:177:1::0;11161:180:0;11223:8;:15;11206:14;11249:85;11277:6;11271:3;:12;11249:85;;;11307:15;11318:3;11307:10;:15::i;:::-;11285:5;;;;:::i;:::-;;;;11249:85;;;;11195:146;11161:180::o;5173:148::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;5280:1:::1;5264:6:::0;;5243:40:::1;::::0;-1:-1:-1;;;;;5264:6:0;;::::1;::::0;5243:40:::1;::::0;5280:1;;5243:40:::1;5311:1;5294:19:::0;;-1:-1:-1;;;;;;5294:19:0::1;::::0;;5173:148::o;10037:159::-;10132:7;10175:13;10160:11;10166:5;10160:3;:11;:::i;:::-;10159:29;;;;:::i;:::-;10152:36;10037:159;-1:-1:-1;;;;10037:159:0:o;12136:1501::-;5852:1;6072:7;;:19;;6064:63;;;;-1:-1:-1;;;6064:63:0;;;;;;;:::i;:::-;5852:1;6205:7;:18;12241:8:::1;:14:::0;;12250:4;;12241:14;::::1;;;;;:::i;:::-;;;;;;;;;;;:26;;;;;;;;;;;;12233:47;;;::::0;-1:-1:-1;;;12233:47:0;;9207:2:1;12233:47:0::1;::::0;::::1;9189:21:1::0;9246:1;9226:18;;;9219:29;-1:-1:-1;;;9264:18:1;;;9257:38;9312:18;;12233:47:0::1;9005:331:1::0;12233:47:0::1;12293:15;12338:24:::0;;;:18:::1;:24;::::0;;;;;;;3871:10;12338:33;;;;;;;;;12334:122:::1;;12393:24;::::0;;;:18:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;12393:33:0;::::1;::::0;;;;;;;12429:15:::1;12393:51:::0;;12334:122:::1;-1:-1:-1::0;;;;;12470:16:0;;::::1;12498:1;12470:16:::0;;;:7:::1;:16;::::0;;;;;::::1;:30:::0;:56;::::1;;;-1:-1:-1::0;;;;;;12504:22:0;::::1;::::0;::::1;12470:56;:79;;;;;12542:7;-1:-1:-1::0;;;;;12530:19:0::1;:8;-1:-1:-1::0;;;;;12530:19:0::1;;;12470:79;:103;;;;-1:-1:-1::0;;;;;;12554:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;12553:20;12470:103;12466:205;;;-1:-1:-1::0;;;;;12590:16:0;;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:27;;-1:-1:-1;;;;;;12590:27:0::1;::::0;;::::1;::::0;;::::1;::::0;;12632:20;;;:10:::1;:20:::0;;;:27;;-1:-1:-1;;12632:27:0::1;-1:-1:-1::0;12632:27:0::1;::::0;;12466:205:::1;12681:23;::::0;;;:17:::1;:23;::::0;;;;;;;-1:-1:-1;;;;;12681:32:0;::::1;::::0;;;;;;;12716:15:::1;12681:50:::0;;12768:8:::1;:14:::0;;12699:4;;12768:14;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;12817;;;:8:::1;:14:::0;;;;;;-1:-1:-1;;;;;12817:23:0;::::1;::::0;;;;;;;12768:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;12851:16:0::1;12826:4:::0;12851:10:::1;:16::i;:::-;12884:11:::0;;:15;12880:258:::1;;12916:15;12978:4;:15;;;12971:4;12948;:20;;;12934:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:59;;;;:::i;:::-;12916:77:::0;-1:-1:-1;13012:11:0;;13008:119:::1;;13074:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;13074:27:0;::::1;::::0;;;;;;;;:37:::1;::::0;13104:7;;13074:37:::1;:::i;:::-;13044:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;13044:27:0;::::1;::::0;;;;;;;:67;13008:119:::1;12901:237;12880:258;13152:11:::0;;13148:365:::1;;13180:11;13217:3;13204:10;;13194:7;:20;;;;:::i;:::-;:26;;;;:::i;:::-;13180:40:::0;-1:-1:-1;13235:12:0::1;13250:13;13180:40:::0;13250:7;:13:::1;:::i;:::-;13235:28:::0;-1:-1:-1;13282:7:0;;13278:103:::1;;13349:10;::::0;13310:12;;:55:::1;::::0;-1:-1:-1;;;;;13310:12:0;;::::1;::::0;13340:7;;13349:10:::1;13361:3:::0;13310:29:::1;:55::i;:::-;13395:12:::0;;:59:::1;::::0;-1:-1:-1;;;;;13395:12:0::1;13425:7:::0;13442:4:::1;13449::::0;13395:29:::1;:59::i;:::-;13483:11:::0;;:18:::1;::::0;13497:4;;13483:18:::1;:::i;:::-;13469:32:::0;;-1:-1:-1;;13148:365:0::1;13555:20;::::0;::::1;::::0;13541:11;;13578:4:::1;::::0;13541:34:::1;::::0;::::1;:::i;:::-;:41;;;;:::i;:::-;13523:15;::::0;::::1;:59:::0;13598:31:::1;::::0;160:25:1;;;13615:4:0;;-1:-1:-1;;;;;13598:31:0;::::1;::::0;::::1;::::0;148:2:1;133:18;13598:31:0::1;14:177:1::0;10204:949:0;10279:7;10299:21;10323:8;10332:4;10323:14;;;;;;;;:::i;:::-;;;;;;;;;10372;;;:8;:14;;;;;;-1:-1:-1;;;;;10372:21:0;;;;;;;;;;10323:14;;;;;;;;10430:20;;;;10480:12;;:37;;-1:-1:-1;;;10480:37:0;;10511:4;10480:37;;;1918:51:1;10323:14:0;;-1:-1:-1;10372:21:0;;10323:14;10480:12;;;;;:22;;1891:18:1;;10480:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10461:56;;10547:4;:20;;;10532:12;:35;:52;;;;-1:-1:-1;10571:13:0;;;10532:52;10528:348;;;10601:18;10622:64;10636:4;:20;;;10658:12;10672:4;:13;;;10622;:64::i;:::-;10601:85;;10701:18;10768:15;;10750:4;:15;;;10735:12;;10722:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;10701:82;-1:-1:-1;10855:8:0;10835:17;10701:82;10848:4;10835:17;:::i;:::-;:28;;;;:::i;:::-;10816:48;;:15;:48;:::i;:::-;10798:66;;10586:290;;10528:348;10886:14;10960:18;;;:12;:18;;;;;;;;-1:-1:-1;;;;;10960:25:0;;;;;;;;;;10942:15;;;;10903:11;;10935:4;;10903:29;;10917:15;;10903:29;:::i;:::-;:36;;;;:::i;:::-;:54;;;;:::i;:::-;:82;;;;:::i;:::-;11000:21;;;;10886:99;;-1:-1:-1;11000:21:0;;10996:126;;;11038:11;11073:3;11061:9;;11052:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;11038:38;-1:-1:-1;11098:12:0;11038:38;11098:6;:12;:::i;:::-;11091:19;;;;;;;;;;10996:126;11139:6;10204:949;-1:-1:-1;;;;;;;10204:949:0:o;17199:325::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;17274:10:::1;;17259:12;:25;17251:58;;;::::0;-1:-1:-1;;;17251:58:0;;9543:2:1;17251:58:0::1;::::0;::::1;9525:21:1::0;9582:2;9562:18;;;9555:30;-1:-1:-1;;;9601:18:1;;;9594:50;9661:18;;17251:58:0::1;9341:344:1::0;17251:58:0::1;17339:8;:15:::0;17322:14:::1;17365:114;17393:6;17387:3;:12;17365:114;;;17455:12;17423:8;17432:3;17423:13;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:29:::1;:13;::::0;;::::1;;:29;:44:::0;17401:5:::1;::::0;::::1;:::i;:::-;;;17365:114;;;-1:-1:-1::0;;17504:12:0::1;17491:10;:25:::0;17199:325::o;17532:120::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;17638:6:::1;17609:8;17618:4;17609:14;;;;;;;;:::i;:::-;;;;;;;;;;;:26;;;:35;;;;;;;;;;;;;;;;;;17532:120:::0;;:::o;17660:298::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;17790:2:::1;17776:11;:16;:37;;;;;17811:2;17796:12;:17;17776:37;:56;;;;;17830:2;17817:10;:15;17776:56;17768:77;;;::::0;-1:-1:-1;;;17768:77:0;;9892:2:1;17768:77:0::1;::::0;::::1;9874:21:1::0;9931:1;9911:18;;;9904:29;-1:-1:-1;;;9949:18:1;;;9942:38;9997:18;;17768:77:0::1;9690:331:1::0;17768:77:0::1;17856:10;:24:::0;;;;17891:11:::1;:26:::0;17928:9:::1;:22:::0;17660:298::o;18118:164::-;18194:10;;-1:-1:-1;;;;;18194:10:0;3871;-1:-1:-1;;;;;18178:26:0;;:53;;;-1:-1:-1;4781:7:0;4808:6;-1:-1:-1;;;;;4808:6:0;3871:10;18208:23;18178:53;18170:72;;;;-1:-1:-1;;;18170:72:0;;10228:2:1;18170:72:0;;;10210:21:1;10267:1;10247:18;;;10240:29;-1:-1:-1;;;10285:18:1;;;10278:36;10331:18;;18170:72:0;10026:329:1;18170:72:0;18253:10;:21;;-1:-1:-1;;;;;;18253:21:0;-1:-1:-1;;;;;18253:21:0;;;;;;;;;;18118:164::o;17966:144::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;18051:4:::1;:12:::0;;-1:-1:-1;;;;;;18051:12:0::1;-1:-1:-1::0;;;;;18051:12:0;;;::::1;::::0;;;::::1;::::0;;;18074::::1;:28:::0;17966:144::o;15556:1349::-;5852:1;6072:7;;:19;;6064:63;;;;-1:-1:-1;;;6064:63:0;;;;;;;:::i;:::-;5852:1;6205:7;:18;6460:9:::1;6473:10;6460:23;6452:53;;;::::0;-1:-1:-1;;;6452:53:0;;10562:2:1;6452:53:0::1;::::0;::::1;10544:21:1::0;10601:2;10581:18;;;10574:30;-1:-1:-1;;;10620:18:1;;;10613:47;10677:18;;6452:53:0::1;10360:341:1::0;6452:53:0::1;3871:10:::0;15675:25:::2;15686:4:::0;3871:10;15675::::2;:25::i;:::-;15667:48;;;::::0;-1:-1:-1;;;15667:48:0;;10908:2:1;15667:48:0::2;::::0;::::2;10890:21:1::0;10947:2;10927:18;;;10920:30;-1:-1:-1;;;10966:18:1;;;10959:40;11016:18;;15667:48:0::2;10706:334:1::0;15667:48:0::2;15728:21;15752:8;15761:4;15752:14;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;15801;;;:8:::2;:14:::0;;;;;;-1:-1:-1;;;;;15801:23:0;::::2;::::0;;;;;;;15752:14:::2;::::0;;::::2;::::0;;::::2;::::0;-1:-1:-1;15835:16:0::2;15810:4:::0;15835:10:::2;:16::i;:::-;15868:11:::0;;:15;15864:258:::2;;15900:15;15962:4;:15;;;15955:4;15932;:20;;;15918:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:59;;;;:::i;:::-;15900:77:::0;-1:-1:-1;15996:11:0;;15992:119:::2;;16058:18;::::0;;;:12:::2;:18;::::0;;;;;;;-1:-1:-1;;;;;16058:27:0;::::2;::::0;;;;;;;;:37:::2;::::0;16088:7;;16058:37:::2;:::i;:::-;16028:18;::::0;;;:12:::2;:18;::::0;;;;;;;-1:-1:-1;;;;;16028:27:0;::::2;::::0;;;;;;;:67;15992:119:::2;15885:237;15864:258;16164:20;::::0;::::2;::::0;16150:11;;16187:4:::2;::::0;16150:34:::2;::::0;::::2;:::i;:::-;:41;;;;:::i;:::-;16132:15;::::0;::::2;:59:::0;16206:14:::2;16223:18:::0;;;:12:::2;:18;::::0;;;;;;;-1:-1:-1;;;;;16223:27:0;::::2;::::0;;;;;;;;16269:10;16261:33:::2;;;::::0;-1:-1:-1;;;16261:33:0;;11247:2:1;16261:33:0::2;::::0;::::2;11229:21:1::0;11286:2;11266:18;;;11259:30;-1:-1:-1;;;11305:18:1;;;11298:40;11355:18;;16261:33:0::2;11045:334:1::0;16261:33:0::2;16337:1;16307:18:::0;;;:12:::2;:18;::::0;;;;;;;-1:-1:-1;;;;;16307:27:0;::::2;::::0;;;;;;;:31;16353:21:::2;::::0;::::2;::::0;::::2;;16349:503;;;16391:11;16426:3;16414:9;;16405:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;16391:38:::0;-1:-1:-1;16448:7:0;;16444:247:::2;;-1:-1:-1::0;;;;;16480:16:0;;::::2;16508:1;16480:16:::0;;;:7:::2;:16;::::0;;;;;::::2;16476:200;;16552:10;::::0;16535:33:::2;::::0;-1:-1:-1;;;;;16552:10:0::2;16564:3:::0;16535:16:::2;:33::i;:::-;16476:200;;;-1:-1:-1::0;;;;;16634:16:0;;::::2;;::::0;;;:7:::2;:16;::::0;;;;;16617:39:::2;::::0;16634:16:::2;16652:3:::0;16617:16:::2;:39::i;:::-;16714:12;16723:3:::0;16714:6;:12:::2;:::i;:::-;16705:21;;16741:33;16758:7;16767:6;16741:16;:33::i;:::-;16376:410;16349:503;;;16807:33;16824:7;16833:6;16807:16;:33::i;:::-;16884:4;16875:7;-1:-1:-1::0;;;;;16867:30:0::2;;16890:6;16867:30;;;;160:25:1::0;;148:2;133:18;;14:177;16867:30:0::2;;;;;;;;-1:-1:-1::0;;5808:1:0;6384:22;;-1:-1:-1;;;15556:1349:0:o;8525:882::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;8764:11:::1;8760:61;;;8792:17;:15;:17::i;:::-;8831:23;8872:10;;8857:12;:25;:53;;8900:10;;8857:53;;;8885:12;8857:53;8831:79;;8957:11;8939:15;;:29;;;;:::i;:::-;8921:15;:47:::0;9007:381:::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;9007:381:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;9007:381:0;;;;;;;;;;;;;;;;;;;::::1;;::::0;;;;;;9368:4:::1;9007:381:::0;;;;;;8979:8:::1;:420:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;8979:420:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8979:420:0;;;;;;;;;;;;;;;;-1:-1:-1;;8979:420:0;;;;::::1;;-1:-1:-1::0;;8979:420:0;;;;;;::::1;;;;::::0;;8525:882::o;5476:244::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5565:22:0;::::1;5557:73;;;::::0;-1:-1:-1;;;5557:73:0;;11586:2:1;5557:73:0::1;::::0;::::1;11568:21:1::0;11625:2;11605:18;;;11598:30;11664:34;11644:18;;;11637:62;-1:-1:-1;;;11715:18:1;;;11708:36;11761:19;;5557:73:0::1;11384:402:1::0;5557:73:0::1;5667:6;::::0;;5646:38:::1;::::0;-1:-1:-1;;;;;5646:38:0;;::::1;::::0;5667:6;::::1;::::0;5646:38:::1;::::0;::::1;5695:6;:17:::0;;-1:-1:-1;;;;;;5695:17:0::1;-1:-1:-1::0;;;;;5695:17:0;;;::::1;::::0;;;::::1;::::0;;5476:244::o;2997:211::-;3141:58;;-1:-1:-1;;;;;8189:32:1;;3141:58:0;;;8171:51:1;8238:18;;;8231:34;;;3114:86:0;;3134:5;;-1:-1:-1;;;3164:23:0;8144:18:1;;3141:58:0;;;;-1:-1:-1;;3141:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3141:58:0;-1:-1:-1;;;;;;3141:58:0;;;;;;;;;;3114:19;:86::i;:::-;2997:211;;;:::o;3216:248::-;3387:68;;-1:-1:-1;;;;;12049:15:1;;;3387:68:0;;;12031:34:1;12101:15;;12081:18;;;12074:43;12133:18;;;12126:34;;;3360:96:0;;3380:5;;-1:-1:-1;;;3410:27:0;11966:18:1;;3387:68:0;11791:375:1;3360:96:0;3216:248;;;;:::o;16913:278::-;17007:4;;:29;;-1:-1:-1;;;17007:29:0;;17030:4;17007:29;;;1918:51:1;16989:15:0;;-1:-1:-1;;;;;17007:4:0;;:14;;1891:18:1;;17007:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16989:47;;17061:7;17051;:17;17047:137;;;17085:4;;:27;;-1:-1:-1;;;17085:27:0;;-1:-1:-1;;;;;8189:32:1;;;17085:27:0;;;8171:51:1;8238:18;;;8231:34;;;17085:4:0;;;;:13;;8144:18:1;;17085:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17047:137::-;17145:4;;:27;;-1:-1:-1;;;17145:27:0;;-1:-1:-1;;;;;8189:32:1;;;17145:27:0;;;8171:51:1;8238:18;;;8231:34;;;17145:4:0;;;;:13;;8144:18:1;;17145:27:0;7997:274:1;3472:263:0;3553:23;3579:39;3607:4;3579:39;;;;;;;;;;;;;-1:-1:-1;;;3579:39:0;;;3587:5;-1:-1:-1;;;;;3579:27:0;;;:39;;;;;:::i;:::-;3633:17;;3553:65;;-1:-1:-1;3633:21:0;3629:99;;3690:10;3679:30;;;;;;;;;;;;:::i;:::-;3671:45;;;;-1:-1:-1;;;3671:45:0;;12373:2:1;3671:45:0;;;12355:21:1;12412:1;12392:18;;;12385:29;-1:-1:-1;;;12430:18:1;;;12423:32;12472:18;;3671:45:0;12171:325:1;1430:230:0;1567:12;1599:53;1622:6;1630:4;1636:1;1639:12;2401;2434:18;2445:6;2434:10;:18::i;:::-;2426:33;;;;-1:-1:-1;;;2426:33:0;;12703:2:1;2426:33:0;;;12685:21:1;12742:1;12722:18;;;12715:29;-1:-1:-1;;;12760:18:1;;;12753:32;12802:18;;2426:33:0;12501:325:1;2426:33:0;2471:12;2485:23;2512:6;-1:-1:-1;;;;;2512:11:0;2532:8;2542:4;2512:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:77;;;;2562:7;2558:368;;;2593:10;-1:-1:-1;2586:17:0;;-1:-1:-1;2586:17:0;2558:368;2640:17;;:21;2636:279;;2743:10;2737:17;2804:15;2791:10;2787:2;2783:19;2776:44;2636:279;2886:12;2879:20;;-1:-1:-1;;;2879:20:0;;;;;;;;:::i;408:619::-;468:4;936:20;;779:66;976:23;;;;;;:42;;-1:-1:-1;;1003:15:0;;;968:51;-1:-1:-1;;408:619:0:o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;1124:131::-;-1:-1:-1;;;;;1199:31:1;;1189:42;;1179:70;;1245:1;1242;1235:12;1179:70;1124:131;:::o;1260:315::-;1328:6;1336;1389:2;1377:9;1368:7;1364:23;1360:32;1357:52;;;1405:1;1402;1395:12;1357:52;1441:9;1428:23;1418:33;;1501:2;1490:9;1486:18;1473:32;1514:31;1539:5;1514:31;:::i;:::-;1564:5;1554:15;;;1260:315;;;;;:::o;1980:118::-;2066:5;2059:13;2052:21;2045:5;2042:32;2032:60;;2088:1;2085;2078:12;2103:651;2201:6;2209;2217;2225;2233;2241;2294:3;2282:9;2273:7;2269:23;2265:33;2262:53;;;2311:1;2308;2301:12;2262:53;2347:9;2334:23;2324:33;;2404:2;2393:9;2389:18;2376:32;2366:42;;2455:2;2444:9;2440:18;2427:32;2417:42;;2506:2;2495:9;2491:18;2478:32;2468:42;;2560:3;2549:9;2545:19;2532:33;2574:28;2596:5;2574:28;:::i;:::-;2621:5;-1:-1:-1;2678:3:1;2663:19;;2650:33;2692:30;2650:33;2692:30;:::i;:::-;2741:7;2731:17;;;2103:651;;;;;;;;:::o;2759:248::-;2827:6;2835;2888:2;2876:9;2867:7;2863:23;2859:32;2856:52;;;2904:1;2901;2894:12;2856:52;-1:-1:-1;;2927:23:1;;;2997:2;2982:18;;;2969:32;;-1:-1:-1;2759:248:1:o;3012:247::-;3071:6;3124:2;3112:9;3103:7;3099:23;3095:32;3092:52;;;3140:1;3137;3130:12;3092:52;3179:9;3166:23;3198:31;3223:5;3198:31;:::i;:::-;3248:5;3012:247;-1:-1:-1;;;3012:247:1:o;3264:316::-;3341:6;3349;3357;3410:2;3398:9;3389:7;3385:23;3381:32;3378:52;;;3426:1;3423;3416:12;3378:52;-1:-1:-1;;3449:23:1;;;3519:2;3504:18;;3491:32;;-1:-1:-1;3570:2:1;3555:18;;;3542:32;;3264:316;-1:-1:-1;3264:316:1:o;3585:383::-;3662:6;3670;3678;3731:2;3719:9;3710:7;3706:23;3702:32;3699:52;;;3747:1;3744;3737:12;3699:52;3783:9;3770:23;3760:33;;3840:2;3829:9;3825:18;3812:32;3802:42;;3894:2;3883:9;3879:18;3866:32;3907:31;3932:5;3907:31;:::i;:::-;3957:5;3947:15;;;3585:383;;;;;:::o;4226:309::-;4291:6;4299;4352:2;4340:9;4331:7;4327:23;4323:32;4320:52;;;4368:1;4365;4358:12;4320:52;4404:9;4391:23;4381:33;;4464:2;4453:9;4449:18;4436:32;4477:28;4499:5;4477:28;:::i;4540:332::-;4625:6;4633;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;4741:9;4728:23;4760:31;4785:5;4760:31;:::i;:::-;4810:5;4862:2;4847:18;;;;4834:32;;-1:-1:-1;;;4540:332:1:o;5102:737::-;5213:6;5221;5229;5237;5245;5253;5306:3;5294:9;5285:7;5281:23;5277:33;5274:53;;;5323:1;5320;5313:12;5274:53;5362:9;5349:23;5381:31;5406:5;5381:31;:::i;:::-;5431:5;-1:-1:-1;5483:2:1;5468:18;;5455:32;;-1:-1:-1;5534:2:1;5519:18;;5506:32;;-1:-1:-1;5585:2:1;5570:18;;5557:32;;-1:-1:-1;5641:3:1;5626:19;;5613:33;5655:30;5613:33;5655:30;:::i;5844:127::-;5905:10;5900:3;5896:20;5893:1;5886:31;5936:4;5933:1;5926:15;5960:4;5957:1;5950:15;5976:127;6037:10;6032:3;6028:20;6025:1;6018:31;6068:4;6065:1;6058:15;6092:4;6089:1;6082:15;6108:128;6148:3;6179:1;6175:6;6172:1;6169:13;6166:39;;;6185:18;;:::i;:::-;-1:-1:-1;6221:9:1;;6108:128::o;6241:342::-;6443:2;6425:21;;;6482:2;6462:18;;;6455:30;-1:-1:-1;;;6516:2:1;6501:18;;6494:48;6574:2;6559:18;;6241:342::o;6588:125::-;6628:4;6656:1;6653;6650:8;6647:34;;;6661:18;;:::i;:::-;-1:-1:-1;6698:9:1;;6588:125::o;6718:355::-;6920:2;6902:21;;;6959:2;6939:18;;;6932:30;6998:33;6993:2;6978:18;;6971:61;7064:2;7049:18;;6718:355::o;7413:168::-;7453:7;7519:1;7515;7511:6;7507:14;7504:1;7501:21;7496:1;7489:9;7482:17;7478:45;7475:71;;;7526:18;;:::i;:::-;-1:-1:-1;7566:9:1;;7413:168::o;7586:217::-;7626:1;7652;7642:132;;7696:10;7691:3;7687:20;7684:1;7677:31;7731:4;7728:1;7721:15;7759:4;7756:1;7749:15;7642:132;-1:-1:-1;7788:9:1;;7586:217::o;7808:184::-;7878:6;7931:2;7919:9;7910:7;7906:23;7902:32;7899:52;;;7947:1;7944;7937:12;7899:52;-1:-1:-1;7970:16:1;;7808:184;-1:-1:-1;7808:184:1:o;8276:245::-;8343:6;8396:2;8384:9;8375:7;8371:23;8367:32;8364:52;;;8412:1;8409;8402:12;8364:52;8444:9;8438:16;8463:28;8485:5;8463:28;:::i;8865:135::-;8904:3;-1:-1:-1;;8925:17:1;;8922:43;;;8945:18;;:::i;:::-;-1:-1:-1;8992:1:1;8981:13;;8865:135::o;12831:258::-;12903:1;12913:113;12927:6;12924:1;12921:13;12913:113;;;13003:11;;;12997:18;12984:11;;;12977:39;12949:2;12942:10;12913:113;;;13044:6;13041:1;13038:13;13035:48;;;-1:-1:-1;;13079:1:1;13061:16;;13054:27;12831:258::o;13094:274::-;13223:3;13261:6;13255:13;13277:53;13323:6;13318:3;13311:4;13303:6;13299:17;13277:53;:::i;:::-;13346:16;;;;;13094:274;-1:-1:-1;;13094:274:1:o;13373:383::-;13522:2;13511:9;13504:21;13485:4;13554:6;13548:13;13597:6;13592:2;13581:9;13577:18;13570:34;13613:66;13672:6;13667:2;13656:9;13652:18;13647:2;13639:6;13635:15;13613:66;:::i;:::-;13740:2;13719:15;-1:-1:-1;;13715:29:1;13700:45;;;;13747:2;13696:54;;13373:383;-1:-1:-1;;13373:383:1:o

Metadata Hash

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