Contract 0xcdb573643ae82607981bf3ab4ac22fe8c0916440 2

Contract Overview

Balance:
0 HT

HT Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xde11f510558782862f907e5a8b227f16f1362cb49f6f63b8c7cad22d57165e5bWithdraw(pending)2021-12-09 6:53:568 mins ago0x588563d7e5f1b72373d7fb9e639b9c8c3a798d44 IN 0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT(Pending)
0xa0e3c0c71b29b8fb39801646d316c970bd0a8c100fb640a528fef55c09f6d2f5Withdraw(pending)2021-12-09 6:53:568 mins ago0x367cd03a90f16a2f7799095e6c5d3a2cfd9721ab IN 0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT(Pending)
0xf9296f349252fd8757ff8533998baaaf0acc904cccd2ea2af05ebff73065f5a4Withdraw(pending)2021-12-09 5:11:471 hr 50 mins ago0x367cd03a90f16a2f7799095e6c5d3a2cfd9721ab IN 0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT(Pending)
0xfb0311812cb8624f52b7de8ecfa5a0c90976ab89946c0f1523a697c01d635674Withdraw(pending)2021-12-09 4:39:022 hrs 23 mins ago0x367cd03a90f16a2f7799095e6c5d3a2cfd9721ab IN 0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT(Pending)
0xf3e981ae040573206adf60b7939f8dd9eda565b79b0d5c2fc6c9b814ca701cdbWithdraw(pending)2021-12-09 3:34:423 hrs 27 mins ago0x588563d7e5f1b72373d7fb9e639b9c8c3a798d44 IN 0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT(Pending)
0x4d97d410b5f5c82467fb00e247633be577d6ed877653c23df2fac1da0d241984Withdraw105983592021-12-05 7:25:093 days 23 hrs ago0xf18f5aee211136ef40b388cea8fe4bf6be7f4623 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.000311600523.24
0x8903fcba359f3b9b86b6c0818bf2c73c1015a1ee7a910605b3cafa31afa01c47Withdraw105634842021-12-04 2:21:245 days 4 hrs ago0x3755e4b3538bdf0a99c588c98c458e7d633b41c4 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.00020275922.7
0x045bddd9ff625f4befd21c1ad498eead9cbcf39c7c23ec90d670a1a9ed2a47bcWithdraw105634792021-12-04 2:21:095 days 4 hrs ago0x3755e4b3538bdf0a99c588c98c458e7d633b41c4 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.00022536362.7
0x6e009837652ba695ff1a582ab3dafa031db5ae48c50d8d8672ac62f31c83a6a1Withdraw104922732021-12-01 15:00:517 days 16 hrs ago0xbeae28baa447530aac6dd12befaf1b8380f9ec09 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.0001689662.25
0x35b8795f8b58535817f6221f793af9a9a8dcb73a04000d64f992af9d5dd5b420Withdraw104885012021-12-01 11:52:157 days 19 hrs ago0xa24980ea8de00061e29c62ac209aee72a916db48 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.000226442252.25
0xb2819d8e5be3d6a94b62c248190b03c24ac7fb9db9d049ebcaa980889568d78cWithdraw102195672021-11-22 3:45:3317 days 3 hrs ago0x0938cc9df3ca789a4a80fb9942406141bfc5eb9b IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.000187967252.25
0x0556dc0597ec17a6a96a884dc184c73750c10d2f4d3f161989f38a444a6bb20aWithdraw101983452021-11-21 10:04:2717 days 20 hrs ago0x0331f6ac9b5a7a60735c576b0cb7d377fb8c44d6 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.0002320916662.777777777
0xa31b80964f1b5427b1b289fe7850216f45332e71cda5bf64f5f33b92c53a86a7Withdraw101982992021-11-21 10:02:0917 days 20 hrs ago0x0331f6ac9b5a7a60735c576b0cb7d377fb8c44d6 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.0002648916662.777777777
0x4db39af564b50334651ac0b7c60e6f6dbc5dca00737a160a52af469d021db4afWithdraw101532942021-11-19 20:31:5419 days 10 hrs ago0x7ec227999a50d24488b491eb19af4ebc1f70eed3 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.000188532.5
0xc21781826b1fc13f16d75b3ee80c97e2bf88a35236354b787f870b1c7455e805Withdraw101532742021-11-19 20:30:5419 days 10 hrs ago0x7ec227999a50d24488b491eb19af4ebc1f70eed3 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.00019768252.5
0x81a2af387a9daeb3f485cbc9ebe4379a79f6207ea728ec7aa4aef9373bf9b497Withdraw99271382021-11-12 0:04:0527 days 6 hrs ago0x80874a62da932b42d77217a8b6142599b077d0dc IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.000187967252.25
0x21d7bd3a7d09f5f19dfd439d7cf9e32c9fc79cd3836115590a99f9561ba2f115Withdraw99166402021-11-11 15:19:0927 days 15 hrs ago0x56a6a9859bff6c2a85fc98fbcf3cd4f846501011 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.0001689662.25
0x7793ba8332190dce6b665996e4b1351cd78d4a2fb481e919669ec9c3ab48d82dWithdraw99166172021-11-11 15:18:0027 days 15 hrs ago0x56a6a9859bff6c2a85fc98fbcf3cd4f846501011 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.0001696232.25
0x6b61a00755a58fb50027d3c894b3cf50a1a5cd4926b65c52a16dab32a8d4cffcWithdraw98864662021-11-10 14:10:2128 days 16 hrs ago0xa429e9a6ec3eb4e3346f2f5b661da2005792d81a IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.000169652.25
0xd848865fdf2ccfaeb492b4ab9d737b1566dc9ed9a363d6c4665d38198d96b008Withdraw98864612021-11-10 14:10:0628 days 16 hrs ago0xa429e9a6ec3eb4e3346f2f5b661da2005792d81a IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.000177914252.25
0x4ec648568aa6d86cba13fe1341c22ace0df5ab3108cd69e6b62d833206d2ad08Withdraw98729072021-11-10 2:52:2129 days 4 hrs ago0xf7d0404472ac1b4a777054f32d1b271e0d651f78 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.00027153362.7
0xac8e6ff1008bdb533a30893f7847509591ecb04d9c40531bbad8cde16f76f51fWithdraw98572272021-11-09 13:48:1629 days 17 hrs ago0xd470c1393bd1643195d0379ac2c7f16dbb0e3544 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.0002085999992.777777777
0xf6e9a4d74e7dc151e512b5d01c976663df47bf9220b72a75cdf88527d61ad1bcWithdraw98094242021-11-07 21:57:5031 days 9 hrs ago0x9358b2a0be6208a4bdf7b4b13f5c629f01bed565 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.00022536362.7
0xff4d36f6f68d3ba5132daf53eea8c719972fdb4f41672a222f26975887d64a29Withdraw97177072021-11-04 17:31:4634 days 13 hrs ago0xa47f06571ec7e69fed88bc71f8411734ebd590a5 IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.00022536362.7
0x72e2b83ce50a559471924fd28c374ced065ec3cf6dd3cca874ce8d112962d362Withdraw97024762021-11-04 4:50:1135 days 2 hrs ago0x09cef4d9aad7ff28d2a23a76122ff966cfc5bfde IN  0xcdb573643ae82607981bf3ab4ac22fe8c09164400 HT0.00021349712.7
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HGTMiner

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-03-21
*/

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

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @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) {
        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, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * 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);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

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

// 

pragma solidity >=0.6.0 <0.8.0;

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/utils/Address.sol

// 

pragma solidity >=0.6.2 <0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

// 

pragma solidity >=0.6.0 <0.8.0;




/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;
    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));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

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

// 

pragma solidity >=0.6.0 <0.8.0;

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

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

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

// 

pragma solidity >=0.6.0 <0.8.0;

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the 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;
    }
}

// File: contracts/multisender/HGTMiner.sol

/**
 *Submitted for verification at hecoinfo.com on 2021-02-04
*/

// 
pragma solidity ^0.7.4;
pragma experimental ABIEncoderV2;



interface IHgt is IERC20 {
    function mintMine(address _to, uint256 _amount) external returns (bool);
}
contract HGTMiner is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    // Info of each user.
    struct UserInfo {
        uint256 amount;     // How many LP tokens the user has provided.
        uint256 rewardDebt; // Reward debt.
    }

    // Info of each pool.
    struct PoolInfo {
        IERC20 lpToken;           // Address of LP token contract.
        uint256 allocPoint;       // How many allocation points assigned to this pool. HGTs to distribute per block.
        uint256 lastRewardBlock;  // Last block number that HGTs distribution occurs.
        uint256 accHgtPerShare; // Accumulated HGTs per share, times 1e12.
        uint256 totalAmount;    // Total amount of current pool deposit.
        uint16 round;    // MintRound
    }

    // The HGT Token!
    IHgt public hgt;
    // Info of each pool.
    PoolInfo[] public poolInfo;
    // Info of each user that stakes LP tokens.
    mapping(uint256 => mapping(address => UserInfo)) public userInfo;
    // pid corresponding address
    mapping(address => uint256) public LpOfPid;
    // Control mining
    bool public paused = false;
    // Total allocation points. Must be the sum of all allocation points in all pools.
    uint256 public totalAllocPoint = 0;
    mapping(address => bool) private blackList;
    
    struct MintRound {
        uint16  round;     
        uint256 startBlock; 
        uint256 endBlock; 
        uint256 mineBlockSupply;
    }
    MintRound[] public mintRounds;

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

    constructor(
        IHgt _hgt
    )  {
        hgt = _hgt;
    }
    
   // Set the number of hgt produced by each block
    function setMintRoundInfo(uint256 _newPerBlock, uint256 _startBlock, uint256 _endBlock) public onlyOwner {
        require(block.number < _startBlock && block.number < _endBlock, "Time must be future");
        require(_endBlock > _startBlock, "EndBlock must greater that startBlock");

        massUpdatePools();
        uint16 len = uint16(mintRounds.length);
        if(len > 0){
            MintRound memory lastRound = mintRounds[len - 1];
            require(lastRound.endBlock < _startBlock, "One MineRound at a time");    
        }
        mintRounds.push(MintRound({
            round: len + 1,
            startBlock: _startBlock,
            endBlock: _endBlock,
            mineBlockSupply: _newPerBlock
        }));
    }

    function getNearestRoundInfo() public view returns (MintRound memory) {
        uint256 len = mintRounds.length;
        require(len > 0, "no mint rounds");

        MintRound memory roundInfo;
        for(uint16 i=0; i<len; i++){
            roundInfo = mintRounds[i];
            if(roundInfo.startBlock > block.number || roundInfo.endBlock > block.number){
                return roundInfo;
            }
        }
        return MintRound({
            round: 0,
            startBlock: 0,
            endBlock: 0,
            mineBlockSupply: 0
        });        
    } 
    function getRoundInfoByBlock(uint256 _blockNumber) public view returns (MintRound memory){
        uint256 len = mintRounds.length;
        require(len > 0, "no mint rounds");
        MintRound memory roundInfo;

        for(uint16 i=0; i<len; i++){
            roundInfo = mintRounds[i];
            if(roundInfo.startBlock <= _blockNumber  && roundInfo.endBlock > _blockNumber){
                return roundInfo;
            }
        }
        return MintRound({
            round: 0,
            startBlock: 0,
            endBlock: 0,
            mineBlockSupply: 0
        });   
    }

    function poolLength() public view returns (uint256) {
        return poolInfo.length;
    }
 
    function setPause() public onlyOwner {
        paused = !paused;
    }

 
    // Add a new lp to the pool. Can only be called by the owner.
    // XXX DO NOT add the same LP token more than once. Rewards will be messed up if you do.
    function add(uint256 _allocPoint, IERC20 _lpToken, bool _withUpdate, uint16 round) public onlyOwner {
    
        require(address(_lpToken) != address(0), "_lpToken is the zero address");
        uint256 len = mintRounds.length;
        require(len > 0, "no mint rounds");

        MintRound memory roundInfo;
        if(round == 0){
            roundInfo = getNearestRoundInfo();
            round = roundInfo.round;
        }
        roundInfo = mintRounds[round-1];
        require(block.number < roundInfo.endBlock, "invalid mine round");
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 lastRewardBlock = block.number > roundInfo.startBlock ? block.number : roundInfo.startBlock;
        totalAllocPoint = totalAllocPoint.add(_allocPoint);
        poolInfo.push(PoolInfo({
            lpToken : _lpToken,
            allocPoint : _allocPoint,
            lastRewardBlock : lastRewardBlock,
            accHgtPerShare : 0,
            totalAmount : 0,
            round: round
        }));
        LpOfPid[address(_lpToken)] = poolLength() - 1;
    }

    // Update the given pool's HGT allocation point. Can only be called by the owner.
    function set(uint256 _pid, uint256 _allocPoint, bool _withUpdate) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);
        poolInfo[_pid].allocPoint = _allocPoint;
    }


    function getHgtBlockReward(uint256 _lastRewardBlock) public view returns (uint256) {
        uint256 blockReward = 0;
        MintRound memory mintRound = getRoundInfoByBlock(_lastRewardBlock);
        
        if(mintRound.round>0){
            uint256 endBlock = block.number;
            if(mintRound.endBlock <= block.number)
            {
                endBlock = mintRound.endBlock;
            }
            blockReward = (endBlock.sub(_lastRewardBlock)).mul(mintRound.mineBlockSupply);
        }
        return blockReward;
    }

    // Update reward variables for all pools. Be careful of gas spending!
    function massUpdatePools() public {
        uint256 length = poolInfo.length;
        for (uint256 pid = 0; pid < length; ++pid) {
            updatePool(pid);
        }
    }

    // Update reward variables of the given pool to be up-to-date.
    function updatePool(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        if (block.number <= pool.lastRewardBlock) {
            return;
        }
        uint256 lpSupply;
        
        lpSupply = pool.lpToken.balanceOf(address(this));
        if (lpSupply == 0) {
            pool.lastRewardBlock = block.number;
            return;
        }
        
        uint256 blockReward = getHgtBlockReward(pool.lastRewardBlock);
        if (blockReward <= 0) {
            return;
        }
        uint256 hgtReward = blockReward.mul(pool.allocPoint).div(totalAllocPoint);
        bool minRet = hgt.mintMine(address(this), hgtReward);
        if (minRet) {
            pool.accHgtPerShare = pool.accHgtPerShare.add(hgtReward.mul(1e12).div(lpSupply));
        }
        MintRound memory mintRound = getRoundInfoByBlock(pool.lastRewardBlock);
        if(mintRound.round > 0 && block.number >= mintRound.endBlock){
            pool.lastRewardBlock = mintRound.endBlock;
        }
        else {
            pool.lastRewardBlock = block.number;
        }
    }

    // View function to see pending HGTs on frontend.
    function pending(uint256 _pid, address _user) external view returns (uint256, uint256){
        uint256 hgtAmount = pendingHgt(_pid, _user);
        return (hgtAmount, 0);
    }  

    function pendingHgt(uint256 _pid, address _user) private view returns (uint256){
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        uint256 accHgtPerShare = pool.accHgtPerShare;
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (user.amount > 0) {
            if (block.number > pool.lastRewardBlock) {
                uint256 blockReward = getHgtBlockReward(pool.lastRewardBlock);
                uint256 hgtReward = blockReward.mul(pool.allocPoint).div(totalAllocPoint);
                accHgtPerShare = accHgtPerShare.add(hgtReward.mul(1e12).div(lpSupply));
                return user.amount.mul(accHgtPerShare).div(1e12).sub(user.rewardDebt);
            }
            if (block.number == pool.lastRewardBlock) {
                return user.amount.mul(accHgtPerShare).div(1e12).sub(user.rewardDebt);
            }
        }
        return 0;
    }

    function setBlackList(address _user) public onlyOwner{
        require(!blackList[_user], 'do not need to be ban');
        blackList[_user] = true;
    }
    function setBatchBlackList(address[] memory _users) public onlyOwner{
        uint256 i = 0;
        for(i=0; i<_users.length; i++){
            setBlackList(_users[i]);
        }
    }
    function unsetBlackList(address _user) public onlyOwner{
        require(blackList[_user], 'user not exists');
        blackList[_user] = false;
        delete blackList[_user];
    }
    function unsetBatchBlackList(address[] memory _users) public onlyOwner{
        uint256 i= 0;
        for(i=0; i<_users.length; i++){
            unsetBlackList(_users[i]);
        }
    }

    function isInBlackList(address user) public onlyOwner view returns (bool){
        return blackList[user];
    }
    // Deposit LP tokens to HGTMiner for HGT allocation.
    function deposit(uint256 _pid, uint256 _amount) public notPause {
        depositHgt(_pid, _amount, msg.sender);
    }

    function depositHgt(uint256 _pid, uint256 _amount, address _user) public notPause {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];

        MintRound memory mintRound = getRoundInfoByBlock(block.number);
        require(mintRound.round > 0, "Not mine time now");
        updatePool(_pid);
        if (user.amount > 0) {
            uint256 pendingAmount = user.amount.mul(pool.accHgtPerShare).div(1e12).sub(user.rewardDebt);
            if (pendingAmount > 0) {
                safeHgtTransfer(_user, pendingAmount);
            }
        }
        if (_amount > 0) {
            pool.lpToken.safeTransferFrom(_user, address(this), _amount);
            user.amount = user.amount.add(_amount);
            pool.totalAmount = pool.totalAmount.add(_amount);
        }
        user.rewardDebt = user.amount.mul(pool.accHgtPerShare).div(1e12);
        emit Deposit(_user, _pid, _amount);
    }

    // Withdraw LP tokens from HGTMiner.
    function withdraw(uint256 _pid, uint256 _amount) public notPause {
        withdrawHgt(_pid, _amount, msg.sender);
    }
 
    function withdrawHgt(uint256 _pid, uint256 _amount, address _user) private {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        require(user.amount >= _amount, "withdrawHgt: not good");
        require(!blackList[_user], 'you are banned');
        updatePool(_pid);
        uint256 pendingAmount = user.amount.mul(pool.accHgtPerShare).div(1e12).sub(user.rewardDebt);
        if (pendingAmount > 0) {
            safeHgtTransfer(_user, pendingAmount);
        }
        if (_amount > 0) {
            user.amount = user.amount.sub(_amount);
            pool.totalAmount = pool.totalAmount.sub(_amount);
            pool.lpToken.safeTransfer(_user, _amount);
        }
        user.rewardDebt = user.amount.mul(pool.accHgtPerShare).div(1e12);
        emit Withdraw(_user, _pid, _amount);
    }

    // Withdraw without caring about rewards. EMERGENCY ONLY.
    function emergencyWithdraw(uint256 _pid) public notPause {
        emergencyWithdrawHgt(_pid, msg.sender);
    }

    function emergencyWithdrawHgt(uint256 _pid, address _user) private {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        uint256 amount = user.amount;
        user.amount = 0;
        user.rewardDebt = 0;
        pool.totalAmount = pool.totalAmount.sub(amount);
        pool.lpToken.safeTransfer(_user, amount);
        emit EmergencyWithdraw(_user, _pid, amount);
    }

    // Safe HGT transfer function, just in case if rounding error causes pool to not have enough HGTs.
    function safeHgtTransfer(address _to, uint256 _amount) internal {
        uint256 hgtBal = hgt.balanceOf(address(this));
        if (_amount > hgtBal) {
            hgt.transfer(_to, hgtBal);
        } else {
            hgt.transfer(_to, _amount);
        }
    }

    modifier notPause() {
        require(paused == false, "Mining has been suspended");
        _;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IHgt","name":"_hgt","type":"address"}],"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":"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":"address","name":"","type":"address"}],"name":"LpOfPid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"},{"internalType":"uint16","name":"round","type":"uint16"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"depositHgt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastRewardBlock","type":"uint256"}],"name":"getHgtBlockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNearestRoundInfo","outputs":[{"components":[{"internalType":"uint16","name":"round","type":"uint16"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"mineBlockSupply","type":"uint256"}],"internalType":"struct HGTMiner.MintRound","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"getRoundInfoByBlock","outputs":[{"components":[{"internalType":"uint16","name":"round","type":"uint16"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"mineBlockSupply","type":"uint256"}],"internalType":"struct HGTMiner.MintRound","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hgt","outputs":[{"internalType":"contract IHgt","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isInBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mintRounds","outputs":[{"internalType":"uint16","name":"round","type":"uint16"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"mineBlockSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pending","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"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":"accHgtPerShare","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint16","name":"round","type":"uint16"}],"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":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"setBatchBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPerBlock","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"uint256","name":"_endBlock","type":"uint256"}],"name":"setMintRoundInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPause","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":"address[]","name":"_users","type":"address[]"}],"name":"unsetBatchBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"unsetBlackList","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"}]

60806040526000600560006101000a81548160ff02191690831515021790555060006006553480156200003157600080fd5b50604051620042cd380380620042cd83398181016040528101906200005791906200016e565b6000620000696200014f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001fc565b600033905090565b6000815190506200016881620001e2565b92915050565b6000602082840312156200018157600080fd5b6000620001918482850162000157565b91505092915050565b6000620001a782620001c2565b9050919050565b6000620001bb826200019a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620001ed81620001ae565b8114620001f957600080fd5b50565b6140c1806200020c6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806364482f791161010457806397c94202116100a2578063d431b1ac11610071578063d431b1ac14610534578063e2bbb1581461053e578063e4c75c271461055a578063f2fde38b1461058b576101da565b806397c9420214610498578063a4b52ef2146104b6578063b0c7044b146104d4578063c1ad48b014610504576101da565b806372700241116100de578063727002411461041157806379da7e591461042d5780638da5cb5b1461044957806393f1a40b14610467576101da565b806364482f79146103bb57806370b2973e146103d7578063715018a614610407576101da565b8063441a3e701161017c578063585b908e1161014b578063585b908e146103475780635c81ef52146103635780635c975abb14610393578063630b5ba1146103b1576101da565b8063441a3e70146102d757806347a55b7c146102f357806351eb05a61461030f5780635312ea8e1461032b576101da565b806317e8e0b5116101b857806317e8e0b5146102505780631974498c1461026c578063209fd6bf14610288578063345e95c0146102bb576101da565b8063081e3eda146101df5780631526fe27146101fd57806317caf6f114610232575b600080fd5b6101e76105a7565b6040516101f49190613e4f565b60405180910390f35b610217600480360381019061021291906130b5565b6105b4565b60405161022996959493929190613ab1565b60405180910390f35b61023a61062e565b6040516102479190613e4f565b60405180910390f35b61026a6004803603810190610265919061304b565b610634565b005b61028660048036038101906102819190613280565b6106e9565b005b6102a2600480360381019061029d91906130b5565b61096c565b6040516102b29493929190613e0a565b60405180910390f35b6102d560048036038101906102d091906131e2565b6109ba565b005b6102f160048036038101906102ec91906131a6565b610c83565b005b61030d60048036038101906103089190613143565b610ce8565b005b610329600480360381019061032491906130b5565b61109f565b005b610345600480360381019061034091906130b5565b611349565b005b610361600480360381019061035c919061304b565b6113ac565b005b61037d600480360381019061037891906130b5565b611461565b60405161038a9190613def565b60405180910390f35b61039b61159f565b6040516103a89190613a96565b60405180910390f35b6103b96115b2565b005b6103d560048036038101906103d09190613231565b6115df565b005b6103f160048036038101906103ec9190613022565b6116dd565b6040516103fe9190613a96565b60405180910390f35b61040f6117af565b005b61042b60048036038101906104269190613022565b6118e9565b005b61044760048036038101906104429190613022565b611a4d565b005b610451611bff565b60405161045e9190613a1b565b60405180910390f35b610481600480360381019061047c9190613107565b611c28565b60405161048f929190613e6a565b60405180910390f35b6104a0611c59565b6040516104ad9190613def565b60405180910390f35b6104be611d93565b6040516104cb9190613b12565b60405180910390f35b6104ee60048036038101906104e99190613022565b611db9565b6040516104fb9190613e4f565b60405180910390f35b61051e600480360381019061051991906130b5565b611dd1565b60405161052b9190613e4f565b60405180910390f35b61053c611e4b565b005b610558600480360381019061055391906131a6565b611ef3565b005b610574600480360381019061056f9190613107565b611f58565b604051610582929190613e6a565b60405180910390f35b6105a560048036038101906105a09190613022565b611f78565b005b6000600280549050905090565b600281815481106105c457600080fd5b90600052602060002090600602016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050160009054906101000a900461ffff16905086565b60065481565b61063c612121565b73ffffffffffffffffffffffffffffffffffffffff1661065a611bff565b73ffffffffffffffffffffffffffffffffffffffff16146106b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a790613d0f565b60405180910390fd5b60005b81518110156106e5576106d88282815181106106cb57fe5b6020026020010151611a4d565b80806001019150506106b3565b5050565b6106f1612121565b73ffffffffffffffffffffffffffffffffffffffff1661070f611bff565b73ffffffffffffffffffffffffffffffffffffffff1614610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075c90613d0f565b60405180910390fd5b814310801561077357508043105b6107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a990613c4f565b60405180910390fd5b8181116107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90613caf565b60405180910390fd5b6107fc6115b2565b6000600880549050905060008161ffff1611156108d05761081b612ee0565b60086001830361ffff168154811061082f57fe5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900461ffff1661ffff1661ffff16815260200160018201548152602001600282015481526020016003820154815250509050838160400151106108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c590613d2f565b60405180910390fd5b505b600860405180608001604052806001840161ffff16815260200185815260200184815260200186815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548161ffff021916908361ffff160217905550602082015181600101556040820151816002015560608201518160030155505050505050565b6008818154811061097c57600080fd5b90600052602060002090600402016000915090508060000160009054906101000a900461ffff16908060010154908060020154908060030154905084565b60001515600560009054906101000a900460ff16151514610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0790613b6f565b60405180910390fd5b600060028481548110610a1f57fe5b9060005260206000209060060201905060006003600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610a8b612ee0565b610a9443611461565b90506000816000015161ffff1611610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890613b4f565b60405180910390fd5b610aea8661109f565b600082600001541115610b59576000610b418360010154610b3364e8d4a51000610b258860030154886000015461212990919063ffffffff16565b61219990919063ffffffff16565b6121ef90919063ffffffff16565b90506000811115610b5757610b56858261223f565b5b505b6000851115610bf257610bb38430878660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612461909392919063ffffffff16565b610bca8583600001546124ea90919063ffffffff16565b8260000181905550610be98584600401546124ea90919063ffffffff16565b83600401819055505b610c2464e8d4a51000610c168560030154856000015461212990919063ffffffff16565b61219990919063ffffffff16565b8260010181905550858473ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1587604051610c739190613e4f565b60405180910390a3505050505050565b60001515600560009054906101000a900460ff16151514610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090613b6f565b60405180910390fd5b610ce482823361253f565b5050565b610cf0612121565b73ffffffffffffffffffffffffffffffffffffffff16610d0e611bff565b73ffffffffffffffffffffffffffffffffffffffff1614610d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5b90613d0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613daf565b60405180910390fd5b6000600880549050905060008111610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890613c8f565b60405180910390fd5b610e29612ee0565b60008361ffff161415610e4857610e3e611c59565b9050806000015192505b60086001840361ffff1681548110610e5c57fe5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016001820154815260200160028201548152602001600382015481525050905080604001514310610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef290613c6f565b60405180910390fd5b8315610f0a57610f096115b2565b5b600081602001514311610f21578160200151610f23565b435b9050610f3a876006546124ea90919063ffffffff16565b60068190555060026040518060c001604052808873ffffffffffffffffffffffffffffffffffffffff16815260200189815260200183815260200160008152602001600081526020018661ffff16815250908060018154018082558091505060019003906000526020600020906006020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548161ffff021916908361ffff160217905550505060016110526105a7565b03600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b6000600282815481106110ae57fe5b90600052602060002090600602019050806002015443116110cf5750611346565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161112e9190613a1b565b60206040518083038186803b15801561114657600080fd5b505afa15801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e91906130de565b90506000811415611199574382600201819055505050611346565b60006111a88360020154611dd1565b9050600081116111ba57505050611346565b60006111e76006546111d986600101548561212990919063ffffffff16565b61219990919063ffffffff16565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378ae443330846040518363ffffffff1660e01b8152600401611248929190613a6d565b602060405180830381600087803b15801561126257600080fd5b505af1158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a919061308c565b905080156112eb576112e26112cf856112c164e8d4a510008661212990919063ffffffff16565b61219990919063ffffffff16565b86600301546124ea90919063ffffffff16565b85600301819055505b6112f3612ee0565b6113008660020154611461565b90506000816000015161ffff1611801561131e575080604001514310155b15611335578060400151866002018190555061133f565b4386600201819055505b5050505050505b50565b60001515600560009054906101000a900460ff1615151461139f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139690613b6f565b60405180910390fd5b6113a98133612817565b50565b6113b4612121565b73ffffffffffffffffffffffffffffffffffffffff166113d2611bff565b73ffffffffffffffffffffffffffffffffffffffff1614611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141f90613d0f565b60405180910390fd5b60005b815181101561145d5761145082828151811061144357fe5b60200260200101516118e9565b808060010191505061142b565b5050565b611469612ee0565b60006008805490509050600081116114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad90613c8f565b60405180910390fd5b6114be612ee0565b60005b828161ffff16101561156b5760088161ffff16815481106114de57fe5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900461ffff1661ffff1661ffff168152602001600182015481526020016002820154815260200160038201548152505091508482602001511115801561154e5750848260400151115b1561155e5781935050505061159a565b80806001019150506114c1565b506040518060800160405280600061ffff16815260200160008152602001600081526020016000815250925050505b919050565b600560009054906101000a900460ff1681565b6000600280549050905060005b818110156115db576115d08161109f565b8060010190506115bf565b5050565b6115e7612121565b73ffffffffffffffffffffffffffffffffffffffff16611605611bff565b73ffffffffffffffffffffffffffffffffffffffff161461165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165290613d0f565b60405180910390fd5b801561166a576116696115b2565b5b6116af826116a16002868154811061167e57fe5b9060005260206000209060060201600101546006546121ef90919063ffffffff16565b6124ea90919063ffffffff16565b60068190555081600284815481106116c357fe5b906000526020600020906006020160010181905550505050565b60006116e7612121565b73ffffffffffffffffffffffffffffffffffffffff16611705611bff565b73ffffffffffffffffffffffffffffffffffffffff161461175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613d0f565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117b7612121565b73ffffffffffffffffffffffffffffffffffffffff166117d5611bff565b73ffffffffffffffffffffffffffffffffffffffff161461182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613d0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6118f1612121565b73ffffffffffffffffffffffffffffffffffffffff1661190f611bff565b73ffffffffffffffffffffffffffffffffffffffff1614611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613d0f565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990613c0f565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611a55612121565b73ffffffffffffffffffffffffffffffffffffffff16611a73611bff565b73ffffffffffffffffffffffffffffffffffffffff1614611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac090613d0f565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c90613d8f565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b611c61612ee0565b6000600880549050905060008111611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca590613c8f565b60405180910390fd5b611cb6612ee0565b60005b828161ffff161015611d615760088161ffff1681548110611cd657fe5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900461ffff1661ffff1661ffff168152602001600182015481526020016002820154815260200160038201548152505091504382602001511180611d445750438260400151115b15611d5457819350505050611d90565b8080600101915050611cb9565b506040518060800160405280600061ffff16815260200160008152602001600081526020016000815250925050505b90565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b60008060009050611de0612ee0565b611de984611461565b90506000816000015161ffff161115611e4157600043905043826040015111611e1457816040015190505b611e3d8260600151611e2f87846121ef90919063ffffffff16565b61212990919063ffffffff16565b9250505b8192505050919050565b611e53612121565b73ffffffffffffffffffffffffffffffffffffffff16611e71611bff565b73ffffffffffffffffffffffffffffffffffffffff1614611ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebe90613d0f565b60405180910390fd5b600560009054906101000a900460ff1615600560006101000a81548160ff021916908315150217905550565b60001515600560009054906101000a900460ff16151514611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613b6f565b60405180910390fd5b611f548282336109ba565b5050565b6000806000611f67858561296b565b905080600092509250509250929050565b611f80612121565b73ffffffffffffffffffffffffffffffffffffffff16611f9e611bff565b73ffffffffffffffffffffffffffffffffffffffff1614611ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611feb90613d0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205b90613b8f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b60008083141561213c5760009050612193565b600082840290508284828161214d57fe5b041461218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590613cef565b60405180910390fd5b809150505b92915050565b60008082116121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d490613c2f565b60405180910390fd5b8183816121e657fe5b04905092915050565b600082821115612234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222b90613bcf565b60405180910390fd5b818303905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161229c9190613a1b565b60206040518083038186803b1580156122b457600080fd5b505afa1580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec91906130de565b9050808211156123ab57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401612353929190613a6d565b602060405180830381600087803b15801561236d57600080fd5b505af1158015612381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a5919061308c565b5061245c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401612408929190613a6d565b602060405180830381600087803b15801561242257600080fd5b505af1158015612436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245a919061308c565b505b505050565b6124e4846323b872dd60e01b85858560405160240161248293929190613a36565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bec565b50505050565b600080828401905083811015612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252c90613baf565b60405180910390fd5b8091505092915050565b60006002848154811061254e57fe5b9060005260206000209060060201905060006003600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905083816000015410156125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f090613ccf565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d90613dcf565b60405180910390fd5b61268f8561109f565b60006126d982600101546126cb64e8d4a510006126bd8760030154876000015461212990919063ffffffff16565b61219990919063ffffffff16565b6121ef90919063ffffffff16565b905060008111156126ef576126ee848261223f565b5b60008511156127865761270f8583600001546121ef90919063ffffffff16565b826000018190555061272e8584600401546121ef90919063ffffffff16565b836004018190555061278584868560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cb39092919063ffffffff16565b5b6127b864e8d4a510006127aa8560030154856000015461212990919063ffffffff16565b61219990919063ffffffff16565b8260010181905550858473ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568876040516128079190613e4f565b60405180910390a3505050505050565b60006002838154811061282657fe5b9060005260206000209060060201905060006003600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154905060008260000181905550600082600101819055506128be8184600401546121ef90919063ffffffff16565b836004018190555061291584828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cb39092919063ffffffff16565b848473ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05958360405161295c9190613e4f565b60405180910390a35050505050565b6000806002848154811061297b57fe5b9060005260206000209060060201905060006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a479190613a1b565b60206040518083038186803b158015612a5f57600080fd5b505afa158015612a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9791906130de565b9050600083600001541115612bdd578360020154431115612b81576000612ac18560020154611dd1565b90506000612af0600654612ae288600101548561212990919063ffffffff16565b61219990919063ffffffff16565b9050612b2e612b1f84612b1164e8d4a510008561212990919063ffffffff16565b61219990919063ffffffff16565b856124ea90919063ffffffff16565b9350612b748560010154612b6664e8d4a51000612b58888a6000015461212990919063ffffffff16565b61219990919063ffffffff16565b6121ef90919063ffffffff16565b9650505050505050612be6565b8360020154431415612bdc57612bd18360010154612bc364e8d4a51000612bb586886000015461212990919063ffffffff16565b61219990919063ffffffff16565b6121ef90919063ffffffff16565b945050505050612be6565b5b60009450505050505b92915050565b6060612c4e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612d399092919063ffffffff16565b9050600081511115612cae5780806020019051810190612c6e919061308c565b612cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca490613d6f565b60405180910390fd5b5b505050565b612d348363a9059cbb60e01b8484604051602401612cd2929190613a6d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bec565b505050565b6060612d488484600085612d51565b90509392505050565b606082471015612d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8d90613bef565b60405180910390fd5b612d9f85612e66565b612dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd590613d4f565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051612e089190613a04565b60006040518083038185875af1925050503d8060008114612e45576040519150601f19603f3d011682016040523d82523d6000602084013e612e4a565b606091505b5091509150612e5a828286612e79565b92505050949350505050565b600080823b905060008111915050919050565b60608315612e8957829050612ed9565b600083511115612e9c5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed09190613b2d565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff1681526020016000815260200160008152602001600081525090565b600081359050612f1b81614018565b92915050565b600082601f830112612f3257600080fd5b8135612f45612f4082613ec4565b613e93565b91508181835260208401935060208101905083856020840282011115612f6a57600080fd5b60005b83811015612f9a5781612f808882612f0c565b845260208401935060208301925050600181019050612f6d565b5050505092915050565b600081359050612fb38161402f565b92915050565b600081519050612fc88161402f565b92915050565b600081359050612fdd81614046565b92915050565b600081359050612ff28161405d565b92915050565b60008135905061300781614074565b92915050565b60008151905061301c81614074565b92915050565b60006020828403121561303457600080fd5b600061304284828501612f0c565b91505092915050565b60006020828403121561305d57600080fd5b600082013567ffffffffffffffff81111561307757600080fd5b61308384828501612f21565b91505092915050565b60006020828403121561309e57600080fd5b60006130ac84828501612fb9565b91505092915050565b6000602082840312156130c757600080fd5b60006130d584828501612ff8565b91505092915050565b6000602082840312156130f057600080fd5b60006130fe8482850161300d565b91505092915050565b6000806040838503121561311a57600080fd5b600061312885828601612ff8565b925050602061313985828601612f0c565b9150509250929050565b6000806000806080858703121561315957600080fd5b600061316787828801612ff8565b945050602061317887828801612fce565b935050604061318987828801612fa4565b925050606061319a87828801612fe3565b91505092959194509250565b600080604083850312156131b957600080fd5b60006131c785828601612ff8565b92505060206131d885828601612ff8565b9150509250929050565b6000806000606084860312156131f757600080fd5b600061320586828701612ff8565b935050602061321686828701612ff8565b925050604061322786828701612f0c565b9150509250925092565b60008060006060848603121561324657600080fd5b600061325486828701612ff8565b935050602061326586828701612ff8565b925050604061327686828701612fa4565b9150509250925092565b60008060006060848603121561329557600080fd5b60006132a386828701612ff8565b93505060206132b486828701612ff8565b92505060406132c586828701612ff8565b9150509250925092565b6132d881613f22565b82525050565b6132e781613f34565b82525050565b60006132f882613ef0565b6133028185613f06565b9350613312818560208601613fd2565b80840191505092915050565b61332781613f8a565b82525050565b61333681613fae565b82525050565b600061334782613efb565b6133518185613f11565b9350613361818560208601613fd2565b61336a81614007565b840191505092915050565b6000613382601183613f11565b91507f4e6f74206d696e652074696d65206e6f770000000000000000000000000000006000830152602082019050919050565b60006133c2601983613f11565b91507f4d696e696e6720686173206265656e2073757370656e646564000000000000006000830152602082019050919050565b6000613402602683613f11565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613468601b83613f11565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006134a8601e83613f11565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b60006134e8602683613f11565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061354e601583613f11565b91507f646f206e6f74206e65656420746f2062652062616e00000000000000000000006000830152602082019050919050565b600061358e601a83613f11565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b60006135ce601383613f11565b91507f54696d65206d75737420626520667574757265000000000000000000000000006000830152602082019050919050565b600061360e601283613f11565b91507f696e76616c6964206d696e6520726f756e6400000000000000000000000000006000830152602082019050919050565b600061364e600e83613f11565b91507f6e6f206d696e7420726f756e64730000000000000000000000000000000000006000830152602082019050919050565b600061368e602583613f11565b91507f456e64426c6f636b206d7573742067726561746572207468617420737461727460008301527f426c6f636b0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006136f4601583613f11565b91507f77697468647261774867743a206e6f7420676f6f6400000000000000000000006000830152602082019050919050565b6000613734602183613f11565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061379a602083613f11565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006137da601783613f11565b91507f4f6e65204d696e65526f756e6420617420612074696d650000000000000000006000830152602082019050919050565b600061381a601d83613f11565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b600061385a602a83613f11565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b60006138c0600f83613f11565b91507f75736572206e6f742065786973747300000000000000000000000000000000006000830152602082019050919050565b6000613900601c83613f11565b91507f5f6c70546f6b656e20697320746865207a65726f2061646472657373000000006000830152602082019050919050565b6000613940600e83613f11565b91507f796f75206172652062616e6e65640000000000000000000000000000000000006000830152602082019050919050565b60808201600082015161398960008501826139c8565b50602082015161399c60208501826139e6565b5060408201516139af60408501826139e6565b5060608201516139c260608501826139e6565b50505050565b6139d181613f52565b82525050565b6139e081613f52565b82525050565b6139ef81613f80565b82525050565b6139fe81613f80565b82525050565b6000613a1082846132ed565b915081905092915050565b6000602082019050613a3060008301846132cf565b92915050565b6000606082019050613a4b60008301866132cf565b613a5860208301856132cf565b613a6560408301846139f5565b949350505050565b6000604082019050613a8260008301856132cf565b613a8f60208301846139f5565b9392505050565b6000602082019050613aab60008301846132de565b92915050565b600060c082019050613ac6600083018961331e565b613ad360208301886139f5565b613ae060408301876139f5565b613aed60608301866139f5565b613afa60808301856139f5565b613b0760a08301846139d7565b979650505050505050565b6000602082019050613b27600083018461332d565b92915050565b60006020820190508181036000830152613b47818461333c565b905092915050565b60006020820190508181036000830152613b6881613375565b9050919050565b60006020820190508181036000830152613b88816133b5565b9050919050565b60006020820190508181036000830152613ba8816133f5565b9050919050565b60006020820190508181036000830152613bc88161345b565b9050919050565b60006020820190508181036000830152613be88161349b565b9050919050565b60006020820190508181036000830152613c08816134db565b9050919050565b60006020820190508181036000830152613c2881613541565b9050919050565b60006020820190508181036000830152613c4881613581565b9050919050565b60006020820190508181036000830152613c68816135c1565b9050919050565b60006020820190508181036000830152613c8881613601565b9050919050565b60006020820190508181036000830152613ca881613641565b9050919050565b60006020820190508181036000830152613cc881613681565b9050919050565b60006020820190508181036000830152613ce8816136e7565b9050919050565b60006020820190508181036000830152613d0881613727565b9050919050565b60006020820190508181036000830152613d288161378d565b9050919050565b60006020820190508181036000830152613d48816137cd565b9050919050565b60006020820190508181036000830152613d688161380d565b9050919050565b60006020820190508181036000830152613d888161384d565b9050919050565b60006020820190508181036000830152613da8816138b3565b9050919050565b60006020820190508181036000830152613dc8816138f3565b9050919050565b60006020820190508181036000830152613de881613933565b9050919050565b6000608082019050613e046000830184613973565b92915050565b6000608082019050613e1f60008301876139d7565b613e2c60208301866139f5565b613e3960408301856139f5565b613e4660608301846139f5565b95945050505050565b6000602082019050613e6460008301846139f5565b92915050565b6000604082019050613e7f60008301856139f5565b613e8c60208301846139f5565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715613eba57613eb9614005565b5b8060405250919050565b600067ffffffffffffffff821115613edf57613ede614005565b5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000613f2d82613f60565b9050919050565b60008115159050919050565b6000613f4b82613f22565b9050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613f9582613f9c565b9050919050565b6000613fa782613f60565b9050919050565b6000613fb982613fc0565b9050919050565b6000613fcb82613f60565b9050919050565b60005b83811015613ff0578082015181840152602081019050613fd5565b83811115613fff576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b61402181613f22565b811461402c57600080fd5b50565b61403881613f34565b811461404357600080fd5b50565b61404f81613f40565b811461405a57600080fd5b50565b61406681613f52565b811461407157600080fd5b50565b61407d81613f80565b811461408857600080fd5b5056fea2646970667358221220dbe7ace562d693160df8ed2a2af7951ff77bd0c5bd007a431d503d95503d836664736f6c63430007040033000000000000000000000000fd6ce15009d46c6327649218431e8643f82f6d64

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

000000000000000000000000fd6ce15009d46c6327649218431e8643f82f6d64

-----Decoded View---------------
Arg [0] : _hgt (address): 0xfd6ce15009d46c6327649218431e8643f82f6d64

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fd6ce15009d46c6327649218431e8643f82f6d64


Deployed ByteCode Sourcemap

25688:13191:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29586:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26563:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;26943:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35229:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27612:751;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27191:29;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;35736:965;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36751:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29932:1117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32349:1111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37821:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34840:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28970:608;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26822:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32093:180;;;:::i;:::-;;31144:304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35430:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24836:148;;;:::i;:::-;;34677:157;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35036:187;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24185:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26645:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;28371:592;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26514:15;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26750:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31458:552;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29688:72;;;:::i;:::-;;35608:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33523:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;25139:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29586:93;29629:7;29656:8;:15;;;;29649:22;;29586:93;:::o;26563:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26943:34::-;;;;:::o;35229:193::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35310:9:::1;35333:82;35344:6;:13;35342:1;:15;35333:82;;;35378:25;35393:6;35400:1;35393:9;;;;;;;;;;;;;;35378:14;:25::i;:::-;35359:3;;;;;;;35333:82;;;24476:1;35229:193:::0;:::o;27612:751::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27751:11:::1;27736:12;:26;:54;;;;;27781:9;27766:12;:24;27736:54;27728:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;27845:11;27833:9;:23;27825:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27911:17;:15;:17::i;:::-;27939:10;27959;:17;;;;27939:38;;27997:1;27991:3;:7;;;27988:173;;;28014:26;;:::i;:::-;28043:10;28060:1;28054:3;:7;28043:19;;;;;;;;;;;;;;;;;;;;28014:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;28106:11;28085:9;:18;;;:32;28077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27988:173;;28171:10;28187:167;;;;;;;;28225:1;28219:3;:7;28187:167;;;;;;28253:11;28187:167;;;;28289:9;28187:167;;;;28330:12;28187:167;;::::0;28171:184:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24476:1;27612:751:::0;;;:::o;27191:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35736:965::-;38821:5;38811:15;;:6;;;;;;;;;;;:15;;;38803:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;35829:21:::1;35853:8;35862:4;35853:14;;;;;;;;;;;;;;;;;;35829:38;;35878:21;35902:8;:14;35911:4;35902:14;;;;;;;;;;;:21;35917:5;35902:21;;;;;;;;;;;;;;;35878:45;;35936:26;;:::i;:::-;35965:33;35985:12;35965:19;:33::i;:::-;35936:62;;36035:1;36017:9;:15;;;:19;;;36009:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;36069:16;36080:4;36069:10;:16::i;:::-;36114:1;36100:4;:11;;;:15;36096:248;;;36132:21;36156:67;36207:4;:15;;;36156:46;36197:4;36156:36;36172:4;:19;;;36156:4;:11;;;:15;;:36;;;;:::i;:::-;:40;;:46;;;;:::i;:::-;:50;;:67;;;;:::i;:::-;36132:91;;36258:1;36242:13;:17;36238:95;;;36280:37;36296:5;36303:13;36280:15;:37::i;:::-;36238:95;36096:248;;36368:1;36358:7;:11;36354:220;;;36386:60;36416:5;36431:4;36438:7;36386:4;:12;;;;;;;;;;;;:29;;;;:60;;;;;;:::i;:::-;36475:24;36491:7;36475:4;:11;;;:15;;:24;;;;:::i;:::-;36461:4;:11;;:38;;;;36533:29;36554:7;36533:4;:16;;;:20;;:29;;;;:::i;:::-;36514:4;:16;;:48;;;;36354:220;36602:46;36643:4;36602:36;36618:4;:19;;;36602:4;:11;;;:15;;:36;;;;:::i;:::-;:40;;:46;;;;:::i;:::-;36584:4;:15;;:64;;;;36679:4;36672:5;36664:29;;;36685:7;36664:29;;;;;;:::i;:::-;;;;;;;;38867:1;;;35736:965:::0;;;:::o;36751:122::-;38821:5;38811:15;;:6;;;;;;;;;;;:15;;;38803:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;36827:38:::1;36839:4;36845:7;36854:10;36827:11;:38::i;:::-;36751:122:::0;;:::o;29932:1117::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30086:1:::1;30057:31;;30065:8;30057:31;;;;30049:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;30132:11;30146:10;:17;;;;30132:31;;30188:1;30182:3;:7;30174:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;30221:26;;:::i;:::-;30270:1;30261:5;:10;;;30258:112;;;30299:21;:19;:21::i;:::-;30287:33;;30343:9;:15;;;30335:23;;30258:112;30392:10;30409:1;30403:5;:7;30392:19;;;;;;;;;;;;;;;;;;;;30380:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;30445:9;:18;;;30430:12;:33;30422:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30501:11;30497:61;;;30529:17;:15;:17::i;:::-;30497:61;30568:23;30609:9;:20;;;30594:12;:35;:73;;30647:9;:20;;;30594:73;;;30632:12;30594:73;30568:99;;30696:32;30716:11;30696:15;;:19;;:32;;;;:::i;:::-;30678:15;:50;;;;30739:8;30753:231;;;;;;;;30787:8;30753:231;;;;;;30823:11;30753:231;;;;30867:15;30753:231;;;;30914:1;30753:231;;;;30944:1;30753:231;;;;30967:5;30753:231;;;;::::0;30739:246:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31040:1;31025:12;:10;:12::i;:::-;:16;30996:7;:26;31012:8;30996:26;;;;;;;;;;;;;;;:45;;;;24476:1;;;29932:1117:::0;;;;:::o;32349:1111::-;32401:21;32425:8;32434:4;32425:14;;;;;;;;;;;;;;;;;;32401:38;;32470:4;:20;;;32454:12;:36;32450:75;;32507:7;;;32450:75;32535:16;32583:4;:12;;;;;;;;;;;;:22;;;32614:4;32583:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32572:48;;32647:1;32635:8;:13;32631:102;;;32688:12;32665:4;:20;;:35;;;;32715:7;;;;32631:102;32753:19;32775:39;32793:4;:20;;;32775:17;:39::i;:::-;32753:61;;32844:1;32829:11;:16;32825:55;;32862:7;;;;;32825:55;32890:17;32910:53;32947:15;;32910:32;32926:4;:15;;;32910:11;:15;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;32890:73;;32974:11;32988:3;;;;;;;;;;;:12;;;33009:4;33016:9;32988:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32974:52;;33041:6;33037:119;;;33086:58;33110:33;33134:8;33110:19;33124:4;33110:9;:13;;:19;;;;:::i;:::-;:23;;:33;;;;:::i;:::-;33086:4;:19;;;:23;;:58;;;;:::i;:::-;33064:4;:19;;:80;;;;33037:119;33166:26;;:::i;:::-;33195:41;33215:4;:20;;;33195:19;:41::i;:::-;33166:70;;33268:1;33250:9;:15;;;:19;;;:57;;;;;33289:9;:18;;;33273:12;:34;;33250:57;33247:206;;;33346:9;:18;;;33323:4;:20;;:41;;;;33247:206;;;33429:12;33406:4;:20;;:35;;;;33247:206;32349:1111;;;;;;;;:::o;37821:114::-;38821:5;38811:15;;:6;;;;;;;;;;;:15;;;38803:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;37889:38:::1;37910:4;37916:10;37889:20;:38::i;:::-;37821:114:::0;:::o;34840:190::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34919:9:::1;34943:80;34954:6;:13;34952:1;:15;34943:80;;;34988:23;35001:6;35008:1;35001:9;;;;;;;;;;;;;;34988:12;:23::i;:::-;34969:3;;;;;;;34943:80;;;24476:1;34840:190:::0;:::o;28970:608::-;29042:16;;:::i;:::-;29070:11;29084:10;:17;;;;29070:31;;29126:1;29120:3;:7;29112:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;29157:26;;:::i;:::-;29200:8;29196:222;29214:3;29212:1;:5;;;29196:222;;;29250:10;29261:1;29250:13;;;;;;;;;;;;;;;;;;;;29238:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29305:12;29281:9;:20;;;:36;;:74;;;;;29343:12;29322:9;:18;;;:33;29281:74;29278:129;;;29382:9;29375:16;;;;;;;29278:129;29219:3;;;;;;;29196:222;;;;29435:132;;;;;;;;29467:1;29435:132;;;;;;29495:1;29435:132;;;;29521:1;29435:132;;;;29554:1;29435:132;;;29428:139;;;;28970:608;;;;:::o;26822:26::-;;;;;;;;;;;;;:::o;32093:180::-;32138:14;32155:8;:15;;;;32138:32;;32186:11;32181:85;32209:6;32203:3;:12;32181:85;;;32239:15;32250:3;32239:10;:15::i;:::-;32217:5;;;;;32181:85;;;;32093:180;:::o;31144:304::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31242:11:::1;31238:61;;;31270:17;:15;:17::i;:::-;31238:61;31327:63;31378:11;31327:46;31347:8;31356:4;31347:14;;;;;;;;;;;;;;;;;;:25;;;31327:15;;:19;;:46;;;;:::i;:::-;:50;;:63;;;;:::i;:::-;31309:15;:81;;;;31429:11;31401:8;31410:4;31401:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;31144:304:::0;;;:::o;35430:114::-;35498:4;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35521:9:::1;:15;35531:4;35521:15;;;;;;;;;;;;;;;;;;;;;;;;;35514:22;;35430:114:::0;;;:::o;24836:148::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24943:1:::1;24906:40;;24927:6;::::0;::::1;;;;;;;;24906:40;;;;;;;;;;;;24974:1;24957:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;24836:148::o:0;34677:157::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34750:9:::1;:16;34760:5;34750:16;;;;;;;;;;;;;;;;;;;;;;;;;34749:17;34741:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;34822:4;34803:9;:16;34813:5;34803:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;34677:157:::0;:::o;35036:187::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35110:9:::1;:16;35120:5;35110:16;;;;;;;;;;;;;;;;;;;;;;;;;35102:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;35176:5;35157:9;:16;35167:5;35157:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;35199:9;:16;35209:5;35199:16;;;;;;;;;;;;;;;;35192:23;;;;;;;;;;;35036:187:::0;:::o;24185:87::-;24231:7;24258:6;;;;;;;;;;;24251:13;;24185:87;:::o;26645:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28371:592::-;28423:16;;:::i;:::-;28452:11;28466:10;:17;;;;28452:31;;28508:1;28502:3;:7;28494:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;28541:26;;:::i;:::-;28582:8;28578:220;28596:3;28594:1;:5;;;28578:220;;;28632:10;28643:1;28632:13;;;;;;;;;;;;;;;;;;;;28620:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28686:12;28663:9;:20;;;:35;:72;;;;28723:12;28702:9;:18;;;:33;28663:72;28660:127;;;28762:9;28755:16;;;;;;;28660:127;28601:3;;;;;;;28578:220;;;;28815:132;;;;;;;;28847:1;28815:132;;;;;;28875:1;28815:132;;;;28901:1;28815:132;;;;28934:1;28815:132;;;28808:139;;;;28371:592;;:::o;26514:15::-;;;;;;;;;;;;;:::o;26750:42::-;;;;;;;;;;;;;;;;;:::o;31458:552::-;31532:7;31552:19;31574:1;31552:23;;31586:26;;:::i;:::-;31615:37;31635:16;31615:19;:37::i;:::-;31586:66;;31692:1;31676:9;:15;;;:17;;;31673:301;;;31709:16;31728:12;31709:31;;31780:12;31758:9;:18;;;:34;31755:116;;31837:9;:18;;;31826:29;;31755:116;31899:63;31936:9;:25;;;31900:30;31913:16;31900:8;:12;;:30;;;;:::i;:::-;31899:36;;:63;;;;:::i;:::-;31885:77;;31673:301;;31991:11;31984:18;;;;31458:552;;;:::o;29688:72::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29746:6:::1;;;;;;;;;;;29745:7;29736:6;;:16;;;;;;;;;;;;;;;;;;29688:72::o:0;35608:120::-;38821:5;38811:15;;:6;;;;;;;;;;;:15;;;38803:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;35683:37:::1;35694:4;35700:7;35709:10;35683;:37::i;:::-;35608:120:::0;;:::o;33523:180::-;33592:7;33601;33620:17;33640:23;33651:4;33657:5;33640:10;:23::i;:::-;33620:43;;33682:9;33693:1;33674:21;;;;;33523:180;;;;;:::o;25139:244::-;24416:12;:10;:12::i;:::-;24405:23;;:7;:5;:7::i;:::-;:23;;;24397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25248:1:::1;25228:22;;:8;:22;;;;25220:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25338:8;25309:38;;25330:6;::::0;::::1;;;;;;;;25309:38;;;;;;;;;;;;25367:8;25358:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;25139:244:::0;:::o;22726:106::-;22779:15;22814:10;22807:17;;22726:106;:::o;3707:220::-;3765:7;3794:1;3789;:6;3785:20;;;3804:1;3797:8;;;;3785:20;3816:9;3832:1;3828;:5;3816:17;;3861:1;3856;3852;:5;;;;;;:10;3844:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3918:1;3911:8;;;3707:220;;;;;:::o;4405:153::-;4463:7;4495:1;4491;:5;4483:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;4549:1;4545;:5;;;;;;4538:12;;4405:153;;;;:::o;3290:158::-;3348:7;3381:1;3376;:6;;3368:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;3439:1;3435;:5;3428:12;;3290:158;;;;:::o;38493:271::-;38568:14;38585:3;;;;;;;;;;;:13;;;38607:4;38585:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38568:45;;38638:6;38628:7;:16;38624:133;;;38661:3;;;;;;;;;;;:12;;;38674:3;38679:6;38661:25;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38624:133;;;38719:3;;;;;;;;;;;:12;;;38732:3;38737:7;38719:26;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38624:133;38493:271;;;:::o;19199:205::-;19300:96;19320:5;19350:27;;;19379:4;19385:2;19389:5;19327:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19300:19;:96::i;:::-;19199:205;;;;:::o;2828:179::-;2886:7;2906:9;2922:1;2918;:5;2906:17;;2947:1;2942;:6;;2934:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2998:1;2991:8;;;2828:179;;;;:::o;36882:868::-;36968:21;36992:8;37001:4;36992:14;;;;;;;;;;;;;;;;;;36968:38;;37017:21;37041:8;:14;37050:4;37041:14;;;;;;;;;;;:21;37056:5;37041:21;;;;;;;;;;;;;;;37017:45;;37096:7;37081:4;:11;;;:22;;37073:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;37149:9;:16;37159:5;37149:16;;;;;;;;;;;;;;;;;;;;;;;;;37148:17;37140:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;37195:16;37206:4;37195:10;:16::i;:::-;37222:21;37246:67;37297:4;:15;;;37246:46;37287:4;37246:36;37262:4;:19;;;37246:4;:11;;;:15;;:36;;;;:::i;:::-;:40;;:46;;;;:::i;:::-;:50;;:67;;;;:::i;:::-;37222:91;;37344:1;37328:13;:17;37324:87;;;37362:37;37378:5;37385:13;37362:15;:37::i;:::-;37324:87;37435:1;37425:7;:11;37421:201;;;37467:24;37483:7;37467:4;:11;;;:15;;:24;;;;:::i;:::-;37453:4;:11;;:38;;;;37525:29;37546:7;37525:4;:16;;;:20;;:29;;;;:::i;:::-;37506:4;:16;;:48;;;;37569:41;37595:5;37602:7;37569:4;:12;;;;;;;;;;;;:25;;;;:41;;;;;:::i;:::-;37421:201;37650:46;37691:4;37650:36;37666:4;:19;;;37650:4;:11;;;:15;;:36;;;;:::i;:::-;:40;;:46;;;;:::i;:::-;37632:4;:15;;:64;;;;37728:4;37721:5;37712:30;;;37734:7;37712:30;;;;;;:::i;:::-;;;;;;;;36882:868;;;;;;:::o;37943:438::-;38021:21;38045:8;38054:4;38045:14;;;;;;;;;;;;;;;;;;38021:38;;38070:21;38094:8;:14;38103:4;38094:14;;;;;;;;;;;:21;38109:5;38094:21;;;;;;;;;;;;;;;38070:45;;38126:14;38143:4;:11;;;38126:28;;38179:1;38165:4;:11;;:15;;;;38209:1;38191:4;:15;;:19;;;;38240:28;38261:6;38240:4;:16;;;:20;;:28;;;;:::i;:::-;38221:4;:16;;:47;;;;38279:40;38305:5;38312:6;38279:4;:12;;;;;;;;;;;;:25;;;;:40;;;;;:::i;:::-;38360:4;38353:5;38335:38;;;38366:6;38335:38;;;;;;:::i;:::-;;;;;;;;37943:438;;;;;:::o;33713:956::-;33784:7;33803:21;33827:8;33836:4;33827:14;;;;;;;;;;;;;;;;;;33803:38;;33852:21;33876:8;:14;33885:4;33876:14;;;;;;;;;;;:21;33891:5;33876:21;;;;;;;;;;;;;;;33852:45;;33908:22;33933:4;:19;;;33908:44;;33963:16;33982:4;:12;;;;;;;;;;;;:22;;;34013:4;33982:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33963:56;;34048:1;34034:4;:11;;;:15;34030:613;;;34085:4;:20;;;34070:12;:35;34066:406;;;34126:19;34148:39;34166:4;:20;;;34148:17;:39::i;:::-;34126:61;;34206:17;34226:53;34263:15;;34226:32;34242:4;:15;;;34226:11;:15;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;34206:73;;34315:53;34334:33;34358:8;34334:19;34348:4;34334:9;:13;;:19;;;;:::i;:::-;:23;;:33;;;;:::i;:::-;34315:14;:18;;:53;;;;:::i;:::-;34298:70;;34394:62;34440:4;:15;;;34394:41;34430:4;34394:31;34410:14;34394:4;:11;;;:15;;:31;;;;:::i;:::-;:35;;:41;;;;:::i;:::-;:45;;:62;;;;:::i;:::-;34387:69;;;;;;;;;;34066:406;34506:4;:20;;;34490:12;:36;34486:146;;;34554:62;34600:4;:15;;;34554:41;34590:4;34554:31;34570:14;34554:4;:11;;;:15;;:31;;;;:::i;:::-;:35;;:41;;;;:::i;:::-;:45;;:62;;;;:::i;:::-;34547:69;;;;;;;;34486:146;34030:613;34660:1;34653:8;;;;;;33713:956;;;;;:::o;21319:761::-;21743:23;21769:69;21797:4;21769:69;;;;;;;;;;;;;;;;;21777:5;21769:27;;;;:69;;;;;:::i;:::-;21743:95;;21873:1;21853:10;:17;:21;21849:224;;;21995:10;21984:30;;;;;;;;;;;;:::i;:::-;21976:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21849:224;21319:761;;;:::o;19014:177::-;19097:86;19117:5;19147:23;;;19172:2;19176:5;19124:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19097:19;:86::i;:::-;19014:177;;;:::o;14004:195::-;14107:12;14139:52;14161:6;14169:4;14175:1;14178:12;14139:21;:52::i;:::-;14132:59;;14004:195;;;;;:::o;15056:530::-;15183:12;15241:5;15216:21;:30;;15208:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;15308:18;15319:6;15308:10;:18::i;:::-;15300:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15434:12;15448:23;15475:6;:11;;15495:5;15503:4;15475:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15433:75;;;;15526:52;15544:7;15553:10;15565:12;15526:17;:52::i;:::-;15519:59;;;;15056:530;;;;;;:::o;11086:422::-;11146:4;11354:12;11465:7;11453:20;11445:28;;11499:1;11492:4;:8;11485:15;;;11086:422;;;:::o;17596:742::-;17711:12;17740:7;17736:595;;;17771:10;17764:17;;;;17736:595;17905:1;17885:10;:17;:21;17881:439;;;18148:10;18142:17;18209:15;18196:10;18192:2;18188:19;18181:44;18096:148;18291:12;18284:20;;;;;;;;;;;:::i;:::-;;;;;;;;17596:742;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;169:761::-;;289:3;282:4;274:6;270:17;266:27;256:2;;307:1;304;297:12;256:2;347:6;334:20;372:80;387:64;444:6;387:64;:::i;:::-;372:80;:::i;:::-;363:89;;472:5;500:6;493:5;486:21;530:4;522:6;518:17;508:27;;552:4;547:3;543:14;536:21;;608:6;658:3;650:4;642:6;638:17;633:3;629:27;626:36;623:2;;;675:1;672;665:12;623:2;703:1;688:236;713:6;710:1;707:13;688:236;;;780:3;808:37;841:3;829:10;808:37;:::i;:::-;803:3;796:50;875:4;870:3;866:14;859:21;;909:4;904:3;900:14;893:21;;748:176;735:1;732;728:9;723:14;;688:236;;;692:14;246:684;;;;;;;:::o;936:133::-;;1017:6;1004:20;995:29;;1033:30;1057:5;1033:30;:::i;:::-;985:84;;;;:::o;1075:137::-;;1160:6;1154:13;1145:22;;1176:30;1200:5;1176:30;:::i;:::-;1135:77;;;;:::o;1218:167::-;;1316:6;1303:20;1294:29;;1332:47;1373:5;1332:47;:::i;:::-;1284:101;;;;:::o;1391:137::-;;1474:6;1461:20;1452:29;;1490:32;1516:5;1490:32;:::i;:::-;1442:86;;;;:::o;1534:139::-;;1618:6;1605:20;1596:29;;1634:33;1661:5;1634:33;:::i;:::-;1586:87;;;;:::o;1679:143::-;;1767:6;1761:13;1752:22;;1783:33;1810:5;1783:33;:::i;:::-;1742:80;;;;:::o;1828:260::-;;1936:2;1924:9;1915:7;1911:23;1907:32;1904:2;;;1952:1;1949;1942:12;1904:2;1994:1;2018:53;2063:7;2054:6;2043:9;2039:22;2018:53;:::i;:::-;2008:63;;1966:115;1894:194;;;;:::o;2094:403::-;;2227:2;2215:9;2206:7;2202:23;2198:32;2195:2;;;2243:1;2240;2233:12;2195:2;2313:1;2302:9;2298:17;2285:31;2343:18;2335:6;2332:30;2329:2;;;2375:1;2372;2365:12;2329:2;2402:78;2472:7;2463:6;2452:9;2448:22;2402:78;:::i;:::-;2392:88;;2257:233;2185:312;;;;:::o;2503:276::-;;2619:2;2607:9;2598:7;2594:23;2590:32;2587:2;;;2635:1;2632;2625:12;2587:2;2677:1;2701:61;2754:7;2745:6;2734:9;2730:22;2701:61;:::i;:::-;2691:71;;2649:123;2577:202;;;;:::o;2785:260::-;;2893:2;2881:9;2872:7;2868:23;2864:32;2861:2;;;2909:1;2906;2899:12;2861:2;2951:1;2975:53;3020:7;3011:6;3000:9;2996:22;2975:53;:::i;:::-;2965:63;;2923:115;2851:194;;;;:::o;3051:282::-;;3170:2;3158:9;3149:7;3145:23;3141:32;3138:2;;;3186:1;3183;3176:12;3138:2;3228:1;3252:64;3308:7;3299:6;3288:9;3284:22;3252:64;:::i;:::-;3242:74;;3200:126;3128:205;;;;:::o;3339:403::-;;;3464:2;3452:9;3443:7;3439:23;3435:32;3432:2;;;3480:1;3477;3470:12;3432:2;3522:1;3546:53;3591:7;3582:6;3571:9;3567:22;3546:53;:::i;:::-;3536:63;;3494:115;3647:2;3672:53;3717:7;3708:6;3697:9;3693:22;3672:53;:::i;:::-;3662:63;;3619:116;3422:320;;;;;:::o;3748:710::-;;;;;3917:3;3905:9;3896:7;3892:23;3888:33;3885:2;;;3934:1;3931;3924:12;3885:2;3976:1;4000:53;4045:7;4036:6;4025:9;4021:22;4000:53;:::i;:::-;3990:63;;3948:115;4101:2;4126:67;4185:7;4176:6;4165:9;4161:22;4126:67;:::i;:::-;4116:77;;4073:130;4241:2;4266:50;4308:7;4299:6;4288:9;4284:22;4266:50;:::i;:::-;4256:60;;4213:113;4364:2;4389:52;4433:7;4424:6;4413:9;4409:22;4389:52;:::i;:::-;4379:62;;4336:115;3875:583;;;;;;;:::o;4464:403::-;;;4589:2;4577:9;4568:7;4564:23;4560:32;4557:2;;;4605:1;4602;4595:12;4557:2;4647:1;4671:53;4716:7;4707:6;4696:9;4692:22;4671:53;:::i;:::-;4661:63;;4619:115;4772:2;4797:53;4842:7;4833:6;4822:9;4818:22;4797:53;:::i;:::-;4787:63;;4744:116;4547:320;;;;;:::o;4873:546::-;;;;5015:2;5003:9;4994:7;4990:23;4986:32;4983:2;;;5031:1;5028;5021:12;4983:2;5073:1;5097:53;5142:7;5133:6;5122:9;5118:22;5097:53;:::i;:::-;5087:63;;5045:115;5198:2;5223:53;5268:7;5259:6;5248:9;5244:22;5223:53;:::i;:::-;5213:63;;5170:116;5324:2;5349:53;5394:7;5385:6;5374:9;5370:22;5349:53;:::i;:::-;5339:63;;5296:116;4973:446;;;;;:::o;5425:540::-;;;;5564:2;5552:9;5543:7;5539:23;5535:32;5532:2;;;5580:1;5577;5570:12;5532:2;5622:1;5646:53;5691:7;5682:6;5671:9;5667:22;5646:53;:::i;:::-;5636:63;;5594:115;5747:2;5772:53;5817:7;5808:6;5797:9;5793:22;5772:53;:::i;:::-;5762:63;;5719:116;5873:2;5898:50;5940:7;5931:6;5920:9;5916:22;5898:50;:::i;:::-;5888:60;;5845:113;5522:443;;;;;:::o;5971:546::-;;;;6113:2;6101:9;6092:7;6088:23;6084:32;6081:2;;;6129:1;6126;6119:12;6081:2;6171:1;6195:53;6240:7;6231:6;6220:9;6216:22;6195:53;:::i;:::-;6185:63;;6143:115;6296:2;6321:53;6366:7;6357:6;6346:9;6342:22;6321:53;:::i;:::-;6311:63;;6268:116;6422:2;6447:53;6492:7;6483:6;6472:9;6468:22;6447:53;:::i;:::-;6437:63;;6394:116;6071:446;;;;;:::o;6523:118::-;6610:24;6628:5;6610:24;:::i;:::-;6605:3;6598:37;6588:53;;:::o;6647:109::-;6728:21;6743:5;6728:21;:::i;:::-;6723:3;6716:34;6706:50;;:::o;6762:373::-;;6894:38;6926:5;6894:38;:::i;:::-;6948:88;7029:6;7024:3;6948:88;:::i;:::-;6941:95;;7045:52;7090:6;7085:3;7078:4;7071:5;7067:16;7045:52;:::i;:::-;7122:6;7117:3;7113:16;7106:23;;6870:265;;;;;:::o;7141:159::-;7242:51;7287:5;7242:51;:::i;:::-;7237:3;7230:64;7220:80;;:::o;7306:157::-;7406:50;7450:5;7406:50;:::i;:::-;7401:3;7394:63;7384:79;;:::o;7469:364::-;;7585:39;7618:5;7585:39;:::i;:::-;7640:71;7704:6;7699:3;7640:71;:::i;:::-;7633:78;;7720:52;7765:6;7760:3;7753:4;7746:5;7742:16;7720:52;:::i;:::-;7797:29;7819:6;7797:29;:::i;:::-;7792:3;7788:39;7781:46;;7561:272;;;;;:::o;7839:315::-;;8002:67;8066:2;8061:3;8002:67;:::i;:::-;7995:74;;8099:19;8095:1;8090:3;8086:11;8079:40;8145:2;8140:3;8136:12;8129:19;;7985:169;;;:::o;8160:323::-;;8323:67;8387:2;8382:3;8323:67;:::i;:::-;8316:74;;8420:27;8416:1;8411:3;8407:11;8400:48;8474:2;8469:3;8465:12;8458:19;;8306:177;;;:::o;8489:370::-;;8652:67;8716:2;8711:3;8652:67;:::i;:::-;8645:74;;8749:34;8745:1;8740:3;8736:11;8729:55;8815:8;8810:2;8805:3;8801:12;8794:30;8850:2;8845:3;8841:12;8834:19;;8635:224;;;:::o;8865:325::-;;9028:67;9092:2;9087:3;9028:67;:::i;:::-;9021:74;;9125:29;9121:1;9116:3;9112:11;9105:50;9181:2;9176:3;9172:12;9165:19;;9011:179;;;:::o;9196:328::-;;9359:67;9423:2;9418:3;9359:67;:::i;:::-;9352:74;;9456:32;9452:1;9447:3;9443:11;9436:53;9515:2;9510:3;9506:12;9499:19;;9342:182;;;:::o;9530:370::-;;9693:67;9757:2;9752:3;9693:67;:::i;:::-;9686:74;;9790:34;9786:1;9781:3;9777:11;9770:55;9856:8;9851:2;9846:3;9842:12;9835:30;9891:2;9886:3;9882:12;9875:19;;9676:224;;;:::o;9906:319::-;;10069:67;10133:2;10128:3;10069:67;:::i;:::-;10062:74;;10166:23;10162:1;10157:3;10153:11;10146:44;10216:2;10211:3;10207:12;10200:19;;10052:173;;;:::o;10231:324::-;;10394:67;10458:2;10453:3;10394:67;:::i;:::-;10387:74;;10491:28;10487:1;10482:3;10478:11;10471:49;10546:2;10541:3;10537:12;10530:19;;10377:178;;;:::o;10561:317::-;;10724:67;10788:2;10783:3;10724:67;:::i;:::-;10717:74;;10821:21;10817:1;10812:3;10808:11;10801:42;10869:2;10864:3;10860:12;10853:19;;10707:171;;;:::o;10884:316::-;;11047:67;11111:2;11106:3;11047:67;:::i;:::-;11040:74;;11144:20;11140:1;11135:3;11131:11;11124:41;11191:2;11186:3;11182:12;11175:19;;11030:170;;;:::o;11206:312::-;;11369:67;11433:2;11428:3;11369:67;:::i;:::-;11362:74;;11466:16;11462:1;11457:3;11453:11;11446:37;11509:2;11504:3;11500:12;11493:19;;11352:166;;;:::o;11524:369::-;;11687:67;11751:2;11746:3;11687:67;:::i;:::-;11680:74;;11784:34;11780:1;11775:3;11771:11;11764:55;11850:7;11845:2;11840:3;11836:12;11829:29;11884:2;11879:3;11875:12;11868:19;;11670:223;;;:::o;11899:319::-;;12062:67;12126:2;12121:3;12062:67;:::i;:::-;12055:74;;12159:23;12155:1;12150:3;12146:11;12139:44;12209:2;12204:3;12200:12;12193:19;;12045:173;;;:::o;12224:365::-;;12387:67;12451:2;12446:3;12387:67;:::i;:::-;12380:74;;12484:34;12480:1;12475:3;12471:11;12464:55;12550:3;12545:2;12540:3;12536:12;12529:25;12580:2;12575:3;12571:12;12564:19;;12370:219;;;:::o;12595:330::-;;12758:67;12822:2;12817:3;12758:67;:::i;:::-;12751:74;;12855:34;12851:1;12846:3;12842:11;12835:55;12916:2;12911:3;12907:12;12900:19;;12741:184;;;:::o;12931:321::-;;13094:67;13158:2;13153:3;13094:67;:::i;:::-;13087:74;;13191:25;13187:1;13182:3;13178:11;13171:46;13243:2;13238:3;13234:12;13227:19;;13077:175;;;:::o;13258:327::-;;13421:67;13485:2;13480:3;13421:67;:::i;:::-;13414:74;;13518:31;13514:1;13509:3;13505:11;13498:52;13576:2;13571:3;13567:12;13560:19;;13404:181;;;:::o;13591:374::-;;13754:67;13818:2;13813:3;13754:67;:::i;:::-;13747:74;;13851:34;13847:1;13842:3;13838:11;13831:55;13917:12;13912:2;13907:3;13903:12;13896:34;13956:2;13951:3;13947:12;13940:19;;13737:228;;;:::o;13971:313::-;;14134:67;14198:2;14193:3;14134:67;:::i;:::-;14127:74;;14231:17;14227:1;14222:3;14218:11;14211:38;14275:2;14270:3;14266:12;14259:19;;14117:167;;;:::o;14290:326::-;;14453:67;14517:2;14512:3;14453:67;:::i;:::-;14446:74;;14550:30;14546:1;14541:3;14537:11;14530:51;14607:2;14602:3;14598:12;14591:19;;14436:180;;;:::o;14622:312::-;;14785:67;14849:2;14844:3;14785:67;:::i;:::-;14778:74;;14882:16;14878:1;14873:3;14869:11;14862:37;14925:2;14920:3;14916:12;14909:19;;14768:166;;;:::o;15002:879::-;15153:4;15148:3;15144:14;15241:4;15234:5;15230:16;15224:23;15260:61;15315:4;15310:3;15306:14;15292:12;15260:61;:::i;:::-;15168:163;15419:4;15412:5;15408:16;15402:23;15438:63;15495:4;15490:3;15486:14;15472:12;15438:63;:::i;:::-;15341:170;15597:4;15590:5;15586:16;15580:23;15616:63;15673:4;15668:3;15664:14;15650:12;15616:63;:::i;:::-;15521:168;15782:4;15775:5;15771:16;15765:23;15801:63;15858:4;15853:3;15849:14;15835:12;15801:63;:::i;:::-;15699:175;15122:759;;;:::o;15887:105::-;15962:23;15979:5;15962:23;:::i;:::-;15957:3;15950:36;15940:52;;:::o;15998:115::-;16083:23;16100:5;16083:23;:::i;:::-;16078:3;16071:36;16061:52;;:::o;16119:108::-;16196:24;16214:5;16196:24;:::i;:::-;16191:3;16184:37;16174:53;;:::o;16233:118::-;16320:24;16338:5;16320:24;:::i;:::-;16315:3;16308:37;16298:53;;:::o;16357:271::-;;16509:93;16598:3;16589:6;16509:93;:::i;:::-;16502:100;;16619:3;16612:10;;16491:137;;;;:::o;16634:222::-;;16765:2;16754:9;16750:18;16742:26;;16778:71;16846:1;16835:9;16831:17;16822:6;16778:71;:::i;:::-;16732:124;;;;:::o;16862:442::-;;17049:2;17038:9;17034:18;17026:26;;17062:71;17130:1;17119:9;17115:17;17106:6;17062:71;:::i;:::-;17143:72;17211:2;17200:9;17196:18;17187:6;17143:72;:::i;:::-;17225;17293:2;17282:9;17278:18;17269:6;17225:72;:::i;:::-;17016:288;;;;;;:::o;17310:332::-;;17469:2;17458:9;17454:18;17446:26;;17482:71;17550:1;17539:9;17535:17;17526:6;17482:71;:::i;:::-;17563:72;17631:2;17620:9;17616:18;17607:6;17563:72;:::i;:::-;17436:206;;;;;:::o;17648:210::-;;17773:2;17762:9;17758:18;17750:26;;17786:65;17848:1;17837:9;17833:17;17824:6;17786:65;:::i;:::-;17740:118;;;;:::o;17864:799::-;;18147:3;18136:9;18132:19;18124:27;;18161:85;18243:1;18232:9;18228:17;18219:6;18161:85;:::i;:::-;18256:72;18324:2;18313:9;18309:18;18300:6;18256:72;:::i;:::-;18338;18406:2;18395:9;18391:18;18382:6;18338:72;:::i;:::-;18420;18488:2;18477:9;18473:18;18464:6;18420:72;:::i;:::-;18502:73;18570:3;18559:9;18555:19;18546:6;18502:73;:::i;:::-;18585:71;18651:3;18640:9;18636:19;18627:6;18585:71;:::i;:::-;18114:549;;;;;;;;;:::o;18669:248::-;;18813:2;18802:9;18798:18;18790:26;;18826:84;18907:1;18896:9;18892:17;18883:6;18826:84;:::i;:::-;18780:137;;;;:::o;18923:313::-;;19074:2;19063:9;19059:18;19051:26;;19123:9;19117:4;19113:20;19109:1;19098:9;19094:17;19087:47;19151:78;19224:4;19215:6;19151:78;:::i;:::-;19143:86;;19041:195;;;;:::o;19242:419::-;;19446:2;19435:9;19431:18;19423:26;;19495:9;19489:4;19485:20;19481:1;19470:9;19466:17;19459:47;19523:131;19649:4;19523:131;:::i;:::-;19515:139;;19413:248;;;:::o;19667:419::-;;19871:2;19860:9;19856:18;19848:26;;19920:9;19914:4;19910:20;19906:1;19895:9;19891:17;19884:47;19948:131;20074:4;19948:131;:::i;:::-;19940:139;;19838:248;;;:::o;20092:419::-;;20296:2;20285:9;20281:18;20273:26;;20345:9;20339:4;20335:20;20331:1;20320:9;20316:17;20309:47;20373:131;20499:4;20373:131;:::i;:::-;20365:139;;20263:248;;;:::o;20517:419::-;;20721:2;20710:9;20706:18;20698:26;;20770:9;20764:4;20760:20;20756:1;20745:9;20741:17;20734:47;20798:131;20924:4;20798:131;:::i;:::-;20790:139;;20688:248;;;:::o;20942:419::-;;21146:2;21135:9;21131:18;21123:26;;21195:9;21189:4;21185:20;21181:1;21170:9;21166:17;21159:47;21223:131;21349:4;21223:131;:::i;:::-;21215:139;;21113:248;;;:::o;21367:419::-;;21571:2;21560:9;21556:18;21548:26;;21620:9;21614:4;21610:20;21606:1;21595:9;21591:17;21584:47;21648:131;21774:4;21648:131;:::i;:::-;21640:139;;21538:248;;;:::o;21792:419::-;;21996:2;21985:9;21981:18;21973:26;;22045:9;22039:4;22035:20;22031:1;22020:9;22016:17;22009:47;22073:131;22199:4;22073:131;:::i;:::-;22065:139;;21963:248;;;:::o;22217:419::-;;22421:2;22410:9;22406:18;22398:26;;22470:9;22464:4;22460:20;22456:1;22445:9;22441:17;22434:47;22498:131;22624:4;22498:131;:::i;:::-;22490:139;;22388:248;;;:::o;22642:419::-;;22846:2;22835:9;22831:18;22823:26;;22895:9;22889:4;22885:20;22881:1;22870:9;22866:17;22859:47;22923:131;23049:4;22923:131;:::i;:::-;22915:139;;22813:248;;;:::o;23067:419::-;;23271:2;23260:9;23256:18;23248:26;;23320:9;23314:4;23310:20;23306:1;23295:9;23291:17;23284:47;23348:131;23474:4;23348:131;:::i;:::-;23340:139;;23238:248;;;:::o;23492:419::-;;23696:2;23685:9;23681:18;23673:26;;23745:9;23739:4;23735:20;23731:1;23720:9;23716:17;23709:47;23773:131;23899:4;23773:131;:::i;:::-;23765:139;;23663:248;;;:::o;23917:419::-;;24121:2;24110:9;24106:18;24098:26;;24170:9;24164:4;24160:20;24156:1;24145:9;24141:17;24134:47;24198:131;24324:4;24198:131;:::i;:::-;24190:139;;24088:248;;;:::o;24342:419::-;;24546:2;24535:9;24531:18;24523:26;;24595:9;24589:4;24585:20;24581:1;24570:9;24566:17;24559:47;24623:131;24749:4;24623:131;:::i;:::-;24615:139;;24513:248;;;:::o;24767:419::-;;24971:2;24960:9;24956:18;24948:26;;25020:9;25014:4;25010:20;25006:1;24995:9;24991:17;24984:47;25048:131;25174:4;25048:131;:::i;:::-;25040:139;;24938:248;;;:::o;25192:419::-;;25396:2;25385:9;25381:18;25373:26;;25445:9;25439:4;25435:20;25431:1;25420:9;25416:17;25409:47;25473:131;25599:4;25473:131;:::i;:::-;25465:139;;25363:248;;;:::o;25617:419::-;;25821:2;25810:9;25806:18;25798:26;;25870:9;25864:4;25860:20;25856:1;25845:9;25841:17;25834:47;25898:131;26024:4;25898:131;:::i;:::-;25890:139;;25788:248;;;:::o;26042:419::-;;26246:2;26235:9;26231:18;26223:26;;26295:9;26289:4;26285:20;26281:1;26270:9;26266:17;26259:47;26323:131;26449:4;26323:131;:::i;:::-;26315:139;;26213:248;;;:::o;26467:419::-;;26671:2;26660:9;26656:18;26648:26;;26720:9;26714:4;26710:20;26706:1;26695:9;26691:17;26684:47;26748:131;26874:4;26748:131;:::i;:::-;26740:139;;26638:248;;;:::o;26892:419::-;;27096:2;27085:9;27081:18;27073:26;;27145:9;27139:4;27135:20;27131:1;27120:9;27116:17;27109:47;27173:131;27299:4;27173:131;:::i;:::-;27165:139;;27063:248;;;:::o;27317:419::-;;27521:2;27510:9;27506:18;27498:26;;27570:9;27564:4;27560:20;27556:1;27545:9;27541:17;27534:47;27598:131;27724:4;27598:131;:::i;:::-;27590:139;;27488:248;;;:::o;27742:419::-;;27946:2;27935:9;27931:18;27923:26;;27995:9;27989:4;27985:20;27981:1;27970:9;27966:17;27959:47;28023:131;28149:4;28023:131;:::i;:::-;28015:139;;27913:248;;;:::o;28167:331::-;;28352:3;28341:9;28337:19;28329:27;;28366:125;28488:1;28477:9;28473:17;28464:6;28366:125;:::i;:::-;28319:179;;;;:::o;28504:549::-;;28717:3;28706:9;28702:19;28694:27;;28731:69;28797:1;28786:9;28782:17;28773:6;28731:69;:::i;:::-;28810:72;28878:2;28867:9;28863:18;28854:6;28810:72;:::i;:::-;28892;28960:2;28949:9;28945:18;28936:6;28892:72;:::i;:::-;28974;29042:2;29031:9;29027:18;29018:6;28974:72;:::i;:::-;28684:369;;;;;;;:::o;29059:222::-;;29190:2;29179:9;29175:18;29167:26;;29203:71;29271:1;29260:9;29256:17;29247:6;29203:71;:::i;:::-;29157:124;;;;:::o;29287:332::-;;29446:2;29435:9;29431:18;29423:26;;29459:71;29527:1;29516:9;29512:17;29503:6;29459:71;:::i;:::-;29540:72;29608:2;29597:9;29593:18;29584:6;29540:72;:::i;:::-;29413:206;;;;;:::o;29625:278::-;;29691:2;29685:9;29675:19;;29733:4;29725:6;29721:17;29840:6;29828:10;29825:22;29804:18;29792:10;29789:34;29786:62;29783:2;;;29851:13;;:::i;:::-;29783:2;29886:10;29882:2;29875:22;29665:238;;;;:::o;29909:306::-;;30076:18;30068:6;30065:30;30062:2;;;30098:13;;:::i;:::-;30062:2;30143:4;30135:6;30131:17;30123:25;;30203:4;30197;30193:15;30185:23;;29991:224;;;:::o;30221:98::-;;30306:5;30300:12;30290:22;;30279:40;;;:::o;30325:99::-;;30411:5;30405:12;30395:22;;30384:40;;;:::o;30430:147::-;;30568:3;30553:18;;30543:34;;;;:::o;30583:169::-;;30701:6;30696:3;30689:19;30741:4;30736:3;30732:14;30717:29;;30679:73;;;;:::o;30758:96::-;;30824:24;30842:5;30824:24;:::i;:::-;30813:35;;30803:51;;;:::o;30860:90::-;;30937:5;30930:13;30923:21;30912:32;;30902:48;;;:::o;30956:110::-;;31036:24;31054:5;31036:24;:::i;:::-;31025:35;;31015:51;;;:::o;31072:89::-;;31148:6;31141:5;31137:18;31126:29;;31116:45;;;:::o;31167:126::-;;31244:42;31237:5;31233:54;31222:65;;31212:81;;;:::o;31299:77::-;;31365:5;31354:16;;31344:32;;;:::o;31382:154::-;;31479:51;31524:5;31479:51;:::i;:::-;31466:64;;31456:80;;;:::o;31542:127::-;;31639:24;31657:5;31639:24;:::i;:::-;31626:37;;31616:53;;;:::o;31675:152::-;;31771:50;31815:5;31771:50;:::i;:::-;31758:63;;31748:79;;;:::o;31833:126::-;;31929:24;31947:5;31929:24;:::i;:::-;31916:37;;31906:53;;;:::o;31965:307::-;32033:1;32043:113;32057:6;32054:1;32051:13;32043:113;;;32142:1;32137:3;32133:11;32127:18;32123:1;32118:3;32114:11;32107:39;32079:2;32076:1;32072:10;32067:15;;32043:113;;;32174:6;32171:1;32168:13;32165:2;;;32254:1;32245:6;32240:3;32236:16;32229:27;32165:2;32014:258;;;;:::o;32278:48::-;32311:9;32332:102;;32424:2;32420:7;32415:2;32408:5;32404:14;32400:28;32390:38;;32380:54;;;:::o;32440:122::-;32513:24;32531:5;32513:24;:::i;:::-;32506:5;32503:35;32493:2;;32552:1;32549;32542:12;32493:2;32483:79;:::o;32568:116::-;32638:21;32653:5;32638:21;:::i;:::-;32631:5;32628:32;32618:2;;32674:1;32671;32664:12;32618:2;32608:76;:::o;32690:150::-;32777:38;32809:5;32777:38;:::i;:::-;32770:5;32767:49;32757:2;;32830:1;32827;32820:12;32757:2;32747:93;:::o;32846:120::-;32918:23;32935:5;32918:23;:::i;:::-;32911:5;32908:34;32898:2;;32956:1;32953;32946:12;32898:2;32888:78;:::o;32972:122::-;33045:24;33063:5;33045:24;:::i;:::-;33038:5;33035:35;33025:2;;33084:1;33081;33074:12;33025:2;33015:79;:::o

Swarm Source

ipfs://dbe7ace562d693160df8ed2a2af7951ff77bd0c5bd007a431d503d95503d8366
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading