ETH Price: $3,100.36 (+1.26%)
Gas: 5 Gwei

Token

Space Link (SPLINK)
 

Overview

Max Total Supply

1,000,000,000,000,000 SPLINK

Holders

81

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: SPLINK
Balance
0.000193199 SPLINK

Value
$0.00
0xaec838a779c2948411bc66fe5b0f5cd50cb3508e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SPLINK

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-27
*/

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

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
    
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

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

    // solhint-disable-next-line
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }
    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)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

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

        _beforeTokenTransfer(account, address(0), amount);

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {} // solhint-disable-line

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {} // solhint-disable-line
}

interface ISPLINK is IERC20 {

    event TaxAddressChanged(address newTaxAddress);
    event TaxedTransferAddedFor(address[] addresses);
    event TaxedTransferRemovedFor(address[] addresses);

    event TaxTaken(uint256 teamFee);
    event TaxChanged(Tax newFees);

    struct Tax {
        uint256 buyTax;
        uint256 sellTax;
    }

    function currentFees() external view returns (Tax memory);


    function taxedPair(address pair) external view returns (bool);
}

library Utils {
    /**
     * @dev Calculates the percentage of a number
     * @param number: The number to calculate the percentage of
     * @param percentage: The percentage of the number to return
     * @return The percentage of a number
     */
    function percentageOf(uint256 number, uint256 percentage)
        internal
        pure
        returns (uint256)
    {
        return (number * percentage) / 100;
    }

    /**
     * @dev Swaps an amount of tokens for ETH
     * @param uniswapV2Router: The uniswap router to trade through
     * @param amount: The amount of tokens to swap
     * @param to: The address to send the recieved tokens to
     * @return The amount of ETH recieved
     */
    function swapForETH(
        IUniswapV2Router uniswapV2Router,
        uint256 amount,
        address to
    ) internal returns (uint256) {
        uint256 startingBalance = to.balance;
        address[] memory path = new address[](2);

        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            to,
            block.timestamp
        );

        return to.balance - startingBalance;
    }

    /**
     * @dev Adds liquidity for the token in ETH
     * @param uniswapV2Router: The uniswap router to add liquidity through
     * @param amountToken: The amount of tokens to add liquidity with
     * @param amountETH: The amount of ETH to add liquidity with
     * @param to: The address to send the recieved LP tokens to
     */
    function addLiquidityETH(
        IUniswapV2Router uniswapV2Router,
        uint256 amountToken,
        uint256 amountETH,
        address to
    ) internal {
        uniswapV2Router.addLiquidityETH{value: amountETH}(
            address(this),
            amountToken,
            0,
            0,
            to,
            block.timestamp
        );
    }

    /**
     * @param token: The address of the token to transfer
     * @param from: The sender of the tokens
     * @param to: The receiver of the tokens
     * @param amount: The amount of tokens to transfer
     */
    function transferTokens(
        address token,
        address from,
        address to,
        uint256 amount
    ) internal {
        IERC20(token).transferFrom(from, to, amount);
    }

    /**
     * @dev Returns the token for a Uniswap V2 Pair
     */
    function tokenFor(address pair) internal view returns (address) {
        return IUniswapV2Pair(pair).token0();
    }

    /**
    * @dev Checks if transaction amount is below max
    * @param amount: The amount to be transferred
    */
    function isNotGreaterThanMaxTXLimit(uint256 amount) internal pure returns (bool) {
      uint256 MAX_TX = 10000000000000 * 10**9; 
      return amount <= MAX_TX;
    }

    /**
    * @dev Checks if wallet balance has reached max balance per wallet
    * @param balanceOfWallet: the balance of wallet to be checked
    */
    function balanceIsLessThanMax(uint256 balanceOfWallet ) internal pure returns (bool) {
      uint256 MAX_BALANCE = 15000000000000 * 10**9; 
      return balanceOfWallet <= MAX_BALANCE;
    }
}

contract SPLINK is ISPLINK, Ownable, ERC20 {
   using SafeMath for uint256;

    uint256 internal constant MAX = type(uint256).max;

    uint256 private constant SUPPLY = 1000000000000000 * 10**9; 
    string internal constant NAME = "Space Link";
    string internal constant SYMBOL = "SPLINK";
    uint8 internal constant DECIMALS = 9;

    mapping(address => address) internal _routerFor;
    mapping(address => bool) private _isWhitelisted;
    mapping(address => bool) private _isTaxExempted;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;

    Tax private fees;

    address payable internal _taxAddress;

    IUniswapV2Router internal uniswapV2Router;
    address internal uniswapV2Pair;

    bool public tradingOpen;
    bool public liquidityAdded;
    bool private inSwap;
    bool public swapEnabled;
    bool private whiteListActive;
    bool public cooldownEnabled;

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

    constructor(address payable addr1) ERC20(NAME, SYMBOL) {
        _taxAddress = addr1;
        _mint(_msgSender(), SUPPLY);
        fees = Tax(8,8);
    }

    function decimals() public pure virtual override returns (uint8) {
        return DECIMALS;
    }
    
    function taxedPair(address pair)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _routerFor[pair] != address(0);
    }

    // Transfer, no events for fees
    function transferFee(address from, uint256 amount) internal {
        _balances[from] -= amount;
        _balances[address(this)] += amount;
    }

    function takeFee(
        address from,
        uint256 amount,
        uint256 teamFee
    ) internal returns (uint256) {
        if (teamFee == 0) return 0;
        uint256 tTeam = Utils.percentageOf(amount, teamFee);
        transferFee(from, tTeam);
        emit TaxTaken(tTeam);
        return tTeam;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        // If no fee, 0
        uint256 _teamFee;

        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to], "SPLINK: Currrently tagged as a bot");
            
            
            if (liquidityAdded) {
                require(tradingOpen, "SPLINK: Trading is not Open");
           
            
                if (whiteListActive) {
                     require(_isWhitelisted[to],  "SPLINK: Address must be whitelisted");
                }

                if (swapEnabled && !inSwap) {
     
                     if (taxedPair(from) && !taxedPair(to)) {
                       uint256 walletBalance = balanceOf(to).add(amount);
                      // buying transfer
                        require(Utils.isNotGreaterThanMaxTXLimit(amount), "SPLINK: Max tx exceeded");
                        require(Utils.balanceIsLessThanMax(walletBalance), "SPLINK: Max holding exceeded");
    
                        if (cooldownEnabled) {
                          require(cooldown[to] < block.timestamp);
                          cooldown[to] = block.timestamp + (30 seconds);
                        }
                        
                        _teamFee = _isTaxExempted[to] ? 0 : fees.buyTax;
                    }  else if (taxedPair(to)) {
                      // selling transfer
                        swapTokensForEth(balanceOf(address(this)));
                        sendETHToFee(address(this).balance);
                        _teamFee = _isTaxExempted[from] ? 0 : fees.sellTax;
                    }
                  
                } else {
                    require(swapEnabled, "SPLINK: Swap must be enabled");
                }
            }
        }

        uint256 fee = takeFee(from, amount, _teamFee);
        super._transfer(from, to, amount - fee);
    }

    function swapTokensForEth(uint256 tokenAmount) internal lockTheSwap {
        Utils.swapForETH(uniswapV2Router, tokenAmount, address(this));
    }

    function sendETHToFee(uint256 amount) internal {
        _taxAddress.transfer(amount);
    }

    function openTrading() external virtual onlyOwner {
        require(liquidityAdded);
        tradingOpen = true;
        cooldownEnabled = true;
        swapEnabled = true;
    }
    
    function toggleWhiteList(bool onOff) external virtual onlyOwner {
       whiteListActive = onOff;
    }

    function addDEX(address pair, address router) public virtual onlyOwner {
        require(!taxedPair(pair), "DEX already exists");
        address tokenFor = Utils.tokenFor(pair);
        _routerFor[pair] = router;
        _approve(address(this), router, MAX);
        IERC20(tokenFor).approve(router, MAX);
        IERC20(pair).approve(router, MAX);
    }

    function removeDEX(address pair) external virtual onlyOwner {
        require(taxedPair(pair), "DEX does not exist");
        address tokenFor = Utils.tokenFor(pair);
        address router = _routerFor[pair];
        delete _routerFor[pair];
        _approve(address(this), router, 0);
        IERC20(tokenFor).approve(router, 0);
        IERC20(pair).approve(router, 0);
    }

    function addLiquidity() external virtual onlyOwner lockTheSwap {
        IUniswapV2Router _uniswapV2Router = IUniswapV2Router(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        addDEX(uniswapV2Pair, address(_uniswapV2Router));
        Utils.addLiquidityETH(
            uniswapV2Router,
            balanceOf(address(this)),
            address(this).balance,
            owner()
        );
        liquidityAdded = true;
    }

    function setBots(address[] calldata bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function addToWhiteList(address[] calldata addresses)
        external
        virtual
        onlyOwner
    {
        for (uint256 i; i < addresses.length; i++) {
            _isWhitelisted[addresses[i]] = true;
        }
    }
    
    
    function removeFromWhiteList(address[] calldata addresses)
        external
        virtual
        onlyOwner
    {
        for (uint256 i; i < addresses.length; i++) {
            _isWhitelisted[addresses[i]] = false;
        }
    }

    function addToTaxExempted(address[] calldata addresses)
        external
        virtual
        onlyOwner
    {
        for (uint256 i; i < addresses.length; i++) {
            _isTaxExempted[addresses[i]] = true;
        }
    }
    
    function removeFromTaxExemption(address[] calldata addresses)
        external
        virtual
        onlyOwner
    {
        for (uint256 i; i < addresses.length; i++) {
            _isTaxExempted[addresses[i]] = false;
        }
    }

    
    function setTaxAddress(address payable newTaxAddress) external onlyOwner {
        _taxAddress = newTaxAddress;
        emit TaxAddressChanged(newTaxAddress);
    }

    function manualswap() external onlyOwner {
        swapTokensForEth(balanceOf(address(this)));
    }

    function manualsend() external onlyOwner {
        sendETHToFee(address(this).balance);
    }

    function setSwapRouter(IUniswapV2Router newRouter) external onlyOwner {
        require(liquidityAdded, "Add liquidity before doing this");

        address weth = uniswapV2Router.WETH();
        address newPair = IUniswapV2Factory(newRouter.factory()).getPair(
            address(this),
            weth
        );
        require(
            newPair != address(0),
            "WETH Pair does not exist for that router"
        );
        require(taxedPair(newPair), "The pair must be a taxed pair");

        (uint256 reservesOld, , ) = IUniswapV2Pair(uniswapV2Pair).getReserves();
        (uint256 reservesNew, , ) = IUniswapV2Pair(newPair).getReserves();
        require(
            reservesNew > reservesOld,
            "New pair must have more WETH Reserves"
        );

        uniswapV2Router = newRouter;
        uniswapV2Pair = newPair;
    }

    function setBuyTax(uint256 newBuyTax) public onlyOwner {
      require(newBuyTax <= 8, "SPLINK: Buy Tax must be less than or eqaul to 8");
      fees = Tax(newBuyTax, fees.sellTax);

      emit TaxChanged(fees);
    }

    function setSellTax(uint256 newSellTax) public onlyOwner {
      require(newSellTax <= 8, "SPLINK: Sell Tax must be less than or eqaul to 8");
      fees = Tax(fees.buyTax, newSellTax);

      emit TaxChanged(fees);
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function currentFees() external view override returns (Tax memory) {
        return fees;
    }

    // solhint-disable-next-line
    receive() external payable virtual {}
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"addr1","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":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":"address","name":"newTaxAddress","type":"address"}],"name":"TaxAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"indexed":false,"internalType":"struct ISPLINK.Tax","name":"newFees","type":"tuple"}],"name":"TaxChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"TaxTaken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"TaxedTransferAddedFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"TaxedTransferRemovedFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"router","type":"address"}],"name":"addDEX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToTaxExempted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToWhiteList","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":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentFees","outputs":[{"components":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"internalType":"struct ISPLINK.Tax","name":"","type":"tuple"}],"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":"notbot","type":"address"}],"name":"delBot","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":[],"name":"liquidityAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"removeDEX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromTaxExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router","name":"newRouter","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newTaxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"taxedPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"}],"name":"toggleWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162005c5638038062005c568339818101604052810190620000379190620004b1565b6040518060400160405280600a81526020017f5370616365204c696e6b000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f53504c494e4b0000000000000000000000000000000000000000000000000000815250620000c3620000b76200019a60201b60201c565b620001a260201b60201c565b8160049080519060200190620000db929190620003ea565b508060059080519060200190620000f4929190620003ea565b50505080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001636200014c6200019a60201b60201c565b69d3c21bcecceda10000006200026660201b60201c565b6040518060400160405280600881526020016008815250600b600082015181600001556020820151816001015590505050620006e2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d0906200051b565b60405180910390fd5b620002ed60008383620003e060201b60201c565b80600360008282546200030191906200056b565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200035991906200056b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003c091906200053d565b60405180910390a3620003dc60008383620003e560201b60201c565b5050565b505050565b505050565b828054620003f89062000606565b90600052602060002090601f0160209004810192826200041c576000855562000468565b82601f106200043757805160ff191683800117855562000468565b8280016001018555821562000468579182015b82811115620004675782518255916020019190600101906200044a565b5b5090506200047791906200047b565b5090565b5b80821115620004965760008160009055506001016200047c565b5090565b600081519050620004ab81620006c8565b92915050565b600060208284031215620004ca57620004c96200069a565b5b6000620004da848285016200049a565b91505092915050565b6000620004f2601f836200055a565b9150620004ff826200069f565b602082019050919050565b6200051581620005fc565b82525050565b600060208201905081810360008301526200053681620004e3565b9050919050565b60006020820190506200055460008301846200050a565b92915050565b600082825260208201905092915050565b60006200057882620005fc565b91506200058583620005fc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005bd57620005bc6200063c565b5b828201905092915050565b6000620005d582620005dc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200061f57607f821691505b602082108114156200063657620006356200066b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620006d381620005c8565b8114620006df57600080fd5b50565b61556480620006f26000396000f3fe6080604052600436106102295760003560e01c80638c8f3f8211610123578063b11560c5116100ab578063dc1052e21161006f578063dc1052e2146107d4578063dd62ed3e146107fd578063e8078d941461083a578063f2fde38b14610851578063ffb54a991461087a57610230565b8063b11560c514610729578063b515566a14610752578063c3c8cd801461077b578063c9567bf914610792578063d9443923146107a957610230565b806395d89b41116100f257806395d89b4114610630578063a1883d261461065b578063a457c2d714610684578063a9059cbb146106c1578063a985ceef146106fe57610230565b80638c8f3f821461058a5780638cd09d50146105b35780638da5cb5b146105dc57806391c0035f1461060757610230565b80635391bc49116101b15780636fc3eaec116101755780636fc3eaec146104b957806370a08231146104d05780637113e8551461050d578063715018a61461054a578063740d73f31461056157610230565b80635391bc49146103e85780635932ead1146104115780635d9644c41461043a5780636ddd1713146104655780636df2dcd61461049057610230565b806323b872dd116101f857806323b872dd146102f1578063273123b71461032e578063313ce56714610357578063395093511461038257806341273657146103bf57610230565b806302b3955a1461023557806306fdde031461025e578063095ea7b31461028957806318160ddd146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190613f04565b6108a5565b005b34801561026a57600080fd5b5061027361093e565b6040516102809190614670565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190613e77565b6109d0565b6040516102bd9190614655565b60405180910390f35b3480156102d257600080fd5b506102db6109ee565b6040516102e891906149c8565b60405180910390f35b3480156102fd57600080fd5b5061031860048036038101906103139190613e24565b6109f8565b6040516103259190614655565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190613d5d565b610af0565b005b34801561036357600080fd5b5061036c610bc7565b6040516103799190614a3d565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190613e77565b610bd0565b6040516103b69190614655565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e19190613f5e565b610c7c565b005b3480156103f457600080fd5b5061040f600480360381019061040a9190613eb7565b6111c4565b005b34801561041d57600080fd5b5061043860048036038101906104339190613f04565b6112e5565b005b34801561044657600080fd5b5061044f61137e565b60405161045c9190614992565b60405180910390f35b34801561047157600080fd5b5061047a6113ac565b6040516104879190614655565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190613de4565b6113bf565b005b3480156104c557600080fd5b506104ce61169b565b005b3480156104dc57600080fd5b506104f760048036038101906104f29190613d5d565b611722565b60405161050491906149c8565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613d5d565b61176b565b6040516105419190614655565b60405180910390f35b34801561055657600080fd5b5061055f611803565b005b34801561056d57600080fd5b5061058860048036038101906105839190613eb7565b61188b565b005b34801561059657600080fd5b506105b160048036038101906105ac9190613d5d565b6119ac565b005b3480156105bf57600080fd5b506105da60048036038101906105d59190613fde565b611c72565b005b3480156105e857600080fd5b506105f1611da0565b6040516105fe9190614543565b60405180910390f35b34801561061357600080fd5b5061062e60048036038101906106299190613eb7565b611dc9565b005b34801561063c57600080fd5b50610645611eea565b6040516106529190614670565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190613db7565b611f7c565b005b34801561069057600080fd5b506106ab60048036038101906106a69190613e77565b612073565b6040516106b89190614655565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190613e77565b61215e565b6040516106f59190614655565b60405180910390f35b34801561070a57600080fd5b5061071361217c565b6040516107209190614655565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b9190613eb7565b61218f565b005b34801561075e57600080fd5b5061077960048036038101906107749190613eb7565b6122b0565b005b34801561078757600080fd5b506107906123d1565b005b34801561079e57600080fd5b506107a7612460565b005b3480156107b557600080fd5b506107be612548565b6040516107cb9190614655565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f69190613fde565b61255b565b005b34801561080957600080fd5b50610824600480360381019061081f9190613de4565b612689565b60405161083191906149c8565b60405180910390f35b34801561084657600080fd5b5061084f612710565b005b34801561085d57600080fd5b5061087860048036038101906108739190613d5d565b612a6a565b005b34801561088657600080fd5b5061088f612b62565b60405161089c9190614655565b60405180910390f35b6108ad612b75565b73ffffffffffffffffffffffffffffffffffffffff166108cb611da0565b73ffffffffffffffffffffffffffffffffffffffff1614610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091890614872565b60405180910390fd5b80600f60186101000a81548160ff02191690831515021790555050565b60606004805461094d90614cea565b80601f016020809104026020016040519081016040528092919081815260200182805461097990614cea565b80156109c65780601f1061099b576101008083540402835291602001916109c6565b820191906000526020600020905b8154815290600101906020018083116109a957829003601f168201915b5050505050905090565b60006109e46109dd612b75565b8484612b7d565b6001905092915050565b6000600354905090565b6000610a05848484612d48565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a50612b75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac790614852565b60405180910390fd5b610ae485610adc612b75565b858403612b7d565b60019150509392505050565b610af8612b75565b73ffffffffffffffffffffffffffffffffffffffff16610b16611da0565b73ffffffffffffffffffffffffffffffffffffffff1614610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6390614872565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b6000610c72610bdd612b75565b848460026000610beb612b75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c6d9190614aad565b612b7d565b6001905092915050565b610c84612b75565b73ffffffffffffffffffffffffffffffffffffffff16610ca2611da0565b73ffffffffffffffffffffffffffffffffffffffff1614610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef90614872565b60405180910390fd5b600f60159054906101000a900460ff16610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90614832565b60405180910390fd5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190613d8a565b905060008273ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190613d8a565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b8152600401610ea5929190614579565b60206040518083038186803b158015610ebd57600080fd5b505afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef59190613d8a565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e906147f2565b60405180910390fd5b610f708161176b565b610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa6906148f2565b60405180910390fd5b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561101957600080fd5b505afa15801561102d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190613f8b565b50506dffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e59190613f8b565b50506dffffffffffffffffffffffffffff16905081811161113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113290614932565b60405180910390fd5b84600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6111cc612b75565b73ffffffffffffffffffffffffffffffffffffffff166111ea611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123790614872565b60405180910390fd5b60005b828290508110156112e05760016008600085858581811061126757611266614e0c565b5b905060200201602081019061127c9190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112d890614d36565b915050611243565b505050565b6112ed612b75565b73ffffffffffffffffffffffffffffffffffffffff1661130b611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135890614872565b60405180910390fd5b80600f60196101000a81548160ff02191690831515021790555050565b611386613c1b565b600b60405180604001604052908160008201548152602001600182015481525050905090565b600f60179054906101000a900460ff1681565b6113c7612b75565b73ffffffffffffffffffffffffffffffffffffffff166113e5611da0565b73ffffffffffffffffffffffffffffffffffffffff161461143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290614872565b60405180910390fd5b6114448261176b565b15611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b906148b2565b60405180910390fd5b600061148f836132d1565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061153a30837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b7d565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115959291906145cb565b602060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e79190613f31565b508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116439291906145cb565b602060405180830381600087803b15801561165d57600080fd5b505af1158015611671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116959190613f31565b50505050565b6116a3612b75565b73ffffffffffffffffffffffffffffffffffffffff166116c1611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e90614872565b60405180910390fd5b61172047613358565b565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61180b612b75565b73ffffffffffffffffffffffffffffffffffffffff16611829611da0565b73ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690614872565b60405180910390fd5b61188960006133c4565b565b611893612b75565b73ffffffffffffffffffffffffffffffffffffffff166118b1611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90614872565b60405180910390fd5b60005b828290508110156119a75760016007600085858581811061192e5761192d614e0c565b5b90506020020160208101906119439190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061199f90614d36565b91505061190a565b505050565b6119b4612b75565b73ffffffffffffffffffffffffffffffffffffffff166119d2611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1f90614872565b60405180910390fd5b611a318161176b565b611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790614812565b60405180910390fd5b6000611a7b826132d1565b90506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611b4f30826000612b7d565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b38260006040518363ffffffff1660e01b8152600401611b8b9291906145a2565b602060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190613f31565b508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38260006040518363ffffffff1660e01b8152600401611c1a9291906145a2565b602060405180830381600087803b158015611c3457600080fd5b505af1158015611c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6c9190613f31565b50505050565b611c7a612b75565b73ffffffffffffffffffffffffffffffffffffffff16611c98611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590614872565b60405180910390fd5b6008811115611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d29906147b2565b60405180910390fd5b6040518060400160405280600b60000154815260200182815250600b60008201518160000155602082015181600101559050507f209f13ba9150701e2536f4ca425451e5cda3ddd67be5165e88d332b528d3b58d600b604051611d9591906149ad565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dd1612b75565b73ffffffffffffffffffffffffffffffffffffffff16611def611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3c90614872565b60405180910390fd5b60005b82829050811015611ee557600060086000858585818110611e6c57611e6b614e0c565b5b9050602002016020810190611e819190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611edd90614d36565b915050611e48565b505050565b606060058054611ef990614cea565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2590614cea565b8015611f725780601f10611f4757610100808354040283529160200191611f72565b820191906000526020600020905b815481529060010190602001808311611f5557829003601f168201915b5050505050905090565b611f84612b75565b73ffffffffffffffffffffffffffffffffffffffff16611fa2611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90614872565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9e905b198adfa70dbc3c719ad6b91c9cea8dfb106a2e2121526342562413acb881604051612068919061455e565b60405180910390a150565b60008060026000612082612b75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561213f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213690614952565b60405180910390fd5b61215361214a612b75565b85858403612b7d565b600191505092915050565b600061217261216b612b75565b8484612d48565b6001905092915050565b600f60199054906101000a900460ff1681565b612197612b75565b73ffffffffffffffffffffffffffffffffffffffff166121b5611da0565b73ffffffffffffffffffffffffffffffffffffffff161461220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290614872565b60405180910390fd5b60005b828290508110156122ab5760006007600085858581811061223257612231614e0c565b5b90506020020160208101906122479190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806122a390614d36565b91505061220e565b505050565b6122b8612b75565b73ffffffffffffffffffffffffffffffffffffffff166122d6611da0565b73ffffffffffffffffffffffffffffffffffffffff161461232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390614872565b60405180910390fd5b60005b828290508110156123cc5760016009600085858581811061235357612352614e0c565b5b90506020020160208101906123689190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806123c490614d36565b91505061232f565b505050565b6123d9612b75565b73ffffffffffffffffffffffffffffffffffffffff166123f7611da0565b73ffffffffffffffffffffffffffffffffffffffff161461244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490614872565b60405180910390fd5b61245e61245930611722565b613488565b565b612468612b75565b73ffffffffffffffffffffffffffffffffffffffff16612486611da0565b73ffffffffffffffffffffffffffffffffffffffff16146124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d390614872565b60405180910390fd5b600f60159054906101000a900460ff166124f557600080fd5b6001600f60146101000a81548160ff0219169083151502179055506001600f60196101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff021916908315150217905550565b600f60159054906101000a900460ff1681565b612563612b75565b73ffffffffffffffffffffffffffffffffffffffff16612581611da0565b73ffffffffffffffffffffffffffffffffffffffff16146125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90614872565b60405180910390fd5b600881111561261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614732565b60405180910390fd5b6040518060400160405280828152602001600b60010154815250600b60008201518160000155602082015181600101559050507f209f13ba9150701e2536f4ca425451e5cda3ddd67be5165e88d332b528d3b58d600b60405161267e91906149ad565b60405180910390a150565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612718612b75565b73ffffffffffffffffffffffffffffffffffffffff16612736611da0565b73ffffffffffffffffffffffffffffffffffffffff161461278c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278390614872565b60405180910390fd5b6001600f60166101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561284757600080fd5b505afa15801561285b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287f9190613d8a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128e157600080fd5b505afa1580156128f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129199190613d8a565b6040518363ffffffff1660e01b8152600401612936929190614579565b602060405180830381600087803b15801561295057600080fd5b505af1158015612964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129889190613d8a565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506129f4600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826113bf565b612a31600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a2330611722565b47612a2c611da0565b6134ef565b6001600f60156101000a81548160ff021916908315150217905550506000600f60166101000a81548160ff021916908315150217905550565b612a72612b75565b73ffffffffffffffffffffffffffffffffffffffff16612a90611da0565b73ffffffffffffffffffffffffffffffffffffffff1614612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add90614872565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4d906146f2565b60405180910390fd5b612b5f816133c4565b50565b600f60149054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be4906148d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5490614712565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d3b91906149c8565b60405180910390a3505050565b6000612d52611da0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612dc05750612d90611da0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156132a557600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e695750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9f906147d2565b60405180910390fd5b600f60159054906101000a900460ff16156132a457600f60149054906101000a900460ff16612f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0390614772565b60405180910390fd5b600f60189054906101000a900460ff1615612fae57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa490614972565b60405180910390fd5b5b600f60179054906101000a900460ff168015612fd75750600f60169054906101000a900460ff16155b1561325357612fe58461176b565b8015612ff75750612ff58361176b565b155b156131c35760006130198361300b86611722565b61358f90919063ffffffff16565b9050613024836135ed565b613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305a906146b2565b60405180910390fd5b61306c81613609565b6130ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a2906146d2565b60405180910390fd5b600f60199054906101000a900460ff161561315c5742600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061310b57600080fd5b601e426131189190614aad565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131b857600b600001546131bb565b60005b91505061324e565b6131cc8361176b565b1561324d576131e26131dd30611722565b613488565b6131eb47613358565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661324757600b6001015461324a565b60005b90505b5b6132a3565b600f60179054906101000a900460ff166132a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329990614912565b60405180910390fd5b5b5b5b60006132b2858484613625565b90506132ca858583866132c59190614b8e565b613693565b5050505050565b60008173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561331957600080fd5b505afa15801561332d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133519190613d8a565b9050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156133c0573d6000803e3d6000fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600f60166101000a81548160ff0219169083151502179055506134d0600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168230613917565b506000600f60166101000a81548160ff02191690831515021790555050565b8373ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b8152600401613534969594939291906145f4565b6060604051808303818588803b15801561354d57600080fd5b505af1158015613561573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613586919061400b565b50505050505050565b600080828461359e9190614aad565b9050838110156135e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135da90614752565b60405180910390fd5b8091505092915050565b60008069021e19e0c9bab2400000905080831115915050919050565b60008069032d26d12e980b600000905080831115915050919050565b600080821415613638576000905061368c565b60006136448484613b3f565b90506136508582613b61565b7fd10ad9510a39fc617bd79623c15fc5ae760f2948c7063969a2b4c4b434332a758160405161367f91906149c8565b60405180910390a1809150505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136fa90614892565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376a90614692565b60405180910390fd5b61377e838383613c11565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fc90614792565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461389a9190614aad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138fe91906149c8565b60405180910390a3613911848484613c16565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163190506000600267ffffffffffffffff81111561395157613950614e3b565b5b60405190808252806020026020018201604052801561397f5781602001602082028036833780820191505090505b509050308160008151811061399757613996614e0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a1757600080fd5b505afa158015613a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4f9190613d8a565b81600181518110613a6357613a62614e0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508573ffffffffffffffffffffffffffffffffffffffff1663791ac9478660008488426040518663ffffffff1660e01b8152600401613adf9594939291906149e3565b600060405180830381600087803b158015613af957600080fd5b505af1158015613b0d573d6000803e3d6000fd5b50505050818473ffffffffffffffffffffffffffffffffffffffff1631613b349190614b8e565b925050509392505050565b600060648284613b4f9190614b34565b613b599190614b03565b905092915050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613bb09190614b8e565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c069190614aad565b925050819055505050565b505050565b505050565b604051806040016040528060008152602001600081525090565b600081359050613c448161548d565b92915050565b600081519050613c598161548d565b92915050565b600081359050613c6e816154a4565b92915050565b60008083601f840112613c8a57613c89614e6f565b5b8235905067ffffffffffffffff811115613ca757613ca6614e6a565b5b602083019150836020820283011115613cc357613cc2614e74565b5b9250929050565b600081359050613cd9816154bb565b92915050565b600081519050613cee816154bb565b92915050565b600081359050613d03816154d2565b92915050565b600081519050613d18816154e9565b92915050565b600081359050613d2d81615500565b92915050565b600081519050613d4281615500565b92915050565b600081519050613d5781615517565b92915050565b600060208284031215613d7357613d72614e7e565b5b6000613d8184828501613c35565b91505092915050565b600060208284031215613da057613d9f614e7e565b5b6000613dae84828501613c4a565b91505092915050565b600060208284031215613dcd57613dcc614e7e565b5b6000613ddb84828501613c5f565b91505092915050565b60008060408385031215613dfb57613dfa614e7e565b5b6000613e0985828601613c35565b9250506020613e1a85828601613c35565b9150509250929050565b600080600060608486031215613e3d57613e3c614e7e565b5b6000613e4b86828701613c35565b9350506020613e5c86828701613c35565b9250506040613e6d86828701613d1e565b9150509250925092565b60008060408385031215613e8e57613e8d614e7e565b5b6000613e9c85828601613c35565b9250506020613ead85828601613d1e565b9150509250929050565b60008060208385031215613ece57613ecd614e7e565b5b600083013567ffffffffffffffff811115613eec57613eeb614e79565b5b613ef885828601613c74565b92509250509250929050565b600060208284031215613f1a57613f19614e7e565b5b6000613f2884828501613cca565b91505092915050565b600060208284031215613f4757613f46614e7e565b5b6000613f5584828501613cdf565b91505092915050565b600060208284031215613f7457613f73614e7e565b5b6000613f8284828501613cf4565b91505092915050565b600080600060608486031215613fa457613fa3614e7e565b5b6000613fb286828701613d09565b9350506020613fc386828701613d09565b9250506040613fd486828701613d48565b9150509250925092565b600060208284031215613ff457613ff3614e7e565b5b600061400284828501613d1e565b91505092915050565b60008060006060848603121561402457614023614e7e565b5b600061403286828701613d33565b935050602061404386828701613d33565b925050604061405486828701613d33565b9150509250925092565b600061406a8383614085565b60208301905092915050565b61407f81614c6f565b82525050565b61408e81614bcc565b82525050565b61409d81614bcc565b82525050565b60006140ae82614a68565b6140b88185614a8b565b93506140c383614a58565b8060005b838110156140f45781516140db888261405e565b97506140e683614a7e565b9250506001810190506140c7565b5085935050505092915050565b61410a81614bf0565b82525050565b61411981614c81565b82525050565b600061412a82614a73565b6141348185614a9c565b9350614144818560208601614cb7565b61414d81614e83565b840191505092915050565b6000614165602383614a9c565b915061417082614ea1565b604082019050919050565b6000614188601783614a9c565b915061419382614ef0565b602082019050919050565b60006141ab601c83614a9c565b91506141b682614f19565b602082019050919050565b60006141ce602683614a9c565b91506141d982614f42565b604082019050919050565b60006141f1602283614a9c565b91506141fc82614f91565b604082019050919050565b6000614214602f83614a9c565b915061421f82614fe0565b604082019050919050565b6000614237601b83614a9c565b91506142428261502f565b602082019050919050565b600061425a601b83614a9c565b915061426582615058565b602082019050919050565b600061427d602683614a9c565b915061428882615081565b604082019050919050565b60006142a0603083614a9c565b91506142ab826150d0565b604082019050919050565b60006142c3602283614a9c565b91506142ce8261511f565b604082019050919050565b60006142e6602883614a9c565b91506142f18261516e565b604082019050919050565b6000614309601283614a9c565b9150614314826151bd565b602082019050919050565b600061432c601f83614a9c565b9150614337826151e6565b602082019050919050565b600061434f602883614a9c565b915061435a8261520f565b604082019050919050565b6000614372602083614a9c565b915061437d8261525e565b602082019050919050565b6000614395602583614a9c565b91506143a082615287565b604082019050919050565b60006143b8601283614a9c565b91506143c3826152d6565b602082019050919050565b60006143db602483614a9c565b91506143e6826152ff565b604082019050919050565b60006143fe601d83614a9c565b91506144098261534e565b602082019050919050565b6000614421601c83614a9c565b915061442c82615377565b602082019050919050565b6000614444602583614a9c565b915061444f826153a0565b604082019050919050565b6000614467602583614a9c565b9150614472826153ef565b604082019050919050565b600061448a602383614a9c565b91506144958261543e565b604082019050919050565b6040820160008201516144b66000850182614516565b5060208201516144c96020850182614516565b50505050565b6040820160008083015490506144e481614d1c565b6144f16000860182614516565b506001830154905061450281614d1c565b61450f6020860182614516565b5050505050565b61451f81614c48565b82525050565b61452e81614c48565b82525050565b61453d81614c62565b82525050565b60006020820190506145586000830184614094565b92915050565b60006020820190506145736000830184614076565b92915050565b600060408201905061458e6000830185614094565b61459b6020830184614094565b9392505050565b60006040820190506145b76000830185614094565b6145c46020830184614110565b9392505050565b60006040820190506145e06000830185614094565b6145ed6020830184614525565b9392505050565b600060c0820190506146096000830189614094565b6146166020830188614525565b6146236040830187614110565b6146306060830186614110565b61463d6080830185614094565b61464a60a0830184614525565b979650505050505050565b600060208201905061466a6000830184614101565b92915050565b6000602082019050818103600083015261468a818461411f565b905092915050565b600060208201905081810360008301526146ab81614158565b9050919050565b600060208201905081810360008301526146cb8161417b565b9050919050565b600060208201905081810360008301526146eb8161419e565b9050919050565b6000602082019050818103600083015261470b816141c1565b9050919050565b6000602082019050818103600083015261472b816141e4565b9050919050565b6000602082019050818103600083015261474b81614207565b9050919050565b6000602082019050818103600083015261476b8161422a565b9050919050565b6000602082019050818103600083015261478b8161424d565b9050919050565b600060208201905081810360008301526147ab81614270565b9050919050565b600060208201905081810360008301526147cb81614293565b9050919050565b600060208201905081810360008301526147eb816142b6565b9050919050565b6000602082019050818103600083015261480b816142d9565b9050919050565b6000602082019050818103600083015261482b816142fc565b9050919050565b6000602082019050818103600083015261484b8161431f565b9050919050565b6000602082019050818103600083015261486b81614342565b9050919050565b6000602082019050818103600083015261488b81614365565b9050919050565b600060208201905081810360008301526148ab81614388565b9050919050565b600060208201905081810360008301526148cb816143ab565b9050919050565b600060208201905081810360008301526148eb816143ce565b9050919050565b6000602082019050818103600083015261490b816143f1565b9050919050565b6000602082019050818103600083015261492b81614414565b9050919050565b6000602082019050818103600083015261494b81614437565b9050919050565b6000602082019050818103600083015261496b8161445a565b9050919050565b6000602082019050818103600083015261498b8161447d565b9050919050565b60006040820190506149a760008301846144a0565b92915050565b60006040820190506149c260008301846144cf565b92915050565b60006020820190506149dd6000830184614525565b92915050565b600060a0820190506149f86000830188614525565b614a056020830187614110565b8181036040830152614a1781866140a3565b9050614a266060830185614094565b614a336080830184614525565b9695505050505050565b6000602082019050614a526000830184614534565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614ab882614c48565b9150614ac383614c48565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614af857614af7614d7f565b5b828201905092915050565b6000614b0e82614c48565b9150614b1983614c48565b925082614b2957614b28614dae565b5b828204905092915050565b6000614b3f82614c48565b9150614b4a83614c48565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b8357614b82614d7f565b5b828202905092915050565b6000614b9982614c48565b9150614ba483614c48565b925082821015614bb757614bb6614d7f565b5b828203905092915050565b6000819050919050565b6000614bd782614c28565b9050919050565b6000614be982614c28565b9050919050565b60008115159050919050565b6000614c0782614bcc565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000614c7a82614c93565b9050919050565b6000614c8c82614c48565b9050919050565b6000614c9e82614ca5565b9050919050565b6000614cb082614c28565b9050919050565b60005b83811015614cd5578082015181840152602081019050614cba565b83811115614ce4576000848401525b50505050565b60006002820490506001821680614d0257607f821691505b60208210811415614d1657614d15614ddd565b5b50919050565b6000614d2f614d2a83614e94565b614bc2565b9050919050565b6000614d4182614c48565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d7457614d73614d7f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160001c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f53504c494e4b3a204d6178207478206578636565646564000000000000000000600082015250565b7f53504c494e4b3a204d617820686f6c64696e6720657863656564656400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f53504c494e4b3a2042757920546178206d757374206265206c6573732074686160008201527f6e206f7220657161756c20746f20380000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f53504c494e4b3a2054726164696e67206973206e6f74204f70656e0000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53504c494e4b3a2053656c6c20546178206d757374206265206c65737320746860008201527f616e206f7220657161756c20746f203800000000000000000000000000000000602082015250565b7f53504c494e4b3a204375727272656e746c79207461676765642061732061206260008201527f6f74000000000000000000000000000000000000000000000000000000000000602082015250565b7f57455448205061697220646f6573206e6f7420657869737420666f722074686160008201527f7420726f75746572000000000000000000000000000000000000000000000000602082015250565b7f44455820646f6573206e6f742065786973740000000000000000000000000000600082015250565b7f416464206c6971756964697479206265666f726520646f696e67207468697300600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f44455820616c7265616479206578697374730000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5468652070616972206d75737420626520612074617865642070616972000000600082015250565b7f53504c494e4b3a2053776170206d75737420626520656e61626c656400000000600082015250565b7f4e65772070616972206d7573742068617665206d6f726520574554482052657360008201527f6572766573000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f53504c494e4b3a2041646472657373206d7573742062652077686974656c697360008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b61549681614bcc565b81146154a157600080fd5b50565b6154ad81614bde565b81146154b857600080fd5b50565b6154c481614bf0565b81146154cf57600080fd5b50565b6154db81614bfc565b81146154e657600080fd5b50565b6154f281614c0e565b81146154fd57600080fd5b50565b61550981614c48565b811461551457600080fd5b50565b61552081614c52565b811461552b57600080fd5b5056fea264697066735822122055bffaeef6e3fe56a59a574bef0f60c86930b47932d0d06fbda323aec81ec7ed64736f6c6343000807003300000000000000000000000043653c2dcfe5bb50dfede340c6c1ddb3cbe4295a

Deployed Bytecode

0x6080604052600436106102295760003560e01c80638c8f3f8211610123578063b11560c5116100ab578063dc1052e21161006f578063dc1052e2146107d4578063dd62ed3e146107fd578063e8078d941461083a578063f2fde38b14610851578063ffb54a991461087a57610230565b8063b11560c514610729578063b515566a14610752578063c3c8cd801461077b578063c9567bf914610792578063d9443923146107a957610230565b806395d89b41116100f257806395d89b4114610630578063a1883d261461065b578063a457c2d714610684578063a9059cbb146106c1578063a985ceef146106fe57610230565b80638c8f3f821461058a5780638cd09d50146105b35780638da5cb5b146105dc57806391c0035f1461060757610230565b80635391bc49116101b15780636fc3eaec116101755780636fc3eaec146104b957806370a08231146104d05780637113e8551461050d578063715018a61461054a578063740d73f31461056157610230565b80635391bc49146103e85780635932ead1146104115780635d9644c41461043a5780636ddd1713146104655780636df2dcd61461049057610230565b806323b872dd116101f857806323b872dd146102f1578063273123b71461032e578063313ce56714610357578063395093511461038257806341273657146103bf57610230565b806302b3955a1461023557806306fdde031461025e578063095ea7b31461028957806318160ddd146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061025c60048036038101906102579190613f04565b6108a5565b005b34801561026a57600080fd5b5061027361093e565b6040516102809190614670565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190613e77565b6109d0565b6040516102bd9190614655565b60405180910390f35b3480156102d257600080fd5b506102db6109ee565b6040516102e891906149c8565b60405180910390f35b3480156102fd57600080fd5b5061031860048036038101906103139190613e24565b6109f8565b6040516103259190614655565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190613d5d565b610af0565b005b34801561036357600080fd5b5061036c610bc7565b6040516103799190614a3d565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190613e77565b610bd0565b6040516103b69190614655565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e19190613f5e565b610c7c565b005b3480156103f457600080fd5b5061040f600480360381019061040a9190613eb7565b6111c4565b005b34801561041d57600080fd5b5061043860048036038101906104339190613f04565b6112e5565b005b34801561044657600080fd5b5061044f61137e565b60405161045c9190614992565b60405180910390f35b34801561047157600080fd5b5061047a6113ac565b6040516104879190614655565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190613de4565b6113bf565b005b3480156104c557600080fd5b506104ce61169b565b005b3480156104dc57600080fd5b506104f760048036038101906104f29190613d5d565b611722565b60405161050491906149c8565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613d5d565b61176b565b6040516105419190614655565b60405180910390f35b34801561055657600080fd5b5061055f611803565b005b34801561056d57600080fd5b5061058860048036038101906105839190613eb7565b61188b565b005b34801561059657600080fd5b506105b160048036038101906105ac9190613d5d565b6119ac565b005b3480156105bf57600080fd5b506105da60048036038101906105d59190613fde565b611c72565b005b3480156105e857600080fd5b506105f1611da0565b6040516105fe9190614543565b60405180910390f35b34801561061357600080fd5b5061062e60048036038101906106299190613eb7565b611dc9565b005b34801561063c57600080fd5b50610645611eea565b6040516106529190614670565b60405180910390f35b34801561066757600080fd5b50610682600480360381019061067d9190613db7565b611f7c565b005b34801561069057600080fd5b506106ab60048036038101906106a69190613e77565b612073565b6040516106b89190614655565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190613e77565b61215e565b6040516106f59190614655565b60405180910390f35b34801561070a57600080fd5b5061071361217c565b6040516107209190614655565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b9190613eb7565b61218f565b005b34801561075e57600080fd5b5061077960048036038101906107749190613eb7565b6122b0565b005b34801561078757600080fd5b506107906123d1565b005b34801561079e57600080fd5b506107a7612460565b005b3480156107b557600080fd5b506107be612548565b6040516107cb9190614655565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f69190613fde565b61255b565b005b34801561080957600080fd5b50610824600480360381019061081f9190613de4565b612689565b60405161083191906149c8565b60405180910390f35b34801561084657600080fd5b5061084f612710565b005b34801561085d57600080fd5b5061087860048036038101906108739190613d5d565b612a6a565b005b34801561088657600080fd5b5061088f612b62565b60405161089c9190614655565b60405180910390f35b6108ad612b75565b73ffffffffffffffffffffffffffffffffffffffff166108cb611da0565b73ffffffffffffffffffffffffffffffffffffffff1614610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091890614872565b60405180910390fd5b80600f60186101000a81548160ff02191690831515021790555050565b60606004805461094d90614cea565b80601f016020809104026020016040519081016040528092919081815260200182805461097990614cea565b80156109c65780601f1061099b576101008083540402835291602001916109c6565b820191906000526020600020905b8154815290600101906020018083116109a957829003601f168201915b5050505050905090565b60006109e46109dd612b75565b8484612b7d565b6001905092915050565b6000600354905090565b6000610a05848484612d48565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a50612b75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac790614852565b60405180910390fd5b610ae485610adc612b75565b858403612b7d565b60019150509392505050565b610af8612b75565b73ffffffffffffffffffffffffffffffffffffffff16610b16611da0565b73ffffffffffffffffffffffffffffffffffffffff1614610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6390614872565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b6000610c72610bdd612b75565b848460026000610beb612b75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c6d9190614aad565b612b7d565b6001905092915050565b610c84612b75565b73ffffffffffffffffffffffffffffffffffffffff16610ca2611da0565b73ffffffffffffffffffffffffffffffffffffffff1614610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef90614872565b60405180910390fd5b600f60159054906101000a900460ff16610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e90614832565b60405180910390fd5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190613d8a565b905060008273ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190613d8a565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b8152600401610ea5929190614579565b60206040518083038186803b158015610ebd57600080fd5b505afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef59190613d8a565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e906147f2565b60405180910390fd5b610f708161176b565b610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa6906148f2565b60405180910390fd5b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561101957600080fd5b505afa15801561102d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190613f8b565b50506dffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e59190613f8b565b50506dffffffffffffffffffffffffffff16905081811161113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113290614932565b60405180910390fd5b84600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6111cc612b75565b73ffffffffffffffffffffffffffffffffffffffff166111ea611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123790614872565b60405180910390fd5b60005b828290508110156112e05760016008600085858581811061126757611266614e0c565b5b905060200201602081019061127c9190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112d890614d36565b915050611243565b505050565b6112ed612b75565b73ffffffffffffffffffffffffffffffffffffffff1661130b611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135890614872565b60405180910390fd5b80600f60196101000a81548160ff02191690831515021790555050565b611386613c1b565b600b60405180604001604052908160008201548152602001600182015481525050905090565b600f60179054906101000a900460ff1681565b6113c7612b75565b73ffffffffffffffffffffffffffffffffffffffff166113e5611da0565b73ffffffffffffffffffffffffffffffffffffffff161461143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290614872565b60405180910390fd5b6114448261176b565b15611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b906148b2565b60405180910390fd5b600061148f836132d1565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061153a30837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b7d565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115959291906145cb565b602060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e79190613f31565b508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116439291906145cb565b602060405180830381600087803b15801561165d57600080fd5b505af1158015611671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116959190613f31565b50505050565b6116a3612b75565b73ffffffffffffffffffffffffffffffffffffffff166116c1611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e90614872565b60405180910390fd5b61172047613358565b565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61180b612b75565b73ffffffffffffffffffffffffffffffffffffffff16611829611da0565b73ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690614872565b60405180910390fd5b61188960006133c4565b565b611893612b75565b73ffffffffffffffffffffffffffffffffffffffff166118b1611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90614872565b60405180910390fd5b60005b828290508110156119a75760016007600085858581811061192e5761192d614e0c565b5b90506020020160208101906119439190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061199f90614d36565b91505061190a565b505050565b6119b4612b75565b73ffffffffffffffffffffffffffffffffffffffff166119d2611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1f90614872565b60405180910390fd5b611a318161176b565b611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790614812565b60405180910390fd5b6000611a7b826132d1565b90506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611b4f30826000612b7d565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b38260006040518363ffffffff1660e01b8152600401611b8b9291906145a2565b602060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190613f31565b508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38260006040518363ffffffff1660e01b8152600401611c1a9291906145a2565b602060405180830381600087803b158015611c3457600080fd5b505af1158015611c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6c9190613f31565b50505050565b611c7a612b75565b73ffffffffffffffffffffffffffffffffffffffff16611c98611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590614872565b60405180910390fd5b6008811115611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d29906147b2565b60405180910390fd5b6040518060400160405280600b60000154815260200182815250600b60008201518160000155602082015181600101559050507f209f13ba9150701e2536f4ca425451e5cda3ddd67be5165e88d332b528d3b58d600b604051611d9591906149ad565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dd1612b75565b73ffffffffffffffffffffffffffffffffffffffff16611def611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3c90614872565b60405180910390fd5b60005b82829050811015611ee557600060086000858585818110611e6c57611e6b614e0c565b5b9050602002016020810190611e819190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611edd90614d36565b915050611e48565b505050565b606060058054611ef990614cea565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2590614cea565b8015611f725780601f10611f4757610100808354040283529160200191611f72565b820191906000526020600020905b815481529060010190602001808311611f5557829003601f168201915b5050505050905090565b611f84612b75565b73ffffffffffffffffffffffffffffffffffffffff16611fa2611da0565b73ffffffffffffffffffffffffffffffffffffffff1614611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90614872565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9e905b198adfa70dbc3c719ad6b91c9cea8dfb106a2e2121526342562413acb881604051612068919061455e565b60405180910390a150565b60008060026000612082612b75565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561213f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213690614952565b60405180910390fd5b61215361214a612b75565b85858403612b7d565b600191505092915050565b600061217261216b612b75565b8484612d48565b6001905092915050565b600f60199054906101000a900460ff1681565b612197612b75565b73ffffffffffffffffffffffffffffffffffffffff166121b5611da0565b73ffffffffffffffffffffffffffffffffffffffff161461220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290614872565b60405180910390fd5b60005b828290508110156122ab5760006007600085858581811061223257612231614e0c565b5b90506020020160208101906122479190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806122a390614d36565b91505061220e565b505050565b6122b8612b75565b73ffffffffffffffffffffffffffffffffffffffff166122d6611da0565b73ffffffffffffffffffffffffffffffffffffffff161461232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232390614872565b60405180910390fd5b60005b828290508110156123cc5760016009600085858581811061235357612352614e0c565b5b90506020020160208101906123689190613d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806123c490614d36565b91505061232f565b505050565b6123d9612b75565b73ffffffffffffffffffffffffffffffffffffffff166123f7611da0565b73ffffffffffffffffffffffffffffffffffffffff161461244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490614872565b60405180910390fd5b61245e61245930611722565b613488565b565b612468612b75565b73ffffffffffffffffffffffffffffffffffffffff16612486611da0565b73ffffffffffffffffffffffffffffffffffffffff16146124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d390614872565b60405180910390fd5b600f60159054906101000a900460ff166124f557600080fd5b6001600f60146101000a81548160ff0219169083151502179055506001600f60196101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff021916908315150217905550565b600f60159054906101000a900460ff1681565b612563612b75565b73ffffffffffffffffffffffffffffffffffffffff16612581611da0565b73ffffffffffffffffffffffffffffffffffffffff16146125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90614872565b60405180910390fd5b600881111561261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614732565b60405180910390fd5b6040518060400160405280828152602001600b60010154815250600b60008201518160000155602082015181600101559050507f209f13ba9150701e2536f4ca425451e5cda3ddd67be5165e88d332b528d3b58d600b60405161267e91906149ad565b60405180910390a150565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612718612b75565b73ffffffffffffffffffffffffffffffffffffffff16612736611da0565b73ffffffffffffffffffffffffffffffffffffffff161461278c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278390614872565b60405180910390fd5b6001600f60166101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561284757600080fd5b505afa15801561285b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287f9190613d8a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128e157600080fd5b505afa1580156128f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129199190613d8a565b6040518363ffffffff1660e01b8152600401612936929190614579565b602060405180830381600087803b15801561295057600080fd5b505af1158015612964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129889190613d8a565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506129f4600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826113bf565b612a31600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a2330611722565b47612a2c611da0565b6134ef565b6001600f60156101000a81548160ff021916908315150217905550506000600f60166101000a81548160ff021916908315150217905550565b612a72612b75565b73ffffffffffffffffffffffffffffffffffffffff16612a90611da0565b73ffffffffffffffffffffffffffffffffffffffff1614612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add90614872565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4d906146f2565b60405180910390fd5b612b5f816133c4565b50565b600f60149054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be4906148d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5490614712565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d3b91906149c8565b60405180910390a3505050565b6000612d52611da0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612dc05750612d90611da0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156132a557600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e695750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9f906147d2565b60405180910390fd5b600f60159054906101000a900460ff16156132a457600f60149054906101000a900460ff16612f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0390614772565b60405180910390fd5b600f60189054906101000a900460ff1615612fae57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa490614972565b60405180910390fd5b5b600f60179054906101000a900460ff168015612fd75750600f60169054906101000a900460ff16155b1561325357612fe58461176b565b8015612ff75750612ff58361176b565b155b156131c35760006130198361300b86611722565b61358f90919063ffffffff16565b9050613024836135ed565b613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305a906146b2565b60405180910390fd5b61306c81613609565b6130ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a2906146d2565b60405180910390fd5b600f60199054906101000a900460ff161561315c5742600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061310b57600080fd5b601e426131189190614aad565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131b857600b600001546131bb565b60005b91505061324e565b6131cc8361176b565b1561324d576131e26131dd30611722565b613488565b6131eb47613358565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661324757600b6001015461324a565b60005b90505b5b6132a3565b600f60179054906101000a900460ff166132a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329990614912565b60405180910390fd5b5b5b5b60006132b2858484613625565b90506132ca858583866132c59190614b8e565b613693565b5050505050565b60008173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561331957600080fd5b505afa15801561332d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133519190613d8a565b9050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156133c0573d6000803e3d6000fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600f60166101000a81548160ff0219169083151502179055506134d0600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168230613917565b506000600f60166101000a81548160ff02191690831515021790555050565b8373ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b8152600401613534969594939291906145f4565b6060604051808303818588803b15801561354d57600080fd5b505af1158015613561573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613586919061400b565b50505050505050565b600080828461359e9190614aad565b9050838110156135e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135da90614752565b60405180910390fd5b8091505092915050565b60008069021e19e0c9bab2400000905080831115915050919050565b60008069032d26d12e980b600000905080831115915050919050565b600080821415613638576000905061368c565b60006136448484613b3f565b90506136508582613b61565b7fd10ad9510a39fc617bd79623c15fc5ae760f2948c7063969a2b4c4b434332a758160405161367f91906149c8565b60405180910390a1809150505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136fa90614892565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376a90614692565b60405180910390fd5b61377e838383613c11565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fc90614792565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461389a9190614aad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138fe91906149c8565b60405180910390a3613911848484613c16565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163190506000600267ffffffffffffffff81111561395157613950614e3b565b5b60405190808252806020026020018201604052801561397f5781602001602082028036833780820191505090505b509050308160008151811061399757613996614e0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a1757600080fd5b505afa158015613a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4f9190613d8a565b81600181518110613a6357613a62614e0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508573ffffffffffffffffffffffffffffffffffffffff1663791ac9478660008488426040518663ffffffff1660e01b8152600401613adf9594939291906149e3565b600060405180830381600087803b158015613af957600080fd5b505af1158015613b0d573d6000803e3d6000fd5b50505050818473ffffffffffffffffffffffffffffffffffffffff1631613b349190614b8e565b925050509392505050565b600060648284613b4f9190614b34565b613b599190614b03565b905092915050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613bb09190614b8e565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c069190614aad565b925050819055505050565b505050565b505050565b604051806040016040528060008152602001600081525090565b600081359050613c448161548d565b92915050565b600081519050613c598161548d565b92915050565b600081359050613c6e816154a4565b92915050565b60008083601f840112613c8a57613c89614e6f565b5b8235905067ffffffffffffffff811115613ca757613ca6614e6a565b5b602083019150836020820283011115613cc357613cc2614e74565b5b9250929050565b600081359050613cd9816154bb565b92915050565b600081519050613cee816154bb565b92915050565b600081359050613d03816154d2565b92915050565b600081519050613d18816154e9565b92915050565b600081359050613d2d81615500565b92915050565b600081519050613d4281615500565b92915050565b600081519050613d5781615517565b92915050565b600060208284031215613d7357613d72614e7e565b5b6000613d8184828501613c35565b91505092915050565b600060208284031215613da057613d9f614e7e565b5b6000613dae84828501613c4a565b91505092915050565b600060208284031215613dcd57613dcc614e7e565b5b6000613ddb84828501613c5f565b91505092915050565b60008060408385031215613dfb57613dfa614e7e565b5b6000613e0985828601613c35565b9250506020613e1a85828601613c35565b9150509250929050565b600080600060608486031215613e3d57613e3c614e7e565b5b6000613e4b86828701613c35565b9350506020613e5c86828701613c35565b9250506040613e6d86828701613d1e565b9150509250925092565b60008060408385031215613e8e57613e8d614e7e565b5b6000613e9c85828601613c35565b9250506020613ead85828601613d1e565b9150509250929050565b60008060208385031215613ece57613ecd614e7e565b5b600083013567ffffffffffffffff811115613eec57613eeb614e79565b5b613ef885828601613c74565b92509250509250929050565b600060208284031215613f1a57613f19614e7e565b5b6000613f2884828501613cca565b91505092915050565b600060208284031215613f4757613f46614e7e565b5b6000613f5584828501613cdf565b91505092915050565b600060208284031215613f7457613f73614e7e565b5b6000613f8284828501613cf4565b91505092915050565b600080600060608486031215613fa457613fa3614e7e565b5b6000613fb286828701613d09565b9350506020613fc386828701613d09565b9250506040613fd486828701613d48565b9150509250925092565b600060208284031215613ff457613ff3614e7e565b5b600061400284828501613d1e565b91505092915050565b60008060006060848603121561402457614023614e7e565b5b600061403286828701613d33565b935050602061404386828701613d33565b925050604061405486828701613d33565b9150509250925092565b600061406a8383614085565b60208301905092915050565b61407f81614c6f565b82525050565b61408e81614bcc565b82525050565b61409d81614bcc565b82525050565b60006140ae82614a68565b6140b88185614a8b565b93506140c383614a58565b8060005b838110156140f45781516140db888261405e565b97506140e683614a7e565b9250506001810190506140c7565b5085935050505092915050565b61410a81614bf0565b82525050565b61411981614c81565b82525050565b600061412a82614a73565b6141348185614a9c565b9350614144818560208601614cb7565b61414d81614e83565b840191505092915050565b6000614165602383614a9c565b915061417082614ea1565b604082019050919050565b6000614188601783614a9c565b915061419382614ef0565b602082019050919050565b60006141ab601c83614a9c565b91506141b682614f19565b602082019050919050565b60006141ce602683614a9c565b91506141d982614f42565b604082019050919050565b60006141f1602283614a9c565b91506141fc82614f91565b604082019050919050565b6000614214602f83614a9c565b915061421f82614fe0565b604082019050919050565b6000614237601b83614a9c565b91506142428261502f565b602082019050919050565b600061425a601b83614a9c565b915061426582615058565b602082019050919050565b600061427d602683614a9c565b915061428882615081565b604082019050919050565b60006142a0603083614a9c565b91506142ab826150d0565b604082019050919050565b60006142c3602283614a9c565b91506142ce8261511f565b604082019050919050565b60006142e6602883614a9c565b91506142f18261516e565b604082019050919050565b6000614309601283614a9c565b9150614314826151bd565b602082019050919050565b600061432c601f83614a9c565b9150614337826151e6565b602082019050919050565b600061434f602883614a9c565b915061435a8261520f565b604082019050919050565b6000614372602083614a9c565b915061437d8261525e565b602082019050919050565b6000614395602583614a9c565b91506143a082615287565b604082019050919050565b60006143b8601283614a9c565b91506143c3826152d6565b602082019050919050565b60006143db602483614a9c565b91506143e6826152ff565b604082019050919050565b60006143fe601d83614a9c565b91506144098261534e565b602082019050919050565b6000614421601c83614a9c565b915061442c82615377565b602082019050919050565b6000614444602583614a9c565b915061444f826153a0565b604082019050919050565b6000614467602583614a9c565b9150614472826153ef565b604082019050919050565b600061448a602383614a9c565b91506144958261543e565b604082019050919050565b6040820160008201516144b66000850182614516565b5060208201516144c96020850182614516565b50505050565b6040820160008083015490506144e481614d1c565b6144f16000860182614516565b506001830154905061450281614d1c565b61450f6020860182614516565b5050505050565b61451f81614c48565b82525050565b61452e81614c48565b82525050565b61453d81614c62565b82525050565b60006020820190506145586000830184614094565b92915050565b60006020820190506145736000830184614076565b92915050565b600060408201905061458e6000830185614094565b61459b6020830184614094565b9392505050565b60006040820190506145b76000830185614094565b6145c46020830184614110565b9392505050565b60006040820190506145e06000830185614094565b6145ed6020830184614525565b9392505050565b600060c0820190506146096000830189614094565b6146166020830188614525565b6146236040830187614110565b6146306060830186614110565b61463d6080830185614094565b61464a60a0830184614525565b979650505050505050565b600060208201905061466a6000830184614101565b92915050565b6000602082019050818103600083015261468a818461411f565b905092915050565b600060208201905081810360008301526146ab81614158565b9050919050565b600060208201905081810360008301526146cb8161417b565b9050919050565b600060208201905081810360008301526146eb8161419e565b9050919050565b6000602082019050818103600083015261470b816141c1565b9050919050565b6000602082019050818103600083015261472b816141e4565b9050919050565b6000602082019050818103600083015261474b81614207565b9050919050565b6000602082019050818103600083015261476b8161422a565b9050919050565b6000602082019050818103600083015261478b8161424d565b9050919050565b600060208201905081810360008301526147ab81614270565b9050919050565b600060208201905081810360008301526147cb81614293565b9050919050565b600060208201905081810360008301526147eb816142b6565b9050919050565b6000602082019050818103600083015261480b816142d9565b9050919050565b6000602082019050818103600083015261482b816142fc565b9050919050565b6000602082019050818103600083015261484b8161431f565b9050919050565b6000602082019050818103600083015261486b81614342565b9050919050565b6000602082019050818103600083015261488b81614365565b9050919050565b600060208201905081810360008301526148ab81614388565b9050919050565b600060208201905081810360008301526148cb816143ab565b9050919050565b600060208201905081810360008301526148eb816143ce565b9050919050565b6000602082019050818103600083015261490b816143f1565b9050919050565b6000602082019050818103600083015261492b81614414565b9050919050565b6000602082019050818103600083015261494b81614437565b9050919050565b6000602082019050818103600083015261496b8161445a565b9050919050565b6000602082019050818103600083015261498b8161447d565b9050919050565b60006040820190506149a760008301846144a0565b92915050565b60006040820190506149c260008301846144cf565b92915050565b60006020820190506149dd6000830184614525565b92915050565b600060a0820190506149f86000830188614525565b614a056020830187614110565b8181036040830152614a1781866140a3565b9050614a266060830185614094565b614a336080830184614525565b9695505050505050565b6000602082019050614a526000830184614534565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614ab882614c48565b9150614ac383614c48565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614af857614af7614d7f565b5b828201905092915050565b6000614b0e82614c48565b9150614b1983614c48565b925082614b2957614b28614dae565b5b828204905092915050565b6000614b3f82614c48565b9150614b4a83614c48565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b8357614b82614d7f565b5b828202905092915050565b6000614b9982614c48565b9150614ba483614c48565b925082821015614bb757614bb6614d7f565b5b828203905092915050565b6000819050919050565b6000614bd782614c28565b9050919050565b6000614be982614c28565b9050919050565b60008115159050919050565b6000614c0782614bcc565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000614c7a82614c93565b9050919050565b6000614c8c82614c48565b9050919050565b6000614c9e82614ca5565b9050919050565b6000614cb082614c28565b9050919050565b60005b83811015614cd5578082015181840152602081019050614cba565b83811115614ce4576000848401525b50505050565b60006002820490506001821680614d0257607f821691505b60208210811415614d1657614d15614ddd565b5b50919050565b6000614d2f614d2a83614e94565b614bc2565b9050919050565b6000614d4182614c48565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d7457614d73614d7f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160001c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f53504c494e4b3a204d6178207478206578636565646564000000000000000000600082015250565b7f53504c494e4b3a204d617820686f6c64696e6720657863656564656400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f53504c494e4b3a2042757920546178206d757374206265206c6573732074686160008201527f6e206f7220657161756c20746f20380000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f53504c494e4b3a2054726164696e67206973206e6f74204f70656e0000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f53504c494e4b3a2053656c6c20546178206d757374206265206c65737320746860008201527f616e206f7220657161756c20746f203800000000000000000000000000000000602082015250565b7f53504c494e4b3a204375727272656e746c79207461676765642061732061206260008201527f6f74000000000000000000000000000000000000000000000000000000000000602082015250565b7f57455448205061697220646f6573206e6f7420657869737420666f722074686160008201527f7420726f75746572000000000000000000000000000000000000000000000000602082015250565b7f44455820646f6573206e6f742065786973740000000000000000000000000000600082015250565b7f416464206c6971756964697479206265666f726520646f696e67207468697300600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f44455820616c7265616479206578697374730000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5468652070616972206d75737420626520612074617865642070616972000000600082015250565b7f53504c494e4b3a2053776170206d75737420626520656e61626c656400000000600082015250565b7f4e65772070616972206d7573742068617665206d6f726520574554482052657360008201527f6572766573000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f53504c494e4b3a2041646472657373206d7573742062652077686974656c697360008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b61549681614bcc565b81146154a157600080fd5b50565b6154ad81614bde565b81146154b857600080fd5b50565b6154c481614bf0565b81146154cf57600080fd5b50565b6154db81614bfc565b81146154e657600080fd5b50565b6154f281614c0e565b81146154fd57600080fd5b50565b61550981614c48565b811461551457600080fd5b50565b61552081614c52565b811461552b57600080fd5b5056fea264697066735822122055bffaeef6e3fe56a59a574bef0f60c86930b47932d0d06fbda323aec81ec7ed64736f6c63430008070033

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

00000000000000000000000043653c2dcfe5bb50dfede340c6c1ddb3cbe4295a

-----Decoded View---------------
Arg [0] : addr1 (address): 0x43653c2dCFE5Bb50Dfede340c6c1dDb3CbE4295A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000043653c2dcfe5bb50dfede340c6c1ddb3cbe4295a


Deployed Bytecode Sourcemap

20497:9353:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25003:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11610:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12651:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11925:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12867:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26711:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21720:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13402:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28208:880;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27311:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29560:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29671:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21354:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25116:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28105:95;;;;;;;;;;;;;:::i;:::-;;12039:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21831:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1803:96;;;;;;;;;;;;;:::i;:::-;;26807:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25486:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29326:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1580:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27561:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11716:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27820:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13705:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12222:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21419:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27061:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26533:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27995:102;;;;;;;;;;;;;:::i;:::-;;24808:183;;;;;;;;;;;;;:::i;:::-;;21295:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29096:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12444:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25880:645;;;;;;;;;;;;;:::i;:::-;;1907:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21265:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25003:105;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25095:5:::1;25077:15;;:23;;;;;;;;;;;;;;;;;;25003:105:::0;:::o;11610:100::-;11664:13;11697:5;11690:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11610:100;:::o;12651:210::-;12770:4;12792:39;12801:12;:10;:12::i;:::-;12815:7;12824:6;12792:8;:39::i;:::-;12849:4;12842:11;;12651:210;;;;:::o;11925:108::-;11986:7;12013:12;;12006:19;;11925:108;:::o;12867:529::-;13007:4;13024:36;13034:6;13042:9;13053:6;13024:9;:36::i;:::-;13073:24;13100:11;:19;13112:6;13100:19;;;;;;;;;;;;;;;:33;13120:12;:10;:12::i;:::-;13100:33;;;;;;;;;;;;;;;;13073:60;;13186:6;13166:16;:26;;13144:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;13296:57;13305:6;13313:12;:10;:12::i;:::-;13346:6;13327:16;:25;13296:8;:57::i;:::-;13384:4;13377:11;;;12867:529;;;;;:::o;26711:88::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26786:5:::1;26771:4;:12;26776:6;26771:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;26711:88:::0;:::o;21720:99::-;21778:5;20840:1;21796:15;;21720:99;:::o;13402:297::-;13517:4;13539:130;13562:12;:10;:12::i;:::-;13589:7;13648:10;13611:11;:25;13623:12;:10;:12::i;:::-;13611:25;;;;;;;;;;;;;;;:34;13637:7;13611:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13539:8;:130::i;:::-;13687:4;13680:11;;13402:297;;;;:::o;28208:880::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28297:14:::1;;;;;;;;;;;28289:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28360:12;28375:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28360:37;;28408:15;28444:9;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28426:46;;;28495:4;28515;28426:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28408:122;;28582:1;28563:21;;:7;:21;;;;28541:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;28671:18;28681:7;28671:9;:18::i;:::-;28663:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;28737:19;28779:13;;;;;;;;;;;28764:41;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28736:71;;;;;;28819:19;28861:7;28846:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28818:65;;;;;;28930:11;28916;:25;28894:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;29037:9;29019:15;;:27;;;;;;;;;;;;;;;;;;29073:7;29057:13;;:23;;;;;;;;;;;;;;;;;;28278:810;;;;28208:880:::0;:::o;27311:238::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27442:9:::1;27437:105;27457:9;;:16;;27453:1;:20;27437:105;;;27526:4;27495:14;:28;27510:9;;27520:1;27510:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27495:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;27475:3;;;;;:::i;:::-;;;;27437:105;;;;27311:238:::0;;:::o;29560:103::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29650:5:::1;29632:15;;:23;;;;;;;;;;;;;;;;;;29560:103:::0;:::o;29671:97::-;29726:10;;:::i;:::-;29756:4;29749:11;;;;;;;;;;;;;;;;;;;;;;;;;;;29671:97;:::o;21354:23::-;;;;;;;;;;;;;:::o;25116:362::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25207:15:::1;25217:4;25207:9;:15::i;:::-;25206:16;25198:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;25256:16;25275:20;25290:4;25275:14;:20::i;:::-;25256:39;;25325:6;25306:10;:16;25317:4;25306:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;25342:36;25359:4;25366:6;20613:17;25342:8;:36::i;:::-;25396:8;25389:24;;;25414:6;20613:17;25389:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25444:4;25437:20;;;25458:6;20613:17;25437:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25187:291;25116:362:::0;;:::o;28105:95::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28157:35:::1;28170:21;28157:12;:35::i;:::-;28105:95::o:0;12039:177::-;12158:7;12190:9;:18;12200:7;12190:18;;;;;;;;;;;;;;;;12183:25;;12039:177;;;:::o;21831:183::-;21947:4;22004:1;21976:30;;:10;:16;21987:4;21976:16;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;21969:37;;21831:183;;;:::o;1803:96::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1870:21:::1;1888:1;1870:9;:21::i;:::-;1803:96::o:0;26807:236::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26936:9:::1;26931:105;26951:9;;:16;;26947:1;:20;26931:105;;;27020:4;26989:14;:28;27004:9;;27014:1;27004:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;26989:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;26969:3;;;;;:::i;:::-;;;;26931:105;;;;26807:236:::0;;:::o;25486:386::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25565:15:::1;25575:4;25565:9;:15::i;:::-;25557:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;25614:16;25633:20;25648:4;25633:14;:20::i;:::-;25614:39;;25664:14;25681:10;:16;25692:4;25681:16;;;;;;;;;;;;;;;;;;;;;;;;;25664:33;;25715:10;:16;25726:4;25715:16;;;;;;;;;;;;;;;;25708:23;;;;;;;;;;;25742:34;25759:4;25766:6;25774:1;25742:8;:34::i;:::-;25794:8;25787:24;;;25812:6;25820:1;25787:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25840:4;25833:20;;;25854:6;25862:1;25833:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25546:326;;25486:386:::0;:::o;29326:226::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29414:1:::1;29400:10;:15;;29392:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;29484:28;;;;;;;;29488:4;:11;;;29484:28;;;;29501:10;29484:28;;::::0;29477:4:::1;:35;;;;;;;;;;;;;;;;;;;29528:16;29539:4;29528:16;;;;;;:::i;:::-;;;;;;;;29326:226:::0;:::o;1580:87::-;1626:7;1653:6;;;;;;;;;;;1646:13;;1580:87;:::o;27561:245::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27698:9:::1;27693:106;27713:9;;:16;;27709:1;:20;27693:106;;;27782:5;27751:14;:28;27766:9;;27776:1;27766:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27751:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;27731:3;;;;;:::i;:::-;;;;27693:106;;;;27561:245:::0;;:::o;11716:104::-;11772:13;11805:7;11798:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11716:104;:::o;27820:167::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27918:13:::1;27904:11;;:27;;;;;;;;;;;;;;;;;;27947:32;27965:13;27947:32;;;;;;:::i;:::-;;;;;;;;27820:167:::0;:::o;13705:482::-;13825:4;13847:24;13874:11;:25;13886:12;:10;:12::i;:::-;13874:25;;;;;;;;;;;;;;;:34;13900:7;13874:34;;;;;;;;;;;;;;;;13847:61;;13961:15;13941:16;:35;;13919:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;14077:67;14086:12;:10;:12::i;:::-;14100:7;14128:15;14109:16;:34;14077:8;:67::i;:::-;14175:4;14168:11;;;13705:482;;;;:::o;12222:216::-;12344:4;12366:42;12376:12;:10;:12::i;:::-;12390:9;12401:6;12366:9;:42::i;:::-;12426:4;12419:11;;12222:216;;;;:::o;21419:27::-;;;;;;;;;;;;;:::o;27061:242::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27195:9:::1;27190:106;27210:9;;:16;;27206:1;:20;27190:106;;;27279:5;27248:14;:28;27263:9;;27273:1;27263:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27248:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;27228:3;;;;;:::i;:::-;;;;27190:106;;;;27061:242:::0;;:::o;26533:166::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26609:6:::1;26604:88;26625:5;;:12;;26621:1;:16;26604:88;;;26676:4;26659;:14;26664:5;;26670:1;26664:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;26659:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;26639:3;;;;;:::i;:::-;;;;26604:88;;;;26533:166:::0;;:::o;27995:102::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28047:42:::1;28064:24;28082:4;28064:9;:24::i;:::-;28047:16;:42::i;:::-;27995:102::o:0;24808:183::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24877:14:::1;;;;;;;;;;;24869:23;;;::::0;::::1;;24917:4;24903:11;;:18;;;;;;;;;;;;;;;;;;24950:4;24932:15;;:22;;;;;;;;;;;;;;;;;;24979:4;24965:11;;:18;;;;;;;;;;;;;;;;;;24808:183::o:0;21295:26::-;;;;;;;;;;;;;:::o;29096:222::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29181:1:::1;29168:9;:14;;29160:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;29250:28;;;;;;;;29254:9;29250:28;;;;29265:4;:12;;;29250:28;;::::0;29243:4:::1;:35;;;;;;;;;;;;;;;;;;;29294:16;29305:4;29294:16;;;;;;:::i;:::-;;;;;;;;29096:222:::0;:::o;12444:201::-;12578:7;12610:11;:18;12622:5;12610:18;;;;;;;;;;;;;;;:27;12629:7;12610:27;;;;;;;;;;;;;;;;12603:34;;12444:201;;;;:::o;25880:645::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21498:4:::1;21489:6;;:13;;;;;;;;;;;;;;;;;;25954:33:::2;26021:42;25954:120;;26103:16;26085:15;;:34;;;;;;;;;;;;;;;;;;26164:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26146:70;;;26225:4;26232:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26146:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26130:13;;:126;;;;;;;;;;;;;;;;;;26267:48;26274:13;;;;;;;;;;;26297:16;26267:6;:48::i;:::-;26326:159;26362:15;;;;;;;;;;;26392:24;26410:4;26392:9;:24::i;:::-;26431:21;26467:7;:5;:7::i;:::-;26326:21;:159::i;:::-;26513:4;26496:14;;:21;;;;;;;;;;;;;;;;;;25943:582;21534:5:::1;21525:6;;:14;;;;;;;;;;;;;;;;;;25880:645::o:0;1907:231::-;1726:12;:10;:12::i;:::-;1715:23;;:7;:5;:7::i;:::-;:23;;;1707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2032:1:::1;2012:22;;:8;:22;;;;1990:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2111:19;2121:8;2111:9;:19::i;:::-;1907:231:::0;:::o;21265:23::-;;;;;;;;;;;;;:::o;1110:98::-;1163:7;1190:10;1183:17;;1110:98;:::o;15977:380::-;16130:1;16113:19;;:5;:19;;;;16105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16211:1;16192:21;;:7;:21;;;;16184:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16295:6;16265:11;:18;16277:5;16265:18;;;;;;;;;;;;;;;:27;16284:7;16265:27;;;;;;;;;;;;;;;:36;;;;16333:7;16317:32;;16326:5;16317:32;;;16342:6;16317:32;;;;;;:::i;:::-;;;;;;;;15977:380;;;:::o;22545:1997::-;22702:16;22743:7;:5;:7::i;:::-;22735:15;;:4;:15;;;;:32;;;;;22760:7;:5;:7::i;:::-;22754:13;;:2;:13;;;;22735:32;22731:1696;;;22793:4;:10;22798:4;22793:10;;;;;;;;;;;;;;;;;;;;;;;;;22792:11;:24;;;;;22808:4;:8;22813:2;22808:8;;;;;;;;;;;;;;;;;;;;;;;;;22807:9;22792:24;22784:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22902:14;;;;;;;;;;;22898:1518;;;22945:11;;;;;;;;;;;22937:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;23038:15;;;;;;;;;;;23034:132;;;23087:14;:18;23102:2;23087:18;;;;;;;;;;;;;;;;;;;;;;;;;23079:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23034:132;23190:11;;;;;;;;;;;:22;;;;;23206:6;;;;;;;;;;;23205:7;23190:22;23186:1215;;;23249:15;23259:4;23249:9;:15::i;:::-;:33;;;;;23269:13;23279:2;23269:9;:13::i;:::-;23268:14;23249:33;23245:1016;;;23310:21;23334:25;23352:6;23334:13;23344:2;23334:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;23310:49;;23436:40;23469:6;23436:32;:40::i;:::-;23428:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;23539:41;23566:13;23539:26;:41::i;:::-;23531:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;23650:15;;;;;;;;;;;23646:191;;;23719:15;23704:8;:12;23713:2;23704:12;;;;;;;;;;;;;;;;:30;23696:39;;;;;;23798:10;23779:15;:30;;;;:::i;:::-;23764:8;:12;23773:2;23764:12;;;;;;;;;;;;;;;:45;;;;23646:191;23900:14;:18;23915:2;23900:18;;;;;;;;;;;;;;;;;;;;;;;;;:36;;23925:4;:11;;;23900:36;;;23921:1;23900:36;23889:47;;23284:676;23245:1016;;;23971:13;23981:2;23971:9;:13::i;:::-;23967:294;;;24056:42;24073:24;24091:4;24073:9;:24::i;:::-;24056:16;:42::i;:::-;24125:35;24138:21;24125:12;:35::i;:::-;24198:14;:20;24213:4;24198:20;;;;;;;;;;;;;;;;;;;;;;;;;:39;;24225:4;:12;;;24198:39;;;24221:1;24198:39;24187:50;;23967:294;23245:1016;23186:1215;;;24337:11;;;;;;;;;;;24329:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;23186:1215;22898:1518;22731:1696;24439:11;24453:31;24461:4;24467:6;24475:8;24453:7;:31::i;:::-;24439:45;;24495:39;24511:4;24517:2;24530:3;24521:6;:12;;;;:::i;:::-;24495:15;:39::i;:::-;22666:1876;;22545:1997;;;:::o;19714:119::-;19769:7;19811:4;19796:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19789:36;;19714:119;;;:::o;24706:94::-;24764:11;;;;;;;;;;;:20;;:28;24785:6;24764:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24706:94;:::o;2146:173::-;2202:16;2221:6;;;;;;;;;;;2202:25;;2247:8;2238:6;;:17;;;;;;;;;;;;;;;;;;2302:8;2271:40;;2292:8;2271:40;;;;;;;;;;;;2191:128;2146:173;:::o;24550:148::-;21498:4;21489:6;;:13;;;;;;;;;;;;;;;;;;24629:61:::1;24646:15;;;;;;;;;;;24663:11;24684:4;24629:16;:61::i;:::-;;21534:5:::0;21525:6;;:14;;;;;;;;;;;;;;;;;;24550:148;:::o;18831:375::-;19005:15;:31;;;19044:9;19077:4;19097:11;19123:1;19139;19155:2;19172:15;19005:193;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18831:375;;;;:::o;29880:181::-;29938:7;29958:9;29974:1;29970;:5;;;;:::i;:::-;29958:17;;29999:1;29994;:6;;29986:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;30052:1;30045:8;;;29880:181;;;;:::o;19963:170::-;20038:4;20053:14;20070:22;20053:39;;20119:6;20109;:16;;20102:23;;;19963:170;;;:::o;20297:193::-;20376:4;20391:19;20413:22;20391:44;;20471:11;20452:15;:30;;20445:37;;;20297:193;;;:::o;22216:321::-;22332:7;22367:1;22356:7;:12;22352:26;;;22377:1;22370:8;;;;22352:26;22389:13;22405:35;22424:6;22432:7;22405:18;:35::i;:::-;22389:51;;22451:24;22463:4;22469:5;22451:11;:24::i;:::-;22491:15;22500:5;22491:15;;;;;;:::i;:::-;;;;;;;;22524:5;22517:12;;;22216:321;;;;;;:::o;14193:770::-;14351:1;14333:20;;:6;:20;;;;14325:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14435:1;14414:23;;:9;:23;;;;14406:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14490:47;14511:6;14519:9;14530:6;14490:20;:47::i;:::-;14550:21;14574:9;:17;14584:6;14574:17;;;;;;;;;;;;;;;;14550:41;;14641:6;14624:13;:23;;14602:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;14785:6;14769:13;:22;14749:9;:17;14759:6;14749:17;;;;;;;;;;;;;;;:42;;;;14837:6;14813:9;:20;14823:9;14813:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14878:9;14861:35;;14870:6;14861:35;;;14889:6;14861:35;;;;;;:::i;:::-;;;;;;;;14909:46;14929:6;14937:9;14948:6;14909:19;:46::i;:::-;14314:649;14193:770;;;:::o;17909:569::-;18043:7;18063:23;18089:2;:10;;;18063:36;;18110:21;18148:1;18134:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18110:40;;18181:4;18163;18168:1;18163:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18207:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18197:4;18202:1;18197:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18242:15;:66;;;18323:6;18344:1;18360:4;18379:2;18396:15;18242:180;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18455:15;18442:2;:10;;;:28;;;;:::i;:::-;18435:35;;;;17909:569;;;;;:::o;17436:175::-;17544:7;17600:3;17586:10;17577:6;:19;;;;:::i;:::-;17576:27;;;;:::i;:::-;17569:34;;17436:175;;;;:::o;22059:149::-;22149:6;22130:9;:15;22140:4;22130:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;22194:6;22166:9;:24;22184:4;22166:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;22059:149;;:::o;16365:125::-;;;;:::o;16522:124::-;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;479:568::-;552:8;562:6;612:3;605:4;597:6;593:17;589:27;579:122;;620:79;;:::i;:::-;579:122;733:6;720:20;710:30;;763:18;755:6;752:30;749:117;;;785:79;;:::i;:::-;749:117;899:4;891:6;887:17;875:29;;953:3;945:4;937:6;933:17;923:8;919:32;916:41;913:128;;;960:79;;:::i;:::-;913:128;479:568;;;;;:::o;1053:133::-;1096:5;1134:6;1121:20;1112:29;;1150:30;1174:5;1150:30;:::i;:::-;1053:133;;;;:::o;1192:137::-;1246:5;1277:6;1271:13;1262:22;;1293:30;1317:5;1293:30;:::i;:::-;1192:137;;;;:::o;1335:187::-;1405:5;1443:6;1430:20;1421:29;;1459:57;1510:5;1459:57;:::i;:::-;1335:187;;;;:::o;1528:143::-;1585:5;1616:6;1610:13;1601:22;;1632:33;1659:5;1632:33;:::i;:::-;1528:143;;;;:::o;1677:139::-;1723:5;1761:6;1748:20;1739:29;;1777:33;1804:5;1777:33;:::i;:::-;1677:139;;;;:::o;1822:143::-;1879:5;1910:6;1904:13;1895:22;;1926:33;1953:5;1926:33;:::i;:::-;1822:143;;;;:::o;1971:141::-;2027:5;2058:6;2052:13;2043:22;;2074:32;2100:5;2074:32;:::i;:::-;1971:141;;;;:::o;2118:329::-;2177:6;2226:2;2214:9;2205:7;2201:23;2197:32;2194:119;;;2232:79;;:::i;:::-;2194:119;2352:1;2377:53;2422:7;2413:6;2402:9;2398:22;2377:53;:::i;:::-;2367:63;;2323:117;2118:329;;;;:::o;2453:351::-;2523:6;2572:2;2560:9;2551:7;2547:23;2543:32;2540:119;;;2578:79;;:::i;:::-;2540:119;2698:1;2723:64;2779:7;2770:6;2759:9;2755:22;2723:64;:::i;:::-;2713:74;;2669:128;2453:351;;;;:::o;2810:345::-;2877:6;2926:2;2914:9;2905:7;2901:23;2897:32;2894:119;;;2932:79;;:::i;:::-;2894:119;3052:1;3077:61;3130:7;3121:6;3110:9;3106:22;3077:61;:::i;:::-;3067:71;;3023:125;2810:345;;;;:::o;3161:474::-;3229:6;3237;3286:2;3274:9;3265:7;3261:23;3257:32;3254:119;;;3292:79;;:::i;:::-;3254:119;3412:1;3437:53;3482:7;3473:6;3462:9;3458:22;3437:53;:::i;:::-;3427:63;;3383:117;3539:2;3565:53;3610:7;3601:6;3590:9;3586:22;3565:53;:::i;:::-;3555:63;;3510:118;3161:474;;;;;:::o;3641:619::-;3718:6;3726;3734;3783:2;3771:9;3762:7;3758:23;3754:32;3751:119;;;3789:79;;:::i;:::-;3751:119;3909:1;3934:53;3979:7;3970:6;3959:9;3955:22;3934:53;:::i;:::-;3924:63;;3880:117;4036:2;4062:53;4107:7;4098:6;4087:9;4083:22;4062:53;:::i;:::-;4052:63;;4007:118;4164:2;4190:53;4235:7;4226:6;4215:9;4211:22;4190:53;:::i;:::-;4180:63;;4135:118;3641:619;;;;;:::o;4266:474::-;4334:6;4342;4391:2;4379:9;4370:7;4366:23;4362:32;4359:119;;;4397:79;;:::i;:::-;4359:119;4517:1;4542:53;4587:7;4578:6;4567:9;4563:22;4542:53;:::i;:::-;4532:63;;4488:117;4644:2;4670:53;4715:7;4706:6;4695:9;4691:22;4670:53;:::i;:::-;4660:63;;4615:118;4266:474;;;;;:::o;4746:559::-;4832:6;4840;4889:2;4877:9;4868:7;4864:23;4860:32;4857:119;;;4895:79;;:::i;:::-;4857:119;5043:1;5032:9;5028:17;5015:31;5073:18;5065:6;5062:30;5059:117;;;5095:79;;:::i;:::-;5059:117;5208:80;5280:7;5271:6;5260:9;5256:22;5208:80;:::i;:::-;5190:98;;;;4986:312;4746:559;;;;;:::o;5311:323::-;5367:6;5416:2;5404:9;5395:7;5391:23;5387:32;5384:119;;;5422:79;;:::i;:::-;5384:119;5542:1;5567:50;5609:7;5600:6;5589:9;5585:22;5567:50;:::i;:::-;5557:60;;5513:114;5311:323;;;;:::o;5640:345::-;5707:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:119;;;5762:79;;:::i;:::-;5724:119;5882:1;5907:61;5960:7;5951:6;5940:9;5936:22;5907:61;:::i;:::-;5897:71;;5853:125;5640:345;;;;:::o;5991:377::-;6074:6;6123:2;6111:9;6102:7;6098:23;6094:32;6091:119;;;6129:79;;:::i;:::-;6091:119;6249:1;6274:77;6343:7;6334:6;6323:9;6319:22;6274:77;:::i;:::-;6264:87;;6220:141;5991:377;;;;:::o;6374:661::-;6461:6;6469;6477;6526:2;6514:9;6505:7;6501:23;6497:32;6494:119;;;6532:79;;:::i;:::-;6494:119;6652:1;6677:64;6733:7;6724:6;6713:9;6709:22;6677:64;:::i;:::-;6667:74;;6623:128;6790:2;6816:64;6872:7;6863:6;6852:9;6848:22;6816:64;:::i;:::-;6806:74;;6761:129;6929:2;6955:63;7010:7;7001:6;6990:9;6986:22;6955:63;:::i;:::-;6945:73;;6900:128;6374:661;;;;;:::o;7041:329::-;7100:6;7149:2;7137:9;7128:7;7124:23;7120:32;7117:119;;;7155:79;;:::i;:::-;7117:119;7275:1;7300:53;7345:7;7336:6;7325:9;7321:22;7300:53;:::i;:::-;7290:63;;7246:117;7041:329;;;;:::o;7376:663::-;7464:6;7472;7480;7529:2;7517:9;7508:7;7504:23;7500:32;7497:119;;;7535:79;;:::i;:::-;7497:119;7655:1;7680:64;7736:7;7727:6;7716:9;7712:22;7680:64;:::i;:::-;7670:74;;7626:128;7793:2;7819:64;7875:7;7866:6;7855:9;7851:22;7819:64;:::i;:::-;7809:74;;7764:129;7932:2;7958:64;8014:7;8005:6;7994:9;7990:22;7958:64;:::i;:::-;7948:74;;7903:129;7376:663;;;;;:::o;8045:179::-;8114:10;8135:46;8177:3;8169:6;8135:46;:::i;:::-;8213:4;8208:3;8204:14;8190:28;;8045:179;;;;:::o;8230:147::-;8325:45;8364:5;8325:45;:::i;:::-;8320:3;8313:58;8230:147;;:::o;8383:108::-;8460:24;8478:5;8460:24;:::i;:::-;8455:3;8448:37;8383:108;;:::o;8497:118::-;8584:24;8602:5;8584:24;:::i;:::-;8579:3;8572:37;8497:118;;:::o;8651:732::-;8770:3;8799:54;8847:5;8799:54;:::i;:::-;8869:86;8948:6;8943:3;8869:86;:::i;:::-;8862:93;;8979:56;9029:5;8979:56;:::i;:::-;9058:7;9089:1;9074:284;9099:6;9096:1;9093:13;9074:284;;;9175:6;9169:13;9202:63;9261:3;9246:13;9202:63;:::i;:::-;9195:70;;9288:60;9341:6;9288:60;:::i;:::-;9278:70;;9134:224;9121:1;9118;9114:9;9109:14;;9074:284;;;9078:14;9374:3;9367:10;;8775:608;;;8651:732;;;;:::o;9389:109::-;9470:21;9485:5;9470:21;:::i;:::-;9465:3;9458:34;9389:109;;:::o;9504:147::-;9599:45;9638:5;9599:45;:::i;:::-;9594:3;9587:58;9504:147;;:::o;9657:364::-;9745:3;9773:39;9806:5;9773:39;:::i;:::-;9828:71;9892:6;9887:3;9828:71;:::i;:::-;9821:78;;9908:52;9953:6;9948:3;9941:4;9934:5;9930:16;9908:52;:::i;:::-;9985:29;10007:6;9985:29;:::i;:::-;9980:3;9976:39;9969:46;;9749:272;9657:364;;;;:::o;10027:366::-;10169:3;10190:67;10254:2;10249:3;10190:67;:::i;:::-;10183:74;;10266:93;10355:3;10266:93;:::i;:::-;10384:2;10379:3;10375:12;10368:19;;10027:366;;;:::o;10399:::-;10541:3;10562:67;10626:2;10621:3;10562:67;:::i;:::-;10555:74;;10638:93;10727:3;10638:93;:::i;:::-;10756:2;10751:3;10747:12;10740:19;;10399:366;;;:::o;10771:::-;10913:3;10934:67;10998:2;10993:3;10934:67;:::i;:::-;10927:74;;11010:93;11099:3;11010:93;:::i;:::-;11128:2;11123:3;11119:12;11112:19;;10771:366;;;:::o;11143:::-;11285:3;11306:67;11370:2;11365:3;11306:67;:::i;:::-;11299:74;;11382:93;11471:3;11382:93;:::i;:::-;11500:2;11495:3;11491:12;11484:19;;11143:366;;;:::o;11515:::-;11657:3;11678:67;11742:2;11737:3;11678:67;:::i;:::-;11671:74;;11754:93;11843:3;11754:93;:::i;:::-;11872:2;11867:3;11863:12;11856:19;;11515:366;;;:::o;11887:::-;12029:3;12050:67;12114:2;12109:3;12050:67;:::i;:::-;12043:74;;12126:93;12215:3;12126:93;:::i;:::-;12244:2;12239:3;12235:12;12228:19;;11887:366;;;:::o;12259:::-;12401:3;12422:67;12486:2;12481:3;12422:67;:::i;:::-;12415:74;;12498:93;12587:3;12498:93;:::i;:::-;12616:2;12611:3;12607:12;12600:19;;12259:366;;;:::o;12631:::-;12773:3;12794:67;12858:2;12853:3;12794:67;:::i;:::-;12787:74;;12870:93;12959:3;12870:93;:::i;:::-;12988:2;12983:3;12979:12;12972:19;;12631:366;;;:::o;13003:::-;13145:3;13166:67;13230:2;13225:3;13166:67;:::i;:::-;13159:74;;13242:93;13331:3;13242:93;:::i;:::-;13360:2;13355:3;13351:12;13344:19;;13003:366;;;:::o;13375:::-;13517:3;13538:67;13602:2;13597:3;13538:67;:::i;:::-;13531:74;;13614:93;13703:3;13614:93;:::i;:::-;13732:2;13727:3;13723:12;13716:19;;13375:366;;;:::o;13747:::-;13889:3;13910:67;13974:2;13969:3;13910:67;:::i;:::-;13903:74;;13986:93;14075:3;13986:93;:::i;:::-;14104:2;14099:3;14095:12;14088:19;;13747:366;;;:::o;14119:::-;14261:3;14282:67;14346:2;14341:3;14282:67;:::i;:::-;14275:74;;14358:93;14447:3;14358:93;:::i;:::-;14476:2;14471:3;14467:12;14460:19;;14119:366;;;:::o;14491:::-;14633:3;14654:67;14718:2;14713:3;14654:67;:::i;:::-;14647:74;;14730:93;14819:3;14730:93;:::i;:::-;14848:2;14843:3;14839:12;14832:19;;14491:366;;;:::o;14863:::-;15005:3;15026:67;15090:2;15085:3;15026:67;:::i;:::-;15019:74;;15102:93;15191:3;15102:93;:::i;:::-;15220:2;15215:3;15211:12;15204:19;;14863:366;;;:::o;15235:::-;15377:3;15398:67;15462:2;15457:3;15398:67;:::i;:::-;15391:74;;15474:93;15563:3;15474:93;:::i;:::-;15592:2;15587:3;15583:12;15576:19;;15235:366;;;:::o;15607:::-;15749:3;15770:67;15834:2;15829:3;15770:67;:::i;:::-;15763:74;;15846:93;15935:3;15846:93;:::i;:::-;15964:2;15959:3;15955:12;15948:19;;15607:366;;;:::o;15979:::-;16121:3;16142:67;16206:2;16201:3;16142:67;:::i;:::-;16135:74;;16218:93;16307:3;16218:93;:::i;:::-;16336:2;16331:3;16327:12;16320:19;;15979:366;;;:::o;16351:::-;16493:3;16514:67;16578:2;16573:3;16514:67;:::i;:::-;16507:74;;16590:93;16679:3;16590:93;:::i;:::-;16708:2;16703:3;16699:12;16692:19;;16351:366;;;:::o;16723:::-;16865:3;16886:67;16950:2;16945:3;16886:67;:::i;:::-;16879:74;;16962:93;17051:3;16962:93;:::i;:::-;17080:2;17075:3;17071:12;17064:19;;16723:366;;;:::o;17095:::-;17237:3;17258:67;17322:2;17317:3;17258:67;:::i;:::-;17251:74;;17334:93;17423:3;17334:93;:::i;:::-;17452:2;17447:3;17443:12;17436:19;;17095:366;;;:::o;17467:::-;17609:3;17630:67;17694:2;17689:3;17630:67;:::i;:::-;17623:74;;17706:93;17795:3;17706:93;:::i;:::-;17824:2;17819:3;17815:12;17808:19;;17467:366;;;:::o;17839:::-;17981:3;18002:67;18066:2;18061:3;18002:67;:::i;:::-;17995:74;;18078:93;18167:3;18078:93;:::i;:::-;18196:2;18191:3;18187:12;18180:19;;17839:366;;;:::o;18211:::-;18353:3;18374:67;18438:2;18433:3;18374:67;:::i;:::-;18367:74;;18450:93;18539:3;18450:93;:::i;:::-;18568:2;18563:3;18559:12;18552:19;;18211:366;;;:::o;18583:::-;18725:3;18746:67;18810:2;18805:3;18746:67;:::i;:::-;18739:74;;18822:93;18911:3;18822:93;:::i;:::-;18940:2;18935:3;18931:12;18924:19;;18583:366;;;:::o;19003:504::-;19142:4;19137:3;19133:14;19231:4;19224:5;19220:16;19214:23;19250:63;19307:4;19302:3;19298:14;19284:12;19250:63;:::i;:::-;19157:166;19408:4;19401:5;19397:16;19391:23;19427:63;19484:4;19479:3;19475:14;19461:12;19427:63;:::i;:::-;19333:167;19111:396;19003:504;;:::o;19561:688::-;19697:4;19692:3;19688:14;19728:1;19805:4;19798:5;19794:16;19788:23;19775:36;;19844:55;19889:9;19844:55;:::i;:::-;19912:63;19969:4;19964:3;19960:14;19946:12;19912:63;:::i;:::-;19739:246;20062:4;20055:5;20051:16;20045:23;20032:36;;20101:55;20146:9;20101:55;:::i;:::-;20169:63;20226:4;20221:3;20217:14;20203:12;20169:63;:::i;:::-;19995:247;19666:583;;19561:688;;:::o;20255:108::-;20332:24;20350:5;20332:24;:::i;:::-;20327:3;20320:37;20255:108;;:::o;20369:118::-;20456:24;20474:5;20456:24;:::i;:::-;20451:3;20444:37;20369:118;;:::o;20493:112::-;20576:22;20592:5;20576:22;:::i;:::-;20571:3;20564:35;20493:112;;:::o;20611:222::-;20704:4;20742:2;20731:9;20727:18;20719:26;;20755:71;20823:1;20812:9;20808:17;20799:6;20755:71;:::i;:::-;20611:222;;;;:::o;20839:238::-;20940:4;20978:2;20967:9;20963:18;20955:26;;20991:79;21067:1;21056:9;21052:17;21043:6;20991:79;:::i;:::-;20839:238;;;;:::o;21083:332::-;21204:4;21242:2;21231:9;21227:18;21219:26;;21255:71;21323:1;21312:9;21308:17;21299:6;21255:71;:::i;:::-;21336:72;21404:2;21393:9;21389:18;21380:6;21336:72;:::i;:::-;21083:332;;;;;:::o;21421:348::-;21550:4;21588:2;21577:9;21573:18;21565:26;;21601:71;21669:1;21658:9;21654:17;21645:6;21601:71;:::i;:::-;21682:80;21758:2;21747:9;21743:18;21734:6;21682:80;:::i;:::-;21421:348;;;;;:::o;21775:332::-;21896:4;21934:2;21923:9;21919:18;21911:26;;21947:71;22015:1;22004:9;22000:17;21991:6;21947:71;:::i;:::-;22028:72;22096:2;22085:9;22081:18;22072:6;22028:72;:::i;:::-;21775:332;;;;;:::o;22113:807::-;22362:4;22400:3;22389:9;22385:19;22377:27;;22414:71;22482:1;22471:9;22467:17;22458:6;22414:71;:::i;:::-;22495:72;22563:2;22552:9;22548:18;22539:6;22495:72;:::i;:::-;22577:80;22653:2;22642:9;22638:18;22629:6;22577:80;:::i;:::-;22667;22743:2;22732:9;22728:18;22719:6;22667:80;:::i;:::-;22757:73;22825:3;22814:9;22810:19;22801:6;22757:73;:::i;:::-;22840;22908:3;22897:9;22893:19;22884:6;22840:73;:::i;:::-;22113:807;;;;;;;;;:::o;22926:210::-;23013:4;23051:2;23040:9;23036:18;23028:26;;23064:65;23126:1;23115:9;23111:17;23102:6;23064:65;:::i;:::-;22926:210;;;;:::o;23142:313::-;23255:4;23293:2;23282:9;23278:18;23270:26;;23342:9;23336:4;23332:20;23328:1;23317:9;23313:17;23306:47;23370:78;23443:4;23434:6;23370:78;:::i;:::-;23362:86;;23142:313;;;;:::o;23461:419::-;23627:4;23665:2;23654:9;23650:18;23642:26;;23714:9;23708:4;23704:20;23700:1;23689:9;23685:17;23678:47;23742:131;23868:4;23742:131;:::i;:::-;23734:139;;23461:419;;;:::o;23886:::-;24052:4;24090:2;24079:9;24075:18;24067:26;;24139:9;24133:4;24129:20;24125:1;24114:9;24110:17;24103:47;24167:131;24293:4;24167:131;:::i;:::-;24159:139;;23886:419;;;:::o;24311:::-;24477:4;24515:2;24504:9;24500:18;24492:26;;24564:9;24558:4;24554:20;24550:1;24539:9;24535:17;24528:47;24592:131;24718:4;24592:131;:::i;:::-;24584:139;;24311:419;;;:::o;24736:::-;24902:4;24940:2;24929:9;24925:18;24917:26;;24989:9;24983:4;24979:20;24975:1;24964:9;24960:17;24953:47;25017:131;25143:4;25017:131;:::i;:::-;25009:139;;24736:419;;;:::o;25161:::-;25327:4;25365:2;25354:9;25350:18;25342:26;;25414:9;25408:4;25404:20;25400:1;25389:9;25385:17;25378:47;25442:131;25568:4;25442:131;:::i;:::-;25434:139;;25161:419;;;:::o;25586:::-;25752:4;25790:2;25779:9;25775:18;25767:26;;25839:9;25833:4;25829:20;25825:1;25814:9;25810:17;25803:47;25867:131;25993:4;25867:131;:::i;:::-;25859:139;;25586:419;;;:::o;26011:::-;26177:4;26215:2;26204:9;26200:18;26192:26;;26264:9;26258:4;26254:20;26250:1;26239:9;26235:17;26228:47;26292:131;26418:4;26292:131;:::i;:::-;26284:139;;26011:419;;;:::o;26436:::-;26602:4;26640:2;26629:9;26625:18;26617:26;;26689:9;26683:4;26679:20;26675:1;26664:9;26660:17;26653:47;26717:131;26843:4;26717:131;:::i;:::-;26709:139;;26436:419;;;:::o;26861:::-;27027:4;27065:2;27054:9;27050:18;27042:26;;27114:9;27108:4;27104:20;27100:1;27089:9;27085:17;27078:47;27142:131;27268:4;27142:131;:::i;:::-;27134:139;;26861:419;;;:::o;27286:::-;27452:4;27490:2;27479:9;27475:18;27467:26;;27539:9;27533:4;27529:20;27525:1;27514:9;27510:17;27503:47;27567:131;27693:4;27567:131;:::i;:::-;27559:139;;27286:419;;;:::o;27711:::-;27877:4;27915:2;27904:9;27900:18;27892:26;;27964:9;27958:4;27954:20;27950:1;27939:9;27935:17;27928:47;27992:131;28118:4;27992:131;:::i;:::-;27984:139;;27711:419;;;:::o;28136:::-;28302:4;28340:2;28329:9;28325:18;28317:26;;28389:9;28383:4;28379:20;28375:1;28364:9;28360:17;28353:47;28417:131;28543:4;28417:131;:::i;:::-;28409:139;;28136:419;;;:::o;28561:::-;28727:4;28765:2;28754:9;28750:18;28742:26;;28814:9;28808:4;28804:20;28800:1;28789:9;28785:17;28778:47;28842:131;28968:4;28842:131;:::i;:::-;28834:139;;28561:419;;;:::o;28986:::-;29152:4;29190:2;29179:9;29175:18;29167:26;;29239:9;29233:4;29229:20;29225:1;29214:9;29210:17;29203:47;29267:131;29393:4;29267:131;:::i;:::-;29259:139;;28986:419;;;:::o;29411:::-;29577:4;29615:2;29604:9;29600:18;29592:26;;29664:9;29658:4;29654:20;29650:1;29639:9;29635:17;29628:47;29692:131;29818:4;29692:131;:::i;:::-;29684:139;;29411:419;;;:::o;29836:::-;30002:4;30040:2;30029:9;30025:18;30017:26;;30089:9;30083:4;30079:20;30075:1;30064:9;30060:17;30053:47;30117:131;30243:4;30117:131;:::i;:::-;30109:139;;29836:419;;;:::o;30261:::-;30427:4;30465:2;30454:9;30450:18;30442:26;;30514:9;30508:4;30504:20;30500:1;30489:9;30485:17;30478:47;30542:131;30668:4;30542:131;:::i;:::-;30534:139;;30261:419;;;:::o;30686:::-;30852:4;30890:2;30879:9;30875:18;30867:26;;30939:9;30933:4;30929:20;30925:1;30914:9;30910:17;30903:47;30967:131;31093:4;30967:131;:::i;:::-;30959:139;;30686:419;;;:::o;31111:::-;31277:4;31315:2;31304:9;31300:18;31292:26;;31364:9;31358:4;31354:20;31350:1;31339:9;31335:17;31328:47;31392:131;31518:4;31392:131;:::i;:::-;31384:139;;31111:419;;;:::o;31536:::-;31702:4;31740:2;31729:9;31725:18;31717:26;;31789:9;31783:4;31779:20;31775:1;31764:9;31760:17;31753:47;31817:131;31943:4;31817:131;:::i;:::-;31809:139;;31536:419;;;:::o;31961:::-;32127:4;32165:2;32154:9;32150:18;32142:26;;32214:9;32208:4;32204:20;32200:1;32189:9;32185:17;32178:47;32242:131;32368:4;32242:131;:::i;:::-;32234:139;;31961:419;;;:::o;32386:::-;32552:4;32590:2;32579:9;32575:18;32567:26;;32639:9;32633:4;32629:20;32625:1;32614:9;32610:17;32603:47;32667:131;32793:4;32667:131;:::i;:::-;32659:139;;32386:419;;;:::o;32811:::-;32977:4;33015:2;33004:9;33000:18;32992:26;;33064:9;33058:4;33054:20;33050:1;33039:9;33035:17;33028:47;33092:131;33218:4;33092:131;:::i;:::-;33084:139;;32811:419;;;:::o;33236:::-;33402:4;33440:2;33429:9;33425:18;33417:26;;33489:9;33483:4;33479:20;33475:1;33464:9;33460:17;33453:47;33517:131;33643:4;33517:131;:::i;:::-;33509:139;;33236:419;;;:::o;33661:306::-;33796:4;33834:2;33823:9;33819:18;33811:26;;33847:113;33957:1;33946:9;33942:17;33933:6;33847:113;:::i;:::-;33661:306;;;;:::o;33973:300::-;34105:4;34143:2;34132:9;34128:18;34120:26;;34156:110;34263:1;34252:9;34248:17;34239:6;34156:110;:::i;:::-;33973:300;;;;:::o;34279:222::-;34372:4;34410:2;34399:9;34395:18;34387:26;;34423:71;34491:1;34480:9;34476:17;34467:6;34423:71;:::i;:::-;34279:222;;;;:::o;34507:831::-;34770:4;34808:3;34797:9;34793:19;34785:27;;34822:71;34890:1;34879:9;34875:17;34866:6;34822:71;:::i;:::-;34903:80;34979:2;34968:9;34964:18;34955:6;34903:80;:::i;:::-;35030:9;35024:4;35020:20;35015:2;35004:9;35000:18;34993:48;35058:108;35161:4;35152:6;35058:108;:::i;:::-;35050:116;;35176:72;35244:2;35233:9;35229:18;35220:6;35176:72;:::i;:::-;35258:73;35326:3;35315:9;35311:19;35302:6;35258:73;:::i;:::-;34507:831;;;;;;;;:::o;35344:214::-;35433:4;35471:2;35460:9;35456:18;35448:26;;35484:67;35548:1;35537:9;35533:17;35524:6;35484:67;:::i;:::-;35344:214;;;;:::o;35645:132::-;35712:4;35735:3;35727:11;;35765:4;35760:3;35756:14;35748:22;;35645:132;;;:::o;35783:114::-;35850:6;35884:5;35878:12;35868:22;;35783:114;;;:::o;35903:99::-;35955:6;35989:5;35983:12;35973:22;;35903:99;;;:::o;36008:113::-;36078:4;36110;36105:3;36101:14;36093:22;;36008:113;;;:::o;36127:184::-;36226:11;36260:6;36255:3;36248:19;36300:4;36295:3;36291:14;36276:29;;36127:184;;;;:::o;36317:169::-;36401:11;36435:6;36430:3;36423:19;36475:4;36470:3;36466:14;36451:29;;36317:169;;;;:::o;36492:305::-;36532:3;36551:20;36569:1;36551:20;:::i;:::-;36546:25;;36585:20;36603:1;36585:20;:::i;:::-;36580:25;;36739:1;36671:66;36667:74;36664:1;36661:81;36658:107;;;36745:18;;:::i;:::-;36658:107;36789:1;36786;36782:9;36775:16;;36492:305;;;;:::o;36803:185::-;36843:1;36860:20;36878:1;36860:20;:::i;:::-;36855:25;;36894:20;36912:1;36894:20;:::i;:::-;36889:25;;36933:1;36923:35;;36938:18;;:::i;:::-;36923:35;36980:1;36977;36973:9;36968:14;;36803:185;;;;:::o;36994:348::-;37034:7;37057:20;37075:1;37057:20;:::i;:::-;37052:25;;37091:20;37109:1;37091:20;:::i;:::-;37086:25;;37279:1;37211:66;37207:74;37204:1;37201:81;37196:1;37189:9;37182:17;37178:105;37175:131;;;37286:18;;:::i;:::-;37175:131;37334:1;37331;37327:9;37316:20;;36994:348;;;;:::o;37348:191::-;37388:4;37408:20;37426:1;37408:20;:::i;:::-;37403:25;;37442:20;37460:1;37442:20;:::i;:::-;37437:25;;37481:1;37478;37475:8;37472:34;;;37486:18;;:::i;:::-;37472:34;37531:1;37528;37524:9;37516:17;;37348:191;;;;:::o;37545:90::-;37595:7;37624:5;37613:16;;37545:90;;;:::o;37641:96::-;37678:7;37707:24;37725:5;37707:24;:::i;:::-;37696:35;;37641:96;;;:::o;37743:104::-;37788:7;37817:24;37835:5;37817:24;:::i;:::-;37806:35;;37743:104;;;:::o;37853:90::-;37887:7;37930:5;37923:13;37916:21;37905:32;;37853:90;;;:::o;37949:120::-;38010:7;38039:24;38057:5;38039:24;:::i;:::-;38028:35;;37949:120;;;:::o;38075:114::-;38112:7;38152:30;38145:5;38141:42;38130:53;;38075:114;;;:::o;38195:126::-;38232:7;38272:42;38265:5;38261:54;38250:65;;38195:126;;;:::o;38327:77::-;38364:7;38393:5;38382:16;;38327:77;;;:::o;38410:93::-;38446:7;38486:10;38479:5;38475:22;38464:33;;38410:93;;;:::o;38509:86::-;38544:7;38584:4;38577:5;38573:16;38562:27;;38509:86;;;:::o;38601:134::-;38659:9;38692:37;38723:5;38692:37;:::i;:::-;38679:50;;38601:134;;;:::o;38741:121::-;38799:9;38832:24;38850:5;38832:24;:::i;:::-;38819:37;;38741:121;;;:::o;38868:126::-;38918:9;38951:37;38982:5;38951:37;:::i;:::-;38938:50;;38868:126;;;:::o;39000:113::-;39050:9;39083:24;39101:5;39083:24;:::i;:::-;39070:37;;39000:113;;;:::o;39119:307::-;39187:1;39197:113;39211:6;39208:1;39205:13;39197:113;;;39296:1;39291:3;39287:11;39281:18;39277:1;39272:3;39268:11;39261:39;39233:2;39230:1;39226:10;39221:15;;39197:113;;;39328:6;39325:1;39322:13;39319:101;;;39408:1;39399:6;39394:3;39390:16;39383:27;39319:101;39168:258;39119:307;;;:::o;39432:320::-;39476:6;39513:1;39507:4;39503:12;39493:22;;39560:1;39554:4;39550:12;39581:18;39571:81;;39637:4;39629:6;39625:17;39615:27;;39571:81;39699:2;39691:6;39688:14;39668:18;39665:38;39662:84;;;39718:18;;:::i;:::-;39662:84;39483:269;39432:320;;;:::o;39758:166::-;39827:5;39852:66;39883:34;39906:10;39883:34;:::i;:::-;39852:66;:::i;:::-;39843:75;;39758:166;;;:::o;39930:233::-;39969:3;39992:24;40010:5;39992:24;:::i;:::-;39983:33;;40038:66;40031:5;40028:77;40025:103;;;40108:18;;:::i;:::-;40025:103;40155:1;40148:5;40144:13;40137:20;;39930:233;;;:::o;40169:180::-;40217:77;40214:1;40207:88;40314:4;40311:1;40304:15;40338:4;40335:1;40328:15;40355:180;40403:77;40400:1;40393:88;40500:4;40497:1;40490:15;40524:4;40521:1;40514:15;40541:180;40589:77;40586:1;40579:88;40686:4;40683:1;40676:15;40710:4;40707:1;40700:15;40727:180;40775:77;40772:1;40765:88;40872:4;40869:1;40862:15;40896:4;40893:1;40886:15;40913:180;40961:77;40958:1;40951:88;41058:4;41055:1;41048:15;41082:4;41079:1;41072:15;41099:117;41208:1;41205;41198:12;41222:117;41331:1;41328;41321:12;41345:117;41454:1;41451;41444:12;41468:117;41577:1;41574;41567:12;41591:117;41700:1;41697;41690:12;41714:102;41755:6;41806:2;41802:7;41797:2;41790:5;41786:14;41782:28;41772:38;;41714:102;;;:::o;41822:::-;41864:8;41911:5;41908:1;41904:13;41883:34;;41822:102;;;:::o;41930:222::-;42070:34;42066:1;42058:6;42054:14;42047:58;42139:5;42134:2;42126:6;42122:15;42115:30;41930:222;:::o;42158:173::-;42298:25;42294:1;42286:6;42282:14;42275:49;42158:173;:::o;42337:178::-;42477:30;42473:1;42465:6;42461:14;42454:54;42337:178;:::o;42521:225::-;42661:34;42657:1;42649:6;42645:14;42638:58;42730:8;42725:2;42717:6;42713:15;42706:33;42521:225;:::o;42752:221::-;42892:34;42888:1;42880:6;42876:14;42869:58;42961:4;42956:2;42948:6;42944:15;42937:29;42752:221;:::o;42979:234::-;43119:34;43115:1;43107:6;43103:14;43096:58;43188:17;43183:2;43175:6;43171:15;43164:42;42979:234;:::o;43219:177::-;43359:29;43355:1;43347:6;43343:14;43336:53;43219:177;:::o;43402:::-;43542:29;43538:1;43530:6;43526:14;43519:53;43402:177;:::o;43585:225::-;43725:34;43721:1;43713:6;43709:14;43702:58;43794:8;43789:2;43781:6;43777:15;43770:33;43585:225;:::o;43816:235::-;43956:34;43952:1;43944:6;43940:14;43933:58;44025:18;44020:2;44012:6;44008:15;44001:43;43816:235;:::o;44057:221::-;44197:34;44193:1;44185:6;44181:14;44174:58;44266:4;44261:2;44253:6;44249:15;44242:29;44057:221;:::o;44284:227::-;44424:34;44420:1;44412:6;44408:14;44401:58;44493:10;44488:2;44480:6;44476:15;44469:35;44284:227;:::o;44517:168::-;44657:20;44653:1;44645:6;44641:14;44634:44;44517:168;:::o;44691:181::-;44831:33;44827:1;44819:6;44815:14;44808:57;44691:181;:::o;44878:227::-;45018:34;45014:1;45006:6;45002:14;44995:58;45087:10;45082:2;45074:6;45070:15;45063:35;44878:227;:::o;45111:182::-;45251:34;45247:1;45239:6;45235:14;45228:58;45111:182;:::o;45299:224::-;45439:34;45435:1;45427:6;45423:14;45416:58;45508:7;45503:2;45495:6;45491:15;45484:32;45299:224;:::o;45529:168::-;45669:20;45665:1;45657:6;45653:14;45646:44;45529:168;:::o;45703:223::-;45843:34;45839:1;45831:6;45827:14;45820:58;45912:6;45907:2;45899:6;45895:15;45888:31;45703:223;:::o;45932:179::-;46072:31;46068:1;46060:6;46056:14;46049:55;45932:179;:::o;46117:178::-;46257:30;46253:1;46245:6;46241:14;46234:54;46117:178;:::o;46301:224::-;46441:34;46437:1;46429:6;46425:14;46418:58;46510:7;46505:2;46497:6;46493:15;46486:32;46301:224;:::o;46531:::-;46671:34;46667:1;46659:6;46655:14;46648:58;46740:7;46735:2;46727:6;46723:15;46716:32;46531:224;:::o;46761:222::-;46901:34;46897:1;46889:6;46885:14;46878:58;46970:5;46965:2;46957:6;46953:15;46946:30;46761:222;:::o;46989:122::-;47062:24;47080:5;47062:24;:::i;:::-;47055:5;47052:35;47042:63;;47101:1;47098;47091:12;47042:63;46989:122;:::o;47117:138::-;47198:32;47224:5;47198:32;:::i;:::-;47191:5;47188:43;47178:71;;47245:1;47242;47235:12;47178:71;47117:138;:::o;47261:116::-;47331:21;47346:5;47331:21;:::i;:::-;47324:5;47321:32;47311:60;;47367:1;47364;47357:12;47311:60;47261:116;:::o;47383:170::-;47480:48;47522:5;47480:48;:::i;:::-;47473:5;47470:59;47460:87;;47543:1;47540;47533:12;47460:87;47383:170;:::o;47559:122::-;47632:24;47650:5;47632:24;:::i;:::-;47625:5;47622:35;47612:63;;47671:1;47668;47661:12;47612:63;47559:122;:::o;47687:::-;47760:24;47778:5;47760:24;:::i;:::-;47753:5;47750:35;47740:63;;47799:1;47796;47789:12;47740:63;47687:122;:::o;47815:120::-;47887:23;47904:5;47887:23;:::i;:::-;47880:5;47877:34;47867:62;;47925:1;47922;47915:12;47867:62;47815:120;:::o

Swarm Source

ipfs://55bffaeef6e3fe56a59a574bef0f60c86930b47932d0d06fbda323aec81ec7ed
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.