Contract 0x79cfa4459e14bfc8730f5449198ada9155ab90da

Contract Overview

Balance:
0 BNB

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x357ff2725d2364c271dc809e03292bec4511ed97a3e9f529064eeb829c2ab1f9Drawing99936902021-06-23 20:00:10161 days 14 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x0625589a00c646aeaeb3f95905a27c1f417852ab21af72263aef9f28d58a94a3Drawing99936502021-06-23 19:58:10161 days 14 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0x6cb54b2dbb7f6210306cd6f8f65b1fb4ce6605e2cae0d644128d50261a2975a5Drawing99936102021-06-23 19:56:10161 days 14 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x8f49ab8899481a73583f4ebcf9a2e4f13f248a7edd7605a339ef8fc12d3611b6Drawing99783702021-06-23 7:14:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0x410cfc6a0a65bf717d73700619394c60759af47e96e3d5660d8bf49937004d54Drawing99783302021-06-23 7:12:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0x266aaedb0cc408d6079c9c4d82fa2987ae75dc0cfdd31780645e88754fd48467Drawing99782902021-06-23 7:10:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x7f3ee5f9e3d1048921c61e4a842f10a110e1ef5a37b631654cbed8604c7225aaDrawing99782502021-06-23 7:08:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x64854bd1c8707d8dc8878f2507fd8f1ee31f82bd7bfefffa524908397d559bb7Drawing99782102021-06-23 7:06:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0xe64d1296c98e661e9c9151c722d955676e4d263783185beb01845b78c6dff654Drawing99781702021-06-23 7:04:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0xd9e0fa6a4c5a95a626ddfd707e1c4bd7b13081517d06574867a648166a7bba9fDrawing99781302021-06-23 7:02:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0x2f19222ad7a4c0911efc6d0a7789aa542ba1c75b57f4116a8d3c7d8d03b471e0Drawing99780902021-06-23 7:00:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x0180887cd092d215a5fe7c6738f2cec121a97cc9186c8241b7d856fd90ab78d8Drawing99780502021-06-23 6:58:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0xf0f229ea8ad2d02d2297cad0c55c6e46b1371a8ca06c673c4706519e366f32c4Drawing99780102021-06-23 6:56:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0x8d189a372414dd39e622a9fa6a43af709c80cb0efcdd443c59c1f35c94decb5fDrawing99779702021-06-23 6:54:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0xf5a22b9a83731f3d7d498f5a89e3fb42b14d5a483eead97c7f6d38ff5b91d421Drawing99779302021-06-23 6:52:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x0bd5272e1e7b74bd1c35a76b02ba7928fe53dd9eb84803f74a75248ec0ce66bbDrawing99778902021-06-23 6:50:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0xec9c7c983b6db59a34067e1bcdc90224dbd622822f71690eaace001c86b22bacDrawing99778502021-06-23 6:48:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x6d4f120fd829e3990afd1de9281c53abd9e2475cf8ea7764e0568c33fd19aa30Drawing99778102021-06-23 6:46:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0xc4837e8e23a02632f69472cc030974b20e501fe75fea0d755ec8f05210dc7c83Drawing99777702021-06-23 6:44:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0x7c8ebf529f3cc117ccb9426e1e20b6c023c23607ed526a067bac83d91a9abc9fDrawing99777302021-06-23 6:42:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0x0bb943a923b25e80bfac8619f2684c41a17f7fcb1acdc1a340cbe389413a9342Drawing99776902021-06-23 6:40:10162 days 3 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x86fb5c3da566398c8b7549e3216f1990853a6b81defd46182af5e3d8390b3d53Drawing99776502021-06-23 6:38:10162 days 4 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x381b3d775ec3eea779e30b48bb5ae640d818f92fa7d5505ae5788875123fa6c1Drawing99776102021-06-23 6:36:10162 days 4 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00171272
0x0c0339002f63e4df8efef02bee5deb5de1007ead91064b94f9154cb65c4d549bDrawing99775702021-06-23 6:34:10162 days 4 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
0x16c90c29e3bd3b26f05ea2403f3b69120bd01830962945dbc8841cc40017a8aaDrawing99775302021-06-23 6:32:10162 days 4 hrs ago0x15bebd2fe82293147f2b7ec324828a9f8382a174 IN  0x79cfa4459e14bfc8730f5449198ada9155ab90da0 BNB0.00190462
[ Download CSV Export 
Latest 8 internal transactions
Parent Txn Hash Block From To Value
0x9566b6b29bd7cd39d693412486847febcf6be1609ffbdb7a98303fbf580eec6599325752021-06-21 17:04:25163 days 17 hrs ago 0x79cfa4459e14bfc8730f5449198ada9155ab90da 0x20f7b3c0724c95960340a4575f537e6a420fb4c10 BNB
0x9533fd2142c6372efff67934f5be0c635e5b9c1d762a2987cafe0a96a63b9a2a99317752021-06-21 16:24:25163 days 18 hrs ago 0x79cfa4459e14bfc8730f5449198ada9155ab90da 0x20f7b3c0724c95960340a4575f537e6a420fb4c10 BNB
0x6ddf3342c18b94757ff2a7b5459a5f3a260f60b49115282037918bedf0f60f5699317472021-06-21 16:23:01163 days 18 hrs ago 0x79cfa4459e14bfc8730f5449198ada9155ab90da 0x20f7b3c0724c95960340a4575f537e6a420fb4c10 BNB
0x96af952347ef8b189774f4e891131bc0111d5842ac4bd491f76970d73e25081899316282021-06-21 16:17:04163 days 18 hrs ago 0x79cfa4459e14bfc8730f5449198ada9155ab90da 0x20f7b3c0724c95960340a4575f537e6a420fb4c10 BNB
0x576ac73c8de1e01aaa16b753317d4d67a72e13ec5bed16485b9bf70270c4759699315052021-06-21 16:10:55163 days 18 hrs ago 0x79cfa4459e14bfc8730f5449198ada9155ab90da 0x20f7b3c0724c95960340a4575f537e6a420fb4c10 BNB
0xd23aa2e555a3df1101873f290a7b681bbbc84550e2b59232d0dec1292065341299314712021-06-21 16:09:13163 days 18 hrs ago 0x79cfa4459e14bfc8730f5449198ada9155ab90da 0x20f7b3c0724c95960340a4575f537e6a420fb4c10 BNB
0x9590284bda80c0e95fc626b82d52c47fd24c1911be50165e750b70546319397a99313452021-06-21 16:02:55163 days 18 hrs ago 0x79cfa4459e14bfc8730f5449198ada9155ab90da 0x20f7b3c0724c95960340a4575f537e6a420fb4c10 BNB
0x025c09ed699ff856e6572d00c22e6e6b8b00629d1fe1b57fd38eaa586b1453a699311772021-06-21 15:54:31163 days 18 hrs ago 0x79cfa4459e14bfc8730f5449198ada9155ab90da 0x20f7b3c0724c95960340a4575f537e6a420fb4c10 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SicBoGame

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-06-21
*/

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

/**
 *Submitted for verification at BscScan.com on 2021-06-03
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.4;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
// 
/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, 'SafeMath: modulo by zero');
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IBEP20 {
    /**
     * @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);
}

// 
/**
 * @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) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }
    /**
     * @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');
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'Address: call to non-contract');

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        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);
            }
        }
    }
}
// 
/**
 * @title SafeBEP20
 * @dev Wrappers around BEP20 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 SafeBEP20 for IBEP20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeBEP20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(
        IBEP20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IBEP20 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
     * {IBEP20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IBEP20 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),
            'SafeBEP20: approve from non-zero to non-zero allowance'
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IBEP20 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(
        IBEP20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(
            value,
            'SafeBEP20: 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(IBEP20 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, 'SafeBEP20: low-level call failed');
        if (returndata.length > 0) {
            // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), 'SafeBEP20: BEP20 operation did not succeed');
        }
    }
}

contract SicBoGame  {
    struct BidTicket { 
        uint256 bid;
        uint256 time;
        uint256 value;
        uint256 currentTotal;
    }
    struct BidTicketHistory{
        BidTicket tiket;
        address player;
    }
    struct UserSummary{
        uint256 totalDeposit;
        uint256 totalWithdrawl;
        uint256[] unclaimRounds;
    }
    struct GameRound{
        uint256 startTime;
        uint256 winningBid;
        uint256 dice1;
        uint256 dice2;
        uint256 dice3;
        uint256 limitAmount;
        uint256 drawingTime;
        uint256 totalAmountLow;
        uint256 totalAmountHigh;
        
    }
    struct Leader{
        address player;
        uint256 totalDeposit;
    }
    using SafeMath for uint256;
    using SafeBEP20 for IBEP20; 
    address public adminAddress;
    address[] public users;
    IBEP20 public tokenAddress;
    mapping (uint256 => GameRound) public historyRounds;
    mapping (address => mapping(uint256=>BidTicket[])) public userInfo;//address=>round=>tiket
    mapping (address => UserSummary) public usersSummary;
    mapping (uint256 => BidTicketHistory[]) public historyRoundBids;
    address[] leadersBoard;
    uint256 public totalFee = 0;
    uint256 public round = 1;
    GameRound public currentRound;
    bool public alreadyRebalancedRound = false;
    bool public gameEnable = false;
    constructor(IBEP20 _tokenAddress) {
        adminAddress = msg.sender;   
        tokenAddress =_tokenAddress;
    }
    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'Sicbo: LOCKED');
        unlocked = 0;
        _;
        unlocked = 1;
    }
    modifier onlyAdmin() {
        require(msg.sender == adminAddress, "admin: wut?");
        _;
    }
    modifier canDeposit(){
        require (!alreadyRebalancedRound && block.timestamp >currentRound.startTime.add(14),"not time to deposit");
        _;
    }
    function transferAdmin(address _to) public onlyAdmin{
        adminAddress = _to;
    }
    function enableGame() public onlyAdmin{
        require(!gameEnable,'game already enabled');
        gameEnable = true;
    }
    function disableGame() public onlyAdmin{
        require(gameEnable,'game already disabled');
        gameEnable = false;
    }
    
    function getLengthPending(address _player) public view returns(uint256){
        return usersSummary[_player].unclaimRounds.length;
    }
    function rebalanceRound() private {
        if(!alreadyRebalancedRound && block.timestamp>currentRound.startTime.add(112)){
            alreadyRebalancedRound = true;
            currentRound.limitAmount = currentRound.totalAmountLow<currentRound.totalAmountHigh?currentRound.totalAmountLow:currentRound.totalAmountHigh;
        }
        
    }
    function drawing(uint256 _externalRandomNumber) public onlyAdmin {
        rebalanceRound();
        require(gameEnable,'game already disabled');
        require(block.timestamp>currentRound.startTime.add(117),"it's not time to draw yet");
        createWinningNumber(_externalRandomNumber);
        calFee();
        reset();
    }
    function getLastRoundDrawed() public view returns(GameRound memory){
        return historyRounds[round.sub(1)];
    }
    function createWinningNumber(uint256 _externalRandomNumber) private{
        bytes32 _structHash;
        uint256 _randomNumber;
        bytes32 _blockhash1 = blockhash(block.number-1);
        bytes32 _blockhash2 = blockhash(block.number-2);
        
        //dice1
        _structHash = keccak256(
            abi.encode(
                _blockhash1,
                block.timestamp,
                currentRound.totalAmountHigh,
                _externalRandomNumber
            )
        );
        _randomNumber  = uint256(_structHash);
        assembly {_randomNumber := add(mod(_randomNumber, 6),1)}
        currentRound.dice1= _randomNumber;
        //dice2
         _structHash = keccak256(
            abi.encode(
                _blockhash2,
                block.timestamp,
                round,
                _externalRandomNumber
            )
        );
        _randomNumber  = uint256(_structHash);
        assembly {_randomNumber := add(mod(_randomNumber, 6),1)}
        currentRound.dice2 = _randomNumber;
        // dice3
         _structHash = keccak256(
            abi.encode(
                block.difficulty,
                block.timestamp,
                block.number,
                _externalRandomNumber
            )
        );
        _randomNumber  = uint256(_structHash);
        assembly {_randomNumber := add(mod(_randomNumber, 6),1)}
        currentRound.dice3 = _randomNumber;
        //winningBid
        if(currentRound.dice1.add(currentRound.dice2).add(currentRound.dice3)<11){
            currentRound.winningBid = 0;
        }
        else{
            currentRound.winningBid = 1;
        }
        //
        currentRound.drawingTime = block.timestamp;
        historyRounds[round] = currentRound;
    }
    function reset() private{
        round = round.add(1);
        currentRound =  GameRound(block.timestamp,0,0,0,0,0,0,0,0);
        alreadyRebalancedRound = false;
    }
    function calFee() private{
        totalFee = totalFee.add(currentRound.limitAmount.div(50));
    }
    function claimReward() public lock{
        uint256 rewardPending = calRewardPending(msg.sender);
        require(rewardPending>0,'nothing to claim');
        tokenAddress.safeTransfer(msg.sender, rewardPending);
        usersSummary[msg.sender].totalWithdrawl = usersSummary[msg.sender].totalWithdrawl.add(rewardPending);
        delete usersSummary[msg.sender].unclaimRounds;
    }
    function calRewardPending(address _player) public view returns (uint256)  {
        uint256 totalPending = 0;
        if(usersSummary[_player].unclaimRounds.length>0){
            uint256 lastRoundCheck = 0;
            uint256 lastRoundClaimable = round.sub(1);
            for(uint i = 0;i<usersSummary[_player].unclaimRounds.length;i++){
                if(usersSummary[_player].unclaimRounds[i]>lastRoundCheck && usersSummary[_player].unclaimRounds[i]<=lastRoundClaimable){
                    lastRoundCheck = usersSummary[_player].unclaimRounds[i];
                    totalPending = totalPending.add(getRewardPendingInRound(lastRoundCheck,_player));
                }
            }
        }
        return totalPending;
        
    }
    function getRewardPendingInRound(uint256 _round,address _player) private view returns (uint256) {
        uint256 totalPendingRound = 0;
        for(uint i=0;i<userInfo[_player][_round].length;i++){
            if(userInfo[_player][_round][i].currentTotal>=historyRounds[_round].limitAmount){
                totalPendingRound = totalPendingRound.add(userInfo[_player][_round][i].value);
            }
            else if(userInfo[_player][_round][i].currentTotal.add(userInfo[_player][_round][i].value)>historyRounds[_round].limitAmount){//
                uint256 validValue = historyRounds[_round].limitAmount.sub(userInfo[_player][_round][i].currentTotal);
                uint256 invalidValue = userInfo[_player][_round][i].value.sub(validValue);
                totalPendingRound = totalPendingRound.add(invalidValue);
                if(userInfo[_player][_round][i].bid==historyRounds[_round].winningBid){
                    totalPendingRound = totalPendingRound.add(validValue.div(100).mul(198));
                }
            }
            else{
                if(userInfo[_player][_round][i].bid==historyRounds[_round].winningBid){
                    totalPendingRound = totalPendingRound.add(userInfo[_player][_round][i].value.div(100).mul(198));
                }
            }
        }
        return totalPendingRound;
        
    }
    function deposit(uint256 _bid, uint256 _value) public lock canDeposit{
        require(gameEnable,'game is disabled');
        require(_bid<2,'bid invaild. 0 for low and 1 for high');
        require(userInfo[msg.sender][round].length==0,'you played this round');
        //
        tokenAddress.safeTransferFrom(msg.sender, address(this), _value);
        if(_bid==0){
            addTicket(BidTicket(_bid,block.timestamp,_value,currentRound.totalAmountLow));
        }
        else{
            addTicket(BidTicket(_bid,block.timestamp,_value,currentRound.totalAmountHigh));
        }
        //
        
        if(usersSummary[msg.sender].totalDeposit==0){
            users.push(msg.sender);
        }
        usersSummary[msg.sender].totalDeposit = usersSummary[msg.sender].totalDeposit.add(_value);
        usersSummary[msg.sender].unclaimRounds.push(round);
        updateToLeaderBoard();
        rebalanceRound();
        
    }
    function addTicket(BidTicket memory ticket) private{
         userInfo[msg.sender][round].push(ticket);
         historyRoundBids[round].push(BidTicketHistory(ticket,msg.sender));
         if(ticket.bid==0){
             currentRound.totalAmountLow = currentRound.totalAmountLow.add(ticket.value);
         }
         else{
            currentRound.totalAmountHigh = currentRound.totalAmountHigh.add(ticket.value);    
         }
    }
    function updateToLeaderBoard() private{
        
        if(leadersBoard.length==0){
            leadersBoard.push(msg.sender);
        }
        else if(leadersBoard.length<11 || usersSummary[msg.sender].totalDeposit>usersSummary[leadersBoard[leadersBoard.length.sub(1)]].totalDeposit)
        {
            address currentPlayer = msg.sender;
            address playerTmp = msg.sender;
            for(uint i=0;i<leadersBoard.length;i++){
                if(usersSummary[currentPlayer].totalDeposit>usersSummary[leadersBoard[i]].totalDeposit){
                    address playerTmp = leadersBoard[i];
                    leadersBoard[i] = currentPlayer;
                    currentPlayer = playerTmp;
                }
            }
            if(leadersBoard.length<10){
                leadersBoard.push(currentPlayer);
            }
        }
        
    }
    function withdrawalFee() public onlyAdmin {
        require(totalFee>0,'nothing to withdrawl');
        tokenAddress.safeTransfer(adminAddress, totalFee);
        totalFee = 0;
    }
    function getAmountByUserRound(address _player,uint256 _round, uint256 _bid) public view returns (uint256) {
        uint256 currentAmount = 0;
         for(uint i=0;i<userInfo[_player][_round].length;i++){
            BidTicket storage ticket = userInfo[_player][_round][i];
            if(ticket.bid == _bid){
                currentAmount = currentAmount.add(ticket.value);
            } 
        }
        return currentAmount;
    }
    function getListTicketByUserAndRound(address _player,uint256 _round) public view returns (BidTicket[] memory){
        return userInfo[_player][_round];
    }
    function getListTicketByRound(uint256 _round) public view returns (BidTicketHistory[] memory){
        return historyRoundBids[_round];
    }
    function getLeaderBoard() public view returns (address[] memory){
        return leadersBoard;
    }
}

Contract ABI

[{"inputs":[{"internalType":"contract IBEP20","name":"_tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"adminAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"alreadyRebalancedRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"calRewardPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentRound","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"winningBid","type":"uint256"},{"internalType":"uint256","name":"dice1","type":"uint256"},{"internalType":"uint256","name":"dice2","type":"uint256"},{"internalType":"uint256","name":"dice3","type":"uint256"},{"internalType":"uint256","name":"limitAmount","type":"uint256"},{"internalType":"uint256","name":"drawingTime","type":"uint256"},{"internalType":"uint256","name":"totalAmountLow","type":"uint256"},{"internalType":"uint256","name":"totalAmountHigh","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bid","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_externalRandomNumber","type":"uint256"}],"name":"drawing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gameEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_player","type":"address"},{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"uint256","name":"_bid","type":"uint256"}],"name":"getAmountByUserRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastRoundDrawed","outputs":[{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"winningBid","type":"uint256"},{"internalType":"uint256","name":"dice1","type":"uint256"},{"internalType":"uint256","name":"dice2","type":"uint256"},{"internalType":"uint256","name":"dice3","type":"uint256"},{"internalType":"uint256","name":"limitAmount","type":"uint256"},{"internalType":"uint256","name":"drawingTime","type":"uint256"},{"internalType":"uint256","name":"totalAmountLow","type":"uint256"},{"internalType":"uint256","name":"totalAmountHigh","type":"uint256"}],"internalType":"struct SicBoGame.GameRound","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLeaderBoard","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"getLengthPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"}],"name":"getListTicketByRound","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"bid","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"currentTotal","type":"uint256"}],"internalType":"struct SicBoGame.BidTicket","name":"tiket","type":"tuple"},{"internalType":"address","name":"player","type":"address"}],"internalType":"struct SicBoGame.BidTicketHistory[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_player","type":"address"},{"internalType":"uint256","name":"_round","type":"uint256"}],"name":"getListTicketByUserAndRound","outputs":[{"components":[{"internalType":"uint256","name":"bid","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"currentTotal","type":"uint256"}],"internalType":"struct SicBoGame.BidTicket[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"historyRoundBids","outputs":[{"components":[{"internalType":"uint256","name":"bid","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"currentTotal","type":"uint256"}],"internalType":"struct SicBoGame.BidTicket","name":"tiket","type":"tuple"},{"internalType":"address","name":"player","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"historyRounds","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"winningBid","type":"uint256"},{"internalType":"uint256","name":"dice1","type":"uint256"},{"internalType":"uint256","name":"dice2","type":"uint256"},{"internalType":"uint256","name":"dice3","type":"uint256"},{"internalType":"uint256","name":"limitAmount","type":"uint256"},{"internalType":"uint256","name":"drawingTime","type":"uint256"},{"internalType":"uint256","name":"totalAmountLow","type":"uint256"},{"internalType":"uint256","name":"totalAmountHigh","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"bid","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"currentTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"users","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usersSummary","outputs":[{"internalType":"uint256","name":"totalDeposit","type":"uint256"},{"internalType":"uint256","name":"totalWithdrawl","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawalFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600855600160098190556013805461ffff1916905560145534801561002a57600080fd5b50604051620024f3380380620024f383398101604081905261004b9161007e565b60008054336001600160a01b031991821617909155600280549091166001600160a01b03929092169190911790556100ac565b60006020828403121561008f578081fd5b81516001600160a01b03811681146100a5578182fd5b9392505050565b61243780620000bc6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c8063a42206c9116100de578063d9a27a4c11610097578063e2bbb15811610071578063e2bbb158146104f9578063ef6920d71461050c578063f868d80d14610514578063fc6f94681461052757600080fd5b8063d9a27a4c146104b3578063da1293c5146104df578063e1199817146104f157600080fd5b8063a42206c9146103d7578063b84ea691146103ea578063b88a802f14610426578063c1736fdc1461042e578063c29d72bc1461044b578063d56c518c1461046057600080fd5b8063365b98b21161014b5780638a19c8bc116101255780638a19c8bc146103725780638bc7e8c41461039c5780639d76ea58146103a4578063a1ad6acb146103b757600080fd5b8063365b98b21461031257806353fca8051461033d57806375829def1461035d57600080fd5b80627960a414610192578063146ca531146101ca5780631df4ccfc146101e1578063214b27f0146101ea5780632e292b601461025f5780632fd8e36b14610272575b600080fd5b6101a56101a0366004612112565b61053a565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b6101d360095481565b6040519081526020016101c1565b6101d360085481565b6101f261058f565b6040516101c19190600061012082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525092915050565b6101d361026d3660046120cf565b610671565b6102ce610280366004612164565b60036020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152610100820152610120016101c1565b610325610320366004612164565b6107f2565b6040516001600160a01b0390911681526020016101c1565b61035061034b3660046120e9565b61081c565b6040516101c1919061227b565b61037061036b3660046120cf565b6108c2565b005b600a54600b54600c54600d54600e54600f546010546011546012546102ce98979695949392919089565b610370610917565b600254610325906001600160a01b031681565b6103ca6103c5366004612164565b6109b2565b6040516101c19190612206565b6103706103e5366004612164565b610a5e565b6104116103f83660046120cf565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101c1565b610370610b57565b60135461043b9060ff1681565b60405190151581526020016101c1565b610453610c4e565b6040516101c191906121b9565b61047361046e36600461217c565b610cb0565b6040805183518152602080850151908201528382015191810191909152606092830151928101929092526001600160a01b0316608082015260a0016101c1565b6101d36104c13660046120cf565b6001600160a01b031660009081526005602052604090206002015490565b60135461043b90610100900460ff1681565b610370610d23565b61037061050736600461217c565b610da9565b610370611085565b6101d3610522366004612112565b61110f565b600054610325906001600160a01b031681565b6004602052826000526040600020602052816000526040600020818154811061056257600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919550935090915084565b6105de6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600360006105f860016009546111cd90919063ffffffff16565b8152602001908152602001600020604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481525050905090565b6001600160a01b0381166000908152600560205260408120600201548190156107ec576000806106ad60016009546111cd90919063ffffffff16565b905060005b6001600160a01b0386166000908152600560205260409020600201548110156107e8576001600160a01b038616600090815260056020526040902060020180548491908390811061071357634e487b7160e01b600052603260045260246000fd5b906000526020600020015411801561077257506001600160a01b038616600090815260056020526040902060020180548391908390811061076457634e487b7160e01b600052603260045260246000fd5b906000526020600020015411155b156107d6576001600160a01b03861660009081526005602052604090206002018054829081106107b257634e487b7160e01b600052603260045260246000fd5b906000526020600020015492506107d36107cc8488611216565b8590611677565b93505b806107e0816123d0565b9150506106b2565b5050505b92915050565b6001818154811061080257600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03821660009081526004602090815260408083208484528252808320805482518185028101850190935280835260609492939192909184015b828210156108b657838290600052602060002090600402016040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250508152602001906001019061085c565b50505050905092915050565b6000546001600160a01b031633146108f55760405162461bcd60e51b81526004016108ec90612311565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109415760405162461bcd60e51b81526004016108ec90612311565b60006008541161098a5760405162461bcd60e51b81526020600482015260146024820152731b9bdd1a1a5b99c81d1bc81dda5d1a191c985ddb60621b60448201526064016108ec565b6000546008546002546109ab926001600160a01b03918216929116906116d6565b6000600855565b606060066000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a535760008481526020908190206040805160c081018252600586029092018054918301918252600180820154606085015260028201546080850152600382015460a0850152918352600401546001600160a01b03168284015290835290920191016109e7565b505050509050919050565b6000546001600160a01b03163314610a885760405162461bcd60e51b81526004016108ec90612311565b610a9061173e565b601354610100900460ff16610adf5760405162461bcd60e51b815260206004820152601560248201527419d85b5948185b1c9958591e48191a5cd8589b1959605a1b60448201526064016108ec565b600a54610aed906075611677565b4211610b3b5760405162461bcd60e51b815260206004820152601960248201527f69742773206e6f742074696d6520746f2064726177207965740000000000000060448201526064016108ec565b610b448161178c565b610b4c611926565b610b54611946565b50565b601454600114610b995760405162461bcd60e51b815260206004820152600d60248201526c14da58d89bce881313d0d2d151609a1b60448201526064016108ec565b60006014819055610ba933610671565b905060008111610bee5760405162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b60448201526064016108ec565b600254610c05906001600160a01b031633836116d6565b33600090815260056020526040902060010154610c229082611677565b3360009081526005602052604081206001810192909255610c469160020190612081565b506001601455565b60606007805480602002602001604051908101604052809291908181526020018280548015610ca657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c88575b5050505050905090565b60066020528160005260406000208181548110610ccc57600080fd5b600091825260209182902060408051608081018252600590930290910180548352600181015493830193909352600283015490820152600382015460608201526004909101549092506001600160a01b0316905082565b6000546001600160a01b03163314610d4d5760405162461bcd60e51b81526004016108ec90612311565b601354610100900460ff16610d9c5760405162461bcd60e51b815260206004820152601560248201527419d85b5948185b1c9958591e48191a5cd8589b1959605a1b60448201526064016108ec565b6013805461ff0019169055565b601454600114610deb5760405162461bcd60e51b815260206004820152600d60248201526c14da58d89bce881313d0d2d151609a1b60448201526064016108ec565b600060145560135460ff16158015610e0f5750600a54610e0c90600e611677565b42115b610e515760405162461bcd60e51b81526020600482015260136024820152721b9bdd081d1a5b59481d1bc819195c1bdcda5d606a1b60448201526064016108ec565b601354610100900460ff16610e9b5760405162461bcd60e51b815260206004820152601060248201526f19d85b59481a5cc8191a5cd8589b195960821b60448201526064016108ec565b60028210610ef95760405162461bcd60e51b815260206004820152602560248201527f62696420696e7661696c642e203020666f72206c6f7720616e64203120666f72604482015264040d0d2ced60db1b60648201526084016108ec565b336000908152600460209081526040808320600954845290915290205415610f5b5760405162461bcd60e51b81526020600482015260156024820152741e5bdd481c1b185e5959081d1a1a5cc81c9bdd5b99605a1b60448201526064016108ec565b600254610f73906001600160a01b03163330846119d6565b81610fa757604080516080810182528381524260208201529081018290526011546060820152610fa290611a14565b610fd1565b604080516080810182528381524260208201529081018290526012546060820152610fd190611a14565b33600090815260056020526040902054611027576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b031916331790555b336000908152600560205260409020546110419082611677565b33600090815260056020908152604082209283556009546002909301805460018101825590835291200155611074611b17565b61107c61173e565b50506001601455565b6000546001600160a01b031633146110af5760405162461bcd60e51b81526004016108ec90612311565b601354610100900460ff16156110fe5760405162461bcd60e51b815260206004820152601460248201527319d85b5948185b1c9958591e48195b98589b195960621b60448201526064016108ec565b6013805461ff001916610100179055565b600080805b6001600160a01b03861660009081526004602090815260408083208884529091529020548110156111c4576001600160a01b0386166000908152600460209081526040808320888452909152812080548390811061118257634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201905084816000015414156111b15760028101546111ae908490611677565b92505b50806111bc816123d0565b915050611114565b50949350505050565b600061120f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d43565b9392505050565b600080805b6001600160a01b038416600090815260046020908152604080832088845290915290205481101561166f576000858152600360209081526040808320600501546001600160a01b03881684526004835281842089855290925290912080548390811061129757634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600301541061131e576001600160a01b0384166000908152600460209081526040808320888452909152902080546113179190839081106112f657634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600201548361167790919063ffffffff16565b915061165d565b6000858152600360209081526040808320600501546001600160a01b03881684526004835281842089855290925290912080546113e591908490811061137457634e487b7160e01b600052603260045260246000fd5b60009182526020808320600492830201600201546001600160a01b038a16845291815260408084208b85529091529091208054859081106113c557634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016003015461167790919063ffffffff16565b1115611568576001600160a01b03841660009081526004602090815260408083208884529091528120805461145d91908490811061143357634e487b7160e01b600052603260045260246000fd5b6000918252602080832060036004909302018201548a8452919052604090912060050154906111cd565b6001600160a01b03861660009081526004602090815260408083208a84529091528120805492935090916114cb918491869081106114ab57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600201546111cd90919063ffffffff16565b90506114d78482611677565b6000888152600360209081526040808320600101546001600160a01b038b168452600483528184208c8552909252909120805492965090918590811061152d57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016000015414156115615761155e6107cc60c6611558856064611d7d565b90611dbf565b93505b505061165d565b6000858152600360209081526040808320600101546001600160a01b0388168452600483528184208985529092529091208054839081106115b957634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160000154141561165d5761165a61165360c66115586064600460008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008b8152602001908152602001600020868154811061163357634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160020154611d7d90919063ffffffff16565b8390611677565b91505b80611667816123d0565b91505061121b565b509392505050565b6000806116848385612336565b90508381101561120f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108ec565b6040516001600160a01b03831660248201526044810182905261173990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611e3e565b505050565b60135460ff1615801561175d5750600a5461175a906070611677565b42115b1561178a576013805460ff191660011790556012546011541061178257601254611786565b6011545b600f555b565b6000808061179b60014361238d565b40905060006117ab60024361238d565b601254604051914092506117dd9184914291899060200193845260208401929092526040830152606082015260800190565b60408051808303601f19018152828252805160209182012060016006918290068101600c81905560095484870188905242878701819052606088019190915260808088018d90528651808903909101815260a0880187528051908601208490068301600d8190554460c089015260e0880191909152436101008801526101208088018d90528651808903909101815261014090970190955285519590930194909420908106909301600e819055929650919450600b916118a89186916118a291611677565b90611677565b10156118b8576000600b556118be565b6001600b555b50504260109081556009546000908152600360208190526040909120600a548155600b546001820155600c546002820155600d5491810191909155600e546004820155600f546005820155905460068201556011546007820155601254600890910155505050565b600f5461194190611938906032611d7d565b60085490611677565b600855565b600954611954906001611677565b600955604080516101208101825242808252600060208301819052928201839052606082018390526080820183905260a0820183905260c0820183905260e08201839052610100909101829052600a55600b819055600c819055600d819055600e819055600f819055601081905560118190556012556013805460ff19169055565b6040516001600160a01b0380851660248301528316604482015260648101829052611a0e9085906323b872dd60e01b90608401611702565b50505050565b3360008181526004602081815260408084206009805486529083528185208054600180820183559187528487208951918702019081558885015181830155888401516002808301919091556060808b01516003938401559354885260068652848820855180870187528b81528088019a8b5281548086018355918a5298879020985180516005909202909901908155958801519286019290925592860151908401559390930151928101929092559151910180546001600160a01b0319166001600160a01b039092169190911790558051611b00576040810151601154611afa91611677565b60115550565b6040810151601254611b1191611677565b60125550565b600754611b6257600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b03191633179055565b600754600b1180611bd5575060078054600591600091611b839060016111cd565b81548110611ba157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282810193909352604091820181205433825260059093522054115b1561178a57338060005b600754811015611ce7576005600060078381548110611c0e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03908116845283820194909452604092830182205493871682526005905220541115611cd557600060078281548110611c6c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600780546001600160a01b039092169250859184908110611ca957634e487b7160e01b600052603260045260246000fd5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905592505b80611cdf816123d0565b915050611bdf565b50600754600a1115611d3f57600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0384161790555b5050565b60008184841115611d675760405162461bcd60e51b81526004016108ec91906122de565b506000611d74848661238d565b95945050505050565b600061120f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f10565b600082611dce575060006107ec565b6000611dda838561236e565b905082611de7858361234e565b1461120f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108ec565b6000611e93826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611f3e9092919063ffffffff16565b8051909150156117395780806020019051810190611eb19190612144565b6117395760405162461bcd60e51b815260206004820152602a60248201527f5361666542455032303a204245503230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108ec565b60008183611f315760405162461bcd60e51b81526004016108ec91906122de565b506000611d74848661234e565b6060611f4d8484600085611f55565b949350505050565b6060611f6085612048565b611fac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108ec565b600080866001600160a01b03168587604051611fc8919061219d565b60006040518083038185875af1925050503d8060008114612005576040519150601f19603f3d011682016040523d82523d6000602084013e61200a565b606091505b5091509150811561201e579150611f4d9050565b80511561202e5780518082602001fd5b8360405162461bcd60e51b81526004016108ec91906122de565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611f4d575050151592915050565b5080546000825590600052602060002090810190610b5491905b808211156120af576000815560010161209b565b5090565b80356001600160a01b03811681146120ca57600080fd5b919050565b6000602082840312156120e0578081fd5b61120f826120b3565b600080604083850312156120fb578081fd5b612104836120b3565b946020939093013593505050565b600080600060608486031215612126578081fd5b61212f846120b3565b95602085013595506040909401359392505050565b600060208284031215612155578081fd5b8151801515811461120f578182fd5b600060208284031215612175578081fd5b5035919050565b6000806040838503121561218e578182fd5b50508035926020909101359150565b600082516121af8184602087016123a4565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156121fa5783516001600160a01b0316835292840192918401916001016121d5565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156121fa578351612258848251805182526020810151602083015260408101516040830152606081015160608301525050565b8501516001600160a01b031660808401529284019260a090920191600101612222565b6020808252825182820181905260009190848201906040850190845b818110156121fa576122cb838551805182526020810151602083015260408101516040830152606081015160608301525050565b9284019260809290920191600101612297565b60208152600082518060208401526122fd8160408501602087016123a4565b601f01601f19169190910160400192915050565b6020808252600b908201526a61646d696e3a207775743f60a81b604082015260600190565b60008219821115612349576123496123eb565b500190565b60008261236957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612388576123886123eb565b500290565b60008282101561239f5761239f6123eb565b500390565b60005b838110156123bf5781810151838201526020016123a7565b83811115611a0e5750506000910152565b60006000198214156123e4576123e46123eb565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212206c0facd26229402a68e6995304176dfef88d18fd1a375a6e7bc5f8e4ae8fc9b564736f6c6343000804003300000000000000000000000020f7b3c0724c95960340a4575f537e6a420fb4c1

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

00000000000000000000000020f7b3c0724c95960340a4575f537e6a420fb4c1
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000020f7b3c0724c95960340a4575f537e6a420fb4c1


Deployed ByteCode Sourcemap

17840:11331:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18817:66;;;;;;:::i;:::-;;:::i;:::-;;;;5818:25:1;;;5874:2;5859:18;;5852:34;;;;5902:18;;;5895:34;5960:2;5945:18;;5938:34;5805:3;5790:19;18817:66:0;;;;;;;;19105:24;;;;;;;;;13265:25:1;;;13253:2;13238:18;19105:24:0;13220:76:1;19071:27:0;;;;;;21043:120;;;:::i;:::-;;;;;;12496:4:1;12538:3;12527:9;12523:19;12515:27;;12575:6;12569:13;12558:9;12551:32;12639:4;12631:6;12627:17;12621:24;12614:4;12603:9;12599:20;12592:54;12702:4;12694:6;12690:17;12684:24;12677:4;12666:9;12662:20;12655:54;12765:4;12757:6;12753:17;12747:24;12740:4;12729:9;12725:20;12718:54;12828:4;12820:6;12816:17;12810:24;12803:4;12792:9;12788:20;12781:54;12891:4;12883:6;12879:17;12873:24;12866:4;12855:9;12851:20;12844:54;12954:4;12946:6;12942:17;12936:24;12929:4;12918:9;12914:20;12907:54;13017:4;13009:6;13005:17;12999:24;12992:4;12981:9;12977:20;12970:54;13043:6;13103:2;13095:6;13091:15;13085:22;13080:2;13069:9;13065:18;13058:50;;12505:609;;;;;23661:756:0;;;;;;:::i;:::-;;:::i;18759:51::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14321:25:1;;;14377:2;14362:18;;14355:34;;;;14405:18;;;14398:34;;;;14463:2;14448:18;;14441:34;;;;14506:3;14491:19;;14484:35;;;;14550:3;14535:19;;14528:35;14594:3;14579:19;;14572:35;14638:3;14623:19;;14616:35;14682:3;14667:19;;14660:35;14308:3;14293:19;18759:51:0;14275:426:1;18697:22:0;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2469:32:1;;;2451:51;;2439:2;2424:18;18697:22:0;2406:102:1;28751:160:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19825:89::-;;;;;;:::i;:::-;;:::i;:::-;;19136:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28108:186;;;:::i;18726:26::-;;;;;-1:-1:-1;;;;;18726:26:0;;;28917:143;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20698:339::-;;;;;;:::i;:::-;;:::i;18913:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;13475:25:1;;;13531:2;13516:18;;13509:34;;;;13448:18;18913:52:0;13430:119:1;23266:389:0;;;:::i;19172:42::-;;;;;;;;;;;;5560:14:1;;5553:22;5535:41;;5523:2;5508:18;19172:42:0;5490:92:1;29066:102:0;;;:::i;:::-;;;;;;;:::i;18972:63::-;;;;;;:::i;:::-;;:::i;:::-;;;;1834:12:1;;1822:25;;1896:4;1885:16;;;1879:23;1863:14;;;1856:47;1941:16;;;1935:23;1919:14;;;1912:47;;;;2008:4;1997:16;;;1991:23;1975:14;;;1968:47;;;;-1:-1:-1;;;;;12308:32:1;12302:3;12287:19;;12280:61;12212:3;12197:19;18972:63:0;12179:168:1;20196:139:0;;;;;;:::i;:::-;-1:-1:-1;;;;;20285:21:0;20259:7;20285:21;;;:12;:21;;;;;:35;;:42;;20196:139;19221:30;;;;;;;;;;;;20054:130;;;:::i;25802:959::-;;;;;;:::i;:::-;;:::i;19920:128::-;;;:::i;28300:445::-;;;;;;:::i;:::-;;:::i;18663:27::-;;;;;-1:-1:-1;;;;;18663:27:0;;;18817:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18817:66:0;-1:-1:-1;18817:66:0;;-1:-1:-1;18817:66:0;:::o;21043:120::-;21093:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21093:16:0;21128:13;:27;21142:12;21152:1;21142:5;;:9;;:12;;;;:::i;:::-;21128:27;;;;;;;;;;;21121:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21043:120;:::o;23661:756::-;-1:-1:-1;;;;;23784:21:0;;23725:7;23784:21;;;:12;:21;;;;;:35;;:42;23725:7;;23784:44;23781:589;;23844:22;23885:26;23914:12;23924:1;23914:5;;:9;;:12;;;;:::i;:::-;23885:41;;23945:6;23941:418;-1:-1:-1;;;;;23958:21:0;;;;;;:12;:21;;;;;:35;;:42;23956:44;;23941:418;;;-1:-1:-1;;;;;24027:21:0;;;;;;:12;:21;;;;;:35;;:38;;24066:14;;24027:35;24063:1;;24027:38;;;;-1:-1:-1;;;24027:38:0;;;;;;;;;;;;;;;;;:53;:115;;;;-1:-1:-1;;;;;;24084:21:0;;;;;;:12;:21;;;;;:35;;:38;;24124:18;;24084:35;24120:1;;24084:38;;;;-1:-1:-1;;;24084:38:0;;;;;;;;;;;;;;;;;:58;;24027:115;24024:320;;;-1:-1:-1;;;;;24183:21:0;;;;;;:12;:21;;;;;:35;;:38;;24219:1;;24183:38;;;;-1:-1:-1;;;24183:38:0;;;;;;;;;;;;;;;;;24166:55;;24259:65;24276:47;24300:14;24315:7;24276:23;:47::i;:::-;24259:12;;:16;:65::i;:::-;24244:80;;24024:320;24001:3;;;;:::i;:::-;;;;23941:418;;;;23781:589;;;24387:12;23661:756;-1:-1:-1;;23661:756:0:o;18697:22::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18697:22:0;;-1:-1:-1;18697:22:0;:::o;28751:160::-;-1:-1:-1;;;;;28878:17:0;;;;;;:8;:17;;;;;;;;:25;;;;;;;;28871:32;;;;;;;;;;;;;;;;;28841:18;;28871:32;;28878:25;;28871:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28751:160;;;;:::o;19825:89::-;19607:12;;-1:-1:-1;;;;;19607:12:0;19593:10;:26;19585:50;;;;-1:-1:-1;;;19585:50:0;;;;;;;:::i;:::-;;;;;;;;;19888:12:::1;:18:::0;;-1:-1:-1;;;;;;19888:18:0::1;-1:-1:-1::0;;;;;19888:18:0;;;::::1;::::0;;;::::1;::::0;;19825:89::o;28108:186::-;19607:12;;-1:-1:-1;;;;;19607:12:0;19593:10;:26;19585:50;;;;-1:-1:-1;;;19585:50:0;;;;;;;:::i;:::-;28178:1:::1;28169:8;;:10;28161:42;;;::::0;-1:-1:-1;;;28161:42:0;;11151:2:1;28161:42:0::1;::::0;::::1;11133:21:1::0;11190:2;11170:18;;;11163:30;-1:-1:-1;;;11209:18:1;;;11202:50;11269:18;;28161:42:0::1;11123:170:1::0;28161:42:0::1;28240:12;::::0;28254:8:::1;::::0;28214:12:::1;::::0;:49:::1;::::0;-1:-1:-1;;;;;28214:12:0;;::::1;::::0;28240;::::1;::::0;28214:25:::1;:49::i;:::-;28285:1;28274:8;:12:::0;28108:186::o;28917:143::-;28984:25;29028:16;:24;29045:6;29028:24;;;;;;;;;;;29021:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29021:31:0;;;;;;;;;;;;;;;;;;;;;;28917:143;;;:::o;20698:339::-;19607:12;;-1:-1:-1;;;;;19607:12:0;19593:10;:26;19585:50;;;;-1:-1:-1;;;19585:50:0;;;;;;;:::i;:::-;20774:16:::1;:14;:16::i;:::-;20809:10;::::0;::::1;::::0;::::1;;;20801:43;;;::::0;-1:-1:-1;;;20801:43:0;;9012:2:1;20801:43:0::1;::::0;::::1;8994:21:1::0;9051:2;9031:18;;;9024:30;-1:-1:-1;;;9070:18:1;;;9063:51;9131:18;;20801:43:0::1;8984:171:1::0;20801:43:0::1;20879:12;:22:::0;:31:::1;::::0;20906:3:::1;20879:26;:31::i;:::-;20863:15;:47;20855:84;;;::::0;-1:-1:-1;;;20855:84:0;;8658:2:1;20855:84:0::1;::::0;::::1;8640:21:1::0;8697:2;8677:18;;;8670:30;8736:27;8716:18;;;8709:55;8781:18;;20855:84:0::1;8630:175:1::0;20855:84:0::1;20950:42;20970:21;20950:19;:42::i;:::-;21003:8;:6;:8::i;:::-;21022:7;:5;:7::i;:::-;20698:339:::0;:::o;23266:389::-;19450:8;;19462:1;19450:13;19442:39;;;;-1:-1:-1;;;19442:39:0;;11858:2:1;19442:39:0;;;11840:21:1;11897:2;11877:18;;;11870:30;-1:-1:-1;;;11916:18:1;;;11909:43;11969:18;;19442:39:0;11830:163:1;19442:39:0;19503:1;19492:8;:12;;;23335:28:::1;23352:10;23335:16;:28::i;:::-;23311:52;;23396:1;23382:13;:15;23374:43;;;::::0;-1:-1:-1;;;23374:43:0;;7968:2:1;23374:43:0::1;::::0;::::1;7950:21:1::0;8007:2;7987:18;;;7980:30;-1:-1:-1;;;8026:18:1;;;8019:46;8082:18;;23374:43:0::1;7940:166:1::0;23374:43:0::1;23428:12;::::0;:52:::1;::::0;-1:-1:-1;;;;;23428:12:0::1;23454:10;23466:13:::0;23428:25:::1;:52::i;:::-;23546:10;23533:24;::::0;;;:12:::1;:24;::::0;;;;:39:::1;;::::0;:58:::1;::::0;23577:13;23533:43:::1;:58::i;:::-;23504:10;23491:24;::::0;;;:12:::1;:24;::::0;;;;:39:::1;::::0;::::1;:100:::0;;;;23602:45:::1;::::0;23609:38:::1;;::::0;23602:45:::1;:::i;:::-;-1:-1:-1::0;19538:1:0;19527:8;:12;23266:389::o;29066:102::-;29113:16;29148:12;29141:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29141:19:0;;;;;;;;;;;;;;;;;;;;;;;29066:102;:::o;18972:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18972:63:0;;-1:-1:-1;18972:63:0;:::o;20054:130::-;19607:12;;-1:-1:-1;;;;;19607:12:0;19593:10;:26;19585:50;;;;-1:-1:-1;;;19585:50:0;;;;;;;:::i;:::-;20112:10:::1;::::0;::::1;::::0;::::1;;;20104:43;;;::::0;-1:-1:-1;;;20104:43:0;;9012:2:1;20104:43:0::1;::::0;::::1;8994:21:1::0;9051:2;9031:18;;;9024:30;-1:-1:-1;;;9070:18:1;;;9063:51;9131:18;;20104:43:0::1;8984:171:1::0;20104:43:0::1;20158:10;:18:::0;;-1:-1:-1;;20158:18:0::1;::::0;;20054:130::o;25802:959::-;19450:8;;19462:1;19450:13;19442:39;;;;-1:-1:-1;;;19442:39:0;;11858:2:1;19442:39:0;;;11840:21:1;11897:2;11877:18;;;11870:30;-1:-1:-1;;;11916:18:1;;;11909:43;11969:18;;19442:39:0;11830:163:1;19442:39:0;19503:1;19492:8;:12;19703:22:::1;::::0;::::1;;19702:23;:74:::0;::::1;;;-1:-1:-1::0;19746:12:0::1;:22:::0;:30:::1;::::0;19773:2:::1;19746:26;:30::i;:::-;19729:15;:47;19702:74;19693:106;;;::::0;-1:-1:-1;;;19693:106:0;;9362:2:1;19693:106:0::1;::::0;::::1;9344:21:1::0;9401:2;9381:18;;;9374:30;-1:-1:-1;;;9420:18:1;;;9413:49;9479:18;;19693:106:0::1;9334:169:1::0;19693:106:0::1;25890:10:::2;::::0;::::2;::::0;::::2;;;25882:38;;;::::0;-1:-1:-1;;;25882:38:0;;8313:2:1;25882:38:0::2;::::0;::::2;8295:21:1::0;8352:2;8332:18;;;8325:30;-1:-1:-1;;;8371:18:1;;;8364:46;8427:18;;25882:38:0::2;8285:166:1::0;25882:38:0::2;25944:1;25939:4;:6;25931:55;;;::::0;-1:-1:-1;;;25931:55:0;;7206:2:1;25931:55:0::2;::::0;::::2;7188:21:1::0;7245:2;7225:18;;;7218:30;7284:34;7264:18;;;7257:62;-1:-1:-1;;;7335:18:1;;;7328:35;7380:19;;25931:55:0::2;7178:227:1::0;25931:55:0::2;26014:10;26005:20;::::0;;;:8:::2;:20;::::0;;;;;;;26026:5:::2;::::0;26005:27;;;;;;;:34;:37;25997:70:::2;;;::::0;-1:-1:-1;;;25997:70:0;;9710:2:1;25997:70:0::2;::::0;::::2;9692:21:1::0;9749:2;9729:18;;;9722:30;-1:-1:-1;;;9768:18:1;;;9761:51;9829:18;;25997:70:0::2;9682:171:1::0;25997:70:0::2;26090:12;::::0;:64:::2;::::0;-1:-1:-1;;;;;26090:12:0::2;26120:10;26140:4;26147:6:::0;26090:29:::2;:64::i;:::-;26168:7:::0;26165:234:::2;;26201:66;::::0;;::::2;::::0;::::2;::::0;;;;;26216:15:::2;26201:66;::::0;::::2;::::0;;;;;;;26239:27;;26201:66;;;;26191:77:::2;::::0;:9:::2;:77::i;:::-;26165:234;;;26319:67;::::0;;::::2;::::0;::::2;::::0;;;;;26334:15:::2;26319:67;::::0;::::2;::::0;;;;;;;26357:28;;26319:67;;;;26309:78:::2;::::0;:9:::2;:78::i;:::-;26447:10;26434:24;::::0;;;:12:::2;:24;::::0;;;;:37;26431:93:::2;;26490:5;:22:::0;;;;::::2;::::0;;-1:-1:-1;26490:22:0;;;;;::::2;::::0;;-1:-1:-1;;;;;;26490:22:0::2;26501:10;26490:22;::::0;;26431:93:::2;26587:10;26574:24;::::0;;;:12:::2;:24;::::0;;;;:37;:49:::2;::::0;26616:6;26574:41:::2;:49::i;:::-;26547:10;26534:24;::::0;;;:12:::2;:24;::::0;;;;;;:89;;;26678:5:::2;::::0;26634:38:::2;::::0;;::::2;:50:::0;;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;26695:21:::2;:19;:21::i;:::-;26727:16;:14;:16::i;:::-;-1:-1:-1::0;;19538:1:0;19527:8;:12;25802:959::o;19920:128::-;19607:12;;-1:-1:-1;;;;;19607:12:0;19593:10;:26;19585:50;;;;-1:-1:-1;;;19585:50:0;;;;;;;:::i;:::-;19978:10:::1;::::0;::::1;::::0;::::1;;;19977:11;19969:43;;;::::0;-1:-1:-1;;;19969:43:0;;10462:2:1;19969:43:0::1;::::0;::::1;10444:21:1::0;10501:2;10481:18;;;10474:30;-1:-1:-1;;;10520:18:1;;;10513:50;10580:18;;19969:43:0::1;10434:170:1::0;19969:43:0::1;20023:10;:17:::0;;-1:-1:-1;;20023:17:0::1;;;::::0;;19920:128::o;28300:445::-;28397:7;;;28454:253;-1:-1:-1;;;;;28469:17:0;;;;;;:8;:17;;;;;;;;:25;;;;;;;;:32;28467:34;;28454:253;;;-1:-1:-1;;;;;28548:17:0;;28521:24;28548:17;;;:8;:17;;;;;;;;:25;;;;;;;;:28;;28574:1;;28548:28;;;;-1:-1:-1;;;28548:28:0;;;;;;;;;;;;;;;;;;;28521:55;;28608:4;28594:6;:10;;;:18;28591:104;;;28666:12;;;;28648:31;;:13;;:17;:31::i;:::-;28632:47;;28591:104;-1:-1:-1;28502:3:0;;;;:::i;:::-;;;;28454:253;;;-1:-1:-1;28724:13:0;28300:445;-1:-1:-1;;;;28300:445:0:o;1602:136::-;1660:7;1687:43;1691:1;1694;1687:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1680:50;1602:136;-1:-1:-1;;;1602:136:0:o;24423:1373::-;24510:7;;;24570:1174;-1:-1:-1;;;;;24585:17:0;;;;;;:8;:17;;;;;;;;:25;;;;;;;;:32;24583:34;;24570:1174;;;24683:21;;;;:13;:21;;;;;;;;:33;;;-1:-1:-1;;;;;24640:17:0;;;;:8;:17;;;;;:25;;;;;;;;;:28;;24666:1;;24640:28;;;;-1:-1:-1;;;24640:28:0;;;;;;;;;;;;;;;;;;;:41;;;:76;24637:1096;;-1:-1:-1;;;;;24778:17:0;;;;;;:8;:17;;;;;;;;:25;;;;;;;;:28;;24756:57;;24778:25;24804:1;;24778:28;;;;-1:-1:-1;;;24778:28:0;;;;;;;;;;;;;;;;;;;:34;;;24756:17;:21;;:57;;;;:::i;:::-;24736:77;;24637:1096;;;24933:21;;;;:13;:21;;;;;;;;:33;;;-1:-1:-1;;;;;24897:17:0;;;;:8;:17;;;;;:25;;;;;;;;;:28;;24851:81;;24897:25;24923:1;;24897:28;;;;-1:-1:-1;;;24897:28:0;;;;;;;;;;;;;;;;;;;;;;:34;;;-1:-1:-1;;;;;24851:17:0;;;;;;;;;;;:25;;;;;;;;;:28;;24877:1;;24851:28;;;;-1:-1:-1;;;24851:28:0;;;;;;;;;;;;;;;;;;;:41;;;:45;;:81;;;;:::i;:::-;:115;24848:885;;;-1:-1:-1;;;;;25047:17:0;;24988:18;25047:17;;;:8;:17;;;;;;;;:25;;;;;;;;:28;;25009:80;;25047:25;25073:1;;25047:28;;;;-1:-1:-1;;;25047:28:0;;;;;;;;;;;;;;;;;:41;:28;;;;;:41;;;25009:21;;;;;;;;;;:33;;;;:37;:80::i;:::-;-1:-1:-1;;;;;25131:17:0;;25108:20;25131:17;;;:8;:17;;;;;;;;:25;;;;;;;;:28;;24988:101;;-1:-1:-1;25108:20:0;;25131:50;;24988:101;;25157:1;;25131:28;;;;-1:-1:-1;;;25131:28:0;;;;;;;;;;;;;;;;;;;:34;;;:38;;:50;;;;:::i;:::-;25108:73;-1:-1:-1;25220:35:0;:17;25108:73;25220:21;:35::i;:::-;25311:21;;;;:13;:21;;;;;;;;:32;;;-1:-1:-1;;;;;25277:17:0;;;;:8;:17;;;;;:25;;;;;;;;;:28;;25200:55;;-1:-1:-1;25311:32:0;;25303:1;;25277:28;;;;-1:-1:-1;;;25277:28:0;;;;;;;;;;;;;;;;;;;:32;;;:66;25274:184;;;25387:51;25409:28;25433:3;25409:19;:10;25424:3;25409:14;:19::i;:::-;:23;;:28::i;25387:51::-;25367:71;;25274:184;24848:885;;;;;25547:21;;;;:13;:21;;;;;;;;:32;;;-1:-1:-1;;;;;25513:17:0;;;;:8;:17;;;;;:25;;;;;;;;;:28;;25539:1;;25513:28;;;;-1:-1:-1;;;25513:28:0;;;;;;;;;;;;;;;;;;;:32;;;:66;25510:208;;;25623:75;25645:52;25693:3;25645:43;25684:3;25645:8;:17;25654:7;-1:-1:-1;;;;;25645:17:0;-1:-1:-1;;;;;25645:17:0;;;;;;;;;;;;:25;25663:6;25645:25;;;;;;;;;;;25671:1;25645:28;;;;;;-1:-1:-1;;;25645:28:0;;;;;;;;;;;;;;;;;;;:34;;;:38;;:43;;;;:::i;:52::-;25623:17;;:21;:75::i;:::-;25603:95;;25510:208;24618:3;;;;:::i;:::-;;;;24570:1174;;;-1:-1:-1;25761:17:0;24423:1373;-1:-1:-1;;;24423:1373:0:o;1138:181::-;1196:7;;1228:5;1232:1;1228;:5;:::i;:::-;1216:17;;1257:1;1252;:6;;1244:46;;;;-1:-1:-1;;;1244:46:0;;7612:2:1;1244:46:0;;;7594:21:1;7651:2;7631:18;;;7624:30;7690:29;7670:18;;;7663:57;7737:18;;1244:46:0;7584:177:1;14524:211:0;14668:58;;-1:-1:-1;;;;;3085:32:1;;14668:58:0;;;3067:51:1;3134:18;;;3127:34;;;14641:86:0;;14661:5;;-1:-1:-1;;;14691:23:0;3040:18:1;;14668:58:0;;;;-1:-1:-1;;14668:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14668:58:0;-1:-1:-1;;;;;;14668:58:0;;;;;;;;;;14641:19;:86::i;:::-;14524:211;;;:::o;20341:351::-;20390:22;;;;20389:23;:74;;;;-1:-1:-1;20432:12:0;:22;:31;;20459:3;20432:26;:31::i;:::-;20416:15;:47;20389:74;20386:289;;;20479:22;:29;;-1:-1:-1;;20479:29:0;20504:4;20479:29;;;20578:28;;20550:27;;:56;:113;;20635:28;;20550:113;;;20607:27;;20550:113;20523:24;:140;20386:289;20341:351::o;21169:1805::-;21247:19;;;21341:14;21354:1;21341:12;:14;:::i;:::-;21331:25;;-1:-1:-1;21367:19:0;21399:14;21412:1;21399:12;:14;:::i;:::-;21583:28;;21490:176;;21389:25;;;-1:-1:-1;21490:176:0;;21519:11;;21549:15;;21630:21;;21490:176;;5818:25:1;;;5874:2;5859:18;;5852:34;;;;5917:2;5902:18;;5895:34;5960:2;5945:18;;5938:34;5805:3;5790:19;;5772:206;21490:176:0;;;;;;;-1:-1:-1;;21490:176:0;;;;;;21466:211;;21490:176;21466:211;;;;21789:1;21786;21767:21;;;;21763:28;;21802:18;:33;;;21995:5;;21902:153;;;5818:25:1;;;21961:15:0;5859:18:1;;;5852:34;;;5902:18;;;5895:34;;;;5945:18;;;;5938:34;;;21902:153:0;;;;;;;;;;5790:19:1;;;21902:153:0;;21878:188;;;;;;22156:21;;;22152:28;;22191:18;:34;;;22322:16;22293:165;;;5818:25:1;5859:18;;;5852:34;;;;22391:12:0;5902:18:1;;;5895:34;5945:18;;;;5938:34;;;22293:165:0;;;;;;;;;;5790:19:1;;;;22293:165:0;;;22269:200;;;;;;;;;;22559:21;;;22555:28;;;22594:18;:34;;;22269:200;;-1:-1:-1;22555:28:0;;-1:-1:-1;22731:2:0;;22664:66;;22555:28;;22664:42;;:22;:42::i;:::-;:46;;:66::i;:::-;:69;22661:195;;;22775:1;22749:23;:27;22661:195;;;22843:1;22817:23;:27;22661:195;-1:-1:-1;;22905:15:0;22878:24;:42;;;22945:5;;22931:20;;;;:13;:20;;;;;;;;22878:12;22931:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22878:24;22931:35;;;;;;;;;;;;;;;;-1:-1:-1;;;21169:1805:0:o;23159:101::-;23219:24;;23206:46;;23219:32;;23248:2;23219:28;:32::i;:::-;23206:8;;;:12;:46::i;:::-;23195:8;:57;23159:101::o;22980:173::-;23023:5;;:12;;23033:1;23023:9;:12::i;:::-;23015:5;:20;23062:42;;;;;;;;23072:15;23062:42;;;-1:-1:-1;23062:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23046:12;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23115:22;:30;;-1:-1:-1;;23115:30:0;;;22980:173::o;14743:248::-;14914:68;;-1:-1:-1;;;;;2771:15:1;;;14914:68:0;;;2753:34:1;2823:15;;2803:18;;;2796:43;2855:18;;;2848:34;;;14887:96:0;;14907:5;;-1:-1:-1;;;14937:27:0;2688:18:1;;14914:68:0;2670:218:1;14887:96:0;14743:248;;;;:::o;26767:444::-;26839:10;26830:20;;;;:8;:20;;;;;;;;26851:5;;;26830:27;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26899:5;;26882:23;;:16;:23;;;;;26911:35;;;;;;;;;;;;;;;;26882:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26882:65:0;-1:-1:-1;;;;;26882:65:0;;;;;;;;;26962:10;;26959:245;;27054:12;;;;27022:27;;:45;;:31;:45::i;:::-;26992:27;:75;20698:339;:::o;26959:245::-;27174:12;;;;27141:28;;:46;;:32;:46::i;:::-;27110:28;:77;26767:444;:::o;27217:885::-;27279:12;:19;27276:809;;27317:12;:29;;;;;;;-1:-1:-1;27317:29:0;;;;;;;;-1:-1:-1;;;;;;27317:29:0;27335:10;27317:29;;;20341:351::o;27276:809::-;27376:12;:19;27396:2;-1:-1:-1;27376:22:0;:131;;-1:-1:-1;27453:12:0;27466:19;;27440:12;;:54;;27466:26;;27490:1;27466:23;:26::i;:::-;27453:40;;;;;;-1:-1:-1;;;27453:40:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27453:40:0;27440:54;;;;;;;;;;;;;;;:67;27415:10;27402:24;;:12;:24;;;;:37;:105;27376:131;27373:712;;;27557:10;;27533:21;27627:340;27642:12;:19;27640:21;;27627:340;;;27729:12;:29;27742:12;27755:1;27742:15;;;;;;-1:-1:-1;;;27742:15:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27742:15:0;;;27729:29;;;;;;;;;;;;;;;:42;27688:27;;;;;:12;:27;;;:40;:83;27685:267;;;27795:17;27815:12;27828:1;27815:15;;;;;;-1:-1:-1;;;27815:15:0;;;;;;;;;;;;;;;;;;;27853:12;:15;;-1:-1:-1;;;;;27815:15:0;;;;-1:-1:-1;27871:13:0;;27866:1;;27853:15;;;;-1:-1:-1;;;27853:15:0;;;;;;;;;;;;;;;;;;:31;;-1:-1:-1;;;;;;27853:31:0;-1:-1:-1;;;;;27853:31:0;;;;;;;;;;27923:9;-1:-1:-1;27685:267:0;27662:3;;;;:::i;:::-;;;;27627:340;;;-1:-1:-1;27984:12:0;:19;28004:2;-1:-1:-1;27981:93:0;;;28026:12;:32;;;;;;;-1:-1:-1;28026:32:0;;;;;;;;-1:-1:-1;;;;;;28026:32:0;-1:-1:-1;;;;;28026:32:0;;;;;27981:93;27373:712;;27217:885::o;2041:226::-;2161:7;2197:12;2189:6;;;;2181:29;;;;-1:-1:-1;;;2181:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2221:9:0;2233:5;2237:1;2233;:5;:::i;:::-;2221:17;2041:226;-1:-1:-1;;;;;2041:226:0:o;3473:132::-;3531:7;3558:39;3562:1;3565;3558:39;;;;;;;;;;;;;;;;;:3;:39::i;2526:471::-;2584:7;2829:6;2825:47;;-1:-1:-1;2859:1:0;2852:8;;2825:47;2884:9;2896:5;2900:1;2896;:5;:::i;:::-;2884:17;-1:-1:-1;2929:1:0;2920:5;2924:1;2884:17;2920:5;:::i;:::-;:10;2912:56;;;;-1:-1:-1;;;2912:56:0;;10060:2:1;2912:56:0;;;10042:21:1;10099:2;10079:18;;;10072:30;10138:34;10118:18;;;10111:62;-1:-1:-1;;;10189:18:1;;;10182:31;10230:19;;2912:56:0;10032:223:1;17059:774:0;17483:23;17509:69;17537:4;17509:69;;;;;;;;;;;;;;;;;17517:5;-1:-1:-1;;;;;17509:27:0;;;:69;;;;;:::i;:::-;17593:17;;17483:95;;-1:-1:-1;17593:21:0;17589:237;;17748:10;17737:30;;;;;;;;;;;;:::i;:::-;17729:85;;;;-1:-1:-1;;;17729:85:0;;6795:2:1;17729:85:0;;;6777:21:1;6834:2;6814:18;;;6807:30;6873:34;6853:18;;;6846:62;-1:-1:-1;;;6924:18:1;;;6917:40;6974:19;;17729:85:0;6767:232:1;4101:312:0;4221:7;4256:12;4249:5;4241:28;;;;-1:-1:-1;;;4241:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4280:9:0;4292:5;4296:1;4292;:5;:::i;11447:230::-;11584:12;11616:53;11639:6;11647:4;11653:1;11656:12;11616:22;:53::i;:::-;11609:60;11447:230;-1:-1:-1;;;;11447:230:0:o;12935:1020::-;13108:12;13141:18;13152:6;13141:10;:18::i;:::-;13133:60;;;;-1:-1:-1;;;13133:60:0;;11500:2:1;13133:60:0;;;11482:21:1;11539:2;11519:18;;;11512:30;11578:31;11558:18;;;11551:59;11627:18;;13133:60:0;11472:179:1;13133:60:0;13267:12;13281:23;13308:6;-1:-1:-1;;;;;13308:11:0;13327:8;13337:4;13308:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13266:76;;;;13357:7;13353:595;;;13388:10;-1:-1:-1;13381:17:0;;-1:-1:-1;13381:17:0;13353:595;13502:17;;:21;13498:439;;13765:10;13759:17;13826:15;13813:10;13809:2;13805:19;13798:44;13713:148;13908:12;13901:20;;-1:-1:-1;;;13901:20:0;;;;;;;;:::i;9642:641::-;9702:4;10183:20;;10013:66;10232:23;;;;;;:42;;-1:-1:-1;;10259:15:0;;;10224:51;-1:-1:-1;;9642:641:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:264::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;647:2;632:18;;;;619:32;;-1:-1:-1;;;480:177:1:o;662:332::-;739:6;747;755;808:2;796:9;787:7;783:23;779:32;776:2;;;829:6;821;814:22;776:2;857:29;876:9;857:29;:::i;:::-;847:39;933:2;918:18;;905:32;;-1:-1:-1;984:2:1;969:18;;;956:32;;766:228;-1:-1:-1;;;766:228:1:o;999:297::-;1066:6;1119:2;1107:9;1098:7;1094:23;1090:32;1087:2;;;1140:6;1132;1125:22;1087:2;1177:9;1171:16;1230:5;1223:13;1216:21;1209:5;1206:32;1196:2;;1257:6;1249;1242:22;1301:190;1360:6;1413:2;1401:9;1392:7;1388:23;1384:32;1381:2;;;1434:6;1426;1419:22;1381:2;-1:-1:-1;1462:23:1;;1371:120;-1:-1:-1;1371:120:1:o;1496:258::-;1564:6;1572;1625:2;1613:9;1604:7;1600:23;1596:32;1593:2;;;1646:6;1638;1631:22;1593:2;-1:-1:-1;;1674:23:1;;;1744:2;1729:18;;;1716:32;;-1:-1:-1;1583:171:1:o;2026:274::-;2155:3;2193:6;2187:13;2209:53;2255:6;2250:3;2243:4;2235:6;2231:17;2209:53;:::i;:::-;2278:16;;;;;2163:137;-1:-1:-1;;2163:137:1:o;3172:661::-;3343:2;3395:21;;;3465:13;;3368:18;;;3487:22;;;3314:4;;3343:2;3566:15;;;;3540:2;3525:18;;;3314:4;3612:195;3626:6;3623:1;3620:13;3612:195;;;3691:13;;-1:-1:-1;;;;;3687:39:1;3675:52;;3782:15;;;;3747:12;;;;3723:1;3641:9;3612:195;;;-1:-1:-1;3824:3:1;;3323:510;-1:-1:-1;;;;;;3323:510:1:o;3838:837::-;4075:2;4127:21;;;4197:13;;4100:18;;;4219:22;;;4046:4;;4075:2;4298:15;;;;4272:2;4257:18;;;4046:4;4344:305;4358:6;4355:1;4352:13;4344:305;;;4423:6;4417:13;4443:43;4482:3;4477:2;4471:9;1840:5;1834:12;1829:3;1822:25;1896:4;1889:5;1885:16;1879:23;1872:4;1867:3;1863:14;1856:47;1952:4;1945:5;1941:16;1935:23;1928:4;1923:3;1919:14;1912:47;2008:4;2001:5;1997:16;1991:23;1984:4;1979:3;1975:14;1968:47;1812:209;;;4443:43;4532:11;;4526:18;-1:-1:-1;;;;;4522:44:1;4515:4;4506:14;;4499:68;4624:15;;;;4554:3;4587:14;;;;4563:1;4373:9;4344:305;;4680:710;4903:2;4955:21;;;5025:13;;4928:18;;;5047:22;;;4874:4;;4903:2;5126:15;;;;5100:2;5085:18;;;4874:4;5172:192;5186:6;5183:1;5180:13;5172:192;;;5235:47;5278:3;5269:6;5263:13;1840:5;1834:12;1829:3;1822:25;1896:4;1889:5;1885:16;1879:23;1872:4;1867:3;1863:14;1856:47;1952:4;1945:5;1941:16;1935:23;1928:4;1923:3;1919:14;1912:47;2008:4;2001:5;1997:16;1991:23;1984:4;1979:3;1975:14;1968:47;1812:209;;;5235:47;5339:15;;;;5311:4;5302:14;;;;;5208:1;5201:9;5172:192;;6205:383;6354:2;6343:9;6336:21;6317:4;6386:6;6380:13;6429:6;6424:2;6413:9;6409:18;6402:34;6445:66;6504:6;6499:2;6488:9;6484:18;6479:2;6471:6;6467:15;6445:66;:::i;:::-;6572:2;6551:15;-1:-1:-1;;6547:29:1;6532:45;;;;6579:2;6528:54;;6326:262;-1:-1:-1;;6326:262:1:o;10609:335::-;10811:2;10793:21;;;10850:2;10830:18;;;10823:30;-1:-1:-1;;;10884:2:1;10869:18;;10862:41;10935:2;10920:18;;10783:161::o;14706:128::-;14746:3;14777:1;14773:6;14770:1;14767:13;14764:2;;;14783:18;;:::i;:::-;-1:-1:-1;14819:9:1;;14754:80::o;14839:217::-;14879:1;14905;14895:2;;-1:-1:-1;;;14930:31:1;;14984:4;14981:1;14974:15;15012:4;14937:1;15002:15;14895:2;-1:-1:-1;15041:9:1;;14885:171::o;15061:168::-;15101:7;15167:1;15163;15159:6;15155:14;15152:1;15149:21;15144:1;15137:9;15130:17;15126:45;15123:2;;;15174:18;;:::i;:::-;-1:-1:-1;15214:9:1;;15113:116::o;15234:125::-;15274:4;15302:1;15299;15296:8;15293:2;;;15307:18;;:::i;:::-;-1:-1:-1;15344:9:1;;15283:76::o;15364:258::-;15436:1;15446:113;15460:6;15457:1;15454:13;15446:113;;;15536:11;;;15530:18;15517:11;;;15510:39;15482:2;15475:10;15446:113;;;15577:6;15574:1;15571:13;15568:2;;;-1:-1:-1;;15612:1:1;15594:16;;15587:27;15417:205::o;15627:135::-;15666:3;-1:-1:-1;;15687:17:1;;15684:2;;;15707:18;;:::i;:::-;-1:-1:-1;15754:1:1;15743:13;;15674:88::o;15767:127::-;15828:10;15823:3;15819:20;15816:1;15809:31;15859:4;15856:1;15849:15;15883:4;15880:1;15873:15

Swarm Source

ipfs://6c0facd26229402a68e6995304176dfef88d18fd1a375a6e7bc5f8e4ae8fc9b5
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading