ETH Price: $3,248.20 (-0.32%)
Gas: 1 Gwei

Contract

0x6DF426aF1FFdD1a028208B8E26A5721024E8E3c2
 
Transaction Hash
Method
Block
From
To
Approve177552232023-07-23 10:28:59370 days ago1690108139IN
0x6DF426aF...024E8E3c2
0 ETH0.0006100912.97467204
Approve174095342023-06-04 20:14:23419 days ago1685909663IN
0x6DF426aF...024E8E3c2
0 ETH0.0010259421.84619055
Approve173950122023-06-02 19:07:23421 days ago1685732843IN
0x6DF426aF...024E8E3c2
0 ETH0.0017871538.00679205
Approve173047002023-05-21 2:11:23434 days ago1684635083IN
0x6DF426aF...024E8E3c2
0 ETH0.0011821125.03728788
Approve173033332023-05-20 21:35:23434 days ago1684618523IN
0x6DF426aF...024E8E3c2
0 ETH0.0014352430.39874702
Claim Dividend172837402023-05-18 3:22:35437 days ago1684380155IN
0x6DF426aF...024E8E3c2
0 ETH0.0035358244.73633692
Approve172780842023-05-17 8:09:47437 days ago1684310987IN
0x6DF426aF...024E8E3c2
0 ETH0.0019902642.15407264
Approve172671182023-05-15 19:00:59439 days ago1684177259IN
0x6DF426aF...024E8E3c2
0 ETH0.0040157585.05434278
Approve172653212023-05-15 12:57:11439 days ago1684155431IN
0x6DF426aF...024E8E3c2
0 ETH0.0019595941.68464258
Approve172651212023-05-15 12:16:11439 days ago1684152971IN
0x6DF426aF...024E8E3c2
0 ETH0.002033743.0194763
Approve172584592023-05-14 13:41:47440 days ago1684071707IN
0x6DF426aF...024E8E3c2
0 ETH0.0019007640.42291249
Approve172547672023-05-14 1:03:23441 days ago1684026203IN
0x6DF426aF...024E8E3c2
0 ETH0.0014829731.5862515
Approve172547572023-05-14 1:01:23441 days ago1684026083IN
0x6DF426aF...024E8E3c2
0 ETH0.0015187932.34102264
Approve172547412023-05-14 0:57:59441 days ago1684025879IN
0x6DF426aF...024E8E3c2
0 ETH0.0015935933.93363443
Approve172547282023-05-14 0:55:23441 days ago1684025723IN
0x6DF426aF...024E8E3c2
0 ETH0.0014809431.53492458
Approve172547132023-05-14 0:52:23441 days ago1684025543IN
0x6DF426aF...024E8E3c2
0 ETH0.0016788835.74991036
Approve172547072023-05-14 0:51:11441 days ago1684025471IN
0x6DF426aF...024E8E3c2
0 ETH0.0016080534.25027905
Claim Dividend172546992023-05-14 0:49:35441 days ago1684025375IN
0x6DF426aF...024E8E3c2
0 ETH0.0042069132.27722359
Approve172546972023-05-14 0:49:11441 days ago1684025351IN
0x6DF426aF...024E8E3c2
0 ETH0.0014886531.69922556
Approve172546712023-05-14 0:43:59441 days ago1684025039IN
0x6DF426aF...024E8E3c2
0 ETH0.0015784733.61167603
Approve172546572023-05-14 0:41:11441 days ago1684024871IN
0x6DF426aF...024E8E3c2
0 ETH0.0014715831.33572552
Approve172546482023-05-14 0:39:23441 days ago1684024763IN
0x6DF426aF...024E8E3c2
0 ETH0.0015269132.34032397
Approve172545922023-05-14 0:28:11441 days ago1684024091IN
0x6DF426aF...024E8E3c2
0 ETH0.0016510834.9701862
Approve172545552023-05-14 0:20:47441 days ago1684023647IN
0x6DF426aF...024E8E3c2
0 ETH0.0015448132.89502795
Approve172545392023-05-14 0:17:35441 days ago1684023455IN
0x6DF426aF...024E8E3c2
0 ETH0.0016698435.36763401
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
180683512023-09-05 6:00:23326 days ago1693893623
0x6DF426aF...024E8E3c2
0.00314801 ETH
180683512023-09-05 6:00:23326 days ago1693893623
0x6DF426aF...024E8E3c2
0.00314801 ETH
177552282023-07-23 10:29:59370 days ago1690108199
0x6DF426aF...024E8E3c2
0.00324921 ETH
177552282023-07-23 10:29:59370 days ago1690108199
0x6DF426aF...024E8E3c2
0.00324921 ETH
174095352023-06-04 20:14:35419 days ago1685909675
0x6DF426aF...024E8E3c2
0.00335348 ETH
174095352023-06-04 20:14:35419 days ago1685909675
0x6DF426aF...024E8E3c2
0.00335348 ETH
173508992023-05-27 14:11:11427 days ago1685196671
0x6DF426aF...024E8E3c2
0.00341034 ETH
173508992023-05-27 14:11:11427 days ago1685196671
0x6DF426aF...024E8E3c2
0.00341034 ETH
172780852023-05-17 8:09:59437 days ago1684310999
0x6DF426aF...024E8E3c2
0.00357784 ETH
172780852023-05-17 8:09:59437 days ago1684310999
0x6DF426aF...024E8E3c2
0.00357784 ETH
172689882023-05-16 1:21:59439 days ago1684200119
0x6DF426aF...024E8E3c2
0.00364745 ETH
172689882023-05-16 1:21:59439 days ago1684200119
0x6DF426aF...024E8E3c2
0.00364745 ETH
172653222023-05-15 12:57:23439 days ago1684155443
0x6DF426aF...024E8E3c2
0.00377386 ETH
172653222023-05-15 12:57:23439 days ago1684155443
0x6DF426aF...024E8E3c2
0.00377386 ETH
172607232023-05-14 21:20:47440 days ago1684099247
0x6DF426aF...024E8E3c2
0.00388738 ETH
172607232023-05-14 21:20:47440 days ago1684099247
0x6DF426aF...024E8E3c2
0.00388738 ETH
172607112023-05-14 21:18:23440 days ago1684099103
0x6DF426aF...024E8E3c2
0.00393667 ETH
172607112023-05-14 21:18:23440 days ago1684099103
0x6DF426aF...024E8E3c2
0.00393667 ETH
172573312023-05-14 9:48:47440 days ago1684057727
0x6DF426aF...024E8E3c2
0.00393667 ETH
172573312023-05-14 9:48:47440 days ago1684057727
0x6DF426aF...024E8E3c2
0.00393667 ETH
172573312023-05-14 9:48:47440 days ago1684057727
0x6DF426aF...024E8E3c2
0.0042431 ETH
172573312023-05-14 9:48:47440 days ago1684057727
0x6DF426aF...024E8E3c2
0.0042431 ETH
172573312023-05-14 9:48:47440 days ago1684057727
0x6DF426aF...024E8E3c2
0.00441964 ETH
172573312023-05-14 9:48:47440 days ago1684057727
0x6DF426aF...024E8E3c2
0.00441964 ETH
172559182023-05-14 5:00:23440 days ago1684040423
0x6DF426aF...024E8E3c2
0.0045888 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RewardToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-13
*/

//SPDX-License-Identifier: Unlicensed
pragma solidity >=0.7.0 <0.9.0;

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

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {

        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }


    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");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // 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
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

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

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

    function allowance(
        address _owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

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

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeERC20 {
    using Address for address;

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

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

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

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract RewardToken is Context, IERC20 {
    using SafeERC20 for IERC20;
    struct Share {
        uint256 amount;
        uint256 realised;
        uint256 excluded;
    }
    struct Fee {
        uint16 rewardFee;
        uint16 marketingFee;
    }
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) public _balances;
    mapping(address => bool) liquidityPair;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isDividendExempt;
    mapping(address => bool) isMaxWalletExempt;
    mapping(address => uint256) shareholderClaims;
    mapping(address => Share) public shares;

    uint256 totalShares;
    uint256 totalDividends;
    uint256 totalDistributed;
    uint256 dividendsPerShare;
    uint256 dividendsPerShareAccuracyFactor = 10 ** 36;
    uint256 _totalSupply;
    uint256 public maxWallet;
    uint256 public maxTransaction;
    uint256 feeAmount;
    uint256 rewardFees;
    uint256 tokensToSwap;

    uint16 public buyFee = 200;
    uint16[2] buyFees = [5,195];
    uint16 public sellFee = 700;
    uint16[2] sellFees = [5,695];
    uint16 public transferFee;
    uint16[2] transferFees;
    uint16 currentFee;
    uint16 feeDenominator = 1000;

    bool inSwap;
    bool swapEnabled;
    bool feesEnabled;
    bool rewardsEnabled;
    bool tradingOpen;
    bool limitInPlace;
    IERC20 pepe = IERC20(0x6982508145454Ce325dDbE47a25d4ec3d2311933);
    address deployer;
    address public ownerWallet;

    string private _name;
    string private _symbol;

    IRouter router;

    modifier onlyOwner() {
        require(_msgSender() == ownerWallet, "You are not the owner");
        _;
    }

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(string memory name_, string memory symbol_, uint256 supply) {
        _name = name_;
        _symbol = symbol_;
        _mint(_msgSender(), supply * (10 ** 18));
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address pair = IFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        liquidityPair[pair] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(0xdead)] = true;

        isMaxWalletExempt[_msgSender()] = true;
        isMaxWalletExempt[address(this)] = true;
        isMaxWalletExempt[pair] = true;

        isFeeExempt[address(this)] = true;
        isFeeExempt[_msgSender()] = true;

        maxWallet = _totalSupply / 50;
        maxTransaction = _totalSupply / 100;

        _approve(address(this), address(router), type(uint256).max);
        _approve(_msgSender(), address(router), type(uint256).max);

        deployer = _msgSender();
        ownerWallet = _msgSender();
    }

    receive() external payable {}

    function name() public view override returns (string memory) {
        return _name;
    }

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

    function decimals() public pure override returns (uint8) {
        return 18;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address to,
        uint256 amount
    ) public override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function renounceOwnership() external onlyOwner {
        ownerWallet = address(0);
    }

    function transferOwnership(address newOwner) external onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address, use renounceOwnership Function"
        );

        if (balanceOf(ownerWallet) > 0)
            _transfer(ownerWallet, newOwner, balanceOf(ownerWallet));

        ownerWallet = newOwner;
    }

    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal view {
        if (limitInPlace) {
            if (!isMaxWalletExempt[to]) {
                require(
                    amount <= maxTransaction &&
                        balanceOf(to) + amount <= maxWallet,
                    "TOKEN: Amount exceeds Transaction size"
                );
            } else if (liquidityPair[to] && !isMaxWalletExempt[from]) {
                require(
                    amount <= maxTransaction,
                    "TOKEN: Amount exceeds Transaction size"
                );
            }
        }
    }

    function takeFee(
        address from,
        address to,
        uint256 amount
    ) internal returns (uint256 _amount) {
        if (isFeeExempt[to]) {
            return amount;
        }
        if (liquidityPair[to]) {
            currentFee = sellFee;
        } else if (liquidityPair[from]) {
            currentFee = buyFee;
        } else {
            currentFee = transferFee;
        }
        if (currentFee == 0) {
            return amount;
        }

        feeAmount = (amount * currentFee) / feeDenominator;
        uint256 fromBalance = _balances[from];
        unchecked {
            _balances[from] = fromBalance - feeAmount;
            _balances[address(this)] += feeAmount;
        }
        emit Transfer(from, address(this), feeAmount);
        if (rewardsEnabled) {
            rewardFees +=
                (feeAmount * (sellFees[0] + buyFees[0])) /
                (buyFee + sellFee);
        }
        return amount - feeAmount;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed += amount;
            pepe.safeTransfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].realised += amount;
            shares[shareholder].excluded = getCumulativeDividends(
                shares[shareholder].amount
            );

        }
    }

    function setShare(address shareholder, uint256 amount) internal {
        distributeDividend(shareholder);

        totalShares = (totalShares - shares[shareholder].amount) + amount;
        shares[shareholder].amount = amount;
        shares[shareholder].excluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function getUnpaidEarnings(
        address shareholder
    ) public view returns (uint256) {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].excluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends - shareholderTotalExcluded;
    }

    function getCumulativeDividends(
        uint256 share
    ) internal view returns (uint256) {
        return (share * dividendsPerShare) / dividendsPerShareAccuracyFactor;
    }

    function shouldSwap(address from) internal view returns (bool) {
        return
            !liquidityPair[from] &&
            swapEnabled &&
            !inSwap &&
            balanceOf(address(this)) >= tokensToSwap;
    }

    function swapBack() internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokensToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swap() internal swapping {
        if (rewardFees >= tokensToSwap) {
            uint256 balanceBefore = IERC20(pepe).balanceOf(address(this));
            swapBack();
            uint256 balance = address(this).balance;
            address[] memory path = new address[](2);
            path[0] = router.WETH();
            path[1] = address(pepe);
            router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: balance}(
                0,
                path,
                address(this),
                block.timestamp
            );
            uint256 amount = IERC20(pepe).balanceOf(address(this)) - balanceBefore;
            totalDividends += amount;
            dividendsPerShare = dividendsPerShare + ((dividendsPerShareAccuracyFactor * amount) / totalShares);            
        } else {
            swapBack();
            uint256 balance = address(this).balance;
            payable(deployer).transfer(balance);
        }
    }

    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            _balances[from] >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        if (!tradingOpen) {
            require(from == deployer, "Trading is not open");
        }
        _beforeTokenTransfer(from, to, amount);
        if (shouldSwap(from)) {
            swap();
        }

        uint256 amountSent = tradingOpen && feesEnabled && !isFeeExempt[from]
            ? takeFee(from, to, amount)
            : amount;
        uint256 fromBalance = _balances[from];
        unchecked {
            _balances[from] = fromBalance - amountSent;
            _balances[to] += amountSent;
        }
        emit Transfer(from, to, amountSent);

        if(!isDividendExempt[from]){
            setShare(from, _balances[from]);
        }        
        
        if(!isDividendExempt[to]){
            setShare(to, _balances[to]);
        }
    }

    function setLimits(
        bool inPlace,
        uint256 _maxTransaction,
        uint256 _maxWallet
    ) external onlyOwner {
        require(
            _maxTransaction >= 1 && _maxWallet > 1,
            "Max Transaction and Max Wallet must be over 1%"
        );
        maxTransaction = (_totalSupply * _maxTransaction) / 100;
        maxWallet = (_totalSupply * _maxWallet) / 100;
        limitInPlace = inPlace;
    }

    function setMaxWalletExempt(
        address wallet,
        bool exempt
    ) external onlyOwner {
        isMaxWalletExempt[wallet] = exempt;
    }

    function setFees(
        uint16[2] memory _buyFee,
        uint16[2] memory _sellFee,
        uint16[2] memory _transferFee,
        bool _feesEnabled
    ) external onlyOwner {
        require(_buyFee[0] + _buyFee[1] + _sellFee[0] + _sellFee[1] <= 400);
        sellFees = _sellFee;
        buyFees = _buyFee;
        transferFees = _transferFee;
        buyFee = _buyFee[0] + _buyFee[1];
        sellFee = _sellFee[0] + _sellFee[1];
        transferFee = _transferFee[0] + _transferFee[1];
        feesEnabled = _feesEnabled;
    }

    function setFeeExempt(address wallet, bool exempt) external onlyOwner {
        isFeeExempt[wallet] = exempt;
    }

    function setSwapSettings(
        bool _swapEnabled,
        bool _rewardsEnabled,
        uint256 numerator
    ) external onlyOwner {
        require(numerator <= 10000);
        swapEnabled = _swapEnabled;
        rewardsEnabled = _rewardsEnabled;
        tokensToSwap = (_totalSupply * numerator) / 10000;
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function claimDividendFor(address shareholder) external {
        distributeDividend(shareholder);
    }

    function setPair(address pairs, bool isPair) external onlyOwner {
        liquidityPair[pairs] = isPair;
    }

    function enableTrade() external onlyOwner {
        require(!tradingOpen);
        tradingOpen = true;
        limitInPlace = true;
        feesEnabled = true;
        swapEnabled = true;
        rewardsEnabled = true;
        tokensToSwap = (_totalSupply * 10) / (10000);
    }

    function getShareholderInfo(
        address shareholder
    ) external view returns (uint256, uint256, uint256, uint256) {
        return (
            totalShares,
            totalDistributed,
            shares[shareholder].amount,
            shares[shareholder].realised
        );
    }

    function setPepe(address _pepe) external onlyOwner {
        pepe = IERC20(_pepe);
    }

    function burn(uint256 amount) external {
        _burn(_msgSender(), amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"supply","type":"uint256"}],"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":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":"","type":"address"}],"name":"_balances","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"claimDividendFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getShareholderInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[2]","name":"_buyFee","type":"uint16[2]"},{"internalType":"uint16[2]","name":"_sellFee","type":"uint16[2]"},{"internalType":"uint16[2]","name":"_transferFee","type":"uint16[2]"},{"internalType":"bool","name":"_feesEnabled","type":"bool"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"inPlace","type":"bool"},{"internalType":"uint256","name":"_maxTransaction","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pairs","type":"address"},{"internalType":"bool","name":"isPair","type":"bool"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pepe","type":"address"}],"name":"setPepe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"},{"internalType":"bool","name":"_rewardsEnabled","type":"bool"},{"internalType":"uint256","name":"numerator","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"realised","type":"uint256"},{"internalType":"uint256","name":"excluded","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]

60806040526ec097ce7bc90715b34b9f1000000000600c5560c8601360006101000a81548161ffff021916908361ffff1602179055506040518060400160405280600560ff16815260200160c360ff1681525060149060026200006492919062000be2565b506102bc601560006101000a81548161ffff021916908361ffff1602179055506040518060400160405280600561ffff1681526020016102b761ffff168152506016906002620000b692919062000c85565b506103e8601960026101000a81548161ffff021916908361ffff160217905550736982508145454ce325ddbe47a25d4ec3d23119336019600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200013857600080fd5b50604051620062c2380380620062c283398181016040528101906200015e919062000eb7565b82601c90805190602001906200017692919062000d29565b5081601d90805190602001906200018f92919062000d29565b50620001c6620001a4620008c160201b60201c565b670de0b6b3a764000083620001ba91906200119d565b620008c960201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028657600080fd5b505afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000e85565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034557600080fd5b505afa1580156200035a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000380919062000e85565b306040518363ffffffff1660e01b8152600401620003a092919062000fe8565b602060405180830381600087803b158015620003bb57600080fd5b505af1158015620003d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f6919062000e85565b90506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600062000570620008c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000620006df620008c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506032600d5462000741919062001165565b600e819055506064600d5462000758919062001165565b600f81905550620007b330601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000a1060201b60201c565b62000817620007c7620008c160201b60201c565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000a1060201b60201c565b62000827620008c160201b60201c565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000877620008c160201b60201c565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050620014ba565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200093c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009339062001059565b60405180910390fd5b80600d600082825462000950919062001108565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a0491906200107b565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000a83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a7a9062001037565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aed9062001015565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000bd591906200107b565b60405180910390a3505050565b826002600f0160109004810192821562000c725791602002820160005b8382111562000c4057835183826101000a81548161ffff021916908360ff160217905550926020019260020160208160010104928301926001030262000bff565b801562000c705782816101000a81549061ffff021916905560020160208160010104928301926001030262000c40565b505b50905062000c81919062000dba565b5090565b826002600f0160109004810192821562000d165791602002820160005b8382111562000ce457835183826101000a81548161ffff021916908361ffff160217905550926020019260020160208160010104928301926001030262000ca2565b801562000d145782816101000a81549061ffff021916905560020160208160010104928301926001030262000ce4565b505b50905062000d25919062000dba565b5090565b82805462000d379062001272565b90600052602060002090601f01602090048101928262000d5b576000855562000da7565b82601f1062000d7657805160ff191683800117855562000da7565b8280016001018555821562000da7579182015b8281111562000da657825182559160200191906001019062000d89565b5b50905062000db6919062000dba565b5090565b5b8082111562000dd557600081600090555060010162000dbb565b5090565b600062000df062000dea84620010c1565b62001098565b90508281526020810184848401111562000e0f5762000e0e6200139f565b5b62000e1c8482856200123c565b509392505050565b60008151905062000e358162001486565b92915050565b600082601f83011262000e535762000e526200139a565b5b815162000e6584826020860162000dd9565b91505092915050565b60008151905062000e7f81620014a0565b92915050565b60006020828403121562000e9e5762000e9d620013a9565b5b600062000eae8482850162000e24565b91505092915050565b60008060006060848603121562000ed35762000ed2620013a9565b5b600084015167ffffffffffffffff81111562000ef45762000ef3620013a4565b5b62000f028682870162000e3b565b935050602084015167ffffffffffffffff81111562000f265762000f25620013a4565b5b62000f348682870162000e3b565b925050604062000f478682870162000e6e565b9150509250925092565b62000f5c81620011fe565b82525050565b600062000f71602283620010f7565b915062000f7e82620013bf565b604082019050919050565b600062000f98602483620010f7565b915062000fa5826200140e565b604082019050919050565b600062000fbf601f83620010f7565b915062000fcc826200145d565b602082019050919050565b62000fe28162001232565b82525050565b600060408201905062000fff600083018562000f51565b6200100e602083018462000f51565b9392505050565b60006020820190508181036000830152620010308162000f62565b9050919050565b60006020820190508181036000830152620010528162000f89565b9050919050565b60006020820190508181036000830152620010748162000fb0565b9050919050565b600060208201905062001092600083018462000fd7565b92915050565b6000620010a4620010b7565b9050620010b28282620012a8565b919050565b6000604051905090565b600067ffffffffffffffff821115620010df57620010de6200136b565b5b620010ea82620013ae565b9050602081019050919050565b600082825260208201905092915050565b6000620011158262001232565b9150620011228362001232565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200115a5762001159620012de565b5b828201905092915050565b6000620011728262001232565b91506200117f8362001232565b9250826200119257620011916200130d565b5b828204905092915050565b6000620011aa8262001232565b9150620011b78362001232565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011f357620011f2620012de565b5b828202905092915050565b60006200120b8262001212565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200125c5780820151818401526020810190506200123f565b838111156200126c576000848401525b50505050565b600060028204905060018216806200128b57607f821691505b60208210811415620012a257620012a16200133c565b5b50919050565b620012b382620013ae565b810181811067ffffffffffffffff82111715620012d557620012d46200136b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6200149181620011fe565b81146200149d57600080fd5b50565b620014ab8162001232565b8114620014b757600080fd5b50565b614df880620014ca6000396000f3fe6080604052600436106101fc5760003560e01c80637367c4401161010d578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e14610768578063edf35253146107a5578063f0fc6bca146107ce578063f2fde38b146107e5578063f8b45b051461080e57610203565b8063a9059cbb14610696578063acb2ad6f146106d3578063c3f70b52146106fe578063ce7c2ac21461072957610203565b80638ebfc796116100dc5780638ebfc796146105da5780639335dcb71461060357806395d89b411461062e578063a457c2d71461065957610203565b80637367c440146105365780637537ccb61461055f578063756ba9d81461058857806386a22eff146105b157610203565b80632b14ca5611610190578063470624021161015f578063470624021461043a5780635e6056bb146104655780636ebcf607146104a557806370a08231146104e2578063715018a61461051f57610203565b80632b14ca561461037e578063313ce567146103a957806339509351146103d457806342966c681461041157610203565b806318160ddd116101cc57806318160ddd146102b057806323b872dd146102db578063261fe4d61461031857806328fd31981461034157610203565b806299d3861461020857806306fdde031461021f578063095ea7b31461024a57806310a8246d1461028757610203565b3661020357005b600080fd5b34801561021457600080fd5b5061021d610839565b005b34801561022b57600080fd5b50610234610995565b6040516102419190614117565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190613ae5565b610a27565b60405161027e91906140b0565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190613bb9565b610a4a565b005b3480156102bc57600080fd5b506102c5610b4a565b6040516102d29190614374565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613a52565b610b54565b60405161030f91906140b0565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a91906139b8565b610b83565b005b34801561034d57600080fd5b50610368600480360381019061036391906139b8565b610c5e565b6040516103759190614374565b60405180910390f35b34801561038a57600080fd5b50610393610d71565b6040516103a09190614359565b60405180910390f35b3480156103b557600080fd5b506103be610d85565b6040516103cb9190614465565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190613ae5565b610d8e565b60405161040891906140b0565b60405180910390f35b34801561041d57600080fd5b5061043860048036038101906104339190613c5f565b610dc5565b005b34801561044657600080fd5b5061044f610dd9565b60405161045c9190614359565b60405180910390f35b34801561047157600080fd5b5061048c600480360381019061048791906139b8565b610ded565b60405161049c9493929190614420565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c791906139b8565b610e8e565b6040516104d99190614374565b60405180910390f35b3480156104ee57600080fd5b50610509600480360381019061050491906139b8565b610ea6565b6040516105169190614374565b60405180910390f35b34801561052b57600080fd5b50610534610eef565b005b34801561054257600080fd5b5061055d60048036038101906105589190613b25565b610fca565b005b34801561056b57600080fd5b5061058660048036038101906105819190613aa5565b611253565b005b34801561059457600080fd5b506105af60048036038101906105aa9190613c0c565b611345565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190613aa5565b61148b565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190613aa5565b61157d565b005b34801561060f57600080fd5b5061061861166f565b604051610625919061406c565b60405180910390f35b34801561063a57600080fd5b50610643611695565b6040516106509190614117565b60405180910390f35b34801561066557600080fd5b50610680600480360381019061067b9190613ae5565b611727565b60405161068d91906140b0565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b89190613ae5565b61179e565b6040516106ca91906140b0565b60405180910390f35b3480156106df57600080fd5b506106e86117c1565b6040516106f59190614359565b60405180910390f35b34801561070a57600080fd5b506107136117d5565b6040516107209190614374565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b91906139b8565b6117db565b60405161075f939291906143e9565b60405180910390f35b34801561077457600080fd5b5061078f600480360381019061078a9190613a12565b611805565b60405161079c9190614374565b60405180910390f35b3480156107b157600080fd5b506107cc60048036038101906107c791906139b8565b61188b565b005b3480156107da57600080fd5b506107e3611897565b005b3480156107f157600080fd5b5061080c600480360381019061080791906139b8565b6118a2565b005b34801561081a57600080fd5b50610823611a78565b6040516108309190614374565b60405180910390f35b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661087a611a7e565b73ffffffffffffffffffffffffffffffffffffffff16146108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790614239565b60405180910390fd5b601960089054906101000a900460ff16156108ea57600080fd5b6001601960086101000a81548160ff0219169083151502179055506001601960096101000a81548160ff0219169083151502179055506001601960066101000a81548160ff0219169083151502179055506001601960056101000a81548160ff0219169083151502179055506001601960076101000a81548160ff021916908315150217905550612710600a600d5461098391906145f5565b61098d91906145c4565b601281905550565b6060601c80546109a49061472b565b80601f01602080910402602001604051908101604052809291908181526020018280546109d09061472b565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b5050505050905090565b600080610a32611a7e565b9050610a3f818585611a86565b600191505092915050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a8b611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890614239565b60405180910390fd5b612710811115610af057600080fd5b82601960056101000a81548160ff02191690831515021790555081601960076101000a81548160ff02191690831515021790555061271081600d54610b3591906145f5565b610b3f91906145c4565b601281905550505050565b6000600d54905090565b600080610b5f611a7e565b9050610b6c858285611c50565b610b77858585611cdc565b60019150509392505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc4611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190614239565b60405180910390fd5b806019600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610cb35760009050610d6c565b6000610d00600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612216565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050808211610d5b57600092505050610d6c565b8082610d67919061464f565b925050505b919050565b601560009054906101000a900461ffff1681565b60006012905090565b600080610d99611a7e565b9050610dba818585610dab8589611805565b610db5919061456e565b611a86565b600191505092915050565b610dd6610dd0611a7e565b8261223a565b50565b601360009054906101000a900461ffff1681565b600080600080600854600a54600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015493509350935093509193509193565b60016020528060005260406000206000915090505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f30611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90614239565b60405180910390fd5b6000601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661100b611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890614239565b60405180910390fd5b610190836001600281106110785761107761481b565b5b6020020151846000600281106110915761109061481b565b5b6020020151866001600281106110aa576110a961481b565b5b6020020151876000600281106110c3576110c261481b565b5b60200201516110d29190614536565b6110dc9190614536565b6110e69190614536565b61ffff1611156110f557600080fd5b8260169060026111069291906137d9565b508360149060026111189291906137d9565b5081601890600261112a9291906137d9565b508360016002811061113f5761113e61481b565b5b6020020151846000600281106111585761115761481b565b5b60200201516111679190614536565b601360006101000a81548161ffff021916908361ffff160217905550826001600281106111975761119661481b565b5b6020020151836000600281106111b0576111af61481b565b5b60200201516111bf9190614536565b601560006101000a81548161ffff021916908361ffff160217905550816001600281106111ef576111ee61481b565b5b6020020151826000600281106112085761120761481b565b5b60200201516112179190614536565b601760006101000a81548161ffff021916908361ffff16021790555080601960066101000a81548160ff02191690831515021790555050505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611294611a7e565b73ffffffffffffffffffffffffffffffffffffffff16146112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190614239565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611386611a7e565b73ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d390614239565b60405180910390fd5b600182101580156113ed5750600181115b61142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390614219565b60405180910390fd5b606482600d5461143c91906145f5565b61144691906145c4565b600f81905550606481600d5461145c91906145f5565b61146691906145c4565b600e8190555082601960096101000a81548160ff021916908315150217905550505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114cc611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151990614239565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115be611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90614239565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060601d80546116a49061472b565b80601f01602080910402602001604051908101604052809291908181526020018280546116d09061472b565b801561171d5780601f106116f25761010080835404028352916020019161171d565b820191906000526020600020905b81548152906001019060200180831161170057829003601f168201915b5050505050905090565b600080611732611a7e565b905060006117408286611805565b905083811015611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c90614339565b60405180910390fd5b6117928286868403611a86565b60019250505092915050565b6000806117a9611a7e565b90506117b6818585611cdc565b600191505092915050565b601760009054906101000a900461ffff1681565b600f5481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611894816123f2565b50565b6118a0336123f2565b565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118e3611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090614239565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090614159565b60405180910390fd5b60006119d6601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ea6565b1115611a3457611a33601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611a2e601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ea6565b611cdc565b5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed906142d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d90614199565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c439190614374565b60405180910390a3505050565b6000611c5c8484611805565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cd65781811015611cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbf906141b9565b60405180910390fd5b611cd58484848403611a86565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d43906142b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db390614139565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906141d9565b60405180910390fd5b601960089054906101000a900460ff16611ee357601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed990614299565b60405180910390fd5b5b611eee8383836125f2565b611ef7836127b8565b15611f0557611f04612856565b5b6000601960089054906101000a900460ff168015611f2f5750601960069054906101000a900460ff165b8015611f855750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f8f5781611f9b565b611f9a848484612d19565b5b90506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818103600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120d19190614374565b60405180910390a3600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121745761217385600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613152565b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661220f5761220e84600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613152565b5b5050505050565b6000600c54600b548361222991906145f5565b61223391906145c4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190614279565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232890614179565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600d60008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123e59190614374565b60405180910390a3505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415612442576125ef565b600061244d82610c5e565b905060008111156125ed5780600a600082825461246a919061456e565b925050819055506124be82826019600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166132989092919063ffffffff16565b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254612554919061456e565b925050819055506125a6600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612216565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b505b50565b601960099054906101000a900460ff16156127b357600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126c357600f54811115801561267f5750600e548161267284610ea6565b61267c919061456e565b11155b6126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b5906141f9565b60405180910390fd5b6127b2565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127665750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127b157600f548111156127b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a7906141f9565b60405180910390fd5b5b5b5b505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128205750601960059054906101000a900460ff165b80156128395750601960049054906101000a900460ff16155b801561284f575060125461284c30610ea6565b10155b9050919050565b6001601960046101000a81548160ff02191690831515021790555060125460115410612c845760006019600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016128d9919061406c565b60206040518083038186803b1580156128f157600080fd5b505afa158015612905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129299190613c8c565b905061293361331e565b60004790506000600267ffffffffffffffff8111156129555761295461484a565b5b6040519080825280602002602001820160405280156129835781602001602082028036833780820191505090505b509050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129ee57600080fd5b505afa158015612a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2691906139e5565b81600081518110612a3a57612a3961481b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506019600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612aab57612aaa61481b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b8152600401612b4894939291906140cb565b6000604051808303818588803b158015612b6157600080fd5b505af1158015612b75573d6000803e3d6000fd5b50505050506000836019600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612bd8919061406c565b60206040518083038186803b158015612bf057600080fd5b505afa158015612c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c289190613c8c565b612c32919061464f565b90508060096000828254612c46919061456e565b9250508190555060085481600c54612c5e91906145f5565b612c6891906145c4565b600b54612c75919061456e565b600b8190555050505050612cfc565b612c8c61331e565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612cf9573d6000803e3d6000fd5b50505b6000601960046101000a81548160ff021916908315150217905550565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d755781905061314b565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612df957601560009054906101000a900461ffff16601960006101000a81548161ffff021916908361ffff160217905550612eac565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e7d57601360009054906101000a900461ffff16601960006101000a81548161ffff021916908361ffff160217905550612eab565b601760009054906101000a900461ffff16601960006101000a81548161ffff021916908361ffff1602179055505b5b6000601960009054906101000a900461ffff1661ffff161415612ed15781905061314b565b601960029054906101000a900461ffff1661ffff16601960009054906101000a900461ffff1661ffff1683612f0691906145f5565b612f1091906145c4565b6010819055506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506010548103600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601054600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6010546040516130509190614374565b60405180910390a3601960079054906101000a900460ff161561313957601560009054906101000a900461ffff16601360009054906101000a900461ffff166130999190614536565b61ffff1660146000600281106130b2576130b161481b565b5b601091828204019190066002029054906101000a900461ffff1660166000600281106130e1576130e061481b565b5b601091828204019190066002029054906101000a900461ffff166131059190614536565b61ffff1660105461311691906145f5565b61312091906145c4565b60116000828254613131919061456e565b925050819055505b60105483613147919061464f565b9150505b9392505050565b61315b826123f2565b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546131ac919061464f565b6131b6919061456e565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061324e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612216565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505050565b6133198363a9059cbb60e01b84846040516024016132b7929190614087565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613544565b505050565b6000600267ffffffffffffffff81111561333b5761333a61484a565b5b6040519080825280602002602001820160405280156133695781602001602082028036833780820191505090505b50905030816000815181106133815761338061481b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561342357600080fd5b505afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b91906139e5565b8160018151811061346f5761346e61481b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94760125460008430426040518663ffffffff1660e01b815260040161350f95949392919061438f565b600060405180830381600087803b15801561352957600080fd5b505af115801561353d573d6000803e3d6000fd5b5050505050565b60006135a6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661360b9092919063ffffffff16565b905060008151111561360657808060200190518101906135c69190613b8c565b613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fc90614319565b60405180910390fd5b5b505050565b606061361a8484600085613623565b90509392505050565b606082471015613668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365f90614259565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516136919190614055565b60006040518083038185875af1925050503d80600081146136ce576040519150601f19603f3d011682016040523d82523d6000602084013e6136d3565b606091505b50915091506136e4878383876136f0565b92505050949350505050565b606083156137535760008351141561374b5761370b85613766565b61374a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613741906142f9565b60405180910390fd5b5b82905061375e565b61375d8383613789565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561379c5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d09190614117565b60405180910390fd5b826002600f016010900481019282156138655791602002820160005b8382111561383557835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026137f5565b80156138635782816101000a81549061ffff0219169055600201602081600101049283019260010302613835565b505b5090506138729190613876565b5090565b5b8082111561388f576000816000905550600101613877565b5090565b60006138a66138a1846144a5565b614480565b905080828560208602820111156138c0576138bf61487e565b5b60005b858110156138f057816138d68882613979565b8452602084019350602083019250506001810190506138c3565b5050509392505050565b60008135905061390981614d66565b92915050565b60008151905061391e81614d66565b92915050565b600082601f83011261393957613938614879565b5b6002613946848285613893565b91505092915050565b60008135905061395e81614d7d565b92915050565b60008151905061397381614d7d565b92915050565b60008135905061398881614d94565b92915050565b60008135905061399d81614dab565b92915050565b6000815190506139b281614dab565b92915050565b6000602082840312156139ce576139cd614883565b5b60006139dc848285016138fa565b91505092915050565b6000602082840312156139fb576139fa614883565b5b6000613a098482850161390f565b91505092915050565b60008060408385031215613a2957613a28614883565b5b6000613a37858286016138fa565b9250506020613a48858286016138fa565b9150509250929050565b600080600060608486031215613a6b57613a6a614883565b5b6000613a79868287016138fa565b9350506020613a8a868287016138fa565b9250506040613a9b8682870161398e565b9150509250925092565b60008060408385031215613abc57613abb614883565b5b6000613aca858286016138fa565b9250506020613adb8582860161394f565b9150509250929050565b60008060408385031215613afc57613afb614883565b5b6000613b0a858286016138fa565b9250506020613b1b8582860161398e565b9150509250929050565b60008060008060e08587031215613b3f57613b3e614883565b5b6000613b4d87828801613924565b9450506040613b5e87828801613924565b9350506080613b6f87828801613924565b92505060c0613b808782880161394f565b91505092959194509250565b600060208284031215613ba257613ba1614883565b5b6000613bb084828501613964565b91505092915050565b600080600060608486031215613bd257613bd1614883565b5b6000613be08682870161394f565b9350506020613bf18682870161394f565b9250506040613c028682870161398e565b9150509250925092565b600080600060608486031215613c2557613c24614883565b5b6000613c338682870161394f565b9350506020613c448682870161398e565b9250506040613c558682870161398e565b9150509250925092565b600060208284031215613c7557613c74614883565b5b6000613c838482850161398e565b91505092915050565b600060208284031215613ca257613ca1614883565b5b6000613cb0848285016139a3565b91505092915050565b6000613cc58383613cd1565b60208301905092915050565b613cda81614683565b82525050565b613ce981614683565b82525050565b6000613cfa826144db565b613d048185614509565b9350613d0f836144cb565b8060005b83811015613d40578151613d278882613cb9565b9750613d32836144fc565b925050600181019050613d13565b5085935050505092915050565b613d5681614695565b82525050565b6000613d67826144e6565b613d71818561451a565b9350613d818185602086016146f8565b80840191505092915050565b613d96816146e6565b82525050565b6000613da7826144f1565b613db18185614525565b9350613dc18185602086016146f8565b613dca81614888565b840191505092915050565b6000613de2602383614525565b9150613ded82614899565b604082019050919050565b6000613e05604683614525565b9150613e10826148e8565b606082019050919050565b6000613e28602283614525565b9150613e338261495d565b604082019050919050565b6000613e4b602283614525565b9150613e56826149ac565b604082019050919050565b6000613e6e601d83614525565b9150613e79826149fb565b602082019050919050565b6000613e91602683614525565b9150613e9c82614a24565b604082019050919050565b6000613eb4602683614525565b9150613ebf82614a73565b604082019050919050565b6000613ed7602e83614525565b9150613ee282614ac2565b604082019050919050565b6000613efa601583614525565b9150613f0582614b11565b602082019050919050565b6000613f1d602683614525565b9150613f2882614b3a565b604082019050919050565b6000613f40602183614525565b9150613f4b82614b89565b604082019050919050565b6000613f63601383614525565b9150613f6e82614bd8565b602082019050919050565b6000613f86602583614525565b9150613f9182614c01565b604082019050919050565b6000613fa9602483614525565b9150613fb482614c50565b604082019050919050565b6000613fcc601d83614525565b9150613fd782614c9f565b602082019050919050565b6000613fef602a83614525565b9150613ffa82614cc8565b604082019050919050565b6000614012602583614525565b915061401d82614d17565b604082019050919050565b614031816146a1565b82525050565b614040816146cf565b82525050565b61404f816146d9565b82525050565b60006140618284613d5c565b915081905092915050565b60006020820190506140816000830184613ce0565b92915050565b600060408201905061409c6000830185613ce0565b6140a96020830184614037565b9392505050565b60006020820190506140c56000830184613d4d565b92915050565b60006080820190506140e06000830187613d8d565b81810360208301526140f28186613cef565b90506141016040830185613ce0565b61410e6060830184614037565b95945050505050565b600060208201905081810360008301526141318184613d9c565b905092915050565b6000602082019050818103600083015261415281613dd5565b9050919050565b6000602082019050818103600083015261417281613df8565b9050919050565b6000602082019050818103600083015261419281613e1b565b9050919050565b600060208201905081810360008301526141b281613e3e565b9050919050565b600060208201905081810360008301526141d281613e61565b9050919050565b600060208201905081810360008301526141f281613e84565b9050919050565b6000602082019050818103600083015261421281613ea7565b9050919050565b6000602082019050818103600083015261423281613eca565b9050919050565b6000602082019050818103600083015261425281613eed565b9050919050565b6000602082019050818103600083015261427281613f10565b9050919050565b6000602082019050818103600083015261429281613f33565b9050919050565b600060208201905081810360008301526142b281613f56565b9050919050565b600060208201905081810360008301526142d281613f79565b9050919050565b600060208201905081810360008301526142f281613f9c565b9050919050565b6000602082019050818103600083015261431281613fbf565b9050919050565b6000602082019050818103600083015261433281613fe2565b9050919050565b6000602082019050818103600083015261435281614005565b9050919050565b600060208201905061436e6000830184614028565b92915050565b60006020820190506143896000830184614037565b92915050565b600060a0820190506143a46000830188614037565b6143b16020830187613d8d565b81810360408301526143c38186613cef565b90506143d26060830185613ce0565b6143df6080830184614037565b9695505050505050565b60006060820190506143fe6000830186614037565b61440b6020830185614037565b6144186040830184614037565b949350505050565b60006080820190506144356000830187614037565b6144426020830186614037565b61444f6040830185614037565b61445c6060830184614037565b95945050505050565b600060208201905061447a6000830184614046565b92915050565b600061448a61449b565b9050614496828261475d565b919050565b6000604051905090565b600067ffffffffffffffff8211156144c0576144bf61484a565b5b602082029050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614541826146a1565b915061454c836146a1565b92508261ffff038211156145635761456261478e565b5b828201905092915050565b6000614579826146cf565b9150614584836146cf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145b9576145b861478e565b5b828201905092915050565b60006145cf826146cf565b91506145da836146cf565b9250826145ea576145e96147bd565b5b828204905092915050565b6000614600826146cf565b915061460b836146cf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146445761464361478e565b5b828202905092915050565b600061465a826146cf565b9150614665836146cf565b9250828210156146785761467761478e565b5b828203905092915050565b600061468e826146af565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006146f1826146cf565b9050919050565b60005b838110156147165780820151818401526020810190506146fb565b83811115614725576000848401525b50505050565b6000600282049050600182168061474357607f821691505b60208210811415614757576147566147ec565b5b50919050565b61476682614888565b810181811067ffffffffffffffff821117156147855761478461484a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573732c207573652072656e6f756e63654f776e65727368697020467560208201527f6e6374696f6e0000000000000000000000000000000000000000000000000000604082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20416d6f756e742065786365656473205472616e73616374696f60008201527f6e2073697a650000000000000000000000000000000000000000000000000000602082015250565b7f4d6178205472616e73616374696f6e20616e64204d61782057616c6c6574206d60008201527f757374206265206f766572203125000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f7420746865206f776e65720000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206f70656e00000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b614d6f81614683565b8114614d7a57600080fd5b50565b614d8681614695565b8114614d9157600080fd5b50565b614d9d816146a1565b8114614da857600080fd5b50565b614db4816146cf565b8114614dbf57600080fd5b5056fea264697066735822122001f3afbd26403b666f96a21f64ad7a77e5beb6628f187763f0f76ad20fb1a39464736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000001dcd6500000000000000000000000000000000000000000000000000000000000000000095065706520476f6c64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055045504547000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101fc5760003560e01c80637367c4401161010d578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e14610768578063edf35253146107a5578063f0fc6bca146107ce578063f2fde38b146107e5578063f8b45b051461080e57610203565b8063a9059cbb14610696578063acb2ad6f146106d3578063c3f70b52146106fe578063ce7c2ac21461072957610203565b80638ebfc796116100dc5780638ebfc796146105da5780639335dcb71461060357806395d89b411461062e578063a457c2d71461065957610203565b80637367c440146105365780637537ccb61461055f578063756ba9d81461058857806386a22eff146105b157610203565b80632b14ca5611610190578063470624021161015f578063470624021461043a5780635e6056bb146104655780636ebcf607146104a557806370a08231146104e2578063715018a61461051f57610203565b80632b14ca561461037e578063313ce567146103a957806339509351146103d457806342966c681461041157610203565b806318160ddd116101cc57806318160ddd146102b057806323b872dd146102db578063261fe4d61461031857806328fd31981461034157610203565b806299d3861461020857806306fdde031461021f578063095ea7b31461024a57806310a8246d1461028757610203565b3661020357005b600080fd5b34801561021457600080fd5b5061021d610839565b005b34801561022b57600080fd5b50610234610995565b6040516102419190614117565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190613ae5565b610a27565b60405161027e91906140b0565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190613bb9565b610a4a565b005b3480156102bc57600080fd5b506102c5610b4a565b6040516102d29190614374565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190613a52565b610b54565b60405161030f91906140b0565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a91906139b8565b610b83565b005b34801561034d57600080fd5b50610368600480360381019061036391906139b8565b610c5e565b6040516103759190614374565b60405180910390f35b34801561038a57600080fd5b50610393610d71565b6040516103a09190614359565b60405180910390f35b3480156103b557600080fd5b506103be610d85565b6040516103cb9190614465565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f69190613ae5565b610d8e565b60405161040891906140b0565b60405180910390f35b34801561041d57600080fd5b5061043860048036038101906104339190613c5f565b610dc5565b005b34801561044657600080fd5b5061044f610dd9565b60405161045c9190614359565b60405180910390f35b34801561047157600080fd5b5061048c600480360381019061048791906139b8565b610ded565b60405161049c9493929190614420565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c791906139b8565b610e8e565b6040516104d99190614374565b60405180910390f35b3480156104ee57600080fd5b50610509600480360381019061050491906139b8565b610ea6565b6040516105169190614374565b60405180910390f35b34801561052b57600080fd5b50610534610eef565b005b34801561054257600080fd5b5061055d60048036038101906105589190613b25565b610fca565b005b34801561056b57600080fd5b5061058660048036038101906105819190613aa5565b611253565b005b34801561059457600080fd5b506105af60048036038101906105aa9190613c0c565b611345565b005b3480156105bd57600080fd5b506105d860048036038101906105d39190613aa5565b61148b565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190613aa5565b61157d565b005b34801561060f57600080fd5b5061061861166f565b604051610625919061406c565b60405180910390f35b34801561063a57600080fd5b50610643611695565b6040516106509190614117565b60405180910390f35b34801561066557600080fd5b50610680600480360381019061067b9190613ae5565b611727565b60405161068d91906140b0565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b89190613ae5565b61179e565b6040516106ca91906140b0565b60405180910390f35b3480156106df57600080fd5b506106e86117c1565b6040516106f59190614359565b60405180910390f35b34801561070a57600080fd5b506107136117d5565b6040516107209190614374565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b91906139b8565b6117db565b60405161075f939291906143e9565b60405180910390f35b34801561077457600080fd5b5061078f600480360381019061078a9190613a12565b611805565b60405161079c9190614374565b60405180910390f35b3480156107b157600080fd5b506107cc60048036038101906107c791906139b8565b61188b565b005b3480156107da57600080fd5b506107e3611897565b005b3480156107f157600080fd5b5061080c600480360381019061080791906139b8565b6118a2565b005b34801561081a57600080fd5b50610823611a78565b6040516108309190614374565b60405180910390f35b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661087a611a7e565b73ffffffffffffffffffffffffffffffffffffffff16146108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790614239565b60405180910390fd5b601960089054906101000a900460ff16156108ea57600080fd5b6001601960086101000a81548160ff0219169083151502179055506001601960096101000a81548160ff0219169083151502179055506001601960066101000a81548160ff0219169083151502179055506001601960056101000a81548160ff0219169083151502179055506001601960076101000a81548160ff021916908315150217905550612710600a600d5461098391906145f5565b61098d91906145c4565b601281905550565b6060601c80546109a49061472b565b80601f01602080910402602001604051908101604052809291908181526020018280546109d09061472b565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b5050505050905090565b600080610a32611a7e565b9050610a3f818585611a86565b600191505092915050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a8b611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890614239565b60405180910390fd5b612710811115610af057600080fd5b82601960056101000a81548160ff02191690831515021790555081601960076101000a81548160ff02191690831515021790555061271081600d54610b3591906145f5565b610b3f91906145c4565b601281905550505050565b6000600d54905090565b600080610b5f611a7e565b9050610b6c858285611c50565b610b77858585611cdc565b60019150509392505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc4611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190614239565b60405180910390fd5b806019600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610cb35760009050610d6c565b6000610d00600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612216565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050808211610d5b57600092505050610d6c565b8082610d67919061464f565b925050505b919050565b601560009054906101000a900461ffff1681565b60006012905090565b600080610d99611a7e565b9050610dba818585610dab8589611805565b610db5919061456e565b611a86565b600191505092915050565b610dd6610dd0611a7e565b8261223a565b50565b601360009054906101000a900461ffff1681565b600080600080600854600a54600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015493509350935093509193509193565b60016020528060005260406000206000915090505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f30611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90614239565b60405180910390fd5b6000601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661100b611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890614239565b60405180910390fd5b610190836001600281106110785761107761481b565b5b6020020151846000600281106110915761109061481b565b5b6020020151866001600281106110aa576110a961481b565b5b6020020151876000600281106110c3576110c261481b565b5b60200201516110d29190614536565b6110dc9190614536565b6110e69190614536565b61ffff1611156110f557600080fd5b8260169060026111069291906137d9565b508360149060026111189291906137d9565b5081601890600261112a9291906137d9565b508360016002811061113f5761113e61481b565b5b6020020151846000600281106111585761115761481b565b5b60200201516111679190614536565b601360006101000a81548161ffff021916908361ffff160217905550826001600281106111975761119661481b565b5b6020020151836000600281106111b0576111af61481b565b5b60200201516111bf9190614536565b601560006101000a81548161ffff021916908361ffff160217905550816001600281106111ef576111ee61481b565b5b6020020151826000600281106112085761120761481b565b5b60200201516112179190614536565b601760006101000a81548161ffff021916908361ffff16021790555080601960066101000a81548160ff02191690831515021790555050505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611294611a7e565b73ffffffffffffffffffffffffffffffffffffffff16146112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190614239565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611386611a7e565b73ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d390614239565b60405180910390fd5b600182101580156113ed5750600181115b61142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390614219565b60405180910390fd5b606482600d5461143c91906145f5565b61144691906145c4565b600f81905550606481600d5461145c91906145f5565b61146691906145c4565b600e8190555082601960096101000a81548160ff021916908315150217905550505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114cc611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151990614239565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115be611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90614239565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060601d80546116a49061472b565b80601f01602080910402602001604051908101604052809291908181526020018280546116d09061472b565b801561171d5780601f106116f25761010080835404028352916020019161171d565b820191906000526020600020905b81548152906001019060200180831161170057829003601f168201915b5050505050905090565b600080611732611a7e565b905060006117408286611805565b905083811015611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c90614339565b60405180910390fd5b6117928286868403611a86565b60019250505092915050565b6000806117a9611a7e565b90506117b6818585611cdc565b600191505092915050565b601760009054906101000a900461ffff1681565b600f5481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611894816123f2565b50565b6118a0336123f2565b565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118e3611a7e565b73ffffffffffffffffffffffffffffffffffffffff1614611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090614239565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090614159565b60405180910390fd5b60006119d6601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ea6565b1115611a3457611a33601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611a2e601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ea6565b611cdc565b5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed906142d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d90614199565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c439190614374565b60405180910390a3505050565b6000611c5c8484611805565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cd65781811015611cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbf906141b9565b60405180910390fd5b611cd58484848403611a86565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d43906142b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db390614139565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906141d9565b60405180910390fd5b601960089054906101000a900460ff16611ee357601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed990614299565b60405180910390fd5b5b611eee8383836125f2565b611ef7836127b8565b15611f0557611f04612856565b5b6000601960089054906101000a900460ff168015611f2f5750601960069054906101000a900460ff165b8015611f855750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f8f5781611f9b565b611f9a848484612d19565b5b90506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818103600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120d19190614374565b60405180910390a3600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121745761217385600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613152565b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661220f5761220e84600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613152565b5b5050505050565b6000600c54600b548361222991906145f5565b61223391906145c4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190614279565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232890614179565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600d60008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123e59190614374565b60405180910390a3505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415612442576125ef565b600061244d82610c5e565b905060008111156125ed5780600a600082825461246a919061456e565b925050819055506124be82826019600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166132989092919063ffffffff16565b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254612554919061456e565b925050819055506125a6600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612216565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b505b50565b601960099054906101000a900460ff16156127b357600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126c357600f54811115801561267f5750600e548161267284610ea6565b61267c919061456e565b11155b6126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b5906141f9565b60405180910390fd5b6127b2565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127665750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127b157600f548111156127b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a7906141f9565b60405180910390fd5b5b5b5b505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128205750601960059054906101000a900460ff165b80156128395750601960049054906101000a900460ff16155b801561284f575060125461284c30610ea6565b10155b9050919050565b6001601960046101000a81548160ff02191690831515021790555060125460115410612c845760006019600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016128d9919061406c565b60206040518083038186803b1580156128f157600080fd5b505afa158015612905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129299190613c8c565b905061293361331e565b60004790506000600267ffffffffffffffff8111156129555761295461484a565b5b6040519080825280602002602001820160405280156129835781602001602082028036833780820191505090505b509050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156129ee57600080fd5b505afa158015612a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2691906139e5565b81600081518110612a3a57612a3961481b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506019600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612aab57612aaa61481b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b8152600401612b4894939291906140cb565b6000604051808303818588803b158015612b6157600080fd5b505af1158015612b75573d6000803e3d6000fd5b50505050506000836019600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612bd8919061406c565b60206040518083038186803b158015612bf057600080fd5b505afa158015612c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c289190613c8c565b612c32919061464f565b90508060096000828254612c46919061456e565b9250508190555060085481600c54612c5e91906145f5565b612c6891906145c4565b600b54612c75919061456e565b600b8190555050505050612cfc565b612c8c61331e565b6000479050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612cf9573d6000803e3d6000fd5b50505b6000601960046101000a81548160ff021916908315150217905550565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d755781905061314b565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612df957601560009054906101000a900461ffff16601960006101000a81548161ffff021916908361ffff160217905550612eac565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e7d57601360009054906101000a900461ffff16601960006101000a81548161ffff021916908361ffff160217905550612eab565b601760009054906101000a900461ffff16601960006101000a81548161ffff021916908361ffff1602179055505b5b6000601960009054906101000a900461ffff1661ffff161415612ed15781905061314b565b601960029054906101000a900461ffff1661ffff16601960009054906101000a900461ffff1661ffff1683612f0691906145f5565b612f1091906145c4565b6010819055506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506010548103600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601054600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6010546040516130509190614374565b60405180910390a3601960079054906101000a900460ff161561313957601560009054906101000a900461ffff16601360009054906101000a900461ffff166130999190614536565b61ffff1660146000600281106130b2576130b161481b565b5b601091828204019190066002029054906101000a900461ffff1660166000600281106130e1576130e061481b565b5b601091828204019190066002029054906101000a900461ffff166131059190614536565b61ffff1660105461311691906145f5565b61312091906145c4565b60116000828254613131919061456e565b925050819055505b60105483613147919061464f565b9150505b9392505050565b61315b826123f2565b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546131ac919061464f565b6131b6919061456e565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061324e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612216565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505050565b6133198363a9059cbb60e01b84846040516024016132b7929190614087565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613544565b505050565b6000600267ffffffffffffffff81111561333b5761333a61484a565b5b6040519080825280602002602001820160405280156133695781602001602082028036833780820191505090505b50905030816000815181106133815761338061481b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561342357600080fd5b505afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b91906139e5565b8160018151811061346f5761346e61481b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94760125460008430426040518663ffffffff1660e01b815260040161350f95949392919061438f565b600060405180830381600087803b15801561352957600080fd5b505af115801561353d573d6000803e3d6000fd5b5050505050565b60006135a6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661360b9092919063ffffffff16565b905060008151111561360657808060200190518101906135c69190613b8c565b613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fc90614319565b60405180910390fd5b5b505050565b606061361a8484600085613623565b90509392505050565b606082471015613668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365f90614259565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516136919190614055565b60006040518083038185875af1925050503d80600081146136ce576040519150601f19603f3d011682016040523d82523d6000602084013e6136d3565b606091505b50915091506136e4878383876136f0565b92505050949350505050565b606083156137535760008351141561374b5761370b85613766565b61374a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613741906142f9565b60405180910390fd5b5b82905061375e565b61375d8383613789565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561379c5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d09190614117565b60405180910390fd5b826002600f016010900481019282156138655791602002820160005b8382111561383557835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026137f5565b80156138635782816101000a81549061ffff0219169055600201602081600101049283019260010302613835565b505b5090506138729190613876565b5090565b5b8082111561388f576000816000905550600101613877565b5090565b60006138a66138a1846144a5565b614480565b905080828560208602820111156138c0576138bf61487e565b5b60005b858110156138f057816138d68882613979565b8452602084019350602083019250506001810190506138c3565b5050509392505050565b60008135905061390981614d66565b92915050565b60008151905061391e81614d66565b92915050565b600082601f83011261393957613938614879565b5b6002613946848285613893565b91505092915050565b60008135905061395e81614d7d565b92915050565b60008151905061397381614d7d565b92915050565b60008135905061398881614d94565b92915050565b60008135905061399d81614dab565b92915050565b6000815190506139b281614dab565b92915050565b6000602082840312156139ce576139cd614883565b5b60006139dc848285016138fa565b91505092915050565b6000602082840312156139fb576139fa614883565b5b6000613a098482850161390f565b91505092915050565b60008060408385031215613a2957613a28614883565b5b6000613a37858286016138fa565b9250506020613a48858286016138fa565b9150509250929050565b600080600060608486031215613a6b57613a6a614883565b5b6000613a79868287016138fa565b9350506020613a8a868287016138fa565b9250506040613a9b8682870161398e565b9150509250925092565b60008060408385031215613abc57613abb614883565b5b6000613aca858286016138fa565b9250506020613adb8582860161394f565b9150509250929050565b60008060408385031215613afc57613afb614883565b5b6000613b0a858286016138fa565b9250506020613b1b8582860161398e565b9150509250929050565b60008060008060e08587031215613b3f57613b3e614883565b5b6000613b4d87828801613924565b9450506040613b5e87828801613924565b9350506080613b6f87828801613924565b92505060c0613b808782880161394f565b91505092959194509250565b600060208284031215613ba257613ba1614883565b5b6000613bb084828501613964565b91505092915050565b600080600060608486031215613bd257613bd1614883565b5b6000613be08682870161394f565b9350506020613bf18682870161394f565b9250506040613c028682870161398e565b9150509250925092565b600080600060608486031215613c2557613c24614883565b5b6000613c338682870161394f565b9350506020613c448682870161398e565b9250506040613c558682870161398e565b9150509250925092565b600060208284031215613c7557613c74614883565b5b6000613c838482850161398e565b91505092915050565b600060208284031215613ca257613ca1614883565b5b6000613cb0848285016139a3565b91505092915050565b6000613cc58383613cd1565b60208301905092915050565b613cda81614683565b82525050565b613ce981614683565b82525050565b6000613cfa826144db565b613d048185614509565b9350613d0f836144cb565b8060005b83811015613d40578151613d278882613cb9565b9750613d32836144fc565b925050600181019050613d13565b5085935050505092915050565b613d5681614695565b82525050565b6000613d67826144e6565b613d71818561451a565b9350613d818185602086016146f8565b80840191505092915050565b613d96816146e6565b82525050565b6000613da7826144f1565b613db18185614525565b9350613dc18185602086016146f8565b613dca81614888565b840191505092915050565b6000613de2602383614525565b9150613ded82614899565b604082019050919050565b6000613e05604683614525565b9150613e10826148e8565b606082019050919050565b6000613e28602283614525565b9150613e338261495d565b604082019050919050565b6000613e4b602283614525565b9150613e56826149ac565b604082019050919050565b6000613e6e601d83614525565b9150613e79826149fb565b602082019050919050565b6000613e91602683614525565b9150613e9c82614a24565b604082019050919050565b6000613eb4602683614525565b9150613ebf82614a73565b604082019050919050565b6000613ed7602e83614525565b9150613ee282614ac2565b604082019050919050565b6000613efa601583614525565b9150613f0582614b11565b602082019050919050565b6000613f1d602683614525565b9150613f2882614b3a565b604082019050919050565b6000613f40602183614525565b9150613f4b82614b89565b604082019050919050565b6000613f63601383614525565b9150613f6e82614bd8565b602082019050919050565b6000613f86602583614525565b9150613f9182614c01565b604082019050919050565b6000613fa9602483614525565b9150613fb482614c50565b604082019050919050565b6000613fcc601d83614525565b9150613fd782614c9f565b602082019050919050565b6000613fef602a83614525565b9150613ffa82614cc8565b604082019050919050565b6000614012602583614525565b915061401d82614d17565b604082019050919050565b614031816146a1565b82525050565b614040816146cf565b82525050565b61404f816146d9565b82525050565b60006140618284613d5c565b915081905092915050565b60006020820190506140816000830184613ce0565b92915050565b600060408201905061409c6000830185613ce0565b6140a96020830184614037565b9392505050565b60006020820190506140c56000830184613d4d565b92915050565b60006080820190506140e06000830187613d8d565b81810360208301526140f28186613cef565b90506141016040830185613ce0565b61410e6060830184614037565b95945050505050565b600060208201905081810360008301526141318184613d9c565b905092915050565b6000602082019050818103600083015261415281613dd5565b9050919050565b6000602082019050818103600083015261417281613df8565b9050919050565b6000602082019050818103600083015261419281613e1b565b9050919050565b600060208201905081810360008301526141b281613e3e565b9050919050565b600060208201905081810360008301526141d281613e61565b9050919050565b600060208201905081810360008301526141f281613e84565b9050919050565b6000602082019050818103600083015261421281613ea7565b9050919050565b6000602082019050818103600083015261423281613eca565b9050919050565b6000602082019050818103600083015261425281613eed565b9050919050565b6000602082019050818103600083015261427281613f10565b9050919050565b6000602082019050818103600083015261429281613f33565b9050919050565b600060208201905081810360008301526142b281613f56565b9050919050565b600060208201905081810360008301526142d281613f79565b9050919050565b600060208201905081810360008301526142f281613f9c565b9050919050565b6000602082019050818103600083015261431281613fbf565b9050919050565b6000602082019050818103600083015261433281613fe2565b9050919050565b6000602082019050818103600083015261435281614005565b9050919050565b600060208201905061436e6000830184614028565b92915050565b60006020820190506143896000830184614037565b92915050565b600060a0820190506143a46000830188614037565b6143b16020830187613d8d565b81810360408301526143c38186613cef565b90506143d26060830185613ce0565b6143df6080830184614037565b9695505050505050565b60006060820190506143fe6000830186614037565b61440b6020830185614037565b6144186040830184614037565b949350505050565b60006080820190506144356000830187614037565b6144426020830186614037565b61444f6040830185614037565b61445c6060830184614037565b95945050505050565b600060208201905061447a6000830184614046565b92915050565b600061448a61449b565b9050614496828261475d565b919050565b6000604051905090565b600067ffffffffffffffff8211156144c0576144bf61484a565b5b602082029050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614541826146a1565b915061454c836146a1565b92508261ffff038211156145635761456261478e565b5b828201905092915050565b6000614579826146cf565b9150614584836146cf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145b9576145b861478e565b5b828201905092915050565b60006145cf826146cf565b91506145da836146cf565b9250826145ea576145e96147bd565b5b828204905092915050565b6000614600826146cf565b915061460b836146cf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146445761464361478e565b5b828202905092915050565b600061465a826146cf565b9150614665836146cf565b9250828210156146785761467761478e565b5b828203905092915050565b600061468e826146af565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006146f1826146cf565b9050919050565b60005b838110156147165780820151818401526020810190506146fb565b83811115614725576000848401525b50505050565b6000600282049050600182168061474357607f821691505b60208210811415614757576147566147ec565b5b50919050565b61476682614888565b810181811067ffffffffffffffff821117156147855761478461484a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573732c207573652072656e6f756e63654f776e65727368697020467560208201527f6e6374696f6e0000000000000000000000000000000000000000000000000000604082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20416d6f756e742065786365656473205472616e73616374696f60008201527f6e2073697a650000000000000000000000000000000000000000000000000000602082015250565b7f4d6178205472616e73616374696f6e20616e64204d61782057616c6c6574206d60008201527f757374206265206f766572203125000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f7420746865206f776e65720000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206f70656e00000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b614d6f81614683565b8114614d7a57600080fd5b50565b614d8681614695565b8114614d9157600080fd5b50565b614d9d816146a1565b8114614da857600080fd5b50565b614db4816146cf565b8114614dbf57600080fd5b5056fea264697066735822122001f3afbd26403b666f96a21f64ad7a77e5beb6628f187763f0f76ad20fb1a39464736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000001dcd6500000000000000000000000000000000000000000000000000000000000000000095065706520476f6c64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055045504547000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Pepe Gold
Arg [1] : symbol_ (string): PEPEG
Arg [2] : supply (uint256): 8000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000001dcd65000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 5065706520476f6c640000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 5045504547000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

8927:16205:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24342:286;;;;;;;;;;;;;:::i;:::-;;11916:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12842:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23685:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12213:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14333:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24946:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18881:559;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10019:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12120:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15476:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25044:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9952:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24636:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;9269:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12321:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13068:91;;;;;;;;;;;;;:::i;:::-;;23004:548;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22842:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22395:439;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24222:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23560:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10441:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12016:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15739:490;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12448:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10088:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9838:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9557:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;12666:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24108:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24017:83;;;;;;;;;;;;;:::i;:::-;;13167:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9807:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24342:286;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24404:11:::1;;;;;;;;;;;24403:12;24395:21;;;::::0;::::1;;24441:4;24427:11;;:18;;;;;;;;;;;;;;;;;;24471:4;24456:12;;:19;;;;;;;;;;;;;;;;;;24500:4;24486:11;;:18;;;;;;;;;;;;;;;;;;24529:4;24515:11;;:18;;;;;;;;;;;;;;;;;;24561:4;24544:14;;:21;;;;;;;;;;;;;;;;;;24614:5;24607:2;24592:12;;:17;;;;:::i;:::-;24591:29;;;;:::i;:::-;24576:12;:44;;;;24342:286::o:0;11916:92::-;11962:13;11995:5;11988:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11916:92;:::o;12842:218::-;12942:4;12959:13;12975:12;:10;:12::i;:::-;12959:28;;12998:32;13007:5;13014:7;13023:6;12998:8;:32::i;:::-;13048:4;13041:11;;;12842:218;;;;:::o;23685:324::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23855:5:::1;23842:9;:18;;23834:27;;;::::0;::::1;;23886:12;23872:11;;:26;;;;;;;;;;;;;;;;;;23926:15;23909:14;;:32;;;;;;;;;;;;;;;;;;23996:5;23983:9;23968:12;;:24;;;;:::i;:::-;23967:34;;;;:::i;:::-;23952:12;:49;;;;23685:324:::0;;;:::o;12213:100::-;12266:7;12293:12;;12286:19;;12213:100;:::o;14333:287::-;14456:4;14473:15;14491:12;:10;:12::i;:::-;14473:30;;14514:38;14530:4;14536:7;14545:6;14514:15;:38::i;:::-;14563:27;14573:4;14579:2;14583:6;14563:9;:27::i;:::-;14608:4;14601:11;;;14333:287;;;;;:::o;24946:90::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;25022:5:::1;25008:4;;:20;;;;;;;;;;;;;;;;;;24946:90:::0;:::o;18881:559::-;18966:7;19020:1;18990:6;:19;18997:11;18990:19;;;;;;;;;;;;;;;:26;;;:31;18986:72;;;19045:1;19038:8;;;;18986:72;19070:33;19106:74;19143:6;:19;19150:11;19143:19;;;;;;;;;;;;;;;:26;;;19106:22;:74::i;:::-;19070:110;;19191:32;19226:6;:19;19233:11;19226:19;;;;;;;;;;;;;;;:28;;;19191:63;;19300:24;19271:25;:53;19267:94;;19348:1;19341:8;;;;;;19267:94;19408:24;19380:25;:52;;;;:::i;:::-;19373:59;;;;18881:559;;;;:::o;10019:27::-;;;;;;;;;;;;;:::o;12120:85::-;12170:5;12195:2;12188:9;;12120:85;:::o;15476:255::-;15581:4;15598:13;15614:12;:10;:12::i;:::-;15598:28;;15637:64;15646:5;15653:7;15690:10;15662:25;15672:5;15679:7;15662:9;:25::i;:::-;:38;;;;:::i;:::-;15637:8;:64::i;:::-;15719:4;15712:11;;;15476:255;;;;:::o;25044:85::-;25094:27;25100:12;:10;:12::i;:::-;25114:6;25094:5;:27::i;:::-;25044:85;:::o;9952:26::-;;;;;;;;;;;;;:::o;24636:302::-;24724:7;24733;24742;24751;24793:11;;24819:16;;24850:6;:19;24857:11;24850:19;;;;;;;;;;;;;;;:26;;;24891:6;:19;24898:11;24891:19;;;;;;;;;;;;;;;:28;;;24771:159;;;;;;;;24636:302;;;;;:::o;9269:44::-;;;;;;;;;;;;;;;;;:::o;12321:119::-;12387:7;12414:9;:18;12424:7;12414:18;;;;;;;;;;;;;;;;12407:25;;12321:119;;;:::o;13068:91::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13149:1:::1;13127:11;;:24;;;;;;;;;;;;;;;;;;13068:91::o:0;23004:548::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23260:3:::1;23245:8;23254:1;23245:11;;;;;;;:::i;:::-;;;;;;23231:8;23240:1;23231:11;;;;;;;:::i;:::-;;;;;;23218:7;23226:1;23218:10;;;;;;;:::i;:::-;;;;;;23205:7;23213:1;23205:10;;;;;;;:::i;:::-;;;;;;:23;;;;:::i;:::-;:37;;;;:::i;:::-;:51;;;;:::i;:::-;:58;;;;23197:67;;;::::0;::::1;;23286:8;23275;:19;;;;;;;:::i;:::-;;23315:7;23305;:17;;;;;;;:::i;:::-;;23348:12;23333;:27;;;;;;;:::i;:::-;;23393:7;23401:1;23393:10;;;;;;;:::i;:::-;;;;;;23380:7;23388:1;23380:10;;;;;;;:::i;:::-;;;;;;:23;;;;:::i;:::-;23371:6;;:32;;;;;;;;;;;;;;;;;;23438:8;23447:1;23438:11;;;;;;;:::i;:::-;;;;;;23424:8;23433:1;23424:11;;;;;;;:::i;:::-;;;;;;:25;;;;:::i;:::-;23414:7;;:35;;;;;;;;;;;;;;;;;;23492:12;23505:1;23492:15;;;;;;;:::i;:::-;;;;;;23474:12;23487:1;23474:15;;;;;;;:::i;:::-;;;;;;:33;;;;:::i;:::-;23460:11;;:47;;;;;;;;;;;;;;;;;;23532:12;23518:11;;:26;;;;;;;;;;;;;;;;;;23004:548:::0;;;;:::o;22842:154::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22982:6:::1;22954:17;:25;22972:6;22954:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22842:154:::0;;:::o;22395:439::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22578:1:::1;22559:15;:20;;:38;;;;;22596:1;22583:10;:14;22559:38;22537:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;22734:3;22715:15;22700:12;;:30;;;;:::i;:::-;22699:38;;;;:::i;:::-;22682:14;:55;;;;22790:3;22776:10;22761:12;;:25;;;;:::i;:::-;22760:33;;;;:::i;:::-;22748:9;:45;;;;22819:7;22804:12;;:22;;;;;;;;;;;;;;;;;;22395:439:::0;;;:::o;24222:112::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;24320:6:::1;24297:13;:20;24311:5;24297:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;24222:112:::0;;:::o;23560:117::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23663:6:::1;23641:11;:19;23653:6;23641:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23560:117:::0;;:::o;10441:26::-;;;;;;;;;;;;;:::o;12016:96::-;12064:13;12097:7;12090:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12016:96;:::o;15739:490::-;15849:4;15866:13;15882:12;:10;:12::i;:::-;15866:28;;15905:24;15932:25;15942:5;15949:7;15932:9;:25::i;:::-;15905:52;;16010:15;15990:16;:35;;15968:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;16126:60;16135:5;16142:7;16170:15;16151:16;:34;16126:8;:60::i;:::-;16217:4;16210:11;;;;15739:490;;;;:::o;12448:210::-;12544:4;12561:13;12577:12;:10;:12::i;:::-;12561:28;;12600;12610:5;12617:2;12621:6;12600:9;:28::i;:::-;12646:4;12639:11;;;12448:210;;;;:::o;10088:25::-;;;;;;;;;;;;;:::o;9838:29::-;;;;:::o;9557:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12666:168::-;12772:7;12799:11;:18;12811:5;12799:18;;;;;;;;;;;;;;;:27;12818:7;12799:27;;;;;;;;;;;;;;;;12792:34;;12666:168;;;;:::o;24108:106::-;24175:31;24194:11;24175:18;:31::i;:::-;24108:106;:::o;24017:83::-;24062:30;24081:10;24062:18;:30::i;:::-;24017:83::o;13167:374::-;10613:11;;;;;;;;;;;10597:27;;:12;:10;:12::i;:::-;:27;;;10589:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13284:1:::1;13264:22;;:8;:22;;;;13242:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;13426:1;13401:22;13411:11;;;;;;;;;;;13401:9;:22::i;:::-;:26;13397:101;;;13442:56;13452:11;;;;;;;;;;;13465:8;13475:22;13485:11;;;;;;;;;;;13475:9;:22::i;:::-;13442:9;:56::i;:::-;13397:101;13525:8;13511:11;;:22;;;;;;;;;;;;;;;;;;13167:374:::0;:::o;9807:24::-;;;;:::o;107:107::-;152:15;195:10;180:26;;107:107;:::o;14628:338::-;14739:1;14722:19;;:5;:19;;;;14714:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14820:1;14801:21;;:7;:21;;;;14793:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14904:6;14874:11;:18;14886:5;14874:18;;;;;;;;;;;;;;;:27;14893:7;14874:27;;;;;;;;;;;;;;;:36;;;;14942:7;14926:32;;14935:5;14926:32;;;14951:6;14926:32;;;;;;:::i;:::-;;;;;;;;14628:338;;;:::o;14974:494::-;15101:24;15128:25;15138:5;15145:7;15128:9;:25::i;:::-;15101:52;;15188:17;15168:16;:37;15164:297;;15268:6;15248:16;:26;;15222:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15383:51;15392:5;15399:7;15427:6;15408:16;:25;15383:8;:51::i;:::-;15164:297;15090:378;14974:494;;;:::o;21240:1147::-;21345:1;21329:18;;:4;:18;;;;21321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21422:1;21408:16;;:2;:16;;;;21400:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21516:6;21497:9;:15;21507:4;21497:15;;;;;;;;;;;;;;;;:25;;21475:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;21604:11;;;;;;;;;;;21599:93;;21648:8;;;;;;;;;;;21640:16;;:4;:16;;;21632:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;21599:93;21702:38;21723:4;21729:2;21733:6;21702:20;:38::i;:::-;21755:16;21766:4;21755:10;:16::i;:::-;21751:55;;;21788:6;:4;:6::i;:::-;21751:55;21818:18;21839:11;;;;;;;;;;;:26;;;;;21854:11;;;;;;;;;;;21839:26;:48;;;;;21870:11;:17;21882:4;21870:17;;;;;;;;;;;;;;;;;;;;;;;;;21869:18;21839:48;:111;;21944:6;21839:111;;;21903:25;21911:4;21917:2;21921:6;21903:7;:25::i;:::-;21839:111;21818:132;;21961:19;21983:9;:15;21993:4;21983:15;;;;;;;;;;;;;;;;21961:37;;22066:10;22052:11;:24;22034:9;:15;22044:4;22034:15;;;;;;;;;;;;;;;:42;;;;22108:10;22091:9;:13;22101:2;22091:13;;;;;;;;;;;;;;;;:27;;;;;;;;;;;22160:2;22145:30;;22154:4;22145:30;;;22164:10;22145:30;;;;;;:::i;:::-;;;;;;;;22192:16;:22;22209:4;22192:22;;;;;;;;;;;;;;;;;;;;;;;;;22188:85;;22230:31;22239:4;22245:9;:15;22255:4;22245:15;;;;;;;;;;;;;;;;22230:8;:31::i;:::-;22188:85;22305:16;:20;22322:2;22305:20;;;;;;;;;;;;;;;;;;;;;;;;;22301:79;;22341:27;22350:2;22354:9;:13;22364:2;22354:13;;;;;;;;;;;;;;;;22341:8;:27::i;:::-;22301:79;21310:1077;;21240:1147;;;:::o;19448:182::-;19534:7;19591:31;;19570:17;;19562:5;:25;;;;:::i;:::-;19561:61;;;;:::i;:::-;19554:68;;19448:182;;;:::o;13861:464::-;13956:1;13937:21;;:7;:21;;;;13929:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14009:22;14034:9;:18;14044:7;14034:18;;;;;;;;;;;;;;;;14009:43;;14089:6;14071:14;:24;;14063:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14208:6;14191:14;:23;14170:9;:18;14180:7;14170:18;;;;;;;;;;;;;;;:44;;;;14245:6;14229:12;;:22;;;;;;;;;;;14306:1;14280:37;;14289:7;14280:37;;;14310:6;14280:37;;;;;;:::i;:::-;;;;;;;;13918:407;13861:464;;:::o;17927:584::-;18030:1;18000:6;:19;18007:11;18000:19;;;;;;;;;;;;;;;:26;;;:31;17996:70;;;18048:7;;17996:70;18078:14;18095:30;18113:11;18095:17;:30::i;:::-;18078:47;;18149:1;18140:6;:10;18136:368;;;18187:6;18167:16;;:26;;;;;;;:::i;:::-;;;;;;;;18208:38;18226:11;18239:6;18208:4;;;;;;;;;;;:17;;;;:38;;;;;:::i;:::-;18294:15;18261:17;:30;18279:11;18261:30;;;;;;;;;;;;;;;:48;;;;18356:6;18324;:19;18331:11;18324:19;;;;;;;;;;;;;;;:28;;;:38;;;;;;;:::i;:::-;;;;;;;;18408:82;18449:6;:19;18456:11;18449:19;;;;;;;;;;;;;;;:26;;;18408:22;:82::i;:::-;18377:6;:19;18384:11;18377:19;;;;;;;;;;;;;;;:28;;:113;;;;18136:368;17985:526;17927:584;;:::o;16237:673::-;16372:12;;;;;;;;;;;16368:535;;;16406:17;:21;16424:2;16406:21;;;;;;;;;;;;;;;;;;;;;;;;;16401:491;;16488:14;;16478:6;:24;;:88;;;;;16557:9;;16547:6;16531:13;16541:2;16531:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;16478:88;16448:200;;;;;;;;;;;;:::i;:::-;;;;;;;;;16401:491;;;16674:13;:17;16688:2;16674:17;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;16696:17;:23;16714:4;16696:23;;;;;;;;;;;;;;;;;;;;;;;;;16695:24;16674:45;16670:222;;;16780:14;;16770:6;:24;;16740:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;16670:222;16401:491;16368:535;16237:673;;;:::o;19638:231::-;19695:4;19733:13;:19;19747:4;19733:19;;;;;;;;;;;;;;;;;;;;;;;;;19732:20;:48;;;;;19769:11;;;;;;;;;;;19732:48;:72;;;;;19798:6;;;;;;;;;;;19797:7;19732:72;:129;;;;;19849:12;;19821:24;19839:4;19821:9;:24::i;:::-;:40;;19732:129;19712:149;;19638:231;;;:::o;20242:990::-;10718:4;10709:6;;:13;;;;;;;;;;;;;;;;;;20305:12:::1;;20291:10;;:26;20287:938;;20334:21;20365:4;;;;;;;;;;;20358:22;;;20389:4;20358:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20334:61;;20410:10;:8;:10::i;:::-;20435:15;20453:21;20435:39;;20489:21;20527:1;20513:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20489:40;;20554:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20544:4;20549:1;20544:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;20600:4;;;;;;;;;;;20582;20587:1;20582:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;20620:6;;;;;;;;;;;:57;;;20685:7;20712:1;20732:4;20763;20787:15;20620:197;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;20832:14;20889:13;20856:4;;;;;;;;;;;20849:22;;;20880:4;20849:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;;:::i;:::-;20832:70;;20935:6;20917:14;;:24;;;;;;;:::i;:::-;;;;;;;;21042:11;;21032:6;20998:31;;:40;;;;:::i;:::-;20997:56;;;;:::i;:::-;20976:17;;:78;;;;:::i;:::-;20956:17;:98;;;;20319:759;;;;20287:938;;;21099:10;:8;:10::i;:::-;21124:15;21142:21;21124:39;;21186:8;;;;;;;;;;;21178:26;;:35;21205:7;21178:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21084:141;20287:938;10754:5:::0;10745:6;;:14;;;;;;;;;;;;;;;;;;20242:990::o;16918:1001::-;17029:15;17061:11;:15;17073:2;17061:15;;;;;;;;;;;;;;;;;;;;;;;;;17057:61;;;17100:6;17093:13;;;;17057:61;17132:13;:17;17146:2;17132:17;;;;;;;;;;;;;;;;;;;;;;;;;17128:204;;;17179:7;;;;;;;;;;;17166:10;;:20;;;;;;;;;;;;;;;;;;17128:204;;;17208:13;:19;17222:4;17208:19;;;;;;;;;;;;;;;;;;;;;;;;;17204:128;;;17257:6;;;;;;;;;;;17244:10;;:19;;;;;;;;;;;;;;;;;;17204:128;;;17309:11;;;;;;;;;;;17296:10;;:24;;;;;;;;;;;;;;;;;;17204:128;17128:204;17360:1;17346:10;;;;;;;;;;;:15;;;17342:61;;;17385:6;17378:13;;;;17342:61;17451:14;;;;;;;;;;;17427:38;;17437:10;;;;;;;;;;;17428:19;;:6;:19;;;;:::i;:::-;17427:38;;;;:::i;:::-;17415:9;:50;;;;17476:19;17498:9;:15;17508:4;17498:15;;;;;;;;;;;;;;;;17476:37;;17581:9;;17567:11;:23;17549:9;:15;17559:4;17549:15;;;;;;;;;;;;;;;:41;;;;17633:9;;17605;:24;17623:4;17605:24;;;;;;;;;;;;;;;;:37;;;;;;;;;;;17692:4;17669:40;;17678:4;17669:40;;;17699:9;;17669:40;;;;;;:::i;:::-;;;;;;;;17724:14;;;;;;;;;;;17720:156;;;17856:7;;;;;;;;;;;17847:6;;;;;;;;;;;:16;;;;:::i;:::-;17786:78;;17814:7;17822:1;17814:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;17800:8;17809:1;17800:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;17787:38;;:9;;:38;;;;:::i;:::-;17786:78;;;;:::i;:::-;17755:10;;:109;;;;;;;:::i;:::-;;;;;;;;17720:156;17902:9;;17893:6;:18;;;;:::i;:::-;17886:25;;;16918:1001;;;;;;:::o;18519:354::-;18594:31;18613:11;18594:18;:31::i;:::-;18697:6;18667;:19;18674:11;18667:19;;;;;;;;;;;;;;;:26;;;18653:11;;:40;;;;:::i;:::-;18652:51;;;;:::i;:::-;18638:11;:65;;;;18743:6;18714;:19;18721:11;18714:19;;;;;;;;;;;;;;;:26;;:35;;;;18791:74;18828:6;:19;18835:11;18828:19;;;;;;;;;;;;;;;:26;;;18791:22;:74::i;:::-;18760:6;:19;18767:11;18760:19;;;;;;;;;;;;;;;:28;;:105;;;;18519:354;;:::o;7496:211::-;7613:86;7633:5;7663:23;;;7688:2;7692:5;7640:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7613:19;:86::i;:::-;7496:211;;;:::o;19877:357::-;19917:21;19955:1;19941:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19917:40;;19986:4;19968;19973:1;19968:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20012:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20002:4;20007:1;20002:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20038:6;;;;;;;;;;;:57;;;20110:12;;20137:1;20153:4;20180;20200:15;20038:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19906:328;19877:357::o;7715:373::-;7796:23;7822:69;7850:4;7822:69;;;;;;;;;;;;;;;;;7830:5;7822:27;;;;:69;;;;;:::i;:::-;7796:95;;7926:1;7906:10;:17;:21;7902:179;;;8003:10;7992:30;;;;;;;;;;;;:::i;:::-;7984:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7902:179;7785:303;7715:373;;:::o;1007:229::-;1144:12;1176:52;1198:6;1206:4;1212:1;1215:12;1176:21;:52::i;:::-;1169:59;;1007:229;;;;;:::o;2127:455::-;2297:12;2355:5;2330:21;:30;;2322:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2415:12;2429:23;2456:6;:11;;2475:5;2482:4;2456:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2414:73;;;;2505:69;2532:6;2540:7;2549:10;2561:12;2505:26;:69::i;:::-;2498:76;;;;2127:455;;;;;;:::o;4700:644::-;4885:12;4914:7;4910:427;;;4963:1;4942:10;:17;:22;4938:290;;;5160:18;5171:6;5160:10;:18::i;:::-;5152:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;4938:290;5249:10;5242:17;;;;4910:427;5292:33;5300:10;5312:12;5292:7;:33::i;:::-;4700:644;;;;;;;:::o;360:117::-;420:4;468:1;446:7;:19;;;:23;439:30;;360:117;;;:::o;5886:552::-;6067:1;6047:10;:17;:21;6043:388;;;6279:10;6273:17;6336:15;6323:10;6319:2;6315:19;6308:44;6043:388;6406:12;6399:20;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:652:1:-;117:5;142:78;158:61;212:6;158:61;:::i;:::-;142:78;:::i;:::-;133:87;;240:5;266:6;316:3;308:4;300:6;296:17;291:3;287:27;284:36;281:143;;;335:79;;:::i;:::-;281:143;448:1;433:237;458:6;455:1;452:13;433:237;;;526:3;555:36;587:3;575:10;555:36;:::i;:::-;550:3;543:49;621:4;616:3;612:14;605:21;;655:4;650:3;646:14;639:21;;493:177;480:1;477;473:9;468:14;;433:237;;;437:14;123:553;;24:652;;;;;:::o;682:139::-;728:5;766:6;753:20;744:29;;782:33;809:5;782:33;:::i;:::-;682:139;;;;:::o;827:143::-;884:5;915:6;909:13;900:22;;931:33;958:5;931:33;:::i;:::-;827:143;;;;:::o;993:337::-;1061:5;1110:3;1103:4;1095:6;1091:17;1087:27;1077:122;;1118:79;;:::i;:::-;1077:122;1222:4;1244:80;1320:3;1312:6;1304;1244:80;:::i;:::-;1235:89;;1067:263;993:337;;;;:::o;1336:133::-;1379:5;1417:6;1404:20;1395:29;;1433:30;1457:5;1433:30;:::i;:::-;1336:133;;;;:::o;1475:137::-;1529:5;1560:6;1554:13;1545:22;;1576:30;1600:5;1576:30;:::i;:::-;1475:137;;;;:::o;1618:::-;1663:5;1701:6;1688:20;1679:29;;1717:32;1743:5;1717:32;:::i;:::-;1618:137;;;;:::o;1761:139::-;1807:5;1845:6;1832:20;1823:29;;1861:33;1888:5;1861:33;:::i;:::-;1761:139;;;;:::o;1906:143::-;1963:5;1994:6;1988:13;1979:22;;2010:33;2037:5;2010:33;:::i;:::-;1906:143;;;;:::o;2055:329::-;2114:6;2163:2;2151:9;2142:7;2138:23;2134:32;2131:119;;;2169:79;;:::i;:::-;2131:119;2289:1;2314:53;2359:7;2350:6;2339:9;2335:22;2314:53;:::i;:::-;2304:63;;2260:117;2055:329;;;;:::o;2390:351::-;2460:6;2509:2;2497:9;2488:7;2484:23;2480:32;2477:119;;;2515:79;;:::i;:::-;2477:119;2635:1;2660:64;2716:7;2707:6;2696:9;2692:22;2660:64;:::i;:::-;2650:74;;2606:128;2390:351;;;;:::o;2747:474::-;2815:6;2823;2872:2;2860:9;2851:7;2847:23;2843:32;2840:119;;;2878:79;;:::i;:::-;2840:119;2998:1;3023:53;3068:7;3059:6;3048:9;3044:22;3023:53;:::i;:::-;3013:63;;2969:117;3125:2;3151:53;3196:7;3187:6;3176:9;3172:22;3151:53;:::i;:::-;3141:63;;3096:118;2747:474;;;;;:::o;3227:619::-;3304:6;3312;3320;3369:2;3357:9;3348:7;3344:23;3340:32;3337:119;;;3375:79;;:::i;:::-;3337:119;3495:1;3520:53;3565:7;3556:6;3545:9;3541:22;3520:53;:::i;:::-;3510:63;;3466:117;3622:2;3648:53;3693:7;3684:6;3673:9;3669:22;3648:53;:::i;:::-;3638:63;;3593:118;3750:2;3776:53;3821:7;3812:6;3801:9;3797:22;3776:53;:::i;:::-;3766:63;;3721:118;3227:619;;;;;:::o;3852:468::-;3917:6;3925;3974:2;3962:9;3953:7;3949:23;3945:32;3942:119;;;3980:79;;:::i;:::-;3942:119;4100:1;4125:53;4170:7;4161:6;4150:9;4146:22;4125:53;:::i;:::-;4115:63;;4071:117;4227:2;4253:50;4295:7;4286:6;4275:9;4271:22;4253:50;:::i;:::-;4243:60;;4198:115;3852:468;;;;;:::o;4326:474::-;4394:6;4402;4451:2;4439:9;4430:7;4426:23;4422:32;4419:119;;;4457:79;;:::i;:::-;4419:119;4577:1;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4548:117;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4326:474;;;;;:::o;4806:893::-;4955:6;4963;4971;4979;5028:3;5016:9;5007:7;5003:23;4999:33;4996:120;;;5035:79;;:::i;:::-;4996:120;5155:1;5180:75;5247:7;5238:6;5227:9;5223:22;5180:75;:::i;:::-;5170:85;;5126:139;5304:2;5330:75;5397:7;5388:6;5377:9;5373:22;5330:75;:::i;:::-;5320:85;;5275:140;5454:3;5481:75;5548:7;5539:6;5528:9;5524:22;5481:75;:::i;:::-;5471:85;;5425:141;5605:3;5632:50;5674:7;5665:6;5654:9;5650:22;5632:50;:::i;:::-;5622:60;;5576:116;4806:893;;;;;;;:::o;5705:345::-;5772:6;5821:2;5809:9;5800:7;5796:23;5792:32;5789:119;;;5827:79;;:::i;:::-;5789:119;5947:1;5972:61;6025:7;6016:6;6005:9;6001:22;5972:61;:::i;:::-;5962:71;;5918:125;5705:345;;;;:::o;6056:607::-;6127:6;6135;6143;6192:2;6180:9;6171:7;6167:23;6163:32;6160:119;;;6198:79;;:::i;:::-;6160:119;6318:1;6343:50;6385:7;6376:6;6365:9;6361:22;6343:50;:::i;:::-;6333:60;;6289:114;6442:2;6468:50;6510:7;6501:6;6490:9;6486:22;6468:50;:::i;:::-;6458:60;;6413:115;6567:2;6593:53;6638:7;6629:6;6618:9;6614:22;6593:53;:::i;:::-;6583:63;;6538:118;6056:607;;;;;:::o;6669:613::-;6743:6;6751;6759;6808:2;6796:9;6787:7;6783:23;6779:32;6776:119;;;6814:79;;:::i;:::-;6776:119;6934:1;6959:50;7001:7;6992:6;6981:9;6977:22;6959:50;:::i;:::-;6949:60;;6905:114;7058:2;7084:53;7129:7;7120:6;7109:9;7105:22;7084:53;:::i;:::-;7074:63;;7029:118;7186:2;7212:53;7257:7;7248:6;7237:9;7233:22;7212:53;:::i;:::-;7202:63;;7157:118;6669:613;;;;;:::o;7288:329::-;7347:6;7396:2;7384:9;7375:7;7371:23;7367:32;7364:119;;;7402:79;;:::i;:::-;7364:119;7522:1;7547:53;7592:7;7583:6;7572:9;7568:22;7547:53;:::i;:::-;7537:63;;7493:117;7288:329;;;;:::o;7623:351::-;7693:6;7742:2;7730:9;7721:7;7717:23;7713:32;7710:119;;;7748:79;;:::i;:::-;7710:119;7868:1;7893:64;7949:7;7940:6;7929:9;7925:22;7893:64;:::i;:::-;7883:74;;7839:128;7623:351;;;;:::o;7980:179::-;8049:10;8070:46;8112:3;8104:6;8070:46;:::i;:::-;8148:4;8143:3;8139:14;8125:28;;7980:179;;;;:::o;8165:108::-;8242:24;8260:5;8242:24;:::i;:::-;8237:3;8230:37;8165:108;;:::o;8279:118::-;8366:24;8384:5;8366:24;:::i;:::-;8361:3;8354:37;8279:118;;:::o;8433:732::-;8552:3;8581:54;8629:5;8581:54;:::i;:::-;8651:86;8730:6;8725:3;8651:86;:::i;:::-;8644:93;;8761:56;8811:5;8761:56;:::i;:::-;8840:7;8871:1;8856:284;8881:6;8878:1;8875:13;8856:284;;;8957:6;8951:13;8984:63;9043:3;9028:13;8984:63;:::i;:::-;8977:70;;9070:60;9123:6;9070:60;:::i;:::-;9060:70;;8916:224;8903:1;8900;8896:9;8891:14;;8856:284;;;8860:14;9156:3;9149:10;;8557:608;;;8433:732;;;;:::o;9171:109::-;9252:21;9267:5;9252:21;:::i;:::-;9247:3;9240:34;9171:109;;:::o;9286:373::-;9390:3;9418:38;9450:5;9418:38;:::i;:::-;9472:88;9553:6;9548:3;9472:88;:::i;:::-;9465:95;;9569:52;9614:6;9609:3;9602:4;9595:5;9591:16;9569:52;:::i;:::-;9646:6;9641:3;9637:16;9630:23;;9394:265;9286:373;;;;:::o;9665:147::-;9760:45;9799:5;9760:45;:::i;:::-;9755:3;9748:58;9665:147;;:::o;9818:364::-;9906:3;9934:39;9967:5;9934:39;:::i;:::-;9989:71;10053:6;10048:3;9989:71;:::i;:::-;9982:78;;10069:52;10114:6;10109:3;10102:4;10095:5;10091:16;10069:52;:::i;:::-;10146:29;10168:6;10146:29;:::i;:::-;10141:3;10137:39;10130:46;;9910:272;9818:364;;;;:::o;10188:366::-;10330:3;10351:67;10415:2;10410:3;10351:67;:::i;:::-;10344:74;;10427:93;10516:3;10427:93;:::i;:::-;10545:2;10540:3;10536:12;10529:19;;10188:366;;;:::o;10560:::-;10702:3;10723:67;10787:2;10782:3;10723:67;:::i;:::-;10716:74;;10799:93;10888:3;10799:93;:::i;:::-;10917:2;10912:3;10908:12;10901:19;;10560:366;;;:::o;10932:::-;11074:3;11095:67;11159:2;11154:3;11095:67;:::i;:::-;11088:74;;11171:93;11260:3;11171:93;:::i;:::-;11289:2;11284:3;11280:12;11273:19;;10932:366;;;:::o;11304:::-;11446:3;11467:67;11531:2;11526:3;11467:67;:::i;:::-;11460:74;;11543:93;11632:3;11543:93;:::i;:::-;11661:2;11656:3;11652:12;11645:19;;11304:366;;;:::o;11676:::-;11818:3;11839:67;11903:2;11898:3;11839:67;:::i;:::-;11832:74;;11915:93;12004:3;11915:93;:::i;:::-;12033:2;12028:3;12024:12;12017:19;;11676:366;;;:::o;12048:::-;12190:3;12211:67;12275:2;12270:3;12211:67;:::i;:::-;12204:74;;12287:93;12376:3;12287:93;:::i;:::-;12405:2;12400:3;12396:12;12389:19;;12048:366;;;:::o;12420:::-;12562:3;12583:67;12647:2;12642:3;12583:67;:::i;:::-;12576:74;;12659:93;12748:3;12659:93;:::i;:::-;12777:2;12772:3;12768:12;12761:19;;12420:366;;;:::o;12792:::-;12934:3;12955:67;13019:2;13014:3;12955:67;:::i;:::-;12948:74;;13031:93;13120:3;13031:93;:::i;:::-;13149:2;13144:3;13140:12;13133:19;;12792:366;;;:::o;13164:::-;13306:3;13327:67;13391:2;13386:3;13327:67;:::i;:::-;13320:74;;13403:93;13492:3;13403:93;:::i;:::-;13521:2;13516:3;13512:12;13505:19;;13164:366;;;:::o;13536:::-;13678:3;13699:67;13763:2;13758:3;13699:67;:::i;:::-;13692:74;;13775:93;13864:3;13775:93;:::i;:::-;13893:2;13888:3;13884:12;13877:19;;13536:366;;;:::o;13908:::-;14050:3;14071:67;14135:2;14130:3;14071:67;:::i;:::-;14064:74;;14147:93;14236:3;14147:93;:::i;:::-;14265:2;14260:3;14256:12;14249:19;;13908:366;;;:::o;14280:::-;14422:3;14443:67;14507:2;14502:3;14443:67;:::i;:::-;14436:74;;14519:93;14608:3;14519:93;:::i;:::-;14637:2;14632:3;14628:12;14621:19;;14280:366;;;:::o;14652:::-;14794:3;14815:67;14879:2;14874:3;14815:67;:::i;:::-;14808:74;;14891:93;14980:3;14891:93;:::i;:::-;15009:2;15004:3;15000:12;14993:19;;14652:366;;;:::o;15024:::-;15166:3;15187:67;15251:2;15246:3;15187:67;:::i;:::-;15180:74;;15263:93;15352:3;15263:93;:::i;:::-;15381:2;15376:3;15372:12;15365:19;;15024:366;;;:::o;15396:::-;15538:3;15559:67;15623:2;15618:3;15559:67;:::i;:::-;15552:74;;15635:93;15724:3;15635:93;:::i;:::-;15753:2;15748:3;15744:12;15737:19;;15396:366;;;:::o;15768:::-;15910:3;15931:67;15995:2;15990:3;15931:67;:::i;:::-;15924:74;;16007:93;16096:3;16007:93;:::i;:::-;16125:2;16120:3;16116:12;16109:19;;15768:366;;;:::o;16140:::-;16282:3;16303:67;16367:2;16362:3;16303:67;:::i;:::-;16296:74;;16379:93;16468:3;16379:93;:::i;:::-;16497:2;16492:3;16488:12;16481:19;;16140:366;;;:::o;16512:115::-;16597:23;16614:5;16597:23;:::i;:::-;16592:3;16585:36;16512:115;;:::o;16633:118::-;16720:24;16738:5;16720:24;:::i;:::-;16715:3;16708:37;16633:118;;:::o;16757:112::-;16840:22;16856:5;16840:22;:::i;:::-;16835:3;16828:35;16757:112;;:::o;16875:271::-;17005:3;17027:93;17116:3;17107:6;17027:93;:::i;:::-;17020:100;;17137:3;17130:10;;16875:271;;;;:::o;17152:222::-;17245:4;17283:2;17272:9;17268:18;17260:26;;17296:71;17364:1;17353:9;17349:17;17340:6;17296:71;:::i;:::-;17152:222;;;;:::o;17380:332::-;17501:4;17539:2;17528:9;17524:18;17516:26;;17552:71;17620:1;17609:9;17605:17;17596:6;17552:71;:::i;:::-;17633:72;17701:2;17690:9;17686:18;17677:6;17633:72;:::i;:::-;17380:332;;;;;:::o;17718:210::-;17805:4;17843:2;17832:9;17828:18;17820:26;;17856:65;17918:1;17907:9;17903:17;17894:6;17856:65;:::i;:::-;17718:210;;;;:::o;17934:720::-;18169:4;18207:3;18196:9;18192:19;18184:27;;18221:79;18297:1;18286:9;18282:17;18273:6;18221:79;:::i;:::-;18347:9;18341:4;18337:20;18332:2;18321:9;18317:18;18310:48;18375:108;18478:4;18469:6;18375:108;:::i;:::-;18367:116;;18493:72;18561:2;18550:9;18546:18;18537:6;18493:72;:::i;:::-;18575;18643:2;18632:9;18628:18;18619:6;18575:72;:::i;:::-;17934:720;;;;;;;:::o;18660:313::-;18773:4;18811:2;18800:9;18796:18;18788:26;;18860:9;18854:4;18850:20;18846:1;18835:9;18831:17;18824:47;18888:78;18961:4;18952:6;18888:78;:::i;:::-;18880:86;;18660:313;;;;:::o;18979:419::-;19145:4;19183:2;19172:9;19168:18;19160:26;;19232:9;19226:4;19222:20;19218:1;19207:9;19203:17;19196:47;19260:131;19386:4;19260:131;:::i;:::-;19252:139;;18979:419;;;:::o;19404:::-;19570:4;19608:2;19597:9;19593:18;19585:26;;19657:9;19651:4;19647:20;19643:1;19632:9;19628:17;19621:47;19685:131;19811:4;19685:131;:::i;:::-;19677:139;;19404:419;;;:::o;19829:::-;19995:4;20033:2;20022:9;20018:18;20010:26;;20082:9;20076:4;20072:20;20068:1;20057:9;20053:17;20046:47;20110:131;20236:4;20110:131;:::i;:::-;20102:139;;19829:419;;;:::o;20254:::-;20420:4;20458:2;20447:9;20443:18;20435:26;;20507:9;20501:4;20497:20;20493:1;20482:9;20478:17;20471:47;20535:131;20661:4;20535:131;:::i;:::-;20527:139;;20254:419;;;:::o;20679:::-;20845:4;20883:2;20872:9;20868:18;20860:26;;20932:9;20926:4;20922:20;20918:1;20907:9;20903:17;20896:47;20960:131;21086:4;20960:131;:::i;:::-;20952:139;;20679:419;;;:::o;21104:::-;21270:4;21308:2;21297:9;21293:18;21285:26;;21357:9;21351:4;21347:20;21343:1;21332:9;21328:17;21321:47;21385:131;21511:4;21385:131;:::i;:::-;21377:139;;21104:419;;;:::o;21529:::-;21695:4;21733:2;21722:9;21718:18;21710:26;;21782:9;21776:4;21772:20;21768:1;21757:9;21753:17;21746:47;21810:131;21936:4;21810:131;:::i;:::-;21802:139;;21529:419;;;:::o;21954:::-;22120:4;22158:2;22147:9;22143:18;22135:26;;22207:9;22201:4;22197:20;22193:1;22182:9;22178:17;22171:47;22235:131;22361:4;22235:131;:::i;:::-;22227:139;;21954:419;;;:::o;22379:::-;22545:4;22583:2;22572:9;22568:18;22560:26;;22632:9;22626:4;22622:20;22618:1;22607:9;22603:17;22596:47;22660:131;22786:4;22660:131;:::i;:::-;22652:139;;22379:419;;;:::o;22804:::-;22970:4;23008:2;22997:9;22993:18;22985:26;;23057:9;23051:4;23047:20;23043:1;23032:9;23028:17;23021:47;23085:131;23211:4;23085:131;:::i;:::-;23077:139;;22804:419;;;:::o;23229:::-;23395:4;23433:2;23422:9;23418:18;23410:26;;23482:9;23476:4;23472:20;23468:1;23457:9;23453:17;23446:47;23510:131;23636:4;23510:131;:::i;:::-;23502:139;;23229:419;;;:::o;23654:::-;23820:4;23858:2;23847:9;23843:18;23835:26;;23907:9;23901:4;23897:20;23893:1;23882:9;23878:17;23871:47;23935:131;24061:4;23935:131;:::i;:::-;23927:139;;23654:419;;;:::o;24079:::-;24245:4;24283:2;24272:9;24268:18;24260:26;;24332:9;24326:4;24322:20;24318:1;24307:9;24303:17;24296:47;24360:131;24486:4;24360:131;:::i;:::-;24352:139;;24079:419;;;:::o;24504:::-;24670:4;24708:2;24697:9;24693:18;24685:26;;24757:9;24751:4;24747:20;24743:1;24732:9;24728:17;24721:47;24785:131;24911:4;24785:131;:::i;:::-;24777:139;;24504:419;;;:::o;24929:::-;25095:4;25133:2;25122:9;25118:18;25110:26;;25182:9;25176:4;25172:20;25168:1;25157:9;25153:17;25146:47;25210:131;25336:4;25210:131;:::i;:::-;25202:139;;24929:419;;;:::o;25354:::-;25520:4;25558:2;25547:9;25543:18;25535:26;;25607:9;25601:4;25597:20;25593:1;25582:9;25578:17;25571:47;25635:131;25761:4;25635:131;:::i;:::-;25627:139;;25354:419;;;:::o;25779:::-;25945:4;25983:2;25972:9;25968:18;25960:26;;26032:9;26026:4;26022:20;26018:1;26007:9;26003:17;25996:47;26060:131;26186:4;26060:131;:::i;:::-;26052:139;;25779:419;;;:::o;26204:218::-;26295:4;26333:2;26322:9;26318:18;26310:26;;26346:69;26412:1;26401:9;26397:17;26388:6;26346:69;:::i;:::-;26204:218;;;;:::o;26428:222::-;26521:4;26559:2;26548:9;26544:18;26536:26;;26572:71;26640:1;26629:9;26625:17;26616:6;26572:71;:::i;:::-;26428:222;;;;:::o;26656:831::-;26919:4;26957:3;26946:9;26942:19;26934:27;;26971:71;27039:1;27028:9;27024:17;27015:6;26971:71;:::i;:::-;27052:80;27128:2;27117:9;27113:18;27104:6;27052:80;:::i;:::-;27179:9;27173:4;27169:20;27164:2;27153:9;27149:18;27142:48;27207:108;27310:4;27301:6;27207:108;:::i;:::-;27199:116;;27325:72;27393:2;27382:9;27378:18;27369:6;27325:72;:::i;:::-;27407:73;27475:3;27464:9;27460:19;27451:6;27407:73;:::i;:::-;26656:831;;;;;;;;:::o;27493:442::-;27642:4;27680:2;27669:9;27665:18;27657:26;;27693:71;27761:1;27750:9;27746:17;27737:6;27693:71;:::i;:::-;27774:72;27842:2;27831:9;27827:18;27818:6;27774:72;:::i;:::-;27856;27924:2;27913:9;27909:18;27900:6;27856:72;:::i;:::-;27493:442;;;;;;:::o;27941:553::-;28118:4;28156:3;28145:9;28141:19;28133:27;;28170:71;28238:1;28227:9;28223:17;28214:6;28170:71;:::i;:::-;28251:72;28319:2;28308:9;28304:18;28295:6;28251:72;:::i;:::-;28333;28401:2;28390:9;28386:18;28377:6;28333:72;:::i;:::-;28415;28483:2;28472:9;28468:18;28459:6;28415:72;:::i;:::-;27941:553;;;;;;;:::o;28500:214::-;28589:4;28627:2;28616:9;28612:18;28604:26;;28640:67;28704:1;28693:9;28689:17;28680:6;28640:67;:::i;:::-;28500:214;;;;:::o;28720:129::-;28754:6;28781:20;;:::i;:::-;28771:30;;28810:33;28838:4;28830:6;28810:33;:::i;:::-;28720:129;;;:::o;28855:75::-;28888:6;28921:2;28915:9;28905:19;;28855:75;:::o;28936:248::-;29010:4;29100:18;29092:6;29089:30;29086:56;;;29122:18;;:::i;:::-;29086:56;29172:4;29164:6;29160:17;29152:25;;28936:248;;;:::o;29190:132::-;29257:4;29280:3;29272:11;;29310:4;29305:3;29301:14;29293:22;;29190:132;;;:::o;29328:114::-;29395:6;29429:5;29423:12;29413:22;;29328:114;;;:::o;29448:98::-;29499:6;29533:5;29527:12;29517:22;;29448:98;;;:::o;29552:99::-;29604:6;29638:5;29632:12;29622:22;;29552:99;;;:::o;29657:113::-;29727:4;29759;29754:3;29750:14;29742:22;;29657:113;;;:::o;29776:184::-;29875:11;29909:6;29904:3;29897:19;29949:4;29944:3;29940:14;29925:29;;29776:184;;;;:::o;29966:147::-;30067:11;30104:3;30089:18;;29966:147;;;;:::o;30119:169::-;30203:11;30237:6;30232:3;30225:19;30277:4;30272:3;30268:14;30253:29;;30119:169;;;;:::o;30294:242::-;30333:3;30352:19;30369:1;30352:19;:::i;:::-;30347:24;;30385:19;30402:1;30385:19;:::i;:::-;30380:24;;30478:1;30470:6;30466:14;30463:1;30460:21;30457:47;;;30484:18;;:::i;:::-;30457:47;30528:1;30525;30521:9;30514:16;;30294:242;;;;:::o;30542:305::-;30582:3;30601:20;30619:1;30601:20;:::i;:::-;30596:25;;30635:20;30653:1;30635:20;:::i;:::-;30630:25;;30789:1;30721:66;30717:74;30714:1;30711:81;30708:107;;;30795:18;;:::i;:::-;30708:107;30839:1;30836;30832:9;30825:16;;30542:305;;;;:::o;30853:185::-;30893:1;30910:20;30928:1;30910:20;:::i;:::-;30905:25;;30944:20;30962:1;30944:20;:::i;:::-;30939:25;;30983:1;30973:35;;30988:18;;:::i;:::-;30973:35;31030:1;31027;31023:9;31018:14;;30853:185;;;;:::o;31044:348::-;31084:7;31107:20;31125:1;31107:20;:::i;:::-;31102:25;;31141:20;31159:1;31141:20;:::i;:::-;31136:25;;31329:1;31261:66;31257:74;31254:1;31251:81;31246:1;31239:9;31232:17;31228:105;31225:131;;;31336:18;;:::i;:::-;31225:131;31384:1;31381;31377:9;31366:20;;31044:348;;;;:::o;31398:191::-;31438:4;31458:20;31476:1;31458:20;:::i;:::-;31453:25;;31492:20;31510:1;31492:20;:::i;:::-;31487:25;;31531:1;31528;31525:8;31522:34;;;31536:18;;:::i;:::-;31522:34;31581:1;31578;31574:9;31566:17;;31398:191;;;;:::o;31595:96::-;31632:7;31661:24;31679:5;31661:24;:::i;:::-;31650:35;;31595:96;;;:::o;31697:90::-;31731:7;31774:5;31767:13;31760:21;31749:32;;31697:90;;;:::o;31793:89::-;31829:7;31869:6;31862:5;31858:18;31847:29;;31793:89;;;:::o;31888:126::-;31925:7;31965:42;31958:5;31954:54;31943:65;;31888:126;;;:::o;32020:77::-;32057:7;32086:5;32075:16;;32020:77;;;:::o;32103:86::-;32138:7;32178:4;32171:5;32167:16;32156:27;;32103:86;;;:::o;32195:121::-;32253:9;32286:24;32304:5;32286:24;:::i;:::-;32273:37;;32195:121;;;:::o;32322:307::-;32390:1;32400:113;32414:6;32411:1;32408:13;32400:113;;;32499:1;32494:3;32490:11;32484:18;32480:1;32475:3;32471:11;32464:39;32436:2;32433:1;32429:10;32424:15;;32400:113;;;32531:6;32528:1;32525:13;32522:101;;;32611:1;32602:6;32597:3;32593:16;32586:27;32522:101;32371:258;32322:307;;;:::o;32635:320::-;32679:6;32716:1;32710:4;32706:12;32696:22;;32763:1;32757:4;32753:12;32784:18;32774:81;;32840:4;32832:6;32828:17;32818:27;;32774:81;32902:2;32894:6;32891:14;32871:18;32868:38;32865:84;;;32921:18;;:::i;:::-;32865:84;32686:269;32635:320;;;:::o;32961:281::-;33044:27;33066:4;33044:27;:::i;:::-;33036:6;33032:40;33174:6;33162:10;33159:22;33138:18;33126:10;33123:34;33120:62;33117:88;;;33185:18;;:::i;:::-;33117:88;33225:10;33221:2;33214:22;33004:238;32961:281;;:::o;33248:180::-;33296:77;33293:1;33286:88;33393:4;33390:1;33383:15;33417:4;33414:1;33407:15;33434:180;33482:77;33479:1;33472:88;33579:4;33576:1;33569:15;33603:4;33600:1;33593:15;33620:180;33668:77;33665:1;33658:88;33765:4;33762:1;33755:15;33789:4;33786:1;33779:15;33806:180;33854:77;33851:1;33844:88;33951:4;33948:1;33941:15;33975:4;33972:1;33965:15;33992:180;34040:77;34037:1;34030:88;34137:4;34134:1;34127:15;34161:4;34158:1;34151:15;34178:117;34287:1;34284;34277:12;34301:117;34410:1;34407;34400:12;34547:117;34656:1;34653;34646:12;34670:102;34711:6;34762:2;34758:7;34753:2;34746:5;34742:14;34738:28;34728:38;;34670:102;;;:::o;34778:222::-;34918:34;34914:1;34906:6;34902:14;34895:58;34987:5;34982:2;34974:6;34970:15;34963:30;34778:222;:::o;35006:294::-;35146:34;35142:1;35134:6;35130:14;35123:58;35215:34;35210:2;35202:6;35198:15;35191:59;35284:8;35279:2;35271:6;35267:15;35260:33;35006:294;:::o;35306:221::-;35446:34;35442:1;35434:6;35430:14;35423:58;35515:4;35510:2;35502:6;35498:15;35491:29;35306:221;:::o;35533:::-;35673:34;35669:1;35661:6;35657:14;35650:58;35742:4;35737:2;35729:6;35725:15;35718:29;35533:221;:::o;35760:179::-;35900:31;35896:1;35888:6;35884:14;35877:55;35760:179;:::o;35945:225::-;36085:34;36081:1;36073:6;36069:14;36062:58;36154:8;36149:2;36141:6;36137:15;36130:33;35945:225;:::o;36176:::-;36316:34;36312:1;36304:6;36300:14;36293:58;36385:8;36380:2;36372:6;36368:15;36361:33;36176:225;:::o;36407:233::-;36547:34;36543:1;36535:6;36531:14;36524:58;36616:16;36611:2;36603:6;36599:15;36592:41;36407:233;:::o;36646:171::-;36786:23;36782:1;36774:6;36770:14;36763:47;36646:171;:::o;36823:225::-;36963:34;36959:1;36951:6;36947:14;36940:58;37032:8;37027:2;37019:6;37015:15;37008:33;36823:225;:::o;37054:220::-;37194:34;37190:1;37182:6;37178:14;37171:58;37263:3;37258:2;37250:6;37246:15;37239:28;37054:220;:::o;37280:169::-;37420:21;37416:1;37408:6;37404:14;37397:45;37280:169;:::o;37455:224::-;37595:34;37591:1;37583:6;37579:14;37572:58;37664:7;37659:2;37651:6;37647:15;37640:32;37455:224;:::o;37685:223::-;37825:34;37821:1;37813:6;37809:14;37802:58;37894:6;37889:2;37881:6;37877:15;37870:31;37685:223;:::o;37914:179::-;38054:31;38050:1;38042:6;38038:14;38031:55;37914:179;:::o;38099:229::-;38239:34;38235:1;38227:6;38223:14;38216:58;38308:12;38303:2;38295:6;38291:15;38284:37;38099:229;:::o;38334:224::-;38474:34;38470:1;38462:6;38458:14;38451:58;38543:7;38538:2;38530:6;38526:15;38519:32;38334:224;:::o;38564:122::-;38637:24;38655:5;38637:24;:::i;:::-;38630:5;38627:35;38617:63;;38676:1;38673;38666:12;38617:63;38564:122;:::o;38692:116::-;38762:21;38777:5;38762:21;:::i;:::-;38755:5;38752:32;38742:60;;38798:1;38795;38788:12;38742:60;38692:116;:::o;38814:120::-;38886:23;38903:5;38886:23;:::i;:::-;38879:5;38876:34;38866:62;;38924:1;38921;38914:12;38866:62;38814:120;:::o;38940:122::-;39013:24;39031:5;39013:24;:::i;:::-;39006:5;39003:35;38993:63;;39052:1;39049;39042:12;38993:63;38940:122;:::o

Swarm Source

ipfs://01f3afbd26403b666f96a21f64ad7a77e5beb6628f187763f0f76ad20fb1a394

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.