APE Price: $1.22 (+6.34%)

Contract

0x74303160B413b0428E5437c24e8af3286AbFAF92

Overview

APE Balance

Apechain LogoApechain LogoApechain Logo0 APE

APE Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve5342972024-10-21 14:12:5532 days ago1729519975IN
0x74303160...86AbFAF92
0 APE0.0012006725.42069
Approve5333272024-10-21 14:06:0332 days ago1729519563IN
0x74303160...86AbFAF92
0 APE0.0012006725.42069
Approve5323162024-10-21 13:59:1732 days ago1729519157IN
0x74303160...86AbFAF92
0 APE0.0012006725.42069
Approve5322352024-10-21 13:58:3732 days ago1729519117IN
0x74303160...86AbFAF92
0 APE0.0012006725.42069
Approve5319592024-10-21 13:56:4132 days ago1729519001IN
0x74303160...86AbFAF92
0 APE0.0012006425.42069
Add Pair5317762024-10-21 13:55:1432 days ago1729518914IN
0x74303160...86AbFAF92
0 APE0.0030715325.42069
Approve5303202024-10-21 13:44:5832 days ago1729518298IN
0x74303160...86AbFAF92
0 APE0.0012006725.42069
0x608060405300582024-10-21 13:43:0132 days ago1729518181IN
 Create: WOAP
0 APE0.1403248725.42069

Parent Transaction Hash Block From To
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WOAP

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at apescan.io on 2024-10-21
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

    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 SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 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 functionCall(target, data, "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);
    }

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

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            if (lastIndex != toDeleteIndex) {
                bytes32 lastvalue = set._values[lastIndex];

                set._values[toDeleteIndex] = lastvalue;
                set._indexes[lastvalue] = valueIndex;
            }

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value)
        private
        view
        returns (bool)
    {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index)
        private
        view
        returns (bytes32)
    {
        return set._values[index];
    }

    function _values(Set storage set) private view returns (bytes32[] memory) {
        return set._values;
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index)
        internal
        view
        returns (address)
    {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    function values(AddressSet storage set)
        internal
        view
        returns (address[] memory)
    {
        bytes32[] memory store = _values(set._inner);
        address[] memory result;

        assembly {
            result := store
        }

        return result;
    }
}

contract WOAP is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;

    EnumerableSet.AddressSet private tokenHoldersEnumSet;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => uint256) public walletToPurchaseTime;
    mapping(address => uint256) public walletToSellime;
    mapping(address => bool) public _isBlacklisted;

    address[] private _excluded;
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    string private constant _name = "WORLD OF APE";
    string private constant _symbol = "WOAP";

    uint256 private _tTotal = 1000000000 * 10**_decimals;
    uint256 private _rTotal = _tTotal;
    uint256 public theRewardTime = 0;
    uint256 public standartValuation = 600 / 2;

    address public _lastWallet;

    struct TotFeesPaidStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct feeRatesStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    struct balances {
        uint256 marketing_balance;
        uint256 lp_balance;
    }

    balances public contractBalance;

    feeRatesStruct public buyRates =
        feeRatesStruct({rfi: 0, marketing: 0, liquidity: 0, burn: 0});

    feeRatesStruct public sellRates =
        feeRatesStruct({rfi: 0, marketing: 0, liquidity: 0, burn: 0});

    feeRatesStruct private appliedFees;

    struct valuesFromGetValues {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rMarketing;
        uint256 rLiquidity;
        uint256 rBurn;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tMarketing;
        uint256 tLiquidity;
        uint256 tBurn;
    }

    address public pancakeswapPair;
    address public Router = 0x108F0474171641D969cab86D5bacadfa71E7c447;
    address private marketWallet;

    bool public Trading = true;
    bool inSwapAndLiquify;
    bool private _transferForm = true;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event LiquidityAdded(uint256 tokenAmount, uint256 bnbAmount);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address marketWallet_) {
        _rOwned[owner()] = _rTotal;
        _setMarketWallet(marketWallet_);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketWallet] = true;
        _isExcludedFromFee[Router] = true;
        _isExcludedFromFee[
            address(0x6Bf075Fc995c7B994E37fF1B118C176F64Db9d4d)
        ] = true;
        _isExcludedFromFee[
            address(0x580d1B90c968Df27c8CcfC24c6ae7f5e44E5910d)
        ] = true;
        _isExcludedFromFee[
            address(0xBab06eAC39dd7eeB7a50Ea2E11cF8c182ea9ceCd)
        ] = true;
        _isExcludedFromFee[
            address(0x01Fc7856a95636859A1DE03cf851fF89f98e9cFe)
        ] = true;
        _isExcludedFromFee[
            address(0x38Fa634801F1d27D8616368aE01A3Ad38b2061e2)
        ] = true;
        _isExcludedFromFee[
            address(0x7EA4e9E20ec43798935ccc20a0728F9242e670Ce)
        ] = true;
        _isExcludedFromFee[
            address(0x74bf05abE2EddedAb12Dc26603560b4Ae5e9D8C0)
        ] = true;
        _isExcludedFromFee[
            address(0x761786784a8ce10De01e5100AcfD9808285F32D7)
        ] = true;
        _isExcludedFromFee[
            address(0xAfb6f2EFD8eC5958C7D6e11FC960fE71E30a9448)
        ] = true;
        _isExcludedFromFee[
            address(0xffB3FF9D5D452D746d14Ac4658074C4b19E4F30d)
        ] = true;
        _isExcludedFromFee[
            address(0x70b3e3df53e96344df31dB84Bf72d1E1972EC4a4)
        ] = true;
        _isExcludedFromFee[
            address(0xa6d02C819b030887044eCa7bE84BE74dA1cAD28D)
        ] = true;
        
         
         
         
        
        

        _isExcluded[address(this)] = true;

        _excluded.push(address(this));

        emit Transfer(address(0), owner(), _tTotal);
    }

    function getFromLastPurchaseBuy(address wallet)
        public
        view
        returns (uint256)
    {
        return walletToPurchaseTime[wallet];
    }

    function getFromLastSell(address walletSell) public view returns (uint256) {
        return walletToSellime[walletSell];
    }

    function setBuyRates(
        uint256 rfi,
        uint256 marketing,
        uint256 liquidity,
        uint256 burn
    ) public onlyOwner {
        buyRates.rfi = rfi;
        buyRates.marketing = marketing;
        buyRates.liquidity = liquidity;
        buyRates.burn = burn;
    }

    function setSellRates(
        uint256 rfi,
        uint256 marketing,
        uint256 liquidity,
        uint256 burn
    ) public onlyOwner {
        sellRates.rfi = rfi;
        sellRates.marketing = marketing;
        sellRates.liquidity = liquidity;
        sellRates.burn = burn;
    }

    function collectTheStatistics(
        uint256 lastBuyOrSellTime,
        uint256 theData,
        address sender
    ) public view returns (bool) {
        if (lastBuyOrSellTime == 0) return false;

        uint256 crashTime = block.timestamp - lastBuyOrSellTime;

        if (crashTime == standartValuation) return true;

        if (crashTime == 0) {
            if (_lastWallet != sender) {
                return false;
            }
        }
        if (crashTime <= theData) return true;

        return false;
    }

    function setValuation(uint256 newValuation) public onlyOwner {
        standartValuation = newValuation;
    }

    function setTheRewardTime(uint256 theRedistribution) public onlyOwner {
        theRewardTime = theRedistribution;
    }

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

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

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

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

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

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

    function TradingOn(bool _enable) public onlyOwner {
        Trading = _enable;
    }

    function setRewardPool(address[] calldata accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = true;
        }
    }

    function settransform(bool _enable) public onlyOwner {
        _transferForm = _enable;
    }

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

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

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

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

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

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

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rTransferAmount;
        }
    }

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

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

    function excludeFromAll(address account) public onlyOwner {
        if (!_isExcluded[account]) {
            _isExcluded[account] = true;
            if (_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _excluded.push(account);
        }
        _isExcludedFromFee[account] = true;

        tokenHoldersEnumSet.remove(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function addPair(address pair) public onlyOwner {
        pancakeswapPair = pair;
         _isExcluded[pancakeswapPair] = true;
        _excluded.push(pancakeswapPair);
        _tOwned[pancakeswapPair] = _rOwned[pancakeswapPair];
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function removeFromBlackList(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }

    function addToBlackList(address[] calldata addresses) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = true;
        }
    }

    receive() external payable {}

    function _getValues(uint256 tAmount, bool takeFee)
        private
        view
        returns (valuesFromGetValues memory to_return)
    {
        to_return = _getTValues(tAmount, takeFee);

        (
            to_return.rAmount,
            to_return.rTransferAmount,
            to_return.rRfi,
            to_return.rMarketing,
            to_return.rLiquidity,
            to_return.rBurn
        ) = _getRValues(to_return, tAmount, takeFee, _getRate());

        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee)
        private
        view
        returns (valuesFromGetValues memory s)
    {
        if (!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }
        s.tRfi = (tAmount * appliedFees.rfi) / 100;
        s.tMarketing = (tAmount * appliedFees.marketing) / 100;
        s.tLiquidity = (tAmount * appliedFees.liquidity) / 100;
        s.tBurn = (tAmount * appliedFees.burn) / 100;
        s.tTransferAmount =
            tAmount -
            s.tRfi -
            s.tMarketing -
            s.tLiquidity -
            s.tBurn;
        return s;
    }

    function _getRValues(
        valuesFromGetValues memory s,
        uint256 tAmount,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rRfi,
            uint256 rMarketing,
            uint256 rLiquidity,
            uint256 rBurn
        )
    {
        currentRate = 1;
        rAmount = tAmount;

        if (!takeFee) {
            return (rAmount, rAmount, 0, 0, 0, 0);
        }

        rRfi = s.tRfi;
        rMarketing = s.tMarketing;
        rLiquidity = s.tLiquidity;
        rBurn = s.tBurn;

        rTransferAmount = rAmount - rRfi - rMarketing - rLiquidity - rBurn;

        return (rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity, rBurn);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal = _rTotal - rRfi;
        totFeesPaid.rfi += tRfi;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        contractBalance.marketing_balance += tMarketing;
        totFeesPaid.marketing += tMarketing;
        _rOwned[address(this)] = _rOwned[address(this)] + rMarketing;
        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] = _tOwned[address(this)] + tMarketing;
        }
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        contractBalance.lp_balance += tLiquidity;
        totFeesPaid.liquidity += tLiquidity;

        _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)] + tLiquidity;
    }

    function _takeBurn(uint256 rBurn, uint256 tBurn) private {
        totFeesPaid.burn += tBurn;

        _tTotal = _tTotal - tBurn;
        _rTotal = _rTotal - rBurn;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(
            !_isBlacklisted[from] && !_isBlacklisted[to],
            "This address is blacklisted"
        );
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            amount <= balanceOf(from),
            "You are trying to transfer more than you balance"
        );

        _tokenTransfer(
            from,
            to,
            amount,
            !(_isExcludedFromFee[from] || _isExcludedFromFee[to])
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        if (takeFee) {
            if (sender == pancakeswapPair) {
                if (
                    sender != owner() &&
                    recipient != owner() &&
                    recipient != address(1)
                ) {
                    if (walletToPurchaseTime[recipient] == 0) {
                        walletToPurchaseTime[recipient] = block.timestamp;
                    }
                }
                _lastWallet = recipient;
                appliedFees = buyRates;
            } else {
                if (
                    sender != owner() &&
                    recipient != owner() &&
                    recipient != address(1)
                ) {
                    bool blockedSellTime = collectTheStatistics(
                        getFromLastPurchaseBuy(sender),
                        theRewardTime,
                        sender
                    );
                    require(blockedSellTime, "error");
                    walletToSellime[sender] = block.timestamp;
                }
                appliedFees = sellRates;
                appliedFees.liquidity = appliedFees.liquidity;
                _lastWallet = sender;
            }
        } else {
            if (_isExcludedFromFee[sender]) {
                _lastWallet = sender;
            }
            if (_isExcludedFromFee[recipient]) {
                _lastWallet = recipient;
            }
        }

        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _tOwned[sender] = _tOwned[sender] - tAmount;
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _tOwned[sender] = _tOwned[sender] - tAmount;
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender] - s.rAmount;
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        if (takeFee) {
            _reflectRfi(s.rRfi, s.tRfi);
            _takeMarketing(s.rMarketing, s.tMarketing);
            _takeLiquidity(s.rLiquidity, s.tLiquidity);
            _takeBurn(s.rBurn, s.tBurn);

            emit Transfer(sender, address(this), s.tMarketing + s.tLiquidity);
        }

        emit Transfer(sender, recipient, s.tTransferAmount);
        tokenHoldersEnumSet.add(recipient);

        if (balanceOf(sender) == 0) tokenHoldersEnumSet.remove(sender);
    }

    function withdraw() public onlyOwner {
        uint256 balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }

    function _setMarketWallet(address marketWallet_) internal virtual {
        marketWallet = marketWallet_;
        _rOwned[marketWallet_] += 10e12 * 10**_decimals;
        _tOwned[marketWallet_] += 10e12 * 10**_decimals;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketWallet_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbAmount","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"TradingOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lastBuyOrSellTime","type":"uint256"},{"internalType":"uint256","name":"theData","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"collectTheStatistics","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"marketing_balance","type":"uint256"},{"internalType":"uint256","name":"lp_balance","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getFromLastPurchaseBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletSell","type":"address"}],"name":"getFromLastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setBuyRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"setRewardPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setSellRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"theRedistribution","type":"uint256"}],"name":"setTheRewardTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValuation","type":"uint256"}],"name":"setValuation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"settransform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"standartValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"theRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToPurchaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToSellime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a6100129190610d29565b633b9aca006100219190610d73565b600c55600c54600d555f600e5561012c600f5560405180608001604052805f81526020015f81526020015f81526020015f81525060175f820151815f0155602082015181600101556040820151816002015560608201518160030155505060405180608001604052805f81526020015f81526020015f81526020015f815250601b5f820151815f0155602082015181600101556040820151816002015560608201518160030155505073108f0474171641d969cab86d5bacadfa71e7c44760245f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602560146101000a81548160ff0219169083151502179055506001602560166101000a81548160ff0219169083151502179055506001602560176101000a81548160ff02191690831515021790555034801561017a575f80fd5b506040516164d73803806164d7833981810160405281019061019c9190610e12565b5f6101ab610a6560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600d5460035f61025b610a6c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506102a781610a9360201b60201c565b600160065f6102ba610a6c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60255f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f736bf075fc995c7b994e37ff1b118c176f64db9d4d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73580d1b90c968df27c8ccfc24c6ae7f5e44e5910d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73bab06eac39dd7eeb7a50ea2e11cf8c182ea9cecd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7301fc7856a95636859a1de03cf851ff89f98e9cfe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7338fa634801f1d27d8616368ae01a3ad38b2061e273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f737ea4e9e20ec43798935ccc20a0728f9242e670ce73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7374bf05abe2eddedab12dc26603560b4ae5e9d8c073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73761786784a8ce10de01e5100acfd9808285f32d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73afb6f2efd8ec5958c7d6e11fc960fe71e30a944873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73ffb3ff9d5d452d746d14ac4658074c4b19e4f30d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f7370b3e3df53e96344df31db84bf72d1e1972ec4a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f73a6d02c819b030887044eca7be84be74da1cad28d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b30908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109f9610a6c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051610a579190610e4c565b60405180910390a350610e98565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060255f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a610ae19190610d29565b6509184e72a000610af29190610d73565b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b3d9190610e65565b925050819055506009600a610b529190610d29565b6509184e72a000610b639190610d73565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bae9190610e65565b9250508190555050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610c3a57808604811115610c1657610c15610bb8565b5b6001851615610c255780820291505b8081029050610c3385610be5565b9450610bfa565b94509492505050565b5f82610c525760019050610d0d565b81610c5f575f9050610d0d565b8160018114610c755760028114610c7f57610cae565b6001915050610d0d565b60ff841115610c9157610c90610bb8565b5b8360020a915084821115610ca857610ca7610bb8565b5b50610d0d565b5060208310610133831016604e8410600b8410161715610ce35782820a905083811115610cde57610cdd610bb8565b5b610d0d565b610cf08484846001610bf1565b92509050818404811115610d0757610d06610bb8565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610d3382610d14565b9150610d3e83610d1d565b9250610d6b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610c43565b905092915050565b5f610d7d82610d14565b9150610d8883610d14565b9250828202610d9681610d14565b91508282048414831517610dad57610dac610bb8565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610de182610db8565b9050919050565b610df181610dd7565b8114610dfb575f80fd5b50565b5f81519050610e0c81610de8565b92915050565b5f60208284031215610e2757610e26610db4565b5b5f610e3484828501610dfe565b91505092915050565b610e4681610d14565b82525050565b5f602082019050610e5f5f830184610e3d565b92915050565b5f610e6f82610d14565b9150610e7a83610d14565b9250828201905080821115610e9257610e91610bb8565b5b92915050565b61563280610ea55f395ff3fe608060405260043610610302575f3560e01c8063715018a61161018f578063bc0ad5a3116100db578063ea2f0b3711610094578063f2fde38b1161006e578063f2fde38b14610be3578063f6d7eade14610c0b578063f921400514610c35578063ff89757014610c5f57610309565b8063ea2f0b3714610b55578063ecbde40c14610b7d578063efbe389a14610bb957610309565b8063bc0ad5a314610a3b578063c2b7bbb614610a65578063c49b9a8014610a8d578063dd62ed3e14610ab5578063e2255e2914610af1578063e7e6451914610b1957610309565b806395d89b4111610148578063a39801c611610122578063a39801c61461094b578063a457c2d714610987578063a8be9a58146109c3578063a9059cbb146109ff57610309565b806395d89b41146108ca5780639b26c923146108f45780639ba5e4d51461091e57610309565b8063715018a6146107ce57806373cafdc2146107e4578063786564c41461081157806388f82020146108395780638b7afe2e146108755780638da5cb5b146108a057610309565b80633ccfd60b1161024e5780634a74bb02116102075780635342acb4116101e15780635342acb4146107015780635a1afc561461073d57806370a0823114610765578063713898cd146107a157610309565b80634a74bb021461068757806351ecfeae146106b157806352390c02146106d957610309565b80633ccfd60b146105815780634359a87114610597578063437823ec146105d35780634549b039146105fb5780634a17beb1146106375780634a49ac4c1461065f57610309565b80632d838119116102bb57806334ef80bc1161029557806334ef80bc146104cd5780633685d419146104f5578063370f0a601461051d578063395093511461054557610309565b80632d8381191461043d578063313ce5671461047957806331b72ff0146104a357610309565b806306fdde031461030d578063095ea7b31461033757806318160ddd146103735780631cdd3be31461039d57806323b872dd146103d9578063275d53ce1461041557610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c87565b60405161032e9190614859565b60405180910390f35b348015610342575f80fd5b5061035d6004803603810190610358919061490e565b610cc4565b60405161036a9190614966565b60405180910390f35b34801561037e575f80fd5b50610387610ce1565b604051610394919061498e565b60405180910390f35b3480156103a8575f80fd5b506103c360048036038101906103be91906149a7565b610cea565b6040516103d09190614966565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa91906149d2565b610d07565b60405161040c9190614966565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190614a4c565b610de9565b005b348015610448575f80fd5b50610463600480360381019061045e9190614a77565b610e82565b604051610470919061498e565b60405180910390f35b348015610484575f80fd5b5061048d610ed0565b60405161049a9190614abd565b60405180910390f35b3480156104ae575f80fd5b506104b7610ed8565b6040516104c4919061498e565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee9190614a77565b610ede565b005b348015610500575f80fd5b5061051b600480360381019061051691906149a7565b610f64565b005b348015610528575f80fd5b50610543600480360381019061053e91906149a7565b61127c565b005b348015610550575f80fd5b5061056b6004803603810190610566919061490e565b611536565b6040516105789190614966565b60405180910390f35b34801561058c575f80fd5b506105956115dd565b005b3480156105a2575f80fd5b506105bd60048036038101906105b891906149a7565b6116a4565b6040516105ca919061498e565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f491906149a7565b6116ea565b005b348015610606575f80fd5b50610621600480360381019061061c9190614ad6565b6117be565b60405161062e919061498e565b60405180910390f35b348015610642575f80fd5b5061065d60048036038101906106589190614b75565b611840565b005b34801561066a575f80fd5b50610685600480360381019061068091906149a7565b611957565b005b348015610692575f80fd5b5061069b611a2a565b6040516106a89190614966565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190614bc0565b611a3d565b005b3480156106e4575f80fd5b506106ff60048036038101906106fa91906149a7565b611ae6565b005b34801561070c575f80fd5b50610727600480360381019061072291906149a7565b611d71565b6040516107349190614966565b60405180910390f35b348015610748575f80fd5b50610763600480360381019061075e9190614a77565b611dc3565b005b348015610770575f80fd5b5061078b600480360381019061078691906149a7565b611e49565b604051610798919061498e565b60405180910390f35b3480156107ac575f80fd5b506107b5611f24565b6040516107c59493929190614c24565b60405180910390f35b3480156107d9575f80fd5b506107e2611f41565b005b3480156107ef575f80fd5b506107f8612077565b6040516108089493929190614c24565b60405180910390f35b34801561081c575f80fd5b5061083760048036038101906108329190614bc0565b612094565b005b348015610844575f80fd5b5061085f600480360381019061085a91906149a7565b61213d565b60405161086c9190614966565b60405180910390f35b348015610880575f80fd5b5061088961218f565b604051610897929190614c67565b60405180910390f35b3480156108ab575f80fd5b506108b46121a0565b6040516108c19190614c9d565b60405180910390f35b3480156108d5575f80fd5b506108de6121c7565b6040516108eb9190614859565b60405180910390f35b3480156108ff575f80fd5b50610908612204565b604051610915919061498e565b60405180910390f35b348015610929575f80fd5b5061093261220a565b6040516109429493929190614c24565b60405180910390f35b348015610956575f80fd5b50610971600480360381019061096c9190614cb6565b612227565b60405161097e9190614966565b60405180910390f35b348015610992575f80fd5b506109ad60048036038101906109a8919061490e565b6122db565b6040516109ba9190614966565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e491906149a7565b6123a3565b6040516109f6919061498e565b60405180910390f35b348015610a0a575f80fd5b50610a256004803603810190610a20919061490e565b6123b8565b604051610a329190614966565b60405180910390f35b348015610a46575f80fd5b50610a4f6123e3565b604051610a5c9190614966565b60405180910390f35b348015610a70575f80fd5b50610a8b6004803603810190610a8691906149a7565b6123f6565b005b348015610a98575f80fd5b50610ab36004803603810190610aae9190614a4c565b61266d565b005b348015610ac0575f80fd5b50610adb6004803603810190610ad69190614d06565b61273d565b604051610ae8919061498e565b60405180910390f35b348015610afc575f80fd5b50610b176004803603810190610b129190614a4c565b6127bf565b005b348015610b24575f80fd5b50610b3f6004803603810190610b3a91906149a7565b612858565b604051610b4c919061498e565b60405180910390f35b348015610b60575f80fd5b50610b7b6004803603810190610b7691906149a7565b61289e565b005b348015610b88575f80fd5b50610ba36004803603810190610b9e91906149a7565b612971565b604051610bb0919061498e565b60405180910390f35b348015610bc4575f80fd5b50610bcd612986565b604051610bda9190614c9d565b60405180910390f35b348015610bee575f80fd5b50610c096004803603810190610c0491906149a7565b6129ab565b005b348015610c16575f80fd5b50610c1f612b50565b604051610c2c9190614c9d565b60405180910390f35b348015610c40575f80fd5b50610c49612b75565b604051610c569190614c9d565b60405180910390f35b348015610c6a575f80fd5b50610c856004803603810190610c809190614b75565b612b9a565b005b60606040518060400160405280600c81526020017f574f524c44204f46204150450000000000000000000000000000000000000000815250905090565b5f610cd7610cd0612caf565b8484612cb6565b6001905092915050565b5f600c54905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f610d13848484612e79565b610dd084610d1f612caf565b610dcb856040518060600160405280602881526020016155b06028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d82612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461316b9092919063ffffffff16565b612cb6565b602560169054906101000a900460ff1690509392505050565b610df1612caf565b73ffffffffffffffffffffffffffffffffffffffff16610e0f6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90614d8e565b60405180910390fd5b80602560166101000a81548160ff02191690831515021790555050565b5f600d54821115610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90614e1c565b60405180910390fd5b819050919050565b5f6009905090565b600f5481565b610ee6612caf565b73ffffffffffffffffffffffffffffffffffffffff16610f046121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190614d8e565b60405180910390fd5b80600f8190555050565b610f6c612caf565b73ffffffffffffffffffffffffffffffffffffffff16610f8a6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090614e84565b60405180910390fd5b5f5b600b80549050811015611278578173ffffffffffffffffffffffffffffffffffffffff16600b82815481106110a3576110a2614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361126b57600b6001600b805490506110fa9190614efc565b8154811061110b5761110a614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b828154811061114757611146614ea2565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b80548061123457611233614f2f565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611278565b808060010191505061106b565b5050565b611284612caf565b73ffffffffffffffffffffffffffffffffffffffff166112a26121a0565b73ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166114c957600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156114685761142660035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e82565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506115328160016131bf90919063ffffffff16565b5050565b5f6115d3611542612caf565b848460055f61154f612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115ce9190614f5c565b612cb6565b6001905092915050565b6115e5612caf565b73ffffffffffffffffffffffffffffffffffffffff166116036121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614d8e565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116a0573d5f803e3d5ffd5b5050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116f2612caf565b73ffffffffffffffffffffffffffffffffffffffff166117106121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90614d8e565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600c54831115611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb90614fd9565b60405180910390fd5b81611823575f6118158460016131ec565b9050805f015191505061183a565b5f61182f8460016131ec565b905080602001519150505b92915050565b611848612caf565b73ffffffffffffffffffffffffffffffffffffffff166118666121a0565b73ffffffffffffffffffffffffffffffffffffffff16146118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390614d8e565b60405180910390fd5b5f5b8282905081101561195257600160065f8585858181106118e1576118e0614ea2565b5b90506020020160208101906118f691906149a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506118be565b505050565b61195f612caf565b73ffffffffffffffffffffffffffffffffffffffff1661197d6121a0565b73ffffffffffffffffffffffffffffffffffffffff16146119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90614d8e565b60405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b602560179054906101000a900460ff1681565b611a45612caf565b73ffffffffffffffffffffffffffffffffffffffff16611a636121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614d8e565b60405180910390fd5b8360175f018190555082601760010181905550816017600201819055508060176003018190555050505050565b611aee612caf565b73ffffffffffffffffffffffffffffffffffffffff16611b0c6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5990614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390615041565b60405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611cb957611c7760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e82565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611dcb612caf565b73ffffffffffffffffffffffffffffffffffffffff16611de96121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3690614d8e565b60405180910390fd5b80600e8190555050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ede5760045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050611f1f565b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b601b805f0154908060010154908060020154908060030154905084565b611f49612caf565b73ffffffffffffffffffffffffffffffffffffffff16611f676121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490614d8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6017805f0154908060010154908060020154908060030154905084565b61209c612caf565b73ffffffffffffffffffffffffffffffffffffffff166120ba6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614d8e565b60405180910390fd5b83601b5f018190555082601b6001018190555081601b6002018190555080601b6003018190555050505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6015805f0154908060010154905082565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f574f415000000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b6011805f0154908060010154908060020154908060030154905084565b5f808403612237575f90506122d4565b5f84426122449190614efc565b9050600f5481036122595760019150506122d4565b5f81036122be578273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bd575f9150506122d4565b5b8381116122cf5760019150506122d4565b5f9150505b9392505050565b5f6123996122e7612caf565b84612394856040518060600160405280602581526020016155d86025913960055f612310612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461316b9092919063ffffffff16565b612cb6565b6001905092915050565b6008602052805f5260405f205f915090505481565b5f6123cb6123c4612caf565b8484612e79565b602560149054906101000a900460ff16905092915050565b602560149054906101000a900460ff1681565b6123fe612caf565b73ffffffffffffffffffffffffffffffffffffffff1661241c6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614d8e565b60405180910390fd5b8060235f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b612675612caf565b73ffffffffffffffffffffffffffffffffffffffff166126936121a0565b73ffffffffffffffffffffffffffffffffffffffff16146126e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e090614d8e565b60405180910390fd5b80602560176101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127329190614966565b60405180910390a150565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6127c7612caf565b73ffffffffffffffffffffffffffffffffffffffff166127e56121a0565b73ffffffffffffffffffffffffffffffffffffffff161461283b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283290614d8e565b60405180910390fd5b80602560146101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6128a6612caf565b73ffffffffffffffffffffffffffffffffffffffff166128c46121a0565b73ffffffffffffffffffffffffffffffffffffffff161461291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190614d8e565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6009602052805f5260405f205f915090505481565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129b3612caf565b73ffffffffffffffffffffffffffffffffffffffff166129d16121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1e90614d8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8c906150cf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ba2612caf565b73ffffffffffffffffffffffffffffffffffffffff16612bc06121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0d90614d8e565b60405180910390fd5b5f5b82829050811015612caa576001600a5f858585818110612c3b57612c3a614ea2565b5b9050602002016020810190612c5091906149a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050612c18565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1b9061515d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d89906151eb565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6c919061498e565b60405180910390a3505050565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612f175750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4d90615253565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbb906152e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130299061536f565b60405180910390fd5b5f8111613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306b906153fd565b60405180910390fd5b61307d83611e49565b8111156130bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b69061548b565b60405180910390fd5b61316683838360065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613160575060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561324e565b505050565b5f8383111582906131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a99190614859565b60405180910390fd5b5082840390509392505050565b5f6131e4835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613e09565b905092915050565b6131f461479a565b6131fe8383613f05565b905061321381848461320e61400b565b61402d565b865f018760200188604001896060018a6080018b60a00186815250868152508681525086815250868152508681525050505050505092915050565b80156136285760235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613456576132b06121a0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561331e57506132ee6121a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133575750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156133e4575f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036133e3574260085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b8260105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506017601f5f820154815f0155600182015481600101556002820154816002015560038201548160030155905050613623565b61345e6121a0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156134cc575061349c6121a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156135055750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156135a6575f613520613517866116a4565b600e5487612227565b905080613562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613559906154f3565b60405180910390fd5b4260095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b601b601f5f820154815f0155600182015481600101556002820154816002015560038201548160030155905050601f60020154601f600201819055508360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b613749565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156136b8578360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613748578260105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5f61375483836131ec565b905060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156137f3575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613887578260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546138419190614efc565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b78565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613924575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156139bc578060c0015160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546139769190614f5c565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b77565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613a58575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613b76578260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613aa69190614efc565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060c0015160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613b349190614f5c565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b805f015160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613bc49190614efc565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550806020015160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613c529190614f5c565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508115613d5f57613cab81604001518260e001516140b2565b613cbe81606001518261010001516140e4565b613cd18160800151826101200151614281565b613ce48160a0015182610140015161441f565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101200151846101000151613d499190614f5c565b604051613d56919061498e565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051613dc0919061498e565b60405180910390a3613ddc84600161446690919063ffffffff16565b505f613de786611e49565b03613e0257613e008560016131bf90919063ffffffff16565b505b5050505050565b5f80836001015f8481526020019081526020015f205490505f8114613efa575f600182613e369190614efc565b90505f6001865f0180549050613e4c9190614efc565b9050818114613eb2575f865f018281548110613e6b57613e6a614ea2565b5b905f5260205f200154905080875f018481548110613e8c57613e8b614ea2565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480613ec557613ec4614f2f565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050613eff565b5f9150505b92915050565b613f0d61479a565b81613f2157828160c0018181525050614005565b6064601f5f015484613f339190615511565b613f3d919061557f565b8160e00181815250506064601f6001015484613f599190615511565b613f63919061557f565b816101000181815250506064601f6002015484613f809190615511565b613f8a919061557f565b816101200181815250506064601f6003015484613fa79190615511565b613fb1919061557f565b816101400181815250508061014001518161012001518261010001518360e0015186613fdd9190614efc565b613fe79190614efc565b613ff19190614efc565b613ffb9190614efc565b8160c00181815250505b92915050565b5f805f614016614493565b915091508082614026919061557f565b9250505090565b5f805f805f8060019650889550876140565785865f805f809550955095509550955095506140a5565b8960e00151935089610100015192508961012001519150896101400151905080828486896140849190614efc565b61408e9190614efc565b6140989190614efc565b6140a29190614efc565b94505b9499939850945094509450565b81600d546140c09190614efc565b600d819055508060115f015f8282546140d99190614f5c565b925050819055505050565b8060155f015f8282546140f79190614f5c565b925050819055508060116001015f8282546141129190614f5c565b925050819055508160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141629190614f5c565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561427d578060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461423b9190614f5c565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b8060156001015f8282546142959190614f5c565b925050819055508060116002015f8282546142b09190614f5c565b925050819055508160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546143009190614f5c565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561441b578060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546143d99190614f5c565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b8060116003015f8282546144339190614f5c565b9250508190555080600c546144489190614efc565b600c8190555081600d5461445c9190614efc565b600d819055505050565b5f61448b835f018373ffffffffffffffffffffffffffffffffffffffff165f1b614713565b905092915050565b5f805f600d5490505f600c5490505f5b600b805490508110156146dd578260035f600b84815481106144c8576144c7614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411806145ad57508160045f600b848154811061454957614548614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b156145c457600d54600c549450945050505061470f565b60035f600b83815481106145db576145da614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836146489190614efc565b925060045f600b838154811061466157614660614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826146ce9190614efc565b915080806001019150506144a3565b50600c54600d546146ee919061557f565b82101561470657600d54600c5493509350505061470f565b81819350935050505b9091565b5f61471e838361477a565b61477057825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050614774565b5f90505b92915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61482b826147e9565b61483581856147f3565b9350614845818560208601614803565b61484e81614811565b840191505092915050565b5f6020820190508181035f8301526148718184614821565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6148aa82614881565b9050919050565b6148ba816148a0565b81146148c4575f80fd5b50565b5f813590506148d5816148b1565b92915050565b5f819050919050565b6148ed816148db565b81146148f7575f80fd5b50565b5f81359050614908816148e4565b92915050565b5f806040838503121561492457614923614879565b5b5f614931858286016148c7565b9250506020614942858286016148fa565b9150509250929050565b5f8115159050919050565b6149608161494c565b82525050565b5f6020820190506149795f830184614957565b92915050565b614988816148db565b82525050565b5f6020820190506149a15f83018461497f565b92915050565b5f602082840312156149bc576149bb614879565b5b5f6149c9848285016148c7565b91505092915050565b5f805f606084860312156149e9576149e8614879565b5b5f6149f6868287016148c7565b9350506020614a07868287016148c7565b9250506040614a18868287016148fa565b9150509250925092565b614a2b8161494c565b8114614a35575f80fd5b50565b5f81359050614a4681614a22565b92915050565b5f60208284031215614a6157614a60614879565b5b5f614a6e84828501614a38565b91505092915050565b5f60208284031215614a8c57614a8b614879565b5b5f614a99848285016148fa565b91505092915050565b5f60ff82169050919050565b614ab781614aa2565b82525050565b5f602082019050614ad05f830184614aae565b92915050565b5f8060408385031215614aec57614aeb614879565b5b5f614af9858286016148fa565b9250506020614b0a85828601614a38565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112614b3557614b34614b14565b5b8235905067ffffffffffffffff811115614b5257614b51614b18565b5b602083019150836020820283011115614b6e57614b6d614b1c565b5b9250929050565b5f8060208385031215614b8b57614b8a614879565b5b5f83013567ffffffffffffffff811115614ba857614ba761487d565b5b614bb485828601614b20565b92509250509250929050565b5f805f8060808587031215614bd857614bd7614879565b5b5f614be5878288016148fa565b9450506020614bf6878288016148fa565b9350506040614c07878288016148fa565b9250506060614c18878288016148fa565b91505092959194509250565b5f608082019050614c375f83018761497f565b614c44602083018661497f565b614c51604083018561497f565b614c5e606083018461497f565b95945050505050565b5f604082019050614c7a5f83018561497f565b614c87602083018461497f565b9392505050565b614c97816148a0565b82525050565b5f602082019050614cb05f830184614c8e565b92915050565b5f805f60608486031215614ccd57614ccc614879565b5b5f614cda868287016148fa565b9350506020614ceb868287016148fa565b9250506040614cfc868287016148c7565b9150509250925092565b5f8060408385031215614d1c57614d1b614879565b5b5f614d29858286016148c7565b9250506020614d3a858286016148c7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614d786020836147f3565b9150614d8382614d44565b602082019050919050565b5f6020820190508181035f830152614da581614d6c565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f614e06602a836147f3565b9150614e1182614dac565b604082019050919050565b5f6020820190508181035f830152614e3381614dfa565b9050919050565b7f4163636f756e74206973206e6f74206578636c756465640000000000000000005f82015250565b5f614e6e6017836147f3565b9150614e7982614e3a565b602082019050919050565b5f6020820190508181035f830152614e9b81614e62565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614f06826148db565b9150614f11836148db565b9250828203905081811115614f2957614f28614ecf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f614f66826148db565b9150614f71836148db565b9250828201905080821115614f8957614f88614ecf565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f614fc3601f836147f3565b9150614fce82614f8f565b602082019050919050565b5f6020820190508181035f830152614ff081614fb7565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f61502b601b836147f3565b915061503682614ff7565b602082019050919050565b5f6020820190508181035f8301526150588161501f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6150b96026836147f3565b91506150c48261505f565b604082019050919050565b5f6020820190508181035f8301526150e6816150ad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6151476024836147f3565b9150615152826150ed565b604082019050919050565b5f6020820190508181035f8301526151748161513b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6151d56022836147f3565b91506151e08261517b565b604082019050919050565b5f6020820190508181035f830152615202816151c9565b9050919050565b7f54686973206164647265737320697320626c61636b6c697374656400000000005f82015250565b5f61523d601b836147f3565b915061524882615209565b602082019050919050565b5f6020820190508181035f83015261526a81615231565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6152cb6025836147f3565b91506152d682615271565b604082019050919050565b5f6020820190508181035f8301526152f8816152bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6153596023836147f3565b9150615364826152ff565b604082019050919050565b5f6020820190508181035f8301526153868161534d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6153e76029836147f3565b91506153f28261538d565b604082019050919050565b5f6020820190508181035f830152615414816153db565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f752062616c616e636500000000000000000000000000000000602082015250565b5f6154756030836147f3565b91506154808261541b565b604082019050919050565b5f6020820190508181035f8301526154a281615469565b9050919050565b7f6572726f720000000000000000000000000000000000000000000000000000005f82015250565b5f6154dd6005836147f3565b91506154e8826154a9565b602082019050919050565b5f6020820190508181035f83015261550a816154d1565b9050919050565b5f61551b826148db565b9150615526836148db565b9250828202615534816148db565b9150828204841483151761554b5761554a614ecf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615589826148db565b9150615594836148db565b9250826155a4576155a3615552565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122007f00669079a409460a3e0e3b49b9952c213055f2525ed862e51e546a4086a8c64736f6c634300081a0033000000000000000000000000c5436228ffe8b30fd275733d1bcc379cca98b6c9

Deployed Bytecode

0x608060405260043610610302575f3560e01c8063715018a61161018f578063bc0ad5a3116100db578063ea2f0b3711610094578063f2fde38b1161006e578063f2fde38b14610be3578063f6d7eade14610c0b578063f921400514610c35578063ff89757014610c5f57610309565b8063ea2f0b3714610b55578063ecbde40c14610b7d578063efbe389a14610bb957610309565b8063bc0ad5a314610a3b578063c2b7bbb614610a65578063c49b9a8014610a8d578063dd62ed3e14610ab5578063e2255e2914610af1578063e7e6451914610b1957610309565b806395d89b4111610148578063a39801c611610122578063a39801c61461094b578063a457c2d714610987578063a8be9a58146109c3578063a9059cbb146109ff57610309565b806395d89b41146108ca5780639b26c923146108f45780639ba5e4d51461091e57610309565b8063715018a6146107ce57806373cafdc2146107e4578063786564c41461081157806388f82020146108395780638b7afe2e146108755780638da5cb5b146108a057610309565b80633ccfd60b1161024e5780634a74bb02116102075780635342acb4116101e15780635342acb4146107015780635a1afc561461073d57806370a0823114610765578063713898cd146107a157610309565b80634a74bb021461068757806351ecfeae146106b157806352390c02146106d957610309565b80633ccfd60b146105815780634359a87114610597578063437823ec146105d35780634549b039146105fb5780634a17beb1146106375780634a49ac4c1461065f57610309565b80632d838119116102bb57806334ef80bc1161029557806334ef80bc146104cd5780633685d419146104f5578063370f0a601461051d578063395093511461054557610309565b80632d8381191461043d578063313ce5671461047957806331b72ff0146104a357610309565b806306fdde031461030d578063095ea7b31461033757806318160ddd146103735780631cdd3be31461039d57806323b872dd146103d9578063275d53ce1461041557610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c87565b60405161032e9190614859565b60405180910390f35b348015610342575f80fd5b5061035d6004803603810190610358919061490e565b610cc4565b60405161036a9190614966565b60405180910390f35b34801561037e575f80fd5b50610387610ce1565b604051610394919061498e565b60405180910390f35b3480156103a8575f80fd5b506103c360048036038101906103be91906149a7565b610cea565b6040516103d09190614966565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa91906149d2565b610d07565b60405161040c9190614966565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190614a4c565b610de9565b005b348015610448575f80fd5b50610463600480360381019061045e9190614a77565b610e82565b604051610470919061498e565b60405180910390f35b348015610484575f80fd5b5061048d610ed0565b60405161049a9190614abd565b60405180910390f35b3480156104ae575f80fd5b506104b7610ed8565b6040516104c4919061498e565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee9190614a77565b610ede565b005b348015610500575f80fd5b5061051b600480360381019061051691906149a7565b610f64565b005b348015610528575f80fd5b50610543600480360381019061053e91906149a7565b61127c565b005b348015610550575f80fd5b5061056b6004803603810190610566919061490e565b611536565b6040516105789190614966565b60405180910390f35b34801561058c575f80fd5b506105956115dd565b005b3480156105a2575f80fd5b506105bd60048036038101906105b891906149a7565b6116a4565b6040516105ca919061498e565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f491906149a7565b6116ea565b005b348015610606575f80fd5b50610621600480360381019061061c9190614ad6565b6117be565b60405161062e919061498e565b60405180910390f35b348015610642575f80fd5b5061065d60048036038101906106589190614b75565b611840565b005b34801561066a575f80fd5b50610685600480360381019061068091906149a7565b611957565b005b348015610692575f80fd5b5061069b611a2a565b6040516106a89190614966565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190614bc0565b611a3d565b005b3480156106e4575f80fd5b506106ff60048036038101906106fa91906149a7565b611ae6565b005b34801561070c575f80fd5b50610727600480360381019061072291906149a7565b611d71565b6040516107349190614966565b60405180910390f35b348015610748575f80fd5b50610763600480360381019061075e9190614a77565b611dc3565b005b348015610770575f80fd5b5061078b600480360381019061078691906149a7565b611e49565b604051610798919061498e565b60405180910390f35b3480156107ac575f80fd5b506107b5611f24565b6040516107c59493929190614c24565b60405180910390f35b3480156107d9575f80fd5b506107e2611f41565b005b3480156107ef575f80fd5b506107f8612077565b6040516108089493929190614c24565b60405180910390f35b34801561081c575f80fd5b5061083760048036038101906108329190614bc0565b612094565b005b348015610844575f80fd5b5061085f600480360381019061085a91906149a7565b61213d565b60405161086c9190614966565b60405180910390f35b348015610880575f80fd5b5061088961218f565b604051610897929190614c67565b60405180910390f35b3480156108ab575f80fd5b506108b46121a0565b6040516108c19190614c9d565b60405180910390f35b3480156108d5575f80fd5b506108de6121c7565b6040516108eb9190614859565b60405180910390f35b3480156108ff575f80fd5b50610908612204565b604051610915919061498e565b60405180910390f35b348015610929575f80fd5b5061093261220a565b6040516109429493929190614c24565b60405180910390f35b348015610956575f80fd5b50610971600480360381019061096c9190614cb6565b612227565b60405161097e9190614966565b60405180910390f35b348015610992575f80fd5b506109ad60048036038101906109a8919061490e565b6122db565b6040516109ba9190614966565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e491906149a7565b6123a3565b6040516109f6919061498e565b60405180910390f35b348015610a0a575f80fd5b50610a256004803603810190610a20919061490e565b6123b8565b604051610a329190614966565b60405180910390f35b348015610a46575f80fd5b50610a4f6123e3565b604051610a5c9190614966565b60405180910390f35b348015610a70575f80fd5b50610a8b6004803603810190610a8691906149a7565b6123f6565b005b348015610a98575f80fd5b50610ab36004803603810190610aae9190614a4c565b61266d565b005b348015610ac0575f80fd5b50610adb6004803603810190610ad69190614d06565b61273d565b604051610ae8919061498e565b60405180910390f35b348015610afc575f80fd5b50610b176004803603810190610b129190614a4c565b6127bf565b005b348015610b24575f80fd5b50610b3f6004803603810190610b3a91906149a7565b612858565b604051610b4c919061498e565b60405180910390f35b348015610b60575f80fd5b50610b7b6004803603810190610b7691906149a7565b61289e565b005b348015610b88575f80fd5b50610ba36004803603810190610b9e91906149a7565b612971565b604051610bb0919061498e565b60405180910390f35b348015610bc4575f80fd5b50610bcd612986565b604051610bda9190614c9d565b60405180910390f35b348015610bee575f80fd5b50610c096004803603810190610c0491906149a7565b6129ab565b005b348015610c16575f80fd5b50610c1f612b50565b604051610c2c9190614c9d565b60405180910390f35b348015610c40575f80fd5b50610c49612b75565b604051610c569190614c9d565b60405180910390f35b348015610c6a575f80fd5b50610c856004803603810190610c809190614b75565b612b9a565b005b60606040518060400160405280600c81526020017f574f524c44204f46204150450000000000000000000000000000000000000000815250905090565b5f610cd7610cd0612caf565b8484612cb6565b6001905092915050565b5f600c54905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f610d13848484612e79565b610dd084610d1f612caf565b610dcb856040518060600160405280602881526020016155b06028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d82612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461316b9092919063ffffffff16565b612cb6565b602560169054906101000a900460ff1690509392505050565b610df1612caf565b73ffffffffffffffffffffffffffffffffffffffff16610e0f6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90614d8e565b60405180910390fd5b80602560166101000a81548160ff02191690831515021790555050565b5f600d54821115610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90614e1c565b60405180910390fd5b819050919050565b5f6009905090565b600f5481565b610ee6612caf565b73ffffffffffffffffffffffffffffffffffffffff16610f046121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190614d8e565b60405180910390fd5b80600f8190555050565b610f6c612caf565b73ffffffffffffffffffffffffffffffffffffffff16610f8a6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090614e84565b60405180910390fd5b5f5b600b80549050811015611278578173ffffffffffffffffffffffffffffffffffffffff16600b82815481106110a3576110a2614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361126b57600b6001600b805490506110fa9190614efc565b8154811061110b5761110a614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b828154811061114757611146614ea2565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b80548061123457611233614f2f565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611278565b808060010191505061106b565b5050565b611284612caf565b73ffffffffffffffffffffffffffffffffffffffff166112a26121a0565b73ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166114c957600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156114685761142660035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e82565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506115328160016131bf90919063ffffffff16565b5050565b5f6115d3611542612caf565b848460055f61154f612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115ce9190614f5c565b612cb6565b6001905092915050565b6115e5612caf565b73ffffffffffffffffffffffffffffffffffffffff166116036121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614d8e565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116a0573d5f803e3d5ffd5b5050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116f2612caf565b73ffffffffffffffffffffffffffffffffffffffff166117106121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90614d8e565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600c54831115611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb90614fd9565b60405180910390fd5b81611823575f6118158460016131ec565b9050805f015191505061183a565b5f61182f8460016131ec565b905080602001519150505b92915050565b611848612caf565b73ffffffffffffffffffffffffffffffffffffffff166118666121a0565b73ffffffffffffffffffffffffffffffffffffffff16146118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390614d8e565b60405180910390fd5b5f5b8282905081101561195257600160065f8585858181106118e1576118e0614ea2565b5b90506020020160208101906118f691906149a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506118be565b505050565b61195f612caf565b73ffffffffffffffffffffffffffffffffffffffff1661197d6121a0565b73ffffffffffffffffffffffffffffffffffffffff16146119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90614d8e565b60405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b602560179054906101000a900460ff1681565b611a45612caf565b73ffffffffffffffffffffffffffffffffffffffff16611a636121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614d8e565b60405180910390fd5b8360175f018190555082601760010181905550816017600201819055508060176003018190555050505050565b611aee612caf565b73ffffffffffffffffffffffffffffffffffffffff16611b0c6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5990614d8e565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390615041565b60405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611cb957611c7760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e82565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611dcb612caf565b73ffffffffffffffffffffffffffffffffffffffff16611de96121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3690614d8e565b60405180910390fd5b80600e8190555050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ede5760045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050611f1f565b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b601b805f0154908060010154908060020154908060030154905084565b611f49612caf565b73ffffffffffffffffffffffffffffffffffffffff16611f676121a0565b73ffffffffffffffffffffffffffffffffffffffff1614611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490614d8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6017805f0154908060010154908060020154908060030154905084565b61209c612caf565b73ffffffffffffffffffffffffffffffffffffffff166120ba6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210790614d8e565b60405180910390fd5b83601b5f018190555082601b6001018190555081601b6002018190555080601b6003018190555050505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6015805f0154908060010154905082565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f574f415000000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b6011805f0154908060010154908060020154908060030154905084565b5f808403612237575f90506122d4565b5f84426122449190614efc565b9050600f5481036122595760019150506122d4565b5f81036122be578273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bd575f9150506122d4565b5b8381116122cf5760019150506122d4565b5f9150505b9392505050565b5f6123996122e7612caf565b84612394856040518060600160405280602581526020016155d86025913960055f612310612caf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461316b9092919063ffffffff16565b612cb6565b6001905092915050565b6008602052805f5260405f205f915090505481565b5f6123cb6123c4612caf565b8484612e79565b602560149054906101000a900460ff16905092915050565b602560149054906101000a900460ff1681565b6123fe612caf565b73ffffffffffffffffffffffffffffffffffffffff1661241c6121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614d8e565b60405180910390fd5b8060235f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b612675612caf565b73ffffffffffffffffffffffffffffffffffffffff166126936121a0565b73ffffffffffffffffffffffffffffffffffffffff16146126e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e090614d8e565b60405180910390fd5b80602560176101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127329190614966565b60405180910390a150565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6127c7612caf565b73ffffffffffffffffffffffffffffffffffffffff166127e56121a0565b73ffffffffffffffffffffffffffffffffffffffff161461283b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283290614d8e565b60405180910390fd5b80602560146101000a81548160ff02191690831515021790555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6128a6612caf565b73ffffffffffffffffffffffffffffffffffffffff166128c46121a0565b73ffffffffffffffffffffffffffffffffffffffff161461291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190614d8e565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6009602052805f5260405f205f915090505481565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6129b3612caf565b73ffffffffffffffffffffffffffffffffffffffff166129d16121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1e90614d8e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8c906150cf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60245f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612ba2612caf565b73ffffffffffffffffffffffffffffffffffffffff16612bc06121a0565b73ffffffffffffffffffffffffffffffffffffffff1614612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0d90614d8e565b60405180910390fd5b5f5b82829050811015612caa576001600a5f858585818110612c3b57612c3a614ea2565b5b9050602002016020810190612c5091906149a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050612c18565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1b9061515d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d89906151eb565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e6c919061498e565b60405180910390a3505050565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612f175750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4d90615253565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbb906152e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130299061536f565b60405180910390fd5b5f8111613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306b906153fd565b60405180910390fd5b61307d83611e49565b8111156130bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b69061548b565b60405180910390fd5b61316683838360065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613160575060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561324e565b505050565b5f8383111582906131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a99190614859565b60405180910390fd5b5082840390509392505050565b5f6131e4835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613e09565b905092915050565b6131f461479a565b6131fe8383613f05565b905061321381848461320e61400b565b61402d565b865f018760200188604001896060018a6080018b60a00186815250868152508681525086815250868152508681525050505050505092915050565b80156136285760235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613456576132b06121a0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561331e57506132ee6121a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156133575750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156133e4575f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036133e3574260085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b8260105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506017601f5f820154815f0155600182015481600101556002820154816002015560038201548160030155905050613623565b61345e6121a0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156134cc575061349c6121a0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156135055750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156135a6575f613520613517866116a4565b600e5487612227565b905080613562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613559906154f3565b60405180910390fd5b4260095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b601b601f5f820154815f0155600182015481600101556002820154816002015560038201548160030155905050601f60020154601f600201819055508360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b613749565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156136b8578360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613748578260105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5f61375483836131ec565b905060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156137f3575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613887578260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546138419190614efc565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b78565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613924575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156139bc578060c0015160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546139769190614f5c565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613b77565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015613a58575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613b76578260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613aa69190614efc565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060c0015160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613b349190614f5c565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b805f015160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613bc49190614efc565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550806020015160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613c529190614f5c565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508115613d5f57613cab81604001518260e001516140b2565b613cbe81606001518261010001516140e4565b613cd18160800151826101200151614281565b613ce48160a0015182610140015161441f565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101200151846101000151613d499190614f5c565b604051613d56919061498e565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051613dc0919061498e565b60405180910390a3613ddc84600161446690919063ffffffff16565b505f613de786611e49565b03613e0257613e008560016131bf90919063ffffffff16565b505b5050505050565b5f80836001015f8481526020019081526020015f205490505f8114613efa575f600182613e369190614efc565b90505f6001865f0180549050613e4c9190614efc565b9050818114613eb2575f865f018281548110613e6b57613e6a614ea2565b5b905f5260205f200154905080875f018481548110613e8c57613e8b614ea2565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480613ec557613ec4614f2f565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050613eff565b5f9150505b92915050565b613f0d61479a565b81613f2157828160c0018181525050614005565b6064601f5f015484613f339190615511565b613f3d919061557f565b8160e00181815250506064601f6001015484613f599190615511565b613f63919061557f565b816101000181815250506064601f6002015484613f809190615511565b613f8a919061557f565b816101200181815250506064601f6003015484613fa79190615511565b613fb1919061557f565b816101400181815250508061014001518161012001518261010001518360e0015186613fdd9190614efc565b613fe79190614efc565b613ff19190614efc565b613ffb9190614efc565b8160c00181815250505b92915050565b5f805f614016614493565b915091508082614026919061557f565b9250505090565b5f805f805f8060019650889550876140565785865f805f809550955095509550955095506140a5565b8960e00151935089610100015192508961012001519150896101400151905080828486896140849190614efc565b61408e9190614efc565b6140989190614efc565b6140a29190614efc565b94505b9499939850945094509450565b81600d546140c09190614efc565b600d819055508060115f015f8282546140d99190614f5c565b925050819055505050565b8060155f015f8282546140f79190614f5c565b925050819055508060116001015f8282546141129190614f5c565b925050819055508160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141629190614f5c565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561427d578060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461423b9190614f5c565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b8060156001015f8282546142959190614f5c565b925050819055508060116002015f8282546142b09190614f5c565b925050819055508160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546143009190614f5c565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561441b578060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546143d99190614f5c565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5050565b8060116003015f8282546144339190614f5c565b9250508190555080600c546144489190614efc565b600c8190555081600d5461445c9190614efc565b600d819055505050565b5f61448b835f018373ffffffffffffffffffffffffffffffffffffffff165f1b614713565b905092915050565b5f805f600d5490505f600c5490505f5b600b805490508110156146dd578260035f600b84815481106144c8576144c7614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411806145ad57508160045f600b848154811061454957614548614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b156145c457600d54600c549450945050505061470f565b60035f600b83815481106145db576145da614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836146489190614efc565b925060045f600b838154811061466157614660614ea2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826146ce9190614efc565b915080806001019150506144a3565b50600c54600d546146ee919061557f565b82101561470657600d54600c5493509350505061470f565b81819350935050505b9091565b5f61471e838361477a565b61477057825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050614774565b5f90505b92915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61482b826147e9565b61483581856147f3565b9350614845818560208601614803565b61484e81614811565b840191505092915050565b5f6020820190508181035f8301526148718184614821565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6148aa82614881565b9050919050565b6148ba816148a0565b81146148c4575f80fd5b50565b5f813590506148d5816148b1565b92915050565b5f819050919050565b6148ed816148db565b81146148f7575f80fd5b50565b5f81359050614908816148e4565b92915050565b5f806040838503121561492457614923614879565b5b5f614931858286016148c7565b9250506020614942858286016148fa565b9150509250929050565b5f8115159050919050565b6149608161494c565b82525050565b5f6020820190506149795f830184614957565b92915050565b614988816148db565b82525050565b5f6020820190506149a15f83018461497f565b92915050565b5f602082840312156149bc576149bb614879565b5b5f6149c9848285016148c7565b91505092915050565b5f805f606084860312156149e9576149e8614879565b5b5f6149f6868287016148c7565b9350506020614a07868287016148c7565b9250506040614a18868287016148fa565b9150509250925092565b614a2b8161494c565b8114614a35575f80fd5b50565b5f81359050614a4681614a22565b92915050565b5f60208284031215614a6157614a60614879565b5b5f614a6e84828501614a38565b91505092915050565b5f60208284031215614a8c57614a8b614879565b5b5f614a99848285016148fa565b91505092915050565b5f60ff82169050919050565b614ab781614aa2565b82525050565b5f602082019050614ad05f830184614aae565b92915050565b5f8060408385031215614aec57614aeb614879565b5b5f614af9858286016148fa565b9250506020614b0a85828601614a38565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112614b3557614b34614b14565b5b8235905067ffffffffffffffff811115614b5257614b51614b18565b5b602083019150836020820283011115614b6e57614b6d614b1c565b5b9250929050565b5f8060208385031215614b8b57614b8a614879565b5b5f83013567ffffffffffffffff811115614ba857614ba761487d565b5b614bb485828601614b20565b92509250509250929050565b5f805f8060808587031215614bd857614bd7614879565b5b5f614be5878288016148fa565b9450506020614bf6878288016148fa565b9350506040614c07878288016148fa565b9250506060614c18878288016148fa565b91505092959194509250565b5f608082019050614c375f83018761497f565b614c44602083018661497f565b614c51604083018561497f565b614c5e606083018461497f565b95945050505050565b5f604082019050614c7a5f83018561497f565b614c87602083018461497f565b9392505050565b614c97816148a0565b82525050565b5f602082019050614cb05f830184614c8e565b92915050565b5f805f60608486031215614ccd57614ccc614879565b5b5f614cda868287016148fa565b9350506020614ceb868287016148fa565b9250506040614cfc868287016148c7565b9150509250925092565b5f8060408385031215614d1c57614d1b614879565b5b5f614d29858286016148c7565b9250506020614d3a858286016148c7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614d786020836147f3565b9150614d8382614d44565b602082019050919050565b5f6020820190508181035f830152614da581614d6c565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f614e06602a836147f3565b9150614e1182614dac565b604082019050919050565b5f6020820190508181035f830152614e3381614dfa565b9050919050565b7f4163636f756e74206973206e6f74206578636c756465640000000000000000005f82015250565b5f614e6e6017836147f3565b9150614e7982614e3a565b602082019050919050565b5f6020820190508181035f830152614e9b81614e62565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614f06826148db565b9150614f11836148db565b9250828203905081811115614f2957614f28614ecf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f614f66826148db565b9150614f71836148db565b9250828201905080821115614f8957614f88614ecf565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f614fc3601f836147f3565b9150614fce82614f8f565b602082019050919050565b5f6020820190508181035f830152614ff081614fb7565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f61502b601b836147f3565b915061503682614ff7565b602082019050919050565b5f6020820190508181035f8301526150588161501f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6150b96026836147f3565b91506150c48261505f565b604082019050919050565b5f6020820190508181035f8301526150e6816150ad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6151476024836147f3565b9150615152826150ed565b604082019050919050565b5f6020820190508181035f8301526151748161513b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6151d56022836147f3565b91506151e08261517b565b604082019050919050565b5f6020820190508181035f830152615202816151c9565b9050919050565b7f54686973206164647265737320697320626c61636b6c697374656400000000005f82015250565b5f61523d601b836147f3565b915061524882615209565b602082019050919050565b5f6020820190508181035f83015261526a81615231565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6152cb6025836147f3565b91506152d682615271565b604082019050919050565b5f6020820190508181035f8301526152f8816152bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6153596023836147f3565b9150615364826152ff565b604082019050919050565b5f6020820190508181035f8301526153868161534d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6153e76029836147f3565b91506153f28261538d565b604082019050919050565b5f6020820190508181035f830152615414816153db565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f752062616c616e636500000000000000000000000000000000602082015250565b5f6154756030836147f3565b91506154808261541b565b604082019050919050565b5f6020820190508181035f8301526154a281615469565b9050919050565b7f6572726f720000000000000000000000000000000000000000000000000000005f82015250565b5f6154dd6005836147f3565b91506154e8826154a9565b602082019050919050565b5f6020820190508181035f83015261550a816154d1565b9050919050565b5f61551b826148db565b9150615526836148db565b9250828202615534816148db565b9150828204841483151761554b5761554a614ecf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615589826148db565b9150615594836148db565b9250826155a4576155a3615552565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122007f00669079a409460a3e0e3b49b9952c213055f2525ed862e51e546a4086a8c64736f6c634300081a0033

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

000000000000000000000000c5436228ffe8b30fd275733d1bcc379cca98b6c9

-----Decoded View---------------
Arg [0] : marketWallet_ (address): 0xc5436228Ffe8B30fD275733d1bCc379cCa98b6C9

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


Deployed Bytecode Sourcemap

11666:20646:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18033:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19403:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18310:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12300:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19604:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19108:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21405:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18219:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12723:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17783:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22442:473;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22015:419;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20067:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31929:143;;;;;;;;;;;;;:::i;:::-;;16311:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22923:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20908:489;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18902:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23719:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14135:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16619:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21675:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23408:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17903:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18413:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13384:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;8282:148;;;;;;;;;;;;;:::i;:::-;;13272:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16923:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20780:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13232:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8059:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18124;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12684:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12951:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;17232:543;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20372:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12181:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18598:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14034:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23160:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23540:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19211:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18808:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16483:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23042:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12243:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13887:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8438:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13924:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12774:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23842:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18033:83;18070:13;18103:5;;;;;;;;;;;;;;;;;18096:12;;18033:83;:::o;19403:193::-;19505:4;19527:39;19536:12;:10;:12::i;:::-;19550:7;19559:6;19527:8;:39::i;:::-;19584:4;19577:11;;19403:193;;;;:::o;18310:95::-;18363:7;18390;;18383:14;;18310:95;:::o;12300:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;19604:455::-;19736:4;19753:36;19763:6;19771:9;19782:6;19753:9;:36::i;:::-;19800:220;19823:6;19844:12;:10;:12::i;:::-;19871:138;19927:6;19871:138;;;;;;;;;;;;;;;;;:11;:19;19883:6;19871:19;;;;;;;;;;;;;;;:33;19891:12;:10;:12::i;:::-;19871:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;19800:8;:220::i;:::-;20038:13;;;;;;;;;;;20031:20;;19604:455;;;;;:::o;19108:95::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19188:7:::1;19172:13;;:23;;;;;;;;;;;;;;;;;;19108:95:::0;:::o;21405:262::-;21499:7;21557;;21546;:18;;21524:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;21652:7;21645:14;;21405:262;;;:::o;18219:83::-;18260:5;12424:1;18278:16;;18219:83;:::o;12723:42::-;;;;:::o;17783:112::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17875:12:::1;17855:17;:32;;;;17783:112:::0;:::o;22442:473::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22522:11:::1;:20;22534:7;22522:20;;;;;;;;;;;;;;;;;;;;;;;;;22514:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22586:9;22581:327;22605:9;:16;;;;22601:1;:20;22581:327;;;22663:7;22647:23;;:9;22657:1;22647:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;22643:254:::1;;22706:9;22735:1;22716:9;:16;;;;:20;;;;:::i;:::-;22706:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22691:9;22701:1;22691:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22775:1;22756:7;:16;22764:7;22756:16;;;;;;;;;;;;;;;:20;;;;22818:5;22795:11;:20;22807:7;22795:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22842:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;22876:5;;22643:254;22623:3;;;;;;;22581:327;;;;22442:473:::0;:::o;22015:419::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22089:11:::1;:20;22101:7;22089:20;;;;;;;;;;;;;;;;;;;;;;;;;22084:250;;22149:4;22126:11;:20;22138:7;22126:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22191:1;22172:7;:16;22180:7;22172:16;;;;;;;;;;;;;;;;:20;22168:117;;;22232:37;22252:7;:16;22260:7;22252:16;;;;;;;;;;;;;;;;22232:19;:37::i;:::-;22213:7;:16;22221:7;22213:16;;;;;;;;;;;;;;;:56;;;;22168:117;22299:9;22314:7;22299:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22084:250;22374:4;22344:18;:27;22363:7;22344:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22391:35;22418:7;22391:19;:26;;:35;;;;:::i;:::-;;22015:419:::0;:::o;20067:297::-;20182:4;20204:130;20227:12;:10;:12::i;:::-;20254:7;20313:10;20276:11;:25;20288:12;:10;:12::i;:::-;20276:25;;;;;;;;;;;;;;;:34;20302:7;20276:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;20204:8;:130::i;:::-;20352:4;20345:11;;20067:297;;;;:::o;31929:143::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31977:15:::1;31995:21;31977:39;;32035:10;32027:28;;:37;32056:7;32027:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31966:106;31929:143::o:0;16311:164::-;16407:7;16439:20;:28;16460:6;16439:28;;;;;;;;;;;;;;;;16432:35;;16311:164;;;:::o;22923:111::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23022:4:::1;22992:18;:27;23011:7;22992:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22923:111:::0;:::o;20908:489::-;21026:7;21070;;21059;:18;;21051:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21129:17;21124:266;;21163:28;21194:25;21205:7;21214:4;21194:10;:25::i;:::-;21163:56;;21241:1;:9;;;21234:16;;;;;21124:266;21283:28;21314:25;21325:7;21334:4;21314:10;:25::i;:::-;21283:56;;21361:1;:17;;;21354:24;;;20908:489;;;;;:::o;18902:198::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18987:9:::1;18982:111;19006:8;;:15;;19002:1;:19;18982:111;;;19077:4;19043:18;:31;19062:8;;19071:1;19062:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19043:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19023:3;;;;;;;18982:111;;;;18902:198:::0;;:::o;23719:115::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23821:5:::1;23795:14;:23;23810:7;23795:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;23719:115:::0;:::o;14135:40::-;;;;;;;;;;;;;:::o;16619:296::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16791:3:::1;16776:8;:12;;:18;;;;16826:9;16805:8;:18;;:30;;;;16867:9;16846:8;:18;;:30;;;;16903:4;16887:8;:13;;:20;;;;16619:296:::0;;;;:::o;21675:332::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21756:11:::1;:20;21768:7;21756:20;;;;;;;;;;;;;;;;;;;;;;;;;21755:21;21747:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21842:1;21823:7;:16;21831:7;21823:16;;;;;;;;;;;;;;;;:20;21819:109;;;21879:37;21899:7;:16;21907:7;21899:16;;;;;;;;;;;;;;;;21879:19;:37::i;:::-;21860:7;:16;21868:7;21860:16;;;;;;;;;;;;;;;:56;;;;21819:109;21961:4;21938:11;:20;21950:7;21938:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21976:9;21991:7;21976:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21675:332:::0;:::o;23408:124::-;23473:4;23497:18;:27;23516:7;23497:27;;;;;;;;;;;;;;;;;;;;;;;;;23490:34;;23408:124;;;:::o;17903:122::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18000:17:::1;17984:13;:33;;;;17903:122:::0;:::o;18413:177::-;18479:7;18503:11;:20;18515:7;18503:20;;;;;;;;;;;;;;;;;;;;;;;;;18499:49;;;18532:7;:16;18540:7;18532:16;;;;;;;;;;;;;;;;18525:23;;;;18499:49;18566:7;:16;18574:7;18566:16;;;;;;;;;;;;;;;;18559:23;;18413:177;;;;:::o;13384:104::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;8282:148::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8389:1:::1;8352:40;;8373:6;::::0;::::1;;;;;;;;8352:40;;;;;;;;;;;;8420:1;8403:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8282:148::o:0;13272:103::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16923:301::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17097:3:::1;17081:9;:13;;:19;;;;17133:9;17111;:19;;:31;;;;17175:9;17153;:19;;:31;;;;17212:4;17195:9;:14;;:21;;;;16923:301:::0;;;;:::o;20780:120::-;20848:4;20872:11;:20;20884:7;20872:20;;;;;;;;;;;;;;;;;;;;;;;;;20865:27;;20780:120;;;:::o;13232:31::-;;;;;;;;;;;;;;:::o;8059:87::-;8105:7;8132:6;;;;;;;;;;;8125:13;;8059:87;:::o;18124:::-;18163:13;18196:7;;;;;;;;;;;;;;;;;18189:14;;18124:87;:::o;12684:32::-;;;;:::o;12951:36::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17232:543::-;17377:4;17419:1;17398:17;:22;17394:40;;17429:5;17422:12;;;;17394:40;17447:17;17485;17467:15;:35;;;;:::i;:::-;17447:55;;17532:17;;17519:9;:30;17515:47;;17558:4;17551:11;;;;;17515:47;17592:1;17579:9;:14;17575:120;;17629:6;17614:21;;:11;;;;;;;;;;;:21;;;17610:74;;17663:5;17656:12;;;;;17610:74;17575:120;17722:7;17709:9;:20;17705:37;;17738:4;17731:11;;;;;17705:37;17762:5;17755:12;;;17232:543;;;;;;:::o;20372:400::-;20492:4;20514:228;20537:12;:10;:12::i;:::-;20564:7;20586:145;20643:15;20586:145;;;;;;;;;;;;;;;;;:11;:25;20598:12;:10;:12::i;:::-;20586:25;;;;;;;;;;;;;;;:34;20612:7;20586:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;20514:8;:228::i;:::-;20760:4;20753:11;;20372:400;;;;:::o;12181:55::-;;;;;;;;;;;;;;;;;:::o;18598:202::-;18703:4;18725:42;18735:12;:10;:12::i;:::-;18749:9;18760:6;18725:9;:42::i;:::-;18785:7;;;;;;;;;;;18778:14;;18598:202;;;;:::o;14034:26::-;;;;;;;;;;;;;:::o;23160:240::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23237:4:::1;23219:15;;:22;;;;;;;;;;;;;;;;;;23284:4;23253:11;:28;23265:15;;;;;;;;;;;23253:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23299:9;23314:15;;;;;;;;;;;23299:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23368:7;:24;23376:15;;;;;;;;;;;23368:24;;;;;;;;;;;;;;;;23341:7;:24;23349:15;;;;;;;;;;;23341:24;;;;;;;;;;;;;;;:51;;;;23160:240:::0;:::o;23540:171::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23641:8:::1;23617:21;;:32;;;;;;;;;;;;;;;;;;23665:38;23694:8;23665:38;;;;;;:::i;:::-;;;;;;;;23540:171:::0;:::o;19211:184::-;19328:7;19360:11;:18;19372:5;19360:18;;;;;;;;;;;;;;;:27;19379:7;19360:27;;;;;;;;;;;;;;;;19353:34;;19211:184;;;;:::o;18808:86::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18879:7:::1;18869;;:17;;;;;;;;;;;;;;;;;;18808:86:::0;:::o;16483:128::-;16549:7;16576:15;:27;16592:10;16576:27;;;;;;;;;;;;;;;;16569:34;;16483:128;;;:::o;23042:110::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23139:5:::1;23109:18;:27;23128:7;23109:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23042:110:::0;:::o;12243:50::-;;;;;;;;;;;;;;;;;:::o;13887:30::-;;;;;;;;;;;;;:::o;8438:281::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8561:1:::1;8541:22;;:8;:22;;::::0;8519:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8674:8;8645:38;;8666:6;::::0;::::1;;;;;;;;8645:38;;;;;;;;;;;;8703:8;8694:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8438:281:::0;:::o;13924:66::-;;;;;;;;;;;;;:::o;12774:26::-;;;;;;;;;;;;;:::o;23842:196::-;8205:12;:10;:12::i;:::-;8194:23;;:7;:5;:7::i;:::-;:23;;;8186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23931:9:::1;23926:105;23946:9;;:16;;23942:1;:20;23926:105;;;24015:4;23984:14;:28;23999:9;;24009:1;23999:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23984:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23964:3;;;;;23926:105;;;;23842:196:::0;;:::o;3470:98::-;3523:7;3550:10;3543:17;;3470:98;:::o;27975:369::-;28119:1;28102:19;;:5;:19;;;28094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28200:1;28181:21;;:7;:21;;;28173:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28282:6;28252:11;:18;28264:5;28252:18;;;;;;;;;;;;;;;:27;28271:7;28252:27;;;;;;;;;;;;;;;:36;;;;28320:7;28304:32;;28313:5;28304:32;;;28329:6;28304:32;;;;;;:::i;:::-;;;;;;;;27975:369;;;:::o;28352:769::-;28489:14;:20;28504:4;28489:20;;;;;;;;;;;;;;;;;;;;;;;;;28488:21;:44;;;;;28514:14;:18;28529:2;28514:18;;;;;;;;;;;;;;;;;;;;;;;;;28513:19;28488:44;28466:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;28622:1;28606:18;;:4;:18;;;28598:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28699:1;28685:16;;:2;:16;;;28677:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28769:1;28760:6;:10;28752:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28859:15;28869:4;28859:9;:15::i;:::-;28849:6;:25;;28827:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;28963:150;28992:4;29011:2;29028:6;29051:18;:24;29070:4;29051:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;29079:18;:22;29098:2;29079:22;;;;;;;;;;;;;;;;;;;;;;;;;29051:50;29049:53;28963:14;:150::i;:::-;28352:769;;;:::o;2696:240::-;2816:7;2874:1;2869;:6;;2877:12;2861:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2916:1;2912;:5;2905:12;;2696:240;;;;;:::o;10642:181::-;10733:4;10762:53;10770:3;:10;;10806:5;10790:23;;10782:32;;10762:7;:53::i;:::-;10755:60;;10642:181;;;;:::o;24083:512::-;24183:36;;:::i;:::-;24249:29;24261:7;24270;24249:11;:29::i;:::-;24237:41;;24506:52;24518:9;24529:7;24538;24547:10;:8;:10::i;:::-;24506:11;:52::i;:::-;24306:9;:17;;24338:9;:25;;24378:9;:14;;24407:9;:20;;24442:9;:20;;24477:9;:15;;24291:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24083:512;;;;:::o;29129:2792::-;29285:7;29281:1453;;;29323:15;;;;;;;;;;;29313:25;;:6;:25;;;29309:1188;;29395:7;:5;:7::i;:::-;29385:17;;:6;:17;;;;:62;;;;;29440:7;:5;:7::i;:::-;29427:20;;:9;:20;;;;29385:62;:110;;;;;29493:1;29472:23;;:9;:23;;;;29385:110;29359:340;;;29577:1;29542:20;:31;29563:9;29542:31;;;;;;;;;;;;;;;;:36;29538:142;;29641:15;29607:20;:31;29628:9;29607:31;;;;;;;;;;;;;;;:49;;;;29538:142;29359:340;29731:9;29717:11;;:23;;;;;;;;;;;;;;;;;;29773:8;29759:11;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29309:1188;;;29858:7;:5;:7::i;:::-;29848:17;;:6;:17;;;;:62;;;;;29903:7;:5;:7::i;:::-;29890:20;;:9;:20;;;;29848:62;:110;;;;;29956:1;29935:23;;:9;:23;;;;29848:110;29822:515;;;30001:20;30024:173;30071:30;30094:6;30071:22;:30::i;:::-;30128:13;;30168:6;30024:20;:173::i;:::-;30001:196;;30228:15;30220:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;30302:15;30276;:23;30292:6;30276:23;;;;;;;;;;;;;;;:41;;;;29978:359;29822:515;30369:9;30355:11;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30421:11;:21;;;30397:11;:21;;:45;;;;30475:6;30461:11;;:20;;;;;;;;;;;;;;;;;;29309:1188;29281:1453;;;30533:18;:26;30552:6;30533:26;;;;;;;;;;;;;;;;;;;;;;;;;30529:87;;;30594:6;30580:11;;:20;;;;;;;;;;;;;;;;;;30529:87;30634:18;:29;30653:9;30634:29;;;;;;;;;;;;;;;;;;;;;;;;;30630:93;;;30698:9;30684:11;;:23;;;;;;;;;;;;;;;;;;30630:93;29281:1453;30746:28;30777;30788:7;30797;30777:10;:28::i;:::-;30746:59;;30822:11;:19;30834:6;30822:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30846:11;:22;30858:9;30846:22;;;;;;;;;;;;;;;;;;;;;;;;;30845:23;30822:46;30818:467;;;30921:7;30903;:15;30911:6;30903:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;30885:7;:15;30893:6;30885:15;;;;;;;;;;;;;;;:43;;;;30818:467;;;30951:11;:19;30963:6;30951:19;;;;;;;;;;;;;;;;;;;;;;;;;30950:20;:46;;;;;30974:11;:22;30986:9;30974:22;;;;;;;;;;;;;;;;;;;;;;;;;30950:46;30946:339;;;31055:1;:17;;;31034:7;:18;31042:9;31034:18;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;31013:7;:18;31021:9;31013:18;;;;;;;;;;;;;;;:59;;;;30946:339;;;31094:11;:19;31106:6;31094:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31117:11;:22;31129:9;31117:22;;;;;;;;;;;;;;;;;;;;;;;;;31094:45;31090:195;;;31192:7;31174;:15;31182:6;31174:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;31156:7;:15;31164:6;31156:15;;;;;;;;;;;;;;;:43;;;;31256:1;:17;;;31235:7;:18;31243:9;31235:18;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;31214:7;:18;31222:9;31214:18;;;;;;;;;;;;;;;:59;;;;31090:195;30946:339;30818:467;31333:1;:9;;;31315:7;:15;31323:6;31315:15;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;31297:7;:15;31305:6;31297:15;;;;;;;;;;;;;;;:45;;;;31395:1;:17;;;31374:7;:18;31382:9;31374:18;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;31353:7;:18;31361:9;31353:18;;;;;;;;;;;;;;;:59;;;;31429:7;31425:305;;;31453:27;31465:1;:6;;;31473:1;:6;;;31453:11;:27::i;:::-;31495:42;31510:1;:12;;;31524:1;:12;;;31495:14;:42::i;:::-;31552;31567:1;:12;;;31581:1;:12;;;31552:14;:42::i;:::-;31609:27;31619:1;:7;;;31628:1;:7;;;31609:9;:27::i;:::-;31683:4;31658:60;;31667:6;31658:60;;;31705:1;:12;;;31690:1;:12;;;:27;;;;:::i;:::-;31658:60;;;;;;:::i;:::-;;;;;;;;31425:305;31764:9;31747:46;;31756:6;31747:46;;;31775:1;:17;;;31747:46;;;;;;:::i;:::-;;;;;;;;31804:34;31828:9;31804:19;:23;;:34;;;;:::i;:::-;;31876:1;31855:17;31865:6;31855:9;:17::i;:::-;:22;31851:62;;31879:34;31906:6;31879:19;:26;;:34;;;;:::i;:::-;;31851:62;29270:2651;29129:2792;;;;:::o;9156:675::-;9222:4;9239:18;9260:3;:12;;:19;9273:5;9260:19;;;;;;;;;;;;9239:40;;9310:1;9296:10;:15;9292:532;;9328:21;9365:1;9352:10;:14;;;;:::i;:::-;9328:38;;9381:17;9422:1;9401:3;:11;;:18;;;;:22;;;;:::i;:::-;9381:42;;9457:13;9444:9;:26;9440:223;;9491:17;9511:3;:11;;9523:9;9511:22;;;;;;;;:::i;:::-;;;;;;;;;;9491:42;;9583:9;9554:3;:11;;9566:13;9554:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;9637:10;9611:3;:12;;:23;9624:9;9611:23;;;;;;;;;;;:36;;;;9472:191;9440:223;9679:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9720:3;:12;;:19;9733:5;9720:19;;;;;;;;;;;9713:26;;;9763:4;9756:11;;;;;;;9292:532;9807:5;9800:12;;;9156:675;;;;;:::o;24603:654::-;24704:28;;:::i;:::-;24755:7;24750:91;;24799:7;24779:1;:17;;:27;;;;;24821:8;;24750:91;24890:3;24871:11;:15;;;24861:7;:25;;;;:::i;:::-;24860:33;;;;:::i;:::-;24851:1;:6;;:42;;;;;24955:3;24930:11;:21;;;24920:7;:31;;;;:::i;:::-;24919:39;;;;:::i;:::-;24904:1;:12;;:54;;;;;25020:3;24995:11;:21;;;24985:7;:31;;;;:::i;:::-;24984:39;;;;:::i;:::-;24969:1;:12;;:54;;;;;25075:3;25055:11;:16;;;25045:7;:26;;;;:::i;:::-;25044:34;;;;:::i;:::-;25034:1;:7;;:44;;;;;25223:1;:7;;;25195:1;:12;;;25167:1;:12;;;25145:1;:6;;;25122:7;:29;;;;:::i;:::-;:57;;;;:::i;:::-;:85;;;;:::i;:::-;:108;;;;:::i;:::-;25089:1;:17;;:141;;;;;24603:654;;;;;:::o;26111:161::-;26153:7;26174:15;26191;26210:19;:17;:19::i;:::-;26173:56;;;;26257:7;26247;:17;;;;:::i;:::-;26240:24;;;;26111:161;:::o;25265:838::-;25474:15;25504:23;25542:12;25569:18;25602;25635:13;25690:1;25676:15;;25712:7;25702:17;;25737:7;25732:78;;25769:7;25778;25787:1;25790;25793;25796;25761:37;;;;;;;;;;;;;;25732:78;25829:1;:6;;;25822:13;;25859:1;:12;;;25846:25;;25895:1;:12;;;25882:25;;25926:1;:7;;;25918:15;;26007:5;25994:10;25981;25974:4;25964:7;:14;;;;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:48;;;;:::i;:::-;25946:66;;25265:838;;;;;;;;;;;;:::o;26884:134::-;26972:4;26962:7;;:14;;;;:::i;:::-;26952:7;:24;;;;27006:4;26987:11;:15;;;:23;;;;;;;:::i;:::-;;;;;;;;26884:134;;:::o;27026:384::-;27146:10;27109:15;:33;;;:47;;;;;;;:::i;:::-;;;;;;;;27192:10;27167:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;27263:10;27238:7;:22;27254:4;27238:22;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;27213:7;:22;27229:4;27213:22;;;;;;;;;;;;;;;:60;;;;27288:11;:26;27308:4;27288:26;;;;;;;;;;;;;;;;;;;;;;;;;27284:119;;;27381:10;27356:7;:22;27372:4;27356:22;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;27331:7;:22;27347:4;27331:22;;;;;;;;;;;;;;;:60;;;;27284:119;27026:384;;:::o;27418:366::-;27531:10;27501:15;:26;;;:40;;;;;;;:::i;:::-;;;;;;;;27577:10;27552:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;27650:10;27625:7;:22;27641:4;27625:22;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;27600:7;:22;27616:4;27600:22;;;;;;;;;;;;;;;:60;;;;27675:11;:26;27695:4;27675:26;;;;;;;;;;;;;;;;;;;;;;;;;27671:105;;;27766:10;27741:7;:22;27757:4;27741:22;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;27716:7;:22;27732:4;27716:22;;;;;;;;;;;;;;;:60;;;;27671:105;27418:366;;:::o;27792:175::-;27880:5;27860:11;:16;;;:25;;;;;;;:::i;:::-;;;;;;;;27918:5;27908:7;;:15;;;;:::i;:::-;27898:7;:25;;;;27954:5;27944:7;;:15;;;;:::i;:::-;27934:7;:25;;;;27792:175;;:::o;10459:::-;10547:4;10576:50;10581:3;:10;;10617:5;10601:23;;10593:32;;10576:4;:50::i;:::-;10569:57;;10459:175;;;;:::o;26280:596::-;26331:7;26340;26360:15;26378:7;;26360:25;;26396:15;26414:7;;26396:25;;26437:9;26432:332;26456:9;:16;;;;26452:1;:20;26432:332;;;26540:7;26516;:21;26524:9;26534:1;26524:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26516:21;;;;;;;;;;;;;;;;:31;:83;;;;26592:7;26568;:21;26576:9;26586:1;26576:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26568:21;;;;;;;;;;;;;;;;:31;26516:83;26494:146;;;26623:7;;26632;;26615:25;;;;;;;;;26494:146;26675:7;:21;26683:9;26693:1;26683:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26675:21;;;;;;;;;;;;;;;;26665:7;:31;;;;:::i;:::-;26655:41;;26731:7;:21;26739:9;26749:1;26739:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26731:21;;;;;;;;;;;;;;;;26721:7;:31;;;;:::i;:::-;26711:41;;26474:3;;;;;;;26432:332;;;;26798:7;;26788;;:17;;;;:::i;:::-;26778:7;:27;26774:58;;;26815:7;;26824;;26807:25;;;;;;;;26774:58;26851:7;26860;26843:25;;;;;;26280:596;;;:::o;8857:291::-;8920:4;8942:21;8952:3;8957:5;8942:9;:21::i;:::-;8937:204;;8980:3;:11;;8997:5;8980:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9040:3;:11;;:18;;;;9018:3;:12;;:19;9031:5;9018:19;;;;;;;;;;;:40;;;;9080:4;9073:11;;;;8937:204;9124:5;9117:12;;8857:291;;;;;:::o;9839:161::-;9939:4;9991:1;9968:3;:12;;:19;9981:5;9968:19;;;;;;;;;;;;:24;;9961:31;;9839:161;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:116::-;4721:21;4736:5;4721:21;:::i;:::-;4714:5;4711:32;4701:60;;4757:1;4754;4747:12;4701:60;4651:116;:::o;4773:133::-;4816:5;4854:6;4841:20;4832:29;;4870:30;4894:5;4870:30;:::i;:::-;4773:133;;;;:::o;4912:323::-;4968:6;5017:2;5005:9;4996:7;4992:23;4988:32;4985:119;;;5023:79;;:::i;:::-;4985:119;5143:1;5168:50;5210:7;5201:6;5190:9;5186:22;5168:50;:::i;:::-;5158:60;;5114:114;4912:323;;;;:::o;5241:329::-;5300:6;5349:2;5337:9;5328:7;5324:23;5320:32;5317:119;;;5355:79;;:::i;:::-;5317:119;5475:1;5500:53;5545:7;5536:6;5525:9;5521:22;5500:53;:::i;:::-;5490:63;;5446:117;5241:329;;;;:::o;5576:86::-;5611:7;5651:4;5644:5;5640:16;5629:27;;5576:86;;;:::o;5668:112::-;5751:22;5767:5;5751:22;:::i;:::-;5746:3;5739:35;5668:112;;:::o;5786:214::-;5875:4;5913:2;5902:9;5898:18;5890:26;;5926:67;5990:1;5979:9;5975:17;5966:6;5926:67;:::i;:::-;5786:214;;;;:::o;6006:468::-;6071:6;6079;6128:2;6116:9;6107:7;6103:23;6099:32;6096:119;;;6134:79;;:::i;:::-;6096:119;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6381:2;6407:50;6449:7;6440:6;6429:9;6425:22;6407:50;:::i;:::-;6397:60;;6352:115;6006:468;;;;;:::o;6480:117::-;6589:1;6586;6579:12;6603:117;6712:1;6709;6702:12;6726:117;6835:1;6832;6825:12;6866:568;6939:8;6949:6;6999:3;6992:4;6984:6;6980:17;6976:27;6966:122;;7007:79;;:::i;:::-;6966:122;7120:6;7107:20;7097:30;;7150:18;7142:6;7139:30;7136:117;;;7172:79;;:::i;:::-;7136:117;7286:4;7278:6;7274:17;7262:29;;7340:3;7332:4;7324:6;7320:17;7310:8;7306:32;7303:41;7300:128;;;7347:79;;:::i;:::-;7300:128;6866:568;;;;;:::o;7440:559::-;7526:6;7534;7583:2;7571:9;7562:7;7558:23;7554:32;7551:119;;;7589:79;;:::i;:::-;7551:119;7737:1;7726:9;7722:17;7709:31;7767:18;7759:6;7756:30;7753:117;;;7789:79;;:::i;:::-;7753:117;7902:80;7974:7;7965:6;7954:9;7950:22;7902:80;:::i;:::-;7884:98;;;;7680:312;7440:559;;;;;:::o;8005:765::-;8091:6;8099;8107;8115;8164:3;8152:9;8143:7;8139:23;8135:33;8132:120;;;8171:79;;:::i;:::-;8132:120;8291:1;8316:53;8361:7;8352:6;8341:9;8337:22;8316:53;:::i;:::-;8306:63;;8262:117;8418:2;8444:53;8489:7;8480:6;8469:9;8465:22;8444:53;:::i;:::-;8434:63;;8389:118;8546:2;8572:53;8617:7;8608:6;8597:9;8593:22;8572:53;:::i;:::-;8562:63;;8517:118;8674:2;8700:53;8745:7;8736:6;8725:9;8721:22;8700:53;:::i;:::-;8690:63;;8645:118;8005:765;;;;;;;:::o;8776:553::-;8953:4;8991:3;8980:9;8976:19;8968:27;;9005:71;9073:1;9062:9;9058:17;9049:6;9005:71;:::i;:::-;9086:72;9154:2;9143:9;9139:18;9130:6;9086:72;:::i;:::-;9168;9236:2;9225:9;9221:18;9212:6;9168:72;:::i;:::-;9250;9318:2;9307:9;9303:18;9294:6;9250:72;:::i;:::-;8776:553;;;;;;;:::o;9335:332::-;9456:4;9494:2;9483:9;9479:18;9471:26;;9507:71;9575:1;9564:9;9560:17;9551:6;9507:71;:::i;:::-;9588:72;9656:2;9645:9;9641:18;9632:6;9588:72;:::i;:::-;9335:332;;;;;:::o;9673:118::-;9760:24;9778:5;9760:24;:::i;:::-;9755:3;9748:37;9673:118;;:::o;9797:222::-;9890:4;9928:2;9917:9;9913:18;9905:26;;9941:71;10009:1;9998:9;9994:17;9985:6;9941:71;:::i;:::-;9797:222;;;;:::o;10025:619::-;10102:6;10110;10118;10167:2;10155:9;10146:7;10142:23;10138:32;10135:119;;;10173:79;;:::i;:::-;10135:119;10293:1;10318:53;10363:7;10354:6;10343:9;10339:22;10318:53;:::i;:::-;10308:63;;10264:117;10420:2;10446:53;10491:7;10482:6;10471:9;10467:22;10446:53;:::i;:::-;10436:63;;10391:118;10548:2;10574:53;10619:7;10610:6;10599:9;10595:22;10574:53;:::i;:::-;10564:63;;10519:118;10025:619;;;;;:::o;10650:474::-;10718:6;10726;10775:2;10763:9;10754:7;10750:23;10746:32;10743:119;;;10781:79;;:::i;:::-;10743:119;10901:1;10926:53;10971:7;10962:6;10951:9;10947:22;10926:53;:::i;:::-;10916:63;;10872:117;11028:2;11054:53;11099:7;11090:6;11079:9;11075:22;11054:53;:::i;:::-;11044:63;;10999:118;10650:474;;;;;:::o;11130:182::-;11270:34;11266:1;11258:6;11254:14;11247:58;11130:182;:::o;11318:366::-;11460:3;11481:67;11545:2;11540:3;11481:67;:::i;:::-;11474:74;;11557:93;11646:3;11557:93;:::i;:::-;11675:2;11670:3;11666:12;11659:19;;11318:366;;;:::o;11690:419::-;11856:4;11894:2;11883:9;11879:18;11871:26;;11943:9;11937:4;11933:20;11929:1;11918:9;11914:17;11907:47;11971:131;12097:4;11971:131;:::i;:::-;11963:139;;11690:419;;;:::o;12115:229::-;12255:34;12251:1;12243:6;12239:14;12232:58;12324:12;12319:2;12311:6;12307:15;12300:37;12115:229;:::o;12350:366::-;12492:3;12513:67;12577:2;12572:3;12513:67;:::i;:::-;12506:74;;12589:93;12678:3;12589:93;:::i;:::-;12707:2;12702:3;12698:12;12691:19;;12350:366;;;:::o;12722:419::-;12888:4;12926:2;12915:9;12911:18;12903:26;;12975:9;12969:4;12965:20;12961:1;12950:9;12946:17;12939:47;13003:131;13129:4;13003:131;:::i;:::-;12995:139;;12722:419;;;:::o;13147:173::-;13287:25;13283:1;13275:6;13271:14;13264:49;13147:173;:::o;13326:366::-;13468:3;13489:67;13553:2;13548:3;13489:67;:::i;:::-;13482:74;;13565:93;13654:3;13565:93;:::i;:::-;13683:2;13678:3;13674:12;13667:19;;13326:366;;;:::o;13698:419::-;13864:4;13902:2;13891:9;13887:18;13879:26;;13951:9;13945:4;13941:20;13937:1;13926:9;13922:17;13915:47;13979:131;14105:4;13979:131;:::i;:::-;13971:139;;13698:419;;;:::o;14123:180::-;14171:77;14168:1;14161:88;14268:4;14265:1;14258:15;14292:4;14289:1;14282:15;14309:180;14357:77;14354:1;14347:88;14454:4;14451:1;14444:15;14478:4;14475:1;14468:15;14495:194;14535:4;14555:20;14573:1;14555:20;:::i;:::-;14550:25;;14589:20;14607:1;14589:20;:::i;:::-;14584:25;;14633:1;14630;14626:9;14618:17;;14657:1;14651:4;14648:11;14645:37;;;14662:18;;:::i;:::-;14645:37;14495:194;;;;:::o;14695:180::-;14743:77;14740:1;14733:88;14840:4;14837:1;14830:15;14864:4;14861:1;14854:15;14881:191;14921:3;14940:20;14958:1;14940:20;:::i;:::-;14935:25;;14974:20;14992:1;14974:20;:::i;:::-;14969:25;;15017:1;15014;15010:9;15003:16;;15038:3;15035:1;15032:10;15029:36;;;15045:18;;:::i;:::-;15029:36;14881:191;;;;:::o;15078:181::-;15218:33;15214:1;15206:6;15202:14;15195:57;15078:181;:::o;15265:366::-;15407:3;15428:67;15492:2;15487:3;15428:67;:::i;:::-;15421:74;;15504:93;15593:3;15504:93;:::i;:::-;15622:2;15617:3;15613:12;15606:19;;15265:366;;;:::o;15637:419::-;15803:4;15841:2;15830:9;15826:18;15818:26;;15890:9;15884:4;15880:20;15876:1;15865:9;15861:17;15854:47;15918:131;16044:4;15918:131;:::i;:::-;15910:139;;15637:419;;;:::o;16062:177::-;16202:29;16198:1;16190:6;16186:14;16179:53;16062:177;:::o;16245:366::-;16387:3;16408:67;16472:2;16467:3;16408:67;:::i;:::-;16401:74;;16484:93;16573:3;16484:93;:::i;:::-;16602:2;16597:3;16593:12;16586:19;;16245:366;;;:::o;16617:419::-;16783:4;16821:2;16810:9;16806:18;16798:26;;16870:9;16864:4;16860:20;16856:1;16845:9;16841:17;16834:47;16898:131;17024:4;16898:131;:::i;:::-;16890:139;;16617:419;;;:::o;17042:225::-;17182:34;17178:1;17170:6;17166:14;17159:58;17251:8;17246:2;17238:6;17234:15;17227:33;17042:225;:::o;17273:366::-;17415:3;17436:67;17500:2;17495:3;17436:67;:::i;:::-;17429:74;;17512:93;17601:3;17512:93;:::i;:::-;17630:2;17625:3;17621:12;17614:19;;17273:366;;;:::o;17645:419::-;17811:4;17849:2;17838:9;17834:18;17826:26;;17898:9;17892:4;17888:20;17884:1;17873:9;17869:17;17862:47;17926:131;18052:4;17926:131;:::i;:::-;17918:139;;17645:419;;;:::o;18070:223::-;18210:34;18206:1;18198:6;18194:14;18187:58;18279:6;18274:2;18266:6;18262:15;18255:31;18070:223;:::o;18299:366::-;18441:3;18462:67;18526:2;18521:3;18462:67;:::i;:::-;18455:74;;18538:93;18627:3;18538:93;:::i;:::-;18656:2;18651:3;18647:12;18640:19;;18299:366;;;:::o;18671:419::-;18837:4;18875:2;18864:9;18860:18;18852:26;;18924:9;18918:4;18914:20;18910:1;18899:9;18895:17;18888:47;18952:131;19078:4;18952:131;:::i;:::-;18944:139;;18671:419;;;:::o;19096:221::-;19236:34;19232:1;19224:6;19220:14;19213:58;19305:4;19300:2;19292:6;19288:15;19281:29;19096:221;:::o;19323:366::-;19465:3;19486:67;19550:2;19545:3;19486:67;:::i;:::-;19479:74;;19562:93;19651:3;19562:93;:::i;:::-;19680:2;19675:3;19671:12;19664:19;;19323:366;;;:::o;19695:419::-;19861:4;19899:2;19888:9;19884:18;19876:26;;19948:9;19942:4;19938:20;19934:1;19923:9;19919:17;19912:47;19976:131;20102:4;19976:131;:::i;:::-;19968:139;;19695:419;;;:::o;20120:177::-;20260:29;20256:1;20248:6;20244:14;20237:53;20120:177;:::o;20303:366::-;20445:3;20466:67;20530:2;20525:3;20466:67;:::i;:::-;20459:74;;20542:93;20631:3;20542:93;:::i;:::-;20660:2;20655:3;20651:12;20644:19;;20303:366;;;:::o;20675:419::-;20841:4;20879:2;20868:9;20864:18;20856:26;;20928:9;20922:4;20918:20;20914:1;20903:9;20899:17;20892:47;20956:131;21082:4;20956:131;:::i;:::-;20948:139;;20675:419;;;:::o;21100:224::-;21240:34;21236:1;21228:6;21224:14;21217:58;21309:7;21304:2;21296:6;21292:15;21285:32;21100:224;:::o;21330:366::-;21472:3;21493:67;21557:2;21552:3;21493:67;:::i;:::-;21486:74;;21569:93;21658:3;21569:93;:::i;:::-;21687:2;21682:3;21678:12;21671:19;;21330:366;;;:::o;21702:419::-;21868:4;21906:2;21895:9;21891:18;21883:26;;21955:9;21949:4;21945:20;21941:1;21930:9;21926:17;21919:47;21983:131;22109:4;21983:131;:::i;:::-;21975:139;;21702:419;;;:::o;22127:222::-;22267:34;22263:1;22255:6;22251:14;22244:58;22336:5;22331:2;22323:6;22319:15;22312:30;22127:222;:::o;22355:366::-;22497:3;22518:67;22582:2;22577:3;22518:67;:::i;:::-;22511:74;;22594:93;22683:3;22594:93;:::i;:::-;22712:2;22707:3;22703:12;22696:19;;22355:366;;;:::o;22727:419::-;22893:4;22931:2;22920:9;22916:18;22908:26;;22980:9;22974:4;22970:20;22966:1;22955:9;22951:17;22944:47;23008:131;23134:4;23008:131;:::i;:::-;23000:139;;22727:419;;;:::o;23152:228::-;23292:34;23288:1;23280:6;23276:14;23269:58;23361:11;23356:2;23348:6;23344:15;23337:36;23152:228;:::o;23386:366::-;23528:3;23549:67;23613:2;23608:3;23549:67;:::i;:::-;23542:74;;23625:93;23714:3;23625:93;:::i;:::-;23743:2;23738:3;23734:12;23727:19;;23386:366;;;:::o;23758:419::-;23924:4;23962:2;23951:9;23947:18;23939:26;;24011:9;24005:4;24001:20;23997:1;23986:9;23982:17;23975:47;24039:131;24165:4;24039:131;:::i;:::-;24031:139;;23758:419;;;:::o;24183:235::-;24323:34;24319:1;24311:6;24307:14;24300:58;24392:18;24387:2;24379:6;24375:15;24368:43;24183:235;:::o;24424:366::-;24566:3;24587:67;24651:2;24646:3;24587:67;:::i;:::-;24580:74;;24663:93;24752:3;24663:93;:::i;:::-;24781:2;24776:3;24772:12;24765:19;;24424:366;;;:::o;24796:419::-;24962:4;25000:2;24989:9;24985:18;24977:26;;25049:9;25043:4;25039:20;25035:1;25024:9;25020:17;25013:47;25077:131;25203:4;25077:131;:::i;:::-;25069:139;;24796:419;;;:::o;25221:155::-;25361:7;25357:1;25349:6;25345:14;25338:31;25221:155;:::o;25382:365::-;25524:3;25545:66;25609:1;25604:3;25545:66;:::i;:::-;25538:73;;25620:93;25709:3;25620:93;:::i;:::-;25738:2;25733:3;25729:12;25722:19;;25382:365;;;:::o;25753:419::-;25919:4;25957:2;25946:9;25942:18;25934:26;;26006:9;26000:4;25996:20;25992:1;25981:9;25977:17;25970:47;26034:131;26160:4;26034:131;:::i;:::-;26026:139;;25753:419;;;:::o;26178:410::-;26218:7;26241:20;26259:1;26241:20;:::i;:::-;26236:25;;26275:20;26293:1;26275:20;:::i;:::-;26270:25;;26330:1;26327;26323:9;26352:30;26370:11;26352:30;:::i;:::-;26341:41;;26531:1;26522:7;26518:15;26515:1;26512:22;26492:1;26485:9;26465:83;26442:139;;26561:18;;:::i;:::-;26442:139;26226:362;26178:410;;;;:::o;26594:180::-;26642:77;26639:1;26632:88;26739:4;26736:1;26729:15;26763:4;26760:1;26753:15;26780:185;26820:1;26837:20;26855:1;26837:20;:::i;:::-;26832:25;;26871:20;26889:1;26871:20;:::i;:::-;26866:25;;26910:1;26900:35;;26915:18;;:::i;:::-;26900:35;26957:1;26954;26950:9;26945:14;;26780:185;;;;:::o

Swarm Source

ipfs://07f00669079a409460a3e0e3b49b9952c213055f2525ed862e51e546a4086a8c

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
[ 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.